From ec37295a8adbb8a6a850e1fddf5957ae5ad662e3 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期三, 19 八月 2020 08:52:18 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  189 +++++++++++++++++++++++++++++++++--------------
 1 files changed, 133 insertions(+), 56 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 3f1c98e..6b2276e 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -34,6 +34,7 @@
 import java.util.stream.Collectors;
 
 /**
+ * 绔嬩綋浠撳簱WCS绯荤粺涓绘祦绋嬩笟鍔�
  * Created by vincent on 2020/8/6
  */
 @Slf4j
@@ -70,37 +71,35 @@
         for (DevpSlave devp : slaveProperties.getDevp()) {
             // 閬嶅巻鍏ュ簱鍙�
             for (DevpSlave.Sta inSta : devp.getInSta()) {
-                // 鑾峰彇鏉$爜
+                // 鑾峰彇鏉$爜鎵弿浠俊鎭�
                 BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode());
                 String barcode = barcodeThread.getBarcode();
                 // 鑾峰彇鍏ュ簱绔欎俊鎭�
                 DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
                 StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo());
                 // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
-                if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInreq1()
-                        && !staProtocol.isEmptyMk() && staProtocol.isInreq1() && staProtocol.getWorkNo() ==0
+                if (staProtocol.isAutoing() && staProtocol.isLoading()
+                        && !staProtocol.isEmptyMk() && staProtocol.isInreq1() && staProtocol.getWorkNo()==0
                         && staProtocol.isPakMk() && !Cools.isEmpty(barcode)) {
                     // 鍒ゆ柇閲嶅宸ヤ綔妗�
                     WrkMast wrkMast = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode);
                     if (wrkMast != null) {
-                        log.warn("宸ヤ綔妗d腑宸插瓨鍦ㄨ绔欑姸鎬佷负1鐨勬暟鎹�,宸ヤ綔鍙�-{}", wrkMast.getWrkNo());
+                        log.warn("宸ヤ綔妗d腑宸插瓨鍦ㄨ绔欑姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑鏁版嵁,宸ヤ綔鍙�={}", wrkMast.getWrkNo());
                         continue;
                     }
                     // 鑾峰彇鍏ュ簱閫氱煡妗�
                     List<WaitPakin> waitPakins = waitPakinMapper.selectList(new EntityWrapper<WaitPakin>().eq("barcode", barcode));
+                    if (waitPakins.isEmpty()) {
+                        log.warn("鏃犳鍏ュ簱鏉$爜鏁版嵁銆傛潯鐮佸彿={}", barcode);
+                        continue;
+                    }
                     // 宸ヤ綔鍙�
                     int workNo = commonService.getWorkNo(0);
                     // 妫�绱㈠簱浣�
                     List<String> matNos = waitPakins.stream().map(WaitPakin::getMatnr).distinct().collect(Collectors.toList());
                     StartupDto startupDto = commonService.getLocNo(1, 1, inSta.getStaNo(), matNos);
-                    String locNo = startupDto.getLocNo();
-                    if (!waitPakins.isEmpty()) {
-                        // 鎻掑叆宸ヤ綔鏄庣粏妗�
-                        wrkDetlService.createWorkDetail(workNo, waitPakins, barcode);
-                    } else {
-                        log.warn("鏃犳鍏ュ簱鏉$爜鏁版嵁---{}", barcode);
-                        continue;
-                    }
+                    // 鎻掑叆宸ヤ綔鏄庣粏妗�
+                    wrkDetlService.createWorkDetail(workNo, waitPakins, barcode);
 
                     // 鎻掑叆宸ヤ綔涓绘。
                     wrkMast = new WrkMast();
@@ -135,13 +134,15 @@
                         throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
                     }
 
+                    // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+
                     // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
                     barcodeThread.setBarcode("");
-                    staProtocol.setWorkNo(workNo);
-                    staProtocol.setStaNo(startupDto.getStaNo());
+                    staProtocol.setWorkNo((short) workNo);
+                    staProtocol.setStaNo(startupDto.getStaNo().shortValue());
                     staProtocol.setPakMk(false);
                     staProtocol.setInreq1(false);
