From d2c1030a17f4bcf6846e52f7bc91068159cc8f99 Mon Sep 17 00:00:00 2001
From: whycq <913841844@qq.com>
Date: 星期五, 11 十月 2024 11:00:37 +0800
Subject: [PATCH] --

---
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java |   99 +++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 82 insertions(+), 17 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 1e42f78..b752152 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -94,7 +94,7 @@
         // 妫�绱㈠簱浣�
         LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo);
         List<String> matnrs = param.getList().stream().map(FullStoreParam.MatCodeStore::getMatnr).distinct().collect(Collectors.toList());
-        StartupDto dto = commonService.getLocNo(DEFAULT_ROW_NO_TYPE, 1, param.getDevpNo(), matnrs, locTypeDto);
+        StartupDto dto = commonService.getLocNo(DEFAULT_ROW_NO_TYPE, 1, param.getDevpNo(), matnrs, locTypeDto,0);
         // 鐢熸垚宸ヤ綔鍙�
         int workNo = dto.getWorkNo();
         // 鐢熸垚宸ヤ綔妗�
@@ -170,6 +170,8 @@
 
         List<StockOutParam.LocDetl> stockOutParamLocDetlSort = Utils.getStockOutParamLocDetlSort(param.getLocDetls());
         boolean sign = true;
+        boolean isfull = false; // 鏄惁澶熸暟閲�
+        Double isOut = 0.0;
         List<String> locNoWeighting = new ArrayList<>();
         for (StockOutParam.LocDetl locDetl : stockOutParamLocDetlSort) {
             if (Cools.isEmpty(locNoWeighting)){
@@ -191,6 +193,10 @@
                 for (String locNo : groupOuterSingleLoc) {
                     //姣忎釜搴撲綅鐨勫簱浣嶆槑缁�
                     if(locs.contains(locNo)) continue;
+                    LocMast mast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locNo));
+                    if (mast.getLocSts().equals("P") || mast.getLocSts().equals("Q")){
+                        throw new CoolException("褰撳墠搴撲綅鐨勬祬搴撲綅鐘舵�佷负" + mast.getLocSts() + "鏆備笉鏀寔鍑哄簱锛�");
+                    }
                     for (LocDetl detl : locDetlService.selectByLocNo(locNo)) {
                         if (!detl.getMatnr().equals(locDetl.getMatnr())) {
                             //涓嶆槸鐩稿悓鐗╂枡
@@ -199,11 +205,24 @@
                             }
                             continue;
                         }
-                        locDetls.add(new StockOutParam.LocDetl(detl.getLocNo(), detl.getMatnr(), detl.getBatch(), detl.getAnfme()));
+                        if (detl.getAnfme() >= locDetl.getCount()) {
+                            locDetls.add(new StockOutParam.LocDetl(detl.getLocNo(), detl.getMatnr(), detl.getBatch(), locDetl.getCount()));
+                            isOut = locDetl.getCount();
+                            isfull = true;
+                            break;
+                        } else {
+                            locDetls.add(new StockOutParam.LocDetl(detl.getLocNo(), detl.getMatnr(), detl.getBatch(), detl.getAnfme()));
+                            isOut = detl.getAnfme();
+                        }
+
                     }
                 }
             }
-            locDetls.add(locDetl);
+            if (!isfull) {
+
+                locDetls.add(new StockOutParam.LocDetl(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(), locDetl.getCount() - isOut));
+//                locDetls.add(locDetl);
+            }
         }
         //鍑哄簱鏃讹紝濡傛灉褰撳墠搴撲綅缁勬湁鐩稿悓鐨勭墿鏂欙紝鍒欏厛鍑哄渚х墿鏂� 6.30鏃� 娉ㄩ噴
         //for (StockOutParam.LocDetl locDetl : param.getLocDetls()) {
@@ -478,21 +497,44 @@
         Date now = new Date();
         // 鍚堝苟鍚岀被椤�
         Set<String> locNos = new HashSet<>();
