Jelajahi Sumber

排程模型转换优化

fangpy 1 tahun lalu
induk
melakukan
dcbfab87d5

+ 15 - 7
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsBlankOrderServiceImpl.java

@@ -506,6 +506,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                     apsProcessOperationProcessEqu.setConflictdes(process.getConflictDes());
                     apsProcessOperationProcessEqu.setSoftconflictdes(process.getSoftconflictdes());
                     apsProcessOperationProcessEqu.setDeleted("0");
+                    apsProcessOperationProcessEqu.setUnfinishroll(process.getProducePcNum());
                     apsProcessOperationProcessEquDos.add(apsProcessOperationProcessEqu);
                 }
                 // 合并生产工序
@@ -538,6 +539,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                         apsProcessOperationProcessEqu.setConflictdes(process.getConflictDes());
                         apsProcessOperationProcessEqu.setSoftconflictdes(process.getSoftconflictdes());
                         apsProcessOperationProcessEqu.setDeleted("0");
+                        apsProcessOperationProcessEqu.setUnfinishroll(v.size());
                         apsProcessOperationProcessEquDos.add(apsProcessOperationProcessEqu);
                     });
                 }
@@ -641,7 +643,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
             Map<String, Integer> roamTime = new HashMap<>();
             Integer workshopin = new BigDecimal(apsScheduleConfig.getWorkshopin()).multiply((looseness.divide(new BigDecimal("100"))).add(new BigDecimal("1")))
                     .setScale(0, RoundingMode.CEILING).intValue();
-            Integer workshopcross = new BigDecimal(apsScheduleConfig.getWorkshopin()).multiply((looseness.divide(new BigDecimal("100"))).add(new BigDecimal("1")))
+            Integer workshopcross = new BigDecimal(apsScheduleConfig.getWorkshopcross()).multiply((looseness.divide(new BigDecimal("100"))).add(new BigDecimal("1")))
                     .setScale(0, RoundingMode.CEILING).intValue();
             roamTime.put("WORKSHOP_IN", workshopin);
             roamTime.put("WORKSHOP_CROSS", workshopcross);
@@ -712,15 +714,17 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                                             .orderByAsc(ApsProcessOperationProcessEquDo::getPlanstartdate)
                                     );
                                     // 查询当前设备最后一个生产任务、连续生产需要考虑使用
-                                    List<ApsProcessOperationProcessEquDo> processLastEqus = processOperationProcessEquService.list(new LambdaQueryWrapper<ApsProcessOperationProcessEquDo>()
+                                    List<ApsProcessOperationProcessEquDo> lastpros = processOperationProcessEquService.list(new LambdaQueryWrapper<ApsProcessOperationProcessEquDo>()
                                             .eq(ApsProcessOperationProcessEquDo::getProcessdeviceid, equIds)
                                             .gt(ApsProcessOperationProcessEquDo::getPlanstartdate, productionScheduleVo.getApsPlanStartDate())
-                                            .orderByAsc(ApsProcessOperationProcessEquDo::getPlanstartdate)
+                                            .orderByDesc(ApsProcessOperationProcessEquDo::getPlanstartdate)
                                     );
-                                    if (processLastEqus != null && processLastEqus.size() > 0) {
-                                        ApsProcessOperationProcessEquDo lastpro = processLastEqus.get(processLastEqus.size() - 1);
+                                    if(lastpros != null && lastpros.size()>0){
+                                        ApsProcessOperationProcessEquDo lastpro = lastpros.get(0);
                                         ApsProcessOperationDo lastop = apsProcessOperationService.getById(lastpro.getProcessid());
                                         equipment.setLastProcessType(lastop.getProcess());
+                                        equipment.setLastProcessEndTime(lastpro.getPlanenddate());
+                                        equipment.setLastProcessCutfinishmin(lastop.getCutfinishmin() == null ? null : lastop.getCutfinishmin().intValue());
                                         // 铸轧
                                         if ("铸轧".equals(lastop.getProcess())) {
                                             // 合金+宽度
@@ -731,6 +735,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                                             // 合金+输入物料+宽度
                                             equipment.setLastSeriesProduceMark(lastop.getMetal() + "^_^" + lastop.getPlaninput() + "^_^" + lastop.getProwidth());
                                         }
+                                        equipment.setLastProcessCutfinishmin(lastop.getCutfinishmin() == null ? null : lastop.getCutfinishmin().intValue());
                                     }
                                     // 查询相关工序作业
                                     Set<String> processIds = new HashSet<>();
@@ -749,7 +754,6 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                                             EquipmentRunTime er = new EquipmentRunTime();
                                             er.setStartRunTime(equs.getPlanstartdate().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
                                             er.setEndRunTime(equs.getPlanenddate().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime());
-                                            equipmentRunTimes.add(er);
                                             // 设备占用时间设置连续生产标识,参与排程
                                             if (processOperationDos != null) {
                                                 List<ApsProcessOperationDo> pos = processOperationDos.stream().filter(v -> v.getId().equals(equs.getProcessid())).collect(Collectors.toList());
@@ -766,8 +770,11 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                                                         // 合金+输入物料+宽度
                                                         er.setSeriesProduceMark(operationDo.getMetal() + "^_^" + operationDo.getPlaninput() + "^_^" + operationDo.getProwidth());
                                                     }
+                                                    er.setPrepressworkmin(processesDo.getPrepressworkmin() == null ? null : processesDo.getPrepressworkmin().intValue());
+                                                    er.setCutfinishmin(processesDo.getCutfinishmin() == null ? null : processesDo.getCutfinishmin().intValue());
                                                 }
                                             }
+                                            equipmentRunTimes.add(er);
                                         }
                                         equipment.setEquipmentRunTimes(equipmentRunTimes);
                                     }
