Commit ff676ee9bdee11cd67cfb383ef2a6c63807766a4

Authored by YunaiV
1 parent 138b5d3f

✨ feat(mes): 添加条码内容生成接口及相关逻辑

新增条码内容生成接口,支持根据业务类型和编码生成条码内容。
同时更新相关服务和前端组件,确保条码内容的自动生成和验证逻辑。
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;
17 17 import jakarta.annotation.Resource;
18 18 import jakarta.servlet.http.HttpServletResponse;
19 19 import jakarta.validation.Valid;
  20 +import jakarta.validation.constraints.NotBlank;
  21 +import jakarta.validation.constraints.NotNull;
20 22 import org.springframework.security.access.prepost.PreAuthorize;
21 23 import org.springframework.validation.annotation.Validated;
22 24 import org.springframework.web.bind.annotation.*;
... ... @@ -88,6 +90,17 @@ public class MesWmBarcodeController {
88 90 return success(BeanUtils.toBean(barcode, MesWmBarcodeRespVO.class));
89 91 }
90 92  
  93 + @GetMapping("/generate-content")
  94 + @Operation(summary = "生成条码内容")
  95 + @Parameter(name = "bizType", description = "业务类型", required = true, example = "1")
  96 + @Parameter(name = "bizCode", description = "业务编码", required = true, example = "WO202403070001")
  97 + @PreAuthorize("@ss.hasPermission('mes:wm-barcode:query')")
  98 + public CommonResult<String> generateBarcodeContent(@RequestParam("bizType") @NotNull(message = "业务类型不能为空") Integer bizType,
  99 + @RequestParam("bizCode") @NotBlank(message = "业务编码不能为空") String bizCode) {
  100 + String content = barcodeService.generateBarcodeContent(bizType, bizCode);
  101 + return success(content);
  102 + }
  103 +
91 104 @GetMapping("/export-excel")
92 105 @Operation(summary = "导出条码清单 Excel")
93 106 @PreAuthorize("@ss.hasPermission('mes:wm-barcode:export')")
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java
... ... @@ -505,5 +505,8 @@ public interface ErrorCodeConstants {
505 505 ErrorCode WM_BARCODE_NOT_EXISTS = new ErrorCode(1_040_731_000, "条码不存在");
506 506 ErrorCode WM_BARCODE_ALREADY_EXISTS = new ErrorCode(1_040_731_001, "该业务对象的条码已存在");
507 507 ErrorCode WM_BARCODE_CONTENT_DUPLICATE = new ErrorCode(1_040_731_002, "条码内容已存在");
  508 + ErrorCode BARCODE_BIZ_TYPE_NOT_EXISTS = new ErrorCode(1_040_731_003, "业务类型不能为空");
  509 + ErrorCode BARCODE_BIZ_CODE_NOT_EXISTS = new ErrorCode(1_040_731_004, "业务编码不能为空");
  510 + ErrorCode BARCODE_CONFIG_NOT_EXISTS = new ErrorCode(1_040_731_005, "条码配置不存在");
508 511  
509 512 }
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/barcode/MesWmBarcodeService.java
... ... @@ -70,4 +70,13 @@ public interface MesWmBarcodeService {
70 70 */
71 71 void autoGenerateBarcode(Integer bizType, Long bizId, String bizCode, String bizName);
72 72  
  73 + /**
  74 + * 生成条码内容(供前端预览使用)
  75 + *
  76 + * @param bizType 业务类型
  77 + * @param bizCode 业务编码
  78 + * @return 生成的条码内容
  79 + */
  80 + String generateBarcodeContent(Integer bizType, String bizCode);
  81 +
73 82 }
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/barcode/MesWmBarcodeServiceImpl.java
1 1 package cn.iocoder.yudao.module.mes.service.wm.barcode;
2 2  
  3 +import cn.hutool.core.util.ObjUtil;
