Procházet zdrojové kódy

Merge remote-tracking branch 'origin/mode-min-unit' into mode-min-unit

xiahan před 9 měsíci
rodič
revize
9bb65314e8

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

@@ -561,9 +561,9 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
                 log.error("无法通过ID:{}获取到坯料计划", processEquDo.getBlankid());
                 throw new CustomException("无法获取到坯料计划信息");
             }
-            if (Arrays.asList(COMPLETED, PROCESSING, TO_BE_STARTED).contains(operationDo.getProcessstatus())) {
-                log.error("该作业已发布,不能调整开工时间");
-                throw new CustomException("该作业已发布,不能调整开工时间");
+            if (Arrays.asList(COMPLETED, PROCESSING).contains(operationDo.getProcessstatus())) {
+                log.error("该作业已开工,不能调整开工时间");
+                throw new CustomException("该作业已开工,不能调整开工时间");
             }
             blankIdSet.add(operationDo.getBlankid());
             vo.setOldEquId(processEquDo.getProcessdeviceid());
@@ -638,8 +638,8 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
             return R.error("无法获取到工序作业信息");
         }
         if (!JOBSTATUS_TO_BE_START.equals(apsProcessOperationProcessEquDo.getWorkstatus())) {
-            log.error("当前工序作业已开工");
-            return R.error("当前工序作业已开工无法更新工序作业信息");
+            log.error("已开工的作业不可修改");
+            return R.error("已开工的作业不可修改");
         }
         if (StringUtils.isBlank(apsProcessOperationProcessEquDo.getProcessid())) {
             log.error("工序作业明细对应工序作业ID为空");
@@ -650,10 +650,6 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
         if (apsProcessOperationDo == null) {
             log.error("根据ID:{} 获取工序作业失败", apsProcessOperationProcessEquDo.getProcessid());
         }
-        if (!TO_BE_PUBLISHED.equals(apsProcessOperationDo.getProcessstatus())) {
-            log.error("工序作业状态:{}异常", apsProcessOperationDo.getProcessstatus());
-            return R.error("只有待发布的工序作业才可以修改");
-        }
         // 更新开工时间 jobDetailsVo
         String equId = jobDetailsVo.getEquId();
         String equName = jobDetailsVo.getEquName();
@@ -677,7 +673,7 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
                     jobDetailsVo.getPlanStartTime().getTime() - oldPlanstartdate.getTime()));
             // 增加受影响的工序作业信息
             affectedIdList.addAll(checkProcessingTimeConflict(apsProcessOperationProcessEquDo, oldPlanstartdate,
-                    oldPlanenddate, oldEquId, apsProcessOperationDo.getProcessway(),null));
+                    oldPlanenddate, oldEquId, apsProcessOperationDo.getProcessway(),new ArrayList<>()));
         }
 
         // 判断是否存在设备不可用
@@ -820,7 +816,7 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
                 // 增加受影响的工序作业信息
                 affectedIdList.addAll(checkProcessingTimeConflict(newDo, currentProcessEquDo.getPlanstartdate(),
                         currentProcessEquDo.getPlanenddate(), currentProcessEquDo.getProcessdeviceid(),
-                        currentProcessOperationDo.getProcessway(),null));
+                        currentProcessOperationDo.getProcessway(),new ArrayList<>()));
             } else {
                 /**************************拆分逻辑处理***********************************/
                 newDo.setId(SecurityUtil.getUUID());
@@ -853,7 +849,7 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
                 // 增加受影响的工序作业信息
                 affectedIdList.addAll(checkProcessingTimeConflict(newDo, newDo.getPlanstartdate(),
                         newDo.getPlanenddate(), newDo.getProcessdeviceid(),
-                        currentProcessOperationDo.getProcessway(),null));
+                        currentProcessOperationDo.getProcessway(),new ArrayList<>()));
                 this.save(newDo);
                 newDataList.add(newDo);
                 /**************************原数据逻辑处理***********************************/
@@ -893,7 +889,7 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
                 // 增加受影响的工序作业信息
                 affectedIdList.addAll(checkProcessingTimeConflict(oldDo,
                         currentProcessEquDo.getPlanstartdate(), currentProcessEquDo.getPlanenddate(),
-                        oldDo.getProcessdeviceid(), currentProcessOperationDo.getProcessway(),null));
+                        oldDo.getProcessdeviceid(), currentProcessOperationDo.getProcessway(),new ArrayList<>()));
             }
         });
         this.saveOrUpdateBatch(newDataList);
@@ -1264,7 +1260,7 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
         List<ApsProcessOperationProcessEquDo> beforeUpdatingConflictId = this.baseMapper.getTimeOverlapByEquId(oldEquId,
                 apsProcessOperationProcessEquDo.getId(), oldPlanstartdate, oldPlanenddate, currentProcessWay);
         List<ApsProcessOperationProcessEquDo> aboutProcessEquList = new ArrayList<>();
