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