From 698cb1d9ae307835cd90ae4a102b1ee77639c599 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期一, 07 四月 2025 17:13:12 +0800
Subject: [PATCH] 原始数据excel去重

---
 basic-server/src/main/java/com/ruoyi/basic/excel/MultiSheetImportListener.java |   30 +++++++++++++++++++++++++++---
 1 files changed, 27 insertions(+), 3 deletions(-)

diff --git a/basic-server/src/main/java/com/ruoyi/basic/excel/MultiSheetImportListener.java b/basic-server/src/main/java/com/ruoyi/basic/excel/MultiSheetImportListener.java
index 298b820..e425cb6 100644
--- a/basic-server/src/main/java/com/ruoyi/basic/excel/MultiSheetImportListener.java
+++ b/basic-server/src/main/java/com/ruoyi/basic/excel/MultiSheetImportListener.java
@@ -18,9 +18,7 @@
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.ObjectUtils;
 
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 @Slf4j
@@ -37,6 +35,9 @@
 
     private final StandardTemplateService standardTemplateService;
 
+    // 鏂板锛氬唴瀛樺幓閲嶉泦鍚堬紙璁板綍鍞竴閿級
+    private Set<String> uniqueKeys = new HashSet<>();
+
     public MultiSheetImportListener(StructureItemParameterService parameterService, StandardTemplateService standardTemplateService,
                                     ISysDictTypeService dictTypeService) {
         this.parameterService = parameterService;
@@ -47,6 +48,18 @@
 
     @Override
     public void invoke(StructureItemParameter data, AnalysisContext context) {
+
+        String uniqueKey = buildUniqueKey(data);
+        if (uniqueKeys.contains(uniqueKey)) {
+            log.warn("鍙戠幇閲嶅鏁版嵁锛屽凡璺宠繃: {} (Sheet: {}, 琛屽彿: {})",
+                    uniqueKey,
+                    currentSheetName,
+                    context.readRowHolder().getRowIndex() + 1
+            );
+            return;
+        }
+        uniqueKeys.add(uniqueKey);
+
         data.setId(null);
         // 娴嬭瘯瀵硅薄
         if (data.getSample() == null) {
@@ -217,4 +230,15 @@
         // 鎵撳嵃瀹屾暣閿欒鍫嗘爤锛堣皟璇曟椂寮�鍚級
         log.error("Sheet[{}] 绗瑊}琛岀{}鍒楄В鏋愬け璐�: {}", sheetName, rowIndex, columnIndex, errorMsg);
     }
+
+    private String buildUniqueKey(StructureItemParameter data) {
+        return String.join("|",
+                ObjectUtils.defaultIfNull(data.getInspectionItem(), ""),
+                ObjectUtils.defaultIfNull(data.getInspectionItemEn(),""),
+                ObjectUtils.defaultIfNull(data.getProduct(),""),
+                ObjectUtils.defaultIfNull(data.getInspectionItemSubclass(), ""),
+                ObjectUtils.defaultIfNull(data.getSample(), ""),
+                ObjectUtils.defaultIfNull(data.getInspectionItemClass(), "")
+        );
+    }
 }
\ No newline at end of file

--
Gitblit v1.9.3