-        if (returnAboutIds!= null&&!returnAboutIds.isEmpty()){
+        if (!returnAboutIds.isEmpty()){
             aboutProcessEquList = (List<ApsProcessOperationProcessEquDo>) apsProcessOperationProcessEquService.listByIds(returnAboutIds);
         }
         if (!beforeUpdatingConflictId.isEmpty()) {

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

@@ -1257,14 +1257,14 @@ public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperat
         //校验工序作业明细的加工设备和加工车间的代号是否为空
         if (checkDeviceAndOrgCode) {
             //查询坯料计划对应的所有工序作业明细
-            List<ApsProcessOperationProcessEquDo> list = apsProcessOperationProcessEquService.list(new QueryWrapper<ApsProcessOperationProcessEquDo>().lambda().eq(ApsProcessOperationProcessEquDo::getBlankid, blankId).ne(ApsProcessOperationProcessEquDo::getClosestatus, "已完工"));
+            List<ApsProcessOperationProcessEquDo> list = apsProcessOperationProcessEquService.list(new QueryWrapper<ApsProcessOperationProcessEquDo>().lambda().eq(ApsProcessOperationProcessEquDo::getBlankid, blankId).eq(ApsProcessOperationProcessEquDo::getClosestatus, "待开工"));
             if (ObjectUtil.isEmpty(list)) {
                 return R.ok();
             }
             //获取所有工序作业明细的加工设备
             Set<String> deviceIds = list.stream().filter(item -> ObjectUtil.isNotEmpty(item.getProcessdeviceid())).map(ApsProcessOperationProcessEquDo::getProcessdeviceid).collect(Collectors.toSet());
             if (ObjectUtil.isEmpty(deviceIds)) {
-                return R.error("存在未排程的工序作业明细,未分配加工设备");
+                return R.error("存在待开工的工序作业明细,未分配加工设备");
             }
             //查询设备对应的代号
             List<AspCheckItemsDo> deviceList = aspCheckItemsService.list(new QueryWrapper<AspCheckItemsDo>().lambda().in(AspCheckItemsDo::getId, deviceIds));

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

@@ -132,11 +132,11 @@ public class ApsServiceImpl implements ApsService {
                     }
                     apsBlankOrders.addAll(fbNotLock);
                 }
-//                apsOrderScheduleNew(apsBlankOrders,currentUser);
-                apsOrderSchedule(apsBlankOrders);
+                apsOrderScheduleNew(apsBlankOrders,currentUser);
+//                apsOrderSchedule(apsBlankOrders);
             } catch (Exception e) {
                 e.printStackTrace();
-                logger.info("排程异常" + e);
+                logger.info("排程异常",e);
                 String msg = "排程服务异常";
                 if(e instanceof CustomException){
                     msg = e.getMessage();
@@ -321,8 +321,16 @@ public class ApsServiceImpl implements ApsService {
                     apsOrderScheduleApsNew(v);
                 }catch (Exception e) {
                     e.printStackTrace();
-                    logger.info("排程异常" + e);
-                    String msg = "排程服务异常";
+                    logger.info("排程异常",e);
+                    String blankNos = "";
+                    for (ApsBlankOrderVo apsBlankOrderVo : v) {
+                        if("".equals(blankNos)){
+                            blankNos = apsBlankOrderVo.getBlanknumber();
+                        }else{
+                            blankNos = blankNos+";"+apsBlankOrderVo.getBlanknumber();
+                        }
+                    }
+                    String msg = "排程服务异常(坯料计划号:"+blankNos+")";
                     if(e instanceof CustomException){
                         msg = e.getMessage();
                     }
@@ -417,6 +425,8 @@ public class ApsServiceImpl implements ApsService {
         apsBlankOrders.forEach((bo)->{
             blankOrderIds.add(bo.getId());
         });
+        System.out.println("当前批次排程坯料计划ID:" + blankOrderIds);
+        logger.info("当前批次排程坯料计划ID:" + blankOrderIds);
         // 更新待排程的锁定的作业
         if(blankOrderIds != null && blankOrderIds.size()>0){
             String blankidStrs = CollUtil.join(blankOrderIds, "','");
@@ -447,26 +457,32 @@ public class ApsServiceImpl implements ApsService {
         List<ProductionScheduleVo> apsProductionSchedules = new ArrayList<>();
         // 多卷先排
         apsBlankOrders.forEach((bo)->{
-            List<ApsBlankOrderVo> v = new ArrayList<>();
-            v.add(bo);
-            dataMapOrder.put(bo.getId(),bo);
+            try{
+                List<ApsBlankOrderVo> v = new ArrayList<>();
+                v.add(bo);
+                dataMapOrder.put(bo.getId(),bo);
 
-            // 模型转换
-            ProductionScheduleVo productionScheduleVo = apsProductionScheduleInit(v);
-            productionScheduleVos.add(productionScheduleVo);
-            dataMap.put(productionScheduleVo.getProductionScheduleId(),v);
+                // 模型转换
+                ProductionScheduleVo productionScheduleVo = apsProductionScheduleInit(v);
+                productionScheduleVos.add(productionScheduleVo);
+                dataMap.put(productionScheduleVo.getProductionScheduleId(),v);
 //                        int mergeThNum = mergeThNum(bo, productionScheduleVo);
-            // 排程计划设备集合
-            List<Equipment> equipmentList1 = new ArrayList<>();
-            List<ApsProcessOperationDo> operationDos1 = apsProcessOperationService.list(new LambdaQueryWrapper<ApsProcessOperationDo>()
-                    .in(ApsProcessOperationDo::getBlankid, bo.getId()));
-            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<Equipment> equipmentList1 = new ArrayList<>();
+                List<ApsProcessOperationDo> operationDos1 = apsProcessOperationService.list(new LambdaQueryWrapper<ApsProcessOperationDo>()
+                        .in(ApsProcessOperationDo::getBlankid, bo.getId()));
+                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));
+                }
+                productionScheduleVo.setEquipmentList(equipmentList1);
+                apsProductionSchedules.add(productionScheduleVo);
+            }catch(Exception e){
+                logger.info("坯料计划:+bo.getBlanknumber() + ;排程数据初始化异常",e);
+                String msg = "坯料计划:"+bo.getBlanknumber() + ";排程数据初始化异常";
+                throw new CustomException(msg);
             }
-            productionScheduleVo.setEquipmentList(equipmentList1);
-            apsProductionSchedules.add(productionScheduleVo);
         });
 
         // 多个坯料计划合并排程
@@ -600,8 +616,12 @@ public class ApsServiceImpl implements ApsService {
             if(productionScheduleVo.getStandingyield() == null){
                 productionScheduleVo.setStandingyield(60);
             }
+            // 默认宽差配置
             productionScheduleVo.setMiddifference(apsScheduleConfig.getMiddifference());
             productionScheduleVo.setFurnacedifference(apsScheduleConfig.getFurnacedifference());
+            // 默认卷重差配置
+            productionScheduleVo.setWeightdifference(apsScheduleConfig.getWeightdifference());
+            productionScheduleVo.setMidweightdifference(apsScheduleConfig.getMidweightdifference());
         } else {
             throw new CustomException("排程参数缺失");
         }

+ 3 - 3
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/utils/CodeGeneration.java

@@ -83,7 +83,7 @@ public class CodeGeneration {
         strategy.setSuperEntityClass(BaseDo.class);
         strategy.setRestControllerStyle(true);
         // 设置要映射的表名(重要,需要修改的地方)
-        strategy.setInclude("aps_furnace_installation");
+        strategy.setInclude("aps_schedule_config");
         strategy.setNaming(NamingStrategy.underline_to_camel); // 自动转换表名的驼峰命名法
         strategy.setColumnNaming(NamingStrategy.no_change); // 自动转换列名的驼峰命名法
         strategy.setEntityLombokModel(true); // 是否使用lombox
@@ -127,7 +127,7 @@ public class CodeGeneration {
                 return entityParentPath + tableInfo.getEntityName() + "Do" + StringPool.DOT_JAVA;
             }
         });
-        focList.add(new FileOutConfig("/gentemplates/mapper.java.vm") {
+        /*focList.add(new FileOutConfig("/gentemplates/mapper.java.vm") {
             @Override
             public String outputFile(TableInfo tableInfo) {
                 // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
@@ -147,7 +147,7 @@ public class CodeGeneration {
                 // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
                 return commonPath + "service\\impl\\" + tableInfo.getEntityName() + "ServiceImpl" + StringPool.DOT_JAVA;
             }
-        });
+        });*/
         cfg.setFileOutConfigList(focList);
 
         autoGenerator.setCfg(cfg);

+ 11 - 1
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsScheduleConfigDo.java

@@ -17,7 +17,7 @@ import lombok.experimental.Accessors;
  * </p>
  *
  * @author fpy
- * @since 2024-09-18
+ * @since 2024-11-04
  */
 @Data
 @EqualsAndHashCode(callSuper = true)
@@ -162,6 +162,16 @@ public class ApsScheduleConfigDo extends BaseDo {
      */
     @TableField("EXPECTEDDAYS")
     private Integer expecteddays;
+    /**
+     * 中退组炉卷重差(吨)
+     */
+    @TableField("WEIGHTDIFFERENCE")
+    private BigDecimal weightdifference;
+    /**
+     * 成退组炉卷重差(吨)
+     */
+    @TableField("MIDWEIGHTDIFFERENCE")
+    private BigDecimal midweightdifference;
 
 
 }

+ 8 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/ProductionScheduleVo.java

@@ -113,5 +113,13 @@ public class ProductionScheduleVo {
      * 成退组炉宽差,默认:200mm
      */
     private Integer furnacedifference;
+    /**
+     * 中退组炉卷重差(吨)
+     */
+    private BigDecimal weightdifference;
+    /**
+     * 成退组炉卷重差(吨)
+     */
+    private BigDecimal midweightdifference;
 
 }