Преглед изворни кода

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

YunaiV пре 2 месеци
родитељ
комит
c600dfa58d

+ 33 - 0
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 {
     @ExcelProperty("客户邮箱地址")
     private String email;
 
+    @ExcelProperty("客户英文名称")
+    private String englishName;
+
+    @ExcelProperty("客户简介")
+    private String description;
+
+    @ExcelProperty("客户地址")
+    private String address;
+
+    @ExcelProperty("客户官网地址")
+    private String website;
+
+    @ExcelProperty("联系人1")
+    private String contact1Name;
+
+    @ExcelProperty("联系人1-电话")
+    private String contact1Telephone;
+
+    @ExcelProperty("联系人1-邮箱")
+    private String contact1Email;
+
+    @ExcelProperty("联系人2")
+    private String contact2Name;
+
+    @ExcelProperty("联系人2-电话")
+    private String contact2Telephone;
+
+    @ExcelProperty("联系人2-邮箱")
+    private String contact2Email;
+
+    @ExcelProperty("统一社会信用代码")
+    private String creditCode;
+
     @ExcelProperty(value = "状态", converter = DictConvert.class)
     @DictFormat(cn.iocoder.yudao.module.system.enums.DictTypeConstants.COMMON_STATUS)
     private Integer status;

+ 33 - 0
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 {
     @ExcelProperty("供应商邮箱地址")
     private String email;
 
+    @ExcelProperty("供应商英文名称")
+    private String englishName;
+
+    @ExcelProperty("供应商简介")
+    private String description;
+
+    @ExcelProperty("供应商地址")
+    private String address;
+
+    @ExcelProperty("供应商官网地址")
+    private String website;
+
+    @ExcelProperty("联系人1")
+    private String contact1Name;
+
+    @ExcelProperty("联系人1-电话")
+    private String contact1Telephone;
+
+    @ExcelProperty("联系人1-邮箱")
+    private String contact1Email;
+
+    @ExcelProperty("联系人2")
+    private String contact2Name;
+
+    @ExcelProperty("联系人2-电话")
+    private String contact2Telephone;
+
+    @ExcelProperty("联系人2-邮箱")
+    private String contact2Email;
+
+    @ExcelProperty("统一社会信用代码")
+    private String creditCode;
+
     @ExcelProperty(value = "状态", converter = DictConvert.class)
     @DictFormat(cn.iocoder.yudao.module.system.enums.DictTypeConstants.COMMON_STATUS)
     private Integer status;

+ 1 - 0
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java

@@ -18,6 +18,7 @@ public interface ErrorCodeConstants {
     ErrorCode MD_ITEM_TYPE_CODE_DUPLICATE = new ErrorCode(1_040_100_005, "同一父分类下已存在该编码的分类");
     ErrorCode MD_ITEM_TYPE_PARENT_IS_CHILD = new ErrorCode(1_040_100_006, "不能设置自己的子分类为父分类");
     ErrorCode MD_ITEM_TYPE_EXITS_ITEM = new ErrorCode(1_040_100_007, "该分类下存在物料,无法删除");
+    ErrorCode MD_ITEM_TYPE_NOT_LEAF = new ErrorCode(1_040_100_008, "只能将物料挂载到叶子分类(该分类下存在子分类)");
 
     // ========== MES 基础数据-计量单位(1-040-101-000) ==========
     ErrorCode MD_UNIT_MEASURE_NOT_EXISTS = new ErrorCode(1_040_101_000, "计量单位不存在");

+ 1 - 0
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/enums/md/autocode/MesMdAutoCodeRuleCodeEnum.java

@@ -12,6 +12,7 @@ import lombok.Getter;
 @AllArgsConstructor
 public enum MesMdAutoCodeRuleCodeEnum {
 
+    MD_ITEM_TYPE_CODE("MD_ITEM_TYPE_CODE", "物料分类编码"),
     MD_ITEM_CODE("MD_ITEM_CODE", "物料编码"),
     MD_VENDOR_CODE("MD_VENDOR_CODE", "供应商编码"),
     MD_CLIENT_CODE("MD_CLIENT_CODE", "客户编码"),

+ 12 - 3
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;
 import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO;
 import cn.iocoder.yudao.module.mes.dal.mysql.md.item.MesMdItemMapper;
 import cn.iocoder.yudao.module.mes.enums.md.MesMdItemTypeEnum;
+import cn.iocoder.yudao.module.mes.enums.md.autocode.MesMdAutoCodeRuleCodeEnum;
 import cn.iocoder.yudao.module.mes.enums.wm.BarcodeBizTypeEnum;
 import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService;
+import cn.iocoder.yudao.module.mes.service.md.autocode.MesMdAutoCodeRecordService;
 import cn.iocoder.yudao.module.mes.service.wm.barcode.MesWmBarcodeService;
 import jakarta.annotation.Resource;
 import org.springframework.stereotype.Service;
@@ -59,6 +61,8 @@ public class MesMdItemServiceImpl implements MesMdItemService {
     private MesMdProductSipService productSipService;
     @Resource
     private MesWmBarcodeService barcodeService;
+    @Resource
+    private MesMdAutoCodeRecordService autoCodeRecordService;
 
     @Override
     public Long createItem(MesMdItemSaveReqVO createReqVO) {
@@ -183,6 +187,11 @@ public class MesMdItemServiceImpl implements MesMdItemService {
         if (itemTypeService.getItemType(itemTypeId) == null) {
             throw exception(MD_ITEM_TYPE_NOT_EXISTS);
         }
+        // 校验必须是叶子分类(没有子分类)
+        List<MesMdItemTypeDO> children = itemTypeService.getItemTypeChildrenList(itemTypeId);
+        if (CollUtil.isNotEmpty(children)) {
+            throw exception(MD_ITEM_TYPE_NOT_LEAF);
+        }
     }
 
     private void validateUnitMeasureExists(Long unitMeasureId) {
@@ -276,11 +285,11 @@ public class MesMdItemServiceImpl implements MesMdItemService {
         importItems.forEach(importItem -> {
             int currentIndex = index.getAndIncrement();
             // 2.1 校验字段
-            String key = StrUtil.blankToDefault(importItem.getCode(), "第 " + currentIndex + " 行");
             if (StrUtil.isBlank(importItem.getCode())) {
-                respVO.getFailureCodes().put(key, "物料编码不能为空");
-                return;
+                // 空编码时自动生成
+                importItem.setCode(autoCodeRecordService.generateAutoCode(MesMdAutoCodeRuleCodeEnum.MD_ITEM_CODE.getCode()));
             }
+            String key = importItem.getCode();
             if (StrUtil.isBlank(importItem.getName())) {
                 respVO.getFailureCodes().put(key, "物料名称不能为空");
                 return;