fangpy před 10 měsíci
rodič
revize
827e0fc40e

+ 52 - 1
rw-aps-server/src/main/java/com/rongwei/rwapsserver/aps/service/impl/ApsServiceImpl.java

@@ -1406,6 +1406,32 @@ public class ApsServiceImpl implements ApsService {
             apsSolutionZz.setStartTime(apsSolution.getStartTime());
             apsSolutionZz.setEquipmentList(apsSolution.getEquipmentList());
             apsSolutionZz.setProcessesList(zzprocesList);
+            // 铸轧合并工序
+            List<ProductionProcesses> mergeZzs = new ArrayList<>();
+            Map<String, List<ProductionProcesses>> bsPros = zzprocesList.stream().collect(Collectors.groupingBy(ProductionProcesses::getUniqueBsProcessesId));
+            bsPros.forEach((k,v)->{
+                if(v.size()>1){
+                    if("铸轧".equals(v.get(0).getProcessType())){
+                        ProductionProcesses productionProcesses = v.get(0);
+                        List<String> mergeProOrders = new ArrayList<>();
+                        mergeProOrders.add(productionProcesses.getId());
+                        productionProcesses.setMergeProOrders(mergeProOrders);
+                        for (int i = 0; i < v.size(); i++) {
+                            if(i>0){
+                                productionProcesses.getMergeProOrders().add(v.get(i).getId());
+                                productionProcesses.setProduceTime(productionProcesses.getProduceTime()+v.get(i).getProduceTime());
+                                productionProcesses.setOpeProducePcNum(v.size());
+                            }
+                        }
+                        mergeZzs.add(productionProcesses);
+                    }else{
+                        mergeZzs.addAll(v);
+                    }
+                }else{
+                    mergeZzs.addAll(v);
+                }
+            });
+            apsSolutionZz.setProcessesList(mergeZzs);
 
             // 排程运行时长
             EnvironmentMode mode = EnvironmentMode.REPRODUCIBLE;
@@ -1449,7 +1475,8 @@ public class ApsServiceImpl implements ApsService {
 
             for (ProductionProcesses process : apsSolution.getProcessesList()) {
                 if(process.getProcessType().equals("铸轧") || (process.getPreviousProcessesIds() == null || process.getPreviousProcessesIds().size() == 0)){
-                    List<ProductionProcesses> collect = solvedBalance1.getProcessesList().stream().filter(v -> v.getId().equals(process.getId())).collect(Collectors.toList());
+                    List<ProductionProcesses> collect = solvedBalance1.getProcessesList().stream().filter(v ->
+                            v.getId().equals(process.getId()) && (v.getMergeProOrders() == null || v.getMergeProOrders().size() == 0)).collect(Collectors.toList());
                     if(collect != null && collect.size()>0){
                         process.setStartTime(collect.get(0).getStartTime());
                         process.setEndTime(collect.get(0).getEndTime());
@@ -1460,6 +1487,30 @@ public class ApsServiceImpl implements ApsService {
                     }
                 }
             }
+            List<ProductionProcesses> mergeZzLists = solvedBalance1.getProcessesList().stream().filter(v ->v.getMergeProOrders() != null && v.getMergeProOrders().size() > 0).collect(Collectors.toList());
+            if(mergeZzLists != null && mergeZzLists.size() > 0){
+                for (ProductionProcesses mergeZz : mergeZzLists) {
+                    List<String> mergeProOrders = mergeZz.getMergeProOrders();
+                    boolean hasreplacenextLock = false;
+                    for (int i = mergeProOrders.size()-1; i >= 0; i--) {
+                        ProductionProcesses po = null;
+                        for (ProductionProcesses productionProcesses : apsSolution.getProcessesList()) {
+                            if(productionProcesses.getId().equals(mergeProOrders.get(i))){
+                                po = productionProcesses;
+                                break;
+                            }
+                        }
+                        po.setStartTime(mergeZz.getEndTime().minusMinutes(po.getUnitProduceTime()));
+                        po.setEndTime(mergeZz.getEndTime());
+                        po.setEquipmentId(mergeZz.getEquipmentId());
+                        po.setEquipment(mergeZz.getEquipment());
+                        po.setDelay(mergeZz.getDelay());
+                        po.setIfLock(true);
+                        mergeZz.setProduceTime(mergeZz.getProduceTime()-po.getUnitProduceTime());
+                        mergeZz.setEndTime(mergeZz.getEndTime().minusMinutes(po.getUnitProduceTime()));
+                    }
+                }
+            }
         }
         return null;
     }