Prechádzať zdrojové kódy

连续冷轧合并优化

fangpy 4 mesiacov pred
rodič
commit
41cb6b4bb6

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

@@ -809,50 +809,54 @@ public class DdApsServiceImpl implements DdApsService {
                 }
             }
         }else{
-            getLzBzSeries(rootPro,lzbzMerges,null,null,null,hasMid);
+            getLzBzSeries(rootPro,lzbzMerges,null,null,null,null,hasMid);
         }
     }
 
     private void getLzBzSeries(ProductionProcesses rootPro,Map<String,List<ProductionProcesses>> lzbzMerges
-            ,String seriesKey,String protype,List<String> commonEqus,List<String> hasMid){
+            ,String seriesKey,String protype,List<String> commonEqus,Map<String, String> commonEquGs,List<String> hasMid){
         if(!hasMid.contains(rootPro.getId())){
             hasMid.add(rootPro.getId());
             List<ProductionProcesses> nextProcesses = rootPro.getNextProcesses();
             // 冷轧或箔轧前后辊不一样不能合并
-            boolean issameg = true;
+            /*boolean issameg = true;
             if(nextProcesses != null && nextProcesses.size()>0){
                 if(rootPro.getProZg() != null && nextProcesses.get(0).getProZg() != null){
                     if(rootPro.getProZg().equals(nextProcesses.get(0).getProZg())){
                         issameg = false;
                     }
                 }
-            }
+            }*/
             // 判断是否可合并
             boolean notMerge = true;
             // 后端工序只有一个,前道工序有多个不能合并
-            if(nextProcesses != null && nextProcesses.size()>0){
-                if(nextProcesses.size() == 1 && nextProcesses.get(0).getPreviousProcesses().size()>1){
+            if(rootPro.getPreviousProcesses() != null && rootPro.getPreviousProcesses().size()>0){
+                if(rootPro.getPreviousProcesses().size()>1){
                     notMerge = false;
                 }
             }
 
             if("否".equals(rootPro.getIssubsection()) && ("冷轧".equals(rootPro.getProcessType()) || "箔轧".equals(rootPro.getProcessType()))
-                    && !rootPro.getIfLock() && issameg && notMerge){
+                    && !rootPro.getIfLock()){
                 // 是否连续冷轧、箔轧
                 boolean hasSeries = false;
                 if(StrUtil.isNotBlank(seriesKey) && StrUtil.isNotBlank(protype) && protype.equals(rootPro.getProcessType())
-                        && (rootPro.getMinWaitTime() == null || rootPro.getMinWaitTime()<=0)){
+                        && (rootPro.getMinWaitTime() == null || rootPro.getMinWaitTime()<=0) && notMerge){
                     if(commonEqus != null && commonEqus.size()>0){
                         List<String> commonEqusNext = new ArrayList<>();
+                        Map<String,String> commonEquGsNext = new HashMap<>();
                         for (String optionalEquipment : rootPro.getOptionalEquipments()) {
-                            if(commonEqus.contains(optionalEquipment)){
+                            if(commonEqus.contains(optionalEquipment)
+                                    && commonEquGs.get(optionalEquipment).equals(rootPro.getOptionalEquipmentZg().get(optionalEquipment))){
                                 commonEqusNext.add(optionalEquipment);
+                                commonEquGsNext.put(optionalEquipment,commonEquGs.get(optionalEquipment));
                             }
                         }
                         if(commonEqusNext != null && commonEqusNext.size()>0){
                             hasSeries = true;
                             lzbzMerges.get(seriesKey).add(rootPro);
                             commonEqus = commonEqusNext;
+                            commonEquGs = commonEquGsNext;
                         }
                     }
                 }
@@ -865,19 +869,22 @@ public class DdApsServiceImpl implements DdApsService {
                         // 上下道工序共用的可选设备
                         commonEqus = new ArrayList<>();
                         commonEqus.addAll(rootPro.getOptionalEquipments());
+                        // 共用辊
+                        commonEquGs = new HashMap<>();
+                        commonEquGs.putAll(rootPro.getOptionalEquipmentZg());
                     }
                     for (ProductionProcesses nextProcess : nextProcesses) {
                         if(hasSeries){
-                            getLzBzSeries(nextProcess,lzbzMerges,seriesKey,rootPro.getProcessType(),commonEqus,hasMid);
+                            getLzBzSeries(nextProcess,lzbzMerges,seriesKey,rootPro.getProcessType(),commonEqus,commonEquGs,hasMid);
                         }else{
-                            getLzBzSeries(nextProcess,lzbzMerges,rootPro.getId(),rootPro.getProcessType(),commonEqus,hasMid);
+                            getLzBzSeries(nextProcess,lzbzMerges,rootPro.getId(),rootPro.getProcessType(),commonEqus,commonEquGs,hasMid);
                         }
                     }
                 }
             }else{
                 if(nextProcesses != null && nextProcesses.size()>0){
                     for (ProductionProcesses nextProcess : nextProcesses) {
-                        getLzBzSeries(nextProcess,lzbzMerges,null,null,null,hasMid);
+                        getLzBzSeries(nextProcess,lzbzMerges,null,null,null,null,hasMid);
                     }
                 }
             }

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

@@ -52,15 +52,15 @@ public class ProductionScheduleServiceImpl implements ProductionScheduleService
     @Override
     public ProductionScheduleRetVo productionSchedule(ProductionScheduleVo productionScheduleVo) throws Exception{
         List<String> blankids = new ArrayList<>();
-        blankids.add("b3212f4182214c7799891e118825d30e");
+        blankids.add("4f6c1750a44f4d86b0226788b761d709");
 //        blankids.add("2f3f48a1c3c74c0481ba06df521fe0d7");
 //        blankids.add("75736c469b1a42568af980260c0689a6");
 //        blankids.add("acf4460f9488459780c0dc7d8038f1f9");
 //        blankids.add("efeb1f8d01b04cdb9921c0d1711bb967");
-//        List<ProductionProcesses> collect = productionScheduleVo.getProcesses().stream().filter(v ->
-//                        blankids.contains(v.getProduceOrder().get(0).getId())
-//                ).collect(Collectors.toList());
-//        productionScheduleVo.setProcesses(collect);
+        List<ProductionProcesses> collect = productionScheduleVo.getProcesses().stream().filter(v ->
+                        blankids.contains(v.getProduceOrder().get(0).getId())
+                ).collect(Collectors.toList());
+        productionScheduleVo.setProcesses(collect);
 
         log.info("*************** 排程开始:"+productionScheduleVo.getProductionScheduleId()+" *******************");
         if(productionScheduleVo.getScheduleType().getScheduleType() == null){