Pārlūkot izejas kodu

Merge remote-tracking branch 'origin/mode-th-merge' into mode-th-merge-01

# Conflicts:
#	rw-aps-server/src/main/java/com/rongwei/rwapsserver/aps/service/impl/ApsServiceImpl.java
fangpy 9 mēneši atpakaļ
vecāks
revīzija
e51ec14279

+ 1 - 1
rw-aps-server/src/main/java/com/rongwei/rwapsserver/aps/domain/ProductionProcesses.java

@@ -425,7 +425,7 @@ public class ProductionProcesses implements Serializable {
             if(this.processType.equals("成退") || this.processType.equals("中退") || this.processType.equals("小卷成退")){
                 maxDelay = 300;
             }else if(this.processType.equals("铸轧")){
-                maxDelay = 2000;
+                maxDelay = 5000;
             } else if (this.processType.equals("冷轧")) {
                 maxDelay = 2000;
             }else if (this.processType.equals("箔轧")) {

+ 1 - 1
rw-aps-server/src/main/java/com/rongwei/rwapsserver/aps/listener/TaskStartTimeListener.java

@@ -93,7 +93,7 @@ public class TaskStartTimeListener implements VariableListener<ApsSolution, Prod
                 if(process.getProcessType().equals("成退") || process.getProcessType().equals("中退") || process.getProcessType().equals("小卷成退")){
                     startDateTime = startDateTime.plusMinutes(process.getDelay() * 60);
                 } else if (process.getProcessType().equals("铸轧")) {
-                    startDateTime = startDateTime.plusMinutes(process.getDelay() * 60);
+                    startDateTime = startDateTime.plusMinutes(process.getDelay() * 10);
                 } else if (process.getProcessType().equals("冷轧")) {
                     startDateTime = startDateTime.plusMinutes(process.getDelay() * 10);
                 } else{

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

@@ -1715,6 +1715,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;
@@ -1758,7 +1784,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());
@@ -1769,6 +1796,32 @@ 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);
+                        po.setOpeProducePcNum(1);
+                        mergeZz.setProduceTime(mergeZz.getProduceTime()-po.getUnitProduceTime());
+                        mergeZz.setEndTime(mergeZz.getEndTime().minusMinutes(po.getUnitProduceTime()));
+                        mergeZz.setOpeProducePcNum(1);
+                    }
+                }
+            }
         }
         return null;
     }