From 3fdaecf86acb46fb5cd69b3a80fb5fffb28d4af7 Mon Sep 17 00:00:00 2001 From: gaoqr <13665037151@163.com> Date: Mon, 3 Aug 2026 11:35:37 +0800 Subject: [PATCH] =?UTF-8?q?getOrderSource=E5=A2=9E=E5=8A=A0=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=E6=8E=92=E5=8D=95id=E3=80=81=E6=9D=BF=E4=BB=B6id?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E3=80=81=E8=AE=A2=E5=8D=95id=E5=88=97?= =?UTF-8?q?=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/admin/plan/bo/OrderSource.java | 9 +++++ .../executor/dal/mysql/plan/PlanMapper.java | 23 ++++------- .../executor/dal/mysql/plate/PlateMapper.java | 24 +++++++++++- .../optimizeplan/OptimizePlanServiceImpl.java | 29 ++++++++++++++ .../service/plan/PlanServiceImpl.java | 39 +++++++++---------- .../main/resources/mapper/plan/PlanMapper.xml | 26 +------------ .../resources/mapper/plate/PlateMapper.xml | 27 ++++++++++++- 7 files changed, 115 insertions(+), 62 deletions(-) diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/bo/OrderSource.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/bo/OrderSource.java index 929cd1cc3..5b3c6014e 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/bo/OrderSource.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/plan/bo/OrderSource.java @@ -32,6 +32,15 @@ import java.util.List; @JsonInclude(JsonInclude.Include.NON_NULL) public class OrderSource { + @Schema(description = "组件生产系统来源订单 ID 列表") + private List sourceOrderIds; + + @Schema(description = "组件生产系统来源板件 ID 列表") + private List sourceBlockItemList; + + @Schema(description = "组件生产系统生产排单 ID") + private Long producingPlanOrderId; + @Schema(description = "优化后的大板数据") private List optimizeBoardModelDOS; diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plan/PlanMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plan/PlanMapper.java index aca6954e1..de685d0d8 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plan/PlanMapper.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/plan/PlanMapper.java @@ -22,7 +22,6 @@ import java.time.LocalDateTime; import java.util.Arrays; import java.util.Collection; import java.util.List; -import java.util.Set; /** * 订单开料排单 Mapper @@ -142,22 +141,14 @@ public interface PlanMapper extends BaseMapperX { List selectPlanGoodsList(@Param("planId") Long planId, @Param("organId") Long organId); /** - * 统计涉及移除小板的排单下还存在的排单数量 + * 查询指定排单当前剩余的全部订单 ID。 * - * @param planIds - * @param organId - * @return + * @param planIds 排单 ID 列表 + * @param organId 组织 ID + * @return 排单与剩余订单 ID 的对应关系列表 */ - List countDeletePlanPlate(@Param("planIds") List planIds, @Param("orderIds") Set orderIds, @Param("organId") Long organId); - - /** - * 查询排单下订单id的列表 - * - * @param planIds - * @param organId - * @return - */ - List selectPlanOrderIds(@Param("planIds") List planIds, @Param("orderIds") Set orderIds, @Param("organId") Long organId); + List selectPlanOrderIds(@Param("planIds") List planIds, + @Param("organId") Long organId); /** * 查询排单+订单下订单材质orderGoodsId @@ -201,4 +192,4 @@ public interface PlanMapper extends BaseMapperX { * @return */ int physicalDeleteByIds(@Param("ids") Collection ids, @Param("organId") Long organId); -} \ 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 50c07a349..0483b948a 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 @@ -474,4 +474,26 @@ public interface PlateMapper extends BaseMapperX { * @return */ List selectPlanIdsByOrderCondition(@Param("orderIds") List orderIds, @Param("customer") String customer, @Param("organId") Long organId); -} \ No newline at end of file + + /** + * 查询订单下组件生产系统的来源板件 ID 列表。 + * + * @param orderId 订单 ID + * @param organId 组织 ID + * @return 来源板件 ID 列表 + */ + List selectSourceBlockItemIdsByOrderId(@Param("orderId") Long orderId, + @Param("organId") Long organId); + + /** + * 查询排单下组件生产系统的来源板件 ID 列表。 + * + * @param orderIds 排单关联的订单 ID 列表,用于匹配 organ_id、order_id、plan_id 联合索引 + * @param planId 排单 ID + * @param organId 组织 ID + * @return 来源板件 ID 列表 + */ + List selectSourceBlockItemIdsByPlanId(@Param("orderIds") List orderIds, + @Param("planId") Long planId, + @Param("organId") Long organId); +} 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 df7d58676..a20a4e5fd 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 @@ -303,6 +303,9 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { // } return OrderSource.builder() + .sourceOrderIds(collectSourceOrderIds(Collections.singletonList(orderDO))) + .sourceBlockItemList(normalizeSourceIds( + plateMapper.selectSourceBlockItemIdsByOrderId(orderId, getUserOrganId()))) .orderList(Collections.singletonList(orderDO)) .goodsList(goodsDOS) .plateList(BeanUtil.copyToList(plateDOS, PlateDetailRespVO.class)) @@ -386,6 +389,10 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { // } return OrderSource.builder() + .sourceOrderIds(collectSourceOrderIds(orderDOS)) + .sourceBlockItemList(normalizeSourceIds( + plateMapper.selectSourceBlockItemIdsByPlanId(orderIds, planId, getUserOrganId()))) + .producingPlanOrderId(planDO.getProducingPlanOrderId()) .orderList(orderDOS) .plan(planDO) .goodsList(goodsDOS) @@ -399,6 +406,28 @@ public class OptimizePlanServiceImpl implements OptimizePlanService { .build(); } + private List collectSourceOrderIds(List orders) { + if (CollUtil.isEmpty(orders)) { + return Collections.emptyList(); + } + return normalizeSourceIds(orders.stream() + .filter(Objects::nonNull) + .map(OrderDO::getSourceOrderIds) + .filter(CollUtil::isNotEmpty) + .flatMap(Collection::stream) + .toList()); + } + + private List normalizeSourceIds(List sourceIds) { + if (CollUtil.isEmpty(sourceIds)) { + return Collections.emptyList(); + } + return sourceIds.stream() + .filter(StringUtils::isNotBlank) + .distinct() + .toList(); + } + // 保存优化后的数据 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 73045abe3..aa63e7498 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 @@ -1337,31 +1337,30 @@ public class PlanServiceImpl implements PlanService { // 移除排单板件 & 重新计算订单和材质下的数量和面积 removePlanOrderAndGoodsPlate(plateDOS, deleteOrderIds); - // 删除已无排单板件的排单 - List deleteEmptyPlanIdList = planMapper.countDeletePlanPlate(deletePlanIds, deleteOrderIds, organId) - .stream().filter(m -> m.getCount() == 0).map(OrderPlanPlateStatisticsRespVO::getPlanId).distinct().collect(Collectors.toList()); + // 查询受影响排单的全部剩余订单,同时用于重算订单列表和识别空排单 + List orderPlanOrderIdList = + planMapper.selectPlanOrderIds(deletePlanIds, organId); + Map> planIdToOrderIds = orderPlanOrderIdList.stream() + .collect(Collectors.groupingBy( + OrderPlanPlateStatisticsRespVO::getPlanId, + LinkedHashMap::new, + Collectors.mapping(OrderPlanPlateStatisticsRespVO::getOrderId, + Collectors.collectingAndThen(Collectors.toList(), + orderIds -> orderIds.stream().distinct().toList())))); + List deleteEmptyPlanIdList = deletePlanIds.stream() + .filter(planId -> !planIdToOrderIds.containsKey(planId)) + .toList(); if (CollUtil.isNotEmpty(deleteEmptyPlanIdList)) { - planMapper.physicalDeleteByIds(deleteEmptyPlanIdList, getUserOrganId()); + planMapper.physicalDeleteByIds(deleteEmptyPlanIdList, organId); } // 更新排单下的订单列表 - List orderPlanOrderIdList = planMapper.selectPlanOrderIds(deletePlanIds, deleteOrderIds, organId); - if(CollUtil.isNotEmpty(orderPlanOrderIdList)){ - Map> planIdToOrderIds = orderPlanOrderIdList.stream() - .collect(Collectors.groupingBy( - row -> row.getPlanId(), - Collectors.mapping(OrderPlanPlateStatisticsRespVO::getOrderId, Collectors.toList()) - )); - for (Map.Entry> entry : planIdToOrderIds.entrySet()) { - Long planId = entry.getKey(); - String orderNos = entry.getValue().toString(); - - planMapper.update(new LambdaUpdateWrapper() - .eq(PlanDO::getId, planId) - .eq(PlanDO::getOrganId, organId) - .set(PlanDO::getOrderNos, orderNos)); - } + for (Map.Entry> entry : planIdToOrderIds.entrySet()) { + planMapper.update(new LambdaUpdateWrapper() + .eq(PlanDO::getId, entry.getKey()) + .eq(PlanDO::getOrganId, organId) + .set(PlanDO::getOrderNos, entry.getValue().toString())); } syncDeletedProducingPlanBlocks( deletePlans, sourceBlockIdsByPlanId, new HashSet<>(deleteEmptyPlanIdList)); diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plan/PlanMapper.xml b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plan/PlanMapper.xml index 2e778c0d5..f764cf9f4 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plan/PlanMapper.xml +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/plan/PlanMapper.xml @@ -272,25 +272,6 @@ and op.plan_id = #{planId}; - - + SELECT op.source_block_item_id + FROM order_plate op + WHERE op.organ_id = #{organId} + AND op.order_id = #{orderId} + AND op.deleted = false + AND op.source_block_item_id IS NOT NULL + AND op.source_block_item_id != '' + ORDER BY op.id + + + +