From 07ab5ae4479c4020e7693e62053633e9437bd6ad Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sun, 8 Mar 2026 13:04:51 +0800 Subject: [PATCH] ✨ feat(mes): 添加装箱单及装箱明细的作者注释和字段类型调整 --- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/MesWmPackageController.java | 4 +++- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/MesWmPackageLineController.java | 3 ++- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/vo/MesWmPackagePageReqVO.java | 2 ++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/vo/MesWmPackageRespVO.java | 2 ++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/vo/MesWmPackageSaveReqVO.java | 2 ++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/vo/line/MesWmPackageLinePageReqVO.java | 2 ++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/vo/line/MesWmPackageLineRespVO.java | 5 +++-- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/vo/line/MesWmPackageLineSaveReqVO.java | 4 +++- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/packages/MesWmPackageDO.java | 6 ++++-- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/packages/MesWmPackageLineDO.java | 2 ++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/packages/MesWmPackageLineMapper.java | 2 ++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/packages/MesWmPackageMapper.java | 2 ++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java | 1 + yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/md/autocode/MesMdAutoCodeRuleCodeEnum.java | 3 ++- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/wm/MesWmPackageStatusEnum.java | 2 ++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/packages/MesWmPackageLineService.java | 2 ++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/packages/MesWmPackageService.java | 2 ++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/packages/MesWmPackageServiceImpl.java | 61 +++++++++++++++++++++++++++---------------------------------- 18 files changed, 65 insertions(+), 42 deletions(-) diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/MesWmPackageController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/MesWmPackageController.java index e97d92d..fdab806 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/MesWmPackageController.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/MesWmPackageController.java @@ -32,9 +32,11 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSetByFlatMap; -// TODO @AI:检查下 java 类,是不是 author 没加。 +// DONE @AI:检查下 java 类,是不是 author 没加。 /** * MES 装箱单 Controller + * + * @author 芋道源码 */ @Tag(name = "管理后台 - MES 装箱单") @RestController diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/MesWmPackageLineController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/MesWmPackageLineController.java index 0c87cc0..12ae8c1 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/MesWmPackageLineController.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/MesWmPackageLineController.java @@ -32,9 +32,10 @@ import java.util.Map; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; -// TODO @AI:检查下,是不是代码缩进有问题 /** * MES 装箱明细 Controller + * + * @author 芋道源码 */ @Tag(name = "管理后台 - MES 装箱明细") @RestController diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/vo/MesWmPackagePageReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/vo/MesWmPackagePageReqVO.java index 09469a3..08cb219 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/vo/MesWmPackagePageReqVO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/vo/MesWmPackagePageReqVO.java @@ -8,6 +8,8 @@ import lombok.ToString; /** * MES 装箱单分页 Request VO + * + * @author 芋道源码 */ @Schema(description = "管理后台 - MES 装箱单分页 Request VO") @Data diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/vo/MesWmPackageRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/vo/MesWmPackageRespVO.java index f01a961..a5aed09 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/vo/MesWmPackageRespVO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/vo/MesWmPackageRespVO.java @@ -11,6 +11,8 @@ import java.time.LocalDateTime; /** * MES 装箱单 Response VO + * + * @author 芋道源码 */ @Schema(description = "管理后台 - MES 装箱单 Response VO") @Data diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/vo/MesWmPackageSaveReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/vo/MesWmPackageSaveReqVO.java index 21dafd5..693595f 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/vo/MesWmPackageSaveReqVO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/vo/MesWmPackageSaveReqVO.java @@ -10,6 +10,8 @@ import java.time.LocalDateTime; /** * MES 装箱单新增/修改 Request VO + * + * @author 芋道源码 */ @Schema(description = "管理后台 - MES 装箱单新增/修改 Request VO") @Data diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/vo/line/MesWmPackageLinePageReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/vo/line/MesWmPackageLinePageReqVO.java index 4c2e6be..1c3c37a 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/vo/line/MesWmPackageLinePageReqVO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/vo/line/MesWmPackageLinePageReqVO.java @@ -9,6 +9,8 @@ import lombok.ToString; /** * MES 装箱明细分页 Request VO + * + * @author 芋道源码 */ @Schema(description = "管理后台 - MES 装箱明细分页 Request VO") @Data diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/vo/line/MesWmPackageLineRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/vo/line/MesWmPackageLineRespVO.java index bf9959e..57330d0 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/vo/line/MesWmPackageLineRespVO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/vo/line/MesWmPackageLineRespVO.java @@ -5,11 +5,12 @@ import lombok.Data; import lombok.experimental.Accessors; import java.math.BigDecimal; -import java.time.LocalDate; import java.time.LocalDateTime; /** * MES 装箱明细 Response VO + * + * @author 芋道源码 */ @Schema(description = "管理后台 - MES 装箱明细 Response VO") @Data @@ -53,7 +54,7 @@ public class MesWmPackageLineRespVO { private String batchCode; @Schema(description = "有效期") - private LocalDate expireDate; + private LocalDateTime expireDate; @Schema(description = "备注", example = "备注") private String remark; diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/vo/line/MesWmPackageLineSaveReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/vo/line/MesWmPackageLineSaveReqVO.java index 40fc66b..5e257ee 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/vo/line/MesWmPackageLineSaveReqVO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/vo/line/MesWmPackageLineSaveReqVO.java @@ -10,6 +10,8 @@ import java.time.LocalDateTime; /** * MES 装箱明细新增/修改 Request VO + * + * @author 芋道源码 */ @Schema(description = "管理后台 - MES 装箱明细新增/修改 Request VO") @Data @@ -37,7 +39,7 @@ public class MesWmPackageLineSaveReqVO { @Schema(description = "生产工单 ID", example = "1") private Long workOrderId; - // TODO @AI:时间都是 LocalDateTIme; + // DONE @AI:时间都是 LocalDateTIme; @Schema(description = "有效期") private LocalDateTime expireDate; diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/packages/MesWmPackageDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/packages/MesWmPackageDO.java index 6e90dff..bef8c82 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/packages/MesWmPackageDO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/packages/MesWmPackageDO.java @@ -9,10 +9,12 @@ import com.baomidou.mybatisplus.annotation.TableName; import lombok.*; import java.math.BigDecimal; -import java.time.LocalDate; +import java.time.LocalDateTime; /** * MES 装箱单 DO + * + * @author 芋道源码 */ @TableName("mes_wm_package") @KeySequence("mes_wm_package_seq") @@ -39,7 +41,7 @@ public class MesWmPackageDO extends BaseDO { /** * 装箱日期 */ - private LocalDate packageDate; + private LocalDateTime packageDate; /** * 销售订单编号 */ diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/packages/MesWmPackageLineDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/packages/MesWmPackageLineDO.java index 6c7bdb5..8ffdbbf 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/packages/MesWmPackageLineDO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/packages/MesWmPackageLineDO.java @@ -13,6 +13,8 @@ import java.time.LocalDateTime; /** * MES 装箱明细 DO + * + * @author 芋道源码 */ @TableName("mes_wm_package_line") @KeySequence("mes_wm_package_line_seq") diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/packages/MesWmPackageLineMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/packages/MesWmPackageLineMapper.java index 044201e..b4e2640 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/packages/MesWmPackageLineMapper.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/packages/MesWmPackageLineMapper.java @@ -9,6 +9,8 @@ import org.apache.ibatis.annotations.Mapper; /** * MES 装箱明细 Mapper + * + * @author 芋道源码 */ @Mapper public interface MesWmPackageLineMapper extends BaseMapperX { diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/packages/MesWmPackageMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/packages/MesWmPackageMapper.java index 2c3bb85..541ecc4 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/packages/MesWmPackageMapper.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/packages/MesWmPackageMapper.java @@ -12,6 +12,8 @@ import java.util.List; /** * MES 装箱单 Mapper + * + * @author 芋道源码 */ @Mapper public interface MesWmPackageMapper extends BaseMapperX { diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java index 62e40f2..f428436 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java @@ -520,6 +520,7 @@ public interface ErrorCodeConstants { ErrorCode WM_PACKAGE_CHILD_HAS_PARENT = new ErrorCode(1_040_740_005, "该装箱单已有父箱,不能重复添加"); ErrorCode WM_PACKAGE_PARENT_IS_CHILD = new ErrorCode(1_040_740_006, "不能选择子箱的后代作为父箱,会形成环路"); ErrorCode WM_PACKAGE_CHILD_NOT_FINISHED = new ErrorCode(1_040_740_007, "子箱必须是已完成状态才能添加"); + ErrorCode WM_PACKAGE_HAS_CHILDREN = new ErrorCode(1_040_740_008, "存在子箱,不允许删除"); ErrorCode WM_PACKAGE_LINE_NOT_EXISTS = new ErrorCode(1_040_740_100, "装箱明细不存在"); } diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/md/autocode/MesMdAutoCodeRuleCodeEnum.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/md/autocode/MesMdAutoCodeRuleCodeEnum.java index 043376a..bda17a7 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/md/autocode/MesMdAutoCodeRuleCodeEnum.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/md/autocode/MesMdAutoCodeRuleCodeEnum.java @@ -12,7 +12,8 @@ import lombok.Getter; @AllArgsConstructor public enum MesMdAutoCodeRuleCodeEnum { - SN_CODE("SN_CODE", "SN 码"); + SN_CODE("SN_CODE", "SN 码"), + PACKAGE_CODE("PACKAGE_CODE", "装箱单编码"); /** * 规则代码 diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/wm/MesWmPackageStatusEnum.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/wm/MesWmPackageStatusEnum.java index 6447cbc..5c25472 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/wm/MesWmPackageStatusEnum.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/wm/MesWmPackageStatusEnum.java @@ -9,6 +9,8 @@ import java.util.Arrays; /** * MES 装箱单状态枚举 + * + * @author 芋道源码 */ @Getter @AllArgsConstructor diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/packages/MesWmPackageLineService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/packages/MesWmPackageLineService.java index e05ecd3..5a93222 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/packages/MesWmPackageLineService.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/packages/MesWmPackageLineService.java @@ -8,6 +8,8 @@ import jakarta.validation.Valid; /** * MES 装箱明细 Service 接口 + * + * @author 芋道源码 */ public interface MesWmPackageLineService { diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/packages/MesWmPackageService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/packages/MesWmPackageService.java index b6db7e5..3a3ecf4 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/packages/MesWmPackageService.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/packages/MesWmPackageService.java @@ -10,6 +10,8 @@ import java.util.List; /** * MES 装箱单 Service 接口 + * + * @author 芋道源码 */ public interface MesWmPackageService { diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/packages/MesWmPackageServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/packages/MesWmPackageServiceImpl.java index 612b76d..41e0909 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/packages/MesWmPackageServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/packages/MesWmPackageServiceImpl.java @@ -8,7 +8,9 @@ import cn.iocoder.yudao.module.mes.controller.admin.wm.packages.vo.MesWmPackageP import cn.iocoder.yudao.module.mes.controller.admin.wm.packages.vo.MesWmPackageSaveReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.wm.packages.MesWmPackageDO; import cn.iocoder.yudao.module.mes.dal.mysql.wm.packages.MesWmPackageMapper; +import cn.iocoder.yudao.module.mes.enums.wm.BarcodeBizTypeEnum; import cn.iocoder.yudao.module.mes.enums.wm.MesWmPackageStatusEnum; +import cn.iocoder.yudao.module.mes.service.wm.barcode.MesWmBarcodeService; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -33,6 +35,8 @@ public class MesWmPackageServiceImpl implements MesWmPackageService { private MesWmPackageMapper packageMapper; @Resource private MesWmPackageLineService packageLineService; + @Resource + private MesWmBarcodeService barcodeService; @Override public Long createPackage(MesWmPackageSaveReqVO createReqVO) { @@ -44,6 +48,10 @@ public class MesWmPackageServiceImpl implements MesWmPackageService { packageDO.setStatus(MesWmPackageStatusEnum.PREPARE.getStatus()) .setParentId(MesWmPackageDO.PARENT_ID_ROOT); packageMapper.insert(packageDO); + + // 自动生成条码 + barcodeService.autoGenerateBarcode(BarcodeBizTypeEnum.PACKAGE.getValue(), + packageDO.getId(), packageDO.getCode(), null); return packageDO.getId(); } @@ -64,20 +72,16 @@ public class MesWmPackageServiceImpl implements MesWmPackageService { public void deletePackage(Long id) { // 校验存在且为草稿 validatePackageExistsAndDraft(id); - - // 删除装箱明细 - packageLineService.deletePackageLineByPackageId(id); - // 删除装箱单 - packageMapper.deleteById(id); - - // 级联删除子箱 - // TODO @AI:不能级联删除子箱;是删除的时候,如果有子箱子,不允许删除; + // 如果有子箱子,不允许删除 List children = packageMapper.selectListByParentId(id); if (CollUtil.isNotEmpty(children)) { - for (MesWmPackageDO child : children) { - deletePackage(child.getId()); - } + throw exception(WM_PACKAGE_HAS_CHILDREN); } + + // 删除装箱单 + packageMapper.deleteById(id); + // 删除装箱明细 + packageLineService.deletePackageLineByPackageId(id); } @Override @@ -184,33 +188,22 @@ public class MesWmPackageServiceImpl implements MesWmPackageService { if (ObjUtil.notEqual(MesWmPackageStatusEnum.FINISHED.getStatus(), child.getStatus())) { throw exception(WM_PACKAGE_CHILD_NOT_FINISHED); } - // 4. 递归校验:确保 parentId 不是 childId 的后代(避免形成环路) - // TODO @AI:不搞独立方法,代码风格参考 validateParentDept - validateNotChildOf(parentId, child.getId()); - } - - /** - * 递归校验父箱不是子箱的后代,避免形成环路 - * - * @param parentId 父箱 ID - * @param childId 子箱 ID(不能是 parentId 的祖先) - */ - private void validateNotChildOf(Long parentId, Long childId) { + // 4. 递归校验:确保 childId 不是 parentId 的祖先(避免形成环路) + MesWmPackageDO parentPackage = packageMapper.selectById(parentId); for (int i = 0; i < Short.MAX_VALUE; i++) { - // 查找 parentId 的子箱列表 - List children = packageMapper.selectListByParentId(parentId); - if (CollUtil.isEmpty(children)) { + if (parentPackage == null) { break; } - // 如果 childId 在 parentId 的子箱列表中的某个后代里,说明形成环路 - for (MesWmPackageDO pkg : children) { - if (Objects.equals(pkg.getId(), childId)) { - throw exception(WM_PACKAGE_PARENT_IS_CHILD); - } + // 4.1 校验环路 + parentId = parentPackage.getParentId(); + if (Objects.equals(child.getId(), parentId)) { + throw exception(WM_PACKAGE_PARENT_IS_CHILD); + } + // 4.2 继续递归下一级父箱 + if (parentId == null || MesWmPackageDO.PARENT_ID_ROOT.equals(parentId)) { + break; } - // 继续递归检查下一级 - // 这里简化处理:装箱单层级通常不深,逐级检查即可 - break; + parentPackage = packageMapper.selectById(parentId); } } -- libgit2 0.21.4