Browse Source

取消作业调整

DLC 11 tháng trước cách đây
mục cha
commit
67d8fc986e

+ 69 - 52
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsProcessOperationServiceImpl.java

@@ -1905,13 +1905,12 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
     }
 
     /*
-    取消工序作业
+    取消和更新工序作业
      */
     @Override
     @Transactional
     public R cancelProcessOperation(CancelProcessOperationVo cancelProcessOperationVo) {
         List<ApsProcessOperationOutMaterDo> apsProcessOperationOutMaterDoList = new ArrayList<>();
-        List<ApsProcessOperationProcessEquDo> apsProcessOperationProcessEquDoList = new ArrayList<>();
         try {
             String craftrouteid = cancelProcessOperationVo.getCraftrouteid();
             Integer curcancelroll = cancelProcessOperationVo.getCurcancelroll();//作业本次取消卷数
@@ -2017,9 +2016,8 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
             }
 
             //本道作业所有后道工序
-            List<ApsProcessOperationDo> apsProcessOperationDos = new ArrayList<>();
             if (StringUtils.isNotBlank(apsProcessOperationDo.getNextprocessid())) {
-                apsProcessOperationDos = apsProcessOperationDao.getNextProcessOperations(apsProcessOperationDo.getNextprocessid().replace(",", "','"));
+                List<ApsProcessOperationDo> apsProcessOperationDos = apsProcessOperationDao.getNextProcessOperations(apsProcessOperationDo.getNextprocessid().replace(",", "','"));
                 for (ApsProcessOperationDo processOperationDo : apsProcessOperationDos) {
                     CancelProcessOperationVo cancelProcessOperationVo1 = new CancelProcessOperationVo();
                     cancelProcessOperationVo1.setCraftrouteid(craftrouteid);
@@ -2033,50 +2031,9 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
 
             //本道工序的作业明细
             List<ApsProcessOperationProcessEquDo> apsProcessOperationProcessEquDos = apsProcessOperationDao.getProcessOperationProcessEqus(apsProcessOperationDo.getId());
+            R cancelEqu = R.ok();
             if (cancelProcessOperationVo.getUpdatecuropration()) {
-                Integer equWaitCancelRoll = curcancelroll;//明细的待分配取消卷数
-                Integer curEquCancelRoll = 0;//作业明细本次取消卷数
-                for (ApsProcessOperationProcessEquDo processOperationProcessEquDo : apsProcessOperationProcessEquDos) {
-                    Integer tempRoll = processOperationProcessEquDo.getPlanprocessrall() - processOperationProcessEquDo.getStartingroll() - processOperationProcessEquDo.getCancelroll();
-                    if (tempRoll <= 0) {
-                        continue;
-                    }
-                    if (equWaitCancelRoll > 0) {
-                        if (tempRoll >= equWaitCancelRoll) {
-                            curEquCancelRoll = equWaitCancelRoll;
-                        } else {
-                            curEquCancelRoll = tempRoll;
-                        }
-                        processOperationProcessEquDo.setCancelroll(processOperationProcessEquDo.getCancelroll() + curEquCancelRoll);
-                        if (processOperationProcessEquDo.getPlanprocessrall() == processOperationProcessEquDo.getCancelroll()) {
-                            processOperationProcessEquDo.setProcessdevice("");
-                            processOperationProcessEquDo.setProcessdeviceid("");
-                        } else if (processOperationProcessEquDo.getPlanprocessrall() > processOperationProcessEquDo.getCancelroll()) {
-                            BigDecimal addMinute = apsProcessOperationDo.getOnceprocessmin().multiply(new BigDecimal(60)).multiply(new BigDecimal(processOperationProcessEquDo.getPlanprocessrall() - processOperationProcessEquDo.getCancelroll()));//秒向上取整
-                            Calendar calendar = Calendar.getInstance();
-                            calendar.setTime(processOperationProcessEquDo.getPlanstartdate());
-                            calendar.add(Calendar.SECOND, addMinute.setScale(0, RoundingMode.UP).intValue());
-                            processOperationProcessEquDo.setPlanenddate(calendar.getTime());
-                        }
-                        if (processOperationProcessEquDo.getPlanprocessrall() - processOperationProcessEquDo.getReportroll() - processOperationProcessEquDo.getCancelroll() == 0) {
-                            processOperationProcessEquDo.setClosestatus(SaveConstans.CloseStatus.COMPLETED);
-                            processOperationProcessEquDo.setActualfinishdate(DateUtil.date());
-                            processOperationProcessEquDo.setWorkstatus(SaveConstans.JobStatus.JOBSTATUS_TO_BE_END);
-                        } else if (processOperationProcessEquDo.getPlanprocessrall() - processOperationProcessEquDo.getReportroll() - processOperationProcessEquDo.getCancelroll() > 0) {
-                            processOperationProcessEquDo.setClosestatus(SaveConstans.CloseStatus.UNFINISHED);
-                            if (processOperationProcessEquDo.getStartingroll() == 0) {
-                                processOperationProcessEquDo.setWorkstatus(SaveConstans.JobStatus.JOBSTATUS_TO_BE_START);
-                            } else {
-                                processOperationProcessEquDo.setWorkstatus(SaveConstans.JobStatus.JOBSTATUS_TO_BE_STARTING);
-                            }
-                        }
-                    } else {
-                        break;
-                    }
-                    equWaitCancelRoll = equWaitCancelRoll - curEquCancelRoll;
-
-                    apsProcessOperationProcessEquDoList.add(processOperationProcessEquDo);
-                }
+                cancelEqu = cancelProcessOperationEqu(curcancelroll, apsProcessOperationDo, apsProcessOperationProcessEquDos);
             }
 
             //作业计划开工时间=所有作业明细最早计划开工时间
@@ -2091,17 +2048,13 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
 
             boolean bool1 = apsProcessOperationService.saveOrUpdate(apsProcessOperationDo);
             boolean bool2 = apsProcessOperationOutMaterService.saveOrUpdateBatch(apsProcessOperationOutMaterDoList);
-            boolean bool3 = true;
-            if (apsProcessOperationProcessEquDoList.size() > 0) {
-                bool3 = apsProcessOperationProcessEquService.saveOrUpdateBatch(apsProcessOperationProcessEquDoList);
-            }
 
             //更新状态
             CommonUpdateProductionStatusReq req = new CommonUpdateProductionStatusReq();
             req.setProcessOperationId(apsProcessOperationDo.getId());
             apsProcessOperationProcessEquService.updateProductionStatus(req);
 
-            if (bool1 && bool2 && bool3) {
+            if (bool1 && bool2 && cancelEqu.getCode() == "200") {
                 String blanckId = apsProcessOperationDo.getBlankid();
                 List<String> blankIds = Arrays.asList(blanckId.split(","));
                 List<ApsProcessOperationDo> apsProcessOperationList = apsProcessOperationService.getBaseMapper().selectList(new QueryWrapper<ApsProcessOperationDo>().lambda().eq(ApsProcessOperationDo::getBlankid, blanckId));
@@ -2138,6 +2091,70 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
         }
     }
 
+    /*
+    分配和取消作业明细
+    curcancelroll:明细的待分配取消卷数
+    apsProcessOperationDo:作业
+    apsProcessOperationProcessEquDos:作业的所有作业明细
+     */
+    @Transactional
+    public R cancelProcessOperationEqu(Integer curcancelroll, ApsProcessOperationDo apsProcessOperationDo, List<ApsProcessOperationProcessEquDo> apsProcessOperationProcessEquDos) {
+        List<ApsProcessOperationProcessEquDo> apsProcessOperationProcessEquDoList = new ArrayList<>();
+        Integer equWaitCancelRoll = curcancelroll;//明细的待分配取消卷数
+        Integer curEquCancelRoll = 0;//作业明细本次取消卷数
+        for (ApsProcessOperationProcessEquDo processOperationProcessEquDo : apsProcessOperationProcessEquDos) {
+            Integer tempRoll = processOperationProcessEquDo.getPlanprocessrall() - processOperationProcessEquDo.getStartingroll() - processOperationProcessEquDo.getCancelroll();
+            if (tempRoll <= 0) {
+                continue;
+            }
+            if (equWaitCancelRoll > 0) {
+                if (tempRoll >= equWaitCancelRoll) {
+                    curEquCancelRoll = equWaitCancelRoll;
+                } else {
+                    curEquCancelRoll = tempRoll;
+                }
+                processOperationProcessEquDo.setCancelroll(processOperationProcessEquDo.getCancelroll() + curEquCancelRoll);
+                if (processOperationProcessEquDo.getPlanprocessrall() == processOperationProcessEquDo.getCancelroll()) {
+                    processOperationProcessEquDo.setProcessdevice("");
+                    processOperationProcessEquDo.setProcessdeviceid("");
+                } else if (processOperationProcessEquDo.getPlanprocessrall() > processOperationProcessEquDo.getCancelroll()) {
+                    BigDecimal addMinute = apsProcessOperationDo.getOnceprocessmin().multiply(new BigDecimal(60)).multiply(new BigDecimal(processOperationProcessEquDo.getPlanprocessrall() - processOperationProcessEquDo.getCancelroll()));//秒向上取整
+                    Calendar calendar = Calendar.getInstance();
+                    calendar.setTime(processOperationProcessEquDo.getPlanstartdate());
+                    calendar.add(Calendar.SECOND, addMinute.setScale(0, RoundingMode.UP).intValue());
+                    processOperationProcessEquDo.setPlanenddate(calendar.getTime());
+                }
+                if (processOperationProcessEquDo.getPlanprocessrall() - processOperationProcessEquDo.getReportroll() - processOperationProcessEquDo.getCancelroll() == 0) {
+                    processOperationProcessEquDo.setClosestatus(SaveConstans.CloseStatus.COMPLETED);
+                    processOperationProcessEquDo.setActualfinishdate(DateUtil.date());
+                    processOperationProcessEquDo.setWorkstatus(SaveConstans.JobStatus.JOBSTATUS_TO_BE_END);
+                } else if (processOperationProcessEquDo.getPlanprocessrall() - processOperationProcessEquDo.getReportroll() - processOperationProcessEquDo.getCancelroll() > 0) {
+                    processOperationProcessEquDo.setClosestatus(SaveConstans.CloseStatus.UNFINISHED);
+                    if (processOperationProcessEquDo.getStartingroll() == 0) {
+                        processOperationProcessEquDo.setWorkstatus(SaveConstans.JobStatus.JOBSTATUS_TO_BE_START);
+                    } else {
+                        processOperationProcessEquDo.setWorkstatus(SaveConstans.JobStatus.JOBSTATUS_TO_BE_STARTING);
+                    }
+                }
+            } else {
+                break;
+            }
+            equWaitCancelRoll = equWaitCancelRoll - curEquCancelRoll;
+
+            apsProcessOperationProcessEquDoList.add(processOperationProcessEquDo);
+        }
+
+        boolean bool = true;
+        if (apsProcessOperationProcessEquDoList.size() > 0) {
+            bool = apsProcessOperationProcessEquService.saveOrUpdateBatch(apsProcessOperationProcessEquDoList);
+        }
+        if (bool) {
+            return R.ok();
+        } else {
+            return R.error();
+        }
+    }
+
     //获取输入已取消卷数
     private Integer getInputCancelRoll(Integer planPrecessRoll, Integer cancelRoll, ApsProcessOperationOutMaterDo outMaterDo) {
         Integer inputCancelRoll = 0;