Browse Source

提前退火优化

fangpy 5 months ago
parent
commit
ccbde1e630

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

@@ -335,39 +335,76 @@ public class ApsServiceImpl implements ApsService {
         Solver<ApsSolution> solver1 = solverFactory1.buildSolver();
         // 按照宽度排序
 //        apsSolutionTh.getProcessesList().sort(Comparator.comparing(ProductionProcesses::getSeriesProduceMark));
-        Collections.sort(apsSolutionTh.getProcessesList(),(v1,v2)->{
-            int a = 0;
-            // 合金
-            String alloy1 = v1.getVolumeMetal();
-            String alloy2 = v2.getVolumeMetal();
-            // 合金状态
-            String alloystatus1 = v1.getVolumeMetalstate();
-            String alloystatus2 = v2.getVolumeMetalstate();
-            // 宽度
-            BigDecimal prowidth1 = v1.getVolumeWidth();
-            BigDecimal prowidth2 = v2.getVolumeWidth();
-            if(prowidth1.compareTo(prowidth2) == 0){
+        if("dd".equals(productionScheduleVo.getScheduleType().getScheduleType())){
+            Collections.sort(apsSolutionTh.getProcessesList(),(v1,v2)->{
+                int a = 0;
                 // 合金
-                if(alloy1.compareTo(alloy2) == 0){
-                    // 合金状态
-                    if(alloystatus1 == null || alloystatus2 == null || alloystatus1.compareTo(alloystatus2) == 0){
-                        if(v1.getApsOverallConfig().getStartTime().compareTo(v2.getApsOverallConfig().getStartTime()) == 0){
+                String alloy1 = v1.getVolumeMetal();
+                String alloy2 = v2.getVolumeMetal();
+                // 合金状态
+                String alloystatus1 = v1.getVolumeMetalstate();
+                String alloystatus2 = v2.getVolumeMetalstate();
+                // 宽度
+                BigDecimal prowidth1 = v1.getVolumeWidth();
+                BigDecimal prowidth2 = v2.getVolumeWidth();
+                /*if(prowidth1.compareTo(prowidth2) == 0){*/
+                    // 合金
+                    if(alloy1.compareTo(alloy2) == 0){
+                        // 合金状态
+                        if(alloystatus1 == null || alloystatus2 == null || alloystatus1.compareTo(alloystatus2) == 0){
+                            if(v1.getApsOverallConfig().getStartTime().compareTo(v2.getApsOverallConfig().getStartTime()) == 0){
+                                a = v2.getVolumeWidth().compareTo(v1.getVolumeWidth());
+//                                a = 0;
+                            }else{
+                                a = v2.getApsOverallConfig().getStartTime().compareTo(v1.getApsOverallConfig().getStartTime());
+                            }
+                        }else{
+                            a = alloystatus1.compareTo(alloystatus2);
+                        }
+                    }else{
+                        a = alloy1.compareTo(alloy2);
+                    }
+                /*}else{
+                    a = prowidth2.compareTo(prowidth1);
+                }*/
+                return a;
+            });
+        }else{
+            Collections.sort(apsSolutionTh.getProcessesList(),(v1,v2)->{
+                int a = 0;
+                // 合金
+                String alloy1 = v1.getVolumeMetal();
+                String alloy2 = v2.getVolumeMetal();
+                // 合金状态
+                String alloystatus1 = v1.getVolumeMetalstate();
+                String alloystatus2 = v2.getVolumeMetalstate();
+                // 宽度
+                BigDecimal prowidth1 = v1.getVolumeWidth();
+                BigDecimal prowidth2 = v2.getVolumeWidth();
+                if(prowidth1.compareTo(prowidth2) == 0){
+                    // 合金
+                    if(alloy1.compareTo(alloy2) == 0){
+                        // 合金状态
+                        if(alloystatus1 == null || alloystatus2 == null || alloystatus1.compareTo(alloystatus2) == 0){
+                            if(v1.getApsOverallConfig().getStartTime().compareTo(v2.getApsOverallConfig().getStartTime()) == 0){
 //                            a = v2.getVolumeWidth().compareTo(v1.getVolumeWidth());
-                            a = 0;
+                                a = 0;
+                            }else{
+                                a = v2.getApsOverallConfig().getStartTime().compareTo(v1.getApsOverallConfig().getStartTime());
+                            }
                         }else{
-                            a = v2.getApsOverallConfig().getStartTime().compareTo(v1.getApsOverallConfig().getStartTime());
+                            a = alloystatus1.compareTo(alloystatus2);
                         }
                     }else{
-                        a = alloystatus1.compareTo(alloystatus2);
+                        a = alloy1.compareTo(alloy2);
                     }
                 }else{
-                    a = alloy1.compareTo(alloy2);
+                    a = prowidth2.compareTo(prowidth1);
                 }
-            }else{
-                a = prowidth2.compareTo(prowidth1);
-            }
-            return a;
-        });
+                return a;
+            });
+        }
+
         ApsSolution solvedBalance1 = solver1.solve(apsSolutionTh);
         /*for (ProductionProcesses productionProcesses : solvedBalance1.getProcessesList()) {
             DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");