From 7af1ffdd5af44733dc86a3d03e1f8543e87462d8 Mon Sep 17 00:00:00 2001
From: zhang <zc857179121@qq.com>
Date: 星期一, 04 八月 2025 14:43:37 +0800
Subject: [PATCH] 1

---
 src/main/java/com/zy/asrs/importexcle/ImportReviewListener.java |  101 ++++++++++++++++++++++++++++----------------------
 1 files changed, 57 insertions(+), 44 deletions(-)

diff --git a/src/main/java/com/zy/asrs/importexcle/ImportReviewListener.java b/src/main/java/com/zy/asrs/importexcle/ImportReviewListener.java
index 43991df..c052675 100644
--- a/src/main/java/com/zy/asrs/importexcle/ImportReviewListener.java
+++ b/src/main/java/com/zy/asrs/importexcle/ImportReviewListener.java
@@ -3,13 +3,19 @@
 import com.alibaba.excel.context.AnalysisContext;
 import com.alibaba.excel.event.AnalysisEventListener;
 import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
+import com.core.common.DateUtils;
 import com.core.common.SnowflakeIdWorker;
-import com.zy.asrs.entity.OrderDetl;
+import com.core.exception.CoolException;
+import com.zy.asrs.entity.Review;
+import com.zy.asrs.entity.ReviewDetl;
 import com.zy.asrs.service.ReviewDetlService;
 import com.zy.asrs.service.ReviewService;
 import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.transaction.PlatformTransactionManager;
+import org.springframework.transaction.TransactionStatus;
 
 import java.util.*;
 
@@ -23,29 +29,32 @@
     /**
      * 姣忛殧1000鏉″瓨鍌ㄦ暟鎹簱锛屽疄闄呬娇鐢ㄤ腑鍙互3000鏉★紝鐒跺悗娓呯悊list 锛屾柟渚垮唴瀛樺洖鏀�
      */
-    private static final int BATCH_COUNT = 400;
+    private static final int BATCH_COUNT = 2000;
 
     private int count = 0;
 
-    private String orderNo;
 
     private long orderId;
 
-    private long docTypeId;
 
     List<ImportReviewDto> list = new ArrayList<>();
     /**
      * 鍋囪杩欎釜鏄竴涓狣AO锛屽綋鐒舵湁涓氬姟閫昏緫杩欎釜涔熷彲浠ユ槸涓�涓猻ervice銆傚綋鐒跺鏋滀笉鐢ㄥ瓨鍌ㄨ繖涓璞℃病鐢ㄣ��
      */
+    private final PlatformTransactionManager transactionManager;
     private ReviewService reviewService;
     private ReviewDetlService reviewDetlService;
     private final SnowflakeIdWorker snowflakeIdWorker;
     private final Long userId;
+    private TransactionStatus transactionStatus;
 
     /**
      * 濡傛灉浣跨敤浜唖pring,璇蜂娇鐢ㄨ繖涓瀯閫犳柟娉曘�傛瘡娆″垱寤篖istener鐨勬椂鍊欓渶瑕佹妸spring绠$悊鐨勭被浼犺繘鏉�
      */
