Przeglądaj źródła

aps-调度重排冷轧后道工序解锁规则增加

sucheng 5 miesięcy temu
rodzic
commit
0a58053352

+ 19 - 9
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsBlankOrderServiceImpl.java

@@ -976,7 +976,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
 
             //更新生产状态为“待发布”(20)
             List<ApsBlankOrderVo> toupstatus = apsBlankOrders.stream().filter(v ->
-                    blankids.contains(v.getId()) && (StringUtils.isBlank(v.getIfcp()) || "N".equals(v.getIfcp())))
+                            blankids.contains(v.getId()) && (StringUtils.isBlank(v.getIfcp()) || "N".equals(v.getIfcp())))
                     .collect(Collectors.toList());
             updateProductStatusByOrderIds(toupstatus);
             // 自动加锁坯料计划下的工序作业
@@ -4193,8 +4193,8 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                 chongpaiEndDate = DateUtil.offsetHour(chongpaiStartDate, hour);
             }
         } else {
-            chongpaiStartDate = DateUtil.parse(chongpaiStartDateStr,"yyyy-MM-dd HH:mm:ss");
-            chongpaiEndDate = DateUtil.parse(chongpaiEndDateStr,"yyyy-MM-dd HH:mm:ss");
+            chongpaiStartDate = DateUtil.parse(chongpaiStartDateStr, "yyyy-MM-dd HH:mm:ss");
+            chongpaiEndDate = DateUtil.parse(chongpaiEndDateStr, "yyyy-MM-dd HH:mm:ss");
             needScheduleDate = DateUtil.format(chongpaiStartDate, "yyyy-MM-dd");
         }
         if (ObjectUtil.isNotEmpty(needScheduleDate)) {
@@ -4553,9 +4553,9 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                                 nowProcess = previousProcess;
                                 notNeedUnLockList.add(previousEqu);
                                 rollEquIdList.add(previousEqu.getId());
-                                if (previousEqu.getPlanstartdate().compareTo(chongpaiStartDate)>=0){
+                                if (previousEqu.getPlanstartdate().compareTo(chongpaiStartDate) >= 0) {
                                     List<String> finalRollEquIdList = rollEquIdList;
-                                    notNeedUnLockList = notNeedUnLockList.stream().filter(item->!finalRollEquIdList.contains(item.getId())).collect(Collectors.toList());
+                                    notNeedUnLockList = notNeedUnLockList.stream().filter(item -> !finalRollEquIdList.contains(item.getId())).collect(Collectors.toList());
                                     rollEquIdList = new LinkedList<>();
                                 }
                                 continue;
@@ -4609,7 +4609,9 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
             }
             //后道明细不为空
             if (ObjectUtil.isNotEmpty(apsProcessOperationProcessEquDo.getNextprocessesids())) {
-                getNextProcess(apsProcessOperationProcessEquDo.getNextprocessesids(), needScheduleList, needScheduleIdList, allProcessEquList, allProcessEquIdList, needUnLockList, allProcessList);
+                //当前工序作业
+                ApsProcessOperationDo nowProcess = allProcessList.stream().filter(item -> item.getId().equals(apsProcessOperationProcessEquDo.getProcessid())).findFirst().orElse(null);
+                getNextProcess(apsProcessOperationProcessEquDo.getNextprocessesids(), nowProcess, needScheduleList, needScheduleIdList, allProcessEquList, allProcessEquIdList, needUnLockList, allProcessList);
             }
         }
         //查询需要清除的明细及其后续 连续的明细
@@ -4737,6 +4739,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
 
     //迭代处理寻找下道明细
     private void getNextProcess(String nextprocessesids,
+                                ApsProcessOperationDo nowProcess,
                                 List<ApsProcessOperationProcessEquDo> needScheduleList,
                                 List<String> needScheduleIdList,
                                 List<ApsProcessOperationProcessEquDo> allProcessEquList,
@@ -4752,15 +4755,22 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                 //下一个明细
                 ApsProcessOperationProcessEquDo nextEqu = allProcessEquList.stream().filter(item -> item.getId().equals(nextProcessEquId)).findFirst().orElse(null);
                 if (ObjectUtil.isNotEmpty(nextEqu)) {
+                    String nextNewProcessesids = nextEqu.getNextprocessesids();
                     //查询对应明细的工序作业
                     ApsProcessOperationDo nextProcess = allProcessList.stream().filter(item -> item.getId().equals(nextEqu.getProcessid())).findFirst().orElse(null);
                     if (ObjectUtil.isNotEmpty(nextProcess)
-                            && !Arrays.asList("铸轧", "成退", "小卷成退", "中退").contains(nextProcess.getProcess())) {
+                            && !Arrays.asList("铸轧", "成退", "小卷成退", "中退").contains(nextProcess.getProcess())
+                            && nextProcess.getProcess().equals(nowProcess.getProcess())
+                            && (ObjectUtil.isEmpty(nextProcess.getMinflowwaitmin()) || nextProcess.getMinflowwaitmin().compareTo(new BigDecimal(1440)) < 0)) {
                         needUnLockList.add(nextEqu);
                         if (ObjectUtil.isNotEmpty(nextEqu.getNextprocessesids())) {
-                            String nextNewProcessesids = nextEqu.getNextprocessesids();
-                            getNextProcess(nextNewProcessesids, needScheduleList, needScheduleIdList, allProcessEquList, allProcessEquIdList, needUnLockList, allProcessList);
+                            getNextProcess(nextNewProcessesids, nextProcess, needScheduleList, needScheduleIdList, allProcessEquList, allProcessEquIdList, needUnLockList, allProcessList);
                         }
+                        return;
+                    } else {
+                        //如果下道作业和当前作业不同,结束,后续全部不解锁
+                        //有最小等待时间,并且>=1440,后续全部不解锁
+                        return;
                     }
                 }
             }