Prechádzať zdrojové kódy

调度冷轧连续排程优化、以及铸轧重叠bug修改

fangpy 5 mesiacov pred
rodič
commit
40468d3b82

+ 8 - 0
rw-aps-server/src/main/java/com/rongwei/rwapsserver/aps/domain/CommonJavaBean.java

@@ -13,6 +13,14 @@ public class CommonJavaBean {
      */
     private BigDecimal maxVolumeWidth;
 
+    /**
+     * 合金
+     */
+    private String volumeMetal;
+
+    // 产品类型
+    private String producttype;
+
     /**
      * 坯料计划ID
      */

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

@@ -410,11 +410,26 @@ public class ProductionScheduleServiceImpl implements ProductionScheduleService
                         List<String> processesListid1 = processesList1.get(0).getProduceOrder().stream().map(ProduceOrder::getId).distinct().collect(Collectors.toList());
                         CommonJavaBean commonJavaBean = new CommonJavaBean();
                         commonJavaBean.setMaxVolumeWidth(processesList1.get(0).getVolumeWidth());
+                        commonJavaBean.setVolumeMetal(processesList1.get(0).getVolumeMetal());
+                        commonJavaBean.setProducttype(processesList1.get(0).getProducttype());
                         commonJavaBean.setPps(processesList1);
                         commonJavaBean.setOrderids(processesListid1);
                         lastPros.add(commonJavaBean);
                     }
-                    Collections.sort(lastPros, (pro1, pro2) -> {return pro2.getMaxVolumeWidth().compareTo(pro1.getMaxVolumeWidth());});
+                    // 先按照宽度排序再按照合金排序再按照产品类型排序
+                    Collections.sort(lastPros, (pro1, pro2) -> {
+                        int a = 0;
+                        if(pro2.getMaxVolumeWidth().compareTo(pro1.getMaxVolumeWidth()) == 0){
+                            if(pro2.getVolumeMetal().compareTo(pro1.getVolumeMetal()) == 0){
+                                a = pro2.getProducttype().compareTo(pro1.getProducttype());
+                            }else{
+                                a = pro2.getVolumeMetal().compareTo(pro1.getVolumeMetal());
+                            }
+                        }else{
+                            a = pro2.getMaxVolumeWidth().compareTo(pro1.getMaxVolumeWidth());
+                        }
+                        return a;
+                    });
 
                     for(CommonJavaBean lastPro : lastPros){
                         String k = lastPro.getOrderids().get(0);
@@ -1452,7 +1467,7 @@ public class ProductionScheduleServiceImpl implements ProductionScheduleService
                 process.setCutfinishmin(0);
             }
             // 锁定工序处理
-            if(process.getIfLock() && process.getOptionalProviderEquipments().size()>0){
+            /*if(process.getIfLock() && process.getOptionalProviderEquipments().size()>0){
                 process.setIfLock(false);
                 int ai = -1;
                 if(process.getOptionalProviderEquipments().get(0).getEquipmentRunTimes() != null
@@ -1470,7 +1485,7 @@ public class ProductionScheduleServiceImpl implements ProductionScheduleService
                 // 锁定工序的设备即可选设备
                 process.setEquipment(process.getOptionalProviderEquipments().get(0));
                 process.setIfLock(true);
-            }
+            }*/
             // 特殊冲突约束Map初始化
             process.setConflictRoptions(new ConcurrentHashMap<>());
             // 唯一作业ID设值