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 aa0be440f..1e2c47dfb 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 @@ -139,6 +139,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { private PlanItemMapper planItemMapper; private static final String FIELD_ORDER_ID = "orderId"; + private static final String FIELD_PLATE_ID = "plateId"; private static final String FIELD_PLAN_ID = "planId"; private static final String FIELD_GOODS_ID = "goodsId"; private static final String FIELD_SORT = " order by createTime desc "; @@ -520,8 +521,9 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { // 造型数据的尺寸长度 Integer orderModelSize = plateDOS.size(); + List plateIdList = plateDOS.stream().map(PlateDetailRespVO::getPlateId).distinct().toList(); - List orderModelDOS = esUtils.getEsDocument(FIELD_ORDER_ID, orderId, orderModelSize, OptimizePlanService.ORDER_PLATE_MODEL, OrderModelDO.class); + List orderModelDOS = esUtils.getEsDocument(FIELD_ORDER_ID,FIELD_PLATE_ID, orderId,plateIdList, orderModelSize, OptimizePlanService.ORDER_PLATE_MODEL, OrderModelDO.class); AssertUtils.notEmpty(orderModelDOS,ORDER_PLATE_MODEL_DATE_ERROR); @@ -611,7 +613,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { // 需要查询小板造型信息的板材ID List plateIds = plateDetailRespVOS.stream().map(PlateDetailRespVO::getPlateId).toList(); - List orderModelDOS = esUtils.getEsDocument("plateId", plateIds, orderModelSize, OptimizePlanService.ORDER_PLATE_MODEL, OrderModelDO.class); + List orderModelDOS = esUtils.getEsDocument(FIELD_PLATE_ID, plateIds, orderModelSize, OptimizePlanService.ORDER_PLATE_MODEL, OrderModelDO.class); AssertUtils.notEmpty(orderModelDOS,ORDER_PLAN_PLATE_MODEL_DATE_ERROR); @@ -698,7 +700,9 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { } - esUtils.deleteEsDocument(FIELD_PLAN_ID, FIELD_PROCESS_ID, planId, req.getProcessId(), ORDER_OPTIMIZE_PLATE_MODEL); + if(boardModelDO.getProcessId() == null) { + esUtils.deleteEsDocument(FIELD_PLAN_ID, FIELD_PROCESS_ID, planId, req.getProcessId(), ORDER_OPTIMIZE_PLATE_MODEL); + } }else { @@ -801,22 +805,11 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { // 如果方案组ID不相等,就删除旧的方案组信息,再保存新的加工方案组ID if(!planDO.getProcessId().equals(processId)){ -// 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)); @@ -837,8 +830,6 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { esUtils.saveEsDocument(PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL,schemeModelDOS); -// esUtils.refresh(PLAN_PROCESS_SCHEME_OPTIMIZE_MODEL); - } @@ -883,12 +874,9 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { planProcessSchemeList.setProcessSchemeList(schemeDTOList); - validatePlanExists(planId); // 查询排单对应的方案组信息 -// 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); @@ -913,12 +901,10 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { } }); - } } - planProcessSchemeList.setSaveProcessSchemeReqVOS(saveProcessSchemeReqVOS); @@ -1039,7 +1025,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { // 需要查询的小板造型信息的板材ID List plateIds = plateDetailRespVOS.stream().map(PlateDetailRespVO::getPlateId).toList(); - List orderModelDOS = esUtils.getEsDocument("plateId", plateIds, orderModelSize, OptimizePlanService.ORDER_PLATE_MODEL, OrderModelDO.class); + List orderModelDOS = esUtils.getEsDocument(FIELD_PLATE_ID, plateIds, orderModelSize, OptimizePlanService.ORDER_PLATE_MODEL, OrderModelDO.class); AssertUtils.notEmpty(plateDetailRespVOS,ORDER_PLATE_MODEL_DATE_ERROR); @@ -1131,7 +1117,6 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { - if(CharSequenceUtil.isNotBlank(modelDataFilter)){ Map> orderPlateModelMap = getOrderPlateModelList(conversion(orderIdLists.toString()), null, logicalOperator, modelDataFilter, pageReqVO,FIELD_ORDER_ID); diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/elasticsearch/EsUtils.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/elasticsearch/EsUtils.java index 33867cee2..84c69a797 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/elasticsearch/EsUtils.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/elasticsearch/EsUtils.java @@ -219,6 +219,39 @@ public class EsUtils { } + public List getEsDocument(String filedName1,String filedName2, Long value1,List value2,Integer size, String index, Class targetClass) { + + List fieldValues2 = value2.stream().map(FieldValue::of).toList(); + SearchRequest.Builder builder = new SearchRequest.Builder(); + builder.index(index); + builder.size(size); + + builder.query(q->q.bool(b->b.filter(f->{ + f.term(t->t.field(filedName1).value(value1)); + f.terms(t->t.field(filedName2).terms(e->e.value(fieldValues2))); + return f; + }))); + + try { + SearchResponse search = elasticsearchClient.search(builder.build(), targetClass); + List> hits = search.hits().hits(); + if (CollUtil.isNotEmpty(hits)) { + return hits.stream().map(Hit::source).toList(); + } + return new ArrayList<>(); + }catch (JsonpMappingException e){ + log.error(e.getMessage()); + throw new ServiceException(ORDER_DATA_ERROR); + }catch (IOException | ElasticsearchException e) { + log.error(e.getMessage()); + throw new ServiceException(DATA_DATA_ERROR); + } + } + + + + + // ES 文档删除 public void deleteEsDocument(String filedName,Long value, String index) { 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 a0079d424..255ace390 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 @@ -304,24 +304,22 @@ 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 ORDER_PLATE_ERROR = new ErrorCode(1_002_041_002, "生产单对应的板材数据为空,请检查是否为空单或重新导入生产单"); 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, "生产单对应的板材造型数据为空,请重新导入生产单"); public static final ErrorCode ORDER_PLAN_PLATE_ERROR = new ErrorCode(1_002_041_007, "当前排单对应的板材数据有异常,请查看板材信息"); public static final ErrorCode ORDER_PLAN_ERROR = new ErrorCode(1_002_041_008, "当前排单对应的生产单数据为空,请删掉排单并重新创建排单"); public static final ErrorCode ORDER_PLAN_PLATE_MODEL_DATE_ERROR = new ErrorCode(1_002_041_009, "当前排单对应的板材造型数据为空,请重新导入生产单并排单"); - public static final ErrorCode ORDER_GOODS_DATA_ERROR = new ErrorCode(1_002_041_010, "当前大板数据异常,请检查大板信息或者联系客服"); - public static final ErrorCode ORDER_PACK_DATA_NULL_ERROR = new ErrorCode(1_002_041_011, "当前包裹数据为空,请重新查看包裹数据或联系客服"); + public static final ErrorCode ORDER_GOODS_DATA_ERROR = new ErrorCode(1_002_041_010, "当前大板数据异常,请重新导入该生产单"); + public static final ErrorCode ORDER_PACK_DATA_NULL_ERROR = new ErrorCode(1_002_041_011, "当前包裹数据为空,请重新查看包裹数据"); public static final ErrorCode ORDER_PLAN_NO_OPTIMIZE_UPDATE_ERROR = new ErrorCode(1_002_041_014, "当前排单还未保存优化结果,无法对开料结果进行修改"); public static final ErrorCode ORDER_NO_DATA_ERROR = new ErrorCode(1_002_041_015, "生产单信息为空,请检查生产单信息"); public static final ErrorCode ORDER_PACK_ERROR = new ErrorCode(1_002_041_018, "当前生产单信息有误,请重新选择包裹"); public static final ErrorCode ORDER_PACK_DATA_ERROR = new ErrorCode(1_002_041_019, "当前包裹信息有误,请重新选择包裹"); - public static final ErrorCode PLAN_BODY_DATA_ERROR = new ErrorCode(1_002_041_019, "当前排单的生产单对应的柜体数据异常,请查看柜体数据或联系客服"); public static final ErrorCode ADVANCED_SCREENING_CONFIG_ERROR = new ErrorCode(1_002_041_024, "当前筛选的配置有误,请重新进行配置"); public static final ErrorCode PLAN_GOODS_DATA_ERROR = new ErrorCode(1_002_041_027, "当前排单未保存大板和小板信息,请重新进行排单"); public static final ErrorCode PLAN_PLATE_IS_CUTTED = new ErrorCode(1_002_041_028, "当前删除的小板中已有小板开料,无法删除!"); - 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, "当前板材已有小板创建板材,请重新查询生产单信息再创建"); @@ -342,6 +340,8 @@ public class ErrorCodeConstants { public static final ErrorCode THIS_PLATE_IS_OPTIMIZE = new ErrorCode(1_002_041_049, "小板:{},已开料,无法删除,请重新选择小板再删除"); public static final ErrorCode PLAN_INSERT_PLATE_ERROR = new ErrorCode(1_002_041_050, "当前排单无法新增自增小板,请删除排单重新创建"); public static final ErrorCode PART_PACK_DATA_ERROR = new ErrorCode(1_002_041_051, "当前包裹数据为空,无法进行操作,请删除包裹"); + public static final ErrorCode PLAN_IS_OPERATOR = new ErrorCode(1_002_041_052, "当前排单正在被用户:{} 操作,无法继续操作"); + public static final ErrorCode PLAN_IS_OPERATOR_NOT = new ErrorCode(1_002_041_053, "排单:{} ,正在被用户:{} 操作,无法继续操作");