From 5cdba2ffba8466fd8efa767a0bd8f18ee6c9ebf7 Mon Sep 17 00:00:00 2001 From: gaoqr <13665037151@163.com> Date: Tue, 21 Jul 2026 17:30:10 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E8=B4=B4=E7=9A=AE=E5=88=86=E8=A7=A3?= =?UTF-8?q?=E6=9D=BF=E4=BB=B6=E5=88=86=E9=A1=B5=E6=8E=A5=E5=8F=A3=E8=A1=A5?= =?UTF-8?q?=E5=85=85=E6=88=BF=E5=90=8D=E6=9F=9C=E5=90=8D=E5=B1=9E=E6=80=A7?= =?UTF-8?q?=EF=BC=9B2=E3=80=81=E8=B4=B4=E7=9A=AE=E5=88=86=E9=A1=B5?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../veneer/vo/VeneerDecomposeOrderRespVO.java | 9 +++ .../veneer/vo/VeneerDecomposePlateRespVO.java | 6 ++ .../veneer/vo/VeneerManageOrderRespVO.java | 9 +++ .../mysql/veneer/VeneerDecomposeMapper.java | 17 +++- .../dal/mysql/veneer/VeneerManageMapper.java | 30 ++++++- .../veneer/VeneerDecomposeServiceImpl.java | 27 ++++++- .../veneer/VeneerManageServiceImpl.java | 34 +++++++- .../mapper/veneer/VeneerDecomposeMapper.xml | 47 ++++++++++- .../mapper/veneer/VeneerManageMapper.xml | 81 ++++++++++++++++++- 9 files changed, 248 insertions(+), 12 deletions(-) diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/veneer/vo/VeneerDecomposeOrderRespVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/veneer/vo/VeneerDecomposeOrderRespVO.java index 616c72b4c..da7cc7597 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/veneer/vo/VeneerDecomposeOrderRespVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/veneer/vo/VeneerDecomposeOrderRespVO.java @@ -1,11 +1,13 @@ package com.cf.imes.module.executor.controller.admin.veneer.vo; import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonInclude; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.math.BigDecimal; import java.time.LocalDateTime; +import java.util.List; import static com.cf.imes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY; import static com.cf.imes.framework.common.util.date.DateUtils.TIME_ZONE_DEFAULT; @@ -14,11 +16,15 @@ import static com.cf.imes.framework.common.util.date.DateUtils.TIME_ZONE_DEFAULT * 贴皮分解订单分页响应参数。 */ @Data +@JsonInclude(JsonInclude.Include.NON_NULL) public class VeneerDecomposeOrderRespVO { @Schema(description = "订单号") private Long orderId; + @Schema(description = "父订单ID") + private Long parentId; + @Schema(description = "自定义单号") private String customOrderNo; @@ -40,4 +46,7 @@ public class VeneerDecomposeOrderRespVO { @Schema(description = "订单日期") @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY, timezone = TIME_ZONE_DEFAULT) private LocalDateTime orderDate; + + @Schema(description = "子订单列表") + private List child; } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/veneer/vo/VeneerDecomposePlateRespVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/veneer/vo/VeneerDecomposePlateRespVO.java index 256e5c6eb..b82b8cbd1 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/veneer/vo/VeneerDecomposePlateRespVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/veneer/vo/VeneerDecomposePlateRespVO.java @@ -37,6 +37,12 @@ public class VeneerDecomposePlateRespVO { @Schema(description = "板件名称,兼容原贴皮分解字段") private String plateName; + @Schema(description = "房名") + private String roomName; + + @Schema(description = "柜名") + private String bodyName; + @Schema(description = "颜色") private String color; diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/veneer/vo/VeneerManageOrderRespVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/veneer/vo/VeneerManageOrderRespVO.java index 755961323..9c763772e 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/veneer/vo/VeneerManageOrderRespVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/veneer/vo/VeneerManageOrderRespVO.java @@ -1,20 +1,26 @@ package com.cf.imes.module.executor.controller.admin.veneer.vo; +import com.fasterxml.jackson.annotation.JsonInclude; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.math.BigDecimal; import java.time.LocalDateTime; +import java.util.List; /** * 贴皮管理订单分页响应参数。 */ @Data +@JsonInclude(JsonInclude.Include.NON_NULL) public class VeneerManageOrderRespVO { @Schema(description = "订单号") private Long orderId; + @Schema(description = "父订单ID") + private Long parentId; + @Schema(description = "自定义单号") private String customOrderNo; @@ -35,4 +41,7 @@ public class VeneerManageOrderRespVO { @Schema(description = "订单日期") private LocalDateTime orderDate; + + @Schema(description = "子订单列表") + private List child; } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/veneer/VeneerDecomposeMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/veneer/VeneerDecomposeMapper.java index ffe3b7917..6276059d3 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/veneer/VeneerDecomposeMapper.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/veneer/VeneerDecomposeMapper.java @@ -35,15 +35,28 @@ public interface VeneerDecomposeMapper { @Param("orderDateTime") LocalDateTime[] orderDateTime); /** - * 根据根订单ID查询订单及子订单信息。 + * 根据当前页根订单ID查询根订单信息。 * * @param page 分页参数 * @param rootIds 根订单ID列表 - * @return 订单分页结果 + * @return 根订单分页结果 */ IPage selectOrderList(@Param("page") IPage page, @Param("rootIds") List rootIds); + /** + * 查询当前页根订单下存在未分解板件的子订单。 + * + * @param rootIds 根订单ID列表 + * @param req 订单查询条件 + * @param orderDateTime 完整订单日期时间范围 + * @return 子订单列表 + */ + List selectOrderChildList( + @Param("rootIds") List rootIds, + @Param("req") VeneerDecomposeOrderPageReqVO req, + @Param("orderDateTime") LocalDateTime[] orderDateTime); + /** * 分页查询存在未完成贴皮分解板件的材质。 * diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/veneer/VeneerManageMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/veneer/VeneerManageMapper.java index ce91f8a74..abee853ed 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/veneer/VeneerManageMapper.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/veneer/VeneerManageMapper.java @@ -35,15 +35,28 @@ public interface VeneerManageMapper { @Param("orderDateTime") LocalDateTime[] orderDateTime); /** - * 根据根订单 ID 查询订单及子订单信息。 + * 根据当前页根订单 ID 查询根订单信息。 * * @param page 分页参数 * @param rootIds 根订单 ID 列表 - * @return 订单列表 + * @return 根订单列表 */ IPage selectOrderList(@Param("page") IPage page, @Param("rootIds") List rootIds); + /** + * 查询当前页根订单下存在已分解贴皮板件的子订单。 + * + * @param rootIds 根订单ID列表 + * @param req 订单查询条件 + * @param orderDateTime 完整订单日期时间范围 + * @return 子订单列表 + */ + List selectOrderChildList( + @Param("rootIds") List rootIds, + @Param("req") VeneerManageOrderPageReqVO req, + @Param("orderDateTime") LocalDateTime[] orderDateTime); + /** * 分页查询存在已分解贴皮板件的板材。 * @@ -67,6 +80,19 @@ public interface VeneerManageMapper { @Param("req") VeneerManageOrderPageReqVO req, @Param("orderDateTime") LocalDateTime[] orderDateTime); + /** + * 查询当前页根订单下存在未排贴皮的子订单。 + * + * @param rootIds 根订单ID列表 + * @param req 订单查询条件 + * @param orderDateTime 完整订单日期时间范围 + * @return 子订单列表 + */ + List selectUnplannedOrderChildList( + @Param("rootIds") List rootIds, + @Param("req") VeneerManageOrderPageReqVO req, + @Param("orderDateTime") LocalDateTime[] orderDateTime); + /** * 分页查询存在待排单贴皮的板材。 * diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/veneer/VeneerDecomposeServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/veneer/VeneerDecomposeServiceImpl.java index e56503be2..e88f0f953 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/veneer/VeneerDecomposeServiceImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/veneer/VeneerDecomposeServiceImpl.java @@ -93,11 +93,34 @@ public class VeneerDecomposeServiceImpl implements VeneerDecomposeService { page, req, LocalDateTimeUtils.generateTimeSection(req.getOrderDate())); List rootIds = rootPage.getRecords(); if (CollUtil.isEmpty(rootIds)) { - return new PageResult<>(); + return new PageResult<>(List.of(), rootPage.getTotal()); } IPage result = veneerDecomposeMapper.selectOrderList( new PageDTO<>(req.getPageNo(), PAGE_SIZE_NONE), rootIds); - return new PageResult<>(result.getRecords(), rootPage.getTotal()); + List rootOrders = result.getRecords(); + fillOrderChildren(rootOrders, veneerDecomposeMapper.selectOrderChildList( + rootIds, req, LocalDateTimeUtils.generateTimeSection(req.getOrderDate()))); + return new PageResult<>(rootOrders, rootPage.getTotal()); + } + + /** + * 按父订单ID分组并回填子订单,分页数量始终以根订单为准。 + * + * @param rootOrders 当前页根订单 + * @param childOrders 当前页根订单下符合贴皮分解条件的子订单 + */ + private void fillOrderChildren(List rootOrders, + List childOrders) { + if (CollUtil.isEmpty(rootOrders) || CollUtil.isEmpty(childOrders)) { + return; + } + Map> childMap = new HashMap<>(); + for (VeneerDecomposeOrderRespVO childOrder : childOrders) { + childMap.computeIfAbsent(childOrder.getParentId(), key -> new ArrayList<>()).add(childOrder); + } + for (VeneerDecomposeOrderRespVO rootOrder : rootOrders) { + rootOrder.setChild(childMap.get(rootOrder.getOrderId())); + } } @Override diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/veneer/VeneerManageServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/veneer/VeneerManageServiceImpl.java index 509b30b3f..8ca538a4b 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/veneer/VeneerManageServiceImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/veneer/VeneerManageServiceImpl.java @@ -96,11 +96,14 @@ public class VeneerManageServiceImpl implements VeneerManageService { page, req, LocalDateTimeUtils.generateTimeSection(req.getOrderDate())); List rootIds = rootPage.getRecords(); if (CollUtil.isEmpty(rootIds)) { - return new PageResult<>(); + return new PageResult<>(List.of(), rootPage.getTotal()); } IPage result = veneerManageMapper.selectOrderList( new PageDTO<>(req.getPageNo(), PAGE_SIZE_NONE), rootIds); - return new PageResult<>(result.getRecords(), rootPage.getTotal()); + List rootOrders = result.getRecords(); + fillOrderChildren(rootOrders, veneerManageMapper.selectOrderChildList( + rootIds, req, LocalDateTimeUtils.generateTimeSection(req.getOrderDate()))); + return new PageResult<>(rootOrders, rootPage.getTotal()); } @Override @@ -117,11 +120,34 @@ public class VeneerManageServiceImpl implements VeneerManageService { page, req, LocalDateTimeUtils.generateTimeSection(req.getOrderDate())); List rootIds = rootPage.getRecords(); if (CollUtil.isEmpty(rootIds)) { - return new PageResult<>(); + return new PageResult<>(List.of(), rootPage.getTotal()); } IPage result = veneerManageMapper.selectOrderList( new PageDTO<>(req.getPageNo(), PAGE_SIZE_NONE), rootIds); - return new PageResult<>(result.getRecords(), rootPage.getTotal()); + List rootOrders = result.getRecords(); + fillOrderChildren(rootOrders, veneerManageMapper.selectUnplannedOrderChildList( + rootIds, req, LocalDateTimeUtils.generateTimeSection(req.getOrderDate()))); + return new PageResult<>(rootOrders, rootPage.getTotal()); + } + + /** + * 按父订单ID分组并回填子订单,分页数量始终以根订单为准。 + * + * @param rootOrders 当前页根订单 + * @param childOrders 当前页根订单下符合业务条件的子订单 + */ + private void fillOrderChildren(List rootOrders, + List childOrders) { + if (CollUtil.isEmpty(rootOrders) || CollUtil.isEmpty(childOrders)) { + return; + } + Map> childMap = new HashMap<>(); + for (VeneerManageOrderRespVO childOrder : childOrders) { + childMap.computeIfAbsent(childOrder.getParentId(), key -> new ArrayList<>()).add(childOrder); + } + for (VeneerManageOrderRespVO rootOrder : rootOrders) { + rootOrder.setChild(childMap.get(rootOrder.getOrderId())); + } } @Override diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/veneer/VeneerDecomposeMapper.xml b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/veneer/VeneerDecomposeMapper.xml index e5347ed8e..7bd72c015 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/veneer/VeneerDecomposeMapper.xml +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/resources/mapper/veneer/VeneerDecomposeMapper.xml @@ -5,6 +5,7 @@ + @@ -51,6 +52,7 @@ + + SELECT o.id AS orderId, + o.parent_id AS parentId, o.order_type AS orderType, o.custom_order_no AS customOrderNo, o.customer, @@ -86,13 +88,48 @@ o.area AS area FROM orders o WHERE o.deleted = false - AND o.root_id IN + AND o.id IN #{id} ORDER BY o.id DESC + + + + opv.id, opv.veneer_no AS veneerNo,