From eb96c650d25d9d17ea3c582cd091dbeff9909bf1 Mon Sep 17 00:00:00 2001
From: tqs <56479841@qq.com>
Date: 星期五, 23 十二月 2022 08:52:07 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  126 +++++++++++++++++++++++++++++++++---------
 1 files changed, 99 insertions(+), 27 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 44e1231..4ff55ab 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -331,6 +331,7 @@
     /**
      * 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱銆愮2闃舵銆�
      */
+    @Transactional
     public synchronized void stnToCrnStnPick1(){
         for (DevpSlave devp : slaveProperties.getDevp()) {
             // 閬嶅巻鎷f枡鍏ュ簱鍙�
@@ -455,6 +456,7 @@
                             }
 
                             String sourceLocNo = wrkMast.getSourceLocNo().trim();
+
                             // 鏇存柊宸ヤ綔妗f暟鎹姸鎬�
                             wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57
                             wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋
@@ -470,14 +472,8 @@
                             if (wrkMastMapper.setSteEmpty(wrkMast.getWrkNo()) == 0) {
                                 throw new CoolException(wrkMast.getWrkNo() + "鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�");
                             }
+
                             LocMast locMast = null;
-                            // 淇敼婧愬簱浣嶇姸鎬� O.绌哄簱浣�
-//                            locMast = locMastService.selectById(sourceLocNo);
-//                            locMast.setLocSts("O");
-//                            locMast.setModiTime(new Date());
-//                            if (!locMastService.updateById(locMast)) {
-//                                throw new CoolException(wrkMast.getWrkNo() + "淇敼婧愬簱浣嶇姸鎬� O.绌哄簱浣�");
-//                            }
                             // 淇敼鐩爣搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴�
                             locMast = locMastService.selectById(wrkMast.getLocNo());
                             locMast.setLocSts("Q");
@@ -485,10 +481,21 @@
                             if (!locMastService.updateById(locMast)) {
                                 throw new CoolException(wrkMast.getWrkNo() + "淇敼鐩爣搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴�");
                             }
-                            // 搴撳瓨鏄庣粏杞Щ
-//                            if (!locDetlService.updateLocNo(wrkMast.getLocNo(), sourceLocNo)) {
-//                                throw new CoolException(wrkMast.getWrkNo() + "浠诲姟搴撳瓨鏄庣粏杞Щ澶辫触锛侊紒锛�");
-//                            }
+                            // 婧愬簱浣嶅簱瀛樻槑缁嗚浆绉诲埌鐩爣搴撲綅
+                            if (!locDetlService.updateLocNo(wrkMast.getLocNo(), sourceLocNo)) {
+                                throw new CoolException(wrkMast.getLocNo() + "浠诲姟搴撳瓨鏄庣粏杞Щ澶辫触锛侊紒锛�");
+                            }
+
+                            // 淇敼婧愬簱浣嶇姸鎬� O.绌哄簱浣�
+                            LocMast sourceLocMast = locMastService.selectById(sourceLocNo);
+                            if (sourceLocMast.getLocSts().equals("P")) {
+                                sourceLocMast.setLocSts("O");
+                                sourceLocMast.setModiTime(new Date());
+                                if (!locMastService.updateById(sourceLocMast)) {
+                                    throw new CoolException(wrkMast.getWrkNo() + "淇敼婧愬簱浣嶇姸鎬� O.绌哄簱浣�");
+                                }
+                                locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", sourceLocNo));
+                            }
 
                             // 鏉$爜璁惧澶勭悊
                             barcodeThread.setBarcode("");
@@ -544,22 +551,85 @@
     public synchronized void pickWrkCompleteStaNo() {
         List<WrkMast> wrkMasts = wrkMastMapper.selectPick17(null, null);
         for (WrkMast wrkMast : wrkMasts) {
-            // 淇敼婧愬簱浣嶇姸鎬� O.绌哄簱浣�
-            LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo());
-            if (locMast.getLocSts().equals("P")) {
-                locMast.setLocSts("O");
-                locMast.setModiTime(new Date());
-                if (!locMastService.updateById(locMast)) {
-                    throw new CoolException(wrkMast.getWrkNo() + "淇敼婧愬簱浣嶇姸鎬� O.绌哄簱浣�");
-                }
-                locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getSourceLocNo()));
-            }
+//            // 淇敼婧愬簱浣嶇姸鎬� O.绌哄簱浣�
+//            LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo());
+//            if (locMast.getLocSts().equals("P")) {
+//                locMast.setLocSts("O");
+//                locMast.setModiTime(new Date());
+//                if (!locMastService.updateById(locMast)) {
+//                    throw new CoolException(wrkMast.getWrkNo() + "淇敼婧愬簱浣嶇姸鎬� O.绌哄簱浣�");
+//                }
+//                locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getSourceLocNo()));
+//            }
             // 淇敼宸ヤ綔妗�
             wrkMast.setIoPri(13D);
             wrkMast.setModiTime(new Date());
             if (wrkMastMapper.updateById(wrkMast) == 0) {
                 log.error("鏇存柊宸ヤ綔妗g殑浼樺厛绾уけ璐ワ紒锛侊紒 [宸ヤ綔鍙�:{}]", wrkMast.getWrkNo());
             }
