浏览代码

aps-预排程和调度过程过程中修改作业,调度排程不应该改变计划开工和完工时间

sucheng 5 月之前
父节点
当前提交
89d5da2f1c

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

@@ -4839,7 +4839,8 @@ 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())) {
+                            && !Arrays.asList("铸轧", "成退", "小卷成退", "中退").contains(nextProcess.getProcess())
+                            && !(ObjectUtil.isNotEmpty(nextProcess.getMinflowwaitmin()) && nextProcess.getMinflowwaitmin().compareTo(new BigDecimal("1440")) >= 0)) {
                         needUnLockList.add(nextEqu);
                         if (ObjectUtil.isNotEmpty(nextEqu.getNextprocessesids())) {
                             getNextProcess(nextNewProcessesids, nextProcess, needScheduleList, needScheduleIdList, allProcessEquList, allProcessEquIdList, needUnLockList, allProcessList);

+ 24 - 18
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsServiceImpl.java

@@ -793,6 +793,14 @@ public class ApsServiceImpl implements ApsService {
                 // 获取坯料计划
                 /*List<ApsBlankOrderVo> apsBlankOrderss = new ArrayList<>();
                 apsBlankOrderss.add(bo);*/
+                //排程结束后,查询修改时间在排程开始-排程结束之间的待开工的明细,不更新修改信息,并最后重新判断其冲突
+                List<ApsProcessOperationProcessEquCheckVo> list = apsProcessOperationProcessEquDao.getNeedCheckEquList(startTime, endTime, CXCommonUtils.getCurrentUserFactoryId(currentUser));
+                if (!list.isEmpty()) {
+                    List<String> updateIdList = list.stream().map(ApsProcessOperationProcessEquCheckVo::getId).distinct().collect(Collectors.toList());
+                    List<ProductionProcesses> productionProcesses = productionScheduleRetVo.getProcesses().stream().filter(item -> !updateIdList.contains(item.getId())).collect(Collectors.toList());
+                    productionScheduleRetVo.setProcesses(productionProcesses);
+                }
+
                 if ("dd".equals(apsType.getScheduleType())) {
                     apsBlankOrderService.ddApsAfter(productionScheduleRetVo, apsBlankOrders, currentUser, apsType);
                 } else {
@@ -819,27 +827,25 @@ public class ApsServiceImpl implements ApsService {
 
                     throw new CustomException(productionScheduleRetVo.getMsg() + " " + DateUtil.formatDateTime(new Date()));
                 }
-            }
-
-            //排程结束后,查询修改时间在排程开始-排程结束之间的待开工的明细,判断其冲突
-            List<ApsProcessOperationProcessEquCheckVo> list = apsProcessOperationProcessEquDao.getNeedCheckEquList(startTime, endTime, CXCommonUtils.getCurrentUserFactoryId(currentUser));
-            if (!list.isEmpty()) {
-                for (ApsProcessOperationProcessEquCheckVo equDo : list) {
-                    try {
-                        apsProcessOperationProcessEquService.checkProcessingTimeConflict(equDo,
-                                null, null, null, equDo.getProcessWay(), new LinkedList<>());
-                        ApsProcessOperationProcessEquDo apsProcessOperationProcessEquDo = apsProcessOperationProcessEquService.getById(equDo.getId());
-                        // 判断是否存在设备不可用
-                        apsProcessOperationProcessEquService.inspectionEquipmentIsAvailable(apsProcessOperationProcessEquDo,
-                                apsProcessOperationProcessEquDo.getProcessdeviceid(),
-                                apsProcessOperationProcessEquDo.getPlanstartdate(),
-                                apsProcessOperationProcessEquDo.getPlanenddate(),
-                                new LinkedList<>());
-                    } catch (Exception e) {
-                        e.printStackTrace();
+                if (!list.isEmpty()) {
+                    for (ApsProcessOperationProcessEquCheckVo equDo : list) {
+                        try {
+                            apsProcessOperationProcessEquService.checkProcessingTimeConflict(equDo,
+                                    null, null, null, equDo.getProcessWay(), new LinkedList<>());
+                            ApsProcessOperationProcessEquDo apsProcessOperationProcessEquDo = apsProcessOperationProcessEquService.getById(equDo.getId());
+                            // 判断是否存在设备不可用
+                            apsProcessOperationProcessEquService.inspectionEquipmentIsAvailable(apsProcessOperationProcessEquDo,
+                                    apsProcessOperationProcessEquDo.getProcessdeviceid(),
+                                    apsProcessOperationProcessEquDo.getPlanstartdate(),
+                                    apsProcessOperationProcessEquDo.getPlanenddate(),
+                                    new LinkedList<>());
+                        } catch (Exception e) {
+                            e.printStackTrace();
+                        }
                     }
                 }
             }
+
         }
     }
 

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

@@ -638,7 +638,7 @@
         AND apo.DELETED = 0
         AND apope.PROCESSDEVICEID != ''
         AND apope.PROCESSDEVICEID is not null
-        AND apope.WORKSTATUS != '已完工'
+        AND apope.WORKSTATUS = '待开工'
         AND apope.TENANTID = #{tenantId}
         AND apope.MODIFYDATE > #{startTime}
         AND apope.MODIFYDATE &lt; #{endTime}