ソースを参照

调度排程优化

fangpy 5 ヶ月 前
コミット
c5e17c6c85

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

@@ -1656,10 +1656,12 @@ public class ApsServiceImpl implements ApsService {
                     && !nextProcesses.get(0).getProcessType().equals("中退") && !nextProcesses.get(0).getProcessType().equals("小卷成退")
 //                    && nextProcesses.get(0).getPreviousProcessesIds() != null && nextProcesses.get(0).getPreviousProcessesIds().size()>0
             ){
+                // 判断是否存在锁定工序
+                List<ProductionProcesses> lockpps = nextProcesses.stream().filter(v -> v.getIfLock()).collect(Collectors.toList());
                 // 分卷工序
                 if(("是".equals(nextProcesses.get(0).getIssubsection()) && nextProcesses.get(0).getNextProcesses() != null && nextProcesses.get(0).getNextProcesses().size()>0
                         && !nextProcesses.get(0).getNextProcesses().get(0).getProcessType().equals("小卷成退"))
-                        || nextProcesses.get(0).getIfLock()){
+                        || (lockpps != null && lockpps.size()>0)){
                     for (ProductionProcesses nextProcess : nextProcesses) {
                         List<ProductionProcesses> pres = new ArrayList<>();
                         List<String> preids = new ArrayList<>();
@@ -1679,6 +1681,15 @@ public class ApsServiceImpl implements ApsService {
                             hasMerge.addAll(proids);
                         }
                     }
+                    // 判断合并后待排程的列表是否存在当前作业明细,不存在则新增
+                    if(nextProcesses != null && nextProcesses.size()>0){
+                        for (ProductionProcesses nextProcess : nextProcesses) {
+                            List<ProductionProcesses> pps = mergeprocesses.stream().filter(v -> v.getId().equals(nextProcess.getId())).collect(Collectors.toList());
+                            if(pps == null || pps.size() == 0){
+                                mergeprocesses.add(nextProcess);
+                            }
+                        }
+                    }
                 }else{
                     List<ProductionProcesses> mergePres = new ArrayList<>();
                     mergePres.addAll(nextProcesses);
@@ -1760,12 +1771,18 @@ public class ApsServiceImpl implements ApsService {
     private void thPreProMerge(ProductionProcesses thps,List<ProductionProcesses> notMergeProces,List<ProductionProcesses> mergeprocesses
             ,Map<String,List<ProductionProcesses>> bsProceses,List<String> hasMerge,Map<String,ProductionProcesses> allProMap,List<ProductionProcesses> thNexts){
         List<ProductionProcesses> previousProcesses = thps.getPreviousProcesses();
+
+        List<ProductionProcesses> pretestids = previousProcesses.stream().filter(v -> v.getId().equals("f24555b13a0349938e9fd72814c66199")).collect(Collectors.toList());
+        if(pretestids != null && pretestids.size()>0){
+            int a = 1;
+        }
         if(previousProcesses != null && previousProcesses.size()>0){
             // 铸轧、退火、和第一道工序不合并
             if(!previousProcesses.get(0).getProcessType().equals("铸轧") && !previousProcesses.get(0).getProcessType().equals("成退")
                     && !previousProcesses.get(0).getProcessType().equals("中退") && !previousProcesses.get(0).getProcessType().equals("小卷成退")
 //                    && previousProcesses.get(0).getPreviousProcessesIds() != null && previousProcesses.get(0).getPreviousProcessesIds().size()>0
             ){
+                //判断是否存在小卷成退其它的工序
                 boolean hasnotxjct = false;
                 if(previousProcesses.get(0).getNextProcesses() != null && previousProcesses.get(0).getNextProcesses().size()>0){
                     for (ProductionProcesses nextProcess : previousProcesses.get(0).getNextProcesses()) {
@@ -1775,8 +1792,10 @@ public class ApsServiceImpl implements ApsService {
                         }
                     }
                 }
+                // 判断是否存在锁定工序
+                List<ProductionProcesses> lockpps = previousProcesses.stream().filter(v -> v.getIfLock()).collect(Collectors.toList());
                 // 分卷工序
-                if(("是".equals(previousProcesses.get(0).getIssubsection()) && hasnotxjct) || previousProcesses.get(0).getIfLock()){
+                if(("是".equals(previousProcesses.get(0).getIssubsection()) && hasnotxjct) || (lockpps != null && lockpps.size()>0)){
                     for (ProductionProcesses preProcess : previousProcesses) {
                         List<ProductionProcesses> nexts = new ArrayList<>();
                         if(preProcess.getNextProcesses().size()>1){
@@ -1804,6 +1823,15 @@ public class ApsServiceImpl implements ApsService {
                             hasMerge.addAll(proids);
                         }
                     }
+                    // 判断合并后待排程的列表是否存在当前作业明细,不存在则新增
+                    if(previousProcesses != null && previousProcesses.size()>0){
+                        for (ProductionProcesses previousProcess : previousProcesses) {
+                            List<ProductionProcesses> pps = mergeprocesses.stream().filter(v -> v.getId().equals(previousProcess.getId())).collect(Collectors.toList());
+                            if(pps == null || pps.size() == 0){
+                                mergeprocesses.add(previousProcess);
+                            }
+                        }
+                    }
                 }else{
                     List<ProductionProcesses> mergePres = new ArrayList<>();
                     mergePres.addAll(previousProcesses);