diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/SavePlanPlateResultReqVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/SavePlanPlateResultReqVO.java index 07be0cc95..c4d50990e 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/SavePlanPlateResultReqVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/SavePlanPlateResultReqVO.java @@ -6,7 +6,6 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import javax.validation.constraints.NotEmpty; -import javax.validation.constraints.NotNull; import java.util.List; @Data @@ -18,11 +17,11 @@ public class SavePlanPlateResultReqVO { private List optimizeBoardModelDOS; - @Schema(description = "方案组的配置项ID", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "方案组的配置项ID不能为空") + @Schema(description = "方案组的配置项ID") +// @NotNull(message = "方案组的配置项ID不能为空") private Long planConfigId; - @Schema(description = "方案组的ID", requiredMode = Schema.RequiredMode.REQUIRED) + @Schema(description = "方案组的ID") // @NotNull(message = "方案组的ID不能为空") private Long processId; 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 24e0c90c7..a6dc050de 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 @@ -31,6 +31,10 @@ public class OptimizeBoardModelDO extends ESDocument { private List orderId; + @Schema(description = "方案组的ID") + private Long processId; + + @Schema(description = "方案组的配置项ID") private Long planConfigId; 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 7c0e63bd6..6639485dc 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 @@ -25,6 +25,7 @@ import com.cf.imes.framework.common.exception.ServiceException; import com.cf.imes.framework.common.pojo.PageResult; import com.cf.imes.framework.common.util.Assert.AssertUtils; import com.cf.imes.framework.common.util.object.BeanUtils; +import com.cf.imes.framework.es.core.dal.ESDocument; import com.cf.imes.framework.es.core.service.ESDocumentService; import com.cf.imes.framework.mybatis.core.query.QueryWrapperX; import com.cf.imes.framework.security.core.LoginUser; @@ -144,6 +145,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { private static final String FIELD_SORT = " order by createTime desc "; private static final String FIELD_IS_OPTIMIZED = " op.is_optimized"; private static final String FIELD_PLAN_CONFIG_ID = "planConfigId"; + private static final String FIELD_PROCESS_ID = "processId"; private static final String FIELD_UPDATETIME = "updateTime"; private static final String ES_ORDER_MODEL_DATA_ERROR = "生产单板材造型信息ES文档查询数据异常: "; @@ -575,7 +577,6 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { List orderIds = JSON.parseArray(orderNos).toJavaList(Long.class).stream().distinct().toList(); -// List orderIds = goodsDOS.stream().map(GoodsReqVO::getOrderId).distinct().toList(); List ids = goodsDOS.stream().map(GoodsReqVO::getId).toList(); @@ -603,7 +604,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { List orderDOS = orderMapper.selectBatchIds(orderIds); AssertUtils.notEmpty(orderDOS,ORDER_PLAN_ERROR); -// + // 造型数据的尺寸长度 Integer orderModelSize = plateDetailRespVOS.size(); @@ -625,12 +626,6 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { // 获取混单时选择的实际开料的大板信息 List planActualGoodsModelDOS = esUtils.getEsDocument(FIELD_PLAN_ID, planId, PLAN_ACTUAL_GOODS_MODEL, PlanActualGoodsModelDO.class); -// PlanActualGoodsModelDO planActualGoodsModelDO = new PlanActualGoodsModelDO(); -// -// if(CollUtil.isNotEmpty(planActualGoodsModelDOS)){ -// -// planActualGoodsModelDO = planActualGoodsModelDOS.get(0); -// } // 查询生产单对应的配件信息 List printOrderPartsRespVOS = orderPartsMapper.selectPartList(orderIds, getUserOrganId()); @@ -678,45 +673,49 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { OptimizeBoardModelDO boardModelDO = req.getOptimizeBoardModelDOS().get(0); - Long processId = req.getProcessId(); - -// List actualGoodsLists = Optional.ofNullable(boardModelDO.getActualGoodsList()).orElse(new ArrayList<>()); -// -// AssertUtils.notEmpty(actualGoodsLists,PLAN_NO_ACTUAL_PLATE); - Long planId = boardModelDO.getPlanId(); + +// // 延长操作用户的缓存时间 +// redisInsertPlanCreator(planId); +// +// // 校验是否当前登陆的用户操作排单 +// validatePlanCreator(planId); + + PlanDO planDO = planMapper.selectById(planId); AssertUtils.notEmpty(planDO,ORDER_PLAN_DATE_ERROR); - List optimizeBoardModelDOS = esUtils.getEsDocument(FIELD_PLAN_CONFIG_ID,FIELD_PLAN_ID,req.getPlanConfigId(), planId, ORDER_OPTIMIZE_PLATE_MODEL, OptimizeBoardModelDO.class); + boardModelDO.setProcessId(req.getProcessId()); + + + +// List optimizeBoardModelDOS = esUtils.getEsDocument(FIELD_PLAN_CONFIG_ID,FIELD_PLAN_ID,req.getPlanConfigId(), planId, ORDER_OPTIMIZE_PLATE_MODEL, OptimizeBoardModelDO.class); -// List isLocks = new ArrayList<>(); // 查询原优化信息然后进行判断 - if(CollUtil.isNotEmpty(optimizeBoardModelDOS)){ - - if(planDO.getStatus().equals(PlanStatusEnum.OPENED.getStatus())){ - throw exception(THIS_PLAN_OPTIMIZE_DATA_ERROR); - } - -// isLocks.addAll(optimizeBoardModelDOS.stream().map(OptimizeBoardModelDO::getIsLock).distinct().toList()); - - OptimizeBoardModelDO optimizeBoardModelDO = optimizeBoardModelDOS.get(0); - - Boolean isLock = Optional.ofNullable(optimizeBoardModelDO.getIsLock()).orElse(false); - - LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); - assert loginUser != null; - - Boolean data = permissionApi.hasAnyPermissions(loginUser.getId(), "placeorder:list").getCheckedData(); - - if(Boolean.TRUE.equals(isLock) && planDO.getIsScheduled().equals(true) && Boolean.FALSE.equals(data)){ - throw exception(THIS_PLAN_OPTIMIZE_IS_LOCK); - } - - } +// if(CollUtil.isNotEmpty(optimizeBoardModelDOS)){ +// +// if(planDO.getStatus().equals(PlanStatusEnum.OPENED.getStatus())){ +// throw exception(THIS_PLAN_OPTIMIZE_DATA_ERROR); +// } +// +// +// OptimizeBoardModelDO optimizeBoardModelDO = optimizeBoardModelDOS.get(0); +// +// Boolean isLock = Optional.ofNullable(optimizeBoardModelDO.getIsLock()).orElse(false); +// +// LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); +// assert loginUser != null; +// +// Boolean data = permissionApi.hasAnyPermissions(loginUser.getId(), "placeorder:list").getCheckedData(); +// +// if(Boolean.TRUE.equals(isLock) && planDO.getIsScheduled().equals(true) && Boolean.FALSE.equals(data)){ +// throw exception(THIS_PLAN_OPTIMIZE_IS_LOCK); +// } +// +// } List plateDOS = planItemMapper.selectOrderPlanPlateListByPlanId(planId,getUserOrganId()); @@ -730,19 +729,23 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { plateMapper.updateBatch(plateDOS); } - // 这个逻辑暂时先不用,等后面方案组逻辑完善后可加入 -// if(processId != null && !planDO.getProcessId().equals(processId)) { -// -// validatePlanStatus(planDO,isLocks); -// -// planMapper.updateById(planDO.setProcessId(processId)); -// -// } + if(!planDO.getProcessId().equals(req.getProcessId())) { - esUtils.deleteEsDocument(FIELD_PLAN_ID,FIELD_PLAN_CONFIG_ID,planId,req.getPlanConfigId(),ORDER_OPTIMIZE_PLATE_MODEL); + planDO.setProcessId(req.getProcessId()); + planMapper.updateById(planDO); + List document = esUtils.getEsDocument(FIELD_PLAN_ID, planId, ORDER_OPTIMIZE_PLATE_MODEL, OptimizeBoardModelDO.class); + + if(CollUtil.isNotEmpty(document)) { + List list = document.stream().filter(f -> f.getProcessId() != null).map(m -> m.getProcessId()).toList(); + + if(CollUtil.isNotEmpty(list)) { + esUtils.deleteEsDocument(FIELD_PLAN_ID, FIELD_PROCESS_ID, planId, req.getProcessId(), ORDER_OPTIMIZE_PLATE_MODEL); + } + } + } // 保存优化后的大板数据 - esUtils.saveEsDocument(ORDER_OPTIMIZE_PLATE_MODEL,req.getOptimizeBoardModelDOS()); + esUtils.saveEsDocument(ORDER_OPTIMIZE_PLATE_MODEL, (List) boardModelDO); // ES文档数据刷新