Procházet zdrojové kódy

数据组装优化

fangpy před 7 měsíci
rodič
revize
4d1d6f910d

+ 2 - 1
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/ApsService.java

@@ -4,6 +4,7 @@ import com.rongwei.bsentity.vo.ApsBlankOrderVo;
 import com.rongwei.bsentity.vo.ProductionScheduleVo;
 import com.rongwei.rwadmincommon.system.vo.SysUserVo;
 
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -11,6 +12,6 @@ public interface ApsService {
 
     void apsSchedule(List<ApsBlankOrderVo> apsBlankOrders, String apsType,SysUserVo currentUser);
 
-    ProductionScheduleVo apsProductionScheduleInit(List<ApsBlankOrderVo> apsBlankOrders);
+    ProductionScheduleVo apsProductionScheduleInit(List<ApsBlankOrderVo> apsBlankOrders, Date apsPlanStartDate);
 
 }

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

@@ -281,7 +281,7 @@ public class ApsServiceImpl implements ApsService {
                 dataMapOrder.put(bo.getId(),bo);
 
                 // 模型转换
-                ProductionScheduleVo productionScheduleVo = apsProductionScheduleInit(v);
+                ProductionScheduleVo productionScheduleVo = apsProductionScheduleInit(v,new Date());
                 productionScheduleVos.add(productionScheduleVo);
                 dataMap.put(productionScheduleVo.getProductionScheduleId(),v);
 //                        int mergeThNum = mergeThNum(bo, productionScheduleVo);
@@ -292,7 +292,7 @@ public class ApsServiceImpl implements ApsService {
                 List<String> blankids = new ArrayList<>();
                 blankids.add(bo.getId());
                 for (ApsProcessOperationDo operationDo : operationDos1) {
-                    List<String> optionalEquipments = equipmentListInit(operationDo,equipmentList1,eqMaps,blankids,null,productionScheduleVo,apsConfigs.get(0));
+                    List<String> optionalEquipments = equipmentListInit(operationDo,equipmentList1,eqMaps,blankids,null,productionScheduleVo,apsConfigs.get(0),null);
                 }
                 productionScheduleVo.setEquipmentList(equipmentList1);
                 apsProductionSchedules.add(productionScheduleVo);
@@ -339,10 +339,27 @@ public class ApsServiceImpl implements ApsService {
             apsBlankOrder.setVolumeMetalAndState(apsBlankOrder.getAlloy());
         }
         Map<String, List<ApsBlankOrderVo>> voms = apsBlankOrders.stream().collect(Collectors.groupingBy(ApsBlankOrderVo::getVolumeMetalAndState));
+        Map<String,Equipment> allEqs = new HashMap<>();
+        // 统一排程开始时间
+        List<ApsScheduleConfigDo> apsConfigs = apsScheduleConfigService.list();
+        Date apsPlanStartDate = new Date();
+        if(apsConfigs != null && apsConfigs.size()>0){
+            ApsScheduleConfigDo apsScheduleConfig = apsConfigs.get(0);
+            int a = 8;
+            if (apsScheduleConfig.getStartschedulerun() != null) {
+                a = apsScheduleConfig.getStartschedulerun();
+            }
+            if (apsScheduleConfig.getApsplanstartdate() != null) {
+                apsPlanStartDate = apsScheduleConfig.getApsplanstartdate();
+            } else {
+                apsPlanStartDate = DateUtil.date().offset(DateField.HOUR, a);
+            }
+        }
         if(voms != null && voms.size()>0){
-            voms.forEach((k,v)->{
+            Date finalApsPlanStartDate = apsPlanStartDate;
+            voms.forEach((k, v)->{
                 try{
-                    apsOrderScheduleApsNew(v,currentUser);
+                    apsOrderScheduleApsNew(v,currentUser,allEqs, finalApsPlanStartDate);
                 }catch (Exception e) {
                     e.printStackTrace();
                     logger.info("排程异常",e);
@@ -367,7 +384,7 @@ public class ApsServiceImpl implements ApsService {
         }
     }
 
-    private void apsOrderScheduleApsNew(List<ApsBlankOrderVo> apsBlankOrders,SysUserVo currentUser){
+    private void apsOrderScheduleApsNew(List<ApsBlankOrderVo> apsBlankOrders,SysUserVo currentUser,Map<String,Equipment> allEqs,Date apsPlanStartDate){
         // 坯料计划排序
         Collections.sort(apsBlankOrders,(v1,v2)->{
             // 合金
@@ -489,7 +506,7 @@ public class ApsServiceImpl implements ApsService {
                 dataMapOrder.put(bo.getId(),bo);
 
                 // 模型转换
-                ProductionScheduleVo productionScheduleVo = apsProductionScheduleInit(v);
+                ProductionScheduleVo productionScheduleVo = apsProductionScheduleInit(v,apsPlanStartDate);
                 productionScheduleVos.add(productionScheduleVo);
                 dataMap.put(productionScheduleVo.getProductionScheduleId(),v);
 //                        int mergeThNum = mergeThNum(bo, productionScheduleVo);
@@ -506,7 +523,7 @@ public class ApsServiceImpl implements ApsService {
                 List<String> blankids = new ArrayList<>();
                 blankids.add(bo.getId());
                 for (ApsProcessOperationDo operationDo : operationDos1) {
-                    List<String> optionalEquipments = equipmentListInit(operationDo,equipmentList1,eqMaps,blankids,null,productionScheduleVo,apsConfigs.get(0));
+                    List<String> optionalEquipments = equipmentListInit(operationDo,equipmentList1,eqMaps,blankids,null,productionScheduleVo,apsConfigs.get(0),allEqs);
                 }
                 productionScheduleVo.setEquipmentList(equipmentList1);
                 apsProductionSchedules.add(productionScheduleVo);
@@ -626,7 +643,7 @@ public class ApsServiceImpl implements ApsService {
         }
     }
 
-    private ProductionScheduleVo productionScheduleVoInit(){
+    private ProductionScheduleVo productionScheduleVoInit(Date apsPlanStartDate){
         ProductionScheduleVo productionScheduleVo = new ProductionScheduleVo();
         productionScheduleVo.setProductionScheduleId("批量排程-"+SecurityUtil.getUUID());
         List<ApsScheduleConfigDo> apsConfigs = apsScheduleConfigService.list();
@@ -644,7 +661,7 @@ public class ApsServiceImpl implements ApsService {
             roamTime.put("WORKSHOP_CROSS", workshopcross);
             productionScheduleVo.setRoamTime(roamTime);
             // 排程计划开始时间
-            int a = 8;
+            /*int a = 8;
             if (apsScheduleConfig.getStartschedulerun() != null) {
                 a = apsScheduleConfig.getStartschedulerun();
             }
@@ -652,7 +669,8 @@ public class ApsServiceImpl implements ApsService {
                 productionScheduleVo.setApsPlanStartDate(apsScheduleConfig.getApsplanstartdate());
             } else {
                 productionScheduleVo.setApsPlanStartDate(DateUtil.date().offset(DateField.HOUR, a));
-            }
+            }*/
+            productionScheduleVo.setApsPlanStartDate(apsPlanStartDate);
             productionScheduleVo.setWashingtime(apsScheduleConfig.getWashingtime());
             productionScheduleVo.setStandingtime(apsScheduleConfig.getStandingtime());
             productionScheduleVo.setStandingyield(apsScheduleConfig.getStandingyield());
@@ -695,7 +713,7 @@ public class ApsServiceImpl implements ApsService {
      * @return
      */
     @Override
-    public ProductionScheduleVo apsProductionScheduleInit(List<ApsBlankOrderVo> apsBlankOrders) {
+    public ProductionScheduleVo apsProductionScheduleInit(List<ApsBlankOrderVo> apsBlankOrders,Date apsPlanStartDate) {
         // 待排程坯料计划ID集合
         List<String> blankids = apsBlankOrders.stream().map(v -> v.getId()).collect(Collectors.toList());
         // 查询当前坯料计划的历史排程明细
@@ -708,7 +726,7 @@ public class ApsServiceImpl implements ApsService {
         List<ApsProcessOperationEquDo> processOperationEquDos = apsProcessOperationEquService.list(
                 new LambdaQueryWrapper<ApsProcessOperationEquDo>().in(ApsProcessOperationEquDo::getBlankid, blankids));
 
-        ProductionScheduleVo productionScheduleVo = productionScheduleVoInit();
+        ProductionScheduleVo productionScheduleVo = productionScheduleVoInit(apsPlanStartDate);
         // 排程计划工序任务集合
         List<ProductionProcesses> processesList = new ArrayList<>();
         // 坯料计划ID和所属工序作业ID对应关系
@@ -780,7 +798,7 @@ public class ApsServiceImpl implements ApsService {
     }
 
     private List<String> equipmentListInit(ApsProcessOperationDo operationDo,List<Equipment> equipmentList,Map<String, AspCheckItemsDo> eqMaps
-            ,List<String> blankids,Set<String> opId,ProductionScheduleVo productionScheduleVo,ApsScheduleConfigDo apsScheduleConfig){
+            ,List<String> blankids,Set<String> opId,ProductionScheduleVo productionScheduleVo,ApsScheduleConfigDo apsScheduleConfig,Map<String,Equipment> allEqs){
         // 当前工序排程开始时间
         Date apsPlanStartDate = productionScheduleVo.getApsPlanStartDate();
         if(productionScheduleVo.getProcesses() != null && productionScheduleVo.getProcesses().size()>0){
@@ -791,26 +809,12 @@ public class ApsServiceImpl implements ApsService {
                 }
             }
         }
+        String apsPlanStartDateStr = DateUtil.formatDateTime(apsPlanStartDate);
         // 设备列表
         List<String> optionalEquipments = new ArrayList<>();
         if (StringUtils.isNotBlank(operationDo.getCanchoosedeviceid())) {
             String canchoosedeviceid = operationDo.getCanchoosedeviceid();
             // 锁定作业添加可选设备里没有但已锁定排程明细的设备
-            /*if("y".equals(operationDo.getLockmark())){
-                List<ApsProcessOperationProcessEquDo> pros = processOperationProcessEquService.list(new LambdaQueryWrapper<ApsProcessOperationProcessEquDo>()
-                        .eq(ApsProcessOperationProcessEquDo::getProcessid, operationDo.getId()));
-                if(pros != null && pros.size()>0){
-                    for (ApsProcessOperationProcessEquDo pro : pros) {
-                        if(!canchoosedeviceid.contains(pro.getProcessdeviceid())){
-                            if(StrUtil.isBlank(canchoosedeviceid)){
-                                canchoosedeviceid = pro.getProcessdeviceid();
-                            }else{
-                                canchoosedeviceid = canchoosedeviceid + "," + pro.getProcessdeviceid();
-                            }
-                        }
-                    }
-                }
-            }*/
             List<ApsProcessOperationProcessEquDo> pros = processOperationProcessEquService.list(new LambdaQueryWrapper<ApsProcessOperationProcessEquDo>()
                     .eq(ApsProcessOperationProcessEquDo::getProcessid, operationDo.getId()).eq(ApsProcessOperationProcessEquDo::getLockmarkdetail,"y"));
             if(pros != null && pros.size()>0){
@@ -830,6 +834,12 @@ public class ApsServiceImpl implements ApsService {
                 if(equIds.equals("0001be252874536843730b100017")){
                     System.out.println(equIds);
                 }
+                String eqDateKey = apsPlanStartDateStr + " *** " + equIds;
+                if(allEqs.containsKey(eqDateKey)){
+                    equipmentList.add(allEqs.get(eqDateKey));
+                    continue;
+                }
+
                 AspCheckItemsDo checkItemsD = eqMaps.get(equIds);
                 if (checkItemsD != null) {
                     optionalEquipments.add(equIds);
@@ -1051,6 +1061,8 @@ public class ApsServiceImpl implements ApsService {
                         }
 
                         equipmentList.add(equipment);
+
+                        allEqs.put(eqDateKey,equipment);
                     }
                 }
             }