Commit c600dfa58d08ad275aa9af765a47cf0a4b4243b6

Authored by YunaiV
1 parent 1ebc0a08

✨ feat(mes): 新增客户和供应商信息字段

yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/client/vo/MesMdClientImportExcelVO.java
... ... @@ -37,6 +37,39 @@ public class MesMdClientImportExcelVO {
37 37 @ExcelProperty("客户邮箱地址")
38 38 private String email;
39 39  
  40 + @ExcelProperty("客户英文名称")
  41 + private String englishName;
  42 +
  43 + @ExcelProperty("客户简介")
  44 + private String description;
  45 +
  46 + @ExcelProperty("客户地址")
  47 + private String address;
  48 +
  49 + @ExcelProperty("客户官网地址")
  50 + private String website;
  51 +
  52 + @ExcelProperty("联系人1")
  53 + private String contact1Name;
  54 +
  55 + @ExcelProperty("联系人1-电话")
  56 + private String contact1Telephone;
  57 +
  58 + @ExcelProperty("联系人1-邮箱")
  59 + private String contact1Email;
  60 +
  61 + @ExcelProperty("联系人2")
  62 + private String contact2Name;
  63 +
  64 + @ExcelProperty("联系人2-电话")
  65 + private String contact2Telephone;
  66 +
  67 + @ExcelProperty("联系人2-邮箱")
  68 + private String contact2Email;
  69 +
  70 + @ExcelProperty("统一社会信用代码")
  71 + private String creditCode;
  72 +
40 73 @ExcelProperty(value = "状态", converter = DictConvert.class)
41 74 @DictFormat(cn.iocoder.yudao.module.system.enums.DictTypeConstants.COMMON_STATUS)
42 75 private Integer status;
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/md/vendor/vo/MesMdVendorImportExcelVO.java
... ... @@ -37,6 +37,39 @@ public class MesMdVendorImportExcelVO {
37 37 @ExcelProperty("供应商邮箱地址")
38 38 private String email;
39 39  
  40 + @ExcelProperty("供应商英文名称")
  41 + private String englishName;
  42 +
  43 + @ExcelProperty("供应商简介")
  44 + private String description;
  45 +
  46 + @ExcelProperty("供应商地址")
  47 + private String address;
  48 +
  49 + @ExcelProperty("供应商官网地址")
  50 + private String website;
  51 +
  52 + @ExcelProperty("联系人1")
  53 + private String contact1Name;
  54 +
  55 + @ExcelProperty("联系人1-电话")
  56 + private String contact1Telephone;
  57 +
  58 + @ExcelProperty("联系人1-邮箱")
  59 + private String contact1Email;
  60 +
  61 + @ExcelProperty("联系人2")
  62 + private String contact2Name;
  63 +
  64 + @ExcelProperty("联系人2-电话")
  65 + private String contact2Telephone;
  66 +
  67 + @ExcelProperty("联系人2-邮箱")
  68 + private String contact2Email;
  69 +
  70 + @ExcelProperty("统一社会信用代码")
  71 + private String creditCode;
  72 +
40 73 @ExcelProperty(value = "状态", converter = DictConvert.class)
41 74 @DictFormat(cn.iocoder.yudao.module.system.enums.DictTypeConstants.COMMON_STATUS)
42 75 private Integer status;
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java
... ... @@ -18,6 +18,7 @@ public interface ErrorCodeConstants {
18 18 ErrorCode MD_ITEM_TYPE_CODE_DUPLICATE = new ErrorCode(1_040_100_005, "同一父分类下已存在该编码的分类");
19 19 ErrorCode MD_ITEM_TYPE_PARENT_IS_CHILD = new ErrorCode(1_040_100_006, "不能设置自己的子分类为父分类");
20 20 ErrorCode MD_ITEM_TYPE_EXITS_ITEM = new ErrorCode(1_040_100_007, "该分类下存在物料,无法删除");
  21 + ErrorCode MD_ITEM_TYPE_NOT_LEAF = new ErrorCode(1_040_100_008, "只能将物料挂载到叶子分类(该分类下存在子分类)");
21 22  
22 23 // ========== MES 基础数据-计量单位(1-040-101-000) ==========
23 24 ErrorCode MD_UNIT_MEASURE_NOT_EXISTS = new ErrorCode(1_040_101_000, "计量单位不存在");
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/md/autocode/MesMdAutoCodeRuleCodeEnum.java
... ... @@ -12,6 +12,7 @@ import lombok.Getter;
12 12 @AllArgsConstructor
13 13 public enum MesMdAutoCodeRuleCodeEnum {
14 14  
  15 + MD_ITEM_TYPE_CODE("MD_ITEM_TYPE_CODE", "物料分类编码"),
15 16 MD_ITEM_CODE("MD_ITEM_CODE", "物料编码"),
16 17 MD_VENDOR_CODE("MD_VENDOR_CODE", "供应商编码"),
17 18 MD_CLIENT_CODE("MD_CLIENT_CODE", "客户编码"),
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/item/MesMdItemServiceImpl.java
... ... @@ -17,8 +17,10 @@ import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemTypeDO;
17 17 import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
18 18 import cn.iocoder.yudao.module.mes.dal.mysql.md.item.MesMdItemMapper;
19 19 import cn.iocoder.yudao.module.mes.enums.md.MesMdItemTypeEnum;
  20 +import cn.iocoder.yudao.module.mes.enums.md.autocode.MesMdAutoCodeRuleCodeEnum;
20 21 import cn.iocoder.yudao.module.mes.enums.wm.BarcodeBizTypeEnum;
21 22 import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService;
  23 +import cn.iocoder.yudao.module.mes.service.md.autocode.MesMdAutoCodeRecordService;
22 24 import cn.iocoder.yudao.module.mes.service.wm.barcode.MesWmBarcodeService;
23 25 import jakarta.annotation.Resource;
24 26 import org.springframework.stereotype.Service;
... ... @@ -59,6 +61,8 @@ public class MesMdItemServiceImpl implements MesMdItemService {
59 61 private MesMdProductSipService productSipService;
60 62 @Resource
61 63 private MesWmBarcodeService barcodeService;
  64 + @Resource
  65 + private MesMdAutoCodeRecordService autoCodeRecordService;
62 66  
63 67 @Override
64 68 public Long createItem(MesMdItemSaveReqVO createReqVO) {
... ... @@ -183,6 +187,11 @@ public class MesMdItemServiceImpl implements MesMdItemService {
183 187 if (itemTypeService.getItemType(itemTypeId) == null) {
184 188 throw exception(MD_ITEM_TYPE_NOT_EXISTS);
185 189 }
  190 + // 校验必须是叶子分类(没有子分类)
  191 + List<MesMdItemTypeDO> children = itemTypeService.getItemTypeChildrenList(itemTypeId);
  192 + if (CollUtil.isNotEmpty(children)) {
  193 + throw exception(MD_ITEM_TYPE_NOT_LEAF);
  194 + }
186 195 }
187 196  
188 197 private void validateUnitMeasureExists(Long unitMeasureId) {
... ... @@ -276,11 +285,11 @@ public class MesMdItemServiceImpl implements MesMdItemService {
276 285 importItems.forEach(importItem -> {
277 286 int currentIndex = index.getAndIncrement();
278 287 // 2.1 校验字段
279   - String key = StrUtil.blankToDefault(importItem.getCode(), "第 " + currentIndex + " 行");
280 288 if (StrUtil.isBlank(importItem.getCode())) {
281   - respVO.getFailureCodes().put(key, "物料编码不能为空");
282   - return;
  289 + // 空编码时自动生成
  290 + importItem.setCode(autoCodeRecordService.generateAutoCode(MesMdAutoCodeRuleCodeEnum.MD_ITEM_CODE.getCode()));
283 291 }
  292 + String key = importItem.getCode();
284 293 if (StrUtil.isBlank(importItem.getName())) {
285 294 respVO.getFailureCodes().put(key, "物料名称不能为空");
286 295 return;
... ...