-    public ImportReviewListener(SnowflakeIdWorker snowflakeIdWorker, Long userId) {
+    public ImportReviewListener(PlatformTransactionManager transactionManager, ReviewService reviewService, ReviewDetlService reviewDetlService, SnowflakeIdWorker snowflakeIdWorker, Long userId) {
+        this.transactionManager = transactionManager;
+        this.reviewService = reviewService;
+        this.reviewDetlService = reviewDetlService;
         this.snowflakeIdWorker = snowflakeIdWorker;
         this.userId = userId;
     }
@@ -57,28 +66,42 @@
     public void invoke(ImportReviewDto data, AnalysisContext context) {
         log.info("瑙f瀽鍒扮 {} 鏉℃暟鎹�:{}", ++count, JSON.toJSONString(data));
 
-        // 鑾峰彇鍖呰缁勫彿锛坈olumn1锛�
-        String packNo = data.getColumn1();
-        if (Cools.isEmpty(packNo)) {
-            log.warn("鍖呰缁勫彿涓虹┖锛岃烦杩囪琛岋紒");
+        if (Cools.isEmpty(data.getColumn2())) {
+            log.warn("瑙勬牸鍨嬪彿锛岃烦杩囪琛岋紒");
             return;
         }
 
-        // 濡傛灉宸茬粡澶勭悊杩囪鍖呰缁勫彿锛屽垯璺宠繃
-        if (uniquePackNos.contains(packNo)) {
-            log.info("閲嶅鐨勫寘瑁呯粍鍙凤細{}锛岃烦杩�", packNo);
+        if (Cools.isEmpty(data.getColumn4())) {
+            log.info("閲嶅鐨勫寘瑁呯粍鍙凤細{}锛岃烦杩�", data.getColumn5());
             return;
         }
-
+        if (Cools.isEmpty(data.getColumn7())) {
+            log.info("閲嶅鐨勫寘瑁呯粍鍙凤細{}锛岃烦杩�", data.getColumn7());
+            return;
+        }
         // 棣栨鍑虹幇锛岃褰曞苟澶勭悊
-        uniquePackNos.add(packNo);
-        list.add(data);
+        uniquePackNos.add(data.getColumn1());
 
-        if (context.getCurrentRowNum() == 3) {
+        String time = DateUtils.convert(new Date(), DateUtils.yyyyMMddHHmmss_F);
+        Review review = reviewService.selectOne(new EntityWrapper<Review>().eq("order_no", data.getColumn1()));
+        if (review == null) {
+            review = new Review();
+            review.setUuid(String.valueOf(snowflakeIdWorker.nextId()));
+            review.setOrderNo(data.getColumn1());
+            review.setOrderTime(time);
+            review.setSettle(1L);
+            review.setStatus(1);
+            review.setCreateBy(userId);
+            review.setCreateTime(new Date());
 
-            return;
+            reviewService.insert(review);
+            review = reviewService.selectOne(new EntityWrapper<Review>().eq("order_no", data.getColumn1()));
+        }else {
+            log.info("宸插瓨鍦ㄨ璁㈠崟锛歿}锛�", data.getColumn1());
+            throw new CoolException("璁㈠崟宸插瓨鍦紒");
         }
-
+        data.setOrderId(review.getId());
+        list.add(data);
         if (list.size() >= BATCH_COUNT) {
             saveData();
             list.clear();
@@ -106,47 +129,37 @@
      */
     private void saveData() {
         log.info("{}鏉℃暟鎹紝寮�濮嬪瓨鍌ㄦ暟鎹簱锛�", list.size());
-        log.info("鍗曟嵁鍙凤細{}锛屾暟鎹細{},", orderNo, JSON.toJSONString(list));
+        log.info("鏁版嵁锛歿},", JSON.toJSONString(list));
 
-        List<OrderDetl> orderDetlList = new ArrayList<>();
+        List<ReviewDetl> orderDetlList = new ArrayList<>();
         for (ImportReviewDto importOrderDto : list) {
-            OrderDetl orderDetl = new OrderDetl();
+            ReviewDetl orderDetl = new ReviewDetl();
 
-            if (docTypeId == 24) {
-                orderDetl.setSpecs(String.format("%07d", Integer.parseInt(importOrderDto.getColumn1()))); // 婧愬簱浣�
-                if (importOrderDto.getColumn2() != null) {
-                    orderDetl.setModel(String.format("%07d", Integer.parseInt(importOrderDto.getColumn2()))); // 鐩爣搴撲綅
-                }
-                if (importOrderDto.getColumn3() != null) {
-                    orderDetl.setBeBatch(Integer.parseInt(importOrderDto.getColumn3())); // 宸烽亾
-                }
-            } else {
-                orderDetl.setBrand(importOrderDto.getColumn1());
-                orderDetl.setSupp(importOrderDto.getColumn3());
-                orderDetl.setMemo(importOrderDto.getColumn4());
-            }
+            orderDetl.setOrderNo(importOrderDto.getColumn1());
+            orderDetl.setMatnr(importOrderDto.getColumn2());
+            orderDetl.setMaktx(importOrderDto.getColumn3());
+            orderDetl.setSpecs(importOrderDto.getColumn4());
+            orderDetl.setUnit(importOrderDto.getColumn5());
+            //orderDetl.set(importOrderDto.getColumn6());
+            orderDetl.setBatch(importOrderDto.getColumn7());
+            orderDetl.setModel(importOrderDto.getColumn8());
+            orderDetl.setAnfme(importOrderDto.getColumn9());
+            orderDetl.setDeadTime(importOrderDto.getColumn10());
 
-            orderDetl.setBatch("");
-            orderDetl.setOrderId(orderId);
-            orderDetl.setOrderNo(orderNo);
+            orderDetl.setOrderId(importOrderDto.getOrderId());
             orderDetl.setCreateBy(9527L);
             orderDetl.setCreateTime(new Date());
             orderDetl.setUpdateBy(9527L);
             orderDetl.setUpdateTime(new Date());
             orderDetl.setStatus(1);
-            orderDetl.setQty(0.0D);
-            orderDetl.setAnfme(1.0);
 
             orderDetlList.add(orderDetl);
         }
 
         // 鉁� 鍏抽敭鐐癸細鍒嗘壒鎻愪氦
-        for (int i = 0; i < orderDetlList.size(); i += MAX_BATCH_SIZE) {
-            int end = Math.min(i + MAX_BATCH_SIZE, orderDetlList.size());
-            List<OrderDetl> batch = orderDetlList.subList(i, end);
-            //reviewDetlService.batchDetls(batch);
+        for (ReviewDetl d : orderDetlList) {
+            reviewDetlService.insert(d);
         }
-
         log.info("瀛樺偍鏁版嵁搴撴垚鍔燂紒");
     }
 

--
Gitblit v1.9.1