From c2053d7017625f270577bc0f6c523d04f52db6ea Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期五, 24 七月 2026 14:20:29 +0800
Subject: [PATCH] refactor(crm): 重构文件上传功能,替换原有的fileUrls字段为统一的StorageAttachmentApi

---
 yudao-module-mdm/src/main/java/cn/iocoder/yudao/module/mdm/service/item/MdmItemServiceImpl.java |   39 ++++++++++++++++++++++++++-------------
 1 files changed, 26 insertions(+), 13 deletions(-)

diff --git a/yudao-module-mdm/src/main/java/cn/iocoder/yudao/module/mdm/service/item/MdmItemServiceImpl.java b/yudao-module-mdm/src/main/java/cn/iocoder/yudao/module/mdm/service/item/MdmItemServiceImpl.java
index 5acea4b..14990a0 100644
--- a/yudao-module-mdm/src/main/java/cn/iocoder/yudao/module/mdm/service/item/MdmItemServiceImpl.java
+++ b/yudao-module-mdm/src/main/java/cn/iocoder/yudao/module/mdm/service/item/MdmItemServiceImpl.java
@@ -77,11 +77,9 @@
         // 淇濆瓨鎵规閰嶇疆锛堝鏋滄湁锛�
         saveBatchConfig(item.getId(), createReqVO);
 
-        // 鍚屾鍒� MES锛堝嬀閫� syncMes 鏃讹級
+        // 濮嬬粓鍚屾鍒� MES
         createReqVO.setId(item.getId());
-        if (Boolean.TRUE.equals(createReqVO.getSyncMes())) {
-            syncItemToMes(createReqVO);
-        }
+        syncItemToMes(createReqVO);
         return item.getId();
     }
 
@@ -100,10 +98,8 @@
         // 淇濆瓨鎵规閰嶇疆锛堝鏋滄湁锛�
         saveBatchConfig(updateReqVO.getId(), updateReqVO);
 
-        // 鍚屾鍒� MES锛堝嬀閫� syncMes 鏃讹級
-        if (Boolean.TRUE.equals(updateReqVO.getSyncMes())) {
-            syncItemToMes(updateReqVO);
-        }
+        // 濮嬬粓鍚屾鍒� MES
+        syncItemToMes(updateReqVO);
     }
 
     private void validateItemSaveData(MdmItemSaveReqVO reqVO) {
@@ -165,11 +161,14 @@
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void updateItemStatus(Long id, Integer status) {
         // 鏍¢獙瀛樺湪
         validateItemExists(id);
         // 鏇存柊鐘舵��
         itemMapper.updateById(new MdmItemDO().setId(id).setStatus(status));
+        // 鍚屾鐘舵�佸埌 MES
+        mesMdItemApi.updateItemStatus(id, status);
     }
 
     @Override
@@ -177,13 +176,27 @@
     public void deleteItem(Long id) {
         // 鏍¢獙瀛樺湪
         MdmItemDO item = validateItemExists(id);
-        // 瑙e喅杞垹闄ゅ敮涓�閿啿绐侊細濡傛灉宸插瓨鍦ㄧ浉鍚� code 涓斿凡杞垹闄ょ殑璁板綍锛屽厛鐗╃悊鍒犻櫎瀹�
-//        MdmItemDO existingDeleted = itemMapper.selectByCodeAndDeleted(item.getCode(), true);
-//        if (existingDeleted != null && !existingDeleted.getId().equals(id)) {
-//            itemMapper.physicalDeleteById(existingDeleted.getId());
-//        }
+        // 鏍¢獙鐗╂枡鏄惁琚笟鍔″紩鐢�
+        validateItemNoReference(id);
         // 杞垹闄ゅ綋鍓嶈褰�
         itemMapper.deleteById(id);
+        // 鍚屾鍒犻櫎鍒� MES
+        mesMdItemApi.deleteItem(id);
+    }
+
+    /**
+     * 鏍¢獙鐗╂枡鏈涓氬姟寮曠敤锛堥攢鍞�侀噰璐�佺敓浜с�佽川妫�銆佸簱瀛樼瓑锛�
+     *
+     * @param id 鐗╂枡缂栧彿
+     */
+    private void validateItemNoReference(Long id) {
+        List<Map<String, Object>> references = itemMapper.selectItemReferenceCount(id);
+        if (CollUtil.isNotEmpty(references)) {
+            String refDesc = references.stream()
+                    .map(r -> r.get("source") + "(" + r.get("cnt") + ")")
+                    .collect(Collectors.joining("銆�"));
+            throw exception(MDM_ITEM_EXISTS_REFERENCE, refDesc);
+        }
     }
 
     @Override

--
Gitblit v1.9.3