From 480d4f9f5c31d8169d449241b1efea9936eb238f Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期三, 08 四月 2026 09:13:33 +0800
Subject: [PATCH] #
---
rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AsnOrderPressureSchedules.java | 80 ++++++++++++++++++++++-----------------
1 files changed, 45 insertions(+), 35 deletions(-)
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AsnOrderPressureSchedules.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AsnOrderPressureSchedules.java
index 8c187c6..2262b15 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AsnOrderPressureSchedules.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AsnOrderPressureSchedules.java
@@ -23,6 +23,7 @@
import java.util.Collections;
import java.util.Date;
import java.util.List;
+import java.util.concurrent.atomic.AtomicBoolean;
/**
* ASN 鍗曟嵁鍘嬫祴鏁版嵁瀹氭椂鐢熸垚鍣ㄣ��
@@ -37,6 +38,7 @@
private static final Integer TENANT_ID = 1;
private static final Long USER_ID = 51L;
private static final String MEMO = "ASN_PRESSURE_TEST";
+ private final AtomicBoolean running = new AtomicBoolean(false);
@Autowired
private AsnOrderService asnOrderService;
@@ -59,48 +61,56 @@
@Scheduled(cron = "${pressure.asn-order.cron:0/10 * * * * ?}")
@Transactional(rollbackFor = Exception.class)
- public synchronized void insertPressureOrders() {
+ public void insertPressureOrders() {
if (!enabled) {
return;
}
- if (orderCountPerRun <= 0 || itemCountPerOrder <= 0 || itemQty <= 0) {
- log.warn("ASN鍘嬫祴浠诲姟閰嶇疆鏃犳晥锛岃烦杩囨墽琛�: orderCountPerRun={}, itemCountPerOrder={}, itemQty={}",
- orderCountPerRun, itemCountPerOrder, itemQty);
+ if (!running.compareAndSet(false, true)) {
+ log.warn("ASN鍘嬫祴浠诲姟浠嶅湪鎵ц涓紝鏈疆璺宠繃");
return;
}
-
- List<Matnr> matnrs = loadMatnrs();
- if (matnrs.isEmpty()) {
- log.warn("ASN鍘嬫祴浠诲姟鏈幏鍙栧埌鍙敤鐗╂枡锛岃烦杩囨墽琛�");
- return;
- }
- Collections.shuffle(matnrs);
-
- Date now = new Date();
- LocalDateTime nowTime = LocalDateTime.now();
- double totalQty = itemCountPerOrder * itemQty;
-
- List<WkOrder> orders = new ArrayList<>(orderCountPerRun);
- for (int i = 0; i < orderCountPerRun; i++) {
- orders.add(buildOrder(now, nowTime, totalQty, i));
- }
- if (!asnOrderService.saveBatch(orders, 200)) {
- throw new CoolException("ASN鍘嬫祴涓诲崟鎻掑叆澶辫触");
- }
-
- List<WkOrderItem> items = new ArrayList<>(orderCountPerRun * itemCountPerOrder);
- for (int orderIndex = 0; orderIndex < orders.size(); orderIndex++) {
- WkOrder order = orders.get(orderIndex);
- for (int itemIndex = 0; itemIndex < itemCountPerOrder; itemIndex++) {
- Matnr matnr = matnrs.get((orderIndex * itemCountPerOrder + itemIndex) % matnrs.size());
- items.add(buildOrderItem(order, matnr, now, orderIndex, itemIndex));
+ try {
+ if (orderCountPerRun <= 0 || itemCountPerOrder <= 0 || itemQty <= 0) {
+ log.warn("ASN鍘嬫祴浠诲姟閰嶇疆鏃犳晥锛岃烦杩囨墽琛�: orderCountPerRun={}, itemCountPerOrder={}, itemQty={}",
+ orderCountPerRun, itemCountPerOrder, itemQty);
+ return;
}
- }
- if (!asnOrderItemService.saveBatch(items, 500)) {
- throw new CoolException("ASN鍘嬫祴鏄庣粏鎻掑叆澶辫触");
- }
- log.info("ASN鍘嬫祴浠诲姟鎵ц瀹屾垚锛屾湰娆℃彃鍏ヤ富鍗� {} 鏉★紝鏄庣粏 {} 鏉�", orders.size(), items.size());
+ List<Matnr> matnrs = loadMatnrs();
+ if (matnrs.isEmpty()) {
+ log.warn("ASN鍘嬫祴浠诲姟鏈幏鍙栧埌鍙敤鐗╂枡锛岃烦杩囨墽琛�");
+ return;
+ }
+ Collections.shuffle(matnrs);
+
+ Date now = new Date();
+ LocalDateTime nowTime = LocalDateTime.now();
+ double totalQty = itemCountPerOrder * itemQty;
+
+ List<WkOrder> orders = new ArrayList<>(orderCountPerRun);
+ for (int i = 0; i < orderCountPerRun; i++) {
+ orders.add(buildOrder(now, nowTime, totalQty, i));
+ }
+ if (!asnOrderService.saveBatch(orders, 200)) {
+ throw new CoolException("ASN鍘嬫祴涓诲崟鎻掑叆澶辫触");
+ }
+
+ List<WkOrderItem> items = new ArrayList<>(orderCountPerRun * itemCountPerOrder);
+ for (int orderIndex = 0; orderIndex < orders.size(); orderIndex++) {
+ WkOrder order = orders.get(orderIndex);
+ for (int itemIndex = 0; itemIndex < itemCountPerOrder; itemIndex++) {
+ Matnr matnr = matnrs.get((orderIndex * itemCountPerOrder + itemIndex) % matnrs.size());
+ items.add(buildOrderItem(order, matnr, now, orderIndex, itemIndex));
+ }
+ }
+ if (!asnOrderItemService.saveBatch(items, 500)) {
+ throw new CoolException("ASN鍘嬫祴鏄庣粏鎻掑叆澶辫触");
+ }
+
+ log.info("ASN鍘嬫祴浠诲姟鎵ц瀹屾垚锛屾湰娆℃彃鍏ヤ富鍗� {} 鏉★紝鏄庣粏 {} 鏉�", orders.size(), items.size());
+ } finally {
+ running.set(false);
+ }
}
private List<Matnr> loadMatnrs() {
--
Gitblit v1.9.1