diff --git a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/date/LocalDateTimeUtils.java b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/date/LocalDateTimeUtils.java index 7d1590cee..f63a2e93c 100644 --- a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/date/LocalDateTimeUtils.java +++ b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/date/LocalDateTimeUtils.java @@ -149,6 +149,29 @@ public class LocalDateTimeUtils { return dateSection; } + /** + * 生成起时间0点和止时间12点的区间 + * + * @param dateSection + * @return + */ + public static LocalDateTime[] generateTimeSection(LocalDate[] dateSection) { + if (ObjectUtil.isNotNull(dateSection) && dateSection.length == 2) { + + LocalDateTime[] result = new LocalDateTime[2]; + + // 开始时间:00:00:00 + result[0] = dateSection[0].atStartOfDay(); + + // 结束时间:23:59:59 + result[1] = dateSection[1].atTime(23, 59, 59); + + return result; + } + + return null; + } + /** * 生成当前时间的字符串,格式yyyyMMddHHmmss * diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/OrderPageReqVOCopy.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/OrderPageReqVOCopy.java index c649028d1..ccf0bfe46 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/OrderPageReqVOCopy.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/OrderPageReqVOCopy.java @@ -100,4 +100,15 @@ public class OrderPageReqVOCopy extends PageParam { // @Size(max = 20,message = "最多可同时查询20个订单") private List orderIds; + @Schema(description = "板材名称") + private String goodsName; + + @Schema(description = "材质") + private String material; + + @Schema(description = "颜色") + private String color; + + @Schema(description = "厚度") + private BigDecimal thickness; } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlanSaveReqVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlanSaveReqVO.java index 1dcfe7681..ac7a87911 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlanSaveReqVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/vo/PlanSaveReqVO.java @@ -35,6 +35,8 @@ public class PlanSaveReqVO { @Schema(description = "方案ID") private Long processId; + @Schema(description = "方案组名称") + private String processName; @Schema(description = "新增的小板ID") private List insertOrderPlateIds; diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/plan/PlanDO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/plan/PlanDO.java index 9ac08a45c..18e3cf903 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/plan/PlanDO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/plan/PlanDO.java @@ -65,10 +65,19 @@ public class PlanDO extends BaseDO { private Long machineId; /** - * 方案 ID + * 加工方案 ID */ private Long processId; + /** + * 上一次加工方案ID + */ + private Long previousProcessId; + + /** + * 加工方案名称 + */ + private String processName; /** * 计划时间 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 57a0c6cb0..6c6c9526a 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 @@ -17,6 +17,7 @@ import com.cf.imes.framework.common.exception.ServiceException; import com.cf.imes.framework.common.pojo.PageParam; import com.cf.imes.framework.common.pojo.PageResult; import com.cf.imes.framework.common.util.Assert.AssertUtils; +import com.cf.imes.framework.common.util.date.LocalDateTimeUtils; import com.cf.imes.framework.common.util.object.BeanUtils; import com.cf.imes.framework.es.core.service.ESDocumentService; import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; @@ -28,7 +29,6 @@ import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderPlanPlat import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderRespVO; import com.cf.imes.module.executor.controller.admin.plan.bo.OrderRoomBodyList; import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.PlatePlaceInfo; -import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.ProcessSchemeModelDO; import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.RemainBoardInfo; import com.cf.imes.module.executor.controller.admin.plan.vo.*; import com.cf.imes.module.executor.controller.admin.plate.vo.OrderPlateIds; @@ -153,9 +153,8 @@ public class PlanServiceImpl implements PlanService { LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); assert loginUser != null; - SystemConfigRespDTO systemConfigRespDTO = systemConfigApi.getDefaultProcessConfig().getCheckedData(); - - Long processId = systemConfigRespDTO.getId(); + Long processId = createReqVO.getProcessId(); + String processName = createReqVO.getProcessName(); List planDOS = new ArrayList<>(); @@ -174,7 +173,7 @@ public class PlanServiceImpl implements PlanService { List planActualGoodsLists = Optional.ofNullable(createReqVO.getPlanActualGoodsListList()).orElse(new ArrayList<>()); // 混单时判断是否进行板材对应并创建排单 - mixConfigPlateCorresponding(planActualGoodsLists, plateItemList, goodsItemList, planDOS, processId, loginUser, mixedType); + mixConfigPlateCorresponding(planActualGoodsLists, plateItemList, goodsItemList, planDOS, processId, processName, loginUser, mixedType); } else { @@ -185,29 +184,11 @@ public class PlanServiceImpl implements PlanService { // 查找材质和厚度和颜色相同的大板 Map> grouped = groupByMaterialAndThicknessAndColorAndBrand(goodsItemList); - createPlanAndPlateDataList(grouped, plateItemList, planDOS, processId, loginUser, PlanTypeEnum.ORDERPLAN.getType()); + createPlanAndPlateDataList(grouped, plateItemList, planDOS, processId, processName, loginUser, PlanTypeEnum.ORDERPLAN.getType()); } // 增加排单 planMapper.insertBatch(planDOS); - - // 排单对应的加工方案组的配置信息 - List processSchemeModelDOS; - - try { - processSchemeModelDOS = parseArray(systemConfigRespDTO.getSetting(), ProcessSchemeModelDO.class); - - }catch (Exception e){ - log.error(e.getMessage()); - throw new ServiceException(SYSTEM_PROCESS_SCHEME_CONFIG_FIELD_ERROR); - } - - planDOS.forEach(f-> processSchemeModelDOS.forEach(p->{ - p.setPlanId(f.getId()); - p.setProcessId(processId); - })); - - esUtils.saveEsDocument(PLAN_PROCESS_SCHEME_CONFIG.getIndex(),processSchemeModelDOS); } @@ -219,21 +200,28 @@ public class PlanServiceImpl implements PlanService { Long planId = updateReqVO.getId(); - if(planId != null) { + if (planId != null) { PlanDO planDO = validatePlan(planId); - if(updateReqVO.getProcessId() != null){ + Long currProcessId = updateReqVO.getProcessId(); + if (currProcessId != null) { - if(planDO.getStatus().equals(PlanStatusEnum.OPENING.getStatus()) || planDO.getStatus().equals(PlanStatusEnum.OPENED.getStatus())){ + if (planDO.getStatus().equals(PlanStatusEnum.OPENING.getStatus()) || planDO.getStatus().equals(PlanStatusEnum.OPENED.getStatus())) { throw new ServiceException(PLAN_PLATE_IS_CUT); } + // 如果方案组id发生改变需要记录前序的 + Long processId = planDO.getProcessId(); + if (ObjectUtil.notEqual(processId, currProcessId)) { + planDO.setPreviousProcessId(processId); + } - planDO.setProcessId(updateReqVO.getProcessId()); + planDO.setProcessId(currProcessId); + planDO.setProcessName(updateReqVO.getProcessName()); planMapper.updateById(planDO); - }else { + } else { planDO.setIsScheduled(updateReqVO.getIsScheduled()); planMapper.updateById(planDO); @@ -429,15 +417,9 @@ public class PlanServiceImpl implements PlanService { } - - List processIds = planDOPageResult.getRecords().stream().map(PlanDO::getProcessId).distinct().toList(); - List planIds = planDOPageResult.getRecords().stream().map(PlanDO::getId).toList(); - List configDOS = systemConfigApi.getProcessByIds(processIds).getData(); - - // 查询排单对应的大板板材信息以及 统计小板数量和面积 List plateInfoVOS = planItemMapper.selectOrderPlanPlateList(planIds, getUserOrganId()); @@ -454,8 +436,6 @@ public class PlanServiceImpl implements PlanService { planRespVOPageResult.forEach(e -> { - // 方案信息 - e.setProcessName(getProcessName(e.getProcessId(), configDOS)); // 大板信息列表 e.setPlateInfoList(getPlateInfoList(e.getId(), plateInfoVOS)); // 小板的总数量 @@ -525,8 +505,6 @@ public class PlanServiceImpl implements PlanService { planRespVOList.forEach(e -> { - // 机台信息 - e.setProcessName(getProcessName(e.getProcessId(), configDOS)); // 板材信息列表 e.setPlateInfoList(getPlateInfoList(e.getId(), plateInfoVOS)); // 小板总数量 @@ -585,7 +563,7 @@ public class PlanServiceImpl implements PlanService { .likeIfPresent(FIELD_CUSTOMER, pageReqVO.getConsignee()) .likeIfPresent(FIELD_CUSTOM_ORDER_NO, pageReqVO.getDefaultId()) .likeIfPresent(FIELD_ADDRESS, pageReqVO.getConsigneeAddress()) - .betweenIfPresent(FIELD_ORDER_DATE, pageReqVO.getCreateTime()); + .betweenIfPresent(FIELD_ORDER_DATE, LocalDateTimeUtils.generateTimeSection(pageReqVO.getCreateTime())); PageDTO page = new PageDTO<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()); IPage orderList = planItemMapper.selectOrderList(page, queryWrapperX, type, orderGoodsIds); List mainOrderList = orderList.getRecords(); @@ -643,7 +621,7 @@ public class PlanServiceImpl implements PlanService { .inIfPresent("oi.body_id", pageReqVO.getBodyId()); orderGoodsResps = planItemMapper.selectNoPlanGoodsByRoomAndBodyIds(page, queryWrapperX, getUserOrganId()); type = OrderPlanQueryTypeEnum.GOODS_ROOMBODY_QUERY.getType(); - }else { + } else { queryWrapperX .eq(FIELD_DELETED, false) .in(FIELD_STATUS, statusList) @@ -652,9 +630,13 @@ public class PlanServiceImpl implements PlanService { .likeIfPresent(FIELD_CUSTOMER, pageReqVO.getConsignee()) .likeIfPresent(FIELD_CUSTOM_ORDER_NO, pageReqVO.getDefaultId()) .likeIfPresent(FIELD_ADDRESS, pageReqVO.getConsigneeAddress()) - .betweenIfPresent(FIELD_ORDER_DATE, pageReqVO.getCreateTime()); + .betweenIfPresent(FIELD_ORDER_DATE, pageReqVO.getCreateTime()) + .likeIfPresent("og.goods_name", pageReqVO.getGoodsName()) + .likeIfPresent("og.material", pageReqVO.getMaterial()) + .likeIfPresent("og.color", pageReqVO.getColor()) + .eqIfPresent("og.thickness", pageReqVO.getThickness()); - orderGoodsResps = planItemMapper.selectNoPlanGoodsList(page,queryWrapperX,getUserOrganId()); + orderGoodsResps = planItemMapper.selectNoPlanGoodsList(page, queryWrapperX, getUserOrganId()); } @@ -683,11 +665,11 @@ public class PlanServiceImpl implements PlanService { List texture = records.stream().map(OrderGoodsResp::getTexture).distinct().toList(); queryWrapperX - .inIfPresent("og.goods_name",goodsName) - .inIfPresent("og.material",material) - .inIfPresent("og.color",color) - .inIfPresent("og.thickness",thickness) - .inIfPresent("og.brand",brand) + .inIfPresent("og.goods_name", goodsName) + .inIfPresent("og.material", material) + .inIfPresent("og.color", color) + .inIfPresent("og.thickness", thickness) + .inIfPresent("og.brand", brand) .inIfPresent("og.texture", texture); // 查询带订单列表的商品分组 @@ -1056,18 +1038,6 @@ public class PlanServiceImpl implements PlanService { return planDOS; } - - - - // 方案信息 - private String getProcessName(Long processId,List configDOS) { - return configDOS.stream() - .filter(f -> Objects.equals(f.getId(), processId)) - .map(SystemConfigRespDTO::getName) - .findAny() - .orElse(null); - } - // 板材信息列表 private List getPlateInfoList(Long planId, List infoVOList) { return infoVOList.stream() @@ -1638,6 +1608,7 @@ public class PlanServiceImpl implements PlanService { List goodsItemList, List planDOS, Long processId, + String processName, LoginUser loginUser, Integer mixedType){ @@ -1647,7 +1618,7 @@ public class PlanServiceImpl implements PlanService { if(CollUtil.isNotEmpty(planActualGoodsLists)) { // 有选实际大板的小板加大板创建排单 - getCreatePlanMultipleGoodsList(planActualGoodsLists, plateItemList, planDOS, processId, loginUser); + getCreatePlanMultipleGoodsList(planActualGoodsLists, plateItemList, planDOS, processId, processName, loginUser); // 没有选择实际大板的创建排单 if(MixConfigTypeEnum.SAMEMATERIALANDTHICKNESS.equals(mixedType)){ @@ -1660,7 +1631,7 @@ public class PlanServiceImpl implements PlanService { } if(CollUtil.isNotEmpty(grouped)) { - createPlanAndPlateDataList(grouped, plateItemList, planDOS, processId, loginUser, PlanTypeEnum.ORDERPLAN.getType()); + createPlanAndPlateDataList(grouped, plateItemList, planDOS, processId, processName, loginUser, PlanTypeEnum.ORDERPLAN.getType()); } }else { @@ -1675,7 +1646,7 @@ public class PlanServiceImpl implements PlanService { } - createPlanAndPlateDataList(grouped, plateItemList, planDOS, processId, loginUser, PlanTypeEnum.ORDERPLAN.getType()); + createPlanAndPlateDataList(grouped, plateItemList, planDOS, processId, processName, loginUser, PlanTypeEnum.ORDERPLAN.getType()); } @@ -1861,6 +1832,7 @@ public class PlanServiceImpl implements PlanService { List plateItemList, List planDOS, Long processId, + String processName, LoginUser loginUser) { Set orderIdSet = new HashSet<>(); @@ -1904,6 +1876,7 @@ public class PlanServiceImpl implements PlanService { .sort(sort.get()) .type(PlanTypeEnum.MIXEDORDERPLAN.getType()) .processId(processId) + .processName(processName) .orderNos(planOrderIdSet.toString()) .produceTime(null) .status(PlanStatusEnum.NOCUTTING.getStatus()) @@ -1927,6 +1900,7 @@ public class PlanServiceImpl implements PlanService { List plateItemList, List planDOS, Long processId, + String processName, LoginUser loginUser, Integer planType){ @@ -1970,6 +1944,7 @@ public class PlanServiceImpl implements PlanService { .sort(sort.get()) .type(planType) .processId(processId) + .processName(processName) .orderNos(planOrderIdSet.toString()) .produceTime(null) .status(PlanStatusEnum.NOCUTTING.getStatus())