From ff676ee9bdee11cd67cfb383ef2a6c63807766a4 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sat, 7 Mar 2026 17:23:22 +0800 Subject: [PATCH] ✨ feat(mes): 添加条码内容生成接口及相关逻辑 --- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/barcode/MesWmBarcodeController.java | 13 +++++++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java | 3 +++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/barcode/MesWmBarcodeService.java | 9 +++++++++ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/barcode/MesWmBarcodeServiceImpl.java | 46 +++++++++++++++++++++++++++++++++++++++------- 4 files changed, 64 insertions(+), 7 deletions(-) diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/barcode/MesWmBarcodeController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/barcode/MesWmBarcodeController.java index e179179..b569e7f 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/barcode/MesWmBarcodeController.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/barcode/MesWmBarcodeController.java @@ -17,6 +17,8 @@ import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.Valid; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -88,6 +90,17 @@ public class MesWmBarcodeController { return success(BeanUtils.toBean(barcode, MesWmBarcodeRespVO.class)); } + @GetMapping("/generate-content") + @Operation(summary = "生成条码内容") + @Parameter(name = "bizType", description = "业务类型", required = true, example = "1") + @Parameter(name = "bizCode", description = "业务编码", required = true, example = "WO202403070001") + @PreAuthorize("@ss.hasPermission('mes:wm-barcode:query')") + public CommonResult generateBarcodeContent(@RequestParam("bizType") @NotNull(message = "业务类型不能为空") Integer bizType, + @RequestParam("bizCode") @NotBlank(message = "业务编码不能为空") String bizCode) { + String content = barcodeService.generateBarcodeContent(bizType, bizCode); + return success(content); + } + @GetMapping("/export-excel") @Operation(summary = "导出条码清单 Excel") @PreAuthorize("@ss.hasPermission('mes:wm-barcode:export')") 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 b04c554..e581a91 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 @@ -505,5 +505,8 @@ public interface ErrorCodeConstants { ErrorCode WM_BARCODE_NOT_EXISTS = new ErrorCode(1_040_731_000, "条码不存在"); ErrorCode WM_BARCODE_ALREADY_EXISTS = new ErrorCode(1_040_731_001, "该业务对象的条码已存在"); ErrorCode WM_BARCODE_CONTENT_DUPLICATE = new ErrorCode(1_040_731_002, "条码内容已存在"); + ErrorCode BARCODE_BIZ_TYPE_NOT_EXISTS = new ErrorCode(1_040_731_003, "业务类型不能为空"); + ErrorCode BARCODE_BIZ_CODE_NOT_EXISTS = new ErrorCode(1_040_731_004, "业务编码不能为空"); + ErrorCode BARCODE_CONFIG_NOT_EXISTS = new ErrorCode(1_040_731_005, "条码配置不存在"); } diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/barcode/MesWmBarcodeService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/barcode/MesWmBarcodeService.java index fdcca63..096321f 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/barcode/MesWmBarcodeService.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/barcode/MesWmBarcodeService.java @@ -70,4 +70,13 @@ public interface MesWmBarcodeService { */ void autoGenerateBarcode(Integer bizType, Long bizId, String bizCode, String bizName); + /** + * 生成条码内容(供前端预览使用) + * + * @param bizType 业务类型 + * @param bizCode 业务编码 + * @return 生成的条码内容 + */ + String generateBarcodeContent(Integer bizType, String bizCode); + } diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/barcode/MesWmBarcodeServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/barcode/MesWmBarcodeServiceImpl.java index 759d3f2..da13161 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/barcode/MesWmBarcodeServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/barcode/MesWmBarcodeServiceImpl.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.mes.service.wm.barcode; +import cn.hutool.core.util.ObjUtil; import cn.hutool.core.util.StrUtil; import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.framework.common.pojo.PageResult; @@ -42,9 +43,11 @@ public class MesWmBarcodeServiceImpl implements MesWmBarcodeService { throw exception(WM_BARCODE_ALREADY_EXISTS); } - // 2.1 生成条码内容(根据配置模板) - // TODO @AI:MesWmBarcodeSaveReqVO 增加一个 content 字段;如果为空,才进行生成; - String content = generateBarcodeContent(config.getContentFormat(), createReqVO.getBizCode()); + // 2.1 生成条码内容(如果前端未传递,则自动生成) + String content = createReqVO.getContent(); + if (StrUtil.isBlank(content)) { + content = generateBarcodeContent(config.getContentFormat(), createReqVO.getBizCode()); + } // 2.2 校验条码内容唯一性 MesWmBarcodeDO contentBarcode = barcodeMapper.selectByContent(content); if (contentBarcode != null) { @@ -58,7 +61,21 @@ public class MesWmBarcodeServiceImpl implements MesWmBarcodeService { return barcode.getId(); } - // TODO @AI:后端提供一个接口,用于 generateBarcodeContent 的生成;前端需要调用这个接口; + @Override + public String generateBarcodeContent(Integer bizType, String bizCode) { + // 1.1 校验参数 + if (bizType == null) { + throw exception(BARCODE_BIZ_TYPE_NOT_EXISTS); + } + if (StrUtil.isBlank(bizCode)) { + throw exception(BARCODE_BIZ_CODE_NOT_EXISTS); + } + // 1.2 查询条码配置 + MesWmBarcodeConfigDO config = barcodeConfigService.validateBarcodeConfigByBizType(bizType); + + // 2. 生成条码内容 + return generateBarcodeContent(config.getContentFormat(), bizCode); + } /** * 生成条码内容 @@ -76,13 +93,28 @@ public class MesWmBarcodeServiceImpl implements MesWmBarcodeService { @Override public void updateBarcode(MesWmBarcodeSaveReqVO updateReqVO) { - // 校验存在 + // 1. 校验存在 validateBarcodeExists(updateReqVO.getId()); - // TODO @AI:content 可以更新;更新需要校验唯一; + // 2.1 生成条码内容(如果前端未传递,则自动生成) + String content = updateReqVO.getContent(); + if (StrUtil.isBlank(content)) { + MesWmBarcodeConfigDO config = barcodeConfigService.validateBarcodeConfigByBizType(updateReqVO.getBizType()); + content = generateBarcodeContent(config.getContentFormat(), updateReqVO.getBizCode()); + } + // 2.2 校验条码内容唯一性(排除自己) + if (StrUtil.isNotBlank(content)) { + MesWmBarcodeDO contentBarcode = barcodeMapper.selectByContent(content); + if (contentBarcode != null && ObjUtil.notEqual(contentBarcode.getId(), updateReqVO.getId())) { + throw exception(WM_BARCODE_CONTENT_DUPLICATE); + } + } - // 更新 + // 3. 更新 MesWmBarcodeDO updateObj = BeanUtils.toBean(updateReqVO, MesWmBarcodeDO.class); + if (StrUtil.isNotBlank(content)) { + updateObj.setContent(content); + } barcodeMapper.updateById(updateObj); } -- libgit2 0.21.4