From b47369fbc73269f0661ba169c6387e04fb037e87 Mon Sep 17 00:00:00 2001
From: cl <1442464845@qq.com>
Date: 星期一, 16 三月 2026 14:26:23 +0800
Subject: [PATCH] 发货通知单打印日志
---
src/main/java/com/zy/asrs/controller/SaleOrderController.java | 73 ++++++++++++++++++++++++------------
1 files changed, 48 insertions(+), 25 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/SaleOrderController.java b/src/main/java/com/zy/asrs/controller/SaleOrderController.java
index b979bd3..a0e80fc 100644
--- a/src/main/java/com/zy/asrs/controller/SaleOrderController.java
+++ b/src/main/java/com/zy/asrs/controller/SaleOrderController.java
@@ -21,6 +21,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DeadlockLoserDataAccessException;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@@ -361,38 +362,60 @@
return Math.abs(d1 - d2) < 0.0001;
}
+ /** 姝婚攣閲嶈瘯娆℃暟 */
+ private static final int CUST_WAIT_PAKIN_DEADLOCK_RETRIES = 2;
+ /** 姝婚攣閲嶈瘯闂撮殧锛堟绉掞級 */
+ private static final int CUST_WAIT_PAKIN_RETRY_DELAY_MS = 80;
+
/**
* 閿�鍞鍗曟暟閲忔洿鏂板悗锛岄『甯︽洿鏂� cust_wait_pakin 鐨� anfme/nqty锛坢obile/bill/query 鐨� count 鍙栬嚜 anfme锛夈��
* 浠呮寜 matnr+mnemonic 鏇存柊锛屼笉鎻掑叆锛涙棤鍖归厤鎴栧紓甯镐笉褰卞搷涓绘祦绋嬨��
+ * 鍙戠敓姝婚攣鏃惰嚜鍔ㄩ噸璇曪紝鍑忓皯骞跺彂鏇存柊瀵艰嚧鐨勬閿佺壓鐗层��
*/
private void updateWaitPakinQuantity(Map<String, Object> data) {
- try {
- String invCode = data.get("invCode") != null ? String.valueOf(data.get("invCode")).trim() : null;
- String orderCode = data.get("orderCode") != null ? String.valueOf(data.get("orderCode")).trim() : null;
- if (Cools.isEmpty(invCode) || Cools.isEmpty(orderCode)) {
- logger.debug("cust_wait_pakin 璺宠繃鏇存柊锛氳鍗曞彿鎴栫墿鏂欑紪鐮佷负绌猴紝orderCode={}锛宨nvCode={}", orderCode, invCode);
+ String invCode = data.get("invCode") != null ? String.valueOf(data.get("invCode")).trim() : null;
+ String orderCode = data.get("orderCode") != null ? String.valueOf(data.get("orderCode")).trim() : null;
+ if (Cools.isEmpty(invCode) || Cools.isEmpty(orderCode)) {
+ logger.debug("cust_wait_pakin 璺宠繃鏇存柊锛氳鍗曞彿鎴栫墿鏂欑紪鐮佷负绌猴紝orderCode={}锛宨nvCode={}", orderCode, invCode);
+ return;
+ }
+ Double productQty = parseDoubleSafely(data.get("productQty"));
+ if (productQty == null) {
+ productQty = parseDoubleSafely(data.get("orderQty"));
+ }
+ logger.info("cust_wait_pakin 寮�濮嬫洿鏂帮細璁㈠崟鍙�={}锛岀墿鏂欑紪鐮�={}锛屾暟閲�={}", orderCode, invCode, productQty);
+ String invName = data.get("invName") != null ? String.valueOf(data.get("invName")) : null;
+ WaitPakin updateEntity = new WaitPakin();
+ updateEntity.setMaktx(invName);
+ updateEntity.setAnfme(productQty);
+ updateEntity.setNqty(productQty);
+ updateEntity.setModiTime(new Date());
+ Wrapper<WaitPakin> wrapper = new EntityWrapper<WaitPakin>().eq("matnr", invCode).eq("mnemonic", orderCode);
+
+ for (int attempt = 0; attempt <= CUST_WAIT_PAKIN_DEADLOCK_RETRIES; attempt++) {
+ try {
+ boolean updated = waitPakinService.update(updateEntity, wrapper);
+ if (updated) {
+ logger.info("cust_wait_pakin 鏇存柊鎴愬姛锛氳鍗曞彿={}锛岀墿鏂欑紪鐮�={}锛屾暟閲�={}", orderCode, invCode, productQty);
+ } else {
+ logger.warn("cust_wait_pakin 鏇存柊鏈奖鍝嶈锛堝彲鑳芥棤鍖归厤璁板綍锛夛細璁㈠崟鍙�={}锛岀墿鏂欑紪鐮�={}", orderCode, invCode);
+ }
+ return;
+ } catch (Exception e) {
+ if (e instanceof DeadlockLoserDataAccessException || (e.getCause() != null && e.getCause().getClass().getSimpleName().contains("Deadlock"))) {
+ if (attempt < CUST_WAIT_PAKIN_DEADLOCK_RETRIES) {
+ try {
+ Thread.sleep(CUST_WAIT_PAKIN_RETRY_DELAY_MS);
+ } catch (InterruptedException ie) {
+ Thread.currentThread().interrupt();
+ }
+ logger.warn("cust_wait_pakin 鏇存柊姝婚攣锛岀{}娆¢噸璇曪細璁㈠崟鍙�={}锛岀墿鏂欑紪鐮�={}", attempt + 1, orderCode, invCode);
+ continue;
+ }
+ }
+ logger.error("cust_wait_pakin 鏇存柊寮傚父锛歰rderCode={}锛宨nvCode={}锛宔rror={}", data.get("orderCode"), data.get("invCode"), e.getMessage(), e);
return;
}
- Double productQty = parseDoubleSafely(data.get("productQty"));
- if (productQty == null) {
- productQty = parseDoubleSafely(data.get("orderQty"));
- }
- logger.info("cust_wait_pakin 寮�濮嬫洿鏂帮細璁㈠崟鍙�={}锛岀墿鏂欑紪鐮�={}锛屾暟閲�={}", orderCode, invCode, productQty);
- String invName = data.get("invName") != null ? String.valueOf(data.get("invName")) : null;
- WaitPakin updateEntity = new WaitPakin();
- updateEntity.setMaktx(invName);
- updateEntity.setAnfme(productQty);
- updateEntity.setNqty(productQty);
- updateEntity.setModiTime(new Date());
- Wrapper<WaitPakin> wrapper = new EntityWrapper<WaitPakin>().eq("matnr", invCode).eq("mnemonic", orderCode);
- boolean updated = waitPakinService.update(updateEntity, wrapper);
- if (updated) {
- logger.info("cust_wait_pakin 鏇存柊鎴愬姛锛氳鍗曞彿={}锛岀墿鏂欑紪鐮�={}锛屾暟閲�={}", orderCode, invCode, productQty);
- } else {
- logger.warn("cust_wait_pakin 鏇存柊鏈奖鍝嶈锛堝彲鑳芥棤鍖归厤璁板綍锛夛細璁㈠崟鍙�={}锛岀墿鏂欑紪鐮�={}", orderCode, invCode);
- }
- } catch (Exception e) {
- logger.error("cust_wait_pakin 鏇存柊寮傚父锛歰rderCode={}锛宨nvCode={}锛宔rror={}", data.get("orderCode"), data.get("invCode"), e.getMessage(), e);
}
}
--
Gitblit v1.9.1