Browse Source

feature 解决换线之后开始时间不正确的问题

xiahan 1 year ago
parent
commit
f8018864ef

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

@@ -223,6 +223,7 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
             log.error("换线作业的工序作业不为空");
             return R.error("工序作业不能为空");
         }
+        // 对数据按照
 
         // 工序作业明细ID
         List<String> detailIds = changingWiresVos.stream().map(ChangingWiresVo::getId).collect(Collectors.toList());
@@ -238,6 +239,11 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
             log.error("无法获取到工序作业明细");
             return R.error("无法获取到工序作业明细");
         }
+        if(apsProcessOperationProcessEquDos.size()!=changingWiresVos.size()){
+            log.error("本次换线操作存在无法获取作业明细的数据");
+            return R.error("本次换线操作存在无法获取作业明细的数据!请联系系统管理员");
+        }
+        
         // 校验是否存在已完工的工序作业
         boolean hasCompletedWork = apsProcessOperationProcessEquDos.stream()
                 .anyMatch(info -> JOBSTATUS_TO_BE_END.equals(info.getWorkstatus()));
@@ -245,6 +251,12 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
             log.error("存在已完工的工序作业无法换线");
             return R.error("存在已完工的工序作业无法换线");
         }
+        //对于换线作业的数据进行排序
+        Optional<Date> minDate = apsProcessOperationProcessEquDos.stream()
+                .map(ApsProcessOperationProcessEquDo::getPlanstartdate).min(Comparator.naturalOrder());
+        // 获取开工时间间隔=所选作业明细最早计划开工时间-所选加工开始时间
+        long timeInterval = minDate.get().getTime() - changingWiresVos.get(0).getProcessingTime().getTime();
+
         // 是否需要清空备份
         AtomicReference<Boolean> emptyBackup = new AtomicReference<>(false);
         List<CheckConflictVo> checkConflictVos = new ArrayList<>();
@@ -257,8 +269,6 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
 
             // 获取该工序作业最早的计划开始时间
             Date planstartdate = processEqus.getPlanstartdate();
-            // 获取开工时间间隔=所选作业明细最早计划开工时间-所选加工开始时间
-            long timeInterval = planstartdate.getTime() - changingWiresVo.getProcessingTime().getTime();
 
             // 待开工的直接修改
             if (JOBSTATUS_TO_BE_START.equals(processEqus.getWorkstatus())) {