From ce7b88c2fd5c312e15f3baaf8c3682551dc1ecd4 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Mon, 30 Mar 2026 10:17:14 +0800 Subject: [PATCH] ✨ feat(mes): 增强领料出库单功能,新增客户信息和行数据校验 --- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productissue/MesWmProductIssueController.java | 15 +++++++++++---- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productissue/vo/MesWmProductIssueRespVO.java | 9 ++++++--- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productissue/vo/detail/MesWmProductIssueDetailSaveReqVO.java | 2 ++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productissue/MesWmProductIssueDetailMapper.java | 4 ++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productissue/MesWmProductIssueMapper.java | 4 ++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java | 2 ++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productissue/MesWmProductIssueService.java | 8 ++++++++ 7 files changed, 37 insertions(+), 7 deletions(-) diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productissue/MesWmProductIssueController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productissue/MesWmProductIssueController.java index 09e5a4b..4836c4a 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productissue/MesWmProductIssueController.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productissue/MesWmProductIssueController.java @@ -11,9 +11,11 @@ import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.module.mes.controller.admin.wm.productissue.vo.MesWmProductIssuePageReqVO; import cn.iocoder.yudao.module.mes.controller.admin.wm.productissue.vo.MesWmProductIssueRespVO; import cn.iocoder.yudao.module.mes.controller.admin.wm.productissue.vo.MesWmProductIssueSaveReqVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.md.client.MesMdClientDO; import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationDO; import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderDO; import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productissue.MesWmProductIssueDO; +import cn.iocoder.yudao.module.mes.service.md.client.MesMdClientService; import cn.iocoder.yudao.module.mes.service.md.workstation.MesMdWorkstationService; import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderService; import cn.iocoder.yudao.module.mes.service.wm.productissue.MesWmProductIssueService; @@ -48,6 +50,8 @@ public class MesWmProductIssueController { private MesMdWorkstationService workstationService; @Resource private MesProWorkOrderService workOrderService; + @Resource + private MesMdClientService clientService; @PostMapping("/create") @Operation(summary = "创建领料出库单") @@ -161,14 +165,17 @@ public class MesWmProductIssueController { convertSet(list, MesWmProductIssueDO::getWorkstationId)); Map workOrderMap = workOrderService.getWorkOrderMap( convertSet(list, MesWmProductIssueDO::getWorkOrderId)); + Map clientMap = clientService.getClientMap( + convertSet(workOrderMap.values(), MesProWorkOrderDO::getClientId)); // 2. 构建结果 return BeanUtils.toBean(list, MesWmProductIssueRespVO.class, vo -> { - // 2.1 填充工作站名称 MapUtils.findAndThen(workstationMap, vo.getWorkstationId(), workstation -> vo.setWorkstationName(workstation.getName())); - // 2.2 填充工单编号 - MapUtils.findAndThen(workOrderMap, vo.getWorkOrderId(), - workOrder -> vo.setWorkOrderCode(workOrder.getCode())); + MapUtils.findAndThen(workOrderMap, vo.getWorkOrderId(), workOrder -> { + vo.setWorkOrderCode(workOrder.getCode()); + MapUtils.findAndThen(clientMap, workOrder.getClientId(), client -> + vo.setClientCode(client.getCode()).setClientName(client.getName())); + }); }); } diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productissue/vo/MesWmProductIssueRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productissue/vo/MesWmProductIssueRespVO.java index b93084b..3558350 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productissue/vo/MesWmProductIssueRespVO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productissue/vo/MesWmProductIssueRespVO.java @@ -30,12 +30,15 @@ public class MesWmProductIssueRespVO { @Schema(description = "工作站名称", example = "装配工作站") private String workstationName; + @Schema(description = "客户编号", example = "C001") + private String clientCode; + + @Schema(description = "客户名称", example = "某某客户") + private String clientName; + @Schema(description = "生产任务 ID", example = "1") private Long taskId; - @Schema(description = "客户 ID", example = "1") - private Long clientId; - @Schema(description = "领料日期") private LocalDateTime issueDate; diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productissue/vo/detail/MesWmProductIssueDetailSaveReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productissue/vo/detail/MesWmProductIssueDetailSaveReqVO.java index 96e8c69..de2a2b9 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productissue/vo/detail/MesWmProductIssueDetailSaveReqVO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productissue/vo/detail/MesWmProductIssueDetailSaveReqVO.java @@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.mes.controller.admin.wm.productissue.vo.detail; import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.DecimalMin; import jakarta.validation.constraints.NotNull; import lombok.Data; @@ -27,6 +28,7 @@ public class MesWmProductIssueDetailSaveReqVO { @Schema(description = "领料数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "300.00") @NotNull(message = "领料数量不能为空") + @DecimalMin(value = "0", inclusive = false, message = "领料数量必须大于 0") private BigDecimal quantity; @Schema(description = "批次编号", example = "1") diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productissue/MesWmProductIssueDetailMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productissue/MesWmProductIssueDetailMapper.java index 76f5498..7987f92 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productissue/MesWmProductIssueDetailMapper.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productissue/MesWmProductIssueDetailMapper.java @@ -24,4 +24,8 @@ public interface MesWmProductIssueDetailMapper extends BaseMapperX