-                    boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(4, staProtocol));
+                    boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                     if (!result) {
                         throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
                     }
@@ -168,7 +169,7 @@
 
                 if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInreq1()
                     && staProtocol.getWorkNo() > 0 && staProtocol.isPakMk()){
-                    WrkMast wrkMast = wrkMastMapper.selectPickStep(staProtocol.getWorkNo());
+                    WrkMast wrkMast = wrkMastMapper.selectPickStep(staProtocol.getWorkNo().intValue());
                     if (wrkMast == null) {
                         // 鏃犳嫞鏂欐暟鎹�
                         continue;
@@ -216,11 +217,11 @@
                     }
 
                     // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
-                    staProtocol.setWorkNo(wrkMast.getWrkNo());
-                    staProtocol.setStaNo(wrkMast.getStaNo());
+                    staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
+                    staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
                     staProtocol.setPakMk(false);
                     staProtocol.setInreq1(false);
-                    boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(4, staProtocol));
+                    boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                     if (!result) {
                         throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
                     }
@@ -280,9 +281,9 @@
                     }
 
                     // 2.涓嬪彂绔欑偣淇℃伅
-                    staProtocol.setWorkNo(wrkMast.getWrkNo());
-                    staProtocol.setStaNo(wrkMast.getStaNo());
-                    if (!MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(4, staProtocol))) {
+                    staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
+                    staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
+                    if (!MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol))) {
                         throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
                     }
                 }
@@ -291,7 +292,7 @@
     }
 
     /**
-     * 鍏ュ嚭搴�  ===>>  鍫嗗灈鏈虹珯鍒板簱浣� 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂
+     * 鍏ュ嚭搴�  ===>>  鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂
      */
     public void crnIoExecute(){
         for (CrnSlave crn : slaveProperties.getCrn()) {
@@ -300,6 +301,7 @@
             CrnProtocol crnProtocol = crnThread.getCrnProtocol();
             BasCrnp basCrnp = basCrnpService.selectById(crn.getId());
             if (basCrnp == null) {
+                log.error("{}鍙峰爢鍨涙満灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", crn.getId());
                 continue;
             }
             // 鍙湁褰撳爢鍨涙満绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛�
@@ -342,7 +344,7 @@
             // 鏌ヨ绔欑偣璇︾粏淇℃伅
             BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo());
             if (staDetl == null) {
-                log.error("鍏ュ簱搴� ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo());
+                log.error("鍏ュ簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo());
                 continue;
             }
             if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staDetl.getCanining().equals("Y")) {
@@ -352,7 +354,7 @@
                 continue;
             }
             // 鑾峰彇宸ヤ綔鐘舵�佷负2锛堣澶囦笂璧帮級鐨勫叆搴撳伐浣滄。
-            WrkMast wrkMast = wrkMastMapper.selectPakInStep2(slave.getId(), staProtocol.getWorkNo());
+            WrkMast wrkMast = wrkMastMapper.selectPakInStep2(slave.getId(), staProtocol.getWorkNo().intValue());
             if(null == wrkMast) {
                 log.error("鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts=2, 宸ヤ綔鍙�={}", staProtocol.getWorkNo());
                 continue;
@@ -383,11 +385,14 @@
             if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
                 log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
             } else {
-                // 淇敼宸ヤ綔妗g姸鎬� 2=>3 todo:luxiaotao
-//                Date now = new Date();
-//                wrkMast.setWrkSts(3L);
-//                wrkMast.setCrnStrTime(now);
-//                wrkMast.setModiTime(now);
+                // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓�
+                Date now = new Date();
+                wrkMast.setWrkSts(3L);
+                wrkMast.setCrnStrTime(now);
+                wrkMast.setModiTime(now);
+                if (wrkMastMapper.updateById(wrkMast) == 0) {
+                    log.error("淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+                }
             }
         }
     }
@@ -426,6 +431,8 @@
             if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting().equals("Y")
                     && staProtocol.getWorkNo() == 0) {
                 // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+
+                // 1.鍫嗗灈鏈哄紑濮嬬Щ鍔�
                 CrnCommand crnCommand = new CrnCommand();
                 crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
                 crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙�
@@ -439,6 +446,15 @@
                 crnCommand.setDestinationPosZ(crnStn.getLev().shortValue());     // 鐩爣搴撲綅灞�
                 if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
                     log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
+                } else {
+                    // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓�
+                    Date now = new Date();
+                    wrkMast.setWrkSts(12L);
+                    wrkMast.setCrnStrTime(now);
+                    wrkMast.setModiTime(now);
+                    if (wrkMastMapper.updateById(wrkMast) == 0) {
+                        log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+                    }
                 }
             }
         }
