mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-12 21:02:08 +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) {
|
||||
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_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 PARENT_ORDER_NOT_EXISTS = new ErrorCode(1_003_109_007, "上级订单{}不存在");
|
||||
|
||||
// ========== 订单 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 java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
import com.alibaba.excel.annotation.*;
|
||||
|
||||
@Schema(description = "管理后台 - 订单表 order_{N} Response VO")
|
||||
@@ -88,4 +90,7 @@ public class OrderRespVO {
|
||||
private LocalDateTime createTime;
|
||||
|
||||
private Boolean deleted;
|
||||
|
||||
@Schema(description = "子单列表")
|
||||
private List<OrderRespVO> child;
|
||||
}
|
||||
+1
-1
@@ -17,7 +17,7 @@ public class OrderSaveReqVO {
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "父单号")
|
||||
private Long parentNo;
|
||||
private Long parentId;
|
||||
|
||||
@Schema(description = "源订单号")
|
||||
private String apiOrderId;
|
||||
|
||||
+11
-1
@@ -6,6 +6,7 @@ import com.cf.imes.framework.mybatis.core.type.CompressStringTypeHandler;
|
||||
import lombok.*;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 订单表 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 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.Map;
|
||||
|
||||
import static com.cf.imes.module.executor.dal.dataobject.order.OrderDO.PARENT_ID_ROOT;
|
||||
|
||||
/**
|
||||
* 订单表 order_{N} Mapper
|
||||
*
|
||||
@@ -46,7 +48,7 @@ public interface OrderMapper extends BaseMapperX<OrderDO> {
|
||||
|
||||
default PageResult<OrderDO> selectPage(OrderPageReqVO reqVO) {
|
||||
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())
|
||||
.betweenIfPresent(OrderDO::getDeliveryDate, reqVO.getDeliveryDate())
|
||||
.eqIfPresent(OrderDO::getApiOrderId, reqVO.getApiOrderId())
|
||||
@@ -66,7 +68,8 @@ public interface OrderMapper extends BaseMapperX<OrderDO> {
|
||||
.eqIfPresent(OrderDO::getRemark, reqVO.getRemark())
|
||||
.eqIfPresent(OrderDO::getOrganId, reqVO.getOrganId())
|
||||
.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) {
|
||||
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.util.Assert.AssertUtils;
|
||||
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.organ.core.context.OrganContextHolder;
|
||||
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.factory.OrderImportHandlerFactory;
|
||||
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.PlateDetail;
|
||||
import com.cf.imes.module.executor.util.elasticsearch.EsUtils;
|
||||
@@ -157,16 +155,12 @@ public class OrderServiceImpl implements OrderService {
|
||||
@Resource
|
||||
private IdentifierGenerator identifierGenerator;
|
||||
|
||||
@Resource
|
||||
private SnowflakeIdWorker3rd idWorker;
|
||||
|
||||
@Resource
|
||||
private PartsMapper partsMapper;
|
||||
|
||||
@Resource
|
||||
private CustomPlateNoGenerateService customPlateNoGenerateService;
|
||||
|
||||
|
||||
@Resource
|
||||
private PlanItemMapper planItemMapper;
|
||||
|
||||
@@ -182,9 +176,6 @@ public class OrderServiceImpl implements OrderService {
|
||||
|
||||
public static final Double ZERO = 0.0;
|
||||
|
||||
@Resource
|
||||
private PlanService planService;
|
||||
|
||||
@Autowired
|
||||
private OrderImportHandlerFactory orderImportHandlerFactory;
|
||||
|
||||
@@ -195,6 +186,8 @@ public class OrderServiceImpl implements OrderService {
|
||||
public Long createOrder(OrderSaveReqVO createReqVO) {
|
||||
//校验手机号是否合法
|
||||
validatePhoneNumber(createReqVO.getPhoneNumber());
|
||||
// 校验上级订单是否存在
|
||||
validateParentOrderExists(createReqVO.getParentId());
|
||||
|
||||
//验证自定义单号是否存在,业务员、拆单员是否存在
|
||||
validateCustomOrderNoExists(createReqVO.getCustomOrderNo());
|
||||
@@ -261,7 +254,35 @@ public class OrderServiceImpl implements OrderService {
|
||||
|
||||
@Override
|
||||
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
|
||||
@@ -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) {
|
||||
// 定义手机号正则表达式
|
||||
@@ -1702,7 +1735,7 @@ public class OrderServiceImpl implements OrderService {
|
||||
|
||||
// 收集父ID
|
||||
Set<Long> parentIds = orders.stream()
|
||||
.map(OrderDO::getParentNo)
|
||||
.map(OrderDO::getParentId)
|
||||
.filter(id -> ObjectUtil.notEqual(id, OrderDO.PARENT_ID_ROOT))
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
|
||||
+1
-1
@@ -317,7 +317,7 @@ public class ApiTypeRealize {
|
||||
OrderDO orderDO = OrderDO.builder()
|
||||
.id(orderId)
|
||||
.apiOrderId(orderNo)
|
||||
.parentNo(0L)
|
||||
.parentId(0L)
|
||||
.orderDate(orderDate.atStartOfDay())
|
||||
.deliveryDate(deliveryDate.atStartOfDay())
|
||||
.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