Browse Source

数据组装优化

fangpy 6 months ago
parent
commit
b7b625b4be

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

@@ -334,6 +334,8 @@ public class ApsServiceImpl implements ApsService {
     }
 
     private void apsOrderScheduleNew(List<ApsBlankOrderVo> apsBlankOrders,SysUserVo currentUser){
+        // 插单重排的优先排程
+        List<ApsBlankOrderVo> cdorders = apsBlankOrders.stream().filter(v -> "1".equals(v.getCdbs())).collect(Collectors.toList());
         // 先按合金,合金状态分组,再每组分别排程
         for (ApsBlankOrderVo apsBlankOrder : apsBlankOrders) {
             apsBlankOrder.setVolumeMetalAndState(apsBlankOrder.getAlloy());
@@ -355,8 +357,32 @@ public class ApsServiceImpl implements ApsService {
                 apsPlanStartDate = DateUtil.date().offset(DateField.HOUR, a);
             }
         }
+        Date finalApsPlanStartDate = apsPlanStartDate;
+        if(cdorders != null && cdorders.size()>0){
+            try{
+                apsOrderScheduleApsNew(cdorders,currentUser,allEqs, finalApsPlanStartDate);
+            }catch (Exception e) {
+                e.printStackTrace();
+                logger.info("排程异常",e);
+                String blankNos = "";
+                for (ApsBlankOrderVo apsBlankOrderVo : cdorders) {
+                    if("".equals(blankNos)){
+                        blankNos = apsBlankOrderVo.getBlanknumber();
+                    }else{
+                        blankNos = blankNos+";"+apsBlankOrderVo.getBlanknumber();
+                    }
+                }
+                String msg = "排程服务异常(坯料计划号:"+blankNos+")"+DateUtil.formatDateTime(new Date());
+                if(e instanceof CustomException){
+                    msg = e.getMessage();
+                }
+                currentUser.setRoption(msg+" "+DateUtil.formatDateTime(new Date()));
+                String tenantId = CXCommonUtils.getCurrentUserFactoryId(currentUser);
+                redisService.redisCatchInit("apsUser-"+tenantId,currentUser,3600*24);
+//                    throw e;
+            }
+        }
         if(voms != null && voms.size()>0){
-            Date finalApsPlanStartDate = apsPlanStartDate;
             voms.forEach((k, v)->{
                 try{
                     apsOrderScheduleApsNew(v,currentUser,allEqs, finalApsPlanStartDate);
@@ -411,52 +437,47 @@ public class ApsServiceImpl implements ApsService {
             int a = 0;
             // 插单优先
             if(v1.getCdbs().compareTo(v2.getCdbs()) == 0){
-                // 合金
-                if(alloy1.compareTo(alloy2) == 0){
-                    // 产品类型
-                    if(producttype1 == null || producttype2 == null || producttype1.compareTo(producttype2) == 0){
-                        // 宽度
-                        if(prowidth1.compareTo(prowidth2) == 0){
-                            // 厚度
-                            if(thickness1.compareTo(thickness2) == 0){
-                                // 合金状态
-                                if(alloystatus1 == null || alloystatus2 == null || alloystatus1.compareTo(alloystatus2) == 0){
-                                    // 重量
-                                    if(singlerollweight1.compareTo(singlerollweight2) == 0){
-                                        // 按照订单排序
-                                        if(v1.getProductionorderid().compareTo(v2.getProductionorderid()) == 0){
-                                            // 卷数从大到小
-                                            a = v2.getRollnum().compareTo(v1.getRollnum());
-                                        }else{
-                                            a = v1.getProductionorderid().compareTo(v2.getProductionorderid());
-                                        }
-                                    }else if(singlerollweight1.compareTo(singlerollweight2) > 0){
-                                        a = -1;
+                // 产品类型
+                if(producttype1 == null || producttype2 == null || producttype1.compareTo(producttype2) == 0){
+                    // 宽度
+                    if(prowidth1.compareTo(prowidth2) == 0){
+                        // 厚度
+                        if(thickness1.compareTo(thickness2) == 0){
+                            // 合金状态
+                            if(alloystatus1 == null || alloystatus2 == null || alloystatus1.compareTo(alloystatus2) == 0){
+                                // 重量
+                                if(singlerollweight1.compareTo(singlerollweight2) == 0){
+                                    // 按照订单排序
+                                    if(v1.getProductionorderid().compareTo(v2.getProductionorderid()) == 0){
+                                        // 卷数从大到小
+                                        a = v2.getRollnum().compareTo(v1.getRollnum());
                                     }else{
-                                        a = 1;
+                                        a = v1.getProductionorderid().compareTo(v2.getProductionorderid());
                                     }
-                                }else{
-                                    a = alloystatus1.compareTo(alloystatus2);
-                                }
-                            }else{
-                                if(thickness1.compareTo(thickness2) > 0){
+                                }else if(singlerollweight1.compareTo(singlerollweight2) > 0){
                                     a = -1;
                                 }else{
                                     a = 1;
                                 }
+                            }else{
+                                a = alloystatus1.compareTo(alloystatus2);
                             }
                         }else{
-                            if(prowidth1.compareTo(prowidth2) > 0){
+                            if(thickness1.compareTo(thickness2) > 0){
                                 a = -1;
                             }else{
                                 a = 1;
                             }
                         }
                     }else{
-                        a = producttype1.compareTo(producttype2);
+                        if(prowidth1.compareTo(prowidth2) > 0){
+                            a = -1;
+                        }else{
+                            a = 1;
+                        }
                     }
                 }else{
-                    a = alloy1.compareTo(alloy2);
+                    a = producttype1.compareTo(producttype2);
                 }
             }else{
                 a = v1.getCdbs().compareTo(v2.getCdbs());
@@ -736,6 +757,8 @@ public class ApsServiceImpl implements ApsService {
         List<ApsProcessOperationProcessEquDo> apopes = processOperationProcessEquService.list(
                 new LambdaQueryWrapper<ApsProcessOperationProcessEquDo>()
                         .in(ApsProcessOperationProcessEquDo::getBlankid,blankids)
+                        .isNotNull(ApsProcessOperationProcessEquDo::getProcessdeviceid)
+                        .ne(ApsProcessOperationProcessEquDo::getProcessdeviceid,"")
                         .orderByAsc(ApsProcessOperationProcessEquDo::getPlanstartdate));
         Map<String, List<ApsProcessOperationProcessEquDo>> proEqus = apopes.stream().collect(Collectors.groupingBy(ApsProcessOperationProcessEquDo::getProcessid));
         // 待排程坯料计划作业可选设备轧辊ID
@@ -1194,7 +1217,10 @@ public class ApsServiceImpl implements ApsService {
             // 锁定的作业
             if(LOCKMARK_Y.equals(operationDo.getLockmark())){
                 List<ApsProcessOperationProcessEquDo> processDetails = processOperationProcessEquService.list(new LambdaQueryWrapper<ApsProcessOperationProcessEquDo>()
-                        .eq(ApsProcessOperationProcessEquDo::getProcessid, operationDo.getId()).orderByAsc(ApsProcessOperationProcessEquDo::getPlanstartdate));
+                        .eq(ApsProcessOperationProcessEquDo::getProcessid, operationDo.getId())
+                        .isNotNull(ApsProcessOperationProcessEquDo::getProcessdeviceid)
+                        .ne(ApsProcessOperationProcessEquDo::getProcessdeviceid,"")
+                        .orderByAsc(ApsProcessOperationProcessEquDo::getPlanstartdate));
                 for (ApsProcessOperationProcessEquDo processDetail : processDetails) {
                     ProductionProcesses processes = productionProcessesDetailInit(operationDo, produceOrder, optionalEquipments,outMaterDos,apsBlankOrderVo,processOperationEquDos);
                     // 锁定的作业保留作业ID
@@ -1392,7 +1418,7 @@ public class ApsServiceImpl implements ApsService {
                         operationProcess.add(processes);
                     }
                 }else{
-                    for (Integer i = 0; i < operationDo.getPlanprocessrall(); i++) {
+                    for (Integer i = 0; i < operationDo.getPlanprocessrall()-operationDo.getCancelrollsum(); i++) {
                         ProductionProcesses processes = productionProcessesDetailInit(operationDo, produceOrder, optionalEquipments,outMaterDos,apsBlankOrderVo,processOperationEquDos);
                         // 已排程的作业明细数据保持ID不变
                         if(processEquDos != null && i<processEquDos.size()){