Quellcode durchsuchen

排程数据组装来料日期优化

fangpy vor 1 Jahr
Ursprung
Commit
846a25def4

+ 20 - 10
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsServiceImpl.java

@@ -31,6 +31,7 @@ import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
@@ -129,7 +130,7 @@ public class ApsServiceImpl implements ApsService {
                             // 合金状态
                             if(alloystatus1 == null || alloystatus2 == null || alloystatus1.compareTo(alloystatus2) == 0){
                                 // 产品类型
-                                if(producttype1.compareTo(producttype2) == 0){
+                                if(producttype1 == null || producttype2 == null || producttype1.compareTo(producttype2) == 0){
                                     // 厚度
                                     if(thickness1.compareTo(thickness2) == 0){
                                         // 重量
@@ -165,10 +166,7 @@ public class ApsServiceImpl implements ApsService {
                     }
                     return a;
                 });
-                // 按订单分批排程
-//                Map<String, List<ApsBlankOrderVo>> groupedItems = apsBlankOrders.stream()
-//                        .collect(Collectors.groupingBy(ApsBlankOrderVo::getProductionorderid));
-//                groupedItems.forEach((k,v)->{
+                
                 apsBlankOrders.forEach((bo)->{
                     List<ApsBlankOrderVo> v = new ArrayList<>();
                     v.add(bo);
@@ -237,9 +235,6 @@ public class ApsServiceImpl implements ApsService {
         } else {
             throw new CustomException("排程参数缺失");
         }
-        // 全局配置
-
-
         // 洗炉合金配置数据设置
         List<WashingMetal> washingMetalConfig = apsBlankOrderDao.getWashingMetalConfig();
         productionScheduleVo.setClosealloynames(washingMetalConfig);
@@ -292,7 +287,7 @@ public class ApsServiceImpl implements ApsService {
                     // 设备列表初始化
                     List<String> optionalEquipments = equipmentListInit(operationDo,equipmentList,eqMaps,blankids,productionScheduleVo,apsScheduleConfig);
                     // 工序作业相关数据初始化
-                    productionProcessesInit(operationDo,produceOrder,optionalEquipments,processesList,operationProductionProcesses);
+                    productionProcessesInit(operationDo,produceOrder,optionalEquipments,processesList,operationProductionProcesses,apsBlankOrderVo,productionScheduleVo);
                 }
                 // 前后关联关系初始化
                 processesRelationInit(rootOperationDo,operationProductionProcesses,operationMaps,apsBlankOrderVo);
@@ -529,7 +524,7 @@ public class ApsServiceImpl implements ApsService {
      * @param operationProductionProcesses
      */
     private void productionProcessesInit(ApsProcessOperationDo operationDo,ProduceOrder produceOrder,List<String> optionalEquipments
-            ,List<ProductionProcesses> processesList,Map<String,List<ProductionProcesses>> operationProductionProcesses){
+            ,List<ProductionProcesses> processesList,Map<String,List<ProductionProcesses>> operationProductionProcesses,ApsBlankOrderVo apsBlankOrderVo,ProductionScheduleVo productionScheduleVo){
         // 输出物料
         List<ApsProcessOperationOutMaterDo> outMaterDos = apsProcessOperationOutMaterService.list(new LambdaQueryWrapper<ApsProcessOperationOutMaterDo>()
                 .eq(ApsProcessOperationOutMaterDo::getMainid, operationDo.getId()));
@@ -553,6 +548,21 @@ public class ApsServiceImpl implements ApsService {
             }else{
                 for (Integer i = 0; i < operationDo.getPlanprocessrall(); i++) {
                     ProductionProcesses processes = productionProcessesDetailInit(operationDo, produceOrder, optionalEquipments,outMaterDos);
+                    if(apsBlankOrderVo.getPlanhavematerialdate() != null){
+                        // 全局配置
+                        ApsOverallConfig apsOverallConfig = new ApsOverallConfig();
+                        Date startDate = apsBlankOrderVo.getPlanhavematerialdate();
+                        LocalDateTime startTime = startDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
+                        apsOverallConfig.setStartTimeLong(startDate.getTime());
+                        apsOverallConfig.setStartTime(startTime);
+                        // 排程全局配置
+                        apsOverallConfig.setRoamTime(productionScheduleVo.getRoamTime());
+                        apsOverallConfig.setWashingtime(productionScheduleVo.getWashingtime());
+                        apsOverallConfig.setStandingtime(productionScheduleVo.getStandingtime());
+                        apsOverallConfig.setClosealloynames(productionScheduleVo.getClosealloynames());
+                        apsOverallConfig.setLooseness(productionScheduleVo.getLooseness());
+                        processes.setApsOverallConfig(apsOverallConfig);
+                    }
                     operationProcess.add(processes);
                 }
             }

+ 48 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/ApsOverallConfig.java

@@ -0,0 +1,48 @@
+package com.rongwei.bsentity.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * APS全局配置类
+ */
+@Data
+public class ApsOverallConfig implements Serializable {
+
+    // 排程计划指定开始时间
+    private LocalDateTime startTime;
+
+    // 排程计划指定开始时间戳
+    private Long startTimeLong;
+
+    /**
+     * 工序之间流转时间全局配置(暂时不考虑跨工厂)
+     * 车间内流转时间(分钟):WORKSHOP_IN
+     * 跨车间流转时间(分钟):WORKSHOP_CROSS
+     */
+    private Map<String,Integer> roamTime;
+
+    /**
+     * 相近合金
+     */
+    private List<WashingMetal> closealloynames;
+
+    /**
+     * 洗炉时间(小时)
+     */
+    private Integer washingtime;
+    /**
+     * 立板时间(小时)
+     */
+    private Integer standingtime;
+    /**
+     * 松散度
+     */
+    private BigDecimal looseness;
+
+}

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

@@ -154,6 +154,11 @@ public class ProductionProcesses{
      */
     private List<String> nextProcessesIds;
 
+    /**
+     * APS排程全局配置
+     */
+    private ApsOverallConfig apsOverallConfig;
+
     /**
      * 加工铝卷的集合
      */
@@ -522,4 +527,12 @@ public class ProductionProcesses{
     public void setDelay(Integer delay) {
         this.delay = delay;
     }
+
+    public ApsOverallConfig getApsOverallConfig() {
+        return apsOverallConfig;
+    }
+
+    public void setApsOverallConfig(ApsOverallConfig apsOverallConfig) {
+        this.apsOverallConfig = apsOverallConfig;
+    }
 }