From 5762b2a9f35712d4116bcdab506077770af68e05 Mon Sep 17 00:00:00 2001 From: gaoqr <13665037151@163.com> Date: Thu, 4 Jun 2026 16:55:30 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A3=85=E9=85=8D=E6=B8=85=E5=8D=95=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E6=B2=A1=E6=9C=89=E9=83=A8=E4=BB=B6=E4=B8=8D=E5=B1=95?= =?UTF-8?q?=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../assemblylist/AssemblyListController.java | 11 +++ .../admin/order/vo/order/OrderPageReqVO.java | 2 + .../executor/dal/mysql/order/OrderMapper.java | 4 +- .../assemblylist/AssemblyListService.java | 12 ++- .../assemblylist/AssemblyListServiceImpl.java | 52 +++++++++++- .../service/order/OrderServiceImpl.java | 53 +++++++----- .../resources/mapper/order/OrderMapper.xml | 81 ++++--------------- 7 files changed, 126 insertions(+), 89 deletions(-) diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/assemblylist/AssemblyListController.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/assemblylist/AssemblyListController.java index 3bc352b38..c1eb087a1 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/assemblylist/AssemblyListController.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/assemblylist/AssemblyListController.java @@ -3,7 +3,10 @@ package com.cf.imes.module.executor.controller.admin.assemblylist; import cn.hutool.core.bean.BeanUtil; import com.cf.imes.framework.common.pojo.CommonResult; import com.cf.imes.framework.common.pojo.PageResult; +import com.cf.imes.framework.common.util.object.BeanUtils; import com.cf.imes.module.executor.controller.admin.assemblylist.vo.AssemblyListComponentPageReqVO; +import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderPageReqVO; +import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderRespVO; import com.cf.imes.module.executor.controller.admin.order.vo.order.OrdersViewCadViewInfoRespVO; import com.cf.imes.module.executor.controller.admin.ordercomponent.vo.OrderComponentRespVO; import com.cf.imes.module.executor.controller.admin.ordercomponent.vo.OrderDetailComponentPageReqVO; @@ -18,6 +21,7 @@ import jakarta.annotation.Resource; import jakarta.validation.Valid; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -45,6 +49,13 @@ public class AssemblyListController { @Resource private OrderComponentService orderComponentService; + @GetMapping("/order/page") + @Operation(summary = "获得装配清单订单分页") + @PreAuthorize("@ss.hasPermission('productManager:List')") + public CommonResult> getMainOrderPage(@Valid OrderPageReqVO pageReqVO) { + return success(BeanUtils.toBean(assemblyListService.getMainOrderPage(pageReqVO), OrderRespVO.class)); + } + @PostMapping("/list") @Operation(summary = "装配清单-获取部件列表") @PreAuthorize("@ss.hasPermission('production:assemblyList:query')") diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/OrderPageReqVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/OrderPageReqVO.java index ae78f7ff3..968e2c726 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/OrderPageReqVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/OrderPageReqVO.java @@ -106,4 +106,6 @@ public class OrderPageReqVO extends PageParam { @Schema(description = "加工状态") @InEnum(OrderComponentProcessStatusEnum.class) private Integer processStatus; + + private Boolean assembly = false; } \ 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/order/OrderMapper.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/order/OrderMapper.java index 41db4faeb..350ffe5a8 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/order/OrderMapper.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/order/OrderMapper.java @@ -104,13 +104,13 @@ public interface OrderMapper extends BaseMapperX { } /** - * 分页查询主单(带子单过滤) + * 分页查询主单id(带子单过滤) * * @param page * @param reqVO * @return */ - IPage selectMainPage(@Param("page") IPage page, @Param("reqVO") OrderPageReqVO reqVO); + IPage selectMainOrderIds(@Param("page") IPage page, @Param("reqVO") OrderPageReqVO reqVO); /** * 查询子单列表 diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/assemblylist/AssemblyListService.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/assemblylist/AssemblyListService.java index ddf87617b..613408bab 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/assemblylist/AssemblyListService.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/assemblylist/AssemblyListService.java @@ -2,11 +2,11 @@ package com.cf.imes.module.executor.service.assemblylist; import com.cf.imes.framework.common.pojo.PageResult; import com.cf.imes.module.executor.controller.admin.assemblylist.vo.AssemblyListComponentPageReqVO; +import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderPageReqVO; import com.cf.imes.module.executor.controller.admin.order.vo.order.OrdersViewCadViewInfoRespVO; import com.cf.imes.module.executor.controller.admin.ordercomponent.vo.OrderComponentRespVO; import com.cf.imes.module.executor.controller.admin.ordercomponent.vo.OrdersTopComponentListReqVO; -import com.cf.imes.module.executor.controller.admin.plate.vo.OrderViewPartPageRespVO; -import com.cf.imes.module.executor.controller.admin.plate.vo.OrderViewPlatePageRespVO; +import com.cf.imes.module.executor.dal.dataobject.order.OrderDO; import java.util.List; @@ -17,6 +17,14 @@ import java.util.List; * @since 2026/2/28 11:16 */ public interface AssemblyListService { + /** + * 查询装配清单订单分页 + * + * @param pageReqVO + * @return + */ + PageResult getMainOrderPage(OrderPageReqVO pageReqVO); + /** * 获取部件列表,根据装配设置对应加工状态 * diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/assemblylist/AssemblyListServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/assemblylist/AssemblyListServiceImpl.java index 37110942a..780112c65 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/assemblylist/AssemblyListServiceImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/assemblylist/AssemblyListServiceImpl.java @@ -14,17 +14,20 @@ import com.cf.imes.framework.common.enums.DeletedCodeEnum; import com.cf.imes.framework.common.exception.ServiceException; import com.cf.imes.framework.common.pojo.CommonResult; 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.json.JsonUtils; import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; import com.cf.imes.framework.mybatis.core.query.LambdaUpdateWrapperX; import com.cf.imes.module.executor.controller.admin.assemblylist.vo.AssemblyListComponentPageReqVO; +import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderPageReqVO; import com.cf.imes.module.executor.controller.admin.order.vo.order.OrdersViewCadViewInfoRespVO; import com.cf.imes.module.executor.controller.admin.ordercomponent.vo.OrderComponentRespVO; import com.cf.imes.module.executor.controller.admin.ordercomponent.vo.OrderComponentTreeCompareVO; import com.cf.imes.module.executor.controller.admin.ordercomponent.vo.OrdersTopComponentListReqVO; import com.cf.imes.module.executor.controller.admin.plate.vo.OrderViewPartPageRespVO; import com.cf.imes.module.executor.controller.admin.plate.vo.OrderViewPlatePageRespVO; +import com.cf.imes.module.executor.dal.dataobject.order.OrderDO; import com.cf.imes.module.executor.dal.dataobject.orderItem.OrdersViewPartsPageDO; import com.cf.imes.module.executor.dal.dataobject.orderItem.OrdersViewPlatesPageDO; import com.cf.imes.module.executor.dal.dataobject.ordercomponent.OrderComponentDO; @@ -47,9 +50,10 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Objects; -import java.util.Optional; import java.util.Set; +import java.util.function.Function; import java.util.stream.Collectors; +import java.util.stream.IntStream; import static com.cf.imes.module.executor.enums.ErrorCodeConstants.ORDER_COMPONENT_ASSEMBLY_CONFIG_QUERY_ERROR; import static com.cf.imes.module.executor.enums.ErrorCodeConstants.ORDER_COMPONENT_NOT_EXIST; @@ -77,6 +81,52 @@ public class AssemblyListServiceImpl implements AssemblyListService { @Resource private OrderItemMapper orderItemMapper; + @Override + public PageResult getMainOrderPage(OrderPageReqVO pageReqVO) { + pageReqVO.setAssembly(true); + IPage page = new PageDTO<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()); + // 1. 查询主单ID分页 + IPage pageResult = orderMapper.selectMainOrderIds(page, pageReqVO); + Long pageResultTotal = pageResult.getTotal(); + + if (pageResultTotal == 0) { + return PageResult.empty(); + } + + List orderIds = pageResult.getRecords(); + // 2. 查询主单 + List orderDOS = orderMapper.selectByIds(orderIds); + if (CollUtil.isEmpty(orderDOS)) { + return new PageResult<>(Collections.emptyList(), pageResultTotal); + } + + // 保持分页顺序 + Map sortMap = IntStream.range(0, orderIds.size()) + .boxed() + .collect(Collectors.toMap(orderIds::get, Function.identity())); + + orderDOS.sort(Comparator.comparing(o -> sortMap.get(o.getId()))); + + // 3. 查询子单 + List childList = + orderMapper.selectChildList(pageReqVO, orderIds); + + if (CollUtil.isEmpty(childList)) { + return new PageResult<>(orderDOS, pageResultTotal); + } + + // 4. parentId分组 + Map> childMap = childList.stream() + .collect(Collectors.groupingBy(OrderDO::getParentId)); + + // 5. 挂载子单 + for (OrderDO order : orderDOS) { + order.setChild(childMap.get(order.getId())); + } + + return new PageResult<>(orderDOS, pageResultTotal); + } + @Override public List getComponentList(AssemblyListComponentPageReqVO reqVO) { Set componentIds = reqVO.getComponentIds(); diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java index 18d8d2630..c8fd8339e 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderServiceImpl.java @@ -100,6 +100,7 @@ import java.time.temporal.ChronoUnit; import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; +import java.util.stream.IntStream; import static com.cf.imes.framework.common.util.json.JsonUtils.unzipString; import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getUserOrganId; @@ -310,32 +311,46 @@ public class OrderServiceImpl implements OrderService { @Override public PageResult getMainOrderPage(OrderPageReqVO pageReqVO) { IPage page = new PageDTO<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()); - IPage pageResult = orderMapper.selectMainPage(page, pageReqVO); + // 1. 查询主单ID分页 + IPage pageResult = orderMapper.selectMainOrderIds(page, pageReqVO); Long pageResultTotal = pageResult.getTotal(); - if (pageResultTotal > 0) { - List orderDOS = pageResult.getRecords(); - // 1、整理所有订单id - List orderIds = orderDOS.stream().map(OrderDO::getId).toList(); - // 2、查询订单id列表对应的子单 - List childList = - orderMapper.selectChildList(pageReqVO, orderIds); + if (pageResultTotal == 0) { + return PageResult.empty(); + } - if (CollUtil.isEmpty(childList)) { - return new PageResult<>(pageResult.getRecords(), pageResultTotal); - } + List orderIds = pageResult.getRecords(); + // 2. 查询主单 + List orderDOS = orderMapper.selectByIds(orderIds); + if (CollUtil.isEmpty(orderDOS)) { + return new PageResult<>(Collections.emptyList(), pageResultTotal); + } - // 3、 按 parentId 分组 - Map> childMap = childList.stream() - .collect(Collectors.groupingBy(OrderDO::getParentId)); + // 保持分页顺序 + Map sortMap = IntStream.range(0, orderIds.size()) + .boxed() + .collect(Collectors.toMap(orderIds::get, Function.identity())); - // 4、 回填 child - for (OrderDO order : orderDOS) { - order.setChild(childMap.getOrDefault(order.getId(), null)); - } + orderDOS.sort(Comparator.comparing(o -> sortMap.get(o.getId()))); + + // 3. 查询子单 + List childList = + orderMapper.selectChildList(pageReqVO, orderIds); + + if (CollUtil.isEmpty(childList)) { return new PageResult<>(orderDOS, pageResultTotal); } - return new PageResult<>(pageResult.getRecords(), pageResultTotal); + + // 4. parentId分组 + Map> childMap = childList.stream() + .collect(Collectors.groupingBy(OrderDO::getParentId)); + + // 5. 挂载子单 + for (OrderDO order : orderDOS) { + order.setChild(childMap.get(order.getId())); + } + + return new PageResult<>(orderDOS, pageResultTotal); } @Override 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 2c00f1452..f0f3c76a2 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 @@ -28,27 +28,32 @@ - - SELECT o.* - FROM orders o - JOIN ( SELECT DISTINCT - IF(t.parent_id = 0, t.id, t.parent_id) AS root_id + t.root_id + FROM orders t - JOIN order_component oc ON oc.order_id = t.id AND oc.deleted = 0 AND oc.pid = 0 - AND oc.organ_id = 1 WHERE 1 = 1 - + + AND EXISTS ( + SELECT 1 + FROM order_component oc + WHERE oc.order_id = t.id + AND oc.deleted = 0 + AND oc.pid = 0 + ) + + AND CAST(t.id AS CHAR) LIKE CONCAT('%', #{reqVO.id}, '%') @@ -129,7 +134,6 @@ AND t.create_time BETWEEN #{reqVO.createTime[0]} AND #{reqVO.createTime[1]} - @@ -157,11 +161,6 @@ AND t.deleted = #{reqVO.deleted} - ) tmp - ON tmp.root_id = o.id - - WHERE o.parent_id = 0 - @@ -169,59 +168,11 @@ - ORDER BY o.id ASC - - - - ORDER BY o.custom_order_no ASC - - - - ORDER BY o.order_date ASC - - - - ORDER BY o.delivery_date ASC - - - - ORDER BY o.api_order_id ASC + ORDER BY root_id ASC - ORDER BY o.id DESC - - - - - - - - - - - - ORDER BY o.id DESC - - - - ORDER BY o.custom_order_no DESC - - - - ORDER BY o.order_date DESC - - - - ORDER BY o.delivery_date DESC - - - - ORDER BY o.api_order_id DESC - - - - ORDER BY o.id DESC + ORDER BY root_id ASC @@ -229,7 +180,7 @@ - ORDER BY o.id DESC + ORDER BY root_id DESC