Sfoglia il codice sorgente

排程数据组装优化

fangpy 1 anno fa
parent
commit
303e0f7971

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

@@ -573,6 +573,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
         // 先删除所有作业的明细
         List<String> blankids = apsBlankOrders.stream().map(v -> v.getId()).collect(Collectors.toList());
         processOperationProcessEquService.remove(new LambdaUpdateWrapper<ApsProcessOperationProcessEquDo>().in(ApsProcessOperationProcessEquDo::getBlankid, blankids));
+        logger.info("作业明细删除结束..: " + blankids);
         // 排程结果保存
         List<ApsProcessOperationProcessEquDo> apsProcessOperationProcessEquDos = new ArrayList<>();
         // 最后节点集合
@@ -647,6 +648,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
         if (apsProcessOperationProcessEquDos != null && apsProcessOperationProcessEquDos.size() > 0) {
             // 再保存新数据
             processOperationProcessEquService.saveBatch(apsProcessOperationProcessEquDos);
+            logger.info("作业明细保存结束..: " + blankids);
             // 回写订单排程交货期
             Map<String, Date> orderDeliveryTime = new HashMap<>();
             // 坯料计划ID集合
@@ -718,7 +720,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
             // 自动加锁坯料计划下的排程作业明细
             apsProcessOperationProcessEquService.update(new LambdaUpdateWrapper<ApsProcessOperationProcessEquDo>().in(ApsProcessOperationProcessEquDo::getBlankid, blankKeys).set(ApsProcessOperationProcessEquDo::getLockmark, "y"));
         }
-
+        logger.info("作业加锁结束..: " + blankids);
         backupProcessOperation(apsProcessOperationProcessEquDos, productionScheduleRetVo.getProcesses());
     }
 

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