3 4 import cn.hutool.core.util.StrUtil;
4 5 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
5 6 import cn.iocoder.yudao.framework.common.pojo.PageResult;
... ... @@ -42,9 +43,11 @@ public class MesWmBarcodeServiceImpl implements MesWmBarcodeService {
42 43 throw exception(WM_BARCODE_ALREADY_EXISTS);
43 44 }
44 45  
45   - // 2.1 生成条码内容(根据配置模板)
46   - // TODO @AI:MesWmBarcodeSaveReqVO 增加一个 content 字段;如果为空,才进行生成;
47   - String content = generateBarcodeContent(config.getContentFormat(), createReqVO.getBizCode());
  46 + // 2.1 生成条码内容(如果前端未传递,则自动生成)
  47 + String content = createReqVO.getContent();
  48 + if (StrUtil.isBlank(content)) {
  49 + content = generateBarcodeContent(config.getContentFormat(), createReqVO.getBizCode());
  50 + }
48 51 // 2.2 校验条码内容唯一性
49 52 MesWmBarcodeDO contentBarcode = barcodeMapper.selectByContent(content);
50 53 if (contentBarcode != null) {
... ... @@ -58,7 +61,21 @@ public class MesWmBarcodeServiceImpl implements MesWmBarcodeService {
58 61 return barcode.getId();
59 62 }
60 63  
61   - // TODO @AI:后端提供一个接口,用于 generateBarcodeContent 的生成;前端需要调用这个接口;
  64 + @Override
  65 + public String generateBarcodeContent(Integer bizType, String bizCode) {
  66 + // 1.1 校验参数
  67 + if (bizType == null) {
  68 + throw exception(BARCODE_BIZ_TYPE_NOT_EXISTS);
  69 + }
  70 + if (StrUtil.isBlank(bizCode)) {
  71 + throw exception(BARCODE_BIZ_CODE_NOT_EXISTS);
  72 + }
  73 + // 1.2 查询条码配置
  74 + MesWmBarcodeConfigDO config = barcodeConfigService.validateBarcodeConfigByBizType(bizType);
  75 +
  76 + // 2. 生成条码内容
  77 + return generateBarcodeContent(config.getContentFormat(), bizCode);
  78 + }
62 79  
63 80 /**
64 81 * 生成条码内容
... ... @@ -76,13 +93,28 @@ public class MesWmBarcodeServiceImpl implements MesWmBarcodeService {
76 93  
77 94 @Override
78 95 public void updateBarcode(MesWmBarcodeSaveReqVO updateReqVO) {
79   - // 校验存在
  96 + // 1. 校验存在
80 97 validateBarcodeExists(updateReqVO.getId());
81 98  
82   - // TODO @AI:content 可以更新;更新需要校验唯一;
  99 + // 2.1 生成条码内容(如果前端未传递,则自动生成)
  100 + String content = updateReqVO.getContent();
  101 + if (StrUtil.isBlank(content)) {
  102 + MesWmBarcodeConfigDO config = barcodeConfigService.validateBarcodeConfigByBizType(updateReqVO.getBizType());
  103 + content = generateBarcodeContent(config.getContentFormat(), updateReqVO.getBizCode());
  104 + }
  105 + // 2.2 校验条码内容唯一性(排除自己)
  106 + if (StrUtil.isNotBlank(content)) {
  107 + MesWmBarcodeDO contentBarcode = barcodeMapper.selectByContent(content);
  108 + if (contentBarcode != null && ObjUtil.notEqual(contentBarcode.getId(), updateReqVO.getId())) {
  109 + throw exception(WM_BARCODE_CONTENT_DUPLICATE);
  110 + }
  111 + }
83 112  
84   - // 更新
  113 + // 3. 更新
85 114 MesWmBarcodeDO updateObj = BeanUtils.toBean(updateReqVO, MesWmBarcodeDO.class);
  115 + if (StrUtil.isNotBlank(content)) {
  116 + updateObj.setContent(content);
  117 + }
86 118 barcodeMapper.updateById(updateObj);
87 119 }
88 120  
... ...