From 691bee4229856f8bf81c2720092ecee1c9f21509 Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期四, 09 四月 2026 19:18:12 +0800
Subject: [PATCH] #getter$摘出entity
---
rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AsnOrderPressureSchedules.java | 201 ++++++++++++++++++++++++-------------------------
1 files changed, 99 insertions(+), 102 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..7d4818e 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
@@ -2,11 +2,11 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.vincent.rsf.framework.exception.CoolException;
+import com.vincent.rsf.server.manager.entity.AsnOrderItemLog;
+import com.vincent.rsf.server.manager.entity.AsnOrderLog;
import com.vincent.rsf.server.manager.entity.Matnr;
-import com.vincent.rsf.server.manager.entity.WkOrder;
-import com.vincent.rsf.server.manager.entity.WkOrderItem;
-import com.vincent.rsf.server.manager.service.AsnOrderItemService;
-import com.vincent.rsf.server.manager.service.AsnOrderService;
+import com.vincent.rsf.server.manager.service.AsnOrderItemLogService;
+import com.vincent.rsf.server.manager.service.AsnOrderLogService;
import com.vincent.rsf.server.manager.service.MatnrService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@@ -22,7 +22,10 @@
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicBoolean;
/**
* ASN 鍗曟嵁鍘嬫祴鏁版嵁瀹氭椂鐢熸垚鍣ㄣ��
@@ -37,11 +40,12 @@
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;
+ private AsnOrderLogService asnOrderLogService;
@Autowired
- private AsnOrderItemService asnOrderItemService;
+ private AsnOrderItemLogService asnOrderItemLogService;
@Autowired
private MatnrService matnrService;
@@ -59,48 +63,66 @@
@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<AsnOrderLog> orders = new ArrayList<>(orderCountPerRun);
+ for (int i = 0; i < orderCountPerRun; i++) {
+ orders.add(buildOrder(now, nowTime, totalQty, i));
+ }
+ if (!asnOrderLogService.saveBatch(orders, 200)) {
+ throw new CoolException("ASN鍘嬫祴涓诲崟鎻掑叆澶辫触");
+ }
+
+ List<AsnOrderLog> persistedOrders = asnOrderLogService.list(new LambdaQueryWrapper<AsnOrderLog>()
+ .in(AsnOrderLog::getCode, extractOrderCodes(orders)));
+ Map<String, AsnOrderLog> orderMap = new HashMap<>(persistedOrders.size());
+ for (AsnOrderLog order : persistedOrders) {
+ orderMap.put(order.getCode(), order);
+ }
+
+ List<AsnOrderItemLog> items = new ArrayList<>(orderCountPerRun * itemCountPerOrder);
+ for (int orderIndex = 0; orderIndex < orders.size(); orderIndex++) {
+ AsnOrderLog order = orderMap.get(orders.get(orderIndex).getCode());
+ if (order == null) {
+ throw new CoolException("ASN鍘嬫祴涓诲崟鍥炴煡澶辫触");
+ }
+ 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 (!asnOrderItemLogService.saveBatch(items, 500)) {
+ throw new CoolException("ASN鍘嬫祴鏄庣粏鎻掑叆澶辫触");
+ }
+
+ log.info("ASN鍘嬫祴浠诲姟鎵ц瀹屾垚锛屾湰娆℃彃鍏ヤ富鍗� {} 鏉★紝鏄庣粏 {} 鏉�", orders.size(), items.size());
+ } finally {
+ running.set(false);
+ }
}
private List<Matnr> loadMatnrs() {
@@ -116,89 +138,69 @@
.last("limit " + needCount));
}
- private WkOrder buildOrder(Date now, LocalDateTime nowTime, double totalQty, int sequence) {
+ private List<String> extractOrderCodes(List<AsnOrderLog> orders) {
+ List<String> codes = new ArrayList<>(orders.size());
+ for (AsnOrderLog order : orders) {
+ codes.add(order.getCode());
+ }
+ return codes;
+ }
+
+ private AsnOrderLog buildOrder(Date now, LocalDateTime nowTime, double totalQty, int sequence) {
String suffix = String.format("%04d", sequence + 1);
String code = "erp" + nowTime.format(ORDER_CODE_FORMATTER) + suffix;
long serialNo = System.currentTimeMillis() * 1000 + sequence;
- return new WkOrder()
- .setCode(code)
- .setPoCode(code)
- .setPoId(serialNo)
- .setType(ORDER_TYPE)
- .setWkType(ORDER_WORK_TYPE)
- .setAnfme(totalQty)
- .setQty(totalQty)
- .setWorkQty(0.0)
- .setCheckType(0)
- .setRleStatus((short) 0)
- .setNtyStatus(0)
- .setExceStatus((short) 4)
- .setStatus(1)
- .setDeleted(0)
- .setTenantId(TENANT_ID)
- .setCreateBy(USER_ID)
- .setCreateTime(now)
- .setUpdateBy(USER_ID)
- .setUpdateTime(now)
- .setMemo(MEMO)
- .setReportOnce(4)
- .setBusinessTime(now)
- .setStationId("1215")
- .setOrderInternalCode(String.valueOf(serialNo))
- .setStockDirect("stockDirect")
- .setCustomerId("custom1")
- .setCustomerName("瀹㈡埛1")
- .setSupplierId("gongys1")
- .setSupplierName("渚涘簲鍟�1")
- .setStockOrgId("stockYH")
- .setStockOrgName("娴欐睙閾舵箹绠卞寘鏈夐檺鍏徃浠撳簱")
- .setPurchaseOrgId("yhcaigou")
- .setPurchaseOrgName("娴欐睙閾舵箹绠卞寘鏈夐檺鍏徃閲囪喘")
- .setPurchaseUserId("caigouyuan1")
- .setPurchaseUserName("閲囪喘鍛�1")
- .setPrdOrgId("prdYH")
- .setPrdOrgName("娴欐睙閾舵箹绠卞寘鏈夐檺鍏徃")
- .setSaleOrgId("sale1")
- .setSaleOrgName("鐢熶骇缁�1")
- .setSaleUserId("shengchanyuan1")
- .setSaleUserName("鐢熶骇鍛�1")
- .setVersion(0);
+ AsnOrderLog order = new AsnOrderLog();
+ order.setCode(code);
+ order.setPoCode(code);
+ order.setPoId(serialNo);
+ order.setType(ORDER_TYPE);
+ order.setWkType(ORDER_WORK_TYPE);
+ order.setAnfme(totalQty);
+ order.setQty(totalQty);
+ order.setRleStatus((short) 0);
+ order.setNtyStatus((short) 0);
+ order.setExceStatus((short) 4);
+ order.setStatus(1);
+ order.setDeleted(0);
+ order.setTenantId(TENANT_ID);
+ order.setCreateBy(USER_ID);
+ order.setCreateTime(now);
+ order.setUpdateBy(USER_ID);
+ order.setUpdateTime(now);
+ order.setMemo(MEMO);
+ return order;
}
- private WkOrderItem buildOrderItem(WkOrder order, Matnr matnr, Date now, int orderIndex, int itemIndex) {
+ private AsnOrderItemLog buildOrderItem(AsnOrderLog order, Matnr matnr, Date now, int orderIndex, int itemIndex) {
String stockUnit = StringUtils.firstNonBlank(matnr.getStockUnit(), matnr.getPurUnit(), matnr.getUnit(), matnr.getBaseUnit());
String purUnit = StringUtils.firstNonBlank(matnr.getPurUnit(), matnr.getUnit(), matnr.getStockUnit(), matnr.getBaseUnit());
- String baseUnit = StringUtils.firstNonBlank(matnr.getBaseUnit(), matnr.getUnit(), matnr.getStockUnit(), matnr.getPurUnit());
String batchCode = "B" + new SimpleDateFormat("yyyyMMddHHmmss").format(now)
+ String.format("%02d%02d", orderIndex + 1, itemIndex + 1);
String trackCode = "T" + System.currentTimeMillis() + String.format("%02d%02d", orderIndex + 1, itemIndex + 1);
- return new WkOrderItem()
- .setOrderId(order.getId())
- .setOrderCode(order.getCode())
+ return new AsnOrderItemLog()
+ .setLogId(order.getId())
+ .setAsnId(order.getAsnId())
+ .setAsnCode(order.getCode())
.setPlatItemId("M" + (itemIndex + 1))
.setPoCode(order.getPoCode())
.setFieldsIndex(matnr.getFieldsIndex())
.setMatnrId(matnr.getId())
.setMatnrCode(matnr.getCode())
.setMaktx(matnr.getName())
- .setSpec(matnr.getSpec())
- .setModel(matnr.getModel())
.setAnfme(itemQty)
- .setWorkQty(0.0)
.setPurQty(itemQty)
.setQty(itemQty)
.setStockUnit(stockUnit)
.setPurUnit(purUnit)
- .setBatch(batchCode)
.setSplrBatch(batchCode)
.setSplrCode("gongys1")
.setSplrName("渚涘簲鍟�1")
.setTrackCode(trackCode)
.setBarcode(trackCode)
- .setProdTime(new SimpleDateFormat("yyyy-MM-dd").format(now))
- .setNtyStatus(0)
+ .setNtyStatus((short) 0)
.setStatus(1)
.setDeleted(0)
.setTenantId(TENANT_ID)
@@ -206,11 +208,6 @@
.setCreateTime(now)
.setUpdateBy(USER_ID)
.setUpdateTime(now)
- .setMemo(MEMO)
- .setBaseUnit(baseUnit)
- .setUseOrgId(matnr.getUseOrgId())
- .setUseOrgName(matnr.getUseOrgName())
- .setErpClsId(matnr.getErpClsId())
- .setPriceUnitId(baseUnit);
+ .setMemo(MEMO);
}
}
--
Gitblit v1.9.1