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/service/impl/MobileServiceImpl.java | 215 ++++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 200 insertions(+), 15 deletions(-)
diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
index 3b652a7..2a055e4 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -12,6 +12,7 @@
import com.zy.asrs.entity.param.OffSaleParam;
import com.zy.asrs.entity.param.OpenOrderPakinParam;
import com.zy.asrs.mapper.ManLocDetlMapper;
+import com.zy.asrs.mapper.OrderDetlMapper;
import com.zy.asrs.service.*;
import com.zy.asrs.utils.MatUtils;
import com.zy.asrs.utils.SaasUtils;
@@ -26,10 +27,9 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.List;
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.util.*;
/**
* 绉诲姩绔湇鍔℃牳蹇冪被
@@ -43,6 +43,10 @@
private MatService matService;
@Autowired
private WaitPakinService waitPakinService;
+
+ @Resource
+ private WaitPakinLogService waitPakinLogService;
+
@Autowired
private OrderService orderService;
@Autowired
@@ -78,6 +82,183 @@
@Autowired
private ManLocDetlMapper manLocDetlMapper;
+ @Resource
+ private OrderDetlMapper orderDetlMapper;
+
+ @Override
+ @Transactional
+ public R WarehouseOut(CombParam combParam, Long userId) {
+
+ //鏌ヨ搴撳瓨鏁版嵁
+ for (CombParam.CombMat combMat : combParam.getCombMats()) {
+ ManLocDetl locDetl = manLocDetlService.selectOne(new EntityWrapper<ManLocDetl>()
+ .eq("loc_no", combParam.getLocno())
+ .eq("zpallet", combMat.getZpallet())
+ .eq("matnr", combMat.getMatnr())
+// .eq(LocDetl::getBatch, combMat.getBatch())
+ );
+ if (Cools.isEmpty(locDetl)) {
+ return R.error("鏈煡璇㈠埌搴撳瓨鏁版嵁");
+ }
+ if (combMat.getAnfme() > locDetl.getAnfme()) {
+ return R.error("涓嬫灦鏁伴噺閿欒锛岃秴鍑哄簱瀛樻暟閲�");
+ }
+ if (!Cools.isEmpty(combParam.getOrderNo())) {
+ Order order = orderService.selectByNo(combParam.getOrderNo());
+ if (Cools.isEmpty(order)) {
+ continue;
+ }
+ if (order.getSettle() == 1) {
+ orderService.updateSettle(order.getId(), 2L, userId);
+ }
+ OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), combMat.getMatnr(), combMat.getBatch());
+ if (Cools.isEmpty(orderDetl)) {
+ continue;
+ }
+ if (orderDetl.getAnfme() < orderDetl.getWorkQty() + combMat.getAnfme()) {
+ combMat.setAnfme(orderDetl.getAnfme() - orderDetl.getWorkQty());
+ }
+ // 淇敼璁㈠崟鏄庣粏浣滀笟鏁伴噺
+ if (orderDetlMapper.increaseWorkQtyByOrderNo(combParam.getOrderNo(), combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme()) <= 0) {
+ throw new CoolException("淇敼鍗曟嵁鏄庣粏宸ヤ綔鏁伴噺澶辫触");
+ }
+ // 淇敼璁㈠崟鏄庣粏瀹屾垚鏁伴噺
+ if (!orderDetlService.increase(order.getId(), combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme())) {
+ throw new CoolException("淇敼鍗曟嵁鏄庣粏瀹屾垚鏁伴噺澶辫触");
+ }
+ // 淇敼璁㈠崟鐘舵�� 浣滀笟涓� ===>> 宸插畬鎴�
+ orderService.checkComplete(combParam.getOrderNo());
+ }
+ try {
+ double i = 0.0;
+ double j = locDetl.getAnfme();
+ //澶勭悊搴撳瓨淇℃伅
+ if (combMat.getAnfme().equals(locDetl.getAnfme())) {
+ //搴撳瓨鐩哥瓑鍒犻櫎鏁版嵁
+ manLocDetlMapper.deleteLocNo0(combParam.getLocno(), combMat.getMatnr());
+ int count = manLocDetlMapper.selectCount(new EntityWrapper<ManLocDetl>().eq("loc_no", combParam.getLocno()));
+ if (count == 0) {
+ Node node = nodeService.selectByUuid(combParam.getLocno());
+ node.setUpdateTime(new Date());
+ node.setUpdateBy(userId);
+ node.setBarcode("");
+ nodeService.updateById(node);
+ }
+ } else {
+ BigDecimal subtract = BigDecimal.valueOf(locDetl.getAnfme()).subtract(BigDecimal.valueOf(combMat.getAnfme()));
+ i = subtract.byteValue();
+ locDetl.setAnfme(subtract.doubleValue());
+ // 鏇存柊搴撳瓨
+ manLocDetlMapper.updateAnfme(subtract.doubleValue(), combParam.getLocno(), combMat.getMatnr(), combMat.getBatch());
+ }
+ // 璁板綍鏃ュ織
+ SaasUtils.insertLog(Cools.isEmpty(combParam.getOrderNo()) ? 1 : 4, combParam.getLocno(), combMat.getMatnr(), combMat.getAnfme(), userId,combMat.getBatch());
+ } catch (Exception e) {
+ throw new CoolException("鏇存柊搴撳瓨鏁版嵁鍑洪敊" + e.getMessage());
+ }
+ }
+ return R.ok();
+ }
+
+ @Override
+ @Transactional
+ public R WarehouseIn(String locNo, String barcode, Long userId) {
+
+ //鏌ヨ缁勬墭鏁版嵁
+ List<WaitPakin> list = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", barcode));
+ if (Cools.isEmpty(list)) {
+ return R.error("鏈壘鍒扮粍鎵樹俊鎭�");
+ }
+ Date now = new Date();
+
+ //鎻掑叆搴撳瓨鏁版嵁
+ for (WaitPakin waitPakin : list) {
+
+ Mat mat = matService.selectOne(new EntityWrapper<Mat>()
+ .eq("matnr", waitPakin.getMatnr()));
+
+ ManLocDetl locDetl1 = manLocDetlService.selectOne(new EntityWrapper<ManLocDetl>().eq("loc_no", locNo).eq("matnr", waitPakin.getMatnr()).
+ eq("batch", waitPakin.getBatch()));
+
+ Node node = nodeService.selectByUuid(locNo);
+ if (Cools.isEmpty(node)) {
+ throw new CoolException(locNo + ":搴撲綅涓嶅瓨鍦�");
+ }
+ if (!Cools.isEmpty(locDetl1)) {
+ locDetl1.setAnfme(locDetl1.getAnfme() + waitPakin.getAnfme());
+ locDetl1.setUpdateBy(userId);
+ locDetl1.setModiTime(now);
+ manLocDetlService.update(locDetl1, new EntityWrapper<ManLocDetl>().eq("loc_no", locNo).eq("matnr", waitPakin.getMatnr()).
+ eq("batch", waitPakin.getBatch()));
+ } else {
+ ManLocDetl manLocDetl = new ManLocDetl();
+ manLocDetl.setLocNo(locNo);
+// manLocDetl.setBarcode(barcode);
+ manLocDetl.setZpallet(barcode);
+ manLocDetl.setNodeId(node.getId());
+ manLocDetl.setMaktx(mat.getMaktx());
+ manLocDetl.setMatnr(mat.getMatnr());
+ manLocDetl.setSpecs(mat.getSpecs());
+ manLocDetl.setBatch(Cools.isEmpty(waitPakin.getBatch()) ? "" : waitPakin.getBatch());
+ manLocDetl.setAnfme(waitPakin.getAnfme());
+ manLocDetl.setCreateBy(userId);
+ manLocDetl.setCreateTime(now);
+ manLocDetl.setUpdateBy(userId);
+ manLocDetl.setModiTime(now);
+ if (!manLocDetlService.insert(manLocDetl)) {
+ throw new CoolException("鍟嗗搧涓婃灦澶辫触锛�");
+ }
+
+ // 鏇存柊搴撲綅鏉$爜
+ node.setBarcode(barcode);
+ node.setUpdateBy(userId);
+ node.setUpdateTime(now);
+ nodeService.updateById(node);
+ }
+
+ // 璁板綍鏃ュ織
+ SaasUtils.insertLog(0, locNo, waitPakin.getMatnr(), waitPakin.getAnfme(), userId,waitPakin.getBatch());
+
+ //鏄惁灞炰簬璁㈠崟鏁版嵁
+ //鏄惁灞炰簬璁㈠崟鏁版嵁
+ if (!Cools.isEmpty(waitPakin.getOrderNo())){
+ Order order = orderService.selectByNo(waitPakin.getOrderNo());
+ if (Cools.isEmpty(order)){
+ throw new CoolException("骞冲簱涓婃灦鏌ヨ璁㈠崟澶辫触");
+ }
+ OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), waitPakin.getMatnr(), waitPakin.getBatch());
+ if (Cools.isEmpty(orderDetl)){
+ throw new CoolException("骞冲簱涓婃灦鏌ヨ璁㈠崟鏄庣粏澶辫触");
+ }
+ // 淇敼璁㈠崟鏄庣粏瀹屾垚鏁伴噺
+ if (!orderDetlService.increase(order.getId(),waitPakin.getMatnr(), waitPakin.getBatch(), waitPakin.getAnfme())) {
+ throw new CoolException("淇敼鍗曟嵁鏄庣粏鏁伴噺澶辫触");
+ }
+ // 淇敼璁㈠崟鐘舵�� 浣滀笟涓� ===>> 宸插畬鎴�
+ orderService.checkComplete(waitPakin.getOrderNo());
+
+ }
+
+ // 鏇存柊鍏ュ簱宸ヤ綔妗�
+ waitPakin.setLocNo(locNo);
+ waitPakin.setIoStatus("Y");
+ waitPakin.setModiUser(userId);
+ waitPakin.setModiTime(now);
+ waitPakinService.update(waitPakin,new EntityWrapper<WaitPakin>().eq("zpallet", barcode).eq("matnr",waitPakin.getMatnr())
+ .eq("batch",waitPakin.getBatch()));
+
+ // 淇濆瓨鍏ュ簱閫氱煡妗e巻鍙叉。
+ if (!waitPakinLogService.save(barcode)) {
+ throw new CoolException("淇濆瓨缁勬墭鏁版嵁澶辫触");
+ }
+ // 鍒犻櫎鍏ュ簱閫氱煡妗�
+ if (!waitPakinService.delete(new EntityWrapper<WaitPakin>().eq("zpallet", barcode))) {
+ throw new CoolException("鍒犻櫎缁勬墭鏁版嵁澶辫触");
+ }
+ }
+
+ return R.ok("涓婃灦鎴愬姛");
+ }
@Override
@Transactional
@@ -111,7 +292,7 @@
Date now = new Date();
// 鏃犲崟缁勬墭
- if (Cools.isEmpty(param.getOrderNo())) {
+ if (Cools.isEmpty(param.getCombMats().get(0).getOrderNo())) {
// 鐢熸垚鍏ュ簱閫氱煡妗�
List<DetlDto> detlDtos = new ArrayList<>();
@@ -149,22 +330,22 @@
}
// 鍏宠仈缁勬墭
} else {
- Order order = orderService.selectByNo(param.getOrderNo());
- if (Cools.isEmpty(order) || order.getSettle() > 2) {
- throw new CoolException("鍗曟嵁缂栧彿宸茶繃鏈�");
- }
+
// 鐢熸垚鍏ュ簱閫氱煡妗�
List<DetlDto> detlDtos = new ArrayList<>();
param.getCombMats().forEach(elem -> {
-
+ Order order = orderService.selectByNo(elem.getOrderNo());
+ if (order.getSettle() > 2) {
+ throw new CoolException("鍗曟嵁缂栧彿宸插畬鎴愶細" + elem.getOrderNo());
+ }
// 璁㈠崟鏄庣粏鏁伴噺鏍¢獙
OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), elem.getMatnr(), elem.getBatch());
if (elem.getAnfme() > orderDetl.getEnableQty()) {
throw new CoolException(orderDetl.getMatnr() + "鍏ュ簱鏁伴噺涓嶅悎娉�");
}
- // 淇敼璁㈠崟浣滀笟鏁伴噺
+ // 淇敼璁㈠崟鏄庣粏鏁伴噺
if (!orderDetlService.increaseWorkQty(order.getId(), elem.getMatnr(), elem.getBatch(), elem.getAnfme())) {
- throw new CoolException("淇敼鍗曟嵁浣滀笟鏁伴噺澶辫触");
+ throw new CoolException("淇敼鍗曟嵁鏄庣粏鏁伴噺澶辫触");
}
DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme());
@@ -173,6 +354,7 @@
assert one != null;
one.setAnfme(one.getAnfme() + detlDto.getAnfme());
} else {
+ detlDto.setOrderNo(order.getOrderNo());
detlDtos.add(detlDto);
}
});
@@ -181,6 +363,9 @@
if (Cools.isEmpty(mat)) {
throw new CoolException(detlDto.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�");
}
+
+ Order order = orderService.selectByNo(detlDto.getOrderNo());
+
WaitPakin waitPakin = new WaitPakin();
waitPakin.sync(mat);
waitPakin.setOrderNo(order.getOrderNo()); // 鍗曟嵁缂栧彿
@@ -196,8 +381,8 @@
if (!waitPakinService.insert(waitPakin)) {
throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�");
}
+ orderService.updateSettle(order.getId(), 2L, userId);
}
- orderService.updateSettle(order.getId(), 2L, userId);
}
}
@@ -252,7 +437,7 @@
node.setUpdateBy(userId);
node.setUpdateTime(now);
nodeService.updateById(node);
- SaasUtils.insertLog(0,manLocDetl.getLocNo(), manLocDetl.getMatnr(),combMat.getAnfme(),userId);
+ SaasUtils.insertLog(0,manLocDetl.getLocNo(), manLocDetl.getMatnr(),combMat.getAnfme(),userId,manLocDetl.getBatch());
}
}
@@ -268,7 +453,7 @@
if (anfme < 0) {
throw new CoolException("鍟嗗搧搴撳瓨涓嶈冻锛�");
} else if (anfme == 0){
- SaasUtils.insertLog(1,manLocDetl.getLocNo(), manLocDetl.getMatnr(),offSaleParam.getAnfme(),userId);
+ SaasUtils.insertLog(1,manLocDetl.getLocNo(), manLocDetl.getMatnr(),offSaleParam.getAnfme(),userId,manLocDetl.getBatch());
manLocDetlMapper.deleteLocNo0(offSaleParam.getLocNo(), offSaleParam.getMatnr());
// 娓呯┖搴撲綅鏉$爜
Node node = nodeService.selectByUuid(offSaleParam.getLocNo());
--
Gitblit v1.9.1