From 8ab84968fccbbb5ea3c66d12cdc6f79f1a5d4546 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sun, 8 Mar 2026 12:22:24 +0800 Subject: [PATCH] ✨ feat(mes): 添加装箱单及装箱明细的 VO 和 Mapper 注释 --- 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 | 146 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------------------------------------------------- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/vo/MesWmPackagePageReqVO.java | 3 +++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/vo/MesWmPackageRespVO.java | 3 +++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/vo/MesWmPackageSaveReqVO.java | 3 +++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/vo/line/MesWmPackageLinePageReqVO.java | 3 +++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/vo/line/MesWmPackageLineRespVO.java | 3 +++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/vo/line/MesWmPackageLineSaveReqVO.java | 8 ++++++-- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/packages/MesWmPackageLineMapper.java | 9 +++------ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/packages/MesWmPackageMapper.java | 3 +++ 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/service/wm/packages/MesWmPackageLineServiceImpl.java | 9 ++++++--- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/packages/MesWmPackageServiceImpl.java | 49 ++++++++++++++++++++++++++++++++----------------- 13 files changed, 147 insertions(+), 97 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 752099f..e97d92d 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,6 +32,10 @@ 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 没加。 +/** + * MES 装箱单 Controller + */ @Tag(name = "管理后台 - MES 装箱单") @RestController @RequestMapping("/mes/wm/package") 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 37a5395..0c87cc0 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,89 +32,97 @@ 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 + */ @Tag(name = "管理后台 - MES 装箱明细") @RestController @RequestMapping("/mes/wm/package-line") @Validated public class MesWmPackageLineController { - @Resource - private MesWmPackageLineService packageLineService; - @Resource - private MesMdItemService itemService; - @Resource - private MesMdUnitMeasureService unitMeasureService; - @Resource - private MesProWorkOrderService workOrderService; + @Resource + private MesWmPackageLineService packageLineService; + @Resource + private MesMdItemService itemService; + @Resource + private MesMdUnitMeasureService unitMeasureService; + @Resource + private MesProWorkOrderService workOrderService; - @PostMapping("/create") - @Operation(summary = "创建装箱明细") - @PreAuthorize("@ss.hasPermission('mes:wm-package:create')") - public CommonResult createPackageLine(@Valid @RequestBody MesWmPackageLineSaveReqVO createReqVO) { - return success(packageLineService.createPackageLine(createReqVO)); - } + @PostMapping("/create") + @Operation(summary = "创建装箱明细") + @PreAuthorize("@ss.hasPermission('mes:wm-package:create')") + public CommonResult createPackageLine(@Valid @RequestBody MesWmPackageLineSaveReqVO createReqVO) { + return success(packageLineService.createPackageLine(createReqVO)); + } - @PutMapping("/update") - @Operation(summary = "修改装箱明细") - @PreAuthorize("@ss.hasPermission('mes:wm-package:update')") - public CommonResult updatePackageLine(@Valid @RequestBody MesWmPackageLineSaveReqVO updateReqVO) { - packageLineService.updatePackageLine(updateReqVO); - return success(true); - } + @PutMapping("/update") + @Operation(summary = "修改装箱明细") + @PreAuthorize("@ss.hasPermission('mes:wm-package:update')") + public CommonResult updatePackageLine(@Valid @RequestBody MesWmPackageLineSaveReqVO updateReqVO) { + packageLineService.updatePackageLine(updateReqVO); + return success(true); + } - @DeleteMapping("/delete") - @Operation(summary = "删除装箱明细") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('mes:wm-package:delete')") - public CommonResult deletePackageLine(@RequestParam("id") Long id) { - packageLineService.deletePackageLine(id); - return success(true); - } + @DeleteMapping("/delete") + @Operation(summary = "删除装箱明细") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('mes:wm-package:delete')") + public CommonResult deletePackageLine(@RequestParam("id") Long id) { + packageLineService.deletePackageLine(id); + return success(true); + } - @GetMapping("/get") - @Operation(summary = "获得装箱明细") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('mes:wm-package:query')") - public CommonResult getPackageLine(@RequestParam("id") Long id) { - MesWmPackageLineDO line = packageLineService.getPackageLine(id); - if (line == null) { - return success(null); + @GetMapping("/get") + @Operation(summary = "获得装箱明细") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('mes:wm-package:query')") + public CommonResult getPackageLine(@RequestParam("id") Long id) { + MesWmPackageLineDO line = packageLineService.getPackageLine(id); + if (line == null) { + return success(null); + } + return success(buildRespVOList(Collections.singletonList(line)).get(0)); } - return success(buildRespVOList(Collections.singletonList(line)).get(0)); - } - @GetMapping("/page") - @Operation(summary = "获得装箱明细分页") - @PreAuthorize("@ss.hasPermission('mes:wm-package:query')") - public CommonResult> getPackageLinePage( - @Valid MesWmPackageLinePageReqVO pageReqVO) { - PageResult pageResult = packageLineService.getPackageLinePage(pageReqVO); - return success(new PageResult<>(buildRespVOList(pageResult.getList()), pageResult.getTotal())); - } + @GetMapping("/page") + @Operation(summary = "获得装箱明细分页") + @PreAuthorize("@ss.hasPermission('mes:wm-package:query')") + public CommonResult> getPackageLinePage( + @Valid MesWmPackageLinePageReqVO pageReqVO) { + PageResult pageResult = packageLineService.getPackageLinePage(pageReqVO); + return success(new PageResult<>(buildRespVOList(pageResult.getList()), pageResult.getTotal())); + } - // ========== 私有方法 ========== + // ========== 私有方法 ========== - private List buildRespVOList(List list) { - if (CollUtil.isEmpty(list)) { - return Collections.emptyList(); + private List buildRespVOList(List list) { + if (CollUtil.isEmpty(list)) { + return Collections.emptyList(); + } + // 批量查询物料 + Map itemMap = itemService + .getItemMap(convertSet(list, MesWmPackageLineDO::getItemId)); + // 批量查询计量单位 + Map unitMeasureMap = unitMeasureService.getUnitMeasureMap( + convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); + // 批量查询工单 + Map workOrderMap = workOrderService.getWorkOrderMap( + convertSet(list, MesWmPackageLineDO::getWorkOrderId)); + // 拼接数据 + return BeanUtils.toBean(list, MesWmPackageLineRespVO.class, vo -> { + MapUtils.findAndThen(itemMap, vo.getItemId(), item -> { + vo.setItemCode(item.getCode()).setItemName(item.getName()) + .setSpecification(item.getSpecification()); + MapUtils.findAndThen(unitMeasureMap, item.getUnitMeasureId(), + unit -> vo.setUnitMeasureName(unit.getName())); + }); + MapUtils.findAndThen(workOrderMap, vo.getWorkOrderId(), + workOrder -> vo.setWorkOrderCode(workOrder.getCode()) + .setBatchCode(workOrder.getBatchCode())); + }); } - // 批量查询物料 - Map itemMap = itemService.getItemMap(convertSet(list, MesWmPackageLineDO::getItemId)); - // 批量查询计量单位 - Map unitMeasureMap = unitMeasureService.getUnitMeasureMap( - convertSet(itemMap.values(), MesMdItemDO::getUnitMeasureId)); - // 批量查询工单 - Map workOrderMap = workOrderService.getWorkOrderMap( - convertSet(list, MesWmPackageLineDO::getWorkOrderId)); - // 拼接数据 - return BeanUtils.toBean(list, MesWmPackageLineRespVO.class, vo -> { - MapUtils.findAndThen(itemMap, vo.getItemId(), item -> { - vo.setItemCode(item.getCode()).setItemName(item.getName()).setSpecification(item.getSpecification()); - MapUtils.findAndThen(unitMeasureMap, item.getUnitMeasureId(), - unit -> vo.setUnitMeasureName(unit.getName()));}); - MapUtils.findAndThen(workOrderMap, vo.getWorkOrderId(), - workOrder -> vo.setWorkOrderCode(workOrder.getCode()).setBatchCode(workOrder.getBatchCode())); - }); - } } 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 dbba7f1..09469a3 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 @@ -6,6 +6,9 @@ import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; +/** + * MES 装箱单分页 Request VO + */ @Schema(description = "管理后台 - MES 装箱单分页 Request VO") @Data @EqualsAndHashCode(callSuper = true) 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 c032344..f01a961 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 @@ -9,6 +9,9 @@ import lombok.experimental.Accessors; import java.math.BigDecimal; import java.time.LocalDateTime; +/** + * MES 装箱单 Response VO + */ @Schema(description = "管理后台 - MES 装箱单 Response VO") @Data @Accessors(chain = true) 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 aeff979..21dafd5 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 @@ -8,6 +8,9 @@ import lombok.Data; import java.math.BigDecimal; import java.time.LocalDateTime; +/** + * MES 装箱单新增/修改 Request VO + */ @Schema(description = "管理后台 - MES 装箱单新增/修改 Request VO") @Data public class MesWmPackageSaveReqVO { 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 7a41ec0..4c2e6be 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 @@ -7,6 +7,9 @@ import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; +/** + * MES 装箱明细分页 Request VO + */ @Schema(description = "管理后台 - MES 装箱明细分页 Request VO") @Data @EqualsAndHashCode(callSuper = true) 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 afbe273..bf9959e 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 @@ -8,6 +8,9 @@ import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; +/** + * MES 装箱明细 Response VO + */ @Schema(description = "管理后台 - MES 装箱明细 Response VO") @Data @Accessors(chain = true) 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 a06604b..40fc66b 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 @@ -6,8 +6,11 @@ import jakarta.validation.constraints.NotNull; import lombok.Data; import java.math.BigDecimal; -import java.time.LocalDate; +import java.time.LocalDateTime; +/** + * MES 装箱明细新增/修改 Request VO + */ @Schema(description = "管理后台 - MES 装箱明细新增/修改 Request VO") @Data public class MesWmPackageLineSaveReqVO { @@ -34,8 +37,9 @@ public class MesWmPackageLineSaveReqVO { @Schema(description = "生产工单 ID", example = "1") private Long workOrderId; + // TODO @AI:时间都是 LocalDateTIme; @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/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 a25a9c9..044201e 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 @@ -7,8 +7,9 @@ import cn.iocoder.yudao.module.mes.controller.admin.wm.packages.vo.line.MesWmPac import cn.iocoder.yudao.module.mes.dal.dataobject.wm.packages.MesWmPackageLineDO; import org.apache.ibatis.annotations.Mapper; -import java.util.List; - +/** + * MES 装箱明细 Mapper + */ @Mapper public interface MesWmPackageLineMapper extends BaseMapperX { @@ -18,10 +19,6 @@ public interface MesWmPackageLineMapper extends BaseMapperX .orderByDesc(MesWmPackageLineDO::getId)); } - default List selectListByPackageId(Long packageId) { - return selectList(MesWmPackageLineDO::getPackageId, packageId); - } - default void deleteByPackageId(Long packageId) { delete(MesWmPackageLineDO::getPackageId, packageId); } 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 577c7c8..2c3bb85 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 @@ -10,6 +10,9 @@ import org.apache.ibatis.annotations.Mapper; import java.util.List; +/** + * MES 装箱单 Mapper + */ @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 f247bff..62e40f2 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 @@ -519,6 +519,7 @@ public interface ErrorCodeConstants { ErrorCode WM_PACKAGE_PARENT_SELF = new ErrorCode(1_040_740_004, "不能选择自己作为父箱"); 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_LINE_NOT_EXISTS = new ErrorCode(1_040_740_100, "装箱明细不存在"); } diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/packages/MesWmPackageLineServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/packages/MesWmPackageLineServiceImpl.java index 8643dc4..a7b2b34 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/packages/MesWmPackageLineServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/packages/MesWmPackageLineServiceImpl.java @@ -12,11 +12,14 @@ import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; -import java.util.List; - import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*; +import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.WM_PACKAGE_LINE_NOT_EXISTS; +/** + * MES 装箱明细 Service 实现类 + * + * @author 芋道源码 + */ @Service @Validated public class MesWmPackageLineServiceImpl implements MesWmPackageLineService { 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 95191eb..612b76d 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 @@ -20,7 +20,11 @@ import java.util.Objects; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*; -// TODO @AI:检查下,是不是相关的类,类注释都没加; +/** + * MES 装箱单 Service 实现类 + * + * @author 芋道源码 + */ @Service @Validated public class MesWmPackageServiceImpl implements MesWmPackageService { @@ -67,6 +71,7 @@ public class MesWmPackageServiceImpl implements MesWmPackageService { packageMapper.deleteById(id); // 级联删除子箱 + // TODO @AI:不能级联删除子箱;是删除的时候,如果有子箱子,不允许删除; List children = packageMapper.selectListByParentId(id); if (CollUtil.isNotEmpty(children)) { for (MesWmPackageDO child : children) { @@ -106,19 +111,8 @@ public class MesWmPackageServiceImpl implements MesWmPackageService { validatePackageExistsAndDraft(parentId); // 校验子箱存在 MesWmPackageDO child = validatePackageExists(childId); - // 校验子箱没有父箱(parentId 为 0) - // TODO @AI:是不是可以类似 dept validateParentDept ;一样,写成一个统一的方法; - // DONE @AI:参考 validateParentDept 的实现; - if (ObjUtil.notEqual(child.getParentId(), MesWmPackageDO.PARENT_ID_ROOT)) { - throw exception(WM_PACKAGE_CHILD_HAS_PARENT); - } - // 不能将自己作为子箱 - if (ObjUtil.equal(parentId, childId)) { - throw exception(WM_PACKAGE_PARENT_SELF); - } - // 递归校验:确保 parentId 不是 childId 的后代(避免形成环路) - validateNotChildOf(parentId, childId); - // TODO @AI:添加时,需要 child 是完成的; + // 校验添加子箱的合法性 + validateAddChildPackage(parentId, child); // 设置子箱的 parentId packageMapper.updateById(new MesWmPackageDO().setId(childId).setParentId(parentId)); @@ -172,10 +166,31 @@ public class MesWmPackageServiceImpl implements MesWmPackageService { } /** - * 递归校验父箱不是子箱的后代,避免形成环路 + * 校验添加子箱的合法性 * - * 参考 - * {@link cn.iocoder.yudao.module.system.service.dept.DeptServiceImpl#validateParentDept} + * @param parentId 父箱 ID + * @param child 子箱 DO + */ + private void validateAddChildPackage(Long parentId, MesWmPackageDO child) { + // 1. 不能将自己作为子箱 + if (ObjUtil.equal(parentId, child.getId())) { + throw exception(WM_PACKAGE_PARENT_SELF); + } + // 2. 子箱没有父箱(parentId 为 0) + if (ObjUtil.notEqual(child.getParentId(), MesWmPackageDO.PARENT_ID_ROOT)) { + throw exception(WM_PACKAGE_CHILD_HAS_PARENT); + } + // 3. 子箱必须是已完成状态 + 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 的祖先) -- libgit2 0.21.4