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-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/item/MesMdItemTypeServiceImpl.java | 71 +++++++++++++++++++++++++++++++++++
1 files changed, 70 insertions(+), 1 deletions(-)
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/item/MesMdItemTypeServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/item/MesMdItemTypeServiceImpl.java
index dabb8db..fee17b9 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/item/MesMdItemTypeServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/item/MesMdItemTypeServiceImpl.java
@@ -2,10 +2,14 @@
import cn.hutool.core.collection.CollUtil;
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.CommonResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.mdm.api.category.MdmItemCategoryApi;
import cn.iocoder.yudao.module.mdm.api.category.dto.MdmItemCategoryRespDTO;
+import cn.iocoder.yudao.module.mes.controller.admin.md.item.vo.type.MesMdItemTypeImportExcelVO;
+import cn.iocoder.yudao.module.mes.controller.admin.md.item.vo.type.MesMdItemTypeImportRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.md.item.vo.type.MesMdItemTypeListReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.md.item.vo.type.MesMdItemTypeSaveReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemTypeDO;
@@ -13,9 +17,11 @@
import jakarta.annotation.Resource;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import java.util.*;
+import java.util.concurrent.atomic.AtomicInteger;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
@@ -26,7 +32,7 @@
* 鍏煎灞傚疄鐜帮細鏁版嵁瀛樺偍鍦� mes_md_item_type 琛紝浣嗕紭鍏堜粠 MDM 鍒嗙被 API 鑾峰彇
* 瀹為檯鍒嗙被鏁版嵁宸茶縼绉诲埌 mdm_item_category 琛�
*
- * @author 鑺嬮亾婧愮爜
+ * @author 瓒呯骇绠$悊鍛�
*/
@Service
@Validated
@@ -230,4 +236,67 @@
return mesDO;
}
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public MesMdItemTypeImportRespVO importItemTypeList(List<MesMdItemTypeImportExcelVO> importItemTypeList,
+ boolean updateSupport) {
+ // 1. 鏍¢獙闈炵┖
+ if (CollUtil.isEmpty(importItemTypeList)) {
+ throw exception(MD_ITEM_TYPE_IMPORT_LIST_IS_EMPTY);
+ }
+
+ // 2. 閫愯澶勭悊
+ MesMdItemTypeImportRespVO respVO = MesMdItemTypeImportRespVO.builder()
+ .createCodes(new ArrayList<>()).updateCodes(new ArrayList<>())
+ .failureCodes(new LinkedHashMap<>()).build();
+ AtomicInteger index = new AtomicInteger(1);
+ importItemTypeList.forEach(importItem -> {
+ int currentIndex = index.getAndIncrement();
+ String key = StrUtil.blankToDefault(importItem.getCode(), "绗� " + currentIndex + " 琛�");
+ if (StrUtil.isBlank(importItem.getCode())) {
+ respVO.getFailureCodes().put(key, "鍒嗙被缂栫爜涓嶈兘涓虹┖");
+ return;
+ }
+ if (StrUtil.isBlank(importItem.getName())) {
+ respVO.getFailureCodes().put(key, "鍒嗙被鍚嶇О涓嶈兘涓虹┖");
+ return;
+ }
+ if (StrUtil.isBlank(importItem.getItemOrProduct())) {
+ respVO.getFailureCodes().put(key, "鐗╂枡/浜у搧鏍囪瘑涓嶈兘涓虹┖");
+ return;
+ }
+ // 2.1 瑙f瀽鐖跺垎绫伙紙涓虹┖鍒欓粯璁や负鏍瑰垎绫伙級
+ Long parentId = MesMdItemTypeDO.PARENT_ID_ROOT;
+ if (StrUtil.isNotBlank(importItem.getParentCode())) {
+ MesMdItemTypeDO parentItemType = itemTypeMapper.selectByCode(importItem.getParentCode());
+ if (parentItemType == null) {
+ respVO.getFailureCodes().put(key, "鐖跺垎绫荤紪鐮乕" + importItem.getParentCode() + "]涓嶅瓨鍦�");
+ return;
+ }
+ parentId = parentItemType.getId();
+ }
+ // 2.2 鍒ゆ柇鏄惁瀛樺湪锛堝悓涓�鐖跺垎绫讳笅缂栫爜鍞竴锛�
+ MesMdItemTypeDO existItemType = itemTypeMapper.selectByParentIdAndCode(parentId, importItem.getCode());
+ if (existItemType == null) {
+ // 2.2.1 鏂板
+ MesMdItemTypeDO itemType = BeanUtils.toBean(importItem, MesMdItemTypeDO.class);
+ itemType.setParentId(parentId);
+ itemType.setSort(ObjUtil.defaultIfNull(importItem.getSort(), 0));
+ itemType.setStatus(ObjUtil.defaultIfNull(importItem.getStatus(), CommonStatusEnum.ENABLE.getStatus()));
+ itemTypeMapper.insert(itemType);
+ respVO.getCreateCodes().add(importItem.getCode());
+ } else if (updateSupport) {
+ // 2.2.2 鏇存柊
+ MesMdItemTypeDO updateObj = BeanUtils.toBean(importItem, MesMdItemTypeDO.class);
+ updateObj.setId(existItemType.getId());
+ updateObj.setParentId(parentId);
+ itemTypeMapper.updateById(updateObj);
+ respVO.getUpdateCodes().add(importItem.getCode());
+ } else {
+ respVO.getFailureCodes().put(key, "鍒嗙被缂栫爜宸插瓨鍦�");
+ }
+ });
+ return respVO;
+ }
+
}
\ No newline at end of file
--
Gitblit v1.9.3