Commit a63a8070497607a5b6077e5cd56e3ffbd714c5f0
1 parent
abddf4a1
✨ feat(mes): 添加装箱单及装箱明细相关功能
新增装箱单和装箱明细的请求和响应对象,支持装箱单的创建、更新、删除及查询功能。包括装箱单的状态管理和子箱的添加与移除逻辑,提升了系统的功能完整性和用户体验。
Showing
18 changed files
with
229 additions
and
149 deletions
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/wmpackage/MesWmPackageController.java renamed to yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/MesWmPackageController.java
| 1 | -package cn.iocoder.yudao.module.mes.controller.admin.wm.wmpackage; | |
| 1 | +package cn.iocoder.yudao.module.mes.controller.admin.wm.packages; | |
| 2 | 2 | |
| 3 | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | -import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; | |
| 5 | 4 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 6 | -import cn.iocoder.yudao.framework.common.pojo.PageParam; | |
| 7 | 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 8 | 6 | import cn.iocoder.yudao.framework.common.util.collection.MapUtils; |
| 9 | 7 | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| 10 | -import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; | |
| 11 | -import cn.iocoder.yudao.module.mes.controller.admin.wm.wmpackage.vo.MesWmPackagePageReqVO; | |
| 12 | -import cn.iocoder.yudao.module.mes.controller.admin.wm.wmpackage.vo.MesWmPackageRespVO; | |
| 13 | -import cn.iocoder.yudao.module.mes.controller.admin.wm.wmpackage.vo.MesWmPackageSaveReqVO; | |
| 8 | +import cn.iocoder.yudao.module.mes.controller.admin.wm.packages.vo.MesWmPackagePageReqVO; | |
| 9 | +import cn.iocoder.yudao.module.mes.controller.admin.wm.packages.vo.MesWmPackageRespVO; | |
| 10 | +import cn.iocoder.yudao.module.mes.controller.admin.wm.packages.vo.MesWmPackageSaveReqVO; | |
| 14 | 11 | import cn.iocoder.yudao.module.mes.dal.dataobject.md.client.MesMdClientDO; |
| 15 | 12 | import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; |
| 16 | -import cn.iocoder.yudao.module.mes.dal.dataobject.wm.wmpackage.MesWmPackageDO; | |
| 13 | +import cn.iocoder.yudao.module.mes.dal.dataobject.wm.packages.MesWmPackageDO; | |
| 17 | 14 | import cn.iocoder.yudao.module.mes.service.md.client.MesMdClientService; |
| 18 | 15 | import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; |
| 19 | -import cn.iocoder.yudao.module.mes.service.wm.wmpackage.MesWmPackageService; | |
| 16 | +import cn.iocoder.yudao.module.mes.service.wm.packages.MesWmPackageService; | |
| 20 | 17 | import cn.iocoder.yudao.module.system.api.user.AdminUserApi; |
| 21 | 18 | import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; |
| 22 | 19 | import io.swagger.v3.oas.annotations.Operation; |
| 23 | 20 | import io.swagger.v3.oas.annotations.Parameter; |
| 24 | 21 | import io.swagger.v3.oas.annotations.tags.Tag; |
| 25 | 22 | import jakarta.annotation.Resource; |
| 26 | -import jakarta.servlet.http.HttpServletResponse; | |
| 27 | 23 | import jakarta.validation.Valid; |
| 28 | 24 | import org.springframework.security.access.prepost.PreAuthorize; |
| 29 | 25 | import org.springframework.validation.annotation.Validated; |
| 30 | 26 | import org.springframework.web.bind.annotation.*; |
| 31 | 27 | |
| 32 | -import java.io.IOException; | |
| 33 | 28 | import java.util.*; |
| 34 | -import java.util.stream.Collectors; | |
| 35 | 29 | |
| 36 | -import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; | |
| 37 | 30 | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| 38 | 31 | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; |
| 39 | 32 | |
| ... | ... | @@ -97,18 +90,6 @@ public class MesWmPackageController { |
| 97 | 90 | return success(new PageResult<>(buildRespVOList(pageResult.getList()), pageResult.getTotal())); |
| 98 | 91 | } |
| 99 | 92 | |
| 100 | - @GetMapping("/export-excel") | |
| 101 | - @Operation(summary = "导出装箱单 Excel") | |
| 102 | - @PreAuthorize("@ss.hasPermission('mes:wm-package:export')") | |
| 103 | - @ApiAccessLog(operateType = EXPORT) | |
| 104 | - public void exportPackageExcel(@Valid MesWmPackagePageReqVO pageReqVO, | |
| 105 | - HttpServletResponse response) throws IOException { | |
| 106 | - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); | |
| 107 | - PageResult<MesWmPackageDO> pageResult = packageService.getPackagePage(pageReqVO); | |
| 108 | - ExcelUtils.write(response, "装箱单.xls", "数据", MesWmPackageRespVO.class, | |
| 109 | - buildRespVOList(pageResult.getList())); | |
| 110 | - } | |
| 111 | - | |
| 112 | 93 | @PutMapping("/finish") |
| 113 | 94 | @Operation(summary = "完成装箱单") |
| 114 | 95 | @Parameter(name = "id", description = "编号", required = true) |
| ... | ... | @@ -118,14 +99,30 @@ public class MesWmPackageController { |
| 118 | 99 | return success(true); |
| 119 | 100 | } |
| 120 | 101 | |
| 121 | - @GetMapping("/tree") | |
| 122 | - @Operation(summary = "获得装箱单树形结构") | |
| 102 | + @PutMapping("/add-sub-package") | |
| 103 | + @Operation(summary = "添加子箱") | |
| 104 | + @PreAuthorize("@ss.hasPermission('mes:wm-package:update')") | |
| 105 | + public CommonResult<Boolean> addSubPackage(@RequestParam("parentId") Long parentId, | |
| 106 | + @RequestParam("childId") Long childId) { | |
| 107 | + packageService.addSubPackage(parentId, childId); | |
| 108 | + return success(true); | |
| 109 | + } | |
| 110 | + | |
| 111 | + @PutMapping("/remove-sub-package") | |
| 112 | + @Operation(summary = "移除子箱") | |
| 113 | + @Parameter(name = "childId", description = "子箱编号", required = true) | |
| 114 | + @PreAuthorize("@ss.hasPermission('mes:wm-package:update')") | |
| 115 | + public CommonResult<Boolean> removeSubPackage(@RequestParam("childId") Long childId) { | |
| 116 | + packageService.removeSubPackage(childId); | |
| 117 | + return success(true); | |
| 118 | + } | |
| 119 | + | |
| 120 | + @GetMapping("/simple-list") | |
| 121 | + @Operation(summary = "获取装箱单精简列表") | |
| 123 | 122 | @PreAuthorize("@ss.hasPermission('mes:wm-package:query')") |
| 124 | - public CommonResult<List<MesWmPackageRespVO>> getPackageTree() { | |
| 125 | - List<MesWmPackageDO> list = packageService.getPackageTree(); | |
| 126 | - List<MesWmPackageRespVO> voList = buildRespVOList(list); | |
| 127 | - // 构建树形结构 | |
| 128 | - return success(buildTree(voList)); | |
| 123 | + public CommonResult<List<MesWmPackageRespVO>> getPackageSimpleList() { | |
| 124 | + List<MesWmPackageDO> list = packageService.getPackageSimpleList(); | |
| 125 | + return success(buildRespVOList(list)); | |
| 129 | 126 | } |
| 130 | 127 | |
| 131 | 128 | // ========== 私有方法 ========== |
| ... | ... | @@ -138,6 +135,7 @@ public class MesWmPackageController { |
| 138 | 135 | Map<Long, MesMdClientDO> clientMap = clientService.getClientMap( |
| 139 | 136 | convertSet(list, MesWmPackageDO::getClientId)); |
| 140 | 137 | // 批量查询计量单位(尺寸 + 重量) |
| 138 | + // TODO @AI:可以通过 CollecionUtils 里,通过 flat 操作; | |
| 141 | 139 | Set<Long> unitIds = new HashSet<>(); |
| 142 | 140 | list.forEach(p -> { |
| 143 | 141 | if (p.getSizeUnitId() != null) { |
| ... | ... | @@ -151,7 +149,7 @@ public class MesWmPackageController { |
| 151 | 149 | // 批量查询检查员 |
| 152 | 150 | Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap( |
| 153 | 151 | convertSet(list, MesWmPackageDO::getInspectorUserId)); |
| 154 | - | |
| 152 | + // 构建返回结果 | |
| 155 | 153 | return BeanUtils.toBean(list, MesWmPackageRespVO.class, vo -> { |
| 156 | 154 | MapUtils.findAndThen(clientMap, vo.getClientId(), |
| 157 | 155 | client -> vo.setClientCode(client.getCode()).setClientName(client.getName()) |
| ... | ... | @@ -165,16 +163,4 @@ public class MesWmPackageController { |
| 165 | 163 | }); |
| 166 | 164 | } |
| 167 | 165 | |
| 168 | - private List<MesWmPackageRespVO> buildTree(List<MesWmPackageRespVO> list) { | |
| 169 | - // 按 parentId 分组 | |
| 170 | - Map<Long, List<MesWmPackageRespVO>> parentMap = list.stream() | |
| 171 | - .collect(Collectors.groupingBy(vo -> vo.getParentId() != null ? vo.getParentId() : 0L)); | |
| 172 | - // 设置 children | |
| 173 | - list.forEach(vo -> vo.setChildren(parentMap.get(vo.getId()))); | |
| 174 | - // 返回顶级节点(parentId == 0 或 parentId == null) | |
| 175 | - return list.stream() | |
| 176 | - .filter(vo -> vo.getParentId() == null || vo.getParentId() == 0L) | |
| 177 | - .collect(Collectors.toList()); | |
| 178 | - } | |
| 179 | - | |
| 180 | 166 | } | ... | ... |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/wmpackage/MesWmPackageLineController.java renamed to yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/MesWmPackageLineController.java
| 1 | -package cn.iocoder.yudao.module.mes.controller.admin.wm.wmpackage; | |
| 1 | +package cn.iocoder.yudao.module.mes.controller.admin.wm.packages; | |
| 2 | 2 | |
| 3 | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | 4 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 5 | 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 6 | 6 | import cn.iocoder.yudao.framework.common.util.collection.MapUtils; |
| 7 | 7 | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| 8 | -import cn.iocoder.yudao.module.mes.controller.admin.wm.wmpackage.vo.line.MesWmPackageLinePageReqVO; | |
| 9 | -import cn.iocoder.yudao.module.mes.controller.admin.wm.wmpackage.vo.line.MesWmPackageLineRespVO; | |
| 10 | -import cn.iocoder.yudao.module.mes.controller.admin.wm.wmpackage.vo.line.MesWmPackageLineSaveReqVO; | |
| 8 | +import cn.iocoder.yudao.module.mes.controller.admin.wm.packages.vo.line.MesWmPackageLinePageReqVO; | |
| 9 | +import cn.iocoder.yudao.module.mes.controller.admin.wm.packages.vo.line.MesWmPackageLineRespVO; | |
| 10 | +import cn.iocoder.yudao.module.mes.controller.admin.wm.packages.vo.line.MesWmPackageLineSaveReqVO; | |
| 11 | 11 | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; |
| 12 | 12 | import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; |
| 13 | 13 | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderDO; |
| 14 | 14 | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseAreaDO; |
| 15 | 15 | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseDO; |
| 16 | 16 | import cn.iocoder.yudao.module.mes.dal.dataobject.wm.warehouse.MesWmWarehouseLocationDO; |
| 17 | -import cn.iocoder.yudao.module.mes.dal.dataobject.wm.wmpackage.MesWmPackageLineDO; | |
| 17 | +import cn.iocoder.yudao.module.mes.dal.dataobject.wm.packages.MesWmPackageLineDO; | |
| 18 | 18 | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| 19 | 19 | import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; |
| 20 | 20 | import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderService; |
| 21 | 21 | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService; |
| 22 | 22 | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseLocationService; |
| 23 | 23 | import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseService; |
| 24 | -import cn.iocoder.yudao.module.mes.service.wm.wmpackage.MesWmPackageLineService; | |
| 24 | +import cn.iocoder.yudao.module.mes.service.wm.packages.MesWmPackageLineService; | |
| 25 | 25 | import io.swagger.v3.oas.annotations.Operation; |
| 26 | 26 | import io.swagger.v3.oas.annotations.Parameter; |
| 27 | 27 | import io.swagger.v3.oas.annotations.tags.Tag; | ... | ... |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/wmpackage/vo/MesWmPackagePageReqVO.java renamed to yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/vo/MesWmPackagePageReqVO.java
| 1 | -package cn.iocoder.yudao.module.mes.controller.admin.wm.wmpackage.vo; | |
| 1 | +package cn.iocoder.yudao.module.mes.controller.admin.wm.packages.vo; | |
| 2 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.framework.common.pojo.PageParam; |
| 4 | 4 | import io.swagger.v3.oas.annotations.media.Schema; |
| 5 | 5 | import lombok.Data; |
| 6 | 6 | import lombok.EqualsAndHashCode; |
| 7 | 7 | import lombok.ToString; |
| 8 | -import org.springframework.format.annotation.DateTimeFormat; | |
| 9 | - | |
| 10 | -import java.time.LocalDate; | |
| 11 | - | |
| 12 | -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY; | |
| 13 | 8 | |
| 14 | 9 | @Schema(description = "管理后台 - MES 装箱单分页 Request VO") |
| 15 | 10 | @Data |
| ... | ... | @@ -21,16 +16,15 @@ public class MesWmPackagePageReqVO extends PageParam { |
| 21 | 16 | private String code; |
| 22 | 17 | |
| 23 | 18 | @Schema(description = "销售订单编号", example = "SO") |
| 24 | - private String soCode; | |
| 19 | + private String salesOrderCode; | |
| 25 | 20 | |
| 26 | 21 | @Schema(description = "客户 ID", example = "1") |
| 27 | 22 | private Long clientId; |
| 28 | 23 | |
| 29 | - @Schema(description = "装箱日期") | |
| 30 | - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY) | |
| 31 | - private LocalDate[] packageDate; | |
| 24 | + @Schema(description = "父箱 ID", example = "1024") | |
| 25 | + private Long parentId; | |
| 32 | 26 | |
| 33 | - @Schema(description = "状态", example = "0") | |
| 34 | - private Integer status; | |
| 27 | + @Schema(description = "检查员用户 ID", example = "1") | |
| 28 | + private Long inspectorUserId; | |
| 35 | 29 | |
| 36 | 30 | } | ... | ... |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/wmpackage/vo/MesWmPackageRespVO.java renamed to yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/vo/MesWmPackageRespVO.java
| 1 | -package cn.iocoder.yudao.module.mes.controller.admin.wm.wmpackage.vo; | |
| 1 | +package cn.iocoder.yudao.module.mes.controller.admin.wm.packages.vo; | |
| 2 | 2 | |
| 3 | 3 | import cn.idev.excel.annotation.ExcelIgnoreUnannotated; |
| 4 | 4 | import cn.idev.excel.annotation.ExcelProperty; |
| ... | ... | @@ -7,9 +7,7 @@ import lombok.Data; |
| 7 | 7 | import lombok.experimental.Accessors; |
| 8 | 8 | |
| 9 | 9 | import java.math.BigDecimal; |
| 10 | -import java.time.LocalDate; | |
| 11 | 10 | import java.time.LocalDateTime; |
| 12 | -import java.util.List; | |
| 13 | 11 | |
| 14 | 12 | @Schema(description = "管理后台 - MES 装箱单 Response VO") |
| 15 | 13 | @Data |
| ... | ... | @@ -30,11 +28,11 @@ public class MesWmPackageRespVO { |
| 30 | 28 | |
| 31 | 29 | @Schema(description = "装箱日期") |
| 32 | 30 | @ExcelProperty("装箱日期") |
| 33 | - private LocalDate packageDate; | |
| 31 | + private LocalDateTime packageDate; | |
| 34 | 32 | |
| 35 | 33 | @Schema(description = "销售订单编号", example = "SO20260301") |
| 36 | 34 | @ExcelProperty("销售订单编号") |
| 37 | - private String soCode; | |
| 35 | + private String salesOrderCode; | |
| 38 | 36 | |
| 39 | 37 | @Schema(description = "发票编号", example = "INV20260301") |
| 40 | 38 | @ExcelProperty("发票编号") |
| ... | ... | @@ -107,7 +105,4 @@ public class MesWmPackageRespVO { |
| 107 | 105 | @ExcelProperty("创建时间") |
| 108 | 106 | private LocalDateTime createTime; |
| 109 | 107 | |
| 110 | - @Schema(description = "子箱列表") | |
| 111 | - private List<MesWmPackageRespVO> children; | |
| 112 | - | |
| 113 | 108 | } | ... | ... |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/wmpackage/vo/MesWmPackageSaveReqVO.java renamed to yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/vo/MesWmPackageSaveReqVO.java
| 1 | -package cn.iocoder.yudao.module.mes.controller.admin.wm.wmpackage.vo; | |
| 1 | +package cn.iocoder.yudao.module.mes.controller.admin.wm.packages.vo; | |
| 2 | 2 | |
| 3 | 3 | import io.swagger.v3.oas.annotations.media.Schema; |
| 4 | 4 | import jakarta.validation.constraints.NotEmpty; |
| ... | ... | @@ -6,7 +6,7 @@ import jakarta.validation.constraints.NotNull; |
| 6 | 6 | import lombok.Data; |
| 7 | 7 | |
| 8 | 8 | import java.math.BigDecimal; |
| 9 | -import java.time.LocalDate; | |
| 9 | +import java.time.LocalDateTime; | |
| 10 | 10 | |
| 11 | 11 | @Schema(description = "管理后台 - MES 装箱单新增/修改 Request VO") |
| 12 | 12 | @Data |
| ... | ... | @@ -19,15 +19,16 @@ public class MesWmPackageSaveReqVO { |
| 19 | 19 | @NotEmpty(message = "装箱单编号不能为空") |
| 20 | 20 | private String code; |
| 21 | 21 | |
| 22 | + // TODO @AI:不传递 parentId;默认都是 = 0; | |
| 22 | 23 | @Schema(description = "父箱 ID", example = "0") |
| 23 | 24 | private Long parentId; |
| 24 | 25 | |
| 25 | 26 | @Schema(description = "装箱日期", requiredMode = Schema.RequiredMode.REQUIRED) |
| 26 | 27 | @NotNull(message = "装箱日期不能为空") |
| 27 | - private LocalDate packageDate; | |
| 28 | + private LocalDateTime packageDate; | |
| 28 | 29 | |
| 29 | 30 | @Schema(description = "销售订单编号", example = "SO20260301") |
| 30 | - private String soCode; | |
| 31 | + private String salesOrderCode; | |
| 31 | 32 | |
| 32 | 33 | @Schema(description = "发票编号", example = "INV20260301") |
| 33 | 34 | private String invoiceCode; | ... | ... |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/wmpackage/vo/line/MesWmPackageLinePageReqVO.java renamed to yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/vo/line/MesWmPackageLinePageReqVO.java
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/wmpackage/vo/line/MesWmPackageLineRespVO.java renamed to yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/vo/line/MesWmPackageLineRespVO.java
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/wmpackage/vo/line/MesWmPackageLineSaveReqVO.java renamed to yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/packages/vo/line/MesWmPackageLineSaveReqVO.java
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/wmpackage/MesWmPackageDO.java renamed to yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/packages/MesWmPackageDO.java
| 1 | -// TODO @AI:报名改成 packages 避免 Java 关键字冲突; | |
| 2 | -package cn.iocoder.yudao.module.mes.dal.dataobject.wm.wmpackage; | |
| 1 | +package cn.iocoder.yudao.module.mes.dal.dataobject.wm.packages; | |
| 3 | 2 | |
| 4 | 3 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; |
| 5 | 4 | import cn.iocoder.yudao.module.mes.dal.dataobject.md.client.MesMdClientDO; |
| 6 | 5 | import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; |
| 7 | -import cn.iocoder.yudao.module.mes.enums.MesOrderStatusConstants; | |
| 8 | 6 | import com.baomidou.mybatisplus.annotation.KeySequence; |
| 7 | +import com.baomidou.mybatisplus.annotation.TableField; | |
| 9 | 8 | import com.baomidou.mybatisplus.annotation.TableId; |
| 10 | 9 | import com.baomidou.mybatisplus.annotation.TableName; |
| 11 | 10 | import lombok.*; |
| ... | ... | @@ -26,7 +25,7 @@ import java.time.LocalDate; |
| 26 | 25 | @AllArgsConstructor |
| 27 | 26 | public class MesWmPackageDO extends BaseDO { |
| 28 | 27 | |
| 29 | - private static final Integer PARENT_ID_ROOT = 0; | |
| 28 | + public static final Long PARENT_ID_ROOT = 0L; | |
| 30 | 29 | |
| 31 | 30 | @TableId |
| 32 | 31 | private Long id; |
| ... | ... | @@ -42,11 +41,13 @@ public class MesWmPackageDO extends BaseDO { |
| 42 | 41 | * 装箱日期 |
| 43 | 42 | */ |
| 44 | 43 | private LocalDate packageDate; |
| 45 | - // TODO @AI:改成 salesOrderCode | |
| 44 | + // DONE @AI:改成 salesOrderCode | |
| 45 | + // TODO @AI:数据库也改;另外前端也检查下; | |
| 46 | 46 | /** |
| 47 | 47 | * 销售订单编号 |
| 48 | 48 | */ |
| 49 | - private String soCode; | |
| 49 | + @TableField("so_code") | |
| 50 | + private String salesOrderCode; | |
| 50 | 51 | /** |
| 51 | 52 | * 发票编号 |
| 52 | 53 | */ |
| ... | ... | @@ -95,11 +96,10 @@ public class MesWmPackageDO extends BaseDO { |
| 95 | 96 | * 关联 AdminUserDO 的 id |
| 96 | 97 | */ |
| 97 | 98 | private Long inspectorUserId; |
| 98 | - // TODO @AI:自定义一个属于自己的枚举类;类似:MesWmSalesNoticeStatusEnum | |
| 99 | 99 | /** |
| 100 | 100 | * 状态 |
| 101 | 101 | * |
| 102 | - * 枚举 {@link MesOrderStatusConstants#PREPARE}、{@link MesOrderStatusConstants#FINISHED} | |
| 102 | + * 枚举 {@link cn.iocoder.yudao.module.mes.enums.wm.MesWmPackageStatusEnum} | |
| 103 | 103 | */ |
| 104 | 104 | private Integer status; |
| 105 | 105 | /** | ... | ... |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/wmpackage/MesWmPackageLineDO.java renamed to yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/packages/MesWmPackageLineDO.java
| 1 | -package cn.iocoder.yudao.module.mes.dal.dataobject.wm.wmpackage; | |
| 1 | +package cn.iocoder.yudao.module.mes.dal.dataobject.wm.packages; | |
| 2 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; |
| 4 | 4 | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; |
| ... | ... | @@ -49,7 +49,7 @@ public class MesWmPackageLineDO extends BaseDO { |
| 49 | 49 | * 装箱数量 |
| 50 | 50 | */ |
| 51 | 51 | private BigDecimal quantity; |
| 52 | - // TODO @AI:需要在确认下; | |
| 52 | + // DONE @芋艿:需要在确认下; | |
| 53 | 53 | /** |
| 54 | 54 | * 生产工单 ID |
| 55 | 55 | * | ... | ... |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/wmpackage/MesWmPackageLineMapper.java renamed to yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/packages/MesWmPackageLineMapper.java
| 1 | -package cn.iocoder.yudao.module.mes.dal.mysql.wm.wmpackage; | |
| 1 | +package cn.iocoder.yudao.module.mes.dal.mysql.wm.packages; | |
| 2 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 4 | 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 5 | 5 | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| 6 | -import cn.iocoder.yudao.module.mes.controller.admin.wm.wmpackage.vo.line.MesWmPackageLinePageReqVO; | |
| 7 | -import cn.iocoder.yudao.module.mes.dal.dataobject.wm.wmpackage.MesWmPackageLineDO; | |
| 6 | +import cn.iocoder.yudao.module.mes.controller.admin.wm.packages.vo.line.MesWmPackageLinePageReqVO; | |
| 7 | +import cn.iocoder.yudao.module.mes.dal.dataobject.wm.packages.MesWmPackageLineDO; | |
| 8 | 8 | import org.apache.ibatis.annotations.Mapper; |
| 9 | 9 | |
| 10 | 10 | import java.util.List; | ... | ... |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/wmpackage/MesWmPackageMapper.java renamed to yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/packages/MesWmPackageMapper.java
| 1 | -package cn.iocoder.yudao.module.mes.dal.mysql.wm.wmpackage; | |
| 1 | +package cn.iocoder.yudao.module.mes.dal.mysql.wm.packages; | |
| 2 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 4 | 4 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 5 | 5 | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| 6 | -import cn.iocoder.yudao.module.mes.controller.admin.wm.wmpackage.vo.MesWmPackagePageReqVO; | |
| 7 | -import cn.iocoder.yudao.module.mes.dal.dataobject.wm.wmpackage.MesWmPackageDO; | |
| 6 | +import cn.iocoder.yudao.module.mes.controller.admin.wm.packages.vo.MesWmPackagePageReqVO; | |
| 7 | +import cn.iocoder.yudao.module.mes.dal.dataobject.wm.packages.MesWmPackageDO; | |
| 8 | 8 | import org.apache.ibatis.annotations.Mapper; |
| 9 | 9 | |
| 10 | 10 | import java.util.List; |
| ... | ... | @@ -15,10 +15,10 @@ public interface MesWmPackageMapper extends BaseMapperX<MesWmPackageDO> { |
| 15 | 15 | default PageResult<MesWmPackageDO> selectPage(MesWmPackagePageReqVO reqVO) { |
| 16 | 16 | return selectPage(reqVO, new LambdaQueryWrapperX<MesWmPackageDO>() |
| 17 | 17 | .likeIfPresent(MesWmPackageDO::getCode, reqVO.getCode()) |
| 18 | - .likeIfPresent(MesWmPackageDO::getSoCode, reqVO.getSoCode()) | |
| 18 | + .likeIfPresent(MesWmPackageDO::getSalesOrderCode, reqVO.getSalesOrderCode()) | |
| 19 | 19 | .eqIfPresent(MesWmPackageDO::getClientId, reqVO.getClientId()) |
| 20 | - .betweenIfPresent(MesWmPackageDO::getPackageDate, reqVO.getPackageDate()) | |
| 21 | - .eqIfPresent(MesWmPackageDO::getStatus, reqVO.getStatus()) | |
| 20 | + .eqIfPresent(MesWmPackageDO::getParentId, reqVO.getParentId()) | |
| 21 | + .eqIfPresent(MesWmPackageDO::getInspectorUserId, reqVO.getInspectorUserId()) | |
| 22 | 22 | .orderByDesc(MesWmPackageDO::getId)); |
| 23 | 23 | } |
| 24 | 24 | ... | ... |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java
| ... | ... | @@ -517,6 +517,7 @@ public interface ErrorCodeConstants { |
| 517 | 517 | ErrorCode WM_PACKAGE_STATUS_NOT_PREPARE = new ErrorCode(1_040_740_002, "只有草稿状态才允许此操作"); |
| 518 | 518 | ErrorCode WM_PACKAGE_PARENT_NOT_EXISTS = new ErrorCode(1_040_740_003, "父箱不存在"); |
| 519 | 519 | ErrorCode WM_PACKAGE_PARENT_SELF = new ErrorCode(1_040_740_004, "不能选择自己作为父箱"); |
| 520 | + ErrorCode WM_PACKAGE_CHILD_HAS_PARENT = new ErrorCode(1_040_740_005, "该装箱单已有父箱,不能重复添加"); | |
| 520 | 521 | ErrorCode WM_PACKAGE_LINE_NOT_EXISTS = new ErrorCode(1_040_740_100, "装箱明细不存在"); |
| 521 | 522 | |
| 522 | 523 | } | ... | ... |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/wm/MesWmPackageStatusEnum.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.mes.enums.wm; | |
| 2 | + | |
| 3 | +import cn.iocoder.yudao.framework.common.core.ArrayValuable; | |
| 4 | +import cn.iocoder.yudao.module.mes.enums.MesOrderStatusConstants; | |
| 5 | +import lombok.AllArgsConstructor; | |
| 6 | +import lombok.Getter; | |
| 7 | + | |
| 8 | +import java.util.Arrays; | |
| 9 | + | |
| 10 | +/** | |
| 11 | + * MES 装箱单状态枚举 | |
| 12 | + */ | |
| 13 | +@Getter | |
| 14 | +@AllArgsConstructor | |
| 15 | +public enum MesWmPackageStatusEnum implements ArrayValuable<Integer> { | |
| 16 | + | |
| 17 | + // TODO @AI:需要增加下: * 对应方法:{@link MesWmOutsourceIssueService#createOutsourceIssue(MesWmOutsourceIssueSaveReqVO)} | |
| 18 | + /** | |
| 19 | + * 草稿 | |
| 20 | + */ | |
| 21 | + PREPARE(MesOrderStatusConstants.PREPARE, "草稿"), | |
| 22 | + /** | |
| 23 | + * 已完成 | |
| 24 | + */ | |
| 25 | + FINISHED(MesOrderStatusConstants.FINISHED, "已完成"); | |
| 26 | + | |
| 27 | + public static final Integer[] ARRAYS = Arrays.stream(values()).map(MesWmPackageStatusEnum::getStatus) | |
| 28 | + .toArray(Integer[]::new); | |
| 29 | + | |
| 30 | + /** | |
| 31 | + * 状态值 | |
| 32 | + */ | |
| 33 | + private final Integer status; | |
| 34 | + /** | |
| 35 | + * 状态名 | |
| 36 | + */ | |
| 37 | + private final String name; | |
| 38 | + | |
| 39 | + @Override | |
| 40 | + public Integer[] array() { | |
| 41 | + return ARRAYS; | |
| 42 | + } | |
| 43 | + | |
| 44 | +} | ... | ... |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/wmpackage/MesWmPackageLineService.java renamed to yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/packages/MesWmPackageLineService.java
| 1 | -package cn.iocoder.yudao.module.mes.service.wm.wmpackage; | |
| 1 | +package cn.iocoder.yudao.module.mes.service.wm.packages; | |
| 2 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 4 | -import cn.iocoder.yudao.module.mes.controller.admin.wm.wmpackage.vo.line.MesWmPackageLinePageReqVO; | |
| 5 | -import cn.iocoder.yudao.module.mes.controller.admin.wm.wmpackage.vo.line.MesWmPackageLineSaveReqVO; | |
| 6 | -import cn.iocoder.yudao.module.mes.dal.dataobject.wm.wmpackage.MesWmPackageLineDO; | |
| 4 | +import cn.iocoder.yudao.module.mes.controller.admin.wm.packages.vo.line.MesWmPackageLinePageReqVO; | |
| 5 | +import cn.iocoder.yudao.module.mes.controller.admin.wm.packages.vo.line.MesWmPackageLineSaveReqVO; | |
| 6 | +import cn.iocoder.yudao.module.mes.dal.dataobject.wm.packages.MesWmPackageLineDO; | |
| 7 | 7 | import jakarta.validation.Valid; |
| 8 | 8 | |
| 9 | 9 | import java.util.List; | ... | ... |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/wmpackage/MesWmPackageLineServiceImpl.java renamed to yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/packages/MesWmPackageLineServiceImpl.java
| 1 | -package cn.iocoder.yudao.module.mes.service.wm.wmpackage; | |
| 1 | +package cn.iocoder.yudao.module.mes.service.wm.packages; | |
| 2 | 2 | |
| 3 | -import cn.hutool.core.util.ObjUtil; | |
| 4 | 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 5 | 4 | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| 6 | -import cn.iocoder.yudao.module.mes.controller.admin.wm.wmpackage.vo.line.MesWmPackageLinePageReqVO; | |
| 7 | -import cn.iocoder.yudao.module.mes.controller.admin.wm.wmpackage.vo.line.MesWmPackageLineSaveReqVO; | |
| 8 | -import cn.iocoder.yudao.module.mes.dal.dataobject.wm.wmpackage.MesWmPackageDO; | |
| 9 | -import cn.iocoder.yudao.module.mes.dal.dataobject.wm.wmpackage.MesWmPackageLineDO; | |
| 10 | -import cn.iocoder.yudao.module.mes.dal.mysql.wm.wmpackage.MesWmPackageLineMapper; | |
| 11 | -import cn.iocoder.yudao.module.mes.enums.MesOrderStatusConstants; | |
| 5 | +import cn.iocoder.yudao.module.mes.controller.admin.wm.packages.vo.line.MesWmPackageLinePageReqVO; | |
| 6 | +import cn.iocoder.yudao.module.mes.controller.admin.wm.packages.vo.line.MesWmPackageLineSaveReqVO; | |
| 7 | +import cn.iocoder.yudao.module.mes.dal.dataobject.wm.packages.MesWmPackageLineDO; | |
| 8 | +import cn.iocoder.yudao.module.mes.dal.mysql.wm.packages.MesWmPackageLineMapper; | |
| 9 | +import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; | |
| 12 | 10 | import jakarta.annotation.Resource; |
| 13 | 11 | import org.springframework.context.annotation.Lazy; |
| 14 | 12 | import org.springframework.stereotype.Service; |
| ... | ... | @@ -28,13 +26,17 @@ public class MesWmPackageLineServiceImpl implements MesWmPackageLineService { |
| 28 | 26 | @Resource |
| 29 | 27 | @Lazy |
| 30 | 28 | private MesWmPackageService packageService; |
| 29 | + @Resource | |
| 30 | + private MesMdItemService itemService; | |
| 31 | 31 | |
| 32 | 32 | @Override |
| 33 | 33 | public Long createPackageLine(MesWmPackageLineSaveReqVO createReqVO) { |
| 34 | - // TODO @AI:检查关联的 packageId(草稿)、itemId | |
| 35 | - | |
| 36 | 34 | // 校验装箱单状态为草稿 |
| 37 | - validatePackageStatusDraft(createReqVO.getPackageId()); | |
| 35 | + packageService.validatePackageStatusDraft(createReqVO.getPackageId()); | |
| 36 | + // 校验产品物料存在 | |
| 37 | + itemService.validateItemExists(createReqVO.getItemId()); | |
| 38 | + | |
| 39 | + // 插入 | |
| 38 | 40 | MesWmPackageLineDO line = BeanUtils.toBean(createReqVO, MesWmPackageLineDO.class); |
| 39 | 41 | packageLineMapper.insert(line); |
| 40 | 42 | return line.getId(); |
| ... | ... | @@ -44,10 +46,12 @@ public class MesWmPackageLineServiceImpl implements MesWmPackageLineService { |
| 44 | 46 | public void updatePackageLine(MesWmPackageLineSaveReqVO updateReqVO) { |
| 45 | 47 | // 校验存在 |
| 46 | 48 | MesWmPackageLineDO line = validatePackageLineExists(updateReqVO.getId()); |
| 47 | - // TODO @AI:检查关联的 packageId(草稿)、itemId | |
| 48 | - | |
| 49 | 49 | // 校验装箱单状态为草稿 |
| 50 | - validatePackageStatusDraft(line.getPackageId()); | |
| 50 | + packageService.validatePackageStatusDraft(line.getPackageId()); | |
| 51 | + // 校验产品物料存在 | |
| 52 | + itemService.validateItemExists(updateReqVO.getItemId()); | |
| 53 | + | |
| 54 | + // 更新 | |
| 51 | 55 | MesWmPackageLineDO updateObj = BeanUtils.toBean(updateReqVO, MesWmPackageLineDO.class); |
| 52 | 56 | packageLineMapper.updateById(updateObj); |
| 53 | 57 | } |
| ... | ... | @@ -57,7 +61,7 @@ public class MesWmPackageLineServiceImpl implements MesWmPackageLineService { |
| 57 | 61 | // 校验存在 |
| 58 | 62 | MesWmPackageLineDO line = validatePackageLineExists(id); |
| 59 | 63 | // 校验装箱单状态为草稿 |
| 60 | - validatePackageStatusDraft(line.getPackageId()); | |
| 64 | + packageService.validatePackageStatusDraft(line.getPackageId()); | |
| 61 | 65 | |
| 62 | 66 | // 删除 |
| 63 | 67 | packageLineMapper.deleteById(id); |
| ... | ... | @@ -93,15 +97,4 @@ public class MesWmPackageLineServiceImpl implements MesWmPackageLineService { |
| 93 | 97 | return line; |
| 94 | 98 | } |
| 95 | 99 | |
| 96 | - // TODO @AI:这个方法,应该 packageService 实现; | |
| 97 | - private void validatePackageStatusDraft(Long packageId) { | |
| 98 | - MesWmPackageDO packageDO = packageService.getPackage(packageId); | |
| 99 | - if (packageDO == null) { | |
| 100 | - throw exception(WM_PACKAGE_NOT_EXISTS); | |
| 101 | - } | |
| 102 | - if (ObjUtil.notEqual(MesOrderStatusConstants.PREPARE, packageDO.getStatus())) { | |
| 103 | - throw exception(WM_PACKAGE_STATUS_NOT_PREPARE); | |
| 104 | - } | |
| 105 | - } | |
| 106 | - | |
| 107 | 100 | } | ... | ... |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/wmpackage/MesWmPackageService.java renamed to yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/packages/MesWmPackageService.java
| 1 | -package cn.iocoder.yudao.module.mes.service.wm.wmpackage; | |
| 1 | +package cn.iocoder.yudao.module.mes.service.wm.packages; | |
| 2 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 4 | -import cn.iocoder.yudao.module.mes.controller.admin.wm.wmpackage.vo.MesWmPackagePageReqVO; | |
| 5 | -import cn.iocoder.yudao.module.mes.controller.admin.wm.wmpackage.vo.MesWmPackageSaveReqVO; | |
| 6 | -import cn.iocoder.yudao.module.mes.dal.dataobject.wm.wmpackage.MesWmPackageDO; | |
| 4 | +import cn.iocoder.yudao.module.mes.controller.admin.wm.packages.vo.MesWmPackagePageReqVO; | |
| 5 | +import cn.iocoder.yudao.module.mes.controller.admin.wm.packages.vo.MesWmPackageSaveReqVO; | |
| 6 | +import cn.iocoder.yudao.module.mes.dal.dataobject.wm.packages.MesWmPackageDO; | |
| 7 | 7 | import jakarta.validation.Valid; |
| 8 | 8 | |
| 9 | 9 | import java.util.List; |
| ... | ... | @@ -59,10 +59,32 @@ public interface MesWmPackageService { |
| 59 | 59 | void finishPackage(Long id); |
| 60 | 60 | |
| 61 | 61 | /** |
| 62 | - * 获得装箱单树形结构 | |
| 62 | + * 校验装箱单状态为草稿 | |
| 63 | 63 | * |
| 64 | - * @return 装箱单列表(树形) | |
| 64 | + * @param packageId 装箱单 ID | |
| 65 | 65 | */ |
| 66 | - List<MesWmPackageDO> getPackageTree(); | |
| 66 | + void validatePackageStatusDraft(Long packageId); | |
| 67 | + | |
| 68 | + /** | |
| 69 | + * 添加子箱 | |
| 70 | + * | |
| 71 | + * @param parentId 父箱 ID | |
| 72 | + * @param childId 子箱 ID | |
| 73 | + */ | |
| 74 | + void addSubPackage(Long parentId, Long childId); | |
| 75 | + | |
| 76 | + /** | |
| 77 | + * 移除子箱 | |
| 78 | + * | |
| 79 | + * @param childId 子箱 ID | |
| 80 | + */ | |
| 81 | + void removeSubPackage(Long childId); | |
| 82 | + | |
| 83 | + /** | |
| 84 | + * 获取装箱单精简列表(无父箱 + 已完成状态) | |
| 85 | + * | |
| 86 | + * @return 装箱单列表 | |
| 87 | + */ | |
| 88 | + List<MesWmPackageDO> getPackageSimpleList(); | |
| 67 | 89 | |
| 68 | 90 | } | ... | ... |
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/wmpackage/MesWmPackageServiceImpl.java renamed to yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/packages/MesWmPackageServiceImpl.java
| 1 | -package cn.iocoder.yudao.module.mes.service.wm.wmpackage; | |
| 1 | +package cn.iocoder.yudao.module.mes.service.wm.packages; | |
| 2 | 2 | |
| 3 | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | 4 | import cn.hutool.core.util.ObjUtil; |
| 5 | 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 6 | 6 | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| 7 | -import cn.iocoder.yudao.module.mes.controller.admin.wm.wmpackage.vo.MesWmPackagePageReqVO; | |
| 8 | -import cn.iocoder.yudao.module.mes.controller.admin.wm.wmpackage.vo.MesWmPackageSaveReqVO; | |
| 9 | -import cn.iocoder.yudao.module.mes.dal.dataobject.wm.wmpackage.MesWmPackageDO; | |
| 10 | -import cn.iocoder.yudao.module.mes.dal.mysql.wm.wmpackage.MesWmPackageMapper; | |
| 11 | -import cn.iocoder.yudao.module.mes.enums.MesOrderStatusConstants; | |
| 7 | +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; | |
| 8 | +import cn.iocoder.yudao.module.mes.controller.admin.wm.packages.vo.MesWmPackagePageReqVO; | |
| 9 | +import cn.iocoder.yudao.module.mes.controller.admin.wm.packages.vo.MesWmPackageSaveReqVO; | |
| 10 | +import cn.iocoder.yudao.module.mes.dal.dataobject.wm.packages.MesWmPackageDO; | |
| 11 | +import cn.iocoder.yudao.module.mes.dal.mysql.wm.packages.MesWmPackageMapper; | |
| 12 | +import cn.iocoder.yudao.module.mes.enums.wm.MesWmPackageStatusEnum; | |
| 12 | 13 | import jakarta.annotation.Resource; |
| 13 | 14 | import org.springframework.stereotype.Service; |
| 14 | 15 | import org.springframework.transaction.annotation.Transactional; |
| ... | ... | @@ -33,14 +34,13 @@ public class MesWmPackageServiceImpl implements MesWmPackageService { |
| 33 | 34 | // 校验编码唯一性 |
| 34 | 35 | validateCodeUnique(null, createReqVO.getCode()); |
| 35 | 36 | // 校验父箱存在 |
| 37 | + // TODO @AI:parentId 校验都去掉,不传递了; | |
| 36 | 38 | validateParentExists(createReqVO.getParentId()); |
| 37 | 39 | |
| 38 | 40 | // 创建装箱单,默认为草稿状态 |
| 39 | 41 | MesWmPackageDO packageDO = BeanUtils.toBean(createReqVO, MesWmPackageDO.class); |
| 40 | - packageDO.setStatus(MesOrderStatusConstants.PREPARE); | |
| 41 | - if (packageDO.getParentId() == null) { | |
| 42 | - packageDO.setParentId(0L); | |
| 43 | - } | |
| 42 | + packageDO.setStatus(MesWmPackageStatusEnum.PREPARE.getStatus()) | |
| 43 | + .setParentId(MesWmPackageDO.PARENT_ID_ROOT); | |
| 44 | 44 | packageMapper.insert(packageDO); |
| 45 | 45 | return packageDO.getId(); |
| 46 | 46 | } |
| ... | ... | @@ -51,7 +51,8 @@ public class MesWmPackageServiceImpl implements MesWmPackageService { |
| 51 | 51 | validatePackageExistsAndDraft(updateReqVO.getId()); |
| 52 | 52 | // 校验编码唯一性 |
| 53 | 53 | validateCodeUnique(updateReqVO.getId(), updateReqVO.getCode()); |
| 54 | - // TODO @AI:是不是创建一个方法,校验 parent;因为 create 和 update 都需要; | |
| 54 | + // TODO @AI:parentId 校验都去掉,不传递了; | |
| 55 | + // DONE @AI:是不是创建一个方法,校验 parent;因为 create 和 update 都需要; | |
| 55 | 56 | // 校验父箱存在,且不能选自己或子节点 |
| 56 | 57 | validateParentExists(updateReqVO.getParentId()); |
| 57 | 58 | if (updateReqVO.getParentId() != null && ObjUtil.equal(updateReqVO.getParentId(), updateReqVO.getId())) { |
| ... | ... | @@ -100,12 +101,55 @@ public class MesWmPackageServiceImpl implements MesWmPackageService { |
| 100 | 101 | |
| 101 | 102 | // 更新状态为已完成 |
| 102 | 103 | packageMapper.updateById(new MesWmPackageDO() |
| 103 | - .setId(id).setStatus(MesOrderStatusConstants.FINISHED)); | |
| 104 | + .setId(id).setStatus(MesWmPackageStatusEnum.FINISHED.getStatus())); | |
| 105 | + } | |
| 106 | + | |
| 107 | + @Override | |
| 108 | + public void validatePackageStatusDraft(Long packageId) { | |
| 109 | + validatePackageExistsAndDraft(packageId); | |
| 110 | + } | |
| 111 | + | |
| 112 | + @Override | |
| 113 | + public void addSubPackage(Long parentId, Long childId) { | |
| 114 | + // 校验父箱存在且为草稿 | |
| 115 | + validatePackageExistsAndDraft(parentId); | |
| 116 | + // 校验子箱存在 | |
| 117 | + MesWmPackageDO child = validatePackageExists(childId); | |
| 118 | + // TODO @AI:参考 validateParentDept 的实现; | |
| 119 | + // 校验子箱没有父箱(parentId 为 0 或 null) | |
| 120 | + if (child.getParentId() != null && child.getParentId() != 0L) { | |
| 121 | + throw exception(WM_PACKAGE_CHILD_HAS_PARENT); | |
| 122 | + } | |
| 123 | + // 不能将自己作为子箱 | |
| 124 | + if (ObjUtil.equal(parentId, childId)) { | |
| 125 | + throw exception(WM_PACKAGE_PARENT_SELF); | |
| 126 | + } | |
| 127 | + | |
| 128 | + // 设置子箱的 parentId | |
| 129 | + packageMapper.updateById(new MesWmPackageDO().setId(childId).setParentId(parentId)); | |
| 130 | + } | |
| 131 | + | |
| 132 | + @Override | |
| 133 | + public void removeSubPackage(Long childId) { | |
| 134 | + // 校验子箱存在 | |
| 135 | + MesWmPackageDO child = validatePackageExists(childId); | |
| 136 | + // 校验父箱存在且为草稿 | |
| 137 | + // TODO @AI:notEquals(null, 和 MesWmPackageDO.PARENT_ID_ROOT) | |
| 138 | + if (child.getParentId() != null && child.getParentId() != 0L) { | |
| 139 | + validatePackageExistsAndDraft(child.getParentId()); | |
| 140 | + } | |
| 141 | + | |
| 142 | + // 清除 parentId | |
| 143 | + packageMapper.updateById(new MesWmPackageDO().setId(childId).setParentId(MesWmPackageDO.PARENT_ID_ROOT)); | |
| 104 | 144 | } |
| 105 | 145 | |
| 106 | 146 | @Override |
| 107 | - public List<MesWmPackageDO> getPackageTree() { | |
| 108 | - return packageMapper.selectList(); | |
| 147 | + public List<MesWmPackageDO> getPackageSimpleList() { | |
| 148 | + return packageMapper.selectList(new LambdaQueryWrapperX<MesWmPackageDO>() | |
| 149 | + // TODO @AI:这些不要直接写在 service 里,要和 mybatis plus 解耦;通过条件传递下去; | |
| 150 | + .eq(MesWmPackageDO::getParentId, 0L) | |
| 151 | + .eq(MesWmPackageDO::getStatus, MesWmPackageStatusEnum.FINISHED.getStatus()) | |
| 152 | + .orderByDesc(MesWmPackageDO::getId)); | |
| 109 | 153 | } |
| 110 | 154 | |
| 111 | 155 | // ========== 校验方法 ========== |
| ... | ... | @@ -120,7 +164,7 @@ public class MesWmPackageServiceImpl implements MesWmPackageService { |
| 120 | 164 | |
| 121 | 165 | private MesWmPackageDO validatePackageExistsAndDraft(Long id) { |
| 122 | 166 | MesWmPackageDO packageDO = validatePackageExists(id); |
| 123 | - if (ObjUtil.notEqual(MesOrderStatusConstants.PREPARE, packageDO.getStatus())) { | |
| 167 | + if (ObjUtil.notEqual(MesWmPackageStatusEnum.PREPARE.getStatus(), packageDO.getStatus())) { | |
| 124 | 168 | throw exception(WM_PACKAGE_STATUS_NOT_PREPARE); |
| 125 | 169 | } |
| 126 | 170 | return packageDO; | ... | ... |