Browse Source

坯料计划如果坯料来源是备料,并且工艺路线的首道工序是坯料工序,则去掉首道工序作业

DLC 11 months ago
parent
commit
95820e2326

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

@@ -203,6 +203,8 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
             List<ApsProcessOperationDo> apsProcessOperationDoList = new ArrayList<>();
             List<ApsProcessOperationOutMaterDo> apsProcessOperationOutMaterDoList = new ArrayList<>();
             List<ApsProcessOperationEquDo> apsProcessOperationEquDoList = new ArrayList<>();
+            boolean hasFirst = true;//坯料计划如果坯料来源是备料,并且工艺路线的首道工序是坯料工序,则去掉首道工序作业
+            String secondProcessId = "";
             for (ApsCraftRouteStepDo apsCraftRouteStepDo : apsCraftRouteStepDoList) {
                 if (overRouteStepIds.contains(apsCraftRouteStepDo.getId())) {
                     continue;
@@ -226,17 +228,23 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
 
                             //更新前道工序的后道工序
                             ApsProcessOperationDo aDo = apsProcessOperationDoList.stream().filter(qtr -> processVo.get(0).getProcessId().equals(qtr.getId())).findAny().orElse(null);
-                            if (StringUtils.isBlank(aDo.getNextprocessid())) {
-                                aDo.setNextprocessid(processId);
-                                aDo.setNextprocess(apsProcessOperationDo.getProcessname());
-                            } else {
-                                aDo.setNextprocessid(aDo.getNextprocessid() + "," + processId);
-                                aDo.setNextprocess(aDo.getNextprocess() + "," + apsProcessOperationDo.getProcessname());
+                            if (aDo != null) {
+                                if (StringUtils.isBlank(aDo.getNextprocessid())) {
+                                    aDo.setNextprocessid(processId);
+                                    aDo.setNextprocess(apsProcessOperationDo.getProcessname());
+                                } else {
+                                    aDo.setNextprocessid(aDo.getNextprocessid() + "," + processId);
+                                    aDo.setNextprocess(aDo.getNextprocess() + "," + apsProcessOperationDo.getProcessname());
+                                }
+
+                            }
+
+                            if (!secondProcessId.equals(apsCraftRouteStepDo1.getId())) {
+                                apsProcessOperationDo.setPreviousprocessid(processVo.get(0).getProcessId());
+                                apsProcessOperationDo.setPreviousprocess(processVo.get(0).getProcessName());
+                                apsProcessOperationDo.setPlaninputid(outMaterDo.getId());
                             }
 
-                            apsProcessOperationDo.setPreviousprocessid(processVo.get(0).getProcessId());
-                            apsProcessOperationDo.setPreviousprocess(processVo.get(0).getProcessName());
-                            apsProcessOperationDo.setPlaninputid(outMaterDo.getId());
                             String meterInput = getInMeterInfo(outMaterDo.getProducttype(), outMaterDo.getMetal(), outMaterDo.getMetalstate(), outMaterDo.getThickness(), outMaterDo.getProwidth(), outMaterDo.getProlength());
                             apsProcessOperationDo.setPlaninput(meterInput + outMaterDo.getSinglerollweight() + UNIT_MAP.getOrDefault(outMaterDo.getNumunit(), ""));
                             apsProcessOperationDo.setProducttypeid(outMaterDo.getProducttypeid());
@@ -391,7 +399,11 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                             List<SysMindMappingDo> sysMindMappingDoList1 = sysMindMappingDoList.stream().filter(mind -> mind.getId().equals(apsCraftRouteStepDo1.getId())).collect(Collectors.toList());
                             SysMindMappingDo sysMindMappingDo1 = sysMindMappingDoList1.get(0);
                             sysMindMappingDo1.setId(processId);
-                            sysMindMappingDo1.setParentid(processVo.get(0).getProcessId());
+                            if (!hasFirst && secondProcessId.equals(apsCraftRouteStepDo1.getId())) {
+                                sysMindMappingDo1.setParentid(mindStrId);
+                            } else {
+                                sysMindMappingDo1.setParentid(processVo.get(0).getProcessId());
+                            }
                             sysMindMappingDo1.setBsid(blanckdata.getStr("ID"));
                             sysMindMappingDo1.setBstable("aps_process_operation");
                             JSONObject jsonObject = new JSONObject();
@@ -408,6 +420,11 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                     } else {
                         previousProcessVo = new PreviousProcessVo();
                         //首道工序
+                        if (blanckdata.getStr("PREPAREMATERIAL").equals("是") && apsCraftRouteStepDo.getIfblankprocess().equals("是")) {
+                            hasFirst = false;
+                            secondProcessId = apsCraftRouteStepDo.getNextstepid();
+                        }
+
                         processId = SecurityUtil.getUUID();
                         String meterInput = getInMeterInfo(blanckdata.getStr("PRODUCTTYPE"), blanckdata.getStr("ALLOY"), blanckdata.getStr("ALLOYSTATUS"), blanckdata.getBigDecimal("THICKNESS"), blanckdata.getBigDecimal("PROWIDTH"), blanckdata.getBigDecimal("PROLENGTH"));
                         apsProcessOperationDo = BeanUtil.toBean(apsCraftRouteStepDo, ApsProcessOperationDo.class);
@@ -429,7 +446,6 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                         apsProcessOperationDo.setBlankid(blanckdata.getStr("ID"));
                         apsProcessOperationDo.setCraftstepid(apsCraftRouteStepDo.getId());
 
-//                        if (!apsProcessOperationDo.getProcessway().equals("合并加工")) {
                         BigDecimal loadingmin = apsProcessOperationDo.getLoadingmin() == null ? BigDecimal.valueOf(0) : apsProcessOperationDo.getLoadingmin();
                         BigDecimal cuttingmin = apsProcessOperationDo.getCuttingmin() == null ? BigDecimal.valueOf(0) : apsProcessOperationDo.getCuttingmin();
                         if (apsProcessOperationDo.getTimeway().equals("10")) {
@@ -444,7 +460,6 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                             //如果计时方式=按单次加工时长计时,计划作业时长=(上料时长+下料时长+单次加工时长)*计划加工卷数
                             apsProcessOperationDo.setProcesstotaltime(new BigDecimal(df.format(loadingmin.add(cuttingmin).add(apsProcessOperationDo.getOnceprocessmin()).multiply(BigDecimal.valueOf(apsProcessOperationDo.getPlanprocessrall())))));
                         }
-//                        }
 
                         //本道工序信息
                         previousProcessVo.setProcessId(processId);
@@ -518,49 +533,51 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                         apsProcessOperationOutMaterDo.setMoveleaveoutroll(apsProcessOperationOutMaterDo.getPlanrollnum() - apsProcessOperationOutMaterDo.getPlanprodrollnum());
 
                         previousProcessVo.setApsProcessOperationOutMaterDo(apsProcessOperationOutMaterDo);
+                        newProcessIds.add(previousProcessVo);
 
-                        //本道工序的可选设备
-                        List<ApsCraftRouteStepEquDo> apsCraftRouteStepEquDos = apsCraftRouteStepEquDoList.stream().filter(crse -> apsCraftRouteStepDo.getId().equals(crse.getCraftstepid())).collect(Collectors.toList());
-                        List<String> equIdList = new ArrayList<>();//设备
-                        List<String> equGroupIdList = new ArrayList<>();//资源组
-                        for (ApsCraftRouteStepEquDo apsCraftRouteStepEquDo : apsCraftRouteStepEquDos) {
-                            ApsProcessOperationEquDo apsProcessOperationEquDo;
-                            apsProcessOperationEquDo = BeanUtil.toBean(apsCraftRouteStepEquDo, ApsProcessOperationEquDo.class);
-                            apsProcessOperationEquDo.setId(SecurityUtil.getUUID());
-                            apsProcessOperationEquDo.setBlankid(blanckdata.getStr("ID"));
-                            apsProcessOperationEquDo.setMainid(processId);
-                            if (apsProcessOperationEquDo.getResourcetype().equals("资源组")) {
-                                if (!equGroupIdList.contains(apsProcessOperationEquDo.getResourceid())) {
-                                    equGroupIdList.add(apsProcessOperationEquDo.getResourceid());
-                                }
-                            } else {
-                                if (!equIdList.contains(apsProcessOperationEquDo.getResourceid())) {
-                                    equIdList.add(apsProcessOperationEquDo.getResourceid());
+                        if (hasFirst) {
+                            //本道工序的可选设备
+                            List<ApsCraftRouteStepEquDo> apsCraftRouteStepEquDos = apsCraftRouteStepEquDoList.stream().filter(crse -> apsCraftRouteStepDo.getId().equals(crse.getCraftstepid())).collect(Collectors.toList());
+                            List<String> equIdList = new ArrayList<>();//设备
+                            List<String> equGroupIdList = new ArrayList<>();//资源组
+                            for (ApsCraftRouteStepEquDo apsCraftRouteStepEquDo : apsCraftRouteStepEquDos) {
+                                ApsProcessOperationEquDo apsProcessOperationEquDo;
+                                apsProcessOperationEquDo = BeanUtil.toBean(apsCraftRouteStepEquDo, ApsProcessOperationEquDo.class);
+                                apsProcessOperationEquDo.setId(SecurityUtil.getUUID());
+                                apsProcessOperationEquDo.setBlankid(blanckdata.getStr("ID"));
+                                apsProcessOperationEquDo.setMainid(processId);
+                                if (apsProcessOperationEquDo.getResourcetype().equals("资源组")) {
+                                    if (!equGroupIdList.contains(apsProcessOperationEquDo.getResourceid())) {
+                                        equGroupIdList.add(apsProcessOperationEquDo.getResourceid());
+                                    }
+                                } else {
+                                    if (!equIdList.contains(apsProcessOperationEquDo.getResourceid())) {
+                                        equIdList.add(apsProcessOperationEquDo.getResourceid());
+                                    }
                                 }
-                            }
 
-                            apsProcessOperationEquDoList.add(apsProcessOperationEquDo);
-                        }
-                        //可选设备IDS
-                        if (equIdList.size() > 0 || equGroupIdList.size() > 0) {
-                            apsProcessOperationDo.setCanchoosedeviceid(getChooseequids(equIdList, equGroupIdList));
-                        }
+                                apsProcessOperationEquDoList.add(apsProcessOperationEquDo);
+                            }
+                            //可选设备IDS
+                            if (equIdList.size() > 0 || equGroupIdList.size() > 0) {
+                                apsProcessOperationDo.setCanchoosedeviceid(getChooseequids(equIdList, equGroupIdList));
+                            }
 
-                        //本道工序思维导图
-                        List<SysMindMappingDo> sysMindMappingDoList1 = sysMindMappingDoList.stream().filter(mind -> mind.getId().equals(apsCraftRouteStepDo.getId())).collect(Collectors.toList());
-                        SysMindMappingDo sysMindMappingDo1 = sysMindMappingDoList1.get(0);
-                        sysMindMappingDo1.setId(processId);
-                        sysMindMappingDo1.setParentid(mindStrId);
-                        sysMindMappingDo1.setBsid(blanckdata.getStr("ID"));
-                        sysMindMappingDo1.setBstable("aps_process_operation");
-                        JSONObject jsonObject = new JSONObject();
-                        jsonObject.putOpt("craftStepId", apsCraftRouteStepDo.getId());
-                        sysMindMappingDo1.setRoption(jsonObject.toString());//存工艺路线的工艺步骤ID
-                        sysMindMappingDos.add(sysMindMappingDo1);
+                            //本道工序思维导图
+                            List<SysMindMappingDo> sysMindMappingDoList1 = sysMindMappingDoList.stream().filter(mind -> mind.getId().equals(apsCraftRouteStepDo.getId())).collect(Collectors.toList());
+                            SysMindMappingDo sysMindMappingDo1 = sysMindMappingDoList1.get(0);
+                            sysMindMappingDo1.setId(processId);
+                            sysMindMappingDo1.setParentid(mindStrId);
+                            sysMindMappingDo1.setBsid(blanckdata.getStr("ID"));
+                            sysMindMappingDo1.setBstable("aps_process_operation");
+                            JSONObject jsonObject = new JSONObject();
+                            jsonObject.putOpt("craftStepId", apsCraftRouteStepDo.getId());
+                            sysMindMappingDo1.setRoption(jsonObject.toString());//存工艺路线的工艺步骤ID
 
-                        newProcessIds.add(previousProcessVo);
-                        apsProcessOperationDoList.add(apsProcessOperationDo);
-                        apsProcessOperationOutMaterDoList.add(apsProcessOperationOutMaterDo);
+                            sysMindMappingDos.add(sysMindMappingDo1);
+                            apsProcessOperationDoList.add(apsProcessOperationDo);
+                            apsProcessOperationOutMaterDoList.add(apsProcessOperationOutMaterDo);
+                        }
                     }
                 }
             }
@@ -640,6 +657,8 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
         List<ApsProcessOperationOutMaterDo> apsProcessOperationOutMaterDoList = new ArrayList<>();
         List<ApsProcessOperationEquDo> apsProcessOperationEquDoList = new ArrayList<>();
         List<SysMindMappingDo> sysMindMappingDoList = new ArrayList<>();
+        boolean hasFirst = true;//坯料计划如果坯料来源是备料,并且工艺路线的首道工序是坯料工序,则去掉首道工序作业
+        String secondProcessId = "";
 
         Map<String, Object> mindMap = new HashMap<>();
         mindMap.put("BSID", newblankid);
@@ -679,8 +698,16 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                         List<PreviousProcessVo> processVo = newProcessIds.stream().filter(pro -> pro.getPreviousstepid().equals(apsProcessOperationDo1.getPreviousprocessid())).collect(Collectors.toList());
                         List<ApsProcessOperationOutMaterDo> outMaterDos = processVo.get(0).getApsProcessOperationOutMaterDos().stream().filter(out -> out.getRoption().equals(apsProcessOperationDo1.getPlaninputid())).collect(Collectors.toList());
                         ApsProcessOperationOutMaterDo outMaterDo = outMaterDos.get(0);
-                        processOperationDo.setPreviousprocessid(processVo.get(0).getProcessId());
-                        processOperationDo.setPlaninputid(outMaterDo.getId());
+
+                        if (secondProcessId.equals(apsProcessOperationDo1.getId())) {
+                            processOperationDo.setPreviousprocessid("");
+                            processOperationDo.setPreviousprocess("");
+                            processOperationDo.setPlaninputid("");
+                        } else {
+                            processOperationDo.setPreviousprocessid(processVo.get(0).getProcessId());
+                            processOperationDo.setPlaninputid(outMaterDo.getId());
+                        }
+
                         String meterInput = getInMeterInfo(outMaterDo.getProducttype(), outMaterDo.getMetal(), outMaterDo.getMetalstate(), outMaterDo.getThickness(), outMaterDo.getProwidth(), outMaterDo.getProlength());
                         processOperationDo.setPlaninput(meterInput + outMaterDo.getSinglerollweight() + UNIT_MAP.getOrDefault(outMaterDo.getNumunit(), ""));
                         processOperationDo.setProducttypeid(outMaterDo.getProducttypeid());
@@ -732,10 +759,12 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
 
                         //更新前道工序的后道工序
                         ApsProcessOperationDo aDo = apsProcessOperationDoList.stream().filter(qtr -> processVo.get(0).getProcessId().equals(qtr.getId())).findAny().orElse(null);
-                        if (StringUtils.isBlank(aDo.getNextprocessid())) {
-                            aDo.setNextprocessid(processId);
-                        } else {
-                            aDo.setNextprocessid(aDo.getNextprocessid() + "," + processId);
+                        if (aDo != null) {
+                            if (StringUtils.isBlank(aDo.getNextprocessid())) {
+                                aDo.setNextprocessid(processId);
+                            } else {
+                                aDo.setNextprocessid(aDo.getNextprocessid() + "," + processId);
+                            }
                         }
 
                         //本道工序信息
@@ -846,7 +875,11 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                         List<SysMindMappingDo> sysMindMappingDos1 = sysMindMappingDos.stream().filter(mind -> mind.getId().equals(apsProcessOperationDo1.getId())).collect(Collectors.toList());
                         SysMindMappingDo sysMindMappingDo1 = sysMindMappingDos1.get(0);
                         sysMindMappingDo1.setId(processId);
-                        sysMindMappingDo1.setParentid(processVo.get(0).getProcessId());
+                        if (!hasFirst && secondProcessId.equals(apsProcessOperationDo1.getId())) {
+                            sysMindMappingDo1.setParentid(mindStrId);
+                        } else {
+                            sysMindMappingDo1.setParentid(processVo.get(0).getProcessId());
+                        }
                         sysMindMappingDo1.setBsid(blanckdata.getStr("ID"));
                         sysMindMappingDo1.setBstable("aps_process_operation");
                         JSONObject jsonObject = new JSONObject();
@@ -880,6 +913,11 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                 } else {
                     previousProcessVo = new PreviousProcessVo();
                     //首道工序
+                    if (blanckdata.getStr("PREPAREMATERIAL").equals("是") && apsProcessOperationDo.getIfblankprocess().equals("是")) {
+                        hasFirst = false;
+                        secondProcessId = apsProcessOperationDo.getNextprocessid();
+                    }
+
                     processId = SecurityUtil.getUUID();
                     String meterInput = getInMeterInfo(blanckdata.getStr("PRODUCTTYPE"), blanckdata.getStr("ALLOY"), blanckdata.getStr("ALLOYSTATUS"), blanckdata.getBigDecimal("THICKNESS"), blanckdata.getBigDecimal("PROWIDTH"), blanckdata.getBigDecimal("PROLENGTH"));
                     processOperationDo = BeanUtil.toBean(apsProcessOperationDo, ApsProcessOperationDo.class);
@@ -937,6 +975,7 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                         return R.error("工艺步骤" + apsProcessOperationDo.getProcessname() + "没输出");
                     }
                     List<String> planoutputList = new ArrayList<>();
+                    List<ApsProcessOperationOutMaterDo> apsProcessOperationOutMaterDoList1 = new ArrayList<>();
                     Integer outval = 0;
                     for (ApsProcessOperationOutMaterDo apsProcessOperationOutMaterDo : apsProcessOperationOutMaterDos1) {
                         ApsProcessOperationOutMaterDo processOperationOutMaterDo = BeanUtil.toBean(apsProcessOperationOutMaterDo, ApsProcessOperationOutMaterDo.class);
@@ -995,9 +1034,13 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                         processOperationOutMaterDo.setStockleaveoutroll(processOperationOutMaterDo.getPlanstockrollnum() - processOperationOutMaterDo.getStockoutroll() - processOperationOutMaterDo.getStockcancelroll());
 
                         outval += processOperationOutMaterDo.getOutval();
-                        apsProcessOperationOutMaterDoList.add(processOperationOutMaterDo);
+                        if (hasFirst) {
+                            apsProcessOperationOutMaterDoList.add(processOperationOutMaterDo);
+                        }
+                        apsProcessOperationOutMaterDoList1.add(processOperationOutMaterDo);
                     }
-                    previousProcessVo.setApsProcessOperationOutMaterDos(apsProcessOperationOutMaterDoList);
+                    previousProcessVo.setApsProcessOperationOutMaterDos(apsProcessOperationOutMaterDoList1);
+                    newProcessIds.add(previousProcessVo);
 
                     //本道工序的可选设备
                     List<ApsProcessOperationEquDo> apsProcessOperationEquDos1 = apsProcessOperationEquDos.stream().filter(omd -> apsProcessOperationDo.getId().equals(omd.getMainid())).collect(Collectors.toList());
@@ -1009,38 +1052,38 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
                         apsProcessOperationEquDoList.add(processOperationEquDo);
                     }
 
