diff --git a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/Assert/AssertUtils.java b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/Assert/AssertUtils.java index 90d6103bf..dc04f715b 100644 --- a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/Assert/AssertUtils.java +++ b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/util/Assert/AssertUtils.java @@ -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)) { 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 4b98a0c88..6eb77cc2b 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 @@ -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, "模块不存在"); 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/OrderRespVO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/OrderRespVO.java index 79d2f31ef..890cc537d 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/OrderRespVO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/controller/admin/order/vo/order/OrderRespVO.java @@ -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 child; } \ 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/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 bce3977bb..eb65be105 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 @@ -17,7 +17,7 @@ public class OrderSaveReqVO { private Long id; @Schema(description = "父单号") - private Long parentNo; + private Long parentId; @Schema(description = "源订单号") private String apiOrderId; diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/order/OrderDO.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/order/OrderDO.java index 876175286..11c12d9fc 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/order/OrderDO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/dataobject/order/OrderDO.java @@ -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 child; } 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 f1371d1ca..adc5d4fcc 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 @@ -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 { default PageResult selectPage(OrderPageReqVO reqVO) { LambdaQueryWrapperX query = new LambdaQueryWrapperX() - .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 { .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); 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 19c2fc921..3b42ede22 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 @@ -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 getOrderPage(OrderPageReqVO pageReqVO) { - return orderMapper.selectPage(pageReqVO.setOrganId(getUserOrganId())); + PageResult pageResult = orderMapper.selectPage(pageReqVO.setOrganId(getUserOrganId())); + Long pageResultTotal = pageResult.getTotal(); + if (pageResultTotal > 0) { + List orderDOS = pageResult.getList(); + // 1、整理所有订单id + List orderIds = orderDOS.stream().map(OrderDO::getId).toList(); + + // 2、查询订单id列表对应的子单 + List childList = orderMapper.selectList( + new LambdaQueryWrapper() + .in(OrderDO::getParentId, orderIds) + .orderByDesc(OrderDO::getId) + ); + + if (CollUtil.isEmpty(childList)) { + return pageResult; + } + + // 3、 按 parentId 分组 + Map> 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 parentIds = orders.stream() - .map(OrderDO::getParentNo) + .map(OrderDO::getParentId) .filter(id -> ObjectUtil.notEqual(id, OrderDO.PARENT_ID_ROOT)) .collect(Collectors.toSet()); diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/api/webcad/ApiTypeRealize.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/api/webcad/ApiTypeRealize.java index e6ad1919f..be4a3ece1 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/api/webcad/ApiTypeRealize.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/util/fileConversion/admin/api/webcad/ApiTypeRealize.java @@ -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()) diff --git a/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/dal/dataobject/order/OrderDO.java b/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/dal/dataobject/order/OrderDO.java index 84a193a4e..f4cf35428 100644 --- a/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/dal/dataobject/order/OrderDO.java +++ b/cf-module-prod-plan/cf-module-prod-plan-biz/src/main/java/com/cf/imes/module/plan/dal/dataobject/order/OrderDO.java @@ -43,7 +43,7 @@ public class OrderDO extends BaseDO { /** * 父单号 */ - private Long parentNo; + private Long parentId; /** * 源订单号 */