@@ -828,7 +835,8 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                             // 合金+输入物料+宽度
                             processes.setSeriesProduceMark(operationDo.getMetal() + "^_^" + operationDo.getPlaninput() + "^_^" + operationDo.getProwidth());
                         }
-
+                        processes.setPrepressworkmin(operationDo.getPrepressworkmin() == null ? null : operationDo.getPrepressworkmin().intValue());
+                        processes.setCutfinishmin(operationDo.getCutfinishmin() == null ? null : operationDo.getCutfinishmin().intValue());
                         processesList.add(processes);
                     }
                 }

+ 11 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/Equipment.java

@@ -5,6 +5,7 @@ import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
 
 import java.math.BigDecimal;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -76,6 +77,16 @@ public class Equipment{
      */
     private String lastProcessType;
 
+    /**
+     * 当前设备最后工序结束时间
+     */
+    private Date lastProcessEndTime;
+
+    /**
+     * 当前设备最后工序的下机收尾时间
+     */
+    private Integer lastProcessCutfinishmin;
+
     /**
      * 设备运行时间段
      */

+ 9 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/EquipmentRunTime.java

@@ -33,4 +33,13 @@ public class EquipmentRunTime {
      */
     private String processType;
 
+    /**
+     * 上机准备时间(单位:分钟)
+     */
+    private Integer prepressworkmin;
+    /**
+     * 下机收尾时间(单位:分钟)
+     */
+    private Integer cutfinishmin;
+
 }

+ 25 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/ProductionProcesses.java

@@ -161,6 +161,15 @@ public class ProductionProcesses{
      */
     private String conflictDes;
 
+    /**
+     * 上机准备时间(单位:分钟)
+     */
+    private Integer prepressworkmin;
+    /**
+     * 下机收尾时间(单位:分钟)
+     */
+    private Integer cutfinishmin;
+
     public String getEquipmentType() {
         return equipmentType;
     }
@@ -395,4 +404,20 @@ public class ProductionProcesses{
     public void setSoftconflictdes(String softconflictdes) {
         this.softconflictdes = softconflictdes;
     }
+
+    public Integer getPrepressworkmin() {
+        return prepressworkmin;
+    }
+
+    public void setPrepressworkmin(Integer prepressworkmin) {
+        this.prepressworkmin = prepressworkmin;
+    }
+
+    public Integer getCutfinishmin() {
+        return cutfinishmin;
+    }
+
+    public void setCutfinishmin(Integer cutfinishmin) {
+        this.cutfinishmin = cutfinishmin;
+    }
 }