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

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

fangpy 5 месяцев назад
Родитель
Сommit
6d9aa22a5f

+ 76 - 44
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"));
         }
@@ -4163,9 +4163,9 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
             //排程设置
             ApsScheduleConfigDo apsScheduleConfigDo = apsScheduleConfigService.getById("1");
             //冷轧重排
-            lenzhaChongpai(chongpaiStartDate, chongpaiEndDate, apsScheduleConfigDo);
+//            lenzhaChongpai(chongpaiStartDate, chongpaiEndDate, apsScheduleConfigDo);
             //退火重排
-//            tuihuoChongpai(chongpaiStartDate, chongpaiEndDate, apsScheduleConfigDo);
+            tuihuoChongpai(chongpaiStartDate, chongpaiEndDate, apsScheduleConfigDo);
 
         }
     }
@@ -4214,16 +4214,19 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
         for (ApsProcessOperationProcessEquDo apsProcessOperationProcessEquDo : needScheduleList) {
             if (ObjectUtil.isNotEmpty(apsProcessOperationProcessEquDo.getNextprocessesids())) {
                 for (String nextProcessId : apsProcessOperationProcessEquDo.getNextprocessesids().split(",")) {
-                    //不在重排中,但在基准中,如果是 精整工序,需要解锁加入排程
+                    //不在重排中,但在基准中,如果是 精整工序,并且是最后一道工序,需要解锁加入排程
                     if (!needScheduleIdList.contains(nextProcessId)
                             && allProcessEquIdList.contains(nextProcessId)) {
                         //查询后道的明细
                         ApsProcessOperationProcessEquDo nextEqu = allProcessEquList.stream().filter(item -> nextProcessId.equals(item.getId())).findFirst().orElse(null);
                         if (ObjectUtil.isNotEmpty(nextEqu)) {
-                            //查询后道的工序作业
-                            ApsProcessOperationDo nextProcess = allProcessList.stream().filter(item -> nextEqu.getProcessid().equals(item.getId())).findFirst().orElse(null);
-                            if (jzProcessNameList.contains(nextProcess.getProcess())) {
-                                needUnLockList.add(nextEqu);
+                            //是最后一道工序
+                            if (ObjectUtil.isEmpty(nextEqu.getNextprocessesids())) {
+                                //查询后道的工序作业
+                                ApsProcessOperationDo nextProcess = allProcessList.stream().filter(item -> nextEqu.getProcessid().equals(item.getId())).findFirst().orElse(null);
+                                if (jzProcessNameList.contains(nextProcess.getProcess())) {
+                                    needUnLockList.add(nextEqu);
+                                }
                             }
                         }
                     }
@@ -4300,6 +4303,8 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                     String previousprocessesid = apsProcessOperationProcessEquDo.getPreviousprocessesids();
                     //当前明细对应的工序作业
                     ApsProcessOperationDo nowProcess = allProcessList.stream().filter(item -> apsProcessOperationProcessEquDo.getProcessid().equals(item.getId())).findFirst().orElse(null);
+                    //是否可以解锁
+                    boolean canUnLock = true;
                     //循环寻找前道明细
                     while (true) {
                         if (StringUtils.isBlank(previousprocessesid)) {
@@ -4317,51 +4322,78 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                             if (ObjectUtil.isEmpty(previousProcess)) {
                                 break;
                             }
-                            //如果前道工序是 铸轧或退火  或者 前道明细不是 “待开工”,不解锁,但要传入排程
-                            if (Arrays.asList("铸轧", "成退", "小卷成退", "中退").contains(previousProcess.getProcess())
-                                    || !"待开工".equals(previousEqu.getWorkstatus())) {
+                            //如果不可解锁,直接将前道明细放入不解锁
+                            if (!canUnLock) {
+                                previousprocessesid = previousEqu.getPreviousprocessesids();
+                                nowProcess = previousProcess;
                                 notNeedUnLockList.add(previousEqu);
-                                break;
+                                continue;
                             }
-                            //如果本道工序和前道工序 的工序类型相同,并且最小等待时间为空/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;
+                            //如果前道明细不是待开工,不解锁,传入排程
+                            if (!"待开工".equals(previousEqu.getWorkstatus())) {
+                                previousprocessesid = previousEqu.getPreviousprocessesids();
+                                nowProcess = previousProcess;
+                                notNeedUnLockList.add(previousEqu);
+                                canUnLock = false;
+                            } 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())) {
+                                                if (ObjectUtil.isEmpty(equDo.getRollerid()) && ObjectUtil.isEmpty(equDo2.getRollerid())) {
+                                                    have = true;
+                                                    break;
+                                                } else if (ObjectUtil.isNotEmpty(equDo.getRollerid()) && ObjectUtil.isNotEmpty(equDo2.getRollerid())) {
+                                                    if (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;
+                                            canUnLock = false;
+                                        } else {
+                                            break;
+                                        }
+                                    } else {
                                         previousprocessesid = previousEqu.getPreviousprocessesids();
                                         nowProcess = previousProcess;
-                                    } else {
-                                        break;
+                                        notNeedUnLockList.add(previousEqu);
+                                        canUnLock = false;
                                     }
                                 } else {
+                                    previousprocessesid = previousEqu.getPreviousprocessesids();
+                                    nowProcess = previousProcess;
                                     notNeedUnLockList.add(previousEqu);
-                                    break;
+                                    canUnLock = false;
                                 }
-                            } else {
-                                notNeedUnLockList.add(previousEqu);
-                                break;
                             }
+//                            //如果前道工序是 铸轧或退火  或者 前道明细不是 “待开工”,不解锁,但要传入排程
+//                            if (Arrays.asList("铸轧", "成退", "小卷成退", "中退").contains(previousProcess.getProcess())
+//                                    || !"待开工".equals(previousEqu.getWorkstatus())) {
+//                                notNeedUnLockList.add(previousEqu);
+//                                break;
+//                            }
                         } else {
                             break;
                         }
@@ -4397,9 +4429,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>