diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlateDetailRespVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlateDetailRespVO.java index c68fc09b6..4ec4b59ce 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlateDetailRespVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlateDetailRespVO.java @@ -56,6 +56,14 @@ public class PlateDetailRespVO { private String name; + @Schema(description = "板颜色", requiredMode = Schema.RequiredMode.REQUIRED) + private String color; + + + @Schema(description = "板材质", requiredMode = Schema.RequiredMode.REQUIRED) + private String material; + + @Schema(description = "板长", requiredMode = Schema.RequiredMode.REQUIRED) private Double height; @@ -180,10 +188,6 @@ public class PlateDetailRespVO { private Integer type; -// @Schema(description = "加工组ID", requiredMode = Schema.RequiredMode.REQUIRED) -// private String processGroupId; - - @Schema(description = "加工组名称", requiredMode = Schema.RequiredMode.REQUIRED) private String processGroupName; @@ -201,9 +205,5 @@ public class PlateDetailRespVO { @Schema(description = "加工组名称", requiredMode = Schema.RequiredMode.REQUIRED) private List processGroupLists; -// @Schema(description = "生产单明细ID", requiredMode = Schema.RequiredMode.REQUIRED) -// private Long itemId; - - } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/goods/OptimizeBoardModelDO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/goods/OptimizeBoardModelDO.java index be0bc749b..24e0c90c7 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/goods/OptimizeBoardModelDO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/goods/OptimizeBoardModelDO.java @@ -61,6 +61,10 @@ public class OptimizeBoardModelDO extends ESDocument { private Long cutedBoardNumber; + @Schema(description = "已开料的小板数量") + private Long cutedBlockNumber; + + // 新的数据集需要去除 @Schema(description = "排单优化的大板数量") private Long placeBoardNumber; diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plate/PlateMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plate/PlateMapper.java index 17b792423..3b85c6db3 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plate/PlateMapper.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plate/PlateMapper.java @@ -266,4 +266,28 @@ public interface PlateMapper extends BaseMapperX { } + + default List selectIsOptimizedPlate(List orderId,List ids, Long organId) { + return selectList(new LambdaQueryWrapperX() + .eq(PlateDO::getOrganId,organId) + .eq(PlateDO::getDeleted,false) + .inIfPresent(PlateDO::getOrderId,orderId) + .inIfPresent(PlateDO::getGoodsId,ids) + .eq(PlateDO::getIsOptimized,true) + .select(PlateDO::getId,PlateDO::getId)); + + } + + + default List selectPlateIsCuttingStatus(List orderIds,Long organId) { + return selectList(new LambdaQueryWrapperX() + .eq(PlateDO::getOrganId,organId) + .in(PlateDO::getOrderId,orderIds) + .eq(PlateDO::getDeleted,false) + .in(PlateDO::getIsCutted, Arrays.asList(OrderPlateCutStatusEnum.OPENED.getStatus(),OrderPlateCutStatusEnum.OPENING.getStatus())) + .select(PlateDO::getId,PlateDO::getOrderId)); + + } + + } \ No newline at end of file diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/optimizeplan/OptimizePlanServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/optimizeplan/OptimizePlanServiceImpl.java index 0dfc95aa8..2d6b77e45 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/optimizeplan/OptimizePlanServiceImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/optimizeplan/OptimizePlanServiceImpl.java @@ -400,17 +400,17 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { Long planId = respVO.getPlanId(); List goodsIds = respVO.getGoodsId(); List goodsNo = respVO.getGoodsNo(); + Integer cutedType = respVO.getCutedType(); if(goodsIds.isEmpty()){ return; } - Date date = new Date(); PlanDO planDO = validatePlanExists(planId); - List orderIds = JSON.parseArray(planDO.getOrderNos()).toJavaList(Long.class).stream().distinct().toList(); + List orderIds = new ArrayList<>(JSON.parseArray(planDO.getOrderNos()).toJavaList(Long.class).stream().distinct().toList()); List optimizeBoardModelDOS = esUtils.getEsDocument(FIELD_PLAN_CONFIG_ID,FIELD_PLAN_ID,respVO.getPlanConfigId(), planId, ORDER_OPTIMIZE_PLATE_MODEL, OptimizeBoardModelDO.class); @@ -421,161 +421,92 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { String remainBoardInfo = optimizeBoardModelDO.getRemainBoardInfo(); + Integer boardCount = optimizeBoardModelDO.getBoardCount(); List remainBoardInfos = parseArray(remainBoardInfo, RemainBoardInfo.class); - List planNo = new ArrayList<>(); - remainBoardInfos.forEach(f->{ + Long goodsNum = updatePlanOptimizeData(remainBoardInfos, optimizeBoardModelDO, orderIds, goodsIds, goodsNo, cutedType); - if(goodsIds.contains(f.getGoodsId())){ - f.getPlaceBoardList().forEach(p->{ + if(OrderPlateCutStatusEnum.NOCUTTING.getStatus().equals(cutedType)){ - if(goodsNo.contains(p.getBoardId())) { - p.setCutedType(respVO.getCutedType()); - planNo.addAll(p.getBlocks().stream().map(RemainBoardInfo.Blocks::getBlockId).toList()); - } - }); + planDO.setStatus(PlanStatusEnum.OPENING.getStatus()); + if(goodsNum.equals(0L)){ + planDO.setStatus(PlanStatusEnum.PUTINTOPRODUCTION.getStatus()); } - }); + planMapper.updateById(planDO); - // 更新开料相关的数据 - HashMap objectObjectHashMap = new HashMap<>(); - objectObjectHashMap.put("remainBoardInfo", toJsonString(remainBoardInfos)); - objectObjectHashMap.put("updateTime",simpleDateFormat.format(date)); + List plateDOS = plateMapper.selectPlateIsCuttingStatus(orderIds, getUserOrganId()); + List orderIdList = plateDOS.stream().map(PlateDO::getOrderId).distinct().toList(); - try { + orderIds.removeAll(orderIdList); - esDocumentService.updateById(ORDER_OPTIMIZE_PLATE_MODEL, optimizeBoardModelDO.getId(), HashMap.class, objectObjectHashMap); + if(CollUtil.isNotEmpty(orderIds)){ + List orderDOS = orderMapper.selectBatchIds(orderIds); + orderDOS.forEach(f->f.setStatus(OrderStatusEnum.SORTED.getStatus())); + orderMapper.updateBatch(orderDOS); + } + + return; - } catch (IOException e) { - log.error(e.getMessage()); - throw new ServiceException(ES_DATA_ERROR); } - List plateDOS = plateMapper.selectPlateByPlateNo(orderIds, planNo, getUserOrganId()); - - plateDOS.forEach(f->{ - f.setIsCutted(respVO.getCutedType()); - }); - - plateMapper.updateBatch(plateDOS); -// -// List plateDOS = getPlanGoodsPlateList(goodsNo,planDO,optimizeBoardModelDOS); -// -// -// List orderIds = new ArrayList<>(plateDOS.stream().map(PlateDO::getOrderId).distinct().toList()); -// -// -// // 修改生产单的状态 -// orderMapper.updateOrderListStatus(orderIds,OrderStatusEnum.IN_PRODUCTION.getStatus(),getUserOrganId()); -// -// -// // 修改小板的开料状态 -// plateDOS.forEach(f->f.setIsCutted(OrderPlateCutStatusEnum.NOCUTTING.getStatus())); -// plateMapper.updateBatch(plateDOS); -// -// -// OptimizeBoardModelDO optimizeBoardModelDO = optimizeBoardModelDOS.get(0); -// -// -// List cutedBoardInfoList = Optional.ofNullable(optimizeBoardModelDO.getCutedBoardInfo()).orElse(new ArrayList<>()); -// -// List cutedBoardInfos = cutedBoardInfoList.stream().filter(f -> f.getGoodsId().equals(goodsId)).toList(); -// -// AssertUtils.notEmpty(cutedBoardInfos,ORDER_PLAN_OPTIMIZE_ERROR); -// -// CutedBoardInfo cutedBoardInfo = cutedBoardInfos.get(0); -// -// -// if(cutedBoardInfo.getCutedBoardNumber() != null) { -// // 已经开料的大板信息 -// List cutedBoardList = cutedBoardInfo.getCutedBoardList(); -// // 开料的大板数量 -// long cutedBoardNumber = cutedBoardInfo.getCutedBoardNumber(); -// -// // 移除取消开料的数据 -// cutedBoardList.removeAll(goodsNo); -// -// // 减去取消开料的大板数量 -// cutedBoardNumber -= goodsNo.size(); -// -// if(CollUtil.isEmpty(cutedBoardList)){ -// cutedBoardNumber = 0; -// } -// -// // 将需要更新的数据更新到原数据中 -// cutedBoardInfo.setCutedBoardNumber(cutedBoardNumber); -// cutedBoardInfo.setCutedBoardList(cutedBoardList); -// -// -// // 更新开料相关的数据 -// HashMap objectObjectHashMap = new HashMap<>(); -// objectObjectHashMap.put("cutedBoardInfo", cutedBoardInfo); -// objectObjectHashMap.put("updateTime",simpleDateFormat.format(date)); -// -// try { -// -// esDocumentService.updateById(ORDER_OPTIMIZE_PLATE_MODEL, optimizeBoardModelDO.getId(), HashMap.class, objectObjectHashMap); -// -// } catch (IOException e) { -// log.error(e.getMessage()); -// throw new ServiceException(ES_DATA_ERROR); -// } -// -// if(cutedBoardInfo.getCutedBoardNumber() == 0){ -// -// planMapper.updatePlanStatus(planId,PlanStatusEnum.NOCUTTING.getStatus(),getUserOrganId()); -// -// }else { -// -// planMapper.updatePlanStatus(planId,PlanStatusEnum.OPENING.getStatus(), getUserOrganId()); -// -// } -// -// -// List orderDOS = orderMapper.selectBatchIds(orderIds); -// -// orderDOS.forEach(f->f.setFinishTime(null)); -// -// -// List plateDOList = plateMapper.selectIsCutPlateByPlateId(orderIds, getUserOrganId()); -// -// List orderIdList = plateDOList.stream().map(PlateDO::getOrderId).distinct().toList(); -// -// orderIds.removeAll(orderIdList); -// -// -// -// if(CollUtil.isNotEmpty(orderIds)) { -// -// List orderDOList = orderDOS.stream().filter(f -> orderIds.contains(f.getId())).toList(); -// -// orderDOList.forEach(f -> f.setStatus(OrderStatusEnum.SORTED.getStatus())); -// } -// -// if(CollUtil.isNotEmpty(orderIdList)) { -// -// List orderDOList1 = orderDOS.stream().filter(f -> orderIdList.contains(f.getId())).toList(); -// -// orderDOList1.forEach(f -> f.setStatus(OrderStatusEnum.IN_PRODUCTION.getStatus())); -// } -// -// -// } + if(OrderPlateCutStatusEnum.OPENING.getStatus().equals(cutedType)){ + + planDO.setStatus(PlanStatusEnum.OPENING.getStatus()); + + List orderDOS = orderMapper.selectBatchIds(orderIds); + orderDOS.forEach(f->f.setStatus(OrderStatusEnum.IN_PRODUCTION.getStatus())); + + planMapper.updateById(planDO); + orderMapper.updateBatch(orderDOS); + return; + + } + + + if(OrderPlateCutStatusEnum.OPENED.getStatus().equals(cutedType)){ + + List plateDOList = plateMapper.selectNoCutPlateByPlateId(orderIds, getUserOrganId()); + + List orderIdList = plateDOList.stream().map(PlateDO::getOrderId).distinct().toList(); + + orderIds.removeAll(orderIdList); + + if(CollUtil.isNotEmpty(orderIds)){ + + // 查询生产单的打包状态是否为已打包 + List orderDOS = orderMapper.selectOrderPackList(orderIds, getUserOrganId()); + if (CollUtil.isNotEmpty(orderDOS)) { + orderDOS.forEach(f -> { + f.setStatus(OrderStatusEnum.FINISH_PRODUCTION.getStatus()); + f.setFinishTime(LocalDateTime.now()); + }); + + orderMapper.updateBatch(orderDOS); + } + } + + if(goodsNum.equals(Long.valueOf(boardCount))) { + + planDO.setStatus(PlanStatusEnum.OPENED.getStatus()); + planDO.setProduceTime(LocalDateTime.now()); + + planMapper.updateById(planDO); + } + + } } - - // 计算工资金额 public List calculateSalary(List processStepId){ @@ -1508,4 +1439,104 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { } + + + private Long updatePlanOptimizeData(List remainBoardInfos, + OptimizeBoardModelDO optimizeBoardModelDO, + List orderIds, + List goodsIds, + List goodsNo, + Integer cutedType){ + + Date date = new Date(); + + Long goodsNum = null; + + List planNo = new ArrayList<>(); + + remainBoardInfos.forEach(f->{ + + if(goodsIds.contains(f.getGoodsId())){ + + f.getPlaceBoardList().forEach(p->{ + + if(goodsNo.contains(p.getBoardId())) { + p.setCutedType(cutedType); + planNo.addAll(p.getBlocks().stream().map(RemainBoardInfo.Blocks::getBlockId).toList()); + } + }); + + } + }); + + // 更新开料相关的数据 + HashMap objectObjectHashMap = new HashMap<>(); + + + if(OrderPlateCutStatusEnum.NOCUTTING.getStatus().equals(cutedType)){ + + + Long cutedBoardNumber = Optional.ofNullable(optimizeBoardModelDO.getCutedBoardNumber()).orElseThrow(()-> new ServiceException(UPDATE_NO_PLAN_PLATE_DATA_ERROR)); + + Long cutedBlockNumber = Optional.ofNullable(optimizeBoardModelDO.getCutedBlockNumber()).orElseThrow(()-> new ServiceException(UPDATE_NO_PLAN_PLATE_DATA_ERROR)); + + cutedBoardNumber -= goodsNo.size(); + + cutedBlockNumber -= planNo.size(); + + goodsNum = cutedBoardNumber; + + objectObjectHashMap.put("cutedBoardNumber", cutedBoardNumber); + objectObjectHashMap.put("cutedBlockNumber", cutedBlockNumber); + + } + + + + if(OrderPlateCutStatusEnum.OPENED.getStatus().equals(cutedType)){ + + long cutedBoardNumber = Optional.ofNullable(optimizeBoardModelDO.getCutedBoardNumber()).orElse(0L); + + long cutedBlockNumber = Optional.ofNullable(optimizeBoardModelDO.getCutedBlockNumber()).orElse(0L); + + cutedBoardNumber += goodsNo.size(); + + cutedBlockNumber += planNo.size(); + + goodsNum = cutedBoardNumber; + + objectObjectHashMap.put("cutedBoardNumber", cutedBoardNumber); + objectObjectHashMap.put("cutedBlockNumber", cutedBlockNumber); + + } + + + objectObjectHashMap.put("remainBoardInfo", toJsonString(remainBoardInfos)); + objectObjectHashMap.put("updateTime",simpleDateFormat.format(date)); + + try { + + esDocumentService.updateById(ORDER_OPTIMIZE_PLATE_MODEL, optimizeBoardModelDO.getId(), HashMap.class, objectObjectHashMap); + + } catch (IOException e) { + log.error(e.getMessage()); + throw new ServiceException(ES_DATA_ERROR); + } + + + List plateDOS = plateMapper.selectPlateByPlateNo(orderIds, planNo, getUserOrganId()); + + plateDOS.forEach(f->{ + f.setIsCutted(cutedType); + }); + + plateMapper.updateBatch(plateDOS); + + + return goodsNum; + + } + + + } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanServiceImpl.java index 6f37e9cf1..ad49c3389 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanServiceImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/plan/PlanServiceImpl.java @@ -279,6 +279,9 @@ public class PlanServiceImpl implements PlanService { } + List plateDOS = plateMapper.selectIsOptimizedPlate(orderIds, ids, getUserOrganId()); + + AssertUtils.empty(plateDOS,CREAT_PLAN_PLATE_DATA_ERROR); List orderDOList = orderMapper.selectBatchIds(orderIds); diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/planitem/PlanItemMapper.xml b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/planitem/PlanItemMapper.xml index d7d2b3caf..d5784e408 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/planitem/PlanItemMapper.xml +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/planitem/PlanItemMapper.xml @@ -169,9 +169,9 @@ from orders o left join order_goods og on o.organ_id = og.organ_id and o.id = og.order_id - left join order_plan_item opi on og.organ_id = opi.organ_id and og.order_id = opi.order_id and og.id = opi.goods_id left join order_plate op on og.organ_id = op.organ_id and og.order_id = op.order_id and og.id = op.goods_id left join order_item oi on op.organ_id = oi.organ_id and op.order_id = oi.order_id and op.id = oi.plate_id + left join order_plan_item opi on op.organ_id = opi.organ_id and op.order_id = opi.order_id and op.id = opi.plate_id ${ew.customSqlSegment} @@ -194,8 +194,8 @@ from orders o left join order_goods og on o.organ_id = og.organ_id and o.id = og.order_id - left join order_plan_item opi on og.organ_id = opi.organ_id and og.order_id = opi.order_id and og.id = opi.goods_id left join order_plate op on og.organ_id = op.organ_id and og.order_id = op.order_id and og.id = op.goods_id + left join order_plan_item opi on op.organ_id = opi.organ_id and op.order_id = opi.order_id and op.id = opi.plate_id ${ew.customSqlSegment} @@ -222,9 +222,9 @@ from orders o left join order_goods og on o.organ_id = og.organ_id and o.id = og.order_id - left join order_plan_item opi on og.organ_id = opi.organ_id and og.order_id = opi.order_id and og.id = opi.goods_id left join order_plate op on og.organ_id = op.organ_id and og.order_id = op.order_id and og.id = op.goods_id left join order_item oi on op.organ_id = oi.organ_id and op.order_id = oi.order_id and op.id = oi.plate_id + left join order_plan_item opi on op.organ_id = opi.organ_id and op.order_id = opi.order_id and op.id = opi.plate_id ${ew.customSqlSegment} diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plate/PlateMapper.xml b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plate/PlateMapper.xml index faa9a760e..0662b762c 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plate/PlateMapper.xml +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plate/PlateMapper.xml @@ -29,6 +29,8 @@ + + @@ -386,6 +388,8 @@ ogs.goods_id as plateGoodsId, ogs.goods_name as goodsName, + ogs.color as color, + ogs.material as material, op.id as plateId, op.order_id as orderId, op.name as name, diff --git a/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/enums/ErrorCodeConstants.java b/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/enums/ErrorCodeConstants.java index 50894ed0e..ee406e45f 100644 --- a/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/enums/ErrorCodeConstants.java +++ b/cf-module-system/cf-module-system-api/src/main/java/com/cf/imes/module/system/enums/ErrorCodeConstants.java @@ -263,7 +263,6 @@ public class ErrorCodeConstants { public static final ErrorCode REMAIN_PLATE_NOT_EXISTS = new ErrorCode(1_002_033_005, "板材不存在"); public static final ErrorCode RAW_GOODS_NOT_EXISTS = new ErrorCode(1_002_033_006, "设计板材不存在"); public static final ErrorCode RAW_GOODS_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_002_033_007, "生产板材导入数据不可以为空"); - public static final ErrorCode PLATENO_ERROR = new ErrorCode(1_002_033_008, "当前板编号无对应包裹信息"); public static final ErrorCode PLATE_GOODS_ID_NOT_SAME = new ErrorCode(1_002_033_009, "板材商品编号存在,请重新命名商品编号"); public static final ErrorCode PLATE_IS_SOURCE = new ErrorCode(1_002_033_010, "当前板材为源小板,无法删除"); public static final ErrorCode PLAN_GOODS_IS_FILTER_DATA_ERROR = new ErrorCode(1_002_033_011, "当前排单为非混单,无法添加颜色的筛选条件"); @@ -295,7 +294,6 @@ public class ErrorCodeConstants { //=========== 包裹信息 1-002-040-000 ============ - public static final ErrorCode THE_CURRENT_PACKAGE_HAS_AN_UNSEALED_PACKAGE = new ErrorCode(1_002_040_001, "当前包裹还有未封包包裹"); public static final ErrorCode THE_CURRENT_PACKAGE_TYPE_IS_INCORRECT = new ErrorCode(1_002_040_002, "当前包裹类型错误"); public static final ErrorCode FAILED_TO_MODIFY_THE_STATUS_OF_THE_CURRENT_PRODUCTION_ORDER = new ErrorCode(1_002_040_003, "修改当前生产单的工序状态和生产单的状态失败"); public static final ErrorCode NO_OPTIMIZATION_INFORMATION_AVAILABLE = new ErrorCode(1_002_040_004, "当前订单无优化信息"); @@ -306,7 +304,6 @@ public class ErrorCodeConstants { //=========== 断言提示信息 1-002-041-000 ============ public static final ErrorCode ORDER_DATE_ERROR = new ErrorCode(1_002_041_001, "生产单信息不存在,请重新进入或切换生产单"); public static final ErrorCode ORDER_PLATE_ERROR = new ErrorCode(1_002_041_002, "生产单对应的板材数据为空,请检查是否为空单或重新导入生产单,或联系客服"); - public static final ErrorCode INSERT_PLATE_DATE_ERROR = new ErrorCode(1_002_041_003, "新增排单的板材数据有误,请重新新增"); public static final ErrorCode ORDER_PLAN_DATE_ERROR = new ErrorCode(1_002_041_004, "排单信息不存在,请重新进入或切换排单"); public static final ErrorCode ORDER_PLAN_OPTIMIZE_ERROR = new ErrorCode(1_002_041_005, "排单的优化数据异常,请将该排单重新优化"); public static final ErrorCode ORDER_PLATE_MODEL_DATE_ERROR = new ErrorCode(1_002_041_006, "生产单对应的板材造型数据为空,请重新导入生产单"); @@ -340,7 +337,8 @@ public class ErrorCodeConstants { public static final ErrorCode PLAN_NO_ACTUAL_PLATE = new ErrorCode(1_002_041_030, "当前排单未选择实际开料的大板信息,无法保存优化结果"); public static final ErrorCode PROCESS_CONFIG_DEFAULT_DATA_ERROR = new ErrorCode(1_002_041_031, "当前组织没有默认的加工方案组,请在系统配置中进行配置"); public static final ErrorCode THIS_PROCESS_CONFIG_DATA_ERROR = new ErrorCode(1_002_041_032, "当前选择的加工方案组配置有误,请选择其他方案组或重新配置该方案组"); - + public static final ErrorCode CREAT_PLAN_PLATE_DATA_ERROR = new ErrorCode(1_002_041_033, "当前板材已有小板创建板材,请重新查询生产单信息再创建"); + public static final ErrorCode UPDATE_NO_PLAN_PLATE_DATA_ERROR = new ErrorCode(1_002_041_034, "当前排单无开料板,无法取消开料,请重新尝试"); //=========== 应用信息 1-002-037-000 ============ @@ -376,4 +374,8 @@ public class ErrorCodeConstants { public static final ErrorCode CUSTOM_PLATE_NO_RULE_CHECK_INT_TYPE_NO_EMPTY = new ErrorCode(1_002_040_012, "【{}】下的【{}】不能为空,请检查配置规则"); public static final ErrorCode CUSTOM_PLATE_NO_RULE_CHECK_INT_TYPE_ERROR = new ErrorCode(1_002_040_013, "【{}】下的数值类型参数{}:【{}】转换异常,请检查配置规则"); public static final ErrorCode CUSTOM_PLATE_NO_RULE_CHECK_BOL_TYPE_ERROR = new ErrorCode(1_002_040_014, "【{}】下的布尔类型参数{}:【{}】转换异常,请检查配置规则"); + public static final ErrorCode SYSTEM_PROCESS_SCHEME_DATA_ERROR = new ErrorCode(1_002_040_015, "加工方案组的:{} 为空,无法保存,请进行配置"); + public static final ErrorCode SYSTEM_PROCESS_SCHEME_CONFIG_DATA_ERROR = new ErrorCode(1_002_040_016, "加工方案组的:{} 为空,请检查配置信息"); + public static final ErrorCode SYSTEM_PROCESS_SCHEME_CONFIG_FIELD_ERROR = new ErrorCode(1_002_040_017, "当前方案组的配置异常,请重新配置"); + } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/api/systemconfig/SystemConfigApiImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/api/systemconfig/SystemConfigApiImpl.java index 631eb3354..ce5057626 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/api/systemconfig/SystemConfigApiImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/api/systemconfig/SystemConfigApiImpl.java @@ -17,16 +17,18 @@ import com.cf.imes.module.system.dal.mysql.machine.MachineMapper; import com.cf.imes.module.system.dal.mysql.systemconfig.SystemConfigMapper; import com.cf.imes.module.system.enums.config.SystemConfigTypeEnum; import com.cf.imes.module.system.service.systemconfig.SystemConfigService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.util.ObjectUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.util.List; +import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.cf.imes.framework.common.pojo.CommonResult.success; import static com.cf.imes.framework.common.util.json.JsonUtils.*; -import static com.cf.imes.module.system.enums.ErrorCodeConstants.PROCESS_CONFIG_DEFAULT_DATA_ERROR; -import static com.cf.imes.module.system.enums.ErrorCodeConstants.THIS_PROCESS_CONFIG_DATA_ERROR; +import static com.cf.imes.module.system.enums.ErrorCodeConstants.*; /** * 系统配置feign实现类 @@ -36,6 +38,7 @@ import static com.cf.imes.module.system.enums.ErrorCodeConstants.THIS_PROCESS_CO */ @RestController @Validated +@Slf4j public class SystemConfigApiImpl implements SystemConfigApi { @Resource @@ -93,16 +96,32 @@ public class SystemConfigApiImpl implements SystemConfigApi { AssertUtils.notEmpty(systemConfigDO,THIS_PROCESS_CONFIG_DATA_ERROR); - List processSchemeConfigs = parseArray(systemConfigDO.getSetting(), ProcessSchemeConfig.class); + List processSchemeConfigs; + + try { + + processSchemeConfigs = parseArray(systemConfigDO.getSetting(), ProcessSchemeConfig.class); + + }catch (Exception e){ + log.error(e.getMessage()); + throw exception(SYSTEM_PROCESS_SCHEME_CONFIG_FIELD_ERROR); + } + List schemeDTOS = BeanUtils.toBean(processSchemeConfigs, ProcessSchemeDTO.class); List processLineConfigIds = processSchemeConfigs.stream().map(ProcessSchemeConfig::getProcessLineConfig).distinct().toList(); + checkValueIsNotEmpty(processLineConfigIds,"加工分线"); + List optimizationConfigIds = processSchemeConfigs.stream().map(ProcessSchemeConfig::getOptimizationConfig).distinct().toList(); + checkValueIsNotEmpty(optimizationConfigIds,"优化数据配置"); + List analyzerIds = processSchemeConfigs.stream().map(ProcessSchemeConfig::getAnalyzer).distinct().toList(); + checkValueIsNotEmpty(analyzerIds,"解析器"); + List processLineConfigList = systemConfigMapper.selectBatchIds(processLineConfigIds); @@ -158,4 +177,13 @@ public class SystemConfigApiImpl implements SystemConfigApi { return success(schemeDTOS); } + + + private void checkValueIsNotEmpty(List value,String error) { + + if(ObjectUtils.isEmpty(value)){ + throw exception(SYSTEM_PROCESS_SCHEME_CONFIG_DATA_ERROR,error); + } + + } } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/systemconfig/factory/service/impl/DefaultSystemConfigServiceHandler.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/systemconfig/factory/service/impl/DefaultSystemConfigServiceHandler.java index 54359bb2c..4ca0e5ee7 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/systemconfig/factory/service/impl/DefaultSystemConfigServiceHandler.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/systemconfig/factory/service/impl/DefaultSystemConfigServiceHandler.java @@ -1,6 +1,7 @@ package com.cf.imes.module.system.service.systemconfig.factory.service.impl; import cn.hutool.core.util.ObjectUtil; +import com.cf.imes.framework.common.enums.CommonStatusEnum; import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; import com.cf.imes.framework.organ.core.context.OrganContextHolder; import com.cf.imes.module.system.controller.admin.systemconfig.vo.ConfigDeleteReqVO; @@ -62,6 +63,19 @@ public class DefaultSystemConfigServiceHandler extends AbstractSystemConfigServi .type(configTypeEnum.getType()) .build(); + if(configTypeEnum.getType().equals(SystemConfigTypeEnum.MULTI_COLOR_ORDER_PLAN.getType())){ + SystemConfigDO systemConfigDO = SystemConfigDO + .builder() + .id(null) + .name(configTypeEnum.getName()) + .type(configTypeEnum.getType()) + .status(CommonStatusEnum.DISABLE.getStatus()) + .build(); + systemConfigMapper.insert(systemConfigDO); + resultList.add(systemConfigDO); + continue; + } + resultList.add(initConfig); } else { // 如果存在配置,保留版本号最大的配置 diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/systemconfig/factory/service/impl/ProcessSchemeServiceHandler.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/systemconfig/factory/service/impl/ProcessSchemeServiceHandler.java index a82faf937..14815fa7a 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/systemconfig/factory/service/impl/ProcessSchemeServiceHandler.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/systemconfig/factory/service/impl/ProcessSchemeServiceHandler.java @@ -1,6 +1,7 @@ package com.cf.imes.module.system.service.systemconfig.factory.service.impl; +import cn.hutool.core.text.CharSequenceUtil; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.cf.imes.framework.common.enums.CommonStatusEnum; import com.cf.imes.framework.organ.core.context.OrganContextHolder; @@ -16,8 +17,10 @@ import java.util.List; import java.util.Optional; import java.util.concurrent.atomic.AtomicLong; +import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.cf.imes.framework.common.util.json.JsonUtils.parseArray; import static com.cf.imes.framework.common.util.json.JsonUtils.toJsonString; +import static com.cf.imes.module.system.enums.ErrorCodeConstants.SYSTEM_PROCESS_SCHEME_DATA_ERROR; /** * @author 加工方案服务处理器 @@ -47,7 +50,31 @@ public class ProcessSchemeServiceHandler extends AbstractSystemConfigServiceHand @Override public void checkValid(String setting) { - // todo checkValid + + + List processSchemeConfigs = parseArray(setting, ProcessSchemeConfig.class); + + processSchemeConfigs.forEach(f->{ + + String planName = Optional.ofNullable(f.getPlanName()).orElse(""); + + checkValueIsNotNull(planName,"加工方案名称"); + + String processLineConfig = Optional.ofNullable(f.getProcessLineConfig()).orElse(""); + + checkValueIsNotNull(processLineConfig,"加工分线"); + + String optimizationConfig = Optional.ofNullable(f.getOptimizationConfig()).orElse(""); + + checkValueIsNotNull(optimizationConfig,"优化数据配置"); + + String analyzer = Optional.ofNullable(f.getAnalyzer()).orElse(""); + + checkValueIsNotNull(analyzer,"解析器"); + + }); + + } @Override @@ -101,4 +128,14 @@ public class ProcessSchemeServiceHandler extends AbstractSystemConfigServiceHand systemConfigMapper.deleteById(reqVO.getId()); } + + + private void checkValueIsNotNull(String value,String error) { + + if(CharSequenceUtil.isBlank(value)){ + throw exception(SYSTEM_PROCESS_SCHEME_DATA_ERROR,error); + } + + } + }