Browse Source

aps-合并加工修改

sucheng 5 months ago
parent
commit
240059ae35

+ 6 - 0
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/dao/ApsProcessOperationProcessEquDao.java

@@ -122,6 +122,12 @@ public interface ApsProcessOperationProcessEquDao extends BaseMapper<ApsProcessO
 
 
     @Select("select apope.PLANSTARTDATE from aps_process_operation apo LEFT JOIN aps_process_operation_process_equ apope ON apo.ID = apope.PROCESSID AND apope.DELETED = 0 WHERE apo.DELETED = 0 AND apo.BLANKID = #{blankid} AND apo.PROCESS != '铸轧' ORDER BY apope.PLANSTARTDATE limit 1")
     @Select("select apope.PLANSTARTDATE from aps_process_operation apo LEFT JOIN aps_process_operation_process_equ apope ON apo.ID = apope.PROCESSID AND apope.DELETED = 0 WHERE apo.DELETED = 0 AND apo.BLANKID = #{blankid} AND apo.PROCESS != '铸轧' ORDER BY apope.PLANSTARTDATE limit 1")
     Date getEarltPlanStartDate(@Param("blankid") String blankid);
     Date getEarltPlanStartDate(@Param("blankid") String blankid);
+
+    @Select("select count(1) from aps_process_operation_process_equ where DELETED = 0 AND PROCESSDEVICEID = #{processdeviceid} AND ID != #{apsProcessOperationProcessEquDoId} AND WAITREPORTID IS NOT NULL AND WAITREPORTID != ''")
+    int selectHaveOtherDeviceCount(@Param("processdeviceid") String processdeviceid,@Param("apsProcessOperationProcessEquDoId") String apsProcessOperationProcessEquDoId);
+
+    @Select("select * from aps_process_operation_process_equ where DELETED = 0 AND PROCESSDEVICEID = #{processdeviceid} AND ID != #{apsProcessOperationProcessEquDoId} AND WAITREPORTID IS NOT NULL AND WAITREPORTID != ''")
+    List<ApsProcessOperationProcessEquDo> selectHaveOtherDevice(@Param("processdeviceid") String processdeviceid,@Param("apsProcessOperationProcessEquDoId") String apsProcessOperationProcessEquDoId);
 }
 }
 
 
 
 

+ 2 - 2
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/dao/ApsReportRecordsDao.java

@@ -62,8 +62,8 @@ public interface ApsReportRecordsDao extends BaseMapper<ApsReportRecordsDo> {
     @Select("select * from aps_process_operation_process_equ where DELETED = 0 AND ID != #{id} AND PROCESSDEVICEID = #{processdeviceid} AND PLANSTARTDATE = #{planstartdate} AND (WAITREPORTID is null or WAITREPORTID = '') AND CLOSESTATUS = '未完工'")
     @Select("select * from aps_process_operation_process_equ where DELETED = 0 AND ID != #{id} AND PROCESSDEVICEID = #{processdeviceid} AND PLANSTARTDATE = #{planstartdate} AND (WAITREPORTID is null or WAITREPORTID = '') AND CLOSESTATUS = '未完工'")
     List<ApsProcessOperationProcessEquDo> selectOtherMergeProcessEqu(@Param("id") String id, @Param("processdeviceid") String processdeviceid, @Param("planstartdate") Date planstartdate);
     List<ApsProcessOperationProcessEquDo> selectOtherMergeProcessEqu(@Param("id") String id, @Param("processdeviceid") String processdeviceid, @Param("planstartdate") Date planstartdate);
 
 
-    @Select("select * from aps_process_operation_process_equ where DELETED = 0 AND ID != #{id} AND PROCESSDEVICEID = #{processdeviceid} AND PLANSTARTDATE = #{planstartdate} AND WAITREPORTID is not null AND WAITREPORTID != ''")
-    List<ApsProcessOperationProcessEquDo> selectOtherMergeProcessStarting(@Param("id") String id, @Param("processdeviceid") String processdeviceid, @Param("planstartdate") Date planstartdate);
+//    @Select("select * from aps_process_operation_process_equ where DELETED = 0 AND ID != #{id} AND PROCESSDEVICEID = #{processdeviceid} AND PLANSTARTDATE = #{planstartdate} AND WAITREPORTID is not null AND WAITREPORTID != ''")
+    List<ApsProcessOperationProcessEquDo> selectOtherMergeProcessStarting(@Param("id") String id, @Param("processdeviceid") String processdeviceid);
 
 
     List<ProcessOutputAndInputNumber> selectInputAndOutputNumByProcessId(@Param("processIds")List<String> processIds);
     List<ProcessOutputAndInputNumber> selectInputAndOutputNumByProcessId(@Param("processIds")List<String> processIds);
 }
 }

