From 3c09a80b4d01b8ea19ec48e2852ff9092d8153c4 Mon Sep 17 00:00:00 2001
From: LSH
Date: 星期一, 28 八月 2023 18:40:14 +0800
Subject: [PATCH] #bug修复

---
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java |  213 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 211 insertions(+), 2 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 208791b..9380c83 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -309,11 +309,16 @@
                 if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount()));
             }
         }
+        for (LocDetlDto locDetlDto:locDetlDtos){
+            if (locs.contains(locDetlDto.getLocDetl().getLocNo())){
+                locDetlDto.setSign(true);
+            }
+        }
         if (!locDetlDtos.isEmpty()) {
             LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetlDtos.get(0).getLocDetl().getLocNo()));
             if (locMast.getLocSts().equals("F") || locMast.getLocSts().equals("D") ){
                 // 鍚姩鍑哄簱寮�濮� 101.鍑哄簱
-                stockOut(staNo, locDetlDtos, null, userId);
+                stockOut2(staNo, locDetlDtos, null, userId);
             }else {
                 throw new CoolException("鎵�閫夊簱浣嶅瓨鍦ㄧ姸鎬佷笉涓篎銆丏鐨勫簱浣嶏紝搴撲綅鍙凤細"+locMast.getLocNo()+" 銆佸綋鍓嶇姸鎬侊細"+locMast.getLocSts()+"-"+locMast.getLocSts$());
             }
@@ -505,6 +510,10 @@
             }
 
             List<String> outerLocs = Utils.getGroupOuterSingleLoc(locNo);
