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 ++++++++++++++++++++++++------------
src/main/java/com/zy/asrs/service/impl/OutStockServiceImpl.java | 8 +++-
src/main/java/com/zy/common/service/erp/ErpService.java | 10 +++--
src/main/java/com/zy/common/service/erp/task/ErpScheduler.java | 16 ++++++-
src/main/java/com/zy/asrs/controller/OutStockController.java | 6 ++
5 files changed, 78 insertions(+), 35 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/OutStockController.java b/src/main/java/com/zy/asrs/controller/OutStockController.java
index b9b6c03..c22a53f 100644
--- a/src/main/java/com/zy/asrs/controller/OutStockController.java
+++ b/src/main/java/com/zy/asrs/controller/OutStockController.java
@@ -19,6 +19,7 @@
import com.zy.asrs.service.WorkService;
import com.zy.asrs.utils.VersionUtils;
import com.zy.common.service.erp.ErpService;
+import com.baomidou.mybatisplus.plugins.Page;
import com.zy.common.service.erp.entity.OutStockBill;
import com.zy.common.service.erp.entity.OutStockBillEntry;
import com.zy.common.web.BaseController;
@@ -66,7 +67,10 @@
public R outStockQueryList(@RequestParam(defaultValue = "1")Integer curr,
@RequestParam(defaultValue = "10")Integer limit,
@RequestParam Map<String, Object> param){
- return R.ok(outStockService.queryOutStock(toPage(curr, limit, param, OutStockBillEntry.class)));
+ Page<OutStockBillEntry> page = outStockService.queryOutStock(toPage(curr, limit, param, OutStockBillEntry.class));
+ log.info("outStock/query/list 鏌ヨ鏉′欢 FBillNo={}, FSourceBillNo={}, curr={}, limit={}, 缁撴灉 total={}, 鏈〉鏉℃暟={}锛堟暟鎹潵婧愶細WMS搴搙tyasrs锛屾潯浠讹細Fflag_finish!=1 涓� FQty>FAmount锛�",
+ param.get("FBillNo"), param.get("FSourceBillNo"), curr, limit, page.getTotal(), page.getRecords() != null ? page.getRecords().size() : 0);
+ return R.ok(page);
}
/**
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);
}
}
diff --git a/src/main/java/com/zy/asrs/service/impl/OutStockServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OutStockServiceImpl.java
index 4cac85d..b3fd738 100644
--- a/src/main/java/com/zy/asrs/service/impl/OutStockServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OutStockServiceImpl.java
@@ -55,8 +55,12 @@
@Override
public Page<OutStockBillEntry> queryOutStock(Page<OutStockBillEntry> page) {
- page.setRecords(baseMapper.queryOutStock(page.getCondition()));
- page.setTotal(baseMapper.queryOutStockCount(page.getCondition()));
+ Map<String, Object> cond = page.getCondition();
+ page.setRecords(baseMapper.queryOutStock(cond));
+ page.setTotal(baseMapper.queryOutStockCount(cond));
+ if (log.isDebugEnabled()) {
+ log.debug("queryOutStock 鏉′欢 FBillNo={}, FSourceBillNo={}, 鏌ヨ缁撴灉 total={}", cond.get("FBillNo"), cond.get("FSourceBillNo"), page.getTotal());
+ }
return page;
}
diff --git a/src/main/java/com/zy/common/service/erp/ErpService.java b/src/main/java/com/zy/common/service/erp/ErpService.java
index 4a27748..e6ec01d 100644
--- a/src/main/java/com/zy/common/service/erp/ErpService.java
+++ b/src/main/java/com/zy/common/service/erp/ErpService.java
@@ -140,8 +140,9 @@
* @return
*/
public List<OutStockBill> syncOutStock() {
- return erpSqlServer.select("SELECT * FROM xtyasrs_dual.dbo.OutStockBill where Fflag_rw=0", OutStockBill.class);
-// return erpSqlServer.select("SELECT * FROM xtyasrs_dual.dbo.OutStockBill where Fflag_rw=0", OutStockBill.class);
+ List<OutStockBill> list = erpSqlServer.select("SELECT * FROM xtyasrs_dual.dbo.OutStockBill where Fflag_rw=0", OutStockBill.class);
+ log.info("outStock鍚屾鏉ユ簮锛欵RP搴搙tyasrs_dual鏈鍑哄簱鍗曟暟={}", list != null ? list.size() : 0);
+ return list;
}
/**
@@ -165,9 +166,10 @@
* @return
*/
public List<OutStockBillEntry> syncOutStockDetail(Integer FInterID) {
-// String sql = "SELECT * FROM xtyasrs_dual.dbo.OutStockBillEntry where FSourceBillNo!='' and FAuxCommitQty=0 and FInterID=" + FInterID;
String sql = "SELECT * FROM xtyasrs_dual.dbo.OutStockBillEntry where FAuxCommitQty=0 and FInterID=" + FInterID;
- return erpSqlServer.select(sql, OutStockBillEntry.class);
+ List<OutStockBillEntry> list = erpSqlServer.select(sql, OutStockBillEntry.class);
+ log.info("outStock鍚屾鏉ユ簮锛欵RP鍑哄簱鏄庣粏 FInterID={}, 鏉℃暟={}", FInterID, list != null ? list.size() : 0);
+ return list;
}
/**
diff --git a/src/main/java/com/zy/common/service/erp/task/ErpScheduler.java b/src/main/java/com/zy/common/service/erp/task/ErpScheduler.java
index a1c7963..5975b76 100644
--- a/src/main/java/com/zy/common/service/erp/task/ErpScheduler.java
+++ b/src/main/java/com/zy/common/service/erp/task/ErpScheduler.java
@@ -231,13 +231,17 @@
@Transactional
public void syncOutStock(){
List<OutStockBill> outStockBills = erpService.syncOutStock();
+ log.info("鍑哄簱鍚屾寮�濮嬶紝ERP鏈鍗曟暟={}", outStockBills != null ? outStockBills.size() : 0);
+ if (outStockBills == null || outStockBills.isEmpty()) {
+ return;
+ }
for (Integer i = 0; i < outStockBills.size(); i++) {
OutStockBill outStockBill = outStockBills.get(i);
//鍚屼竴鍗曞彿瀛樺湪鐩稿悓鐗╂枡缂栫爜鏁版嵁锛岃鍗曞彿涓嶄簣澶勭悊
Number fnumberCount = erpService.QueryFnumberOutCount(outStockBill.getFInterID());
if(fnumberCount.intValue() > 1){
- log.info("鍑哄簱閫氱煡鍗曞瓨鍦ㄧ墿鏂欑浉鍚屾暟鎹甗FBillNo={},FInterID={},]", outStockBill.getFBillNo(), outStockBill.getFInterID());
+ log.info("鍑哄簱鍚屾璺宠繃锛氬悓涓�鍗曞彿瀛樺湪鐩稿悓鐗╂枡[FBillNo={},FInterID={}]锛屼笉浜堝悓姝�", outStockBill.getFBillNo(), outStockBill.getFInterID());
if (!erpService.haveReadOutBill(outStockBill.getFBillNo(),outStockBill.getFInterID(),-1)) {
log.error("鏇存柊鍑哄簱閫氱煡鍗曡鍙栫姸鎬佷负-1澶辫触[FBrNo={},FInterID={}]", outStockBill.getFBrNo(),outStockBill.getFInterID());
}
@@ -246,12 +250,17 @@
OutStockBill main = outStockMainService.selectOne(new EntityWrapper<OutStockBill>().eq("FBillNo",outStockBill.getFBillNo()).and().eq("FInterID", outStockBill.getFInterID()));
if (null == main) {
+ log.info("鍑哄簱鍚屾鏂板崟锛欶BillNo={}, FInterID={}锛屼粠ERP鍚屾鍒癢MS", outStockBill.getFBillNo(), outStockBill.getFInterID());
outStockBill.setFflag_rw(1);
if (!outStockMainService.insert(outStockBill)) {
- log.info("鍚屾鍑哄簱閫氱煡涓昏〃OutStockBill澶辫触");
+ log.error("鍑哄簱鍚屾澶辫触锛氬悓姝ュ嚭搴撻�氱煡涓昏〃OutStockBill澶辫触[FBillNo={},FInterID={}]", outStockBill.getFBillNo(), outStockBill.getFInterID());
exceptionHandle("鍚屾鍑哄簱閫氱煡涓昏〃OutStockBill澶辫触[FBillNo={0},FInterID={1}]",outStockBill.getFBillNo(),outStockBill.getFInterID());
};
List<OutStockBillEntry> outStockBillEntries = erpService.syncOutStockDetail(outStockBill.getFInterID());
+ if (outStockBillEntries == null || outStockBillEntries.isEmpty()) {
+ log.warn("鍑哄簱鍚屾锛欵RP璇ュ崟鏄庣粏鏁颁负0锛孎BillNo={}, FInterID={}锛堝彲鑳紼RP鏉′欢FAuxCommitQty=0鏃犳暟鎹級", outStockBill.getFBillNo(), outStockBill.getFInterID());
+ }
+ if (outStockBillEntries != null) {
for (Integer j = 0; j < outStockBillEntries.size(); j++) {
OutStockBillEntry outStockBillEntry = outStockBillEntries.get(j);
Wrapper<OutStockBillEntry> wrapper = new EntityWrapper<OutStockBillEntry>().eq("FInterID", outStockBillEntry.getFInterID()).
@@ -286,8 +295,9 @@
}
}
}
+ }
} else {
-
+ log.debug("鍑哄簱鍚屾锛歐MS宸插瓨鍦ㄨ鍗曪紝璺宠繃鍚屾鏄庣粏 FBillNo={}, FInterID={}", outStockBill.getFBillNo(), outStockBill.getFInterID());
}
if (!erpService.haveReadOutBill(outStockBill.getFBillNo(),outStockBill.getFInterID(),1)) {
--
Gitblit v1.9.1