Просмотр исходного кода

aps-调度重排连续判断增加规则

sucheng 5 месяцев назад
Родитель
Сommit
52152cbdf7

+ 10 - 5
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) {
                     //下道不解锁,继续迭代