From 834784c7d4699e6ea157d2569805b2193080f490 Mon Sep 17 00:00:00 2001 From: liuzhaotian Date: Wed, 15 Jan 2025 12:24:49 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=AA=E6=8E=92=E5=8D=95=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../es/core/service/ESDocumentService.java | 2 +- .../core/service/ESDocumentServiceImpl.java | 2 +- .../saveOptimize/CuttingStatusRespVO.java | 1 + .../saveOptimize/NoPlanFilterPlateReqVO.java | 18 ---- .../executor/dal/mysql/goods/GoodsMapper.java | 14 +-- .../executor/dal/mysql/plate/PlateMapper.java | 2 + .../optimizeplan/OptimizePlanServiceImpl.java | 39 +++++--- .../resources/mapper/goods/GoodsMapper.xml | 15 ++-- .../resources/mapper/order/OrderMapper.xml | 2 +- .../resources/mapper/plate/PlateMapper.xml | 88 +++++++++++++++++++ .../system/enums/ErrorCodeConstants.java | 3 +- 11 files changed, 131 insertions(+), 55 deletions(-) diff --git a/cf-framework/cf-spring-boot-starter-elasticsearch/src/main/java/com/cf/imes/framework/es/core/service/ESDocumentService.java b/cf-framework/cf-spring-boot-starter-elasticsearch/src/main/java/com/cf/imes/framework/es/core/service/ESDocumentService.java index 1d8eb2f4a..746368ba2 100644 --- a/cf-framework/cf-spring-boot-starter-elasticsearch/src/main/java/com/cf/imes/framework/es/core/service/ESDocumentService.java +++ b/cf-framework/cf-spring-boot-starter-elasticsearch/src/main/java/com/cf/imes/framework/es/core/service/ESDocumentService.java @@ -84,7 +84,7 @@ public interface ESDocumentService { * @param tClass 返回的类型 * @param map 修改内容的map */ - Result updateById(String idxName, String docId, Class tClass, Map map) throws IOException; + Result updateById(String idxName, String docId, Class tClass, Map map) throws IOException, ElasticsearchException; /** * 根据文档id查找文档,返回类型是ObjectNode diff --git a/cf-framework/cf-spring-boot-starter-elasticsearch/src/main/java/com/cf/imes/framework/es/core/service/ESDocumentServiceImpl.java b/cf-framework/cf-spring-boot-starter-elasticsearch/src/main/java/com/cf/imes/framework/es/core/service/ESDocumentServiceImpl.java index 2f7d0c62c..0b887858c 100644 --- a/cf-framework/cf-spring-boot-starter-elasticsearch/src/main/java/com/cf/imes/framework/es/core/service/ESDocumentServiceImpl.java +++ b/cf-framework/cf-spring-boot-starter-elasticsearch/src/main/java/com/cf/imes/framework/es/core/service/ESDocumentServiceImpl.java @@ -196,7 +196,7 @@ public class ESDocumentServiceImpl implements ESDocumentService { * 把年龄改成35 */ @Override - public Result updateById(String idxName, String docId, Class tClass, Map map) throws IOException { + public Result updateById(String idxName, String docId, Class tClass, Map map) throws IOException, ElasticsearchException { UpdateResponse response = elasticsearchClient.update(e -> e.index(idxName).id(docId).doc(map), tClass); return response.result(); } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/CuttingStatusRespVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/CuttingStatusRespVO.java index 3afcdbca4..8f9dfffa7 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/CuttingStatusRespVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/CuttingStatusRespVO.java @@ -31,6 +31,7 @@ public class CuttingStatusRespVO { private Integer cutedType; @Schema(description = "取消开料的大板编号") + @NotNull(message = "取消开料的大板编号不能为空") private List goodsNo; } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/NoPlanFilterPlateReqVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/NoPlanFilterPlateReqVO.java index 23825af87..38fbbbd50 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/NoPlanFilterPlateReqVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/saveOptimize/NoPlanFilterPlateReqVO.java @@ -16,10 +16,6 @@ import java.util.List; public class NoPlanFilterPlateReqVO { -// @Schema(description = "机台ID",requiredMode = Schema.RequiredMode.REQUIRED) -// private Long machineId; - - @Schema(description = "生产单ID",requiredMode = Schema.RequiredMode.REQUIRED) @NotEmpty(message = "生产单ID不能为空") private List orderIds; @@ -30,18 +26,4 @@ public class NoPlanFilterPlateReqVO { private List goodsIdList; -// @Schema(description = "实际优化的大板ID-这个只用于混单传入实际优化的大板ID") -// private String goodsId; -// -// -// @Schema(description = "板材过滤条件-传没有勾选的") -// @Size(max = 7,message = "板材过滤条件数量不正确") -// private List filter; -// -// -// @Schema(description = "是否混单", requiredMode = Schema.RequiredMode.REQUIRED, example = "false") -// @NotNull(message = "混单的判断条件不能为空") -// private Boolean isMix; - - } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/goods/GoodsMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/goods/GoodsMapper.java index 09f26df24..a104748e9 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/goods/GoodsMapper.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/goods/GoodsMapper.java @@ -149,7 +149,7 @@ public interface GoodsMapper extends BaseMapperX { IPage selectPlanGoodsListByPlanId(@Param("page") IPage page, @Param(Constants.WRAPPER) Wrapper wrapper); - List selectGoodsAndRemainPlate(@Param("ids") List ids,@Param("organId") Long organId); + List selectGoodsAndRemainPlate(@Param("orderIds") List orderIds,@Param("goodsIdList") List goodsIdList,@Param("organId") Long organId); @@ -206,16 +206,4 @@ public interface GoodsMapper extends BaseMapperX { List selectPlateGoodIds(@Param("orderIds") List orderIds, @Param("organId") Long organId); - - default List selectOrderGoodsList(List orderIds, List goodsIds, Long organId) { - return selectList(new LambdaQueryWrapperX() - .eq(GoodsDO::getOrganId, organId) - .eq(GoodsDO::getDeleted, false) -// .eq(GoodsDO::getPlanId,0) - .in(GoodsDO::getOrderId,orderIds) - .in(GoodsDO::getGoodsId,goodsIds) - .select(GoodsDO::getId)); - - } - } \ 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/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 3b85c6db3..19dc06556 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 @@ -176,6 +176,8 @@ public interface PlateMapper extends BaseMapperX { List selectPlateListByGoodsIds(@Param("orderIds") List orderIds,@Param("goodsIdList") List goodsIdList, @Param("organId") Long organId); + List selectNoPlanPlate(@Param("orderIds") List orderIds, @Param("organId") Long organId); + // 批量删除 default int deleteBatch(Collection orderId) { 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 3e9ea158b..822bd1b25 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 @@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.util.ObjectUtil; import co.elastic.clients.elasticsearch.ElasticsearchClient; +import co.elastic.clients.elasticsearch._types.ElasticsearchException; import co.elastic.clients.elasticsearch._types.SortOrder; import co.elastic.clients.elasticsearch._types.aggregations.Aggregate; import co.elastic.clients.elasticsearch.core.SearchRequest; @@ -27,11 +28,13 @@ 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.QueryWrapperX; import com.cf.imes.module.executor.controller.admin.orderParts.vo.OrderPartsRemark; -import com.cf.imes.module.executor.controller.admin.plan.bo.*; +import com.cf.imes.module.executor.controller.admin.plan.bo.OrderIds; +import com.cf.imes.module.executor.controller.admin.plan.bo.OrderSource; +import com.cf.imes.module.executor.controller.admin.plan.bo.PlanProcessSchemeList; +import com.cf.imes.module.executor.controller.admin.plan.bo.ProcessGroupList; import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.*; import com.cf.imes.module.executor.controller.admin.plan.vo.*; import com.cf.imes.module.executor.dal.dataobject.goods.CutedBoardInfo; -import com.cf.imes.module.executor.dal.dataobject.goods.GoodsDO; import com.cf.imes.module.executor.dal.dataobject.goods.OptimizeBoardModelDO; import com.cf.imes.module.executor.dal.dataobject.order.OrderDO; import com.cf.imes.module.executor.dal.dataobject.orderGroup.OrderGroupDO; @@ -448,9 +451,10 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { if(OrderPlateCutStatusEnum.NOCUTTING.getStatus().equals(cutedType)){ planDO.setStatus(PlanStatusEnum.OPENING.getStatus()); + planDO.setProduceTime(null); if(goodsNum.equals(0L)){ - planDO.setStatus(PlanStatusEnum.PUTINTOPRODUCTION.getStatus()); + planDO.setStatus(PlanStatusEnum.NOCUTTING.getStatus()); } planMapper.updateById(planDO); @@ -461,7 +465,10 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { orderIds.removeAll(orderIdList); if(CollUtil.isNotEmpty(orderIds)){ + List orderDOS = orderMapper.selectBatchIds(orderIds); + AssertUtils.notEmpty(orderDOS,ORDER_PLAN_ERROR); + orderDOS.forEach(f->f.setStatus(OrderStatusEnum.SORTED.getStatus())); orderMapper.updateBatch(orderDOS); } @@ -477,6 +484,8 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { planDO.setStatus(PlanStatusEnum.OPENING.getStatus()); List orderDOS = orderMapper.selectBatchIds(orderIds); + AssertUtils.notEmpty(orderDOS,ORDER_PLAN_ERROR); + orderDOS.forEach(f->f.setStatus(OrderStatusEnum.IN_PRODUCTION.getStatus())); planMapper.updateById(planDO); @@ -914,23 +923,20 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { @Override public OrderSource getNoPlanPlateData(NoPlanFilterPlateReqVO reqVO) { - List orderIds = reqVO.getOrderIds(); + List orderIds = Optional.ofNullable(reqVO.getOrderIds()).orElseThrow(() -> new ServiceException(THIS_ORDER_PLATE_DATA_ERROR)); - List goodsDOS = goodsMapper.selectOrderGoodsList(orderIds, reqVO.getGoodsIdList(), getUserOrganId()); + List goodsIdList = Optional.ofNullable(reqVO.getGoodsIdList()).orElseThrow(() -> new ServiceException(THIS_ORDER_PLATE_DATA_ERROR)); - AssertUtils.notEmpty(goodsDOS,ORDER_GOODS_DATA_ERROR); - - - List ids = goodsDOS.stream().map(GoodsDO::getId).toList(); - - List goodsReqVOS = goodsMapper.selectGoodsAndRemainPlate(ids, getUserOrganId()); + List goodsReqVOS = goodsMapper.selectGoodsAndRemainPlate(orderIds,goodsIdList, getUserOrganId()); AssertUtils.notEmpty(goodsReqVOS,ORDER_GOODS_DATA_ERROR); List orderDOS = orderMapper.selectBatchIds(orderIds); - List plateDetailRespVOS = plateMapper.selectPlateListByGoodsIds(orderIds,ids,getUserOrganId()); + + List plateDetailRespVOS = plateMapper.selectNoPlanPlate(orderIds,getUserOrganId()); + for (PlateDetailRespVO plateDetailsRespVO : plateDetailRespVOS) { StringBuilder name = new StringBuilder(); @@ -1476,9 +1482,10 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { 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(); @@ -1496,8 +1503,10 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { 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(); @@ -1519,7 +1528,7 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { esDocumentService.updateById(ORDER_OPTIMIZE_PLATE_MODEL, optimizeBoardModelDO.getId(), HashMap.class, objectObjectHashMap); - } catch (IOException e) { + } catch (IOException | ElasticsearchException e) { log.error(e.getMessage()); throw new ServiceException(ES_DATA_ERROR); } @@ -1527,6 +1536,8 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { List plateDOS = plateMapper.selectPlateByPlateNo(orderIds, planNo, getUserOrganId()); + AssertUtils.notEmpty(plateDOS,THIS_PLAN_PLATE_DATA_ERROR); + plateDOS.forEach(f->{ f.setIsCutted(cutedType); }); diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/goods/GoodsMapper.xml b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/goods/GoodsMapper.xml index 170075729..8e8bee140 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/goods/GoodsMapper.xml +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/goods/GoodsMapper.xml @@ -204,18 +204,21 @@ resultType="com.cf.imes.module.executor.controller.admin.plan.vo.GoodsReqVO"> select - og.*, - orp.id as remainId + og.* from order_goods og - left join order_remain_plate orp on og.organ_id = orp.organ_id and og.id = orp.goods_id where og.organ_id = #{organId} and og.deleted = false - and og.id in - - #{ids} + and og.order_id in + + #{orderIds} + and og.goods_id in + + #{goodsIdList} + + diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/order/OrderMapper.xml b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/order/OrderMapper.xml index 2f873d651..299c1b426 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/order/OrderMapper.xml +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/order/OrderMapper.xml @@ -456,8 +456,8 @@ from orders o left join order_plate op on o.organ_id = op.organ_id and o.id = op.order_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 left join order_goods og on op.organ_id = og.organ_id and op.order_id = og.order_id and op.goods_id = og.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 0662b762c..dd544fbbc 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 @@ -454,6 +454,94 @@ + + + + + + + + + + + + + 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 3dc4d566d..557ca002a 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 @@ -326,7 +326,6 @@ public class ErrorCodeConstants { public static final ErrorCode PLAN_BODY_DATA_ERROR = new ErrorCode(1_002_041_019, "当前排单的生产单对应的柜体数据异常,请查看柜体数据或联系客服"); public static final ErrorCode CREATE_PLAN_DATA_ERROR = new ErrorCode(1_002_041_020, "排单优化数据异常,请重新进行优化或者删除排单然后重新创建排单"); public static final ErrorCode PLAN_MIXED_ORDER_ERROR = new ErrorCode(1_002_041_021, "当前选择的混排板材条件:' {} ' 不相同,无法混排,请重新选择板材进行排单!"); - public static final ErrorCode BRANCHING_SETTING_ERROR = new ErrorCode(1_002_041_022, "当前分线配置有误,请重新进行保存"); public static final ErrorCode BRANCHING_DEFAULT_SETTING_ERROR = new ErrorCode(1_002_041_023, "当前组织智能分线无默认配置,请进行配置"); public static final ErrorCode ADVANCED_SCREENING_CONFIG_ERROR = new ErrorCode(1_002_041_024, "当前筛选的配置有误,请重新进行配置"); public static final ErrorCode CONFIG_DATA_ERROR = new ErrorCode(1_002_041_025, "当前配置为空,保存失败,请添加配置后再保存"); @@ -342,6 +341,8 @@ public class ErrorCodeConstants { public static final ErrorCode PLAN_PLATE_DATA_ERROR = new ErrorCode(1_002_041_035, "当前排单没有选择板材数据,请进行选择"); public static final ErrorCode DELETE_PLAN_PLATE_DATA_ERROR = new ErrorCode(1_002_041_036, "当前删除的小板信息有误,请检查小板是否存在或重新创建排单"); public static final ErrorCode PLAN_PLATE_OPTIMIZE_DATA_ERROR = new ErrorCode(1_002_041_037, "当前排单对应的优化数据异常,请重新进行优化"); + public static final ErrorCode THIS_ORDER_PLATE_DATA_ERROR = new ErrorCode(1_002_041_038, "当前选择的生产单数据为空,请检查生产单信息或稍后重试"); + public static final ErrorCode THIS_PLAN_PLATE_DATA_ERROR = new ErrorCode(1_002_041_039, "当前排单对应的板材数据为空,请重新进行排单或检查生产单对应的板材信息");