From d54fbc9d4f8981fa0f7f613b33a28a8cd4f764ea Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期日, 25 十月 2026 16:29:53 +0800
Subject: [PATCH] feat(system): 优化用户搜索功能并完善ERP和MES模块验证逻辑

---
 yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/dict/DictTypeServiceImpl.java |   53 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 53 insertions(+), 0 deletions(-)

diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/dict/DictTypeServiceImpl.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/dict/DictTypeServiceImpl.java
index 7f197ad..1b411b0 100644
--- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/dict/DictTypeServiceImpl.java
+++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/dict/DictTypeServiceImpl.java
@@ -1,9 +1,14 @@
 package cn.iocoder.yudao.module.system.service.dict;
 
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
+import cn.iocoder.yudao.framework.common.exception.ServiceException;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.system.controller.admin.dict.vo.type.DictTypeImportExcelVO;
+import cn.iocoder.yudao.module.system.controller.admin.dict.vo.type.DictTypeImportReqVO;
+import cn.iocoder.yudao.module.system.controller.admin.dict.vo.type.DictTypeImportRespVO;
 import cn.iocoder.yudao.module.system.controller.admin.dict.vo.type.DictTypePageReqVO;
 import cn.iocoder.yudao.module.system.controller.admin.dict.vo.type.DictTypeSaveReqVO;
 import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictTypeDO;
@@ -13,9 +18,12 @@
 import org.springframework.stereotype.Service;
 
 import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
 import java.util.List;
 
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.filterList;
 import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*;
 
 /**
@@ -107,6 +115,51 @@
         return dictTypeMapper.selectList();
     }
 
+    @Override
+    public DictTypeImportRespVO importDictTypeList(List<DictTypeImportExcelVO> importDictTypes, DictTypeImportReqVO importReqVO) {
+        importDictTypes = filterList(importDictTypes, item -> StrUtil.isNotBlank(item.getType()));
+        if (CollUtil.isEmpty(importDictTypes)) {
+            throw exception(DICT_TYPE_IMPORT_LIST_IS_EMPTY);
+        }
+        DictTypeImportRespVO respVO = DictTypeImportRespVO.builder()
+                .createDictTypeNames(new ArrayList<>())
+                .updateDictTypeNames(new ArrayList<>())
+                .failureDictTypeNames(new LinkedHashMap<>())
+                .build();
+        importDictTypes.forEach(importDictType -> {
+            try {
+                // 1. 鍒ゆ柇鏄惁瀛樺湪锛堜紭鍏堟寜瀛楀吀绫诲瀷缂栫爜锛屽叾娆℃寜鍚嶇О锛�
+                DictTypeDO existDictType = dictTypeMapper.selectByType(importDictType.getType());
+                if (existDictType == null && StrUtil.isNotBlank(importDictType.getName())) {
+                    existDictType = dictTypeMapper.selectByName(importDictType.getName());
+                }
+                if (existDictType == null) {
+                    // 2.1 鏂板
+                    validateDictTypeNameUnique(null, importDictType.getName());
+                    validateDictTypeUnique(null, importDictType.getType());
+                    DictTypeDO dictType = BeanUtils.toBean(importDictType, DictTypeDO.class);
+                    dictType.setDeletedTime(LocalDateTimeUtils.EMPTY); // 鍞竴绱㈠紩锛岄伩鍏� null 鍊�
+                    dictTypeMapper.insert(dictType);
+                    respVO.getCreateDictTypeNames().add(importDictType.getType());
+                    return;
+                }
+                // 2.2 宸插瓨鍦紝鍒ゆ柇鏄惁鍏佽鏇存柊
+                if (!importReqVO.getUpdateSupport()) {
+                    respVO.getFailureDictTypeNames().put(importDictType.getType(),
+                            StrUtil.format(DICT_TYPE_TYPE_DUPLICATE.getMsg(), importDictType.getType()));
+                    return;
+                }
+                DictTypeDO updateDictType = BeanUtils.toBean(importDictType, DictTypeDO.class)
+                        .setId(existDictType.getId());
+                dictTypeMapper.updateById(updateDictType);
+                respVO.getUpdateDictTypeNames().add(importDictType.getType());
+            } catch (ServiceException ex) {
+                respVO.getFailureDictTypeNames().put(importDictType.getType(), ex.getMessage());
+            }
+        });
+        return respVO;
+    }
+
     @VisibleForTesting
     void validateDictTypeNameUnique(Long id, String name) {
         DictTypeDO dictType = dictTypeMapper.selectByName(name);

--
Gitblit v1.9.3