From eeaa6c9f215b93dacd4afbb79f0685f281d4a5cb Mon Sep 17 00:00:00 2001 From: gaoqr <13665037151@163.com> Date: Thu, 16 Apr 2026 11:36:55 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E6=96=B0=E5=A2=9E=E4=B8=BB=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E5=88=86=E9=A1=B5=E6=8E=A5=E5=8F=A3=EF=BC=9B2?= =?UTF-8?q?=E3=80=81=E6=96=B0=E5=A2=9E=20=E8=AE=A2=E5=8D=95=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E7=BC=96=E8=BE=91=E6=8E=A5=E5=8F=A3=20=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E7=B1=BB=E5=9E=8B=E5=9F=BA=E4=BA=8EparentId=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C=E5=92=8C=E8=B5=8B=E5=80=BC=E9=80=BB=E8=BE=91=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../executor/enums/ErrorCodeConstants.java | 1 + .../module/executor/enums/OrderTypeEnum.java | 34 +++++++++++---- .../admin/order/OrderController.java | 7 ++++ .../admin/order/vo/order/OrderSaveReqVO.java | 5 +-- .../executor/service/order/OrderService.java | 8 ++++ .../service/order/OrderServiceImpl.java | 41 ++++++++++++++++--- 6 files changed, 80 insertions(+), 16 deletions(-) diff --git a/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/ErrorCodeConstants.java b/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/ErrorCodeConstants.java index 6eb77cc2b..b77b73ae3 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/ErrorCodeConstants.java +++ b/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/ErrorCodeConstants.java @@ -70,6 +70,7 @@ public class ErrorCodeConstants { public static final ErrorCode ORDER_TIME_ERR = new ErrorCode(1_003_029_016, "获取订单列表,时间格式输入出错,请更换格式"); public static final ErrorCode FILE_TYPE_ERR = new ErrorCode(1_003_029_017, "当前文件类型尚未开发,敬请期待"); public static final ErrorCode ORDER_DETAIL_DATE_ERR = new ErrorCode(1_003_029_018, "板件生产数据缺失,请确认数据源中是否存在相关数据"); + public static final ErrorCode ORDER_SUBTYPE_NOT_SUPPORT = new ErrorCode(1_003_029_019, "不支持的子单类型,请重新选择"); public static final ErrorCode SOURCE_NOT_EXITS_ERROR = new ErrorCode(1_003_029_019, "源数据查询失败"); public static final ErrorCode ORDER_DELETED_ERR = new ErrorCode(1_003_029_020, "订单删除失败"); diff --git a/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/OrderTypeEnum.java b/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/OrderTypeEnum.java index 185eda26f..36f794f29 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/OrderTypeEnum.java +++ b/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/OrderTypeEnum.java @@ -1,5 +1,6 @@ package com.cf.imes.module.executor.enums; +import cn.hutool.core.util.ArrayUtil; import lombok.AllArgsConstructor; import lombok.Getter; @@ -8,17 +9,36 @@ import lombok.Getter; public enum OrderTypeEnum { MAIN_ORDER(1, "主单"), - SUBORDER(2, "子单"); + SUPPLEMENT_ORDER(2, "补单"), + AFTER_SALES_ORDER(3, "售后单"), + BODY_ORDER(4, "柜体单"), + HARDWARE_ORDER(5, "五金单"), + MATERIAL_ORDER(6, "材料单"); private final Integer status; private String description; - public boolean equals(Integer status) { - return this.status .equals(status) ; - } + /** + * 子单类型 + */ + public static final int[] SUB_TYPES = { + SUPPLEMENT_ORDER.status, + AFTER_SALES_ORDER.status, + BODY_ORDER.status, + HARDWARE_ORDER.status, + MATERIAL_ORDER.status + }; - public boolean equals(OrderTypeEnum enableStatusEnum) { - return enableStatusEnum != null && enableStatusEnum.status .equals(this.getStatus()) ; + /** + * 是否子单的类型 + * + * @param status + * @return + */ + public static boolean isSubType(Integer status) { + if (ArrayUtil.contains(SUB_TYPES, status)) { + return true; + } + return false; } - } diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java index baee40d58..c3d93bbfc 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/OrderController.java @@ -147,6 +147,13 @@ public class OrderController { return success(BeanUtils.toBean(orderService.getOrderPage(pageReqVO), OrderRespVO.class)); } + @GetMapping("/main/page") + @Operation(summary = "获得主订单分页") + @PreAuthorize("@ss.hasPermission('productManager:List')") + public CommonResult> getMainOrderPage(@Valid OrderPageReqVO pageReqVO) { + return success(BeanUtils.toBean(orderService.getMainOrderPage(pageReqVO), OrderRespVO.class)); + } + @GetMapping("/webcad/page") @Operation(summary = "获得订单分页") public CommonResult> webCadGetOrderPage(@Valid OrderPageReqVO pageReqVO) { 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/OrderSaveReqVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/OrderSaveReqVO.java index eb65be105..ddf4507b9 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/OrderSaveReqVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/OrderSaveReqVO.java @@ -4,10 +4,7 @@ import com.cf.imes.framework.common.validation.Telephone; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; -import java.math.BigDecimal; -import java.util.*; import jakarta.validation.constraints.*; -import org.springframework.format.annotation.DateTimeFormat; import java.time.LocalDateTime; @Schema(description = "管理后台 - 订单表 order_{N}新增/修改 Request VO") @@ -30,7 +27,7 @@ public class OrderSaveReqVO { @NotNull(message = "交付日期不能为空") private LocalDateTime deliveryDate; - @Schema(description = "订单类型,1主单 2子单", example = "1") + @Schema(description = "订单类型,2补单、3售后单、4柜体单、5五金单、6材料单", example = "1") private Integer orderType; @Schema(description = "订单排序号") diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderService.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderService.java index 448461e6e..2ba062f15 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderService.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/service/order/OrderService.java @@ -66,6 +66,14 @@ public interface OrderService { */ PageResult getOrderPage(OrderPageReqVO pageReqVO); + /** + * 获得主订单分页 + * + * @param pageReqVO 分页查询 + * @return 订单表 order_{N}分页 + */ + PageResult getMainOrderPage(OrderPageReqVO pageReqVO); + /** * @param orderId: 订单Id * @return List 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 63709f0a3..bde1764a3 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 @@ -67,6 +67,7 @@ import com.cf.imes.module.executor.enums.CategoryEnum; import com.cf.imes.module.executor.enums.DataTypeEnum; import com.cf.imes.module.executor.enums.OrderDeletedEnum; import com.cf.imes.module.executor.enums.OrderStatusEnum; +import com.cf.imes.module.executor.enums.OrderTypeEnum; import com.cf.imes.module.executor.service.customplateno.CustomPlateNoGenerateService; import com.cf.imes.module.executor.service.manage.pack.PackService; import com.cf.imes.module.executor.service.orderImport.OrderImportHandler; @@ -93,7 +94,6 @@ import java.io.*; import java.math.BigDecimal; import java.net.URLEncoder; import java.time.LocalDate; -import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit; import java.util.*; import java.util.function.Function; @@ -193,8 +193,9 @@ public class OrderServiceImpl implements OrderService { public Long createOrder(OrderSaveReqVO createReqVO) { //校验手机号是否合法 validatePhoneNumber(createReqVO.getPhoneNumber()); + Long parentId = createReqVO.getParentId(); // 校验上级订单是否存在 - validateParentOrderExists(createReqVO.getParentId()); + validateParentOrderExists(parentId); //验证自定义单号是否存在,业务员、拆单员是否存在 validateCustomOrderNoExists(createReqVO.getCustomOrderNo()); @@ -207,11 +208,12 @@ public class OrderServiceImpl implements OrderService { createReqVO.setDeliveryDate(deliveryDate.atStartOfDay()); // 插入 OrderDO order = BeanUtils.toBean(createReqVO, OrderDO.class); - order.setId((Long)identifierGenerator.nextId(null)); // 默认api类型订单 if(ObjectUtil.isNull(order.getDataType())) { order.setDataType(DataTypeEnum.API_IMPORT.getStatus()); } + // 订单类型 + order.setOrderType(getOrderType(parentId, createReqVO.getOrderType())); orderMapper.insert(order); // 返回 return order.getId(); @@ -228,8 +230,11 @@ public class OrderServiceImpl implements OrderService { //验证自定义单号是否存在, 订单未删除 validateCustomOrderNoExists(updateReqVO.getCustomOrderNo(), updateReqVO.getId()); + Long parentId = updateReqVO.getParentId(); + // 校验上级订单是否存在 + validateParentOrderExists(parentId); + // 发货日期校验 - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); LocalDate orderDate = LocalDate.from(updateReqVO.getOrderDate()); LocalDate deliveryDate = LocalDate.from(updateReqVO.getDeliveryDate()); if (deliveryDate.isBefore(orderDate)) { @@ -251,9 +256,29 @@ public class OrderServiceImpl implements OrderService { if (updateReqVO.getRemark() == null || updateReqVO.getRemark().equals("")) { updateObj.setRemark(""); } + // 订单类型 + updateObj.setOrderType(getOrderType(parentId, updateReqVO.getOrderType())); orderMapper.updateById(updateObj); } + /** + * 获取对应的订单类型 + * + * @param parentId 父级订单id + * @param orderType 入参订单类型 + * @return + */ + private Integer getOrderType(Long parentId, Integer orderType) { + if (ObjectUtil.isNotNull(parentId)) { + if (!OrderTypeEnum.isSubType(orderType)) { + throw new ServiceException(ORDER_SUBTYPE_NOT_SUPPORT); + } + } else { + return OrderTypeEnum.MAIN_ORDER.getStatus(); + } + return orderType; + } + @Override public OrderDO getOrder(Long id) { return orderMapper.selectOrderOne(id, getUserOrganId(), OrderDeletedEnum.NOT_DELETED.getStatus()); @@ -273,6 +298,11 @@ public class OrderServiceImpl implements OrderService { @Override public PageResult getOrderPage(OrderPageReqVO pageReqVO) { + return orderMapper.selectPage(pageReqVO.setOrganId(getUserOrganId())); + } + + @Override + public PageResult getMainOrderPage(OrderPageReqVO pageReqVO) { PageResult pageResult = orderMapper.selectPage(pageReqVO.setOrganId(getUserOrganId())); Long pageResultTotal = pageResult.getTotal(); if (pageResultTotal > 0) { @@ -282,8 +312,9 @@ public class OrderServiceImpl implements OrderService { // 2、查询订单id列表对应的子单 List childList = orderMapper.selectList( - new LambdaQueryWrapper() + new LambdaQueryWrapperX() .in(OrderDO::getParentId, orderIds) + .eqIfPresent(OrderDO::getDeleted, pageReqVO.getDeleted()) .orderByDesc(OrderDO::getId) );