fangpy vor 11 Monaten
Ursprung
Commit
609310893a

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

@@ -502,7 +502,8 @@ public class TaskStartTimeListener implements VariableListener<ApsSolution, Prod
             Integer lzTimes = 0;
             if(preProcess != null){
                 if(preProcess.getEquipment() == null){
-                    System.out.println(preProcess.getId());
+                    System.out.println("preProcess:"+preProcess.getId());
+                    System.out.println("process:"+process.getId());
                 }
                 if(preProcess.getEquipment().getWorkshopid() != null && preProcess.getEquipment().getWorkshopid().equals(process.getEquipment().getWorkshopid())){
                     lzTimes = process.getApsOverallConfig().getRoamTime().get("WORKSHOP_IN");

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

@@ -387,11 +387,14 @@ public class ApsServiceImpl implements ApsService {
                 }
                 allProMap.put(mergeprocess.getId(),mergeprocess);
             }
+            // 两次退火卷数不一样、退火后道工序需要特殊处理
+            List<ProductionProcesses> thNexts = new ArrayList<>();
+
             // 根据退火合并作业
             if(thpros != null && thpros.size()>0){
                 for (ProductionProcesses thpro : thpros) {
                     // 退火作业往前合并
-                    thPreProMerge(thpro,notMergeProces,othermergeprocesses,bsProceses,hasMerge,allProMap);
+                    thPreProMerge(thpro,notMergeProces,othermergeprocesses,bsProceses,hasMerge,allProMap,thNexts);
                 }
                 for (ProductionProcesses thpro : thpros) {
                     // 退火作业往后合并
@@ -532,6 +535,42 @@ public class ApsServiceImpl implements ApsService {
                 });
             }
 
+            // 退火下道工序处理
+            if(thNexts != null && thNexts.size()>0){
+                for (ProductionProcesses thNext : thNexts) {
+                    // 当前退火工序
+                    for (ProductionProcesses previousProcess : thNext.getPreviousProcesses()) {
+                        // 退火下道工序
+                        List<ProductionProcesses> thNextpros = new ArrayList<>();
+                        // 遍历下一道工序重置当前退火工序和下道工序工序关联关系
+                        for (ProductionProcesses nextProcess : previousProcess.getNextProcesses()) {
+                            for (ProductionProcesses thNext1 : thNexts) {
+                                boolean ifnextpro = false;
+                                if(thNext1.getMergeProOrders() != null && thNext1.getMergeProOrders().size()>0){
+                                    if(thNext1.getMergeProOrders().contains(nextProcess.getId())){
+                                        ifnextpro = true;
+                                    }
+                                }else{
+                                    if(nextProcess.getId().equals(thNext1.getId())){
+                                        ifnextpro = true;
+                                    }
+                                }
+                                if(ifnextpro){
+                                    List<ProductionProcesses> haspros = thNextpros.stream().filter(v -> v.getId().equals(thNext1.getId())).collect(Collectors.toList());
+                                    if(haspros == null || haspros.size() == 0){
+                                        thNextpros.add(thNext1);
+                                    }
+                                }
+                            }
+                        }
+                        if(thNextpros != null && thNextpros.size()>0){
+                            List<String> nextproids = thNextpros.stream().map(ProductionProcesses::getId).collect(Collectors.toList());
+                            previousProcess.setNextProcesses(thNextpros);
+                            previousProcess.setNextProcessesIds(nextproids);
+                        }
+                    }
+                }
+            }
             otherThproces.addAll(notMergeProces);
             lzmergeprocesses.addAll(othermergeprocesses);
         });