+        ArrayList<String> locNos2 = new ArrayList<String>();
         List<OutLocDto> dtos = new ArrayList<>();
         for (LocDetlDto locDetlDto : locDetlDtos) {
             String locNo = locDetlDto.getLocDetl().getLocNo();
-            if (locNos.contains(locNo)) {
-                for (OutLocDto dto : dtos) {
-                    if (dto.getLocNo().equals(locNo)) {
-                        dto.getLocDetlDtos().add(locDetlDto);
-                        break;
+            locNos2.add(locNo);
+            //if (locNos.contains(locNo)) {
+                //for (OutLocDto dto : dtos) {
+                //    if (dto.getLocNo().equals(locNo)) {
+                //        dto.getLocDetlDtos().add(locDetlDto);
+                //        break;
+                //    }
+                //}
+            //} else {
+                //locNos.add(locNo);
+
+                //dtos.add(new OutLocDto(locNo, locDetlDto));
+            //}
+        }
+        List<String> innermostSideLoc = Utils.getInnermostSideLoc(locNos2, true);
+        System.out.println(innermostSideLoc);
+        for (LocDetlDto locDetlDto : locDetlDtos) {
+            String locNo = locDetlDto.getLocDetl().getLocNo();
+            if(innermostSideLoc.contains(locNo)) {
+                if (locNos.contains(locNo)) {
+                    for (OutLocDto dto : dtos) {
+                        if (dto.getLocNo().equals(locNo)) {
+                            dto.getLocDetlDtos().add(locDetlDto);
+                            break;
+                        }
                     }
+                } else {
+                    locNos.add(locNo);
+                    dtos.add(new OutLocDto(locNo, locDetlDto));
                 }
-            } else {
-                locNos.add(locNo);
-                dtos.add(new OutLocDto(locNo, locDetlDto));
+                //dtos.add(new OutLocDto(locNo,locDetlDto));
             }
         }
+
         Integer ioType = null;
         List<String> excludeLocNos = dtos.stream().map(OutLocDto::getLocNo).distinct().collect(Collectors.toList());
         // 鐢熸垚宸ヤ綔妗�
@@ -790,7 +832,6 @@
                     continue;
                 }
             }
-
             //-----------------2023.5.31涓婃灦鍖哄煙鐗堟湰鍏煎浠g爜-----------------------
             //鍒ゆ柇褰撳墠搴撲綅缁勬槸鍚﹀潎涓哄悓涓�绉嶇墿鏂欙紝濡備笉鏄紝鍒欒瀹氶渶瑕佹墽琛屽吋瀹逛唬鐮�
             //闇�瑕佸皢寰呭嚭搴撳簱浣嶅墠渚у簱浣�(涓嶅寘鍚渶澶栦晶楂橀搴撲綅)鎵ц101鍏ㄦ澘鍑哄簱
@@ -823,7 +864,7 @@
                         }
                         WaitPakin waitPakin = new WaitPakin();
                         waitPakin.sync(mat);
-                        waitPakin.setBatch("");
+                        //waitPakin.setBatch("");
                         waitPakin.setZpallet(locDetl.getZpallet());   // 鎵樼洏鐮�
                         waitPakin.setIoStatus("N");     // 鍏ュ嚭鐘舵��
                         waitPakin.setAnfme(locDetl.getAnfme());  // 鏁伴噺
@@ -853,6 +894,12 @@
                 //     throw new CoolException("鍙兘瀛樺湪涓�绗旂洏鐐逛换鍔�");
                 // }
             }
+            if (ioType!=101){
+                if (basDevp==114 || basDevp==214){
+                    throw new CoolException("2妤煎彧鍏佽鍏ㄦ澘鍑哄簱锛岃閫夋嫨鍏ㄩ儴鐗╂枡");
+                }
+            }
+
             assert ioType != null;
             // 鑾峰彇搴撲綅
             LocMast locMast = locMastService.selectById(dto.getLocNo());
@@ -868,13 +915,30 @@
                 //    }
                 //}
                 if (ioType == 101) {
-                    if (staNo.getDevNo()==300){
+                    if (basDevp==300){
                         if(locMast.getCrnNo() == 1) {
                             staNo.setDevNo(100);
                         } else {
                             staNo.setDevNo(200);
                         }
-
+                    } else if (basDevp == 114){
+                        if (!dto.isSign()){
+                            staNo.setDevNo(100);
+                        } else {
+                            staNo.setDevNo(basDevp);
+                        }
+                    } else if (basDevp == 214){
+                        if (!dto.isSign()){
+                            staNo.setDevNo(200);
+                        } else {
+                            staNo.setDevNo(basDevp);
+                        }
+                    } else {
+                        if(locMast.getCrnNo() == 1) {
+                            staNo.setDevNo(100);
+                        } else {
+                            staNo.setDevNo(200);
+                        }
                     }
                 } else {
                     staNo.setDevNo(basDevp);
@@ -1201,7 +1265,7 @@
         BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true);
         // 妫�绱㈠簱浣�
         LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo);
-        StartupDto dto = commonService.getLocNo(DEFAULT_ROW_NO_TYPE, 10, devpNo, null, locTypeDto);
+        StartupDto dto = commonService.getLocNo(DEFAULT_ROW_NO_TYPE, 10, devpNo, null, locTypeDto,0);
         int workNo = dto.getWorkNo();
         // 鐢熸垚宸ヤ綔妗�
         WrkMast wrkMast = new WrkMast();
@@ -1512,6 +1576,7 @@
                     AdjDetl adjDetl = new AdjDetl();
                     adjDetl.setLocNo(locDetl.getLocNo());
                     adjDetl.setMatnr(locDetl.getMatnr());
+                    adjDetl.setSpecs(locDetl.getSpecs());
                     adjDetl.setBatch(locDetl.getBatch());
                     adjDetl.setOriQty(locDetl.getAnfme());
                     adjDetl.setAdjQty(adjust.getCount());
@@ -1663,7 +1728,7 @@
         for (WrkDetl wrkDetl : wrkDetls) {
             if (!Cools.isEmpty(wrkDetl.getOrderNo())){
                 String[] orderNos = GetOrderNo(wrkDetl.getOrderNo());
-                if (!Cools.isEmpty(orderNos)){
+                if (!Cools.isEmpty(orderNos) && orderNos.length!=0){
                     String[] anfmes = GetAnfme(wrkDetl.getOrderNo());
                     int i = 0;
                     for (String orderNo : orderNos) {

--
Gitblit v1.9.1