From a1dd6ff24f7cae0b529ad313ba07351c07965605 Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期一, 03 十一月 2025 13:04:09 +0800
Subject: [PATCH] 管控线边仓库存
---
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java | 93 +++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 90 insertions(+), 3 deletions(-)
diff --git a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
index f5fb2df..b8b09db 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -2,18 +2,22 @@
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
+import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
import com.zy.asrs.service.*;
import com.zy.asrs.task.AbstractHandler;
import com.zy.asrs.task.core.ReturnT;
+import com.zy.asrs.utils.SaasUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
+import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
+import java.util.Objects;
/**
* Created by vincent on 2020/7/4
@@ -35,6 +39,15 @@
private WaitPakinService waitPakinService;
@Autowired
private OrderDetlService orderDetlService;
+
+ @Resource
+ private OrderService orderService;
+
+ @Resource
+ private ManLocDetlService manLocDetlService;
+
+ @Resource
+ private NodeService nodeService;
public ReturnT<String> start(WrkMast wrkMast) {
// 4.鍏ュ簱瀹屾垚
@@ -116,14 +129,39 @@
// 鏇存柊璁㈠崟瀹屾垚鏁伴噺
OrderDetl orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch());
+ if (orderDetl==null){
+ orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), null);
+ }
try {
if(!Cools.isEmpty(orderDetl)){
if(!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
- wrkDetl.getBatch(),wrkDetl.getAnfme())){
+ orderDetl.getBatch(),wrkDetl.getAnfme())){
// exceptionHandle("鍏ㄦ澘鍏ュ簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触锛沎workNo={0}],[locNo={1}]",
// wrkMast.getWrkNo(), wrkMast.getLocNo());
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return FAIL.setMsg("鍏ㄦ澘鍏ュ簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+ } else {
+ // 鎻掑叆璋冩嫧鍏ュ簱鍗曞搴旂嚎杈逛粨鍑哄簱璁板綍
+ Order order = orderService.selectByNo(orderDetl.getOrderNo());
+ if (order.getDocType$().equals("璋冩嫧鍏ュ簱鍗�")) {
+ String locNo = orderDetl.getSupp();
+ ManLocDetl locDetl2 = manLocDetlService.selectOne(new EntityWrapper<ManLocDetl>().eq("loc_no", locNo).eq("matnr", wrkDetl.getMatnr()).eq("batch", wrkDetl.getBatch()));
+ if (locDetl2 == null) { // 绾胯竟搴撴棤姝ゅ簱瀛�
+ log.warn("璋冩嫧鍏ュ簱鍗曞搴旂嚎杈瑰簱搴撳瓨鏃狅細{locNo:{},matnr:{},batch:{}}", locNo, wrkDetl.getMatnr(), wrkDetl.getBatch());
+ } else if (locDetl2.getAnfme() < wrkDetl.getAnfme()) { // 绾胯竟搴撴搴撳瓨涓嶅
+ manLocDetlService.delete(new EntityWrapper<ManLocDetl>().eq("loc_no", locNo).eq("matnr", wrkDetl.getMatnr()).eq("batch", wrkDetl.getBatch()));
+ log.warn("璋冩嫧鍏ュ簱鍗曞搴旂嚎杈瑰簱搴撳瓨涓嶈冻锛歿locNo:{},matnr:{},batch:{},locAnfme:{},wrkAnfme:{}}", locNo, wrkDetl.getMatnr(), wrkDetl.getBatch(), locDetl2.getAnfme(), wrkDetl.getAnfme());
+ } else if (Objects.equals(locDetl2.getAnfme(), wrkDetl.getAnfme())) { // 鍒犻櫎璇ョ墿鏂欑嚎杈瑰簱搴撳瓨鏁版嵁
+ manLocDetlService.delete(new EntityWrapper<ManLocDetl>().eq("loc_no", locNo).eq("matnr", wrkDetl.getMatnr()).eq("batch", wrkDetl.getBatch()));
+ } else { // 鏇存柊璇ョ墿鏂欑嚎杈瑰簱搴撳瓨
+ locDetl2.setAnfme(locDetl2.getAnfme() - wrkDetl.getAnfme());
+ locDetl2.setUpdateBy(wrkDetl.getAppeUser());
+ locDetl2.setModiTime(new Date());
+ manLocDetlService.update(locDetl2, new EntityWrapper<ManLocDetl>().eq("loc_no", locNo).eq("matnr", wrkDetl.getMatnr()).eq("batch", wrkDetl.getBatch()));
+ }
+ // 璁板綍鏃ュ織
+ SaasUtils.insertLog(3, locNo, wrkDetl.getMatnr(), wrkDetl.getAnfme(), wrkDetl.getAppeUser(), wrkDetl.getBatch());
+ }
}
}
} catch (Exception ignore){}
@@ -164,10 +202,13 @@
// 鏇存柊璁㈠崟瀹屾垚鏁伴噺
OrderDetl orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch());
+ if (orderDetl==null){
+ orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), null);
+ }
try {
if(!Cools.isEmpty(orderDetl)){
if(!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
- wrkDetl.getBatch(),wrkDetl.getAnfme())){
+ orderDetl.getBatch(),wrkDetl.getAnfme())){
// exceptionHandle("鎷f枡鍏ュ簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触锛沎workNo={0}],[locNo={1}]",
// wrkMast.getWrkNo(), wrkMast.getLocNo());
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
@@ -344,14 +385,60 @@
for (WrkDetl wrkDetl : wrkDetls101) {
// 鏇存柊璁㈠崟瀹屾垚鏁伴噺
OrderDetl orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch());
+ if (orderDetl==null){
+ orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), null);
+ }
try {
if(!Cools.isEmpty(orderDetl)){
if(!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
- wrkDetl.getBatch(),wrkDetl.getAnfme())){
+ orderDetl.getBatch(),wrkDetl.getAnfme())){
// exceptionHandle("鍏ㄦ澘鍑哄簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触锛沎workNo={0}],[locNo={1}]",
// wrkMast.getWrkNo(), wrkMast.getLocNo());
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return FAIL.setMsg("鍏ㄦ澘鍑哄簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]");
+ } else { // 鎻掑叆璋冩嫧鍑哄簱鍗曞搴旂嚎杈逛粨鍏ュ簱璁板綍
+ Order order = orderService.selectByNo(orderDetl.getOrderNo());
+ if(order.getDocType$().equals("璋冩嫧鍑哄簱鍗�")) {
+
+ String locNo = orderDetl.getSuppCode(); // 绾胯竟浠�
+
+ Node node = nodeService.selectByUuid(locNo);
+ if (Cools.isEmpty(node)) {
+ throw new CoolException(locNo + ":搴撲綅涓嶅瓨鍦�");
+ }
+ ManLocDetl locDetl1 = manLocDetlService.selectOne(new EntityWrapper<ManLocDetl>().eq("loc_no", locNo).eq("matnr", wrkDetl.getMatnr()).
+ eq("batch", wrkDetl.getBatch()));
+ if (!Cools.isEmpty(locDetl1)) {
+ locDetl1.setAnfme(locDetl1.getAnfme() + wrkDetl.getAnfme());
+ locDetl1.setModiTime(now);
+ manLocDetlService.update(locDetl1, new EntityWrapper<ManLocDetl>().eq("loc_no", locNo).eq("matnr", wrkDetl.getMatnr()).
+ eq("batch", wrkDetl.getBatch()));
+ } else {
+ ManLocDetl manLocDetl = new ManLocDetl();
+ manLocDetl.setLocNo(locNo);
+// manLocDetl.setBarcode(barcode);
+// manLocDetl.setZpallet(barcode);
+ manLocDetl.setNodeId(node.getId());
+ manLocDetl.setMaktx(wrkDetl.getMaktx());
+ manLocDetl.setMatnr(wrkDetl.getMatnr());
+ manLocDetl.setSpecs(wrkDetl.getSpecs());
+ manLocDetl.setBatch(Cools.isEmpty(wrkDetl.getBatch()) ? "" : wrkDetl.getBatch());
+ manLocDetl.setAnfme(wrkDetl.getAnfme());
+ manLocDetl.setCreateBy(wrkDetl.getAppeUser());
+ manLocDetl.setCreateTime(now);
+ if (!manLocDetlService.insert(manLocDetl)) {
+ log.error("搴撳瓨鏇存柊鏃舵彃鍏ョ嚎杈瑰簱鏄庣粏澶辫触");
+ throw new CoolException("搴撳瓨鏇存柊鏃舵彃鍏ョ嚎杈瑰簱鏄庣粏澶辫触锛�");
+ }
+
+ node.setUpdateBy(wrkDetl.getAppeUser());
+ node.setUpdateTime(now);
+ nodeService.updateById(node);
+ }
+
+ // 璁板綍鏃ュ織
+ SaasUtils.insertLog(2, locNo, wrkDetl.getMatnr(), wrkDetl.getAnfme(), wrkDetl.getAppeUser(),wrkDetl.getBatch());
+ }
}
}
} catch (Exception ignore){}
--
Gitblit v1.9.1