-                    //本道工序思维导图
-                    List<SysMindMappingDo> sysMindMappingDos1 = sysMindMappingDos.stream().filter(mind -> mind.getId().equals(apsProcessOperationDo.getId())).collect(Collectors.toList());
-                    SysMindMappingDo sysMindMappingDo1 = sysMindMappingDos1.get(0);
-                    sysMindMappingDo1.setId(processId);
-                    sysMindMappingDo1.setParentid(mindStrId);
-                    sysMindMappingDo1.setBsid(blanckdata.getStr("ID"));
-                    sysMindMappingDo1.setBstable("aps_process_operation");
-                    JSONObject jsonObject = new JSONObject();
-                    jsonObject.putOpt("craftStepId", apsProcessOperationDo.getId());
-                    sysMindMappingDo1.setRoption(jsonObject.toString());//存工艺路线的工艺步骤ID
-                    sysMindMappingDoList.add(sysMindMappingDo1);
-
-                    newProcessIds.add(previousProcessVo);
+                    if (hasFirst) {
+                        //本道工序思维导图
+                        List<SysMindMappingDo> sysMindMappingDos1 = sysMindMappingDos.stream().filter(mind -> mind.getId().equals(apsProcessOperationDo.getId())).collect(Collectors.toList());
+                        SysMindMappingDo sysMindMappingDo1 = sysMindMappingDos1.get(0);
+                        sysMindMappingDo1.setId(processId);
+                        sysMindMappingDo1.setParentid(mindStrId);
+                        sysMindMappingDo1.setBsid(blanckdata.getStr("ID"));
+                        sysMindMappingDo1.setBstable("aps_process_operation");
+                        JSONObject jsonObject = new JSONObject();
+                        jsonObject.putOpt("craftStepId", apsProcessOperationDo.getId());
+                        sysMindMappingDo1.setRoption(jsonObject.toString());//存工艺路线的工艺步骤ID
+                        sysMindMappingDoList.add(sysMindMappingDo1);
 
-                    StringBuffer planoutsb = new StringBuffer();
-                    Collections.sort(planoutputList);
-                    Integer outIndex = 1;
-                    if (planoutputList.size() == 1) {
-                        planoutsb.append("[1]" + planoutputList.get(0));
-                    } else {
-                        for (String planout : planoutputList) {
-                            planoutsb.append("[" + outIndex + "]" + planout + "/n");
-                            outIndex++;
+                        StringBuffer planoutsb = new StringBuffer();
+                        Collections.sort(planoutputList);
+                        Integer outIndex = 1;
+                        if (planoutputList.size() == 1) {
+                            planoutsb.append("[1]" + planoutputList.get(0));
+                        } else {
+                            for (String planout : planoutputList) {
+                                planoutsb.append("[" + outIndex + "]" + planout + "/n");
+                                outIndex++;
+                            }
                         }
+                        processOperationDo.setPlanoutput(planoutsb.toString());
+                        if (outval > 1) {
+                            apsProcessOperationDo.setIssubsection("是");
+                        } else {
+                            apsProcessOperationDo.setIssubsection("否");
+                        }
+                        apsProcessOperationDoList.add(processOperationDo);
                     }
-                    processOperationDo.setPlanoutput(planoutsb.toString());
-                    if (outval > 1) {
-                        apsProcessOperationDo.setIssubsection("是");
-                    } else {
-                        apsProcessOperationDo.setIssubsection("否");
-                    }
-                    apsProcessOperationDoList.add(processOperationDo);
                 }
             }
         }