1、新增主订单分页接口;2、新增 订单新增编辑接口 订单类型基于parentId校验和赋值逻辑;

This commit is contained in:
gaoqr
2026-04-16 11:36:55 +08:00
parent 9c3ee291ed
commit eeaa6c9f21
6 changed files with 80 additions and 16 deletions
@@ -70,6 +70,7 @@ public class ErrorCodeConstants {
public static final ErrorCode ORDER_TIME_ERR = new ErrorCode(1_003_029_016, "获取订单列表,时间格式输入出错,请更换格式"); 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 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_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 SOURCE_NOT_EXITS_ERROR = new ErrorCode(1_003_029_019, "源数据查询失败");
public static final ErrorCode ORDER_DELETED_ERR = new ErrorCode(1_003_029_020, "订单删除失败"); public static final ErrorCode ORDER_DELETED_ERR = new ErrorCode(1_003_029_020, "订单删除失败");
@@ -1,5 +1,6 @@
package com.cf.imes.module.executor.enums; package com.cf.imes.module.executor.enums;
import cn.hutool.core.util.ArrayUtil;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Getter; import lombok.Getter;
@@ -8,17 +9,36 @@ import lombok.Getter;
public enum OrderTypeEnum { public enum OrderTypeEnum {
MAIN_ORDER(1, "主单"), 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 final Integer status;
private String description; 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;
} }
} }
@@ -147,6 +147,13 @@ public class OrderController {
return success(BeanUtils.toBean(orderService.getOrderPage(pageReqVO), OrderRespVO.class)); return success(BeanUtils.toBean(orderService.getOrderPage(pageReqVO), OrderRespVO.class));
} }
@GetMapping("/main/page")
@Operation(summary = "获得主订单分页")
@PreAuthorize("@ss.hasPermission('productManager:List')")
public CommonResult<PageResult<OrderRespVO>> getMainOrderPage(@Valid OrderPageReqVO pageReqVO) {
return success(BeanUtils.toBean(orderService.getMainOrderPage(pageReqVO), OrderRespVO.class));
}
@GetMapping("/webcad/page") @GetMapping("/webcad/page")
@Operation(summary = "获得订单分页") @Operation(summary = "获得订单分页")
public CommonResult<PageResult<OrderRespVO>> webCadGetOrderPage(@Valid OrderPageReqVO pageReqVO) { public CommonResult<PageResult<OrderRespVO>> webCadGetOrderPage(@Valid OrderPageReqVO pageReqVO) {
@@ -4,10 +4,7 @@ import com.cf.imes.framework.common.validation.Telephone;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*; import lombok.*;
import java.math.BigDecimal;
import java.util.*;
import jakarta.validation.constraints.*; import jakarta.validation.constraints.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@Schema(description = "管理后台 - 订单表 order_{N}新增/修改 Request VO") @Schema(description = "管理后台 - 订单表 order_{N}新增/修改 Request VO")
@@ -30,7 +27,7 @@ public class OrderSaveReqVO {
@NotNull(message = "交付日期不能为空") @NotNull(message = "交付日期不能为空")
private LocalDateTime deliveryDate; private LocalDateTime deliveryDate;
@Schema(description = "订单类型,1主单 2子", example = "1") @Schema(description = "订单类型,2补单、3售后单、4柜体单、5五金单、6材料", example = "1")
private Integer orderType; private Integer orderType;
@Schema(description = "订单排序号") @Schema(description = "订单排序号")
@@ -66,6 +66,14 @@ public interface OrderService {
*/ */
PageResult<OrderDO> getOrderPage(OrderPageReqVO pageReqVO); PageResult<OrderDO> getOrderPage(OrderPageReqVO pageReqVO);
/**
* 获得主订单分页
*
* @param pageReqVO 分页查询
* @return 订单表 order_{N}分页
*/
PageResult<OrderDO> getMainOrderPage(OrderPageReqVO pageReqVO);
/** /**
* @param orderId: 订单Id * @param orderId: 订单Id
* @return List<OrderBodyRespVO> * @return List<OrderBodyRespVO>
@@ -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.DataTypeEnum;
import com.cf.imes.module.executor.enums.OrderDeletedEnum; import com.cf.imes.module.executor.enums.OrderDeletedEnum;
import com.cf.imes.module.executor.enums.OrderStatusEnum; 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.customplateno.CustomPlateNoGenerateService;
import com.cf.imes.module.executor.service.manage.pack.PackService; import com.cf.imes.module.executor.service.manage.pack.PackService;
import com.cf.imes.module.executor.service.orderImport.OrderImportHandler; import com.cf.imes.module.executor.service.orderImport.OrderImportHandler;
@@ -93,7 +94,6 @@ import java.io.*;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit; import java.time.temporal.ChronoUnit;
import java.util.*; import java.util.*;
import java.util.function.Function; import java.util.function.Function;
@@ -193,8 +193,9 @@ public class OrderServiceImpl implements OrderService {
public Long createOrder(OrderSaveReqVO createReqVO) { public Long createOrder(OrderSaveReqVO createReqVO) {
//校验手机号是否合法 //校验手机号是否合法
validatePhoneNumber(createReqVO.getPhoneNumber()); validatePhoneNumber(createReqVO.getPhoneNumber());
Long parentId = createReqVO.getParentId();
// 校验上级订单是否存在 // 校验上级订单是否存在
validateParentOrderExists(createReqVO.getParentId()); validateParentOrderExists(parentId);
//验证自定义单号是否存在,业务员、拆单员是否存在 //验证自定义单号是否存在,业务员、拆单员是否存在
validateCustomOrderNoExists(createReqVO.getCustomOrderNo()); validateCustomOrderNoExists(createReqVO.getCustomOrderNo());
@@ -207,11 +208,12 @@ public class OrderServiceImpl implements OrderService {
createReqVO.setDeliveryDate(deliveryDate.atStartOfDay()); createReqVO.setDeliveryDate(deliveryDate.atStartOfDay());
// 插入 // 插入
OrderDO order = BeanUtils.toBean(createReqVO, OrderDO.class); OrderDO order = BeanUtils.toBean(createReqVO, OrderDO.class);
order.setId((Long)identifierGenerator.nextId(null));
// 默认api类型订单 // 默认api类型订单
if(ObjectUtil.isNull(order.getDataType())) { if(ObjectUtil.isNull(order.getDataType())) {
order.setDataType(DataTypeEnum.API_IMPORT.getStatus()); order.setDataType(DataTypeEnum.API_IMPORT.getStatus());
} }
// 订单类型
order.setOrderType(getOrderType(parentId, createReqVO.getOrderType()));
orderMapper.insert(order); orderMapper.insert(order);
// 返回 // 返回
return order.getId(); return order.getId();
@@ -228,8 +230,11 @@ public class OrderServiceImpl implements OrderService {
//验证自定义单号是否存在, 订单未删除 //验证自定义单号是否存在, 订单未删除
validateCustomOrderNoExists(updateReqVO.getCustomOrderNo(), updateReqVO.getId()); 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 orderDate = LocalDate.from(updateReqVO.getOrderDate());
LocalDate deliveryDate = LocalDate.from(updateReqVO.getDeliveryDate()); LocalDate deliveryDate = LocalDate.from(updateReqVO.getDeliveryDate());
if (deliveryDate.isBefore(orderDate)) { if (deliveryDate.isBefore(orderDate)) {
@@ -251,9 +256,29 @@ public class OrderServiceImpl implements OrderService {
if (updateReqVO.getRemark() == null || updateReqVO.getRemark().equals("")) { if (updateReqVO.getRemark() == null || updateReqVO.getRemark().equals("")) {
updateObj.setRemark(""); updateObj.setRemark("");
} }
// 订单类型
updateObj.setOrderType(getOrderType(parentId, updateReqVO.getOrderType()));
orderMapper.updateById(updateObj); 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 @Override
public OrderDO getOrder(Long id) { public OrderDO getOrder(Long id) {
return orderMapper.selectOrderOne(id, getUserOrganId(), OrderDeletedEnum.NOT_DELETED.getStatus()); return orderMapper.selectOrderOne(id, getUserOrganId(), OrderDeletedEnum.NOT_DELETED.getStatus());
@@ -273,6 +298,11 @@ public class OrderServiceImpl implements OrderService {
@Override @Override
public PageResult<OrderDO> getOrderPage(OrderPageReqVO pageReqVO) { public PageResult<OrderDO> getOrderPage(OrderPageReqVO pageReqVO) {
return orderMapper.selectPage(pageReqVO.setOrganId(getUserOrganId()));
}
@Override
public PageResult<OrderDO> getMainOrderPage(OrderPageReqVO pageReqVO) {
PageResult<OrderDO> pageResult = orderMapper.selectPage(pageReqVO.setOrganId(getUserOrganId())); PageResult<OrderDO> pageResult = orderMapper.selectPage(pageReqVO.setOrganId(getUserOrganId()));
Long pageResultTotal = pageResult.getTotal(); Long pageResultTotal = pageResult.getTotal();
if (pageResultTotal > 0) { if (pageResultTotal > 0) {
@@ -282,8 +312,9 @@ public class OrderServiceImpl implements OrderService {
// 2、查询订单id列表对应的子单 // 2、查询订单id列表对应的子单
List<OrderDO> childList = orderMapper.selectList( List<OrderDO> childList = orderMapper.selectList(
new LambdaQueryWrapper<OrderDO>() new LambdaQueryWrapperX<OrderDO>()
.in(OrderDO::getParentId, orderIds) .in(OrderDO::getParentId, orderIds)
.eqIfPresent(OrderDO::getDeleted, pageReqVO.getDeleted())
.orderByDesc(OrderDO::getId) .orderByDesc(OrderDO::getId)
); );