+ 27 - 7
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsReportRecordsServiceImpl.java

@@ -338,7 +338,7 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
         }
         }
 
 
         //如果当前工序作业明细  不存在(其他合并工序作业明细,并且其他合并作业明细的 待报工记录ID 不为空) 则炉号-1
         //如果当前工序作业明细  不存在(其他合并工序作业明细,并且其他合并作业明细的 待报工记录ID 不为空) 则炉号-1
-        List<ApsProcessOperationProcessEquDo> equDoMergeStartingList = this.baseMapper.selectOtherMergeProcessStarting(equDo.getId(), equDo.getProcessdeviceid(), equDo.getPlanstartdate());
+        List<ApsProcessOperationProcessEquDo> equDoMergeStartingList = this.baseMapper.selectOtherMergeProcessStarting(equDo.getId(), equDo.getProcessdeviceid());
         if (equDoMergeStartingList.size() <= 0) {
         if (equDoMergeStartingList.size() <= 0) {
             //炉号-1
             //炉号-1
             //加工设备ID
             //加工设备ID
@@ -443,11 +443,31 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
             //当前工序作业明细的ID
             //当前工序作业明细的ID
             String apsProcessOperationProcessEquDoId = apsProcessOperationProcessEquDo.getId();
             String apsProcessOperationProcessEquDoId = apsProcessOperationProcessEquDo.getId();
             //查询当前工序作业的作业明细的 加工设备 对应的其他工序作业的作业明细 并且待报工记录ID不为空
             //查询当前工序作业的作业明细的 加工设备 对应的其他工序作业的作业明细 并且待报工记录ID不为空
-            //存在计划开工时间不同(非合并作业) 并且加工设备正在使用的作业明细数量
-            int count = apsProcessOperationProcessEquDao.selectOtherDeviceCount(processdeviceid, apsProcessOperationProcessEquDoId, apsProcessOperationProcessEquDo.getPlanstartdate());
-            if (count > 0) {
-                return R.error("该设备当前加工中的作业还未报工,不能开工新的作业");
+            //如果当前工序作业不是合并加工
+            if (!apsProcessOperationDo.getProcessway().equals("合并加工")) {
+                int count = apsProcessOperationProcessEquDao.selectHaveOtherDeviceCount(processdeviceid, apsProcessOperationProcessEquDoId);
+                if (count > 0) {
+                    log.error("设备已被其他作业明细占用");
+                    return R.error("该设备当前加工中的作业还未报工,不能开工新的作业");
+                }
+            } else {
+                List<ApsProcessOperationProcessEquDo> sameDeviceList = apsProcessOperationProcessEquDao.selectHaveOtherDevice(processdeviceid, apsProcessOperationProcessEquDoId);
+                if (!sameDeviceList.isEmpty()) {
+                    //判断被占用的是否都是合并加工的
+                    List<String> processIdList = sameDeviceList.stream().map(ApsProcessOperationProcessEquDo::getProcessid).collect(Collectors.toList());
+                    List<ApsProcessOperationDo> apsProcessOperationDos = new ArrayList<>(apsProcessOperationService.listByIds(processIdList));
+                    long count = apsProcessOperationDos.stream().filter(item -> !item.getProcessway().equals("合并加工")).count();
+                    if (count > 0) {
+                        log.error("存在其他已占用设备:{},不为合并加工工序的作业:{}", processdeviceid, processIdList);
+                        return R.error("该设备当前加工中的作业还未报工,不能开工新的作业");
+                    }
+                }
             }
             }
+//            //存在计划开工时间不同(非合并作业) 并且加工设备正在使用的作业明细数量
+//            int count = apsProcessOperationProcessEquDao.selectOtherDeviceCount(processdeviceid, apsProcessOperationProcessEquDoId, apsProcessOperationProcessEquDo.getPlanstartdate());
+//            if (count > 0) {
+//                return R.error("该设备当前加工中的作业还未报工,不能开工新的作业");
+//            }
 //            List<ApsProcessOperationProcessEquDo> list = apsProcessOperationProcessEquDao.selectOtherDeviceList(processdeviceid, apsProcessOperationProcessEquDoId);
 //            List<ApsProcessOperationProcessEquDo> list = apsProcessOperationProcessEquDao.selectOtherDeviceList(processdeviceid, apsProcessOperationProcessEquDoId);
 ////        List<ApsProcessOperationProcessEquDo> list = apsProcessOperationProcessEquService.list(
 ////        List<ApsProcessOperationProcessEquDo> list = apsProcessOperationProcessEquService.list(
 ////                new QueryWrapper<ApsProcessOperationProcessEquDo>().lambda()
 ////                new QueryWrapper<ApsProcessOperationProcessEquDo>().lambda()
@@ -693,7 +713,7 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
             //获取设备/炉 的炉号(每月、每个设备/炉 更新)
             //获取设备/炉 的炉号(每月、每个设备/炉 更新)
             String heatNumber;//初始化炉号
             String heatNumber;//初始化炉号
             //如果存在其他合并工序,并且其他合并工序已开工,则不去生成新的 炉次号 使用其他合并工序的 开工记录的 炉次号
             //如果存在其他合并工序,并且其他合并工序已开工,则不去生成新的 炉次号 使用其他合并工序的 开工记录的 炉次号
-            List<ApsProcessOperationProcessEquDo> apsProcessEquMergeStartingList = this.baseMapper.selectOtherMergeProcessStarting(apsProcessOperationProcessEquDo.getId(), apsProcessOperationProcessEquDo.getProcessdeviceid(), apsProcessOperationProcessEquDo.getPlanstartdate());
+            List<ApsProcessOperationProcessEquDo> apsProcessEquMergeStartingList = this.baseMapper.selectOtherMergeProcessStarting(apsProcessOperationProcessEquDo.getId(), apsProcessOperationProcessEquDo.getProcessdeviceid());
 
 
             if (apsProcessEquMergeStartingList.size() > 0) {
             if (apsProcessEquMergeStartingList.size() > 0) {
                 //合并工序作业明细
                 //合并工序作业明细
@@ -1601,7 +1621,7 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
             //获取设备/炉 的炉号(每月、每个设备/炉 更新)
             //获取设备/炉 的炉号(每月、每个设备/炉 更新)
             String heatNumber;//初始化炉号
             String heatNumber;//初始化炉号
             //如果存在其他合并工序,并且其他合并工序已开工,则不去生成新的 炉次号 使用其他合并工序的 开工记录的 炉次号
             //如果存在其他合并工序,并且其他合并工序已开工,则不去生成新的 炉次号 使用其他合并工序的 开工记录的 炉次号
-            List<ApsProcessOperationProcessEquDo> apsProcessEquMergeStartingList = this.baseMapper.selectOtherMergeProcessStarting(apsProcessOperationProcessEquDo.getId(), apsProcessOperationProcessEquDo.getProcessdeviceid(), apsProcessOperationProcessEquDo.getPlanstartdate());
+            List<ApsProcessOperationProcessEquDo> apsProcessEquMergeStartingList = this.baseMapper.selectOtherMergeProcessStarting(apsProcessOperationProcessEquDo.getId(), apsProcessOperationProcessEquDo.getProcessdeviceid());
 
 
             if (apsProcessEquMergeStartingList.size() > 0) {
             if (apsProcessEquMergeStartingList.size() > 0) {
                 //合并工序作业明细
                 //合并工序作业明细

+ 15 - 0
cx-aps/cx-aps-common/src/main/resources/mybatis/ApsReportRecordsDao.xml

@@ -62,4 +62,19 @@
         GROUP BY
         GROUP BY
             arr.PROCESSOPERATIONID
             arr.PROCESSOPERATIONID
     </select>
     </select>
+    <select id="selectOtherMergeProcessStarting"
+            resultType="com.rongwei.bsentity.domain.ApsProcessOperationProcessEquDo">
+        SELECT
+            apope.*
+        FROM
+            aps_process_operation_process_equ apope
+                JOIN aps_process_operation apo ON apope.PROCESSID = apo.ID AND apo.DELETED = 0
+        WHERE
+            apope.DELETED = 0
+          AND apope.PROCESSDEVICEID = #{processdeviceid}
+          AND apope.ID != #{id}
+          AND apope.WAITREPORTID IS NOT NULL
+          AND apope.WAITREPORTID != ''
+          AND apo.PROCESSWAY = '合并加工'
+    </select>
 </mapper>
 </mapper>