ソースを参照

退火合并bug修复

fangpy 5 ヶ月 前
コミット
95de60ed7e

+ 30 - 17
rw-aps-server/src/main/java/com/rongwei/rwapsserver/aps/service/impl/DdApsServiceImpl.java

@@ -1,6 +1,7 @@
 package com.rongwei.rwapsserver.aps.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
 import com.rongwei.rwapsserver.aps.domain.ApsOverallConfig;
 import com.rongwei.rwapsserver.aps.domain.ApsSolution;
@@ -130,8 +131,8 @@ public class DdApsServiceImpl implements DdApsService {
                                             }
                                             if(mergePro.getPreviousProcesses() != null && mergePro.getPreviousProcesses().size()>0){
                                                 // 合并作业的上一道工序
-                                                mergePro.getPreviousProcesses().addAll(mergePres.get(i).getPreviousProcesses());
-                                                mergePro.getPreviousProcessesIds().addAll(mergePres.get(i).getPreviousProcessesIds());
+                                                CollUtil.addAllIfNotContains(mergePro.getPreviousProcesses(),mergePres.get(i).getPreviousProcesses());
+                                                CollUtil.addAllIfNotContains(mergePro.getPreviousProcessesIds(),mergePres.get(i).getPreviousProcessesIds());
                                                 // 合并作业上一道工序的下一道工序设置为当前合并作业
                                                 for (ProductionProcesses previousProcess : mergePres.get(i).getPreviousProcesses()) {
                                                     previousProcess.getNextProcesses().clear();
@@ -661,6 +662,8 @@ public class DdApsServiceImpl implements DdApsService {
         // 根据订单分组
         Map<String, List<ProductionProcesses>> orderProcess = mergeprocesses.stream().collect(Collectors.groupingBy(ProductionProcesses::getOrderId));
         orderProcess.forEach((pk,processes)->{
+            // 被合并的作业
+            List<ProductionProcesses> lzbzMergeOthers = new ArrayList<>();
             try{
                 if(processes != null && processes.size()>0){
                     // 获取所有根节点
@@ -673,8 +676,6 @@ public class DdApsServiceImpl implements DdApsService {
                     // 获取第一道未锁定工序数据
                     List<ProductionProcesses> firstNotLockPros = new ArrayList<>();
                     getFirstNotLockPros(rootPros,firstNotLockPros);
-                    // 被合并的作业
-                    List<ProductionProcesses> lzbzMergeOthers = new ArrayList<>();
                     // 根据根节点逐级查询是否可合并的作业
                     if(firstNotLockPros != null && firstNotLockPros.size()>0){
                         Map<String,List<ProductionProcesses>> lzbzMerges = new HashMap<>();
@@ -709,12 +710,25 @@ public class DdApsServiceImpl implements DdApsService {
                                                 fMergePro.setNextProcessesIds(serPros.get(i).getNextProcessesIds());
                                                 if(fMergePro.getNextProcesses() != null && fMergePro.getNextProcesses().size()>0){
                                                     for (ProductionProcesses nextProcess : fMergePro.getNextProcesses()) {
-                                                        List<ProductionProcesses> pres = new ArrayList<>();
+                                                        int iindex = nextProcess.getPreviousProcessesIds().indexOf(serPros.get(i).getId());
+                                                        if(iindex>=0){
+                                                            List<ProductionProcesses> pres = new ArrayList<>();
+                                                            pres.add(fMergePro);
+                                                            for (ProductionProcesses previousProcess : nextProcess.getPreviousProcesses()) {
+                                                                if(!previousProcess.getId().equals(serPros.get(i).getId())){
+                                                                    pres.add(previousProcess);
+                                                                }
+                                                            }
+                                                            nextProcess.setPreviousProcesses(pres);
+                                                            List<String> nextPreIds = nextProcess.getPreviousProcesses().stream().map(ProductionProcesses::getId).collect(Collectors.toList());
+                                                            nextProcess.setPreviousProcessesIds(nextPreIds);
+                                                        }
+                                                        /*List<ProductionProcesses> pres = new ArrayList<>();
                                                         List<String> preids = new ArrayList<>();
                                                         pres.add(fMergePro);
                                                         preids.add(fMergePro.getId());
                                                         nextProcess.setPreviousProcesses(pres);
-                                                        nextProcess.setPreviousProcessesIds(preids);
+                                                        nextProcess.setPreviousProcessesIds(preids);*/
                                                     }
                                                 }
                                             }
@@ -725,20 +739,19 @@ public class DdApsServiceImpl implements DdApsService {
                             }
                         }
                     }
-                    // 除去被合并的作业
-                    if(lzbzMergeOthers != null && lzbzMergeOthers.size()>0){
-                        List<String> lzbzMergeOtherIds = lzbzMergeOthers.stream().map(ProductionProcesses::getId).collect(Collectors.toList());
-                        for (ProductionProcesses mergeprocess : mergeprocesses) {
-                            if(!lzbzMergeOtherIds.contains(mergeprocess.getId())){
-                                retPros.add(mergeprocess);
-                            }
-                        }
-                    }else{
-                        retPros.addAll(mergeprocesses);
-                    }
                 }
             }catch (Exception e){
                 log.error("连续冷轧箔轧作业合并",e);
+            }finally {
+                // 除去被合并的作业
+                if(lzbzMergeOthers != null && lzbzMergeOthers.size()>0){
+                    List<String> lzbzMergeOtherIds = lzbzMergeOthers.stream().map(ProductionProcesses::getId).collect(Collectors.toList());
+                    for (ProductionProcesses mergeprocess : processes) {
+                        if(!lzbzMergeOtherIds.contains(mergeprocess.getId())){
+                            retPros.add(mergeprocess);
+                        }
+                    }
+                }
             }
         });
         return retPros;

+ 3 - 3
rw-aps-server/src/main/java/com/rongwei/rwapsserver/aps/service/impl/ProductionScheduleServiceImpl.java

@@ -52,7 +52,7 @@ public class ProductionScheduleServiceImpl implements ProductionScheduleService
     @Override
     public ProductionScheduleRetVo productionSchedule(ProductionScheduleVo productionScheduleVo) throws Exception{
         List<String> blankids = new ArrayList<>();
-        blankids.add("f6681369a106470e88e9966db37e07aa");
+        blankids.add("9d695c0102d14ae7bec50441ea6be8ea");
 //        blankids.add("2f3f48a1c3c74c0481ba06df521fe0d7");
 //        blankids.add("75736c469b1a42568af980260c0689a6");
 //        blankids.add("acf4460f9488459780c0dc7d8038f1f9");
@@ -158,8 +158,8 @@ public class ProductionScheduleServiceImpl implements ProductionScheduleService
         List<ProductionProcesses> otherSerProces = new ArrayList<>();
         List<ProductionProcesses> otherSerProcesMerges = null;
         if("dd".equals(productionScheduleVo.getScheduleType().getScheduleType())){
-//            otherSerProcesMerges = ddsService.seriesLzBzMerge(processesList, otherSerProces);
-            otherSerProcesMerges = processesList;
+            otherSerProcesMerges = ddsService.seriesLzBzMerge(processesList, otherSerProces);
+//            otherSerProcesMerges = processesList;
         }else{
             otherSerProcesMerges = apsService.seriesLzBzMerge(processesList, otherSerProces);
         }