From 756fa60cebfb82ba824e87d080d44fc9ec34ecc8 Mon Sep 17 00:00:00 2001
From: Administrator <335182714>
Date: 星期二, 02 九月 2025 14:01:09 +0800
Subject: [PATCH] 订单出库显示明细是否完成修复
---
src/main/java/com/zy/asrs/importexcle/ImportOrderListener.java | 112 ++++++++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 89 insertions(+), 23 deletions(-)
diff --git a/src/main/java/com/zy/asrs/importexcle/ImportOrderListener.java b/src/main/java/com/zy/asrs/importexcle/ImportOrderListener.java
index 3ae6405..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() == 5) {
- String time = DateUtils.convert(new Date(),DateUtils.yyyyMMddHHmmss_F);
- Order order2 = orderService.selectByNo(list.get(0).getColumn2()); // 璁㈠崟鍙�
- if(order2 != null) {
+
+ if (context.getCurrentRowNum() == 3) {
+ 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,13 +114,12 @@
return;
}
- // 杈惧埌BATCH_COUNT浜嗭紝闇�瑕佸幓瀛樺偍涓�娆℃暟鎹簱锛岄槻姝㈡暟鎹嚑涓囨潯鏁版嵁鍦ㄥ唴瀛橈紝瀹规槗OOM
if (list.size() >= BATCH_COUNT) {
saveData();
- // 瀛樺偍瀹屾垚娓呯悊 list
list.clear();
}
}
+
/**
* 鎵�鏈夋暟鎹В鏋愬畬鎴愪簡 閮戒細鏉ヨ皟鐢�
@@ -119,26 +133,69 @@
log.info("鎵�鏈夋暟鎹В鏋愬畬鎴愶紒");
}
+// /**
+// * 鍔犱笂瀛樺偍鏁版嵁搴�
+// */
+// private void saveData() {
+// log.info("{}鏉℃暟鎹紝寮�濮嬪瓨鍌ㄦ暟鎹簱锛�", list.size());
+// log.info("鍗曟嵁鍙凤細{}锛屾暟鎹細{},",orderNo, JSON.toJSONString(list));
+// List<OrderDetl> orderDetlList = new ArrayList<>();
+// list.forEach(importOrderDto -> {
+// OrderDetl orderDetl = new OrderDetl();
+// 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.setBatch("");
+// orderDetl.setOrderId(orderId);
+// orderDetl.setOrderNo(orderNo);
+// 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);
+// });
+// orderDetlMapper.batchDetls(orderDetlList);
+//
+// log.info("瀛樺偍鏁版嵁搴撴垚鍔燂紒");
+// }
+private static final int MAX_BATCH_SIZE = 50; // 寤鸿 100~200锛屾牴鎹瓧娈垫暟鎺у埗
+
/**
- * 鍔犱笂瀛樺偍鏁版嵁搴�
+ * 鍒嗘壒瀛樺偍鏁版嵁搴擄紝閬垮厤SQL Server鍙傛暟涓婇檺锛�2100锛夐敊璇�
*/
private void saveData() {
log.info("{}鏉℃暟鎹紝寮�濮嬪瓨鍌ㄦ暟鎹簱锛�", list.size());
- log.info("鍗曟嵁鍙凤細{}锛屾暟鎹細{},",orderNo, JSON.toJSONString(list));
+ log.info("鍗曟嵁鍙凤細{}锛屾暟鎹細{},", orderNo, JSON.toJSONString(list));
+
List<OrderDetl> orderDetlList = new ArrayList<>();
- list.forEach(importOrderDto -> {
+ for (ImportOrderDto importOrderDto : list) {
OrderDetl orderDetl = new OrderDetl();
+
if (docTypeId == 24) {
- orderDetl.setSpecs(String.format("%07d",Integer.parseInt(importOrderDto.getColumn1()))); // 婧愬簱浣�
+ orderDetl.setSpecs(String.format("%07d", Integer.parseInt(importOrderDto.getColumn1()))); // 婧愬簱浣�
if (importOrderDto.getColumn2() != null) {
- orderDetl.setModel(String.format("%07d",Integer.parseInt(importOrderDto.getColumn2()))); // 鐩爣搴撲綅
+ orderDetl.setModel(String.format("%07d", Integer.parseInt(importOrderDto.getColumn2()))); // 鐩爣搴撲綅
}
if (importOrderDto.getColumn3() != null) {
- orderDetl.setBeBatch(Integer.parseInt(importOrderDto.getColumn3())); //宸烽亾
+ orderDetl.setBeBatch(Integer.parseInt(importOrderDto.getColumn3())); // 宸烽亾
}
} else {
orderDetl.setBrand(importOrderDto.getColumn1());
+ orderDetl.setSupp(importOrderDto.getColumn3());
+ orderDetl.setMemo(importOrderDto.getColumn4());
}
+
orderDetl.setBatch("");
orderDetl.setOrderId(orderId);
orderDetl.setOrderNo(orderNo);
@@ -149,12 +206,21 @@
orderDetl.setStatus(1);
orderDetl.setQty(0.0D);
orderDetl.setAnfme(1.0);
+
orderDetlList.add(orderDetl);
- });
- orderDetlMapper.batchDetls(orderDetlList);
+ }
+
+ // 鉁� 鍏抽敭鐐癸細鍒嗘壒鎻愪氦
+ 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);
+ orderDetlMapper.batchDetls(batch);
+ }
log.info("瀛樺偍鏁版嵁搴撴垚鍔燂紒");
}
+
+
/**
*瑙f瀽鍑虹幇閿欒浼氳繘鍏ヨ鏂规硶 鍏蜂綋鐪嬫簮浠g爜鎴栨枃妗�
*/
--
Gitblit v1.9.1