@@ -492,7 +508,7 @@
     }
 
     /**
-     * 鎵ц瀵瑰伐浣滄。鐨勫叆搴撳畬鎴�
+     * 鎵ц瀵瑰伐浣滄。鐨勫畬鎴愭搷浣�
      */
     public void storeFinished() {
         for (CrnSlave crn : slaveProperties.getCrn()) {
@@ -500,50 +516,111 @@
             CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
             CrnProtocol crnProtocol = crnThread.getCrnProtocol();
             //  鐘舵�侊細绛夊緟纭 骞朵笖  浠诲姟瀹屾垚浣� = 1
-            if (crnProtocol.statusType == CrnStatusType.WAITING && crnProtocol.taskFinish == 1 && crnProtocol.getTaskNo() != 0) {
+            if (crnProtocol.statusType == CrnStatusType.WAITING && crnProtocol.getTaskNo() != 0) {
                 // 鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。
                 WrkMast wrkMast = wrkMastMapper.selectPakInStep3(crnProtocol.getTaskNo().intValue());
                 if (wrkMast == null) {
                     log.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getTaskNo());
                     continue;
                 }
-                // 濡傛灉宸ヤ綔鐘舵�佷负3.鍚婅溅鍏ュ簱涓紝鍒欎慨鏀逛负4.鍏ュ簱瀹屾垚
-                if (wrkMast.getWrkSts() == 3) {
-                    Date now = new Date();
+                // 鍏ュ簱 + 搴撲綅杞Щ  ==> 4.鍏ュ簱瀹屾垚
+                if (wrkMast.getWrkSts() == 3 || (wrkMast.getWrkSts() == 12 && wrkMast.getIoType() == 11)){
                     wrkMast.setWrkSts(4L);
-                    wrkMast.setCrnEndTime(now);
-                    wrkMast.setModiTime(now);
-                    // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満
-                    if (wrkMastMapper.updateById(wrkMast) > 0) {
-
+                // 鍑哄簱 + 鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓細12.鍚婅溅鍑哄簱涓� ==> 14.鍑哄簱瀹屾垚
+                } else if (wrkMast.getWrkSts() == 12) {
+                    wrkMast.setWrkSts(14L);
+                }
+                Date now = new Date();
+                wrkMast.setCrnEndTime(now);
+                wrkMast.setModiTime(now);
+                // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満
+                if (wrkMastMapper.updateById(wrkMast) > 0) {
+                    // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------
+                    // 鍫嗗灈鏈哄浣�
+                    if (!MessageQueue.offer(SlaveType.Crn, crn.getId(), new Task(3, new CrnCommand()))) {
+                        log.error("鍫嗗灈鏈哄浣嶅懡浠や笅鍙戝け璐ワ紝宸ヤ綔鍙�={}", wrkMast.getWrkNo());
                     }
                 }
-
-
             }
-
-
-
         }
     }
 
     /**
-     * 鏇存柊鍫嗗灈鏈虹Щ鍔ㄦ椂宸ヤ綔妗g姸鎬�
+     * 鍫嗗灈鏈哄紓甯镐俊鎭褰�
      */
-    public void updateCrnMove() {
-        for (CrnSlave crn : slaveProperties.getCrn()) {
-            // 鑾峰彇鍫嗗灈鏈轰俊鎭�
-            CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
-            CrnProtocol crnProtocol = crnThread.getCrnProtocol();
-            // todo
-            if (crnProtocol.getStatusType() == CrnStatusType.FETCH_POSITION) {
+    public void recCrnErr(){
 
-                WrkMast wrkMast = wrkMastMapper.selectById(crnProtocol.getTaskNo());
+    }
+
+
+    // -------------------------------------------------------------------------------
+
+    /**
+     * 绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐�
+     */
+    public void storeEmptyPlt(){
+        for (DevpSlave devp : slaveProperties.getDevp()) {
+            // 閬嶅巻绌烘澘鍏ュ簱鍙�
+            for (DevpSlave.Sta emptyInSta : devp.getEmptyInSta()) {
+                // 鑾峰彇绌烘澘鍏ュ簱绔欎俊鎭�
+                DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+                StaProtocol staProtocol = devpThread.getStation().get(emptyInSta.getStaNo());
+                // 绔欑偣鏉′欢鍒ゆ柇
+                if (staProtocol.isAutoing() && staProtocol.isLoading() && !staProtocol.isInreq1()
+                        && staProtocol.isEmptyMk() && staProtocol.getWorkNo() == 0 && staProtocol.isPakMk()) {
+                    // 宸ヤ綔鍙�
+                    int workNo = commonService.getWorkNo(0);
+                    // 妫�绱㈠簱浣�
+                    StartupDto startupDto = commonService.getLocNo(1, 1, emptyInSta.getStaNo(), null);
+
+                    // 鎻掑叆宸ヤ綔涓绘。
+                    WrkMast wrkMast = new WrkMast();
+                    wrkMast.setWrkNo(workNo);
+                    wrkMast.setIoTime(new Date());
+                    wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細2.璁惧涓婅蛋
+                    wrkMast.setIoType(10); // 鍏ュ嚭搴撶姸鎬侊細10.绌烘澘鍏ュ簱
+                    wrkMast.setIoPri(10D); // 浼樺厛绾э細10
+                    wrkMast.setCrnNo(startupDto.getCrnNo());
+                    wrkMast.setSourceStaNo(startupDto.getSourceStaNo());
+                    wrkMast.setStaNo(startupDto.getStaNo());
+                    wrkMast.setLocNo(startupDto.getLocNo());
+                    wrkMast.setFullPlt("N"); // 婊℃澘
+                    wrkMast.setPicking("N"); // 鎷f枡
+                    wrkMast.setExitMk("N"); // 閫�鍑�
+                    wrkMast.setEmptyMk("Y"); // 绌烘澘
+                    wrkMast.setLinkMis("N");
+//                    wrkMast.setCtnType(sourceStaNo.getCtnType()); // 瀹瑰櫒绫诲瀷
+                    // 鎿嶄綔浜哄憳鏁版嵁
+                    wrkMast.setAppeTime(new Date());
+                    wrkMast.setModiTime(new Date());
+                    Integer insert = wrkMastMapper.insert(wrkMast);
+                    if (insert == 0) {
+                        throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+                    }
+                    // 鏇存柊鐩爣搴撲綅鐘舵��
+                    LocMast locMast = locMastService.selectById(startupDto.getLocNo());
+                    locMast.setLocSts("S"); // S.鍏ュ簱棰勭害
+                    locMast.setModiTime(new Date());
+                    if (!locMastService.updateById(locMast)){
+                        throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
+                    }
+                    // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+
+                    // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
+                    staProtocol.setWorkNo((short) workNo);
+                    staProtocol.setStaNo(startupDto.getStaNo().shortValue());
+                    staProtocol.setPakMk(false);
+                    staProtocol.setInreq1(false);
+                    boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+                    if (!result) {
+                        throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触");
+                    }
+
+                }
 
 
             }
-
-
         }
     }
+
 }

--
Gitblit v1.9.1