From 6c9b9a96ef48600f2e9eb3fdaa5ed4f0659a6c59 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期五, 02 六月 2023 15:43:37 +0800
Subject: [PATCH] //出库时,如果当前库位组有相同的物料,则先出外侧物料
---
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | 120 +++++++++++++++++++++++++++++++++++++++++++++---------------
1 files changed, 90 insertions(+), 30 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 ea68b5c..da84811 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -161,40 +161,90 @@
public void startupFullTakeStore(StockOutParam param, Long userId) {
ArrayList<String> locNos = new ArrayList<>();
List<StockOutParam.LocDetl> locDetls = new ArrayList<>();
- ArrayList<String> matnrs = new ArrayList<>();//鐩殑鍋氭暟鎹幓閲�
+
+ //鍑哄簱鏃讹紝濡傛灉褰撳墠搴撲綅缁勬湁鐩稿悓鐨勭墿鏂欙紝鍒欏厛鍑哄渚х墿鏂�
for (StockOutParam.LocDetl locDetl : param.getLocDetls()) {
- if (!matnrs.contains(locDetl.getMatnr())) {
- matnrs.add(locDetl.getMatnr());
+ List<String> outerSingleLoc = Utils.getGroupOuterSingleLoc(locDetl.getLocNo());
+ outerSingleLoc.add(locDetl.getLocNo());
+ boolean flag = false;
+ Double useCount = 0D;
+ for (String locNo : outerSingleLoc) {
+ for (LocDetl locDetl0 : locDetlService.selectByLocNo(locNo)) {
+ if (!locDetl0.getMatnr().equals(locDetl.getMatnr())) {
+ //涓嶆槸鐩稿悓鐗╂枡
+ continue;
+ }
+ double lastCount = locDetl.getCount() - useCount;//鍓╀綑鎵�闇�鏁伴噺
+ double realCount = 0;//瀹為檯鎻愪緵鏁伴噺
+ if (locDetl0.getAnfme() >= lastCount) {//瀹為檯鏁伴噺澶т簬鎵�闇�鏁伴噺锛屾寜鎵�闇�鏁伴噺鎻愪緵
+ realCount = lastCount;
+ } else {
+ //瀹為檯灏忎簬鎵�闇�鏁伴噺锛屾寜瀹為檯鏁伴噺鎻愪緵
+ realCount = locDetl0.getAnfme();
+ }
+ useCount += realCount;//宸蹭娇鐢ㄧ殑鏁伴噺
- //1.鏍规嵁鐗╂枡鍙峰厛鎼滅储楂橀鍖哄煙鏄惁鏈夊簱瀛�
- List<StockOutParam.LocDetl> locNoStep1 = this.findLocNoStep1(locDetl);
- if (locNoStep1 != null) {
- locDetls.addAll(locNoStep1);
- continue;
+ locDetls.add(new StockOutParam.LocDetl(locDetl0.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(), realCount));
+ flag = true;
+ if (useCount >= locDetl.getCount()) {
+ //鎵惧埌鐨勫簱瀛� >= 鎵�闇�搴撳瓨锛屾弧瓒虫潯浠�
+ break;
+ }
}
-
- //楂橀娣锋斁鍖哄煙娌℃湁婊¤冻鐨勫簱浣嶏紝鍦ㄥ崟鍝佸尯鍩熻繘琛屾悳绱�
- List<StockOutParam.LocDetl> locNoStep2 = this.findLocNoStep2(locDetl);
- if (locNoStep2 != null) {
- locDetls.addAll(locNoStep2);
- continue;
- }
-
- //浣庨娣锋斁鍖哄煙杩涜鎼滅储
- List<StockOutParam.LocDetl> locNoStep3 = this.findLocNoStep3(locDetl);
- if (locNoStep3 != null) {
- locDetls.addAll(locNoStep3);
- continue;
- }
-
}
+
+ if (!flag) {
+ locDetls.add(locDetl);
+ }
+
}
- for (StockOutParam.LocDetl locDetl : locDetls) {
- if (!locNos.contains(locDetl.getLocNo())) {
- locNos.add(locDetl.getLocNo());
- }
- }
+// ArrayList<String> locNos = new ArrayList<>();
+// for (StockOutParam.LocDetl locDetl:param.getLocDetls()){
+// if (!locNos.contains(locDetl.getLocNo())){
+// locNos.add(locDetl.getLocNo());
+// }
+// }
+// List<StockOutParam.LocDetl> locDetls = param.getLocDetls();
+
+
+
+// ArrayList<String> locNos = new ArrayList<>();
+// List<StockOutParam.LocDetl> locDetls = new ArrayList<>();
+// ArrayList<String> matnrs = new ArrayList<>();//鐩殑鍋氭暟鎹幓閲�
+// for (StockOutParam.LocDetl locDetl : param.getLocDetls()) {
+// if (!matnrs.contains(locDetl.getMatnr())) {
+// matnrs.add(locDetl.getMatnr());
+//
+// //1.鏍规嵁鐗╂枡鍙峰厛鎼滅储楂橀鍖哄煙鏄惁鏈夊簱瀛�
+// List<StockOutParam.LocDetl> locNoStep1 = this.findLocNoStep1(locDetl);
+// if (locNoStep1 != null) {
+// locDetls.addAll(locNoStep1);
+// continue;
+// }
+//
+// //楂橀娣锋斁鍖哄煙娌℃湁婊¤冻鐨勫簱浣嶏紝鍦ㄥ崟鍝佸尯鍩熻繘琛屾悳绱�
+// List<StockOutParam.LocDetl> locNoStep2 = this.findLocNoStep2(locDetl);
+// if (locNoStep2 != null) {
+// locDetls.addAll(locNoStep2);
+// continue;
+// }
+//
+// //浣庨娣锋斁鍖哄煙杩涜鎼滅储
+// List<StockOutParam.LocDetl> locNoStep3 = this.findLocNoStep3(locDetl);
+// if (locNoStep3 != null) {
+// locDetls.addAll(locNoStep3);
+// continue;
+// }
+//
+// }
+// }
+//
+// for (StockOutParam.LocDetl locDetl : locDetls) {
+// if (!locNos.contains(locDetl.getLocNo())) {
+// locNos.add(locDetl.getLocNo());
+// }
+// }
// //妫�娴嬫彁浜ょ殑鍑哄簱搴撲綅鏄惁鍚堟硶(娴呭簱浣嶆湁闈炵┖搴撲綅)
// Utils.checkStockOutLocNo(locNos);
@@ -403,9 +453,14 @@
}
}
- List<String> outerLoc = Utils.getGroupOuterSingleLoc(locNo);
+ List<String> outerLocs = Utils.getGroupOuterSingleLoc(locNo);
Double wrkPri = 15D;
- for (LocMast locMast : locMastService.selectByLocNos(outerLoc)) {
+ for (String outerLoc : outerLocs) {
+ LocMast locMast = locMastService.selectById(outerLoc);
+ if (locMast == null) {
+ continue;
+ }
+
if (!locMast.getLocSts().equals("F")) {
continue;
}
@@ -467,6 +522,7 @@
wrkDetl.setModiTime(now);
wrkDetl.setModiUser(userId);
wrkDetl.setSpecs(locDetl.getSpecs());
+ wrkDetl.setMatType(locDetl.getMatType());
if (!wrkDetlService.insert(wrkDetl)) {
throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
}
@@ -559,6 +615,7 @@
wrkDetl.setModiTime(now);
wrkDetl.setModiUser(userId);
wrkDetl.setSpecs(detlDto.getLocDetl().getSpecs());
+ wrkDetl.setMatType(detlDto.getLocDetl().getMatType());
if (!wrkDetlService.insert(wrkDetl)) {
throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
}
@@ -645,6 +702,7 @@
wrkDetl.setAppeUser(userId);
wrkDetl.setModiTime(now);
wrkDetl.setModiUser(userId);
+ wrkDetl.setMatType(locDetl.getMatType());
if (!wrkDetlService.insert(wrkDetl)) {
throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
}
@@ -967,6 +1025,7 @@
wrkDetl.setAppeUser(userId);
wrkDetl.setModiTime(now);
wrkDetl.setModiUser(userId);
+ wrkDetl.setMatType(locDetl.getMatType());
if (!wrkDetlService.insert(wrkDetl)) {
throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
}
@@ -1456,6 +1515,7 @@
wrkDetl.setAppeUser(9527L);
wrkDetl.setModiTime(now);
wrkDetl.setModiUser(9527L);
+ wrkDetl.setMatType(locDetl.getMatType());
if (!wrkDetlService.insert(wrkDetl)) {
throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
}
--
Gitblit v1.9.1