From d2b19008230941c105b57b8f7b49b291560f2cfb Mon Sep 17 00:00:00 2001
From: TQS <56479841@qq.com>
Date: 星期一, 19 八月 2024 11:09:25 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  241 +++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 229 insertions(+), 12 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 bd49c1f..8837902 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -141,6 +141,24 @@
                             News.error("MainServiceImpl  generateStoreWrkFile"+"203涓哄嚭搴撴ā寮忥紝绂佹鍏ュ簱锛岄��鍥炲叆搴撳彛銆傦紒锛侊紒");
                             continue;
                         }
+                        if ( inSta.getStaNo()==113 && devpThread.ioModeOf3F == IoModeType.PAKOUT_MODE) {
+                            //鏈夊嚭搴撲换鍔★紝閫�搴撳埌鍏ュ簱鍙�
+                            staProtocol.setWorkNo((short) 9999);
+                            staProtocol.setStaNo((short)114);
+                            devpThread.setPakMk(staProtocol.getSiteId(), false);
+                            boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+                            News.error("MainServiceImpl  generateStoreWrkFile"+"103涓哄嚭搴撴ā寮忥紝绂佹鍏ュ簱锛岄��鍥炲叆搴撳彛銆傦紒锛侊紒");
+                            continue;
+                        }
+                        if ( inSta.getStaNo()==213 && devpThread.ioModeOf4F == IoModeType.PAKOUT_MODE) {
+                            //鏈夊嚭搴撲换鍔★紝閫�搴撳埌鍏ュ簱鍙�
+                            staProtocol.setWorkNo((short) 9999);
+                            staProtocol.setStaNo((short)214);
+                            devpThread.setPakMk(staProtocol.getSiteId(), false);
+                            boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+                            News.error("MainServiceImpl  generateStoreWrkFile"+"203涓哄嚭搴撴ā寮忥紝绂佹鍏ュ簱锛岄��鍥炲叆搴撳彛銆傦紒锛侊紒");
+                            continue;
+                        }
                     }
 
                     // 鑾峰彇鏉$爜鎵弿浠俊鎭�
@@ -213,7 +231,7 @@
                             // plc 澶勭悊
                             barcodeThread.setBarcode("");
                             staProtocol.setWorkNo(dto.getWorkNo().shortValue());
-                            staProtocol.setStaNo(dto.getStaNo().shortValue());
+                            staProtocol.setStaNo(Utils.getStaNoConvertCentreOther3(dto.getStaNo(),inSta.getStaNo()).shortValue());
                             devpThread.setPakMk(staProtocol.getSiteId(), false);
 
                             ledThread.errorReset();
@@ -854,9 +872,33 @@
                                     continue;
                                 }
                                 WrkMast onlyWrkNo = wrkMastMapper.selectByOnlyWrkNo(crnProtocol.getTaskNo().intValue());
+                                if (Cools.isEmpty(onlyWrkNo) && (crnStn.getStaNo()  == 112 || crnStn.getStaNo() == 212)){
+                                    //  鍒ゆ柇鍫嗗灈鏈虹姸鎬佺瓑寰呯‘璁�
+                                    if (crnProtocol.modeType == CrnModeType.AUTO
+                                            && crnProtocol.statusType == CrnStatusType.WAITING
+                                            && crnProtocol.forkPosType == CrnForkPosType.HOME
+                                            && crnProtocol.getBay().equals(crnStn.getBay().shortValue()) && crnProtocol.getLevel().equals(crnStn.getLev().shortValue())) {
+                                        News.info("鍫嗗灈鏈烘帴椹充换鍔″畬鎴愶紝宸ヤ綔鍙凤細"+crnProtocol.getTaskNo()+"锛涙墽琛屽爢鍨涙満鍙凤細"+crnSlave.getId()+"锛涙帴椹虫斁璐т綅锛�"+crnStn.getStaNo()+"锛涙帴椹宠璧扮洰鏍囩珯锛�"+Utils.getStaNoConvertCentreOther2(crnStn.getStaNo()));
+                                        // 涓嬪彂绔欑偣淇℃伅
+                                        News.error("new867===>"+crnProtocol.getTaskNo());
+                                        News.error("new867===>"+Utils.getStaNoConvertCentreOther2(crnStn.getStaNo()).toString());
+                                        staProtocol.setWorkNo(crnProtocol.getTaskNo());
+                                        staProtocol.setStaNo(Utils.getStaNoConvertCentreOther2(crnStn.getStaNo()).shortValue());
+                                        if (!MessageQueue.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(2, staProtocol))) {
+                                            continue;
+                                        }
+                                        // 澶嶄綅鍫嗗灈鏈�
+                                        crnThread.setResetFlag(true);
+                                        continue;
+                                    }
+                                }
                                 if (Cools.isEmpty(onlyWrkNo) ||
-                                        (onlyWrkNo.getStaNo()!=114 && onlyWrkNo.getStaNo()!=214 &&
-                                        onlyWrkNo.getSourceStaNo()!=114 && onlyWrkNo.getSourceStaNo()!=214)){
+                                        ((onlyWrkNo.getStaNo()!=114 && onlyWrkNo.getStaNo()!=214 &&
+                                                onlyWrkNo.getSourceStaNo()!=114 && onlyWrkNo.getSourceStaNo()!=214)
+                                                &&
+                                                (onlyWrkNo.getStaNo()!=113 && onlyWrkNo.getStaNo()!=213 &&
+                                                        onlyWrkNo.getSourceStaNo()!=113 && onlyWrkNo.getSourceStaNo()!=213))
+                                ){
                                     continue;
                                 }
                                 //  鍒ゆ柇鍫嗗灈鏈虹姸鎬佺瓑寰呯‘璁�
