From de3c4dab3d16b4164e3ed6a761893b6ed7c63df4 Mon Sep 17 00:00:00 2001
From: 18516761980 <4761516tqsxp>
Date: 星期二, 08 三月 2022 12:43:02 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  132 ++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 122 insertions(+), 10 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index d32e861..a92d976 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -298,8 +298,7 @@
     /**
      * 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱
      */
-    @Async
-    public void stnToCrnStnPick(){
+    public synchronized void stnToCrnStnPick(){
         for (DevpSlave devp : slaveProperties.getDevp()) {
             // 閬嶅巻鎷f枡鍏ュ簱鍙�
             for (DevpSlave.Sta pickSta : devp.getPickSta()) {
@@ -326,9 +325,8 @@
                 } else {
                     staProtocol = staProtocol.clone();
                 }
-                if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()
-                    && staProtocol.getWorkNo() > 0 && staProtocol.isPakMk()){
-                    WrkMast wrkMast = wrkMastMapper.selectPickStep(staProtocol.getWorkNo().intValue());
+                if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()){
+                    WrkMast wrkMast = wrkMastMapper.selectPickStep(barcode);
                     if (wrkMast == null) {
                         // 鏃犳嫞鏂欐暟鎹�
                         continue;
@@ -570,6 +568,41 @@
                 return;
             }
 
+            // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞�
+            if (Utils.isDeepLoc(slaveProperties, wrkMast.getLocNo())) {
+                String shallowLocNo = Utils.getShallowLoc(slaveProperties, wrkMast.getLocNo());
+                LocMast shallowLoc = locMastService.selectById(shallowLocNo);
+                // O.绌哄簱浣嶃�丵.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴撱�丼.鍏ュ簱棰勭害銆乆.绂佺敤 鐩存帴鎼紒
+                if (shallowLoc.getLocSts().equals("P") || shallowLoc.getLocSts().equals("R")) {
+                    WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
+                    if (null == waitWrkMast) {
+                        log.error("{}搴撲綅寮傚父锛屾湭妫�绱㈠埌鐩稿簲宸ヤ綔妗o紒", shallowLocNo);
+                    } else {
+                        waitWrkMast.setIoPri(15D);
+                        waitWrkMast.setModiTime(new Date());
+                        if (wrkMastMapper.updateById(waitWrkMast) == 0) {
+                            log.error("璋冩暣宸ヤ綔妗d紭鍏堢骇澶辫触锛佸伐浣滃彿={}", waitWrkMast.getWrkNo());
+                        }
+                    }
+                    continue;
+                } else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) {
+                    // 姝ゆ爣璁伴伩鍏嶅娆℃墽琛岀Щ搴撲换鍔�
+                    if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk())) {
+                        wrkMast.setUpdMk("Y");
+                        wrkMast.setIoPri(14D);
+                        wrkMastMapper.updateById(wrkMast);
+                        // 鐢熸垚宸ヤ綔妗c�佹敼鍙樻祬搴撲綅鐨勬簮搴�/鐩爣搴� 搴撲綅鐘舵�併�佷笅鍙戝爢鍨涙満鍛戒护锛堢珛椹墽琛�)
+                        moveLocForDeepLocPakin(slave, shallowLoc, wrkMast);
+                    }
+                    continue;
+                } else if (shallowLoc.getLocSts().equals("Q")){
+                    WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
+                    if (null != waitWrkMast && waitWrkMast.getWrkSts()==4) {
+                        continue;
+                    }
+                }
+            }
+
             // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
             CrnCommand crnCommand = new CrnCommand();
             crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
