From 89d29d37b5ca10e4eab854a292102bbc07be614a Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期二, 20 二月 2024 08:52:18 +0800
Subject: [PATCH] #库存迁移逻辑修改,从工作明细档进行处理
---
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | 76 ++++++++++++++-----------
src/main/java/com/zy/common/model/TaskDto.java | 49 ++++++++++++++++
src/main/java/com/zy/common/model/LocDto.java | 2
3 files changed, 93 insertions(+), 34 deletions(-)
diff --git a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
index 0a5347a..e419763 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -464,6 +464,7 @@
@Transactional
public void stockOut(BasDevp staNo, TaskDto taskDto, Long userId) {
Date now = new Date();
+ taskDto.sortLocDtos();
List<LocDto> locDtos = taskDto.getLocDtos();
for (LocDto locDto : locDtos) {
if (!taskDto.getLocNo().equals(locDto.getLocNo()) && !taskDto.getStaNo().equals(locDto.getStaNo())) {
@@ -526,7 +527,7 @@
}
// 鐢熸垚宸ヤ綔妗f槑缁�
for (LocDto locDto : taskDto.getLocDtos()) {
- if (locDto.getAnfme()==null || locDto.getAnfme() <= 0.0D) { continue; }
+ if (locDto.getAnfme()==null) { continue; }
LocDetl locDetl = locDetlService.selectItem(locDto.getLocNo(), locDto.getMatnr(), locDto.getBatch(), locDto.getContainerCode());
if (locDetl == null || locDetl.getAnfme() < locDto.getAnfme()) {
throw new CoolException(locDto.getLocNo() + "搴撲綅涓�" + locDto.getMatnr() + "鍟嗗搧搴撳瓨涓嶈冻锛�");
@@ -542,7 +543,8 @@
wrkDetl.setWrkNo(workNo);
wrkDetl.setBatch(locDto.getBatch());
wrkDetl.setOrderNo(locDto.getOrderNo());
- wrkDetl.setAnfme(locDto.getAnfme()); // 鏁伴噺
+ wrkDetl.setAnfme(locDto.getAnfme()); // 浣滀笟鏁伴噺
+ wrkDetl.setStock(locDto.getStock());
wrkDetl.setAppeTime(now);
wrkDetl.setAppeUser(userId);
wrkDetl.setModiTime(now);
@@ -581,43 +583,45 @@
});
}
- // 淇敼璁㈠崟鏄庣粏
- if (!BaseController.isJSON(locDto.getOrderNo())) {
- OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch(),locDto.getCsocode(),locDto.getIsoseq());
- if (orderDetl == null) {
- orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null,locDto.getCsocode(),locDto.getIsoseq());
- }
- if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), locDto.getAnfme(),locDto.getCsocode(),locDto.getIsoseq())) {
- throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触");
- }
- orderService.updateSettle(orderDetl.getOrderId(), 2L, userId);
- } else {
- // 璁㈠崟鍚堝苟鍑哄簱
- List<OrderDto> orderDtoList = JSON.parseArray(locDto.getOrderNo(), OrderDto.class);
-
- //瀹為檯鍑哄簱鏁伴噺
- Double locAnfme = locDto.getAnfme();
- //璁㈠崟瀹為檯鍑哄簱鏁伴噺
- Double orderAnfme;
-
- for (OrderDto orderDto : orderDtoList) {
- OrderDetl orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch(),locDto.getCsocode(),locDto.getIsoseq());
+ if (locDto.getAnfme() > 0) {
+ // 淇敼璁㈠崟鏄庣粏
+ if (!BaseController.isJSON(locDto.getOrderNo())) {
+ OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch(),locDto.getCsocode(),locDto.getIsoseq());
if (orderDetl == null) {
- orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), null,locDto.getCsocode(),locDto.getIsoseq());
+ orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null,locDto.getCsocode(),locDto.getIsoseq());
}
-
- orderAnfme = orderDetl.getAnfme() - orderDetl.getQty();
-
- if(locAnfme > orderAnfme){
- locAnfme -= orderAnfme;
- }else {
- orderAnfme = locAnfme;
- }
-
- if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), orderAnfme,orderDetl.getThreeCode(),orderDetl.getDeadTime())) {
+ if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), locDto.getAnfme(),locDto.getCsocode(),locDto.getIsoseq())) {
throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触");
}
orderService.updateSettle(orderDetl.getOrderId(), 2L, userId);
+ } else {
+ // 璁㈠崟鍚堝苟鍑哄簱
+ List<OrderDto> orderDtoList = JSON.parseArray(locDto.getOrderNo(), OrderDto.class);
+
+ //瀹為檯鍑哄簱鏁伴噺
+ Double locAnfme = locDto.getAnfme();
+ //璁㈠崟瀹為檯鍑哄簱鏁伴噺
+ Double orderAnfme;
+
+ for (OrderDto orderDto : orderDtoList) {
+ OrderDetl orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch(),locDto.getCsocode(),locDto.getIsoseq());
+ if (orderDetl == null) {
+ orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), null,locDto.getCsocode(),locDto.getIsoseq());
+ }
+
+ orderAnfme = orderDetl.getAnfme() - orderDetl.getQty();
+
+ if(locAnfme > orderAnfme){
+ locAnfme -= orderAnfme;
+ }else {
+ orderAnfme = locAnfme;
+ }
+
+ if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), orderAnfme,orderDetl.getThreeCode(),orderDetl.getDeadTime())) {
+ throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触");
+ }
+ orderService.updateSettle(orderDetl.getOrderId(), 2L, userId);
+ }
}
}
}
@@ -1265,6 +1269,10 @@
}
private void generateAgvWaitpakin(WrkDetl wrkDetl){
+ if (wrkDetl.getAnfme() <= 0D) {
+ return;
+ }
+
String orderNo = wrkDetl.getOrderNo();
if(orderNo.contains("{")){
JSONArray orderArray = JSON.parseArray(orderNo);
diff --git a/src/main/java/com/zy/common/model/LocDto.java b/src/main/java/com/zy/common/model/LocDto.java
index 785eb50..e1988fd 100644
--- a/src/main/java/com/zy/common/model/LocDto.java
+++ b/src/main/java/com/zy/common/model/LocDto.java
@@ -23,6 +23,8 @@
private Double anfme;
+ private Double stock;
+
private boolean lack = false;
private List<Integer> staNos;
diff --git a/src/main/java/com/zy/common/model/TaskDto.java b/src/main/java/com/zy/common/model/TaskDto.java
index 494c703..87f36a4 100644
--- a/src/main/java/com/zy/common/model/TaskDto.java
+++ b/src/main/java/com/zy/common/model/TaskDto.java
@@ -151,4 +151,53 @@
return sameNumber == locDetls.size();
}
+ public void sortLocDtos() {
+ ArrayList<LocDto> list = new ArrayList<>();
+ String orderNo = "";
+ for (LocDto locDto : locDtos) {
+ if (!Cools.isEmpty(locDto.getOrderNo())) {
+ orderNo = locDto.getOrderNo();
+ break;
+ }
+ }
+
+ EntityWrapper<LocDetl> wrapper = new EntityWrapper<>();
+ wrapper.eq("loc_no", locNo);
+ LocDetlService locDetlService = SpringUtils.getBean(LocDetlService.class);
+ List<LocDetl> locDetls = locDetlService.selectList(wrapper);
+ for (LocDetl locDetl : locDetls) {
+ boolean flag = true;
+ for (LocDto locDto : locDtos) {
+ if (!Cools.isEmpty(locDetl.getMatnr())) {
+ if (!locDetl.getMatnr().equals(locDto.getMatnr())) {
+ continue;
+ }
+ }
+ if (!Cools.isEmpty(locDetl.getBatch())) {
+ if (!locDetl.getBatch().equals(locDto.getBatch())) {
+ continue;
+ }
+ }
+ if (!Cools.isEmpty(locDetl.getSuppCode())) {
+ if (!locDetl.getSuppCode().equals(locDto.getContainerCode())) {
+ continue;
+ }
+ }
+ locDto.setStock(locDetl.getAnfme());
+ flag = false;
+ break;
+ }
+
+ if (flag) {
+ LocDto dto = new LocDto(locNo, locDetl.getMatnr(), locDetl.getBatch(), 0D);
+ dto.setContainerCode(locDetl.getSuppCode());
+ dto.setStock(locDetl.getAnfme());
+ dto.setOrderNo(orderNo);
+ list.add(dto);
+ }
+ }
+
+ locDtos.addAll(list);
+ }
+
}
--
Gitblit v1.9.1