From f677aa7bfdf319d13a9eff6f9f91fc8cf77c7897 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Mon, 30 Mar 2026 20:56:41 +0800 Subject: [PATCH] ✨ feat(mes): 新增批次号字段并重命名收货地址字段 --- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productsales/MesWmProductSalesController.java | 38 -------------------------------------- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productsales/vo/MesWmProductSalesRespVO.java | 2 +- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productsales/vo/MesWmProductSalesSaveReqVO.java | 2 +- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productsales/vo/detail/MesWmProductSalesDetailRespVO.java | 3 +++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productsales/vo/detail/MesWmProductSalesDetailSaveReqVO.java | 3 +++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productsales/MesWmProductSalesDO.java | 3 +-- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productsales/MesWmProductSalesDetailDO.java | 7 ++++++- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productsales/MesWmProductSalesLineMapper.java | 6 ++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesLineService.java | 6 +++--- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesLineServiceImpl.java | 8 +++++--- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesServiceImpl.java | 34 ++++++++++++++++------------------ 11 files changed, 45 insertions(+), 67 deletions(-) diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productsales/MesWmProductSalesController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productsales/MesWmProductSalesController.java index b126a2e..f50624d 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productsales/MesWmProductSalesController.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productsales/MesWmProductSalesController.java @@ -13,13 +13,9 @@ import cn.iocoder.yudao.module.mes.controller.admin.wm.productsales.vo.MesWmProd import cn.iocoder.yudao.module.mes.controller.admin.wm.productsales.vo.MesWmProductSalesSaveReqVO; import cn.iocoder.yudao.module.mes.controller.admin.wm.productsales.vo.MesWmProductSalesShippingReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.md.client.MesMdClientDO; -import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productsales.MesWmProductSalesDO; -import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productsales.MesWmProductSalesLineDO; import cn.iocoder.yudao.module.mes.dal.dataobject.wm.salesnotice.MesWmSalesNoticeDO; import cn.iocoder.yudao.module.mes.service.md.client.MesMdClientService; -import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; -import cn.iocoder.yudao.module.mes.service.wm.productsales.MesWmProductSalesLineService; import cn.iocoder.yudao.module.mes.service.wm.productsales.MesWmProductSalesService; import cn.iocoder.yudao.module.mes.service.wm.salesnotice.MesWmSalesNoticeService; import io.swagger.v3.oas.annotations.Operation; @@ -37,7 +33,6 @@ import java.util.*; import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; @Tag(name = "管理后台 - MES 销售出库单") @@ -52,10 +47,6 @@ public class MesWmProductSalesController { @Resource private MesMdClientService clientService; @Resource - private MesMdItemService itemService; - @Resource - private MesWmProductSalesLineService productSalesLineService; - @Resource private MesWmSalesNoticeService salesNoticeService; @PostMapping("/create") @@ -167,35 +158,6 @@ public class MesWmProductSalesController { return success(true); } - // TODO @AI:是不是有需要?有需要在提供; - @GetMapping("/get-item") - @Operation(summary = "根据客户 ID 获取曾出库的产品清单(去重)") - @Parameter(name = "clientId", description = "客户 ID", required = true, example = "1") - @PreAuthorize("@ss.hasPermission('mes:wm-product-sales:query')") - public CommonResult> getItemByClientId(@RequestParam("clientId") Long clientId) { - // 1. 查询该客户的所有出库单 - List salesList = productSalesService.getProductSalesListByClientId(clientId); - if (CollUtil.isEmpty(salesList)) { - return success(Collections.emptyList()); - } - // 2. 查询所有行,提取去重的 itemId - List salesIds = convertList(salesList, MesWmProductSalesDO::getId); - Set itemIds = new LinkedHashSet<>(); - for (Long salesId : salesIds) { - List lines = productSalesLineService.getProductSalesLineListBySalesId(salesId); - for (MesWmProductSalesLineDO line : lines) { - if (line.getItemId() != null) { - itemIds.add(line.getItemId()); - } - } - } - if (itemIds.isEmpty()) { - return success(Collections.emptyList()); - } - // 3. 返回物料列表 - return success(new ArrayList<>(itemService.getItemMap(itemIds).values())); - } - // ==================== 拼接 VO ==================== private List buildRespVOList(List list) { diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productsales/vo/MesWmProductSalesRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productsales/vo/MesWmProductSalesRespVO.java index a344546..4d67b5e 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productsales/vo/MesWmProductSalesRespVO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productsales/vo/MesWmProductSalesRespVO.java @@ -60,7 +60,7 @@ public class MesWmProductSalesRespVO { @Schema(description = "收货地址", example = "北京市朝阳区XX路XX号") @ExcelProperty("收货地址") - private String address; + private String contactAddress; @Schema(description = "承运商", example = "顺丰快递") @ExcelProperty("承运商") diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productsales/vo/MesWmProductSalesSaveReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productsales/vo/MesWmProductSalesSaveReqVO.java index d9d2eec..1c94e13 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productsales/vo/MesWmProductSalesSaveReqVO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productsales/vo/MesWmProductSalesSaveReqVO.java @@ -43,7 +43,7 @@ public class MesWmProductSalesSaveReqVO { private String contactTelephone; @Schema(description = "收货地址", example = "北京市朝阳区XX路XX号") - private String address; + private String contactAddress; @Schema(description = "承运商", example = "顺丰快递") private String carrier; diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productsales/vo/detail/MesWmProductSalesDetailRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productsales/vo/detail/MesWmProductSalesDetailRespVO.java index d64d9fa..716f2ce 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productsales/vo/detail/MesWmProductSalesDetailRespVO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productsales/vo/detail/MesWmProductSalesDetailRespVO.java @@ -43,6 +43,9 @@ public class MesWmProductSalesDetailRespVO { @Schema(description = "批次ID", example = "1") private Long batchId; + @Schema(description = "批次号", example = "BATCH001") + private String batchCode; + @Schema(description = "仓库ID", example = "1") private Long warehouseId; diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productsales/vo/detail/MesWmProductSalesDetailSaveReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productsales/vo/detail/MesWmProductSalesDetailSaveReqVO.java index 1819cf4..1497843 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productsales/vo/detail/MesWmProductSalesDetailSaveReqVO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/productsales/vo/detail/MesWmProductSalesDetailSaveReqVO.java @@ -35,6 +35,9 @@ public class MesWmProductSalesDetailSaveReqVO { @Schema(description = "批次ID", example = "1") private Long batchId; + @Schema(description = "批次号", example = "BATCH001") + private String batchCode; + @Schema(description = "仓库ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") @NotNull(message = "仓库不能为空") private Long warehouseId; diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productsales/MesWmProductSalesDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productsales/MesWmProductSalesDO.java index 6b96689..c86fb3a 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productsales/MesWmProductSalesDO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productsales/MesWmProductSalesDO.java @@ -69,11 +69,10 @@ public class MesWmProductSalesDO extends BaseDO { * 联系电话 */ private String contactTelephone; - // TODO @AI:改成 contactAddress /** * 收货地址 */ - private String address; + private String contactAddress; /** * 承运商 diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productsales/MesWmProductSalesDetailDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productsales/MesWmProductSalesDetailDO.java index 4fd87bd..865b8d9 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productsales/MesWmProductSalesDetailDO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productsales/MesWmProductSalesDetailDO.java @@ -68,7 +68,12 @@ public class MesWmProductSalesDetailDO extends BaseDO { * 关联 {@link MesWmBatchDO#getId()} */ private Long batchId; - // TODO @AI:增加 batchCode 字段 + /** + * 批次号 + * + * 关联 {@link MesWmBatchDO#getCode()} + */ + private String batchCode; /** * 仓库ID * diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productsales/MesWmProductSalesLineMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productsales/MesWmProductSalesLineMapper.java index 1124341..9dcc9e4 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productsales/MesWmProductSalesLineMapper.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/productsales/MesWmProductSalesLineMapper.java @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.mes.dal.mysql.wm.productsales; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productsales.MesWmProductSalesLineDO; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import org.apache.ibatis.annotations.Mapper; import java.util.List; @@ -30,4 +31,9 @@ public interface MesWmProductSalesLineMapper extends BaseMapperX ids, Integer qualityStatus) { + update(new MesWmProductSalesLineDO().setQualityStatus(qualityStatus), + new LambdaUpdateWrapper().in(MesWmProductSalesLineDO::getId, ids)); + } + } diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesLineService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesLineService.java index d0e7506..f1327bc 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesLineService.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesLineService.java @@ -78,11 +78,11 @@ public interface MesWmProductSalesLineService { void updateProductSalesLineWhenOqcFinish(Long id, Long oqcId, Integer checkResult); /** - * 更新行的质量状态 + * 批量更新行的质量状态 * - * @param id 行 ID + * @param ids 行 ID 列表 * @param qualityStatus 质量状态 */ - void updateProductSalesLineQualityStatus(Long id, Integer qualityStatus); + void updateProductSalesLineQualityStatus(List ids, Integer qualityStatus); } diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesLineServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesLineServiceImpl.java index fbb278d..4e4948a 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesLineServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesLineServiceImpl.java @@ -155,9 +155,11 @@ public class MesWmProductSalesLineServiceImpl implements MesWmProductSalesLineSe } @Override - public void updateProductSalesLineQualityStatus(Long id, Integer qualityStatus) { - productSalesLineMapper.updateById(new MesWmProductSalesLineDO() - .setId(id).setQualityStatus(qualityStatus)); + public void updateProductSalesLineQualityStatus(List ids, Integer qualityStatus) { + if (CollUtil.isEmpty(ids)) { + return; + } + productSalesLineMapper.updateQualityStatusByIds(ids, qualityStatus); } } diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesServiceImpl.java index b9437a7..e92a46e 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productsales/MesWmProductSalesServiceImpl.java @@ -58,11 +58,8 @@ public class MesWmProductSalesServiceImpl implements MesWmProductSalesService { @Override public Long createProductSales(MesWmProductSalesSaveReqVO createReqVO) { - // TODO @AI:增加 validateXXXSaveData; - // 校验编码唯一 - validateCodeUnique(null, createReqVO.getCode()); - // 校验客户存在 - clientService.validateClientExists(createReqVO.getClientId()); + // 校验数据 + validateProductSalesSaveData(null, createReqVO); // 插入 MesWmProductSalesDO sales = BeanUtils.toBean(createReqVO, MesWmProductSalesDO.class); @@ -75,11 +72,8 @@ public class MesWmProductSalesServiceImpl implements MesWmProductSalesService { public void updateProductSales(MesWmProductSalesSaveReqVO updateReqVO) { // 校验存在 + 草稿状态 validateProductSalesExistsAndDraft(updateReqVO.getId()); - // TODO @AI:增加 validateXXXSaveData;(校验数据) - // 校验编码唯一 - validateCodeUnique(updateReqVO.getId(), updateReqVO.getCode()); - // 校验客户存在 - clientService.validateClientExists(updateReqVO.getClientId()); + // 校验数据 + validateProductSalesSaveData(updateReqVO.getId(), updateReqVO); // 更新 MesWmProductSalesDO updateObj = BeanUtils.toBean(updateReqVO, MesWmProductSalesDO.class); @@ -130,14 +124,11 @@ public class MesWmProductSalesServiceImpl implements MesWmProductSalesService { boolean needOqc = CollectionUtils.anyMatch(lines, line -> Boolean.TRUE.equals(line.getOqcCheckFlag())); if (needOqc) { - // 初始化 OQC 行的质量状态为"待检验" - // TODO @AI:改成批量更新接口?productSalesLineService 提供一个?【对齐:这个是否为必须?!】 - for (MesWmProductSalesLineDO line : lines) { - if (Boolean.TRUE.equals(line.getOqcCheckFlag())) { - productSalesLineService.updateProductSalesLineQualityStatus( - line.getId(), MesWmQualityStatusEnum.PENDING.getStatus()); - } - } + // 批量初始化 OQC 行的质量状态为"待检验" + List oqcLineIds = convertList( + CollectionUtils.filterList(lines, line -> Boolean.TRUE.equals(line.getOqcCheckFlag())), + MesWmProductSalesLineDO::getId); + productSalesLineService.updateProductSalesLineQualityStatus(oqcLineIds, MesWmQualityStatusEnum.PENDING.getStatus()); // 需要检验,进入待检测 productSalesMapper.updateById(new MesWmProductSalesDO() .setId(id).setStatus(MesWmProductSalesStatusEnum.CONFIRMED.getStatus())); @@ -266,6 +257,13 @@ public class MesWmProductSalesServiceImpl implements MesWmProductSalesService { return productSalesMapper.selectListByClientId(clientId); } + private void validateProductSalesSaveData(Long id, MesWmProductSalesSaveReqVO reqVO) { + // 校验编码唯一 + validateCodeUnique(id, reqVO.getCode()); + // 校验客户存在 + clientService.validateClientExists(reqVO.getClientId()); + } + private MesWmProductSalesDO validateProductSalesExists(Long id) { MesWmProductSalesDO sales = productSalesMapper.selectById(id); if (sales == null) { -- libgit2 0.21.4