Commit 07ab5ae4479c4020e7693e62053633e9437bd6ad
1 parent
8ab84968
✨ feat(mes): 添加装箱单及装箱明细的作者注释和字段类型调整
Showing
18 changed files
with
65 additions
and
42 deletions
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; | @@ -32,9 +32,11 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; | ||
| 32 | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; | 32 | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; |
| 33 | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSetByFlatMap; | 33 | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSetByFlatMap; |
| 34 | 34 | ||
| 35 | -// TODO @AI:检查下 java 类,是不是 author 没加。 | 35 | +// DONE @AI:检查下 java 类,是不是 author 没加。 |
| 36 | /** | 36 | /** |
| 37 | * MES 装箱单 Controller | 37 | * MES 装箱单 Controller |
| 38 | + * | ||
| 39 | + * @author 芋道源码 | ||
| 38 | */ | 40 | */ |
| 39 | @Tag(name = "管理后台 - MES 装箱单") | 41 | @Tag(name = "管理后台 - MES 装箱单") |
| 40 | @RestController | 42 | @RestController |
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; | @@ -32,9 +32,10 @@ import java.util.Map; | ||
| 32 | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; | 32 | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| 33 | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; | 33 | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; |
| 34 | 34 | ||
| 35 | -// TODO @AI:检查下,是不是代码缩进有问题 | ||
| 36 | /** | 35 | /** |
| 37 | * MES 装箱明细 Controller | 36 | * MES 装箱明细 Controller |
| 37 | + * | ||
| 38 | + * @author 芋道源码 | ||
| 38 | */ | 39 | */ |
| 39 | @Tag(name = "管理后台 - MES 装箱明细") | 40 | @Tag(name = "管理后台 - MES 装箱明细") |
| 40 | @RestController | 41 | @RestController |
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; | @@ -8,6 +8,8 @@ import lombok.ToString; | ||
| 8 | 8 | ||
| 9 | /** | 9 | /** |
| 10 | * MES 装箱单分页 Request VO | 10 | * MES 装箱单分页 Request VO |
| 11 | + * | ||
| 12 | + * @author 芋道源码 | ||
| 11 | */ | 13 | */ |
| 12 | @Schema(description = "管理后台 - MES 装箱单分页 Request VO") | 14 | @Schema(description = "管理后台 - MES 装箱单分页 Request VO") |
| 13 | @Data | 15 | @Data |
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; | @@ -11,6 +11,8 @@ import java.time.LocalDateTime; | ||
| 11 | 11 | ||
| 12 | /** | 12 | /** |
| 13 | * MES 装箱单 Response VO | 13 | * MES 装箱单 Response VO |
| 14 | + * | ||
| 15 | + * @author 芋道源码 | ||
| 14 | */ | 16 | */ |
| 15 | @Schema(description = "管理后台 - MES 装箱单 Response VO") | 17 | @Schema(description = "管理后台 - MES 装箱单 Response VO") |
| 16 | @Data | 18 | @Data |
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; | @@ -10,6 +10,8 @@ import java.time.LocalDateTime; | ||
| 10 | 10 | ||
| 11 | /** | 11 | /** |
| 12 | * MES 装箱单新增/修改 Request VO | 12 | * MES 装箱单新增/修改 Request VO |
| 13 | + * | ||
| 14 | + * @author 芋道源码 | ||
| 13 | */ | 15 | */ |
| 14 | @Schema(description = "管理后台 - MES 装箱单新增/修改 Request VO") | 16 | @Schema(description = "管理后台 - MES 装箱单新增/修改 Request VO") |
| 15 | @Data | 17 | @Data |
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; | @@ -9,6 +9,8 @@ import lombok.ToString; | ||
| 9 | 9 | ||
| 10 | /** | 10 | /** |
| 11 | * MES 装箱明细分页 Request VO | 11 | * MES 装箱明细分页 Request VO |
| 12 | + * | ||
| 13 | + * @author 芋道源码 | ||
| 12 | */ | 14 | */ |
| 13 | @Schema(description = "管理后台 - MES 装箱明细分页 Request VO") | 15 | @Schema(description = "管理后台 - MES 装箱明细分页 Request VO") |
| 14 | @Data | 16 | @Data |
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; | @@ -5,11 +5,12 @@ import lombok.Data; | ||
| 5 | import lombok.experimental.Accessors; | 5 | import lombok.experimental.Accessors; |
| 6 | 6 | ||
| 7 | import java.math.BigDecimal; | 7 | import java.math.BigDecimal; |
| 8 | -import java.time.LocalDate; | ||
| 9 | import java.time.LocalDateTime; | 8 | import java.time.LocalDateTime; |
| 10 | 9 | ||
| 11 | /** | 10 | /** |
| 12 | * MES 装箱明细 Response VO | 11 | * MES 装箱明细 Response VO |
| 12 | + * | ||
| 13 | + * @author 芋道源码 | ||
| 13 | */ | 14 | */ |
| 14 | @Schema(description = "管理后台 - MES 装箱明细 Response VO") | 15 | @Schema(description = "管理后台 - MES 装箱明细 Response VO") |
| 15 | @Data | 16 | @Data |
| @@ -53,7 +54,7 @@ public class MesWmPackageLineRespVO { | @@ -53,7 +54,7 @@ public class MesWmPackageLineRespVO { | ||
| 53 | private String batchCode; | 54 | private String batchCode; |
| 54 | 55 | ||
| 55 | @Schema(description = "有效期") | 56 | @Schema(description = "有效期") |
| 56 | - private LocalDate expireDate; | 57 | + private LocalDateTime expireDate; |
| 57 | 58 | ||
| 58 | @Schema(description = "备注", example = "备注") | 59 | @Schema(description = "备注", example = "备注") |
| 59 | private String remark; | 60 | private String remark; |
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; | @@ -10,6 +10,8 @@ import java.time.LocalDateTime; | ||
| 10 | 10 | ||
| 11 | /** | 11 | /** |
| 12 | * MES 装箱明细新增/修改 Request VO | 12 | * MES 装箱明细新增/修改 Request VO |
| 13 | + * | ||
| 14 | + * @author 芋道源码 | ||
| 13 | */ | 15 | */ |
| 14 | @Schema(description = "管理后台 - MES 装箱明细新增/修改 Request VO") | 16 | @Schema(description = "管理后台 - MES 装箱明细新增/修改 Request VO") |
| 15 | @Data | 17 | @Data |
| @@ -37,7 +39,7 @@ public class MesWmPackageLineSaveReqVO { | @@ -37,7 +39,7 @@ public class MesWmPackageLineSaveReqVO { | ||
| 37 | @Schema(description = "生产工单 ID", example = "1") | 39 | @Schema(description = "生产工单 ID", example = "1") |
| 38 | private Long workOrderId; | 40 | private Long workOrderId; |
| 39 | 41 | ||
| 40 | - // TODO @AI:时间都是 LocalDateTIme; | 42 | + // DONE @AI:时间都是 LocalDateTIme; |
| 41 | @Schema(description = "有效期") | 43 | @Schema(description = "有效期") |
| 42 | private LocalDateTime expireDate; | 44 | private LocalDateTime expireDate; |
| 43 | 45 |
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; | @@ -9,10 +9,12 @@ import com.baomidou.mybatisplus.annotation.TableName; | ||
| 9 | import lombok.*; | 9 | import lombok.*; |
| 10 | 10 | ||
| 11 | import java.math.BigDecimal; | 11 | import java.math.BigDecimal; |
| 12 | -import java.time.LocalDate; | 12 | +import java.time.LocalDateTime; |
| 13 | 13 | ||
| 14 | /** | 14 | /** |
| 15 | * MES 装箱单 DO | 15 | * MES 装箱单 DO |
| 16 | + * | ||
| 17 | + * @author 芋道源码 | ||
| 16 | */ | 18 | */ |
| 17 | @TableName("mes_wm_package") | 19 | @TableName("mes_wm_package") |
| 18 | @KeySequence("mes_wm_package_seq") | 20 | @KeySequence("mes_wm_package_seq") |
| @@ -39,7 +41,7 @@ public class MesWmPackageDO extends BaseDO { | @@ -39,7 +41,7 @@ public class MesWmPackageDO extends BaseDO { | ||
| 39 | /** | 41 | /** |
| 40 | * 装箱日期 | 42 | * 装箱日期 |
| 41 | */ | 43 | */ |
| 42 | - private LocalDate packageDate; | 44 | + private LocalDateTime packageDate; |
| 43 | /** | 45 | /** |
| 44 | * 销售订单编号 | 46 | * 销售订单编号 |
| 45 | */ | 47 | */ |
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; | @@ -13,6 +13,8 @@ import java.time.LocalDateTime; | ||
| 13 | 13 | ||
| 14 | /** | 14 | /** |
| 15 | * MES 装箱明细 DO | 15 | * MES 装箱明细 DO |
| 16 | + * | ||
| 17 | + * @author 芋道源码 | ||
| 16 | */ | 18 | */ |
| 17 | @TableName("mes_wm_package_line") | 19 | @TableName("mes_wm_package_line") |
| 18 | @KeySequence("mes_wm_package_line_seq") | 20 | @KeySequence("mes_wm_package_line_seq") |
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; | @@ -9,6 +9,8 @@ import org.apache.ibatis.annotations.Mapper; | ||
| 9 | 9 | ||
| 10 | /** | 10 | /** |
| 11 | * MES 装箱明细 Mapper | 11 | * MES 装箱明细 Mapper |
| 12 | + * | ||
| 13 | + * @author 芋道源码 | ||
| 12 | */ | 14 | */ |
| 13 | @Mapper | 15 | @Mapper |
| 14 | public interface MesWmPackageLineMapper extends BaseMapperX<MesWmPackageLineDO> { | 16 | public interface MesWmPackageLineMapper extends BaseMapperX<MesWmPackageLineDO> { |
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; | @@ -12,6 +12,8 @@ import java.util.List; | ||
| 12 | 12 | ||
| 13 | /** | 13 | /** |
| 14 | * MES 装箱单 Mapper | 14 | * MES 装箱单 Mapper |
| 15 | + * | ||
| 16 | + * @author 芋道源码 | ||
| 15 | */ | 17 | */ |
| 16 | @Mapper | 18 | @Mapper |
| 17 | public interface MesWmPackageMapper extends BaseMapperX<MesWmPackageDO> { | 19 | public interface MesWmPackageMapper extends BaseMapperX<MesWmPackageDO> { |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java
| @@ -520,6 +520,7 @@ public interface ErrorCodeConstants { | @@ -520,6 +520,7 @@ public interface ErrorCodeConstants { | ||
| 520 | ErrorCode WM_PACKAGE_CHILD_HAS_PARENT = new ErrorCode(1_040_740_005, "该装箱单已有父箱,不能重复添加"); | 520 | ErrorCode WM_PACKAGE_CHILD_HAS_PARENT = new ErrorCode(1_040_740_005, "该装箱单已有父箱,不能重复添加"); |
| 521 | ErrorCode WM_PACKAGE_PARENT_IS_CHILD = new ErrorCode(1_040_740_006, "不能选择子箱的后代作为父箱,会形成环路"); | 521 | ErrorCode WM_PACKAGE_PARENT_IS_CHILD = new ErrorCode(1_040_740_006, "不能选择子箱的后代作为父箱,会形成环路"); |
| 522 | ErrorCode WM_PACKAGE_CHILD_NOT_FINISHED = new ErrorCode(1_040_740_007, "子箱必须是已完成状态才能添加"); | 522 | ErrorCode WM_PACKAGE_CHILD_NOT_FINISHED = new ErrorCode(1_040_740_007, "子箱必须是已完成状态才能添加"); |
| 523 | + ErrorCode WM_PACKAGE_HAS_CHILDREN = new ErrorCode(1_040_740_008, "存在子箱,不允许删除"); | ||
| 523 | ErrorCode WM_PACKAGE_LINE_NOT_EXISTS = new ErrorCode(1_040_740_100, "装箱明细不存在"); | 524 | ErrorCode WM_PACKAGE_LINE_NOT_EXISTS = new ErrorCode(1_040_740_100, "装箱明细不存在"); |
| 524 | 525 | ||
| 525 | } | 526 | } |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/md/autocode/MesMdAutoCodeRuleCodeEnum.java
| @@ -12,7 +12,8 @@ import lombok.Getter; | @@ -12,7 +12,8 @@ import lombok.Getter; | ||
| 12 | @AllArgsConstructor | 12 | @AllArgsConstructor |
| 13 | public enum MesMdAutoCodeRuleCodeEnum { | 13 | public enum MesMdAutoCodeRuleCodeEnum { |
| 14 | 14 | ||
| 15 | - SN_CODE("SN_CODE", "SN 码"); | 15 | + SN_CODE("SN_CODE", "SN 码"), |
| 16 | + PACKAGE_CODE("PACKAGE_CODE", "装箱单编码"); | ||
| 16 | 17 | ||
| 17 | /** | 18 | /** |
| 18 | * 规则代码 | 19 | * 规则代码 |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/wm/MesWmPackageStatusEnum.java
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/packages/MesWmPackageLineService.java
| @@ -8,6 +8,8 @@ import jakarta.validation.Valid; | @@ -8,6 +8,8 @@ import jakarta.validation.Valid; | ||
| 8 | 8 | ||
| 9 | /** | 9 | /** |
| 10 | * MES 装箱明细 Service 接口 | 10 | * MES 装箱明细 Service 接口 |
| 11 | + * | ||
| 12 | + * @author 芋道源码 | ||
| 11 | */ | 13 | */ |
| 12 | public interface MesWmPackageLineService { | 14 | public interface MesWmPackageLineService { |
| 13 | 15 |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/packages/MesWmPackageService.java
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 | @@ -8,7 +8,9 @@ import cn.iocoder.yudao.module.mes.controller.admin.wm.packages.vo.MesWmPackageP | ||
| 8 | import cn.iocoder.yudao.module.mes.controller.admin.wm.packages.vo.MesWmPackageSaveReqVO; | 8 | import cn.iocoder.yudao.module.mes.controller.admin.wm.packages.vo.MesWmPackageSaveReqVO; |
| 9 | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.packages.MesWmPackageDO; | 9 | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.packages.MesWmPackageDO; |
| 10 | import cn.iocoder.yudao.module.mes.dal.mysql.wm.packages.MesWmPackageMapper; | 10 | import cn.iocoder.yudao.module.mes.dal.mysql.wm.packages.MesWmPackageMapper; |
| 11 | +import cn.iocoder.yudao.module.mes.enums.wm.BarcodeBizTypeEnum; | ||
| 11 | import cn.iocoder.yudao.module.mes.enums.wm.MesWmPackageStatusEnum; | 12 | import cn.iocoder.yudao.module.mes.enums.wm.MesWmPackageStatusEnum; |
| 13 | +import cn.iocoder.yudao.module.mes.service.wm.barcode.MesWmBarcodeService; | ||
| 12 | import jakarta.annotation.Resource; | 14 | import jakarta.annotation.Resource; |
| 13 | import org.springframework.stereotype.Service; | 15 | import org.springframework.stereotype.Service; |
| 14 | import org.springframework.transaction.annotation.Transactional; | 16 | import org.springframework.transaction.annotation.Transactional; |
| @@ -33,6 +35,8 @@ public class MesWmPackageServiceImpl implements MesWmPackageService { | @@ -33,6 +35,8 @@ public class MesWmPackageServiceImpl implements MesWmPackageService { | ||
| 33 | private MesWmPackageMapper packageMapper; | 35 | private MesWmPackageMapper packageMapper; |
| 34 | @Resource | 36 | @Resource |
| 35 | private MesWmPackageLineService packageLineService; | 37 | private MesWmPackageLineService packageLineService; |
| 38 | + @Resource | ||
| 39 | + private MesWmBarcodeService barcodeService; | ||
| 36 | 40 | ||
| 37 | @Override | 41 | @Override |
| 38 | public Long createPackage(MesWmPackageSaveReqVO createReqVO) { | 42 | public Long createPackage(MesWmPackageSaveReqVO createReqVO) { |
| @@ -44,6 +48,10 @@ public class MesWmPackageServiceImpl implements MesWmPackageService { | @@ -44,6 +48,10 @@ public class MesWmPackageServiceImpl implements MesWmPackageService { | ||
| 44 | packageDO.setStatus(MesWmPackageStatusEnum.PREPARE.getStatus()) | 48 | packageDO.setStatus(MesWmPackageStatusEnum.PREPARE.getStatus()) |
| 45 | .setParentId(MesWmPackageDO.PARENT_ID_ROOT); | 49 | .setParentId(MesWmPackageDO.PARENT_ID_ROOT); |
| 46 | packageMapper.insert(packageDO); | 50 | packageMapper.insert(packageDO); |
| 51 | + | ||
| 52 | + // 自动生成条码 | ||
| 53 | + barcodeService.autoGenerateBarcode(BarcodeBizTypeEnum.PACKAGE.getValue(), | ||
| 54 | + packageDO.getId(), packageDO.getCode(), null); | ||
| 47 | return packageDO.getId(); | 55 | return packageDO.getId(); |
| 48 | } | 56 | } |
| 49 | 57 | ||
| @@ -64,20 +72,16 @@ public class MesWmPackageServiceImpl implements MesWmPackageService { | @@ -64,20 +72,16 @@ public class MesWmPackageServiceImpl implements MesWmPackageService { | ||
| 64 | public void deletePackage(Long id) { | 72 | public void deletePackage(Long id) { |
| 65 | // 校验存在且为草稿 | 73 | // 校验存在且为草稿 |
| 66 | validatePackageExistsAndDraft(id); | 74 | validatePackageExistsAndDraft(id); |
| 67 | - | ||
| 68 | - // 删除装箱明细 | ||
| 69 | - packageLineService.deletePackageLineByPackageId(id); | ||
| 70 | - // 删除装箱单 | ||
| 71 | - packageMapper.deleteById(id); | ||
| 72 | - | ||
| 73 | - // 级联删除子箱 | ||
| 74 | - // TODO @AI:不能级联删除子箱;是删除的时候,如果有子箱子,不允许删除; | 75 | + // 如果有子箱子,不允许删除 |
| 75 | List<MesWmPackageDO> children = packageMapper.selectListByParentId(id); | 76 | List<MesWmPackageDO> children = packageMapper.selectListByParentId(id); |
| 76 | if (CollUtil.isNotEmpty(children)) { | 77 | if (CollUtil.isNotEmpty(children)) { |
| 77 | - for (MesWmPackageDO child : children) { | ||
| 78 | - deletePackage(child.getId()); | ||
| 79 | - } | 78 | + throw exception(WM_PACKAGE_HAS_CHILDREN); |
| 80 | } | 79 | } |
| 80 | + | ||
| 81 | + // 删除装箱单 | ||
| 82 | + packageMapper.deleteById(id); | ||
| 83 | + // 删除装箱明细 | ||
| 84 | + packageLineService.deletePackageLineByPackageId(id); | ||
| 81 | } | 85 | } |
| 82 | 86 | ||
| 83 | @Override | 87 | @Override |
| @@ -184,33 +188,22 @@ public class MesWmPackageServiceImpl implements MesWmPackageService { | @@ -184,33 +188,22 @@ public class MesWmPackageServiceImpl implements MesWmPackageService { | ||
| 184 | if (ObjUtil.notEqual(MesWmPackageStatusEnum.FINISHED.getStatus(), child.getStatus())) { | 188 | if (ObjUtil.notEqual(MesWmPackageStatusEnum.FINISHED.getStatus(), child.getStatus())) { |
| 185 | throw exception(WM_PACKAGE_CHILD_NOT_FINISHED); | 189 | throw exception(WM_PACKAGE_CHILD_NOT_FINISHED); |
| 186 | } | 190 | } |
| 187 | - // 4. 递归校验:确保 parentId 不是 childId 的后代(避免形成环路) | ||
| 188 | - // TODO @AI:不搞独立方法,代码风格参考 validateParentDept | ||
| 189 | - validateNotChildOf(parentId, child.getId()); | ||
| 190 | - } | ||
| 191 | - | ||
| 192 | - /** | ||
| 193 | - * 递归校验父箱不是子箱的后代,避免形成环路 | ||
| 194 | - * | ||
| 195 | - * @param parentId 父箱 ID | ||
| 196 | - * @param childId 子箱 ID(不能是 parentId 的祖先) | ||
| 197 | - */ | ||
| 198 | - private void validateNotChildOf(Long parentId, Long childId) { | 191 | + // 4. 递归校验:确保 childId 不是 parentId 的祖先(避免形成环路) |
| 192 | + MesWmPackageDO parentPackage = packageMapper.selectById(parentId); | ||
| 199 | for (int i = 0; i < Short.MAX_VALUE; i++) { | 193 | for (int i = 0; i < Short.MAX_VALUE; i++) { |
| 200 | - // 查找 parentId 的子箱列表 | ||
| 201 | - List<MesWmPackageDO> children = packageMapper.selectListByParentId(parentId); | ||
| 202 | - if (CollUtil.isEmpty(children)) { | 194 | + if (parentPackage == null) { |
| 203 | break; | 195 | break; |
| 204 | } | 196 | } |
| 205 | - // 如果 childId 在 parentId 的子箱列表中的某个后代里,说明形成环路 | ||
| 206 | - for (MesWmPackageDO pkg : children) { | ||
| 207 | - if (Objects.equals(pkg.getId(), childId)) { | ||
| 208 | - throw exception(WM_PACKAGE_PARENT_IS_CHILD); | ||
| 209 | - } | 197 | + // 4.1 校验环路 |
| 198 | + parentId = parentPackage.getParentId(); | ||
| 199 | + if (Objects.equals(child.getId(), parentId)) { | ||
| 200 | + throw exception(WM_PACKAGE_PARENT_IS_CHILD); | ||
| 201 | + } | ||
| 202 | + // 4.2 继续递归下一级父箱 | ||
| 203 | + if (parentId == null || MesWmPackageDO.PARENT_ID_ROOT.equals(parentId)) { | ||
| 204 | + break; | ||
| 210 | } | 205 | } |
| 211 | - // 继续递归检查下一级 | ||
| 212 | - // 这里简化处理:装箱单层级通常不深,逐级检查即可 | ||
| 213 | - break; | 206 | + parentPackage = packageMapper.selectById(parentId); |
| 214 | } | 207 | } |
| 215 | } | 208 | } |
| 216 | 209 |