mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-14 21:52:07 +08:00
订单支持新增子订单和查询
This commit is contained in:
+6
@@ -65,6 +65,12 @@ public class AssertUtils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void notEmpty(Object object, ErrorCode errorCode, Object... params) {
|
||||||
|
if (object == null) {
|
||||||
|
throw new ServiceException(errorCode, params);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public static void notEmpty(List<?> array ,Object object, ErrorCode errorCode) {
|
public static void notEmpty(List<?> array ,Object object, ErrorCode errorCode) {
|
||||||
if (object == null || ObjectUtils.isEmpty(array)) {
|
if (object == null || ObjectUtils.isEmpty(array)) {
|
||||||
|
|||||||
+1
@@ -38,6 +38,7 @@ public class ErrorCodeConstants {
|
|||||||
public static final ErrorCode ORDER_DATA_ERROR = new ErrorCode(1_003_109_004, "订单/排单的数据已无法使用,请删除重新");
|
public static final ErrorCode ORDER_DATA_ERROR = new ErrorCode(1_003_109_004, "订单/排单的数据已无法使用,请删除重新");
|
||||||
public static final ErrorCode ORDER_PLAN_ID_NOT_NULL = new ErrorCode(1_003_109_005, "订单或排单ID至少传入一个");
|
public static final ErrorCode ORDER_PLAN_ID_NOT_NULL = new ErrorCode(1_003_109_005, "订单或排单ID至少传入一个");
|
||||||
public static final ErrorCode ORDER_PLAN_ID_IS_ONE = new ErrorCode(1_003_109_006, "订单id与排单id与大板分类ID只能传一个");
|
public static final ErrorCode ORDER_PLAN_ID_IS_ONE = new ErrorCode(1_003_109_006, "订单id与排单id与大板分类ID只能传一个");
|
||||||
|
public static final ErrorCode PARENT_ORDER_NOT_EXISTS = new ErrorCode(1_003_109_007, "上级订单{}不存在");
|
||||||
|
|
||||||
// ========== 订单 1_003_110_000 ==========
|
// ========== 订单 1_003_110_000 ==========
|
||||||
public static final ErrorCode MODULE_NOT_EXISTS = new ErrorCode(1_003_110_000, "模块不存在");
|
public static final ErrorCode MODULE_NOT_EXISTS = new ErrorCode(1_003_110_000, "模块不存在");
|
||||||
|
|||||||
+5
@@ -4,6 +4,8 @@ import io.swagger.v3.oas.annotations.media.Schema;
|
|||||||
import lombok.*;
|
import lombok.*;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import com.alibaba.excel.annotation.*;
|
import com.alibaba.excel.annotation.*;
|
||||||
|
|
||||||
@Schema(description = "管理后台 - 订单表 order_{N} Response VO")
|
@Schema(description = "管理后台 - 订单表 order_{N} Response VO")
|
||||||
@@ -88,4 +90,7 @@ public class OrderRespVO {
|
|||||||
private LocalDateTime createTime;
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
private Boolean deleted;
|
private Boolean deleted;
|
||||||
|
|
||||||
|
@Schema(description = "子单列表")
|
||||||
|
private List<OrderRespVO> child;
|
||||||
}
|
}
|
||||||
+1
-1
@@ -17,7 +17,7 @@ public class OrderSaveReqVO {
|
|||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
@Schema(description = "父单号")
|
@Schema(description = "父单号")
|
||||||
private Long parentNo;
|
private Long parentId;
|
||||||
|
|
||||||
@Schema(description = "源订单号")
|
@Schema(description = "源订单号")
|
||||||
private String apiOrderId;
|
private String apiOrderId;
|
||||||
|
|||||||
+11
-1
@@ -6,6 +6,7 @@ import com.cf.imes.framework.mybatis.core.type.CompressStringTypeHandler;
|
|||||||
import lombok.*;
|
import lombok.*;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 订单表 order_{N} DO
|
* 订单表 order_{N} DO
|
||||||
@@ -35,7 +36,7 @@ public class OrderDO extends BaseDO {
|
|||||||
/**
|
/**
|
||||||
* 父单号
|
* 父单号
|
||||||
*/
|
*/
|
||||||
private Long parentNo;
|
private Long parentId;
|
||||||
/**
|
/**
|
||||||
* 源订单号
|
* 源订单号
|
||||||
*/
|
*/
|
||||||
@@ -146,5 +147,14 @@ public class OrderDO extends BaseDO {
|
|||||||
*/
|
*/
|
||||||
private Double plannedPlateArea;
|
private Double plannedPlateArea;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 版本号
|
||||||
|
*/
|
||||||
private int version;
|
private int version;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 子单列表
|
||||||
|
*/
|
||||||
|
@TableField(exist = false)
|
||||||
|
private List<OrderDO> child;
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-2
@@ -36,6 +36,8 @@ import java.util.Collection;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import static com.cf.imes.module.executor.dal.dataobject.order.OrderDO.PARENT_ID_ROOT;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 订单表 order_{N} Mapper
|
* 订单表 order_{N} Mapper
|
||||||
*
|
*
|
||||||
@@ -46,7 +48,7 @@ public interface OrderMapper extends BaseMapperX<OrderDO> {
|
|||||||
|
|
||||||
default PageResult<OrderDO> selectPage(OrderPageReqVO reqVO) {
|
default PageResult<OrderDO> selectPage(OrderPageReqVO reqVO) {
|
||||||
LambdaQueryWrapperX<OrderDO> query = new LambdaQueryWrapperX<OrderDO>()
|
LambdaQueryWrapperX<OrderDO> query = new LambdaQueryWrapperX<OrderDO>()
|
||||||
.eqIfPresent(OrderDO::getParentNo, reqVO.getParentNo())
|
.eqIfPresent(OrderDO::getParentId, reqVO.getParentNo())
|
||||||
.likeIfPresent(OrderDO::getId, reqVO.getId() == null ? null : reqVO.getId())
|
.likeIfPresent(OrderDO::getId, reqVO.getId() == null ? null : reqVO.getId())
|
||||||
.betweenIfPresent(OrderDO::getDeliveryDate, reqVO.getDeliveryDate())
|
.betweenIfPresent(OrderDO::getDeliveryDate, reqVO.getDeliveryDate())
|
||||||
.eqIfPresent(OrderDO::getApiOrderId, reqVO.getApiOrderId())
|
.eqIfPresent(OrderDO::getApiOrderId, reqVO.getApiOrderId())
|
||||||
@@ -66,7 +68,8 @@ public interface OrderMapper extends BaseMapperX<OrderDO> {
|
|||||||
.eqIfPresent(OrderDO::getRemark, reqVO.getRemark())
|
.eqIfPresent(OrderDO::getRemark, reqVO.getRemark())
|
||||||
.eqIfPresent(OrderDO::getOrganId, reqVO.getOrganId())
|
.eqIfPresent(OrderDO::getOrganId, reqVO.getOrganId())
|
||||||
.eqIfPresent(OrderDO::getDeleted, reqVO.getDeleted())
|
.eqIfPresent(OrderDO::getDeleted, reqVO.getDeleted())
|
||||||
.betweenIfPresent(OrderDO::getCreateTime, reqVO.getCreateTime());
|
.betweenIfPresent(OrderDO::getCreateTime, reqVO.getCreateTime())
|
||||||
|
.eq(OrderDO::getParentId, PARENT_ID_ROOT);
|
||||||
|
|
||||||
if (reqVO.getOrder() == null) {
|
if (reqVO.getOrder() == null) {
|
||||||
query.orderByDesc(OrderDO::getId);
|
query.orderByDesc(OrderDO::getId);
|
||||||
|
|||||||
+44
-11
@@ -18,7 +18,6 @@ import com.cf.imes.framework.common.pojo.PageParam;
|
|||||||
import com.cf.imes.framework.common.pojo.PageResult;
|
import com.cf.imes.framework.common.pojo.PageResult;
|
||||||
import com.cf.imes.framework.common.util.Assert.AssertUtils;
|
import com.cf.imes.framework.common.util.Assert.AssertUtils;
|
||||||
import com.cf.imes.framework.common.util.object.BeanUtils;
|
import com.cf.imes.framework.common.util.object.BeanUtils;
|
||||||
import com.cf.imes.framework.id.core.util.SnowflakeIdWorker3rd;
|
|
||||||
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
|
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||||
import com.cf.imes.framework.organ.core.context.OrganContextHolder;
|
import com.cf.imes.framework.organ.core.context.OrganContextHolder;
|
||||||
import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils;
|
import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils;
|
||||||
@@ -70,7 +69,6 @@ import com.cf.imes.module.executor.service.customplateno.CustomPlateNoGenerateSe
|
|||||||
import com.cf.imes.module.executor.service.orderImport.OrderImportHandler;
|
import com.cf.imes.module.executor.service.orderImport.OrderImportHandler;
|
||||||
import com.cf.imes.module.executor.service.orderImport.factory.OrderImportHandlerFactory;
|
import com.cf.imes.module.executor.service.orderImport.factory.OrderImportHandlerFactory;
|
||||||
import com.cf.imes.module.executor.service.ordercomponent.OrderComponentService;
|
import com.cf.imes.module.executor.service.ordercomponent.OrderComponentService;
|
||||||
import com.cf.imes.module.executor.service.plan.PlanService;
|
|
||||||
import com.cf.imes.module.executor.util.deviseData.structure.FieldConstants;
|
import com.cf.imes.module.executor.util.deviseData.structure.FieldConstants;
|
||||||
import com.cf.imes.module.executor.util.deviseData.structure.PlateDetail;
|
import com.cf.imes.module.executor.util.deviseData.structure.PlateDetail;
|
||||||
import com.cf.imes.module.executor.util.elasticsearch.EsUtils;
|
import com.cf.imes.module.executor.util.elasticsearch.EsUtils;
|
||||||
@@ -157,16 +155,12 @@ public class OrderServiceImpl implements OrderService {
|
|||||||
@Resource
|
@Resource
|
||||||
private IdentifierGenerator identifierGenerator;
|
private IdentifierGenerator identifierGenerator;
|
||||||
|
|
||||||
@Resource
|
|
||||||
private SnowflakeIdWorker3rd idWorker;
|
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private PartsMapper partsMapper;
|
private PartsMapper partsMapper;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private CustomPlateNoGenerateService customPlateNoGenerateService;
|
private CustomPlateNoGenerateService customPlateNoGenerateService;
|
||||||
|
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private PlanItemMapper planItemMapper;
|
private PlanItemMapper planItemMapper;
|
||||||
|
|
||||||
@@ -182,9 +176,6 @@ public class OrderServiceImpl implements OrderService {
|
|||||||
|
|
||||||
public static final Double ZERO = 0.0;
|
public static final Double ZERO = 0.0;
|
||||||
|
|
||||||
@Resource
|
|
||||||
private PlanService planService;
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private OrderImportHandlerFactory orderImportHandlerFactory;
|
private OrderImportHandlerFactory orderImportHandlerFactory;
|
||||||
|
|
||||||
@@ -195,6 +186,8 @@ public class OrderServiceImpl implements OrderService {
|
|||||||
public Long createOrder(OrderSaveReqVO createReqVO) {
|
public Long createOrder(OrderSaveReqVO createReqVO) {
|
||||||
//校验手机号是否合法
|
//校验手机号是否合法
|
||||||
validatePhoneNumber(createReqVO.getPhoneNumber());
|
validatePhoneNumber(createReqVO.getPhoneNumber());
|
||||||
|
// 校验上级订单是否存在
|
||||||
|
validateParentOrderExists(createReqVO.getParentId());
|
||||||
|
|
||||||
//验证自定义单号是否存在,业务员、拆单员是否存在
|
//验证自定义单号是否存在,业务员、拆单员是否存在
|
||||||
validateCustomOrderNoExists(createReqVO.getCustomOrderNo());
|
validateCustomOrderNoExists(createReqVO.getCustomOrderNo());
|
||||||
@@ -261,7 +254,35 @@ 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()));
|
PageResult<OrderDO> pageResult = orderMapper.selectPage(pageReqVO.setOrganId(getUserOrganId()));
|
||||||
|
Long pageResultTotal = pageResult.getTotal();
|
||||||
|
if (pageResultTotal > 0) {
|
||||||
|
List<OrderDO> orderDOS = pageResult.getList();
|
||||||
|
// 1、整理所有订单id
|
||||||
|
List<Long> orderIds = orderDOS.stream().map(OrderDO::getId).toList();
|
||||||
|
|
||||||
|
// 2、查询订单id列表对应的子单
|
||||||
|
List<OrderDO> childList = orderMapper.selectList(
|
||||||
|
new LambdaQueryWrapper<OrderDO>()
|
||||||
|
.in(OrderDO::getParentId, orderIds)
|
||||||
|
.orderByDesc(OrderDO::getId)
|
||||||
|
);
|
||||||
|
|
||||||
|
if (CollUtil.isEmpty(childList)) {
|
||||||
|
return pageResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3、 按 parentId 分组
|
||||||
|
Map<Long, List<OrderDO>> childMap = childList.stream()
|
||||||
|
.collect(Collectors.groupingBy(OrderDO::getParentId));
|
||||||
|
|
||||||
|
// 4、 回填 child
|
||||||
|
for (OrderDO order : orderDOS) {
|
||||||
|
order.setChild(childMap.getOrDefault(order.getId(), Collections.emptyList()));
|
||||||
|
}
|
||||||
|
return new PageResult<>(orderDOS, pageResultTotal);
|
||||||
|
}
|
||||||
|
return pageResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -763,6 +784,18 @@ public class OrderServiceImpl implements OrderService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验父订单是否存在
|
||||||
|
*
|
||||||
|
* @param parentOrderId
|
||||||
|
*/
|
||||||
|
private void validateParentOrderExists(Long parentOrderId) {
|
||||||
|
if (ObjectUtil.isNull(parentOrderId)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
AssertUtils.notEmpty(orderMapper.selectById(parentOrderId), PARENT_ORDER_NOT_EXISTS, parentOrderId);
|
||||||
|
}
|
||||||
|
|
||||||
// 校验手机号是否合法
|
// 校验手机号是否合法
|
||||||
private void validatePhoneNumber(String phoneNumber) {
|
private void validatePhoneNumber(String phoneNumber) {
|
||||||
// 定义手机号正则表达式
|
// 定义手机号正则表达式
|
||||||
@@ -1702,7 +1735,7 @@ public class OrderServiceImpl implements OrderService {
|
|||||||
|
|
||||||
// 收集父ID
|
// 收集父ID
|
||||||
Set<Long> parentIds = orders.stream()
|
Set<Long> parentIds = orders.stream()
|
||||||
.map(OrderDO::getParentNo)
|
.map(OrderDO::getParentId)
|
||||||
.filter(id -> ObjectUtil.notEqual(id, OrderDO.PARENT_ID_ROOT))
|
.filter(id -> ObjectUtil.notEqual(id, OrderDO.PARENT_ID_ROOT))
|
||||||
.collect(Collectors.toSet());
|
.collect(Collectors.toSet());
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -317,7 +317,7 @@ public class ApiTypeRealize {
|
|||||||
OrderDO orderDO = OrderDO.builder()
|
OrderDO orderDO = OrderDO.builder()
|
||||||
.id(orderId)
|
.id(orderId)
|
||||||
.apiOrderId(orderNo)
|
.apiOrderId(orderNo)
|
||||||
.parentNo(0L)
|
.parentId(0L)
|
||||||
.orderDate(orderDate.atStartOfDay())
|
.orderDate(orderDate.atStartOfDay())
|
||||||
.deliveryDate(deliveryDate.atStartOfDay())
|
.deliveryDate(deliveryDate.atStartOfDay())
|
||||||
.orderType(OrderTypeEnum.MAIN_ORDER.getStatus())
|
.orderType(OrderTypeEnum.MAIN_ORDER.getStatus())
|
||||||
|
|||||||
+1
-1
@@ -43,7 +43,7 @@ public class OrderDO extends BaseDO {
|
|||||||
/**
|
/**
|
||||||
* 父单号
|
* 父单号
|
||||||
*/
|
*/
|
||||||
private Long parentNo;
|
private Long parentId;
|
||||||
/**
|
/**
|
||||||
* 源订单号
|
* 源订单号
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user