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