Bläddra i källkod

APS平台新模型排序优化

fangpy 1 år sedan
förälder
incheckning
90e2f0eb59

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

@@ -186,6 +186,11 @@ public class ProductionProcesses extends Step{
      */
     private String inputMaterials;
 
+    /**
+     * 排序标识
+     */
+    private Integer orderMark;
+
     public String getEquipmentType() {
         return equipmentType;
     }
@@ -466,4 +471,12 @@ public class ProductionProcesses extends Step{
     public void setInputMaterials(String inputMaterials) {
         this.inputMaterials = inputMaterials;
     }
+
+    public Integer getOrderMark() {
+        return orderMark;
+    }
+
+    public void setOrderMark(Integer orderMark) {
+        this.orderMark = orderMark;
+    }
 }

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

@@ -141,6 +141,10 @@ public class TaskStartTimeListener implements VariableListener<ApsSolution, Prod
                     LocalDateTime lastMaxStartTime = null;
                     LocalDateTime lastMinMaxWaitTime = null;
                     for (ProductionProcesses previousProcess : process.getPreviousProcesses()) {
+                        if(previousProcess.getEquipment() == null){
+                            System.out.println("previousProcess.getEquipment() == null:"+process.getId());
+                            continue;
+                        }
                         // 流转时间
                         Integer lzTimes = 0;
                         if(previousProcess.getEquipment().getWorkshopid() != null && previousProcess.getEquipment().getWorkshopid().equals(process.getEquipment().getWorkshopid())){

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

@@ -149,9 +149,12 @@ public class ProductionScheduleServiceImpl implements ProductionScheduleService
         // 设备列表初始化
         unsolvedCloudBalance.setEquipmentList(productionScheduleVo.getEquipmentList());
 
-        List<ProductionProcesses> productionProcesses = sortProcess(productionScheduleVo.getProcesses());
+        /*List<ProductionProcesses> productionProcesses = sortProcess(productionScheduleVo.getProcesses());
         // 工序任务初始化
-        unsolvedCloudBalance.setProcessesList(productionProcesses);
+        unsolvedCloudBalance.setProcessesList(productionProcesses);*/
+
+        sortProcess(productionScheduleVo.getProcesses());
+        unsolvedCloudBalance.setProcessesList(productionScheduleVo.getProcesses());
         return unsolvedCloudBalance;
     }
 
@@ -169,12 +172,20 @@ public class ProductionScheduleServiceImpl implements ProductionScheduleService
                 roots.add(productionProcesses);
             }
         }
+        // 订单作业列表
+        Map<String,List<ProductionProcesses>> orderMap = new HashMap<>();
         for (ProductionProcesses root : roots) {
+            Integer i = 1;
+            root.setOrderMark(i);
+            setProcessSort(root,i);
+        }
+        sources.sort(Comparator.comparing(ProductionProcesses::getOrderMark));
+
+        /*for (ProductionProcesses root : roots) {
             List<Integer> repeatPro = new ArrayList<>();
             Map<Integer,Integer> repeatProMap = new HashMap<>();
             List<ProductionProcesses> subprocesses = new ArrayList<>();
             subprocesses.add(root);
-//            bsIds.add(root.getBsProcessesId());
             getNextProcess(root,subprocesses,repeatPro,processes,repeatProMap);
 
             if(repeatPro != null && repeatPro.size()>0){
@@ -188,20 +199,31 @@ public class ProductionScheduleServiceImpl implements ProductionScheduleService
                             processes.add(repeatProMap.get(integer),subprocesses.get(i));
                         }
                     }
-                    // 最后一个把所有后面的工序插入到总工序列表后面
-                    /*if(integer.equals(repeatPro.get(repeatPro.size() - 1))){
-                        for(int i=integer+1;i<subprocesses.size();i++){
-                            processes.add(subprocesses.get(i));
-                        }
-                    }*/
                 }
             }else{
                 processes.addAll(subprocesses);
             }
-        }
+        }*/
         return processes;
     }
 
+    private void setProcessSort(ProductionProcesses proces,Integer i){
+        i++;
+        if(proces.getNextProcesses() != null && proces.getNextProcesses().size()>0){
+            for (ProductionProcesses nextProcess : proces.getNextProcesses()) {
+                if(nextProcess.getOrderMark() != null && nextProcess.getOrderMark()>0){
+                    if(i>nextProcess.getOrderMark()){
+                        nextProcess.setOrderMark(i);
+                        setProcessSort(nextProcess,i);
+                    }
+                }else{
+                    nextProcess.setOrderMark(i);
+                    setProcessSort(nextProcess,i);
+                }
+            }
+        }
+    }
+
     private void getNextProcess(ProductionProcesses proces,List<ProductionProcesses> subprocesses,
                                 List<Integer> repeatPro,List<ProductionProcesses> processes,Map<Integer,Integer> repeatProMap){
         if(proces.getNextProcesses() != null && proces.getNextProcesses().size()>0){