Ver Fonte

aps-甘特图锁定/解锁优化校验代码提交

zhoudazhuang há 6 meses atrás
pai
commit
54c583aae8

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

@@ -50,6 +50,7 @@ import static com.rongwei.bscommon.sys.service.impl.ApsProductionOrderServiceImp
 import static com.rongwei.bscommon.sys.utils.ApsUtils.addNewConflictsDesc;
 import static com.rongwei.bscommon.sys.utils.ApsUtils.removeConflictsDesc;
 import static com.rongwei.safecommon.utils.SaveConstans.ForcedConflictsDescription.EXCEEDING_THE_PROMISED_DELIVERY_DEADLINE;
+import static com.rongwei.safecommon.utils.SaveConstans.JobStatus.*;
 import static com.rongwei.safecommon.utils.SaveConstans.LockmarkType.LOCKMARK_N;
 import static com.rongwei.safecommon.utils.SaveConstans.LockmarkType.LOCKMARK_Y;
 import static com.rongwei.safecommon.utils.SaveConstans.ProductionStatus.*;
@@ -504,14 +505,25 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
         }
         // 作业明细锁定
         if (orderLockVo.getId() != null && orderLockVo.getId().size() > 0) {
-            apsProcessOperationProcessEquService.update(new LambdaUpdateWrapper<ApsProcessOperationProcessEquDo>()
-                    .in(ApsProcessOperationProcessEquDo::getId, orderLockVo.getId())
-                    .set(ApsProcessOperationProcessEquDo::getLockmarkdetail, lockMark));
             // 查询作业明细的所属作业ID
             List<ApsProcessOperationProcessEquDo> apsProcessOperationProcessEquDos = (List<ApsProcessOperationProcessEquDo>) apsProcessOperationProcessEquService.listByIds(orderLockVo.getId());
+            //校验工序作业明细状态
+            if (!apsProcessOperationProcessEquDos.isEmpty()){
+                //解锁的情况下校验 工序作业对应的生产状态
+                boolean b = apsProcessOperationProcessEquDos.stream().allMatch(info -> JOBSTATUS_TO_BE_STARTING.equals(info.getWorkstatus()) ||
+                        JOBSTATUS_TO_BE_END.equals(info.getWorkstatus()));
+                if (b) {
+                    return R.error("所选作业明细都已开工,不可以解锁,不能锁定");
+                }
+            }
+            apsProcessOperationProcessEquDos = apsProcessOperationProcessEquDos.stream().filter(detail-> JOBSTATUS_TO_BE_START.equals(detail.getWorkstatus())).collect(Collectors.toList());
+            List<String> updateEquIds = apsProcessOperationProcessEquDos.stream().map(ApsProcessOperationProcessEquDo::getId).collect(Collectors.toList());
             //  所有作业ID
             List<String> proids = apsProcessOperationProcessEquDos.stream().map(ApsProcessOperationProcessEquDo::getProcessid).collect(Collectors.toList());
             proids = proids.stream().distinct().collect(Collectors.toList());
+            apsProcessOperationProcessEquService.update(new LambdaUpdateWrapper<ApsProcessOperationProcessEquDo>()
+                    .in(ApsProcessOperationProcessEquDo::getId, updateEquIds)
+                    .set(ApsProcessOperationProcessEquDo::getLockmarkdetail, lockMark));
             // 查询存在未锁定作业明细的作业ID
             List<ApsProcessOperationProcessEquDo> popes = apsProcessOperationProcessEquService.list(new LambdaQueryWrapper<ApsProcessOperationProcessEquDo>().in(ApsProcessOperationProcessEquDo::getProcessid, proids)
                     .eq(ApsProcessOperationProcessEquDo::getLockmarkdetail, LOCKMARK_N));
@@ -544,7 +556,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                 }
                 retMsg = "解锁成功";
             }
-            return R.ok("200", retMsg, orderLockVo.getId());
+            return R.ok("200", retMsg, updateEquIds);
         } else {
             Date lockStartTime = orderLockVo.getLockStartTime();
             if (lockStartTime != null) {
@@ -562,8 +574,20 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                 List<ApsProcessOperationProcessEquDo> processDetailInfoByLockTime = this.baseMapper.getProcessDetailInfoByLockTime(date, lockMark);
                 if (processDetailInfoByLockTime != null && processDetailInfoByLockTime.size() > 0) {
                     List<String> lpeus = processDetailInfoByLockTime.stream().map(ApsProcessOperationProcessEquDo::getId).collect(Collectors.toList());
+                    List<ApsProcessOperationProcessEquDo> equDos = new ArrayList<>(apsProcessOperationProcessEquService.listByIds(lpeus));
+                    //校验工序作业明细状态
+                    if (!equDos.isEmpty()){
+                        //解锁的情况下校验 工序作业对应的生产状态
+                        boolean b = equDos.stream().allMatch(info -> JOBSTATUS_TO_BE_STARTING.equals(info.getWorkstatus()) ||
+                                JOBSTATUS_TO_BE_END.equals(info.getWorkstatus()));
+                        if (b) {
+                            return R.error("所选作业明细都已开工,不可以解锁,不能锁定");
+                        }
+                    }
+                    equDos = equDos.stream().filter(detail-> JOBSTATUS_TO_BE_START.equals(detail.getWorkstatus())).collect(Collectors.toList());
+                    List<String> updateEquIds = equDos.stream().map(ApsProcessOperationProcessEquDo::getId).collect(Collectors.toList());
                     apsProcessOperationProcessEquService.update(new LambdaUpdateWrapper<ApsProcessOperationProcessEquDo>()
-                            .in(ApsProcessOperationProcessEquDo::getId, lpeus)
+                            .in(ApsProcessOperationProcessEquDo::getId, updateEquIds)
                             .set(ApsProcessOperationProcessEquDo::getLockmarkdetail, lockMark));
                     String retMsg = "";
                     // 锁定
@@ -572,7 +596,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                     } else if (LOCKMARK_N.equals(lockMark)) {
                         retMsg = "解锁成功";
                     }
-                    return R.ok("200", retMsg, lpeus);
+                    return R.ok("200", retMsg, updateEquIds);
                 }
             }
         }