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 |   51 +++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 47 insertions(+), 4 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 45a92f5..da84811 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -160,12 +160,55 @@
     @Transactional
     public void startupFullTakeStore(StockOutParam param, Long userId) {
         ArrayList<String> locNos = new ArrayList<>();
-        for (StockOutParam.LocDetl locDetl:param.getLocDetls()){
-            if (!locNos.contains(locDetl.getLocNo())){
-                locNos.add(locDetl.getLocNo());
+        List<StockOutParam.LocDetl> locDetls = new ArrayList<>();
+
+        //鍑哄簱鏃讹紝濡傛灉褰撳墠搴撲綅缁勬湁鐩稿悓鐨勭墿鏂欙紝鍒欏厛鍑哄渚х墿鏂�
+        for (StockOutParam.LocDetl locDetl : param.getLocDetls()) {
+            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;//宸蹭娇鐢ㄧ殑鏁伴噺
+
+                    locDetls.add(new StockOutParam.LocDetl(locDetl0.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(), realCount));
+                    flag = true;
+                    if (useCount >= locDetl.getCount()) {
+                        //鎵惧埌鐨勫簱瀛� >= 鎵�闇�搴撳瓨锛屾弧瓒虫潯浠�
+                        break;
+                    }
+                }
             }
+
+            if (!flag) {
+                locDetls.add(locDetl);
+            }
+
         }
-        List<StockOutParam.LocDetl> locDetls = param.getLocDetls();
+
+//        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<>();//鐩殑鍋氭暟鎹幓閲�

--
Gitblit v1.9.1