@@ -1023,7 +1065,7 @@
                         //  鍒ゆ柇鍫嗗灈鏈虹姸鎬佺瓑寰呯‘璁�
                         if (crnProtocol.modeType == CrnModeType.AUTO
                                 && crnProtocol.statusType == CrnStatusType.IDLE
-                                && crnProtocol.forkPosType == CrnForkPosType.HOME) {
+                                && crnProtocol.forkPosType == CrnForkPosType.HOME && crnStn.getBay()!=(short)4) {
                             News.info("鍫嗗灈鏈烘帴椹充换鍔℃墽琛岋紝宸ヤ綔鍙凤細"+staProtocol.getWorkNo()+"锛涙墽琛屽爢鍨涙満鍙凤細"+slave.getId()+"锛涙帴椹冲彇璐т綅锛�"+crnStn.getStaNo()+"锛涙帴椹虫斁璐т綅锛�"+staProtocol.getSiteId());
                             // 鍫嗗灈鏈烘帴椹充换鍔″懡浠や笅鍙戝尯 --------------------------------------------------------------------------
                             CrnCommand crnCommand = new CrnCommand();
@@ -1031,7 +1073,39 @@
                             crnCommand.setTaskNo(onlyWrkNo.getWrkNo().shortValue()); // 宸ヤ綔鍙�
                             crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
                             crnCommand.setCommand((short) 0);
-                            crnCommand.setTaskMode(CrnTaskModeType.XY_MOVE); // 浠诲姟妯″紡:  绔欎綅杞Щ
+                            crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
+                            crnCommand.setSourcePosX(crnStn.getRow().shortValue());     // 婧愬簱浣嶆帓
+                            crnCommand.setSourcePosY(crnStn.getBay().shortValue());     // 婧愬簱浣嶅垪
+                            crnCommand.setSourcePosZ(crnStn.getLev().shortValue());     // 婧愬簱浣嶅眰
+                            crnCommand.setDestinationPosX(Utils.getRow(staProtocol.getSiteId()));     // 鐩爣搴撲綅鎺�
+                            crnCommand.setDestinationPosY(Utils.getBay(staProtocol.getSiteId()));     // 鐩爣搴撲綅鍒�
+                            crnCommand.setDestinationPosZ(Utils.getLev(staProtocol.getSiteId()));     // 鐩爣搴撲綅灞�
+                            if (!MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, crnCommand))) {
+                                News.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", slave.getId(), JSON.toJSONString(crnCommand));
+                            }
+                            return true;
+                        }
+                    } else if (!Cools.isEmpty(onlyWrkNo) && onlyWrkNo.getCrnNo()==2 && onlyWrkNo.getWrkSts()>16 && crnProtocol.getCrnNo()!=2 && onlyWrkNo.getIoType()>100){
+                        //                News.error("{}绔欑偣鏌ヨ鏃犲緟鍏ュ簱鏁版嵁 宸ヤ綔鍙�={}", crnStn.getStaNo(), staProtocol.getWorkNo());
+                        // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
+                        if (wrkMastMapper.selectWorking(slave.getId()) != null) {
+                            continue;
+                        }
+                        if (Cools.isEmpty(staProtocol.getWorkNo()) || !staProtocol.isLoading()){
+                            continue;
+                        }
+                        //  鍒ゆ柇鍫嗗灈鏈虹姸鎬佺瓑寰呯‘璁�
+                        if (crnProtocol.modeType == CrnModeType.AUTO
+                                && crnProtocol.statusType == CrnStatusType.IDLE
+                                && crnProtocol.forkPosType == CrnForkPosType.HOME && crnStn.getBay()==(short)4) {
+                            News.info("鍫嗗灈鏈烘帴椹充换鍔℃墽琛岋紝宸ヤ綔鍙凤細"+staProtocol.getWorkNo()+"锛涙墽琛屽爢鍨涙満鍙凤細"+slave.getId()+"锛涙帴椹冲彇璐т綅锛�"+crnStn.getStaNo()+"锛涙帴椹虫斁璐т綅锛�"+staProtocol.getSiteId());
+                            // 鍫嗗灈鏈烘帴椹充换鍔″懡浠や笅鍙戝尯 --------------------------------------------------------------------------
+                            CrnCommand crnCommand = new CrnCommand();
+                            crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
+                            crnCommand.setTaskNo(onlyWrkNo.getWrkNo().shortValue()); // 宸ヤ綔鍙�
+                            crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
+                            crnCommand.setCommand((short) 0);
+                            crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
                             crnCommand.setSourcePosX(crnStn.getRow().shortValue());     // 婧愬簱浣嶆帓
                             crnCommand.setSourcePosY(crnStn.getBay().shortValue());     // 婧愬簱浣嶅垪
                             crnCommand.setSourcePosZ(crnStn.getLev().shortValue());     // 婧愬簱浣嶅眰
@@ -1044,7 +1118,7 @@
                             return true;
                         }
                     }
