فهرست منبع

aps-调度重排

sucheng 5 ماه پیش
والد
کامیت
6697e62e57

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

@@ -1128,7 +1128,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                     .collect(Collectors.toList());
             updateProductStatusByOrderIds(toupstatus);*/
             // 自动加锁坯料计划下的工序作业
-            apsProcessOperationService.update(new LambdaUpdateWrapper<ApsProcessOperationDo>().in(ApsProcessOperationDo::getBlankid, blankKeys).set(ApsProcessOperationDo::getLockmark, "y"));
+            apsProcessOperationService.update(new LambdaUpdateWrapper<ApsProcessOperationDo>().in(ApsProcessOperationDo::getBlankid, blankids).set(ApsProcessOperationDo::getLockmark, "y"));
             // 自动加锁坯料计划下的排程作业明细
 //            apsProcessOperationProcessEquService.update(new LambdaUpdateWrapper<ApsProcessOperationProcessEquDo>().in(ApsProcessOperationProcessEquDo::getBlankid, blankKeys).set(ApsProcessOperationProcessEquDo::getLockmark, "y"));
         }
@@ -4317,51 +4317,61 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                             if (ObjectUtil.isEmpty(previousProcess)) {
                                 break;
                             }
-                            //如果前道工序是 铸轧或退火  或者 前道明细不是 “待开工”,不解锁,但要传入排程
-                            if (Arrays.asList("铸轧", "成退", "小卷成退", "中退").contains(previousProcess.getProcess())
-                                    || !"待开工".equals(previousEqu.getWorkstatus())) {
+                            //如果前道明细不是待开工,不解锁,传入排程
+                            if (!"待开工".equals(previousEqu.getWorkstatus())){
+                                previousprocessesid = previousEqu.getPreviousprocessesids();
+                                nowProcess = previousProcess;
                                 notNeedUnLockList.add(previousEqu);
-                                break;
-                            }
-                            //如果本道工序和前道工序 的工序类型相同,并且最小等待时间为空/0,并且可选设备和辊相同 ,加入待解锁集合
-                            if (nowProcess.getProcess().equals(previousProcess.getProcess())
-                                    && (nowProcess.getMinflowwaitmin() == null || nowProcess.getMinflowwaitmin().intValue() == 0)) {
-                                //对比确认是否存在相同的设备和辊
-                                boolean have = false;
-                                //查询当前工序作业的可选设备
-                                String nowProcessId = nowProcess.getId();
-                                List<ApsProcessOperationEquDo> nowEquList = processOperationEquDoList.stream().filter(item -> item.getMainid().equals(nowProcessId)).collect(Collectors.toList());
-                                //查询前道工序作业的可选设备
-                                List<ApsProcessOperationEquDo> previousEquList = processOperationEquDoList.stream().filter(item -> item.getMainid().equals(previousProcess.getId())).collect(Collectors.toList());
-                                for (ApsProcessOperationEquDo equDo : nowEquList) {
-                                    if (have) {
-                                        break;
-                                    }
-                                    for (ApsProcessOperationEquDo equDo2 : previousEquList) {
-                                        if (equDo.getResourceid().equals(equDo2.getResourceid())
-                                                && equDo.getRollerid().equals(equDo2.getRollerid())) {
-                                            have = true;
+                            }else {
+                                //如果连续
+                                //如果本道工序和前道工序 的工序类型相同,并且最小等待时间为空/0,并且可选设备和辊相同 ,加入待解锁集合
+                                if (nowProcess.getProcess().equals(previousProcess.getProcess())
+                                        && (nowProcess.getMinflowwaitmin() == null || nowProcess.getMinflowwaitmin().intValue() == 0)) {
+                                    //对比确认是否存在相同的设备和辊
+                                    boolean have = false;
+                                    //查询当前工序作业的可选设备
+                                    String nowProcessId = nowProcess.getId();
+                                    List<ApsProcessOperationEquDo> nowEquList = processOperationEquDoList.stream().filter(item -> item.getMainid().equals(nowProcessId)).collect(Collectors.toList());
+                                    //查询前道工序作业的可选设备
+                                    List<ApsProcessOperationEquDo> previousEquList = processOperationEquDoList.stream().filter(item -> item.getMainid().equals(previousProcess.getId())).collect(Collectors.toList());
+                                    for (ApsProcessOperationEquDo equDo : nowEquList) {
+                                        if (have) {
                                             break;
                                         }
+                                        for (ApsProcessOperationEquDo equDo2 : previousEquList) {
+                                            if (equDo.getResourceid().equals(equDo2.getResourceid())
+                                                    && equDo.getRollerid().equals(equDo2.getRollerid())) {
+                                                have = true;
+                                                break;
+                                            }
+                                        }
                                     }
-                                }
-                                //存在相同
-                                if (have) {
-                                    needUnLockList.add(previousEqu);
-                                    if (ObjectUtil.isNotEmpty(previousEqu.getPreviousprocessesids())) {
+                                    //存在相同
+                                    if (have) {
+                                        needUnLockList.add(previousEqu);
+                                        if (ObjectUtil.isNotEmpty(previousEqu.getPreviousprocessesids())) {
+                                            previousprocessesid = previousEqu.getPreviousprocessesids();
+                                            nowProcess = previousProcess;
+                                        } else {
+                                            break;
+                                        }
+                                    } else {
                                         previousprocessesid = previousEqu.getPreviousprocessesids();
                                         nowProcess = previousProcess;
-                                    } else {
-                                        break;
+                                        notNeedUnLockList.add(previousEqu);
                                     }
                                 } else {
+                                    previousprocessesid = previousEqu.getPreviousprocessesids();
+                                    nowProcess = previousProcess;
                                     notNeedUnLockList.add(previousEqu);
-                                    break;
                                 }
-                            } else {
-                                notNeedUnLockList.add(previousEqu);
-                                break;
                             }
+//                            //如果前道工序是 铸轧或退火  或者 前道明细不是 “待开工”,不解锁,但要传入排程
+//                            if (Arrays.asList("铸轧", "成退", "小卷成退", "中退").contains(previousProcess.getProcess())
+//                                    || !"待开工".equals(previousEqu.getWorkstatus())) {
+//                                notNeedUnLockList.add(previousEqu);
+//                                break;
+//                            }
                         } else {
                             break;
                         }
@@ -4397,9 +4407,9 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
 
         String scheduletype = apsScheduleConfigDo.getScheduletype();
         ApsTypeVo apsTypeVo = BeanUtil.toBean(scheduletype, ApsTypeVo.class);
-//            apsTypeVo.setMixIf("mix");
-//            apsTypeVo.setThMergeMode("notThMergeBf");
-//            apsTypeVo.setConstraintMode("lz");
+        apsTypeVo.setMixIf("default");
+        apsTypeVo.setThMergeMode("notThMergeBf");
+        apsTypeVo.setConstraintMode("lz");
         apsTypeVo.setScheduleType("dd");
         //重新排程
         //组装需要传入排程的工序作业ID

+ 0 - 1
cx-aps/cx-aps-common/src/main/resources/mybatis/ApsBlankOrderDao.xml

@@ -464,6 +464,5 @@
         if(apope.PROCESSDEVICEID!=preapope.PROCESSDEVICEID,#{workshopin},0))) MINUTE -- 机台流转时间
         ) &lt;= #{chongpaiEndDate} -- 调度结束时间之前可以开工
         )
-        AND apope.BLANKID = 'fe203ed2afe34b2784c00ab02e43b47f'
     </select>
 </mapper>