Jelajahi Sumber

Merge remote-tracking branch 'origin/mode-min-unit' into mode-min-unit

fangpy 5 bulan lalu
induk
melakukan
33c8eba9a7

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

@@ -4568,7 +4568,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                                 canUnLock = false;
                             } else {
                                 //判断是否连续
-                                boolean isConnect = isConnectProcess(nowProcess, previousProcess, processOperationEquDoList);
+                                boolean isConnect = isConnectProcess(nowProcess, previousProcess, processOperationEquDoList, apsProcessOperationProcessEquDo, previousEqu);
                                 //如果连续
                                 if (isConnect) {
                                     //如果连续的上一道在重排开始时间之前,不解锁,并且不解锁后道与其连续的
@@ -4665,10 +4665,15 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
 
     }
 
-    private boolean isConnectProcess(ApsProcessOperationDo nowProcess, ApsProcessOperationDo previousProcess, List<ApsProcessOperationEquDo> processOperationEquDoList) {
-        //如果本道工序和前道工序 的工序类型相同,并且最小等待时间为空/0,并且可选设备和辊相同 ,加入待解锁集合
+    private boolean isConnectProcess(ApsProcessOperationDo nowProcess,
+                                     ApsProcessOperationDo previousProcess,
+                                     List<ApsProcessOperationEquDo> processOperationEquDoList,
+                                     ApsProcessOperationProcessEquDo nowEqu,
+                                     ApsProcessOperationProcessEquDo previousEqu) {
+        //如果本道工序和前道工序 的工序类型相同,并且最小等待时间为空/0,并且可选设备和辊相同 ,并且本道工序开始时间和前道工序结束时间差<11分钟,加入待解锁集合
         if (nowProcess.getProcess().equals(previousProcess.getProcess())
-                && (nowProcess.getMinflowwaitmin() == null || nowProcess.getMinflowwaitmin().intValue() == 0)) {
+                && (nowProcess.getMinflowwaitmin() == null || nowProcess.getMinflowwaitmin().intValue() == 0)
+                && DateUtil.between(previousEqu.getPlanenddate(), nowEqu.getPlanstartdate(), DateUnit.MINUTE) < 11) {
             //对比确认是否存在相同的设备和辊
             boolean have = false;
             //查询当前工序作业的可选设备
@@ -4720,7 +4725,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                 //当前作业
                 ApsProcessOperationDo nowProcess = allProcessList.stream().filter(item -> item.getId().equals(nowEqu.getProcessid())).findFirst().orElse(null);
                 //判断是否连续
-                boolean isConnect = isConnectProcess(nextProcess, nowProcess, processOperationEquDoList);
+                boolean isConnect = isConnectProcess(nextProcess, nowProcess, processOperationEquDoList, nextEqu, nowEqu);
                 //是连续
                 if (isConnect) {
                     //下道不解锁,继续迭代
@@ -4759,18 +4764,12 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                     //查询对应明细的工序作业
                     ApsProcessOperationDo nextProcess = allProcessList.stream().filter(item -> item.getId().equals(nextEqu.getProcessid())).findFirst().orElse(null);
                     if (ObjectUtil.isNotEmpty(nextProcess)
-                            && !Arrays.asList("铸轧", "成退", "小卷成退", "中退").contains(nextProcess.getProcess())
-                            && nextProcess.getProcess().equals(nowProcess.getProcess())
-                            && (ObjectUtil.isEmpty(nextProcess.getMinflowwaitmin()) || nextProcess.getMinflowwaitmin().compareTo(new BigDecimal(1440)) < 0)) {
+                            && !Arrays.asList("铸轧", "成退", "小卷成退", "中退").contains(nextProcess.getProcess())) {
                         needUnLockList.add(nextEqu);
                         if (ObjectUtil.isNotEmpty(nextEqu.getNextprocessesids())) {
                             getNextProcess(nextNewProcessesids, nextProcess, needScheduleList, needScheduleIdList, allProcessEquList, allProcessEquIdList, needUnLockList, allProcessList);
                         }
                         return;
-                    } else {
-                        //如果下道作业和当前作业不同,结束,后续全部不解锁
-                        //有最小等待时间,并且>=1440,后续全部不解锁
-                        return;
                     }
                 }
             }