@@ -173,6 +173,12 @@ public class ApsServiceImpl implements ApsService {
                 List<List<ApsBlankOrderVo>> apsOrders = new ArrayList<>();
                 for (ApsBlankOrderVo apsBlankOrder : apsBlankOrders) {
 
+                }
+                // 所有设备
+                List<AspCheckItemsDo> eqs = aspCheckItemsService.list(new LambdaQueryWrapper<>());
+                Map<String, AspCheckItemsDo> eqMaps = new HashMap<>();
+                for (AspCheckItemsDo eq : eqs) {
+                    eqMaps.put(eq.getId(), eq);
                 }
                 apsBlankOrders.forEach((bo)->{
                     List<ApsBlankOrderVo> v = new ArrayList<>();
@@ -195,24 +201,34 @@ public class ApsServiceImpl implements ApsService {
                     productionScheduleThVo.setLooseness(productionScheduleVos.get(0).getLooseness());
                     productionScheduleThVo.setPcspeed(productionScheduleVos.get(0).getPcspeed());
                     List<ProductionProcesses> pros = new ArrayList<>();
-                    List<Equipment> equipmentList = new ArrayList<>();
+                    List<String> thBlankIds = new ArrayList<>();
                     Map<String,List<String>> blankProcessIds = new HashMap<>();
                     List<WashingMetal> closealloynames = new ArrayList<>();
                     for (ProductionScheduleVo productionScheduleVo : productionScheduleVos) {
                         pros.addAll(productionScheduleVo.getProcesses());
-                        for (Equipment equipment : productionScheduleVo.getEquipmentList()) {
-                            List<Equipment> ess = equipmentList.stream().filter(v -> v.getBsEquipmentId().equals(equipment.getBsEquipmentId())).collect(Collectors.toList());
-                            if(ess == null || ess.size() == 0){
-                                equipmentList.add(equipment);
+                        for (ProductionProcesses pross : productionScheduleVo.getProcesses()) {
+                            for (ProduceOrder produceOrder : pross.getProduceOrder()) {
+                                thBlankIds.add(produceOrder.getId());
                             }
                         }
                         blankProcessIds.putAll(productionScheduleVo.getBlankProcessIds());
                         closealloynames.addAll(productionScheduleVo.getClosealloynames());
                     }
                     productionScheduleThVo.setProcesses(pros);
-                    productionScheduleThVo.setEquipmentList(equipmentList);
                     productionScheduleThVo.setBlankProcessIds(blankProcessIds);
                     productionScheduleThVo.setClosealloynames(closealloynames);
+                    // 退火设备列表
+                    thBlankIds = thBlankIds.stream().distinct().collect(Collectors.toList());
+                    // 排程计划设备集合
+                    List<Equipment> equipmentList = new ArrayList<>();
+                    List<ApsProcessOperationDo> operationDos = apsProcessOperationService.list(new LambdaQueryWrapper<ApsProcessOperationDo>()
+                            .in(ApsProcessOperationDo::getBlankid, thBlankIds));
+                    List<ApsScheduleConfigDo> apsConfigs = apsScheduleConfigService.list();
+                    for (ApsProcessOperationDo operationDo : operationDos) {
+                        List<String> optionalEquipments = equipmentListInit(operationDo,equipmentList,eqMaps,thBlankIds,productionScheduleThVo,apsConfigs.get(0));
+                    }
+                    productionScheduleThVo.setEquipmentList(equipmentList);
+
                     // 退火排程
                     JSONConfig jsonConfig = JSONConfig.create();
                     jsonConfig.setDateFormat("yyyy-MM-dd HH:mm:ss");
@@ -243,6 +259,22 @@ public class ApsServiceImpl implements ApsService {
                                 }
                             }
                         }
+                        // 设备列表赋值
+                        List<String> blankIds = new ArrayList<>();
+                        for (ProductionProcesses pross : productionScheduleVo.getProcesses()) {
+                            for (ProduceOrder produceOrder : pross.getProduceOrder()) {
+                                blankIds.add(produceOrder.getId());
+                            }
+                        }
+                        blankIds = blankIds.stream().distinct().collect(Collectors.toList());
+                        // 排程计划设备集合
+                        List<Equipment> equipmentList1 = new ArrayList<>();
+                        List<ApsProcessOperationDo> operationDos1 = apsProcessOperationService.list(new LambdaQueryWrapper<ApsProcessOperationDo>()
+                                .in(ApsProcessOperationDo::getBlankid, blankIds));
+                        for (ApsProcessOperationDo operationDo : operationDos1) {
+                            List<String> optionalEquipments = equipmentListInit(operationDo,equipmentList1,eqMaps,blankIds,productionScheduleVo,apsConfigs.get(0));
+                        }
+                        productionScheduleVo.setEquipmentList(equipmentList1);
 
                         System.out.println("排程数据:" + JSONUtil.toJsonStr(productionScheduleVo, jsonConfig));
                         logger.info("排程数据:" + JSONUtil.toJsonStr(productionScheduleVo, jsonConfig));
@@ -310,14 +342,6 @@ public class ApsServiceImpl implements ApsService {
         List<WashingMetal> washingMetalConfig = apsBlankOrderDao.getWashingMetalConfig();
         productionScheduleVo.setClosealloynames(washingMetalConfig);
 
-        // 所有设备
-        List<AspCheckItemsDo> eqs = aspCheckItemsService.list(new LambdaQueryWrapper<>());
-        Map<String, AspCheckItemsDo> eqMaps = new HashMap<>();
-        for (AspCheckItemsDo eq : eqs) {
-            eqMaps.put(eq.getId(), eq);
-        }
-        // 排程计划设备集合
-        List<Equipment> equipmentList = new ArrayList<>();
         // 排程计划工序任务集合
         List<ProductionProcesses> processesList = new ArrayList<>();
         // 坯料计划ID和所属工序作业ID对应关系
@@ -356,9 +380,9 @@ public class ApsServiceImpl implements ApsService {
                     }
                     operationMaps.put(operationDo.getId(),operationDo);
                     // 设备列表初始化
-                    List<String> optionalEquipments = equipmentListInit(operationDo,equipmentList,eqMaps,blankids,productionScheduleVo,apsScheduleConfig);
+//                    List<String> optionalEquipments = equipmentListInit(operationDo,equipmentList,eqMaps,blankids,productionScheduleVo,apsScheduleConfig);
                     // 工序作业相关数据初始化
-                    productionProcessesInit(operationDo,produceOrder,optionalEquipments,processesList,operationProductionProcesses,apsBlankOrderVo,productionScheduleVo);
+                    productionProcessesInit(operationDo,produceOrder,processesList,operationProductionProcesses,apsBlankOrderVo,productionScheduleVo);
                 }
                 // 前后关联关系初始化
                 processesRelationInit(rootOperationDo,operationProductionProcesses,operationMaps,apsBlankOrderVo);
@@ -368,7 +392,7 @@ public class ApsServiceImpl implements ApsService {
         }
         // 合并生产工序
         productionScheduleVo.setProcesses(processesList);
-        productionScheduleVo.setEquipmentList(equipmentList);
+//        productionScheduleVo.setEquipmentList(equipmentList);
         productionScheduleVo.setBlankProcessIds(blankProcessIds);
         return productionScheduleVo;
     }
@@ -590,17 +614,21 @@ public class ApsServiceImpl implements ApsService {
      * 工序作业模型初始化
      * @param operationDo
      * @param produceOrder
-     * @param optionalEquipments
      * @param processesList
      * @param operationProductionProcesses
      */
-    private void productionProcessesInit(ApsProcessOperationDo operationDo,ProduceOrder produceOrder,List<String> optionalEquipments
+    private void productionProcessesInit(ApsProcessOperationDo operationDo,ProduceOrder produceOrder
             ,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()));
         List<ProductionProcesses> operationProcess = new ArrayList<>();
         if(operationDo != null && operationDo.getPlanprocessrall() != null && operationDo.getPlanprocessrall()>0){
+            List<String> optionalEquipments = new ArrayList<>();
+            String[] sbIds = operationDo.getCanchoosedeviceid().split(",");
+            for (String equIds : sbIds) {
+                optionalEquipments.add(equIds);
+            }
             if(LOCKMARK_Y.equals(operationDo.getLockmark())){
                 List<ApsProcessOperationProcessEquDo> processDetails = processOperationProcessEquService.list(new LambdaQueryWrapper<ApsProcessOperationProcessEquDo>()
                         .eq(ApsProcessOperationProcessEquDo::getProcessid, operationDo.getId()));