-                    continue;
+                        continue;
                 } catch (Exception e){
                     News.info("鍫嗗灈鏈烘帴椹充换鍔℃墽琛岋紝寮傚父锛�"+e.getMessage());
                 }
@@ -1368,6 +1442,14 @@
                 }
                 if (wrkMast.getStaNo() == 203 && devpThread.ioModeOf2F != IoModeType.PAKOUT_MODE) {
                     News.error("MainServiceImpl  locToCrnStn"+"203闈炲嚭搴撴ā寮忥紝绂佹鍑哄簱銆備换鍔″彿:{}锛侊紒锛�",wrkMast.getWrkNo());
+                    return false;
+                }
+                if (wrkMast.getStaNo() == 113 && devpThread.ioModeOf3F != IoModeType.PAKOUT_MODE) {
+                    News.error("MainServiceImpl  locToCrnStn"+"113闈炲嚭搴撴ā寮忥紝绂佹鍑哄簱銆備换鍔″彿:{}锛侊紒锛�",wrkMast.getWrkNo());
+                    return false;
+                }
+                if (wrkMast.getStaNo() == 213 && devpThread.ioModeOf4F != IoModeType.PAKOUT_MODE) {
+                    News.error("MainServiceImpl  locToCrnStn"+"213闈炲嚭搴撴ā寮忥紝绂佹鍑哄簱銆備换鍔″彿:{}锛侊紒锛�",wrkMast.getWrkNo());
                     return false;
                 }
 
@@ -3496,6 +3578,7 @@
             SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, ste.getId());
             SteProtocol steProtocol = steThread.getSteProtocol();
             if (steProtocol == null) { continue; }
+            if (Cools.isEmpty(steProtocol.loca)) continue;
             if (steProtocol.loca==0) continue;
             if (steProtocol.getWaiting() && steProtocol.getTaskNo() == 0){
                 News.info("ste[id={}] 鏀跺埌绛夊緟WCS纭淇″彿锛屼絾鏄换鍔″彿(鍦板潃V824)涓�0", steProtocol.getSteNo());
@@ -3913,6 +3996,24 @@
                         News.error("MainServiceImpl  storeEmptyPlt"+"203涓哄嚭搴撴ā寮忥紝绂佹鍏ュ簱锛岄��鍥炲叆搴撳彛銆傦紒锛侊紒");
                         continue;
                     }
