From 1af3b14449eb33792e606185c55643bca53efbb7 Mon Sep 17 00:00:00 2001
From: LSH
Date: 星期三, 07 六月 2023 16:50:52 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java |  166 +++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 129 insertions(+), 37 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 3c0d63a..fbd7760 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -74,6 +74,8 @@
     @Autowired
     private WcsController wcsController;
     @Autowired
+    private WaitPakinService waitPakinService;
+    @Autowired
     private RowLastnoService rowLastnoService;
     @Autowired
     private SlaveProperties slaveProperties;
@@ -159,42 +161,94 @@
     @Override
     @Transactional
     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 (lastCount==0){
+                        continue;
+                    }
+                    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 +457,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;
                 }
@@ -415,13 +474,16 @@
                     if (!locDetl.getMatnr().equals(matnr)) {
                         flag = true;
                         break;
+                    }else if (ioWorkType.equals(IoWorkType.CHECK_OUT)){
+                        flag = true;
+                        break;
                     }
                 }
 
                 if (flag) {
                     //褰撳墠宸烽亾瀛樺湪涓嶅悓瑙勬牸鐨勭墿鏂欙紝闇�瑕佽繘琛�101鍏ㄦ澘鍑哄簱
                     // 鑾峰彇璺緞
-                    StaDesc staDesc = staDescService.queryCrnStn(101, locMast.getCrnNo(), staNo.getDevNo(), locMast.getRow1());
+                    StaDesc staDesc = staDescService.queryCrnStn(101, locMast.getCrnNo(), locMast.getCrnNo()==1? 100:200 , locMast.getRow1());
                     if(staDesc == null){
                         throw new CoolException("鍑哄簱璺緞涓嶅瓨鍦�");
                     }
@@ -439,7 +501,7 @@
                     wrkMast.setOutMost(0);
                     wrkMast.setCrnNo(locMast.getCrnNo());
                     wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯
-                    wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔�
+                    wrkMast.setStaNo(locMast.getCrnNo()==1? 100:200); // 鐩爣绔�
                     wrkMast.setSourceLocNo(locMast.getLocNo()); // 婧愬簱浣�
                     wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
                     wrkMast.setPicking("N"); // 鎷f枡
@@ -468,8 +530,32 @@
                         wrkDetl.setModiUser(userId);
                         wrkDetl.setSpecs(locDetl.getSpecs());
                         wrkDetl.setMatType(locDetl.getMatType());
+                        wrkDetl.setZpallet(locMast.getBarcode());
                         if (!wrkDetlService.insert(wrkDetl)) {
                             throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+                        }
+
+                        Mat mat = matService.selectByMatnr(locDetl.getMatnr());
+                        if (Cools.isEmpty(mat)) {
+                            throw new CoolException(locDetl.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�");
+                        }
+                        WaitPakin waitPakin = new WaitPakin();
+                        waitPakin.sync(mat);
+                        waitPakin.setBatch("");
+                        waitPakin.setZpallet(locMast.getBarcode());   // 鎵樼洏鐮�
+                        waitPakin.setIoStatus("N");     // 鍏ュ嚭鐘舵��
+                        waitPakin.setAnfme(locDetl.getAnfme());  // 鏁伴噺
+                        waitPakin.setStatus("Y");    // 鐘舵��
+                        waitPakin.setAppeUser(userId);
+                        waitPakin.setAppeTime(now);
+                        waitPakin.setModiUser(userId);
+                        waitPakin.setModiTime(now);
+                        waitPakin.setMemo(locDetl.getMemo());
+                        waitPakin.setFrozen(0); // 鏄惁鍐荤粨
+                        waitPakin.setManu(locDetl.getManu());
+                        waitPakin.setMatType(mat.getMatType());//鐗╂枡绫诲瀷
+                        if (!waitPakinService.insert(waitPakin)) {
+                            throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�");
                         }
                     }
                     // 淇敼搴撲綅鐘舵��:   F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害
@@ -502,10 +588,15 @@
             LocMast locMast = locMastService.selectById(dto.getLocNo());
 
             //-----------------2023.6.2鍑哄簱鍏煎浠g爜-----------------------
-            List<LocDetl> locDetls = locDetlService.selectByLocNo(locMast.getLocNo());
-            if (locMast.getLocType2() == 1 && locDetls.size() > 1) {
-                //鍗曞搧鍖哄煙鍑哄簱鐗╂枡澶т簬1绉嶏紝寮哄埗鍙樻垚101鍏ㄦ澘鍑哄簱
-                ioType = 101;
+            if (ioType!=107){
+                List<LocDetl> locDetls = locDetlService.selectByLocNo(locMast.getLocNo());
+                if (locMast.getLocType2() == 1 && locDetls.size() > 1) {
+                    //鍗曞搧鍖哄煙鍑哄簱鐗╂枡澶т簬1绉嶏紝寮哄埗鍙樻垚101鍏ㄦ澘鍑哄簱
+                    ioType = 101;
+                    if (staNo.getDevNo()==300){
+                        staNo.setDevNo(200);
+                    }
+                }
             }
             //-----------------2023.6.2鍑哄簱鍏煎浠g爜end-----------------------
 
@@ -561,6 +652,7 @@
                 wrkDetl.setModiUser(userId);
                 wrkDetl.setSpecs(detlDto.getLocDetl().getSpecs());
                 wrkDetl.setMatType(detlDto.getLocDetl().getMatType());
+                wrkDetl.setZpallet(locMast.getBarcode());
                 if (!wrkDetlService.insert(wrkDetl)) {
                     throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
                 }

--
Gitblit v1.9.1