+            LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", dto.getLocNo()));
+            if (locMast1.getLocType2().equals((short)3)){
+                outerLocs = Utils.getGroupOuterSingleLocLowFrequency(locMast1.getLocNo());
+            }
             Double wrkPri = 15D;
             for (String outerLoc : outerLocs) {
                 LocMast locMast = locMastService.selectById(outerLoc);
@@ -546,7 +555,8 @@
                     wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
                     wrkMast.setIoType(101); // 鍏ュ嚭搴撶姸鎬�101鍏ㄦ澘鍑哄簱
                     wrkPri += 2D;
-                    wrkMast.setIoPri(wrkPri); // 浼樺厛绾�
+
+                    wrkMast.setIoPri(Utils.getIoPri(locMast.getLocNo())); // 浼樺厛绾�
                     wrkMast.setOutMost(0);
                     wrkMast.setCrnNo(locMast.getCrnNo());
                     wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯
@@ -742,6 +752,205 @@
 
     @Override
     @Transactional
+    public void stockOut2(BasDevp staNo, List<LocDetlDto> locDetlDtos, IoWorkType ioWorkType, Long userId) {
+        Integer basDevp = staNo.getDevNo();
+        Date now = new Date();
+        // 鍚堝苟鍚岀被椤�
+        Set<String> locNos = new HashSet<>();
+        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;
+                    }
+                }
+            } else {
+                locNos.add(locNo);
+                dtos.add(new OutLocDto(locNo, locDetlDto));
+            }
+        }
+        Integer ioType = null;
+        // 鐢熸垚宸ヤ綔妗�
+        for (OutLocDto dto : dtos) {
+            // 濡傛灉涓烘繁搴撲綅锛屼笖瀵瑰簲娴呭簱浣嶄负X.绂佺敤锛屽垯鐣ヨ繃姝ゅ簱浣�
+            if (Utils.isDeepLoc(slaveProperties, dto.getLocNo())) {
+                String shallowLoc = Utils.getShallowLoc(slaveProperties, dto.getLocNo());
+                if (locMastService.selectById(shallowLoc).getLocSts().equals("X")) {
+                    continue;
+                }
+            }
+
+            //-----------------2023.5.31涓婃灦鍖哄煙鐗堟湰鍏煎浠g爜-----------------------
+            //鍒ゆ柇褰撳墠搴撲綅缁勬槸鍚﹀潎涓哄悓涓�绉嶇墿鏂欙紝濡備笉鏄紝鍒欒瀹氶渶瑕佹墽琛屽吋瀹逛唬鐮�
+            //闇�瑕佸皢寰呭嚭搴撳簱浣嶅墠渚у簱浣�(涓嶅寘鍚渶澶栦晶楂橀搴撲綅)鎵ц101鍏ㄦ澘鍑哄簱
+            String locNo = dto.getLocNo();
+            String matnr = null;
+            for (LocDetlDto locDetlDto : dto.getLocDetlDtos()) {
+                LocDetl locDetl = locDetlDto.getLocDetl();
+                if (locDetl.getLocNo().equals(locNo)) {
+                    matnr = locDetl.getMatnr();
+                }
+            }
+
+            List<String> outerLocs = new ArrayList<>();
+            if (!dto.isSign()){
+                outerLocs.add(dto.getLocNo());
+            }
+            Double wrkPri = 15D;
+            for (String outerLoc : outerLocs) {
+                if (!dto.isSign()) {
+                    // 鐢熸垚宸ヤ綔妗f槑缁�
+                    for (LocDetl locDetl : locDetlService.selectByLocNo(outerLoc)) {
+
+                        Mat mat = matService.selectByMatnr(locDetl.getMatnr());
+                        if (Cools.isEmpty(mat)) {
+                            throw new CoolException(locDetl.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�");
+                        }
+                        int zpallet = waitPakinService.selectCount(new EntityWrapper<WaitPakin>().eq("zpallet", locDetl.getZpallet()).ne("loc_no",locDetl.getLocNo()));
+                        if (zpallet>0) {
+                            throw new CoolException(locDetl.getZpallet() + "鍏ュ簱閫氱煡妗d腑宸插瓨鍦�");
+                        }
+                        WaitPakin waitPakin = new WaitPakin();
+                        waitPakin.sync(mat);
+                        waitPakin.setBatch("");
+                        waitPakin.setZpallet(locDetl.getZpallet());   // 鎵樼洏鐮�
+                        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け璐�");
+                        }
+                    }
+                }
+            }
+            //-----------------2023.5.31涓婃灦鍖哄煙鐗堟湰鍏煎浠g爜end-----------------------
+
+            // 鍒ゆ柇鍏ュ嚭搴撶被鍨嬶細101.鍏ㄦ澘鍑哄簱 or 103.鎷f枡鍑哄簱
+            if (ioWorkType == null) {
+                ioType = dto.isAll() ? 101 : 103;
+            } else if (ioWorkType.equals(IoWorkType.CHECK_OUT)) {
+                ioType = 107;
+                // if (wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("io_type", 107)) > 0) {
+                //     throw new CoolException("鍙兘瀛樺湪涓�绗旂洏鐐逛换鍔�");
+                // }
+            }
+            assert ioType != null;
+            // 鑾峰彇搴撲綅
+            LocMast locMast = locMastService.selectById(dto.getLocNo());
+
+            //-----------------2023.6.2鍑哄簱鍏煎浠g爜-----------------------
+            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);
+                //    }
+                //}
+                if (ioType == 101) {
+                    if (staNo.getDevNo()==300){
+                        if(locMast.getCrnNo() == 1) {
+                            staNo.setDevNo(100);
+                        } else {
+                            staNo.setDevNo(200);
+                        }
+
+                    }
+                } else {
+                    staNo.setDevNo(basDevp);
+                }
+
+
+            }
+            //-----------------2023.6.2鍑哄簱鍏煎浠g爜end-----------------------
+
+            // 鑾峰彇璺緞
+            StaDesc staDesc = staDescService.queryCrnStn(ioType, locMast.getCrnNo(), staNo.getDevNo(), locMast.getRow1());
+            if(staDesc == null){
+                throw new CoolException("鍑哄簱璺緞涓嶅瓨鍦�");
+            }
+
+            // 鐢熸垚宸ヤ綔鍙�
+            int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
+            // 鐢熸垚宸ヤ綔妗�
+            WrkMast wrkMast = new WrkMast();
+            wrkMast.setWrkNo(workNo);
+            wrkMast.setIoTime(now);
+            wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+            wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬�
+            Double ioPri = wrkMastService.getIoPri(ioType, dto.getLocNo());
+            wrkMast.setIoPri(15D); // 浼樺厛绾э細13
+            wrkMast.setOutMost(locMastService.isOutMost(dto.getLocNo(), false) ? 1 : 0);
+            wrkMast.setCrnNo(locMast.getCrnNo());
+            wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯
+            wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔�
+            wrkMast.setSourceLocNo(dto.getLocNo()); // 婧愬簱浣�
+            wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+            wrkMast.setPicking("N"); // 鎷f枡
+            wrkMast.setExitMk("N"); // 閫�鍑�
+            wrkMast.setEmptyMk("N"); // 绌烘澘
+            wrkMast.setLinkMis("N");
+            wrkMast.setBarcode(locMast.getBarcode());
+            wrkMast.setAppeUser(userId); // 鎿嶄綔浜哄憳鏁版嵁
+            wrkMast.setAppeTime(now);
+            wrkMast.setModiUser(userId);
+            wrkMast.setModiTime(now);
+            if (!wrkMastService.insert(wrkMast)) {
+                throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細" + dto.getLocNo());
+            }
+            // 鐢熸垚宸ヤ綔妗f槑缁�
+            for (LocDetlDto detlDto : dto.getLocDetlDtos()) {
+                if (detlDto.getCount() == null || detlDto.getCount() <= 0.0D) {
+                    continue;
+                }
+                WrkDetl wrkDetl = new WrkDetl();
+                wrkDetl.sync(detlDto.getLocDetl());
+                wrkDetl.setOrderNo(""); // 鎵嬪姩鍑哄簱涓嶉渶瑕佸甫鍑哄簱瀛樹腑鐨勫崟鎹紪鍙�
+                wrkDetl.setWrkNo(workNo);
+                wrkDetl.setIoTime(now);
+                Double anfme = ioType == 101 ? detlDto.getLocDetl().getAnfme() : detlDto.getCount();
+                wrkDetl.setAnfme(anfme); // 鏁伴噺
+                wrkDetl.setAppeTime(now);
+                wrkDetl.setAppeUser(userId);
+                wrkDetl.setModiTime(now);
+                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槑缁嗗け璐�");
+                }
+            }
+            // 淇敼搴撲綅鐘舵��:   F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓�
+            locMast = locMastService.selectById(dto.getLocNo());
+            if (locMast.getLocSts().equals("F")) {
+                locMast.setLocSts(ioType == 101 ? "R" : "P");
+                locMast.setModiUser(userId);
+                locMast.setModiTime(now);
+                if (!locMastService.updateById(locMast)) {
+                    throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細" + dto.getLocNo());
+                }
+            } else {
+                throw new CoolException(dto.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
+            }
+//            locMastService.breakUp(dto.getLocNo(), excludeLocNos);
+        }
+    }
+
+    @Override
+    @Transactional
     public void stockOut(BasDevp staNo, TaskDto taskDto, Long userId) {
         Date now = new Date();
         if (Cools.isEmpty(taskDto.getLocDtos()) || taskDto.getLocDtos().size()==0){

--
Gitblit v1.9.1