@@ -556,7 +595,7 @@ public class ApsServiceImpl implements ApsService {
 //                    && nextProcesses.get(0).getPreviousProcessesIds() != null && nextProcesses.get(0).getPreviousProcessesIds().size()>0
             ){
                 // 分卷工序
-                if("是".equals(nextProcesses.get(0).getIssubsection())){
+                if("是".equals(nextProcesses.get(0).getIssubsection()) || nextProcesses.get(0).getIfLock()){
                     for (ProductionProcesses nextProcess : nextProcesses) {
                         List<ProductionProcesses> pres = new ArrayList<>();
                         List<String> preids = new ArrayList<>();
@@ -651,7 +690,7 @@ public class ApsServiceImpl implements ApsService {
      * @param hasMerge 已参与合并的作业ID(单卷作业ID)
      */
     private void thPreProMerge(ProductionProcesses thps,List<ProductionProcesses> notMergeProces,List<ProductionProcesses> mergeprocesses
-            ,Map<String,List<ProductionProcesses>> bsProceses,List<String> hasMerge,Map<String,ProductionProcesses> allProMap){
+            ,Map<String,List<ProductionProcesses>> bsProceses,List<String> hasMerge,Map<String,ProductionProcesses> allProMap,List<ProductionProcesses> thNexts){
         List<ProductionProcesses> previousProcesses = thps.getPreviousProcesses();
         if(previousProcesses != null && previousProcesses.size()>0){
             // 铸轧、退火、和第一道工序不合并
@@ -660,7 +699,7 @@ public class ApsServiceImpl implements ApsService {
 //                    && previousProcesses.get(0).getPreviousProcessesIds() != null && previousProcesses.get(0).getPreviousProcessesIds().size()>0
             ){
                 // 分卷工序
-                if("是".equals(previousProcesses.get(0).getIssubsection())){
+                if("是".equals(previousProcesses.get(0).getIssubsection()) || previousProcesses.get(0).getIfLock()){
                     for (ProductionProcesses preProcess : previousProcesses) {
                         List<ProductionProcesses> nexts = new ArrayList<>();
                         if(preProcess.getNextProcesses().size()>1){
@@ -682,7 +721,7 @@ public class ApsServiceImpl implements ApsService {
                         // 如果未合并则合并,并记录已合并的作业
                         if(!hasMerge.contains(processesList.get(0).getId())){
                             // 分卷的工序从此到工序的上一道工序开始合并,默认4卷
-                            fjMerge(processesList.get(0).getUniqueBsProcessesId(),notMergeProces,mergeprocesses,bsProceses,hasMerge,allProMap);
+                            fjMerge(processesList.get(0).getUniqueBsProcessesId(),notMergeProces,mergeprocesses,bsProceses,hasMerge,allProMap,thNexts);
                             // 记录合并作业ID
                             List<String> proids = processesList.stream().map(ProductionProcesses::getId).collect(Collectors.toList());
                             hasMerge.addAll(proids);
@@ -747,7 +786,7 @@ public class ApsServiceImpl implements ApsService {
                             hasMerge.addAll(proids);
                         }
                         // 递归按照退火合并
-                        thPreProMerge(mergePro,notMergeProces,mergeprocesses,bsProceses,hasMerge,allProMap);
+                        thPreProMerge(mergePro,notMergeProces,mergeprocesses,bsProceses,hasMerge,allProMap,thNexts);
                     }
                 }
             }else{
@@ -761,6 +800,8 @@ public class ApsServiceImpl implements ApsService {
                         previousProcess.setNextProcesses(nextpss);
                         previousProcess.setNextProcessesIds(nextids);
                     }
+                }else{
+                    thNexts.add(thps);
                 }
             }
         }
@@ -776,17 +817,17 @@ public class ApsServiceImpl implements ApsService {
      * @param allProMap
      */
     private void fjMerge(String bsprocessid,List<ProductionProcesses> notMergeProces,List<ProductionProcesses> mergeprocesses
-            ,Map<String,List<ProductionProcesses>> bsProceses,List<String> hasMerge,Map<String,ProductionProcesses> allProMap){
+            ,Map<String,List<ProductionProcesses>> bsProceses,List<String> hasMerge,Map<String,ProductionProcesses> allProMap,List<ProductionProcesses> thNexts){
         List<ProductionProcesses> processesList = bsProceses.get(bsprocessid);
         // 铸轧、退火、和第一道工序不合并
         if(!processesList.get(0).getProcessType().equals("铸轧") && !processesList.get(0).getProcessType().equals("成退")
                 && !processesList.get(0).getProcessType().equals("中退") && !processesList.get(0).getProcessType().equals("小卷成退")
 //                && processesList.get(0).getPreviousProcessesIds() != null && processesList.get(0).getPreviousProcessesIds().size()>0
         ){
-            if("是".equals(processesList.get(0).getIssubsection())){
+            if("是".equals(processesList.get(0).getIssubsection()) || processesList.get(0).getIfLock()){
                 if(processesList.get(0).getPreviousProcesses() != null && processesList.get(0).getPreviousProcesses().size()>0){
                     String uniqueBsProcessesId = processesList.get(0).getPreviousProcesses().get(0).getUniqueBsProcessesId();
-                    fjMerge(uniqueBsProcessesId,notMergeProces,mergeprocesses,bsProceses,hasMerge,allProMap);
+                    fjMerge(uniqueBsProcessesId,notMergeProces,mergeprocesses,bsProceses,hasMerge,allProMap,thNexts);
                 }
             }else{
                 if(processesList != null && processesList.size()>0){
@@ -896,7 +937,7 @@ public class ApsServiceImpl implements ApsService {
                     // 递归合并分卷前的作业
                     if(pres != null && pres.size()>0){
                         for (ProductionProcesses pre : pres) {
-                            thPreProMerge(pre,notMergeProces,mergeprocesses,bsProceses,hasMerge,allProMap);
+                            thPreProMerge(pre,notMergeProces,mergeprocesses,bsProceses,hasMerge,allProMap,thNexts);
                         }
                         /*String uniqueBsProcessesId = processesList.get(0).getPreviousProcesses().get(0).getUniqueBsProcessesId();
                         fjMerge(uniqueBsProcessesId,notMergeProces,mergeprocesses,bsProceses,hasMerge,allProMap);*/
@@ -935,7 +976,7 @@ public class ApsServiceImpl implements ApsService {
                 && !processesList.get(0).getProcessType().equals("中退") && !processesList.get(0).getProcessType().equals("小卷成退")
 //                && processesList.get(0).getPreviousProcessesIds() != null && processesList.get(0).getPreviousProcessesIds().size()>0
         ){
-            if("是".equals(processesList.get(0).getIssubsection())){
+            if("是".equals(processesList.get(0).getIssubsection()) || processesList.get(0).getIfLock()){
                 if(nextbsids != null && nextbsids.size()>0){
                     for (String nextbsid : nextbsids) {
                         fjNextMerge(nextbsid,notMergeProces,mergeprocesses,bsProceses,hasMerge,allProMap);