浏览代码

取消作业更新优化

DLC 3 月之前
父节点
当前提交
0cc511d92d

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

@@ -2116,8 +2116,7 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
         return orderId;
     }
 
-    //作业及该作业明细的已取消卷数合计
-    private HashMap<String, Integer> operationequcancelrollall;
+    private List<ApsProcessOperationProcessEquDo> operationequrollsall;//作业及该作业明细的已取消卷数合计、输入不合格卷数合计、输入已取消卷数合计
 
     /*
     取消和更新工序作业
@@ -2130,8 +2129,7 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
             String craftrouteid = cancelProcessOperationVo.getCraftrouteid();
             Integer curcancelroll = cancelProcessOperationVo.getCurcancelroll();//作业本次取消卷数
             //作业及该作业明细的已取消卷数合计
-//            HashMap<String, Integer> operationequcancelrollall = cancelProcessOperationVo.getOperationequcancelrollall();
-            operationequcancelrollall = cancelProcessOperationVo.getOperationequcancelrollall();
+            operationequrollsall = cancelProcessOperationVo.getOperationequrollsall();
             CancelOperationProcessEquVo cancelOperationProcessEquVo = new CancelOperationProcessEquVo();
 
             //本道工序作业
@@ -2160,13 +2158,21 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                 Integer tempRoll = processOperationProcessEquDo.getPlanprocessrall() - processOperationProcessEquDo.getStartingroll() - processOperationProcessEquDo.getCancelroll();
                 if (tempRoll <= 0 || processOperationProcessEquDo.getClosestatus().equals("已完工")) {
                     //计算所有作业明细已取消卷数的合计
-                    if (operationequcancelrollall == null) {
-                        operationequcancelrollall = new HashMap<>();
+                    if (operationequrollsall == null) {
+                        operationequrollsall = new ArrayList<>();
                     }
-                    if (operationequcancelrollall.containsKey(newOperDo.getId())) {
-                        operationequcancelrollall.replace(newOperDo.getId(), operationequcancelrollall.get(newOperDo.getId()) + processOperationProcessEquDo.getCancelrollno());
-                    } else {
-                        operationequcancelrollall.put(newOperDo.getId(), processOperationProcessEquDo.getCancelrollno());
+                    boolean inlist = false;
+                    for (ApsProcessOperationProcessEquDo operationProcessEquDo : operationequrollsall) {
+                        if (operationProcessEquDo.getProcessid().equals(newOperDo.getId()) && !operationProcessEquDo.getRoption().contains(processOperationProcessEquDo.getId())) {
+                            inlist = true;
+                            operationProcessEquDo.setCancelrollno(operationProcessEquDo.getCancelrollno() + processOperationProcessEquDo.getCancelrollno());//已取消卷数合计
+                            operationProcessEquDo.setInputunqualifiednum(operationProcessEquDo.getInputunqualifiednum() + processOperationProcessEquDo.getInputunqualifiednum());//输入不合格卷数合计
+                            operationProcessEquDo.setInputunqualifiedroll(operationProcessEquDo.getInputunqualifiedroll() + processOperationProcessEquDo.getInputunqualifiedroll());//输入已取消卷数合计
+                            operationProcessEquDo.setSecondroll(operationProcessEquDo.getSecondroll() + processOperationProcessEquDo.getSecondroll());//已借调卷数合计
+                        }
+                    }
+                    if (!inlist) {
+                        operationequrollsall.add(processOperationProcessEquDo);
                     }
                     continue;
                 }
@@ -2181,10 +2187,8 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                     cancelOperationProcessEquVo.setApsProcessOperationDo(apsProcessOperationDo);
                     cancelOperationProcessEquVo.setProcessOperationProcessEquDo(processOperationProcessEquDo);
                     cancelOperationProcessEquVo.setCancelreason(cancelProcessOperationVo.getCancelreason());
-//                    cancelOperationProcessEquVo.setOperationequcancelrollall(operationequcancelrollall);
+//                    cancelOperationProcessEquVo.setOperationequcancelrollall(operationequrollsall);
                     cancelProcessOperationEqu(cancelOperationProcessEquVo);
-                } else {
-                    break;
                 }
                 equWaitCancelRoll = equWaitCancelRoll - curEquCancelRoll;
             }
@@ -2192,16 +2196,22 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
 
             newOperDo.setCancelroll(apsProcessOperationDo.getCancelroll());
             newOperDo.setInputunqualifiedroll(apsProcessOperationDo.getInputunqualifiedroll());
-            if (cancelProcessOperationVo.getCancelreason().equals("1")) {//借调或取消
-                newOperDo.setCancelroll(apsProcessOperationDo.getCancelroll() + curcancelroll);
-            } else if (cancelProcessOperationVo.getCancelreason().equals("2")) {//输入取消
-                newOperDo.setInputunqualifiedroll(apsProcessOperationDo.getInputunqualifiedroll() + curcancelroll);
-                Integer cancelrollall = ((operationequcancelrollall == null || operationequcancelrollall.get(newOperDo.getId()) == null) ? 0 : operationequcancelrollall.get(newOperDo.getId()));
-                curcancelroll = curcancelroll - apsProcessOperationDo.getCancelroll() - cancelrollall;
-                newOperDo.setCancelroll(cancelrollall);
-            } else if (cancelProcessOperationVo.getCancelreason().equals("3")) {//输入不合格
-                newOperDo.setInputunqualifiednum(apsProcessOperationDo.getInputunqualifiednum() + curcancelroll);
-                newOperDo.setInputunqualifiedroll(apsProcessOperationDo.getInputunqualifiedroll() + curcancelroll);
+            if (cancelProcessOperationVo.getCancelreason().equals("1")) {//借调
+                newOperDo.setSecondroll(apsProcessOperationDo.getSecondroll() + curcancelroll);
+                newOperDo.setCancelroll(newOperDo.getCancelroll() + curcancelroll);
+            } else if (cancelProcessOperationVo.getCancelreason().equals("2")) {//取消
+                newOperDo.setCancelroll(newOperDo.getCancelroll() + curcancelroll);
+            } else if (cancelProcessOperationVo.getCancelreason().equals("3") || cancelProcessOperationVo.getCancelreason().equals("4")) {//输入取消或输入不合格
+                ApsProcessOperationProcessEquDo processEquDo = operationequrollsall.stream().filter(es -> es.getProcessid().equals(newOperDo.getId())).findFirst().get();
+                if (processEquDo != null) {
+                    if (cancelProcessOperationVo.getCancelreason().equals("4")) {
+                        newOperDo.setInputunqualifiednum(processEquDo.getInputunqualifiednum());
+                    }
+                    newOperDo.setInputunqualifiedroll(processEquDo.getInputunqualifiedroll());
+                    newOperDo.setCancelroll(processEquDo.getCancelrollno());
+                    newOperDo.setSecondroll(processEquDo.getSecondroll());
+                }
+                curcancelroll = newOperDo.getCancelroll() + newOperDo.getInputunqualifiedroll() - (newOperDo.getCancelrollsum() == null ? 0 : newOperDo.getCancelrollsum());
             }
             newOperDo.setCancelrollsum(newOperDo.getCancelroll() + newOperDo.getInputunqualifiedroll());
             newOperDo.setLeavewaitworkroll(apsProcessOperationDo.getPlanprocessrall() - apsProcessOperationDo.getStartingroll() - newOperDo.getCancelrollsum());
@@ -2250,13 +2260,13 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                         cancelProcessOperationVo1.setUpdatecuropration(false);
                         Integer nextCurCancelRoll = (int) Math.floor((double) (curcancelroll * processOperationDo.getPlanprocessrall()) / apsProcessOperationDo.getPlanprocessrall());
                         cancelProcessOperationVo1.setCurcancelroll(nextCurCancelRoll);
-                        if (cancelProcessOperationVo.getCancelreason().equals("3")) {
-                            cancelProcessOperationVo1.setCancelreason("3");
+                        if (cancelProcessOperationVo.getCancelreason().equals("4")) {
+                            cancelProcessOperationVo1.setCancelreason("4");
                         } else {
-                            cancelProcessOperationVo1.setCancelreason("2");
+                            cancelProcessOperationVo1.setCancelreason("3");
                         }
                         cancelProcessOperationVo1.setApsprocessoperationdo(processOperationDo);
-                        cancelProcessOperationVo1.setOperationequcancelrollall(operationequcancelrollall);
+                        cancelProcessOperationVo1.setOperationequrollsall(operationequrollsall);
                         cancelProcessOperation(cancelProcessOperationVo1);
                     }
                 }
@@ -2339,24 +2349,25 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
         ApsProcessOperationDo apsProcessOperationDo = cancelOperationProcessEquVo.getApsProcessOperationDo();
         ApsProcessOperationProcessEquDo processOperationProcessEquDo = cancelOperationProcessEquVo.getProcessOperationProcessEquDo();
         String cancelreason = cancelOperationProcessEquVo.getCancelreason();
-        if (cancelreason.equals("1")) {//借调或取消
+        if (cancelreason.equals("1")) {//借调
+            processOperationProcessEquDo.setSecondroll(processOperationProcessEquDo.getSecondroll() + curEquCancelRoll);
             processOperationProcessEquDo.setCancelrollno(processOperationProcessEquDo.getCancelrollno() + curEquCancelRoll);
-        } else if (cancelreason.equals("2")) {//输入取消
+        } else if (cancelreason.equals("2")) {//取消
+            processOperationProcessEquDo.setCancelrollno(processOperationProcessEquDo.getCancelrollno() + curEquCancelRoll);
+        } else if (cancelreason.equals("3") || cancelreason.equals("4")) {//输入取消或输入不合格
+            if (cancelreason.equals("4")) {
+                processOperationProcessEquDo.setInputunqualifiednum(processOperationProcessEquDo.getInputunqualifiednum() + curEquCancelRoll);
+            }
             processOperationProcessEquDo.setInputunqualifiedroll(processOperationProcessEquDo.getInputunqualifiedroll() + curEquCancelRoll);
             if (processOperationProcessEquDo.getCancelrollno() > 0) {//如果已取消卷数>0,则不要重复取消,本次取消卷数需要扣除已取消卷数
-                if (curEquCancelRoll > processOperationProcessEquDo.getCancelrollno()) {
-                    processOperationProcessEquDo.setCancelrollno(0);
-                    curEquCancelRoll = curEquCancelRoll - processOperationProcessEquDo.getCancelrollno();
+                if (curEquCancelRoll > (processOperationProcessEquDo.getCancelrollno() - processOperationProcessEquDo.getSecondroll())) {
+                    processOperationProcessEquDo.setCancelrollno(processOperationProcessEquDo.getSecondroll());
+                    curEquCancelRoll = curEquCancelRoll - processOperationProcessEquDo.getCancelrollno() + processOperationProcessEquDo.getSecondroll();
                 } else {
                     processOperationProcessEquDo.setCancelrollno(processOperationProcessEquDo.getCancelrollno() - curEquCancelRoll);
                     curEquCancelRoll = 0;
                 }
-            } else {
-                processOperationProcessEquDo.setCancelrollno(curEquCancelRoll);
             }
-        } else if (cancelreason.equals("3")) {//输入不合格
-            processOperationProcessEquDo.setInputunqualifiednum(processOperationProcessEquDo.getInputunqualifiednum() + curEquCancelRoll);
-            processOperationProcessEquDo.setInputunqualifiedroll(processOperationProcessEquDo.getInputunqualifiedroll() + curEquCancelRoll);
         }
 
         //该坯料计划下所有的作业明细
@@ -2370,16 +2381,25 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
         }
 
         //作业及该作业明细的已取消卷数合计
-//        HashMap<String, Integer> operationequcancelrollall = cancelOperationProcessEquVo.getOperationequcancelrollall();
-        if (operationequcancelrollall == null) {
-            operationequcancelrollall = new HashMap<>();
+        if (operationequrollsall == null) {
+            operationequrollsall = new ArrayList<>();
         }
-        if (operationequcancelrollall.containsKey(processOperationProcessEquDo.getProcessid())) {
-            operationequcancelrollall.replace(processOperationProcessEquDo.getProcessid(), operationequcancelrollall.get(processOperationProcessEquDo.getProcessid()) + processOperationProcessEquDo.getCancelrollno());
-        } else {
-            operationequcancelrollall.put(processOperationProcessEquDo.getProcessid(), processOperationProcessEquDo.getCancelrollno());
+        boolean inlist = false;
+        for (ApsProcessOperationProcessEquDo operationProcessEquDo : operationequrollsall) {
+            if (operationProcessEquDo.getProcessid().equals(processOperationProcessEquDo.getProcessid())) {
+                inlist = true;
+                operationProcessEquDo.setRoption(operationProcessEquDo.getRoption() + "," + processOperationProcessEquDo.getId());//标记
+                operationProcessEquDo.setCancelrollno(operationProcessEquDo.getCancelrollno() + processOperationProcessEquDo.getCancelrollno());//已取消卷数合计
+                operationProcessEquDo.setInputunqualifiednum(operationProcessEquDo.getInputunqualifiednum() + processOperationProcessEquDo.getInputunqualifiednum());//输入不合格卷数合计
+                operationProcessEquDo.setInputunqualifiedroll(operationProcessEquDo.getInputunqualifiedroll() + processOperationProcessEquDo.getInputunqualifiedroll());//输入已取消卷数合计
+                operationProcessEquDo.setSecondroll(operationProcessEquDo.getSecondroll() + processOperationProcessEquDo.getSecondroll());//已借调卷数合计
+            }
+        }
+        if (!inlist) {
+            processOperationProcessEquDo.setRoption(processOperationProcessEquDo.getId());//标记
+            operationequrollsall.add(processOperationProcessEquDo);
         }
-//        cancelOperationProcessEquVo.setOperationequcancelrollall(operationequcancelrollall);
+//        cancelOperationProcessEquVo.setOperationequcancelrollall(operationequrollsall);
 
         processOperationProcessEquDo.setCancelroll(processOperationProcessEquDo.getCancelrollno() + processOperationProcessEquDo.getInputunqualifiedroll());
         processOperationProcessEquDo.setLeavewaitworkroll(processOperationProcessEquDo.getPlanprocessrall() - processOperationProcessEquDo.getStartingroll() - processOperationProcessEquDo.getCancelroll());
@@ -2454,9 +2474,10 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
         List<ApsProcessOperationProcessEquDo> processOperationProcessEquDos = apsProcessOperationDao.getNextProcessOperationEqus(processOperationProcessEquDo.getId());
         if (processOperationProcessEquDos.size() > 0 && curEquCancelRoll > 0) {
             for (ApsProcessOperationProcessEquDo processOperationEquDo : processOperationProcessEquDos) {
-                //1-借调或取消 2-输入取消  3-输入不合格
-                if (!cancelreason.equals("3")) {
-                    cancelreason = "2";
+                //如果本次取消原因=输入不合格,则临时计算本次取消原因=输入不合格;否则临时计算本次取消原因=输入取消
+                //1-借调 2-取消  3-输入取消  4-输入不合格
+                if (!cancelreason.equals("4")) {
+                    cancelreason = "3";
                 }
                 CancelOperationProcessEquVo tempCancelOperationProcessEquVo = new CancelOperationProcessEquVo();
                 tempCancelOperationProcessEquVo.setCurEquCancelRoll((int) Math.floor((double) (curEquCancelRoll * processOperationEquDo.getPlanprocessrall()) / processOperationProcessEquDo.getPlanprocessrall()));

+ 4 - 4
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ReportCheckServiceImpl.java

@@ -690,7 +690,7 @@ public class ReportCheckServiceImpl implements ReportCheckService {
                 cancelOperationProcessEquVo.setCurEquCancelRoll(cancelQty);
                 cancelOperationProcessEquVo.setApsProcessOperationDo(apsProcessOperationDo);
                 cancelOperationProcessEquVo.setProcessOperationProcessEquDo(apsProcessOperationProcessEquDo);
-                cancelOperationProcessEquVo.setCancelreason("3");
+                cancelOperationProcessEquVo.setCancelreason("4");
                 apsProcessOperationService.cancelProcessOperationEqu(cancelOperationProcessEquVo);
                 //取消和更新工序作业
                 cancelProcessOperationVo = new CancelProcessOperationVo();
@@ -698,7 +698,7 @@ public class ReportCheckServiceImpl implements ReportCheckService {
                 cancelProcessOperationVo.setCurcancelroll(cancelQty);
                 cancelProcessOperationVo.setApsprocessoperationdo(apsProcessOperationDo);
                 cancelProcessOperationVo.setUpdatecuropration(false);
-                cancelProcessOperationVo.setCancelreason("3");
+                cancelProcessOperationVo.setCancelreason("4");
                 apsProcessOperationService.cancelProcessOperation(cancelProcessOperationVo);
                 value = value - cancelQty;
             }
@@ -1112,7 +1112,7 @@ public class ReportCheckServiceImpl implements ReportCheckService {
                     cancelOperationProcessEquVo.setCurEquCancelRoll(cancelQty);
                     cancelOperationProcessEquVo.setApsProcessOperationDo(apsProcessOperationDo);
                     cancelOperationProcessEquVo.setProcessOperationProcessEquDo(apsProcessOperationProcessEquDo);
-                    cancelOperationProcessEquVo.setCancelreason("3");
+                    cancelOperationProcessEquVo.setCancelreason("4");
                     apsProcessOperationService.cancelProcessOperationEqu(cancelOperationProcessEquVo);
                     //取消和更新工序作业
                     cancelProcessOperationVo = new CancelProcessOperationVo();
@@ -1120,7 +1120,7 @@ public class ReportCheckServiceImpl implements ReportCheckService {
                     cancelProcessOperationVo.setCurcancelroll(cancelQty);
                     cancelProcessOperationVo.setApsprocessoperationdo(apsProcessOperationDo);
                     cancelProcessOperationVo.setUpdatecuropration(false);
-                    cancelProcessOperationVo.setCancelreason("3");
+                    cancelProcessOperationVo.setCancelreason("4");
                     apsProcessOperationService.cancelProcessOperation(cancelProcessOperationVo);
                     value = value - cancelQty;
                 }

+ 1 - 1
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/CancelOperationProcessEquVo.java

@@ -12,7 +12,7 @@ public class CancelOperationProcessEquVo {
     private Integer curEquCancelRoll;//作业明细本次取消卷数
     private ApsProcessOperationDo apsProcessOperationDo;//当前作业
     private ApsProcessOperationProcessEquDo processOperationProcessEquDo;//作业明细
-    private String cancelreason;//取消原因    1-借调或取消 2-输入取消  3-输入不合格
+    private String cancelreason;//取消原因    1-借调 2-取消  3-输入取消  4-输入不合格
     private List<ApsProcessOperationProcessEquDo> apsProcessOperationProcessEquDos = null;//该坯料计划下所有的作业明细
     private List<String> noEquProcessEquIds = null;//设备为空的明细ids
     private HashMap<String, Integer> operationequcancelrollall;//作业及该作业明细的已取消卷数合计

+ 6 - 5
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/CancelProcessOperationVo.java

@@ -1,9 +1,10 @@
 package com.rongwei.bsentity.vo;
 
 import com.rongwei.bsentity.domain.ApsProcessOperationDo;
+import com.rongwei.bsentity.domain.ApsProcessOperationProcessEquDo;
 import lombok.Data;
 
-import java.util.HashMap;
+import java.util.List;
 
 @Data
 public class CancelProcessOperationVo {
@@ -13,14 +14,14 @@ public class CancelProcessOperationVo {
     private Integer curcancelroll;
     //是否更新本道作业明细
     private Boolean updatecuropration = true;
-    //本次取消原因    1-借调或取消 2-输入取消  3-输入不合格
-    private String cancelreason = "1";
+    //本次取消原因    1-借调 2-取消  3-输入取消  4-输入不合格
+    private String cancelreason = "2";
     //作业ID
     private String processid = "";
     //作业明细ID
     private String processequid = "";
     //修改的作业
     private ApsProcessOperationDo apsprocessoperationdo;
-    //作业及该作业明细的已取消卷数合计
-    private HashMap<String, Integer> operationequcancelrollall = null;
+    //作业及该作业明细的已取消卷数合计、输入不合格卷数合计、输入已取消卷数合计
+    private List<ApsProcessOperationProcessEquDo> operationequrollsall = null;
 }