From c7937259d3478f010d06bae551afae24a0f93e71 Mon Sep 17 00:00:00 2001 From: liuzhaotian Date: Wed, 12 Feb 2025 15:40:10 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=92=E5=8D=95=E5=8A=A0=E5=B7=A5=E6=96=B9?= =?UTF-8?q?=E6=A1=88=E5=88=87=E6=8D=A2=E9=80=BB=E8=BE=91=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/order/OrderController.java | 3 + .../optimizeplan/OptimizePlanServiceImpl.java | 203 ++++++++++++------ .../service/order/OrderServiceImpl.java | 4 +- .../mapper/planitem/PlanItemMapper.xml | 1 + 4 files changed, 141 insertions(+), 70 deletions(-) diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java index f5bd8ea59..796e48139 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java @@ -111,6 +111,7 @@ public class OrderController { public static final String ORDER_PLATE_MODEL = "imes_order_plate_model"; public static final String ORDER_PLATE_MODEL_COMPRESS = "imes_order_plate_model_compress"; + public static final String ORDER_PARTS_REMARK_MODEL = "imes_order_parts_remark_model"; @PutMapping("/update") @Operation(summary = "更新生产单") @PreAuthorize("@ss.hasPermission('production:manager-list:edit')") @@ -231,6 +232,7 @@ public class OrderController { if (orderDO == null) { orderInputProcessor.deleteByOrderId(orderId, ORDER_PLATE_MODEL); orderInputProcessor.deleteByOrderId(orderId, ORDER_PLATE_MODEL_COMPRESS); + orderInputProcessor.deleteByOrderId(orderId, ORDER_PARTS_REMARK_MODEL); } Throwable cause = e.getCause(); @@ -380,6 +382,7 @@ public class OrderController { Long deleteOrderId = orderDO.getId(); orderInputProcessor.deleteByOrderId(deleteOrderId, ORDER_PLATE_MODEL); orderInputProcessor.deleteByOrderId(deleteOrderId, ORDER_PLATE_MODEL_COMPRESS); + orderInputProcessor.deleteByOrderId(deleteOrderId, ORDER_PARTS_REMARK_MODEL); } } finally { 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 26d8df8d6..b6ad0e5d8 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 @@ -673,7 +673,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { List optimizeBoardModelDOS = esUtils.getEsDocument(FIELD_PLAN_CONFIG_ID,FIELD_PLAN_ID,req.getPlanConfigId(), planId, ORDER_OPTIMIZE_PLATE_MODEL, OptimizeBoardModelDO.class); - List isLocks = new ArrayList<>(); +// List isLocks = new ArrayList<>(); // 查询原优化信息然后进行判断 if(CollUtil.isNotEmpty(optimizeBoardModelDOS)){ @@ -682,7 +682,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { throw exception(THIS_PLAN_OPTIMIZE_DATA_ERROR); } - isLocks.addAll(optimizeBoardModelDOS.stream().map(OptimizeBoardModelDO::getIsLock).distinct().toList()); +// isLocks.addAll(optimizeBoardModelDOS.stream().map(OptimizeBoardModelDO::getIsLock).distinct().toList()); OptimizeBoardModelDO optimizeBoardModelDO = optimizeBoardModelDOS.get(0); @@ -697,30 +697,30 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { throw exception(THIS_PLAN_OPTIMIZE_IS_LOCK); } - esUtils.deleteEsDocument(FIELD_PLAN_ID,FIELD_PLAN_CONFIG_ID,planId,req.getPlanConfigId(),ORDER_OPTIMIZE_PLATE_MODEL); - } List plateDOS = planItemMapper.selectOrderPlanPlateListByPlanId(planId,getUserOrganId()); - AssertUtils.notEmpty(plateDOS,THIS_PLAN_PLATE_DATA_ERROR); + if(CollUtil.isNotEmpty(plateDOS)) { + plateDOS.forEach(f -> { + f.setIsOptimized(true); + }); - if(processId != null && !planDO.getProcessId().equals(processId)) { - - validatePlanStatus(planDO,isLocks); - - planMapper.updateById(planDO.setProcessId(processId)); - + plateMapper.updateBatch(plateDOS); } + // 这个逻辑暂时先不用,等后面方案组逻辑完善后可加入 +// if(processId != null && !planDO.getProcessId().equals(processId)) { +// +// validatePlanStatus(planDO,isLocks); +// +// planMapper.updateById(planDO.setProcessId(processId)); +// +// } - plateDOS.forEach(f->{ - f.setIsOptimized(true); - }); - - plateMapper.updateBatch(plateDOS); + esUtils.deleteEsDocument(FIELD_PLAN_ID,FIELD_PLAN_CONFIG_ID,planId,req.getPlanConfigId(),ORDER_OPTIMIZE_PLATE_MODEL); // 保存优化后的大板数据 esUtils.saveEsDocument(ORDER_OPTIMIZE_PLATE_MODEL,req.getOptimizeBoardModelDOS()); @@ -741,66 +741,106 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { List modelDOList = saveProcessSchemeReqVO.getModelDOList(); - Long planId = modelDOList.stream().map(SaveProcessSchemeModelDO::getPlanId).distinct().toList().get(0); + List schemeModelDOS = new ArrayList<>(modelDOList.stream().filter(Objects::nonNull).toList()); + + SaveProcessSchemeModelDO saveProcessSchemeModelDO = Optional.ofNullable(schemeModelDOS.get(0)).orElseThrow(() -> new ServiceException(THIS_PLAN_SCHEME_DATA_ERROR)); + + Long planId = Optional.ofNullable(saveProcessSchemeModelDO.getPlanId()).orElseThrow(() -> new ServiceException(THIS_PLAN_SCHEME_DATA_ERROR)); + PlanDO planDO = planMapper.selectById(planId); AssertUtils.notEmpty(planDO,PLAN_NOT_EXISTS); - List planConfigIds = modelDOList.stream().map(SaveProcessSchemeModelDO::getPlanConfigId).distinct().toList(); + List planConfigIds = schemeModelDOS.stream().map(SaveProcessSchemeModelDO::getPlanConfigId).distinct().toList(); List plateDOS = planItemMapper.selectOrderPlanPlateListByPlanId(planId,getUserOrganId()); - AssertUtils.notEmpty(plateDOS,THIS_PLAN_PLATE_DATA_ERROR); - plateDOS.forEach(f->{ - f.setIsOptimized(true); - }); - - plateMapper.updateBatch(plateDOS); - - - // 不能加非空判断,因为方案组里可能没有优化信息 - List optimizeBoardModelDOS = esUtils.getEsDocument(FIELD_PLAN_ID, planId, ORDER_OPTIMIZE_PLATE_MODEL, OptimizeBoardModelDO.class); - - List isLocks = new ArrayList<>(); - - if(CollUtil.isNotEmpty(optimizeBoardModelDOS)){ - - optimizeBoardModelDOS.forEach(f->{ - - isLocks.add(Optional.ofNullable(f.getIsLock()).orElse(false)); - - modelDOList.add(SaveProcessSchemeModelDO.builder() - .planConfigId(f.getPlanConfigId()) - .planName(f.getPlanConfigName()) - .plateNum(f.getPlaceBlockNumber()) - .goodsNum(f.getBoardCount()) - .isOptimized(true) - .build()); + if(CollUtil.isNotEmpty(plateDOS)) { + plateDOS.forEach(f -> { + f.setIsOptimized(true); }); + plateMapper.updateBatch(plateDOS); } + // 如果方案组ID不相等,就删除旧的方案组信息,再保存新的加工方案组ID if(!planDO.getProcessId().equals(processId)){ - validatePlanStatus(planDO,isLocks); +// validatePlanStatus(planDO,isLocks); + + if(planDO.getStatus().equals(PlanStatusEnum.OPENING.getStatus()) || planDO.getStatus().equals(PlanStatusEnum.OPENED.getStatus())){ + throw exception(THIS_PLAN_PLATE_IS_CUT); + } + + + // todo 是否全部执行的判断,需要等前端完善加工方案那边的逻辑后,再判断 +// Integer processSize = systemConfigApi.getProcessSizeByIds(Collections.singletonList(planDO.getProcessId())).getCheckedData(); +// +// List processSchemeModelDOS = esUtils.getEsDocument(FIELD_PLAN_ID, planId, processSize, PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL, SaveProcessSchemeModelDO.class); +// +// if(CollUtil.isNotEmpty(processSchemeModelDOS) && processSize == processSchemeModelDOS.size()){ +// throw exception(THIS_PLAN_SCHEME_OPTIMIZE_SIZE_ERROR); +// } planMapper.updateById(planDO.setProcessId(processId)); + + // 修改方案组,删除全部的方案组的优化信息 + esUtils.deleteEsDocument(FIELD_PLAN_ID,planId,PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL); + + // 删除全部的生产优化信息 + esUtils.deleteEsDocument(FIELD_PLAN_ID,planId,ORDER_OPTIMIZE_PLATE_MODEL); + + // 保存此时的方案组的优化信息 + esUtils.saveEsDocument(PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL,schemeModelDOS); + + return; + } esUtils.deleteEsDocument(FIELD_PLAN_ID,FIELD_PLAN_CONFIG_ID,planId,planConfigIds,PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL); - esUtils.saveEsDocument(PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL,modelDOList); + esUtils.saveEsDocument(PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL,schemeModelDOS); + + } +// // 不能加非空判断,因为方案组里可能没有优化信息 +// List optimizeBoardModelDOS = esUtils.getEsDocument(FIELD_PLAN_ID, planId, ORDER_OPTIMIZE_PLATE_MODEL, OptimizeBoardModelDO.class); +// +//// List isLocks = new ArrayList<>(); +// +// if(CollUtil.isNotEmpty(optimizeBoardModelDOS)){ +// +// optimizeBoardModelDOS.forEach(f->{ +// +//// isLocks.add(Optional.ofNullable(f.getIsLock()).orElse(false)); +// +// schemeModelDOS.add(SaveProcessSchemeModelDO.builder() +// .planConfigId(f.getPlanConfigId()) +// .planName(f.getPlanConfigName()) +// .plateNum(f.getPlaceBlockNumber()) +// .goodsNum(f.getBoardCount()) +// .isOptimized(true) +// .build()); +// +// }); +// +// } + + + + + + @Override public PlanProcessSchemeList getProcessSchemeConfig(Long processId,Long planId) { @@ -814,55 +854,82 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { validatePlanExists(planId); // 查询排单对应的方案组信息 - List saveProcessSchemeReqVOS = Optional.ofNullable(esUtils.getEsDocument(FIELD_PLAN_ID, planId, PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL, SaveProcessSchemeModelDO.class)).orElse(new ArrayList<>()); +// List saveProcessSchemeReqVOS = Optional.ofNullable(esUtils.getEsDocument(FIELD_PLAN_ID, planId, PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL, SaveProcessSchemeModelDO.class)).orElse(new ArrayList<>()); + + List saveProcessSchemeReqVOS = esUtils.getEsDocument(FIELD_PLAN_ID, planId, PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL, SaveProcessSchemeModelDO.class); - // 查询排单对应的优化信息 - List optimizeBoardModelDOS = esUtils.getEsDocument(FIELD_PLAN_ID, planId, schemeDTOList.size(), ORDER_OPTIMIZE_PLATE_MODEL, OptimizeBoardModelDO.class); + if(CollUtil.isNotEmpty(saveProcessSchemeReqVOS)){ + // 查询排单对应的优化信息 + List optimizeBoardModelDOS = esUtils.getEsDocument(FIELD_PLAN_ID, planId, schemeDTOList.size(), ORDER_OPTIMIZE_PLATE_MODEL, OptimizeBoardModelDO.class); - if (CollUtil.isNotEmpty(optimizeBoardModelDOS)) { - - - if (CollUtil.isNotEmpty(saveProcessSchemeReqVOS)) { + if(CollUtil.isNotEmpty(optimizeBoardModelDOS)){ saveProcessSchemeReqVOS.forEach(f -> { List modelDOList = optimizeBoardModelDOS.stream().filter(o -> o.getPlanConfigId().equals(f.getPlanConfigId())).toList(); if (CollUtil.isNotEmpty(modelDOList)) { - String jsonString = toJsonString(modelDOList.get(0)); + OptimizeBoardModelDO optimizeBoardModelDO = modelDOList.get(0); + + String jsonString = toJsonString(optimizeBoardModelDO); f.setPlanOptimize(jsonString); + f.setGoodsNum(optimizeBoardModelDO.getBoardCount()); } }); - } else { - optimizeBoardModelDOS.forEach(f -> { - saveProcessSchemeReqVOS.add(SaveProcessSchemeModelDO.builder() - .planConfigId(f.getPlanConfigId()) - .planName(f.getPlanConfigName()) - .planId(f.getPlanId()) - .plateNum(f.getPlaceBlockNumber()) - .goodsNum(f.getBoardCount()) - .planOptimize(toJsonString(f)) - .build()); - }); } + } + planProcessSchemeList.setSaveProcessSchemeReqVOS(saveProcessSchemeReqVOS); - - - return planProcessSchemeList; } + // +// // 查询排单对应的优化信息 +// List optimizeBoardModelDOS = esUtils.getEsDocument(FIELD_PLAN_ID, planId, schemeDTOList.size(), ORDER_OPTIMIZE_PLATE_MODEL, OptimizeBoardModelDO.class); +// +// +// if (CollUtil.isNotEmpty(optimizeBoardModelDOS)) { +// +// +// if (CollUtil.isNotEmpty(saveProcessSchemeReqVOS)) { +// +// saveProcessSchemeReqVOS.forEach(f -> { +// +// List modelDOList = optimizeBoardModelDOS.stream().filter(o -> o.getPlanConfigId().equals(f.getPlanConfigId())).toList(); +// if (CollUtil.isNotEmpty(modelDOList)) { +// +// String jsonString = toJsonString(modelDOList.get(0)); +// +// f.setPlanOptimize(jsonString); +// } +// }); +// } else { +// optimizeBoardModelDOS.forEach(f -> { +// +// saveProcessSchemeReqVOS.add(SaveProcessSchemeModelDO.builder() +// .planConfigId(f.getPlanConfigId()) +// .planName(f.getPlanConfigName()) +// .planId(f.getPlanId()) +// .plateNum(f.getPlaceBlockNumber()) +// .goodsNum(f.getBoardCount()) +// .planOptimize(toJsonString(f)) +// .build()); +// +// }); +// } +// } + @Override diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java index f8b7bc353..8e4a645fd 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java @@ -1252,7 +1252,7 @@ public class OrderServiceImpl implements OrderService { String orderPlateModeList = toJsonString(BeanUtils.toBean(orderModelDOs, OrderPlateList.class)); orderModelCompressDO.setOrderModelZip(zipString(orderPlateModeList)); - // 板材造型数据添加 大板分类ID,实际ID,优化信息(默认为 false) + // 板材造型数据添加 大板分类ID,实际ID List orderGoodsPlateIds = BeanUtils.toBean(plateDO, OrderGoodsPlateIds.class); List finalGoodsDO = goodsDO; orderGoodsPlateIds.forEach(f-> @@ -1261,7 +1261,7 @@ public class OrderServiceImpl implements OrderService { orderModelDOs.forEach(f->{ f.setGoodsId(orderGoodsPlateIds.stream().filter(fo->fo.getId().equals(f.getPlateId())).map(OrderGoodsPlateIds::getActualGoodsId).toList().get(0)); f.setPlateGoodsId(orderGoodsPlateIds.stream().filter(fo->fo.getId().equals(f.getPlateId())).map(OrderGoodsPlateIds::getGoodsId).toList().get(0)); -// f.setIsOptimized(false); + }); } 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 f09ade425..163406109 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 @@ -394,6 +394,7 @@ where opi.organ_id = #{organId} and opi.plan_id = #{planId} + and op.is_optimized = false