@@ -665,13 +698,17 @@
                         if (null == waitWrkMast) {
                             log.error("{}搴撲綅寮傚父锛屾湭妫�绱㈠埌鐩稿簲宸ヤ綔妗o紒", shallowLocNo);
                         } else {
-                            waitWrkMast.setIoPri(15D);
-                            waitWrkMast.setModiTime(new Date());
-                            if (wrkMastMapper.updateById(waitWrkMast) == 0) {
-                                log.error("璋冩暣宸ヤ綔妗d紭鍏堢骇澶辫触锛佸伐浣滃彿={}", waitWrkMast.getWrkNo());
+                            if(waitWrkMast.getWrkSts() == 11) {
+                                waitWrkMast.setIoPri(15D);
+                                waitWrkMast.setModiTime(new Date());
+                                if (wrkMastMapper.updateById(waitWrkMast) == 0) {
+                                    log.error("璋冩暣宸ヤ綔妗d紭鍏堢骇澶辫触锛佸伐浣滃彿={}", waitWrkMast.getWrkNo());
+                                }
+                                continue;
+                            } else {
+
                             }
                         }
-                        continue;
                     } else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) {
                         // 姝ゆ爣璁伴伩鍏嶅娆℃墽琛岀Щ搴撲换鍔�
                         if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk())) {
@@ -1219,6 +1256,81 @@
     }
 
     /**
+     * 鍥犲弻娣卞簱浣嶉樆濉烇紝瀵规祬搴撲綅杩涜绉昏浆锛堝叆搴撶増)
+     * tip锛氬悓姝�
+     */
+    @Transactional
+    public synchronized void moveLocForDeepLocPakin(CrnSlave crn, LocMast shallowLoc, WrkMast pakinWrkMast){
+        LocMast loc = locMastService.selectById(pakinWrkMast.getLocNo());
+
+        // 鑾峰彇宸ヤ綔鍙�
+        int workNo = commonService.getWorkNo(0);
+        // 淇濆瓨宸ヤ綔妗�
+        WrkMast wrkMast = new WrkMast();
+        wrkMast.setWrkNo(workNo);
+        wrkMast.setIoTime(new Date());
+        wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+        wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇
+        wrkMast.setIoPri(15D);
+        wrkMast.setCrnNo(crn.getId());
+        wrkMast.setSourceLocNo(shallowLoc.getLocNo()); // 婧愬簱浣�
+        wrkMast.setLocNo(loc.getLocNo()); // 鐩爣搴撲綅
+        wrkMast.setFullPlt(shallowLoc.getFullPlt()); // 婊℃澘
+        wrkMast.setPicking("N"); // 鎷f枡
+        wrkMast.setExitMk("N"); // 閫�鍑�
+        wrkMast.setEmptyMk(shallowLoc.getLocSts().equals("D")?"Y":"N"); // 绌烘澘
+        wrkMast.setBarcode(shallowLoc.getBarcode()); // 鎵樼洏鐮�
+        wrkMast.setLinkMis("N");
+        wrkMast.setCtnNo("Y");  // 鍏ュ簱闃诲搴撲綅绉昏浆鏍囪
+        wrkMast.setAppeTime(new Date());
+        wrkMast.setModiTime(new Date());
+        int res = wrkMastMapper.insert(wrkMast);
+        if (res == 0) {
+            throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+        }
+        // 宸ヤ綔妗f槑缁嗕繚瀛�
+        if (shallowLoc.getLocSts().equals("F")) {
+            List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", shallowLoc.getLocNo()));
+            for (LocDetl locDetl : locDetls) {
+                WrkDetl wrkDetl = new WrkDetl();
+                wrkDetl.setWrkNo(workNo);
+                wrkDetl.setIoTime(new Date());
+                wrkDetl.setQty(locDetl.getQty());
+                VersionUtils.setWrkDetl(wrkDetl, locDetl); // 鐗堟湰鎺у埗
+                wrkDetl.setAppeTime(new Date());
+                wrkDetl.setModiTime(new Date());
+                if (!wrkDetlService.insert(wrkDetl)) {
+                    throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+                }
+            }
+        }
+        // 淇敼婧愬簱浣嶇姸鎬�
+        if (shallowLoc.getLocSts().equals("D") || shallowLoc.getLocSts().equals("F")) {
+            shallowLoc.setLocSts("S"); // S.鍏ュ簱棰勭害锛屽叆搴撻樆濉炲簱浣嶇Щ杞�
+            shallowLoc.setModiTime(new Date());
+            if (!locMastService.updateById(shallowLoc)){
+                throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
+            }
+        } else {
+            throw new CoolException("婧愬簱浣嶅嚭搴撳け璐�");
+        }
+//        // 淇敼鐩爣搴撲綅鐘舵��
+//        if (loc.getLocSts().equals("O")) {
+//            loc.setLocSts("S"); // S.鍏ュ簱棰勭害
+//            loc.setModiTime(new Date());
+//            if (!locMastService.updateById(loc)) {
+//                throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
+//            }
+//        } else {
+//            throw new CoolException("绉昏浆澶辫触");
+//        }
+        wrkMast.setLocNo(shallowLoc.getLocNo());
+        if (wrkMastMapper.updateById(wrkMast) == 0) {
+            throw new CoolException("淇敼闃诲鍏ュ簱浠诲姟澶辫触");
+        }
+    }
+
+    /**
      * 鍥犲弻娣卞簱浣嶉樆濉烇紝瀵规祬搴撲綅杩涜绉昏浆锛堢珛鍗虫墽琛岀増)
      * tip锛氬悓姝�
      */

--
Gitblit v1.9.1