+                    if ( emptyInSta.getStaNo()==113 && devpThread.ioModeOf3F == IoModeType.PAKOUT_MODE) {
+                        //鏈夊嚭搴撲换鍔★紝閫�搴撳埌鍏ュ簱鍙�
+                        staProtocol.setWorkNo((short) 9999);
+                        staProtocol.setStaNo((short)100);
+                        devpThread.setPakMk(staProtocol.getSiteId(), false);
+                        boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+                        News.error("MainServiceImpl  storeEmptyPlt"+"113涓哄嚭搴撴ā寮忥紝绂佹鍏ュ簱锛岄��鍥炲叆搴撳彛銆傦紒锛侊紒");
+                        continue;
+                    }
+                    if ( emptyInSta.getStaNo()==213 && devpThread.ioModeOf4F == IoModeType.PAKOUT_MODE) {
+                        //鏈夊嚭搴撲换鍔★紝閫�搴撳埌鍏ュ簱鍙�
+                        staProtocol.setWorkNo((short) 9999);
+                        staProtocol.setStaNo((short)200);
+                        devpThread.setPakMk(staProtocol.getSiteId(), false);
+                        boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+                        News.error("MainServiceImpl  storeEmptyPlt"+"213涓哄嚭搴撴ā寮忥紝绂佹鍏ュ簱锛岄��鍥炲叆搴撳彛銆傦紒锛侊紒");
+                        continue;
+                    }
                 }
 
                 // 绔欑偣鏉′欢鍒ゆ柇
