소스 검색

aps-作业冲突增加校验修改

sucheng 6 달 전
부모
커밋
10a38c807b

+ 32 - 14
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsProcessOperationProcessEquServiceImpl.java

@@ -568,7 +568,8 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
                     inspectionEquipmentIsAvailable(apsProcessOperationProcessEquDo,
                             apsProcessOperationProcessEquDo.getProcessdeviceid(),
                             apsProcessOperationProcessEquDo.getPlanstartdate(),
-                            apsProcessOperationProcessEquDo.getPlanenddate());
+                            apsProcessOperationProcessEquDo.getPlanenddate(),
+                            affectedIdList);
                 });
             }
             List<String> aboutIds = affectedIdList.stream().distinct().collect(Collectors.toList());
@@ -586,7 +587,7 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
         }
     }
 
-    private void checkSomeNewInspection(ApsProcessOperationProcessEquDo apsProcessOperationProcessEquDo) {
+    private void checkSomeNewInspection(ApsProcessOperationProcessEquDo apsProcessOperationProcessEquDo,List<String> affectedIdList) {
         /*
         如果加工设备不是工序作业指定的可选设备,记录冲突:加工设备不是工艺要求的可选设备
         如果作业明细计划开工时间<前道作业明细计划完工时间,记录冲突:计划开工时间早于前道计划完工时间
@@ -675,22 +676,27 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
                 newConflictdes = removeConflictsDesc(newConflictdes, SMALL_THAN_MIN_RETURN_TIME);
             }
         }
-        //存在道工序作业明细
+        //存在道工序作业明细
         if (StringUtils.isNotBlank(apsProcessOperationProcessEquDo.getNextprocessesids())) {
             for (String nextProcessEquId : apsProcessOperationProcessEquDo.getNextprocessesids().split(",")) {
+                affectedIdList.add(nextProcessEquId);
                 //此时前道的明细为当前明细
                 ApsProcessOperationProcessEquDo previousProcessEqu = apsProcessOperationProcessEquDo;
                 //查询后道的明细
                 ApsProcessOperationProcessEquDo nextProcessEqu = this.getById(nextProcessEquId);
+                //查询后道的工序作业
+                ApsProcessOperationDo nextProcessOperation = apsProcessOperationService.getById(nextProcessEqu.getProcessid());
+                //后道的冲突
+                String nextNewConflictdes = nextProcessEqu.getConflictdes();
                 //如果作业计划开工时间<前道作业计划完工时间,记录冲突:计划开工时间早于前道计划完工时间
                 if (nextProcessEqu.getPlanstartdate().compareTo(previousProcessEqu.getPlanenddate()) < 0) {
                     apsConflictLogService.recordLog(nextProcessEqu.getId(),
                             "作业明细计划开工时间:" + nextProcessEqu.getPlanstartdate() + ",前道作业明细计划完工时间:" + previousProcessEqu.getPlanenddate(), PREVIOUS_ENDTIME_AFTER_NOW, 1, null);
-                    newConflictdes = addNewConflictsDesc(newConflictdes, PREVIOUS_ENDTIME_AFTER_NOW);
+                    nextNewConflictdes = addNewConflictsDesc(nextNewConflictdes, PREVIOUS_ENDTIME_AFTER_NOW);
                 } else {
                     apsConflictLogService.recordLog(nextProcessEqu.getId(),
                             "作业明细计划开工时间:" + nextProcessEqu.getPlanstartdate() + ",前道作业明细计划完工时间:" + previousProcessEqu.getPlanenddate(), PREVIOUS_ENDTIME_AFTER_NOW, 2, null);
-                    newConflictdes = removeConflictsDesc(newConflictdes, PREVIOUS_ENDTIME_AFTER_NOW);
+                    nextNewConflictdes = removeConflictsDesc(nextNewConflictdes, PREVIOUS_ENDTIME_AFTER_NOW);
                 }
 
                 //与前道作业明细间隔时间=该作业明细计划开工时间-前道作业明细计划完工时间
@@ -703,7 +709,7 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
                 //排程设置
                 ApsScheduleConfigDo apsScheduleConfigDo = apsScheduleConfigService.getById("1");
                 //最小流转时间
-                long minReturnTime = apsProcessOperationDo.getMinflowwaitmin().longValue();
+                long minReturnTime = nextProcessOperation.getMinflowwaitmin().longValue();
                 //作业明细加工设备相同
                 if (!previousProcessEqu.getProcessdeviceid().equals(nextProcessEqu.getProcessdeviceid())) {
                     if (apsScheduleConfigDo.getWorkshopin().longValue() > minReturnTime) {
@@ -728,12 +734,19 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
                 if (betweenPrevious < minReturnTime) {
                     apsConflictLogService.recordLog(nextProcessEqu.getId(),
                             "与前道工序作业间隔时间:" + betweenPrevious + ",作业最小流转时间:" + minReturnTime, SMALL_THAN_MIN_RETURN_TIME, 1, null);
-                    newConflictdes = addNewConflictsDesc(newConflictdes, SMALL_THAN_MIN_RETURN_TIME);
+                    nextNewConflictdes = addNewConflictsDesc(nextNewConflictdes, SMALL_THAN_MIN_RETURN_TIME);
                 } else {
                     apsConflictLogService.recordLog(nextProcessEqu.getId(),
                             "与前道工序作业间隔时间:" + betweenPrevious + ",作业最小流转时间:" + minReturnTime, SMALL_THAN_MIN_RETURN_TIME, 2, null);
-                    newConflictdes = removeConflictsDesc(newConflictdes, SMALL_THAN_MIN_RETURN_TIME);
+                    nextNewConflictdes = removeConflictsDesc(nextNewConflictdes, SMALL_THAN_MIN_RETURN_TIME);
                 }
+                this.update(new LambdaUpdateWrapper<ApsProcessOperationProcessEquDo>()
+                        .eq(ApsProcessOperationProcessEquDo::getId, nextProcessEqu.getId())
+                        .set(ApsProcessOperationProcessEquDo::getConflictdes, nextNewConflictdes)
+                        .set(BaseDo::getModifydate, new Date())
+                        .set(ApsProcessOperationProcessEquDo::getHasconflict, StringUtils.isBlank(nextNewConflictdes) &&
+                                StringUtils.isBlank(nextProcessEqu.getSoftconflictdes()) ? LOCKMARK_N : LOCKMARK_Y)
+                );
             }
         }
 
@@ -902,7 +915,8 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
             inspectionEquipmentIsAvailable(apsProcessOperationProcessEquDo,
                     apsProcessOperationProcessEquDo.getProcessdeviceid(),
                     apsProcessOperationProcessEquDo.getPlanstartdate(),
-                    apsProcessOperationProcessEquDo.getPlanenddate());
+                    apsProcessOperationProcessEquDo.getPlanenddate(),
+                    affectedIdList);
         });
 //        blankIdSet.forEach(blankId -> {
 //            // 更新坯料交货期
@@ -1002,7 +1016,8 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
                         oldPlanenddate, oldEquId, apsProcessOperationDo.getProcessway(), new ArrayList<>()));
                 // 判断是否存在设备不可用
                 inspectionEquipmentIsAvailable(detail, detail.getProcessdeviceid()
-                        , detail.getPlanstartdate(), detail.getPlanenddate());
+                        , detail.getPlanstartdate(), detail.getPlanenddate(),
+                        affectedIdList);
                 if (!detail.getId().equals(apsProcessOperationProcessEquDo.getId())) {
                     mergeWorkerIdList.add(detail.getId());
                 }
@@ -1043,7 +1058,8 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
             // 判断是否存在设备不可用
             apsProcessOperationProcessEquDo = this.getById(apsProcessOperationProcessEquDo.getId());
             inspectionEquipmentIsAvailable(apsProcessOperationProcessEquDo, apsProcessOperationProcessEquDo.getProcessdeviceid()
-                    , apsProcessOperationProcessEquDo.getPlanstartdate(), apsProcessOperationProcessEquDo.getPlanenddate());
+                    , apsProcessOperationProcessEquDo.getPlanstartdate(), apsProcessOperationProcessEquDo.getPlanenddate(),
+                    affectedIdList);
         }
         // 更新坯料交货期
 //        apsBlankOrderService.updateBlankDeliveryDate(null, apsProcessOperationDo.getBlankid());
@@ -1324,7 +1340,8 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
             newDataList.forEach(newDo -> {
                 // 判断是否存在设备不可用
                 inspectionEquipmentIsAvailable(newDo, newDo.getProcessdeviceid()
-                        , newDo.getPlanstartdate(), newDo.getPlanenddate());
+                        , newDo.getPlanstartdate(), newDo.getPlanenddate(),
+                        affectedIdList);
             });
             List<String> aboutIds = affectedIdList.stream().distinct().collect(Collectors.toList());
             apsProcessOperationDos.forEach(data -> {
@@ -1691,7 +1708,8 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
      * @param endDate
      */
     public void inspectionEquipmentIsAvailable(ApsProcessOperationProcessEquDo processEquDo,
-                                               String equId, Date startDate, Date endDate) {
+                                               String equId, Date startDate, Date endDate,
+                                               List<String> affectedIdList) {
         // 查询当前设备是否存在不可以用设备的停机时间为空的数据
         List<ApsEquipmentCalendarDo> nullSdTimeList = apsEquipmentCalendarService.list(new LambdaQueryWrapper<ApsEquipmentCalendarDo>()
                 .eq(ApsEquipmentCalendarDo::getProcessdeviceid, equId)
@@ -1730,7 +1748,7 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
         );
         processEquDo.setConflictdes(newConflictdes);
         //新增的冲突判断
-        checkSomeNewInspection(processEquDo);
+        checkSomeNewInspection(processEquDo,affectedIdList);
     }
 
     /**