From dcae969ee04f67b6dc46f3ca061116f44558307a Mon Sep 17 00:00:00 2001
From: lty <876263681@qq.com>
Date: 星期二, 24 六月 2025 08:27:36 +0800
Subject: [PATCH] #订单导入去重

---
 src/main/java/com/zy/asrs/importexcle/ImportOrderListener.java |   42 ++++++++++++++++++++++++++++--------------
 1 files changed, 28 insertions(+), 14 deletions(-)

diff --git a/src/main/java/com/zy/asrs/importexcle/ImportOrderListener.java b/src/main/java/com/zy/asrs/importexcle/ImportOrderListener.java
index da5c02b..d6e1505 100644
--- a/src/main/java/com/zy/asrs/importexcle/ImportOrderListener.java
+++ b/src/main/java/com/zy/asrs/importexcle/ImportOrderListener.java
@@ -16,9 +16,7 @@
 import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 
 /**
  * @author pang.jiabao
@@ -61,37 +59,54 @@
         this.userId = userId;
     }
 
-    /**
-     * 杩欎釜姣忎竴鏉℃暟鎹В鏋愰兘浼氭潵璋冪敤
-     */
+    private Set<String> uniquePackNos = new HashSet<>(); // 鐢ㄤ簬鍘婚噸鍖呰缁勫彿
+
     @SneakyThrows
     @Override
     public void invoke(ImportOrderDto data, AnalysisContext context) {
         log.info("瑙f瀽鍒扮 {} 鏉℃暟鎹�:{}", ++count, JSON.toJSONString(data));
+
+        // 鑾峰彇鍖呰缁勫彿锛坈olumn1锛�
+        String packNo = data.getColumn1();
+        if (Cools.isEmpty(packNo)) {
+            log.warn("鍖呰缁勫彿涓虹┖锛岃烦杩囪琛岋紒");
+            return;
+        }
+
+        // 濡傛灉宸茬粡澶勭悊杩囪鍖呰缁勫彿锛屽垯璺宠繃
+        if (uniquePackNos.contains(packNo)) {
+            log.info("閲嶅鐨勫寘瑁呯粍鍙凤細{}锛岃烦杩�", packNo);
+            return;
+        }
+
+        // 棣栨鍑虹幇锛岃褰曞苟澶勭悊
+        uniquePackNos.add(packNo);
         list.add(data);
+
         if (context.getCurrentRowNum() == 3) {
-            String time = DateUtils.convert(new Date(),DateUtils.yyyyMMddHHmmss_F);
-            Order order2 = orderService.selectByNo(list.get(0).getColumn2()); // 璁㈠崟鍙�
-            if(order2 != null) {
+            String time = DateUtils.convert(new Date(), DateUtils.yyyyMMddHHmmss_F);
+            Order order2 = orderService.selectByNo(list.get(0).getColumn2());
+            if (order2 != null) {
                 throw new ExcelAnalysisException("鍗曟嵁宸插瓨鍦紒");
             }
-            DocType docType = docTypeService.selectOrAdd(list.get(1).getColumn2(), Boolean.FALSE); // 璁㈠崟绫诲瀷
+            DocType docType = docTypeService.selectOrAdd(list.get(1).getColumn2(), Boolean.FALSE);
             if (docType == null) {
                 throw new ExcelAnalysisException("鍗曟嵁绫诲瀷閿欒锛�" + list.get(1).getColumn2());
             }
+
             orderNo = list.get(0).getColumn2();
             docTypeId = docType.getDocId();
+
             Order order = new Order();
             order.setUuid(String.valueOf(snowflakeIdWorker.nextId()));
             order.setOrderNo(orderNo);
             order.setOrderTime(time);
             order.setDocType(docType.getDocId());
-//            order.setCstmrName(Cools.isEmpty(list.get(2).getColumn2()) ? "" : list.get(2).getColumn2()); // 瀹㈡埛鍚嶇О
-//            order.setMemo(Cools.isEmpty(list.get(3).getColumn2()) ? "" : list.get(3).getColumn2()); // 澶囨敞
             order.setSettle(1L);
             order.setStatus(1);
             order.setCreateBy(userId);
             order.setCreateTime(new Date());
+
             orderService.insert(order);
             Order order1 = orderService.selectByNo(orderNo);
             orderId = order1.getId();
@@ -99,14 +114,13 @@
             return;
         }
 
-        // 杈惧埌BATCH_COUNT浜嗭紝闇�瑕佸幓瀛樺偍涓�娆℃暟鎹簱锛岄槻姝㈡暟鎹嚑涓囨潯鏁版嵁鍦ㄥ唴瀛橈紝瀹规槗OOM
         if (list.size() >= BATCH_COUNT) {
             saveData();
-            // 瀛樺偍瀹屾垚娓呯悊 list
             list.clear();
         }
     }
 
+
     /**
      * 鎵�鏈夋暟鎹В鏋愬畬鎴愪簡 閮戒細鏉ヨ皟鐢�
      */

--
Gitblit v1.9.1