@@ -4108,9 +4209,6 @@
      */
     public synchronized void ledReset() {
         for (LedSlave led : slaveProperties.getLed()) {
-            if (led.getId()>3){
-                continue;
-            }
             // 鑾峰彇杈撻�佺嚎plc绾跨▼
             DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, led.getDevpPlcId());
             // 鍛戒护闆嗗悎
@@ -4682,10 +4780,10 @@
                 SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
 
                 for (DevpSlave.Sta inSta : devp.getInSta()) {
-                    Integer sourceStaNo = inSta.getStaNo()==103 ? 104 : 204;
+                    Integer sourceStaNo = inSta.getStaNo()==103 ? 104 : inSta.getStaNo()==113 ? 104 : 204;
                     WrkMast pakout = wrkMastMapper.selectWorkingPakout(sourceStaNo);
                     switch (inSta.getStaNo()) {
-                        case 103://1F
+                        case 103://1F1
                             if (pakout != null) {
                                 if (devpThread.ioModeOf1F != IoModeType.PAKOUT_MODE) {
                                     // 鍑哄簱鍒囨崲涓�
@@ -4703,7 +4801,7 @@
                                 devpThread.ioModeOf1F = IoModeType.PAKIN_MODE;
                             }
                             break;
-                        case 203://2F
+                        case 203://1F2
                             if (pakout != null) {
                                 if (devpThread.ioModeOf2F != IoModeType.PAKOUT_MODE) {
                                     // 鍑哄簱鍒囨崲涓�
@@ -4721,6 +4819,125 @@
                                 devpThread.ioModeOf2F = IoModeType.PAKIN_MODE;
                             }
                             break;
+//                        case 113://2F1
+//                            if (pakout != null) {
+//                                if (devpThread.ioModeOf3F != IoModeType.PAKOUT_MODE) {
+//                                    // 鍑哄簱鍒囨崲涓�
+////                                    devpThread.ioModeOf2F = IoModeType.PAKOUT_BOOTING;
+////                                    WrkMast pakin = wrkMastMapper.selectWorkingPakin(inSta.getStaNo());
+////                                    if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading()
+////                                            && !devpThread.getStation().get(inSta.getStaNo()-1).isLoading()
+////                                            && devpThread.getStation().get(inSta.getStaNo()-1).getWorkNo()==0) {
+////                                        // 鍑哄簱妯″紡
+//                                    devpThread.ioModeOf3F = IoModeType.PAKOUT_MODE;
+////                                    }
+//                                }
+//                            } else {
+//                                // 鍏ュ簱妯″紡
+//                                devpThread.ioModeOf3F = IoModeType.PAKIN_MODE;
+//                            }
+//                            break;
+//                        case 213://2F2
+//                            if (pakout != null) {
+//                                if (devpThread.ioModeOf4F != IoModeType.PAKOUT_MODE) {
+//                                    // 鍑哄簱鍒囨崲涓�
+////                                    devpThread.ioModeOf2F = IoModeType.PAKOUT_BOOTING;
+////                                    WrkMast pakin = wrkMastMapper.selectWorkingPakin(inSta.getStaNo());
+////                                    if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading()
+////                                            && !devpThread.getStation().get(inSta.getStaNo()-1).isLoading()
+////                                            && devpThread.getStation().get(inSta.getStaNo()-1).getWorkNo()==0) {
+////                                        // 鍑哄簱妯″紡
+//                                    devpThread.ioModeOf4F = IoModeType.PAKOUT_MODE;
+////                                    }
+//                                }
+//                            } else {
+//                                // 鍏ュ簱妯″紡
+//                                devpThread.ioModeOf4F = IoModeType.PAKIN_MODE;
+//                            }
+//                            break;
+                    }
+                }
+
+            }
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+    public synchronized void ioConvert2F() {
+        try {
+            // 鏍规嵁杈撻�佺嚎plc閬嶅巻
+            for (DevpSlave devp : slaveProperties.getDevp()) {
+                if (devp.getId() == 1){
+                    continue;
+                }
+                SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
+
+                for (DevpSlave.Sta inSta : devp.getInSta()) {
+                    Integer staNoEnd = inSta.getStaNo()==113 ? 114 : 214;
+                    WrkMast pakout = wrkMastMapper.selectWorkingPakoutTwoF(staNoEnd);
+                    boolean sign = true;
+                    int[] staNos = new int[3];
+
+                    switch (inSta.getStaNo()) {
+                        case 113://2F1
+                            staNos = new int[]{112,113,114};
+                            for (int staNo : staNos){
+                                StaProtocol staProtocol = devpThread.getStation().get(staNo);
+                                if (Cools.isEmpty(staProtocol)) continue;
+                                if (!staProtocol.isAutoing() || staProtocol.isLoading() || staProtocol.getWorkNo()>0){
+                                    sign = false;
+                                }
+                            }
+                            if (sign){
+                                if (pakout != null) {
+                                    if (devpThread.ioModeOf3F != IoModeType.PAKOUT_MODE) {
+
+                                        // 鍑哄簱鍒囨崲涓�
+//                                    devpThread.ioModeOf2F = IoModeType.PAKOUT_BOOTING;
+//                                    WrkMast pakin = wrkMastMapper.selectWorkingPakin(inSta.getStaNo());
+//                                    if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading()
+//                                            && !devpThread.getStation().get(inSta.getStaNo()-1).isLoading()
+//                                            && devpThread.getStation().get(inSta.getStaNo()-1).getWorkNo()==0) {
+//                                        // 鍑哄簱妯″紡
+                                        devpThread.ioModeOf3F = IoModeType.PAKOUT_MODE;
+//                                    }
+                                    }
+                                } else {
+                                    // 鍏ュ簱妯″紡
+                                    devpThread.ioModeOf3F = IoModeType.PAKIN_MODE;
+
+                                }
+                            }
+                            break;
+                        case 213://2F2
+                            staNos = new int[]{212,213,214};
+                            for (int staNo : staNos){
+                                StaProtocol staProtocol = devpThread.getStation().get(staNo);
+                                if (Cools.isEmpty(staProtocol)) continue;
+                                if (!staProtocol.isAutoing() || staProtocol.isLoading()){
+                                    sign = false;
+                                }
+                            }
+                            if (sign){
+                                if (pakout != null) {
+                                    if (devpThread.ioModeOf4F != IoModeType.PAKOUT_MODE) {
+                                        // 鍑哄簱鍒囨崲涓�
+//                                    devpThread.ioModeOf2F = IoModeType.PAKOUT_BOOTING;
+//                                    WrkMast pakin = wrkMastMapper.selectWorkingPakin(inSta.getStaNo());
+//                                    if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading()
+//                                            && !devpThread.getStation().get(inSta.getStaNo()-1).isLoading()
+//                                            && devpThread.getStation().get(inSta.getStaNo()-1).getWorkNo()==0) {
+//                                        // 鍑哄簱妯″紡
+                                        devpThread.ioModeOf4F = IoModeType.PAKOUT_MODE;
+//                                    }
+                                    }
+                                } else {
+                                    // 鍏ュ簱妯″紡
+                                    devpThread.ioModeOf4F = IoModeType.PAKIN_MODE;
+                                }
+                            }
+                            break;
                     }
                 }
 

--
Gitblit v1.9.1