+        }
+    }
+
+    /**
+     * 鎷f枡/鐩樼偣杞叏鏉垮悗锛�300绔欎换鍔¤浆100/200绔欏幓
+     */
+    public synchronized void transPickToFullChangeStn() {
+        for (DevpSlave devp : slaveProperties.getDevp()) {
+            // 閬嶅巻鎷f枡鍑哄簱鍙�
+            for (DevpSlave.Sta pickSta : devp.getPickOutSta()) {
+                // 鑾峰彇鎷f枡鍑哄簱绔欎俊鎭�
+                DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+                StaProtocol staProtocol = devpThread.getStation().get(pickSta.getStaNo());
+                if (staProtocol == null) {
+                    continue;
+                } else {
+                    staProtocol = staProtocol.clone();
+                }
+
+                if (staProtocol.isAutoing()
+                        && staProtocol.isLoading()
+                        && staProtocol.isInEnable()
+                        && staProtocol.getWorkNo() > 0
+                        && staProtocol.getStaNo().equals(staProtocol.getSiteId().shortValue())
+                        && staProtocol.isPakMk()){
+                    WrkMast wrkMast = wrkMastMapper.selectById(staProtocol.getWorkNo());
+                    if(Cools.isEmpty(wrkMast)){
+                        log.error("鎷f枡/鐩樼偣杞叏鏉�,浠诲姟鍙峰伐浣滄。涓嶅瓨鍦�===>>[浠诲姟鍙�:{}]", staProtocol.getWorkNo());
+                        continue;
+                    }
+                    if (wrkMast.getIoType() != 101) { continue; }
+
+                    //鎷f枡杞叏鏉块粯璁ゅ嚭搴撶珯100绔欙紝褰�100绔欐湁鐗╂椂锛岀洰鏍囨敼200绔�
+                    Integer staNo = 100;
+                    StaProtocol staProtocol100 = devpThread.getStation().get(staNo);
+                    if (staProtocol100 == null) {
+                        continue;
+                    } else {
+                        staProtocol100 = staProtocol100.clone();
+                    }
+                    if (staProtocol100.isLoading()) {
+                        staNo = 200;
+                    }
+
+                    // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
+                    staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
+                    staProtocol.setStaNo(staNo.shortValue());
+                    devpThread.setPakMk(staProtocol.getSiteId(), false);
+                    boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+                    if (!result) {
+                        log.error("鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
+                    } else {
+                        wrkMast.setStaNo(staNo);
+                        wrkMast.setModiTime(new Date());
+                        if (wrkMastMapper.updateById(wrkMast) == 0) {
+                            log.error("鏇存柊宸ヤ綔妗g殑鐩爣绔欏け璐ワ紒锛侊紒 [宸ヤ綔鍙�:{}]", wrkMast.getWrkNo());
+                        }
+                    }
+
+                }
+            }
+
+
         }
     }
 
@@ -932,13 +1002,13 @@
             WrkMast one = wrkMastMapper.selectLocMoveData(slave.getId());
             if(!Cools.isEmpty(one)){
                 //瀛樺湪绉诲簱浠诲姟锛屼笖鍦ㄧЩ鍑轰腑锛屼笖绉诲簱婧愬簱浣嶄笌寰呭嚭搴撳簱浣嶄笉鍦ㄥ悓涓�搴撲綅缁勶紝鏃惰烦鍑猴紝纭繚绉诲簱/鍑哄簱鍏ㄥ浠诲姟瀹屾垚鍚庯紝鍐嶆墽琛屼笅涓�绗�
-                if(wrkMast.getWrkNo() ==11  && one.getWrkSts() > 10 && (Utils.getGroupRow(wrkMast.getSourceLocNo()) != Utils.getGroupRow(one.getSourceLocNo())
+                if(wrkMast.getWrkNo() == 11  && one.getWrkSts() > 10 && (Utils.getGroupRow(wrkMast.getSourceLocNo()) != Utils.getGroupRow(one.getSourceLocNo())
                         || Utils.getBay(wrkMast.getSourceLocNo()) != Utils.getBay(one.getSourceLocNo())
                         || Utils.getLev(wrkMast.getSourceLocNo()) != Utils.getLev(one.getSourceLocNo()))){
                     continue;
                 }
                 //瀛樺湪绉诲簱浠诲姟锛屼笖鍦ㄧЩ鍥炰腑锛屼笖绉诲簱鐩爣搴撲綅涓庡緟鍑哄簱搴撲綅涓嶅湪鍚屼竴搴撲綅缁勶紝鏃惰烦鍑猴紝纭繚绉诲簱/鍑哄簱鍏ㄥ浠诲姟瀹屾垚鍚庯紝鍐嶆墽琛屼笅涓�绗�
-                if(wrkMast.getWrkNo() ==11  && one.getWrkSts() < 11  && (Utils.getGroupRow(wrkMast.getSourceLocNo()) != Utils.getGroupRow(one.getLocNo())
+                if(wrkMast.getWrkNo() == 11  && one.getWrkSts() < 11  && (Utils.getGroupRow(wrkMast.getSourceLocNo()) != Utils.getGroupRow(one.getLocNo())
                         || Utils.getBay(wrkMast.getSourceLocNo()) != Utils.getBay(one.getLocNo())
                         || Utils.getLev(wrkMast.getSourceLocNo()) != Utils.getLev(one.getLocNo()))){
                     continue;
@@ -949,7 +1019,7 @@
             boolean flag = false;
             if(!locMastService.isOutMost(wrkMast.getSourceLocNo())){
                 WrkMast wrkMastMove = wrkMastMapper.selectLocMoveWorking(slave.getId());
-                if(wrkMastMove != null){
+                if(wrkMastMove != null && wrkMast.getWrkNo() == 11){
                     continue;
                 }
 
@@ -1446,7 +1516,7 @@
                             }
                         }
                         LocMast sourceLoc = locMastService.selectById(wrkMast.getSourceLocNo());
-                        if(sourceLoc.getLocSts().equals("F")){
+                        if(sourceLoc.getLocSts().equals("F") || sourceLoc.getLocSts().equals("D")){
                             sourceLoc.setLocSts("R"); // R.鍑哄簱棰勭害
                             sourceLoc.setModiTime(new Date());
                             if (!locMastService.updateById(sourceLoc)) {
@@ -2119,7 +2189,7 @@
         SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo);
         SteProtocol steProtocol = steThread.getSteProtocol();
         if (steProtocol == null) { return; }
-        if (steProtocol.isIdle()) {
+        if (steProtocol.isIdle() && steProtocol.getLoad() == 0) {
             // 鍫嗗灈鏈虹┖闂�
             if (crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() == 0) {
                 LocMast locMast;
@@ -2198,7 +2268,7 @@
         SteProtocol steProtocol = steThread.getSteProtocol();
         if (steProtocol == null) { return; }
         // 绌挎杞︾┖闂�
-        if (steProtocol.isIdle()) {
+        if (steProtocol.isIdle() && steProtocol.getLoad() == 0) {
             // 鍫嗗灈鏈虹┖闂�
             if (crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() == 0) {
 
@@ -2544,6 +2614,8 @@
                                     log.error("搴撲綅绉昏浆 ===>> 杞Щ搴撳瓨鏄庣粏鏁版嵁澶辫触锛沎婧愬簱浣�={}],[鐩爣搴撲綅={}]", wrkMast.getSourceLocNo(), wrkMast.getLocNo());
                                     continue;
                                 }
+                            } else {
+                                locSts = "D";
                             }
                             if(Cools.isEmpty(locSts)){
                                 log.error("搴撲綅绉昏浆 ===>> 搴撳瓨鐘舵�佷负绌猴紱[婧愬簱浣�={}],[鐩爣搴撲綅={}]", wrkMast.getSourceLocNo(), wrkMast.getLocNo());

--
Gitblit v1.9.1