From ad3db22590c09649ce34189ad45d299f6c979abe Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期六, 22 六月 2024 13:49:09 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  216 ++++++++++++++++++++++++++++++++---------------------
 1 files changed, 130 insertions(+), 86 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 e8eb287..96191c9 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -45,6 +45,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
+import springfox.documentation.spring.web.json.Json;
 
 import java.util.*;
 import java.util.concurrent.TimeUnit;
@@ -4414,11 +4415,14 @@
     }
 
     /**
-     *  Jar浠诲姟鍒涘缓
+     *  Jar浠诲姟鍒涘缓  //瀹屾垚
      */
-    public synchronized void jarGenerateWrkMastSta() {
+    public synchronized void jarMastGenerate() {
         for (JarSlave jarSlave : slaveProperties.getJar()) {
             try{
+                if (wrkMastExecuteService.getWrkMastByJarIdCount(jarSlave.getId())!=0){
+                    continue;
+                }
                 for(JarSlave.StaStn staStn : jarSlave.getJarInSta()){
                     // 鑾峰彇纭寲缃愬叆搴撶珯淇℃伅
                     DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, staStn.getDevpPlcId());
@@ -4430,22 +4434,34 @@
                     }
                     if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo()!=0){
                         try{
-                            if (basJarMastService.selectJarMastOperation(jarSlave.getId(),1)!=0){
+                            if (basJarMastService.selectJarMastOperation(jarSlave.getId(),2)!=0){
                                 break;
                             }
-                            if (basJarMastService.selectJarMastOperation(jarSlave.getJarOtherId(),1)!=0){
+                            if (basJarMastService.selectJarMastOperation(jarSlave.getJarOtherId(),3)!=0){
 //                            log.error("{}鍙峰皬杞�",jarSlave.getJarOtherId());
                                 break;
                             }
-                            if (wrkMastExecuteService.getWrkMastByJarIdCount(jarSlave.getId())!=0){
+                            if (basJarMastService.getJarMastByJarIdCount(jarSlave.getId())>=14){
                                 break;
                             }
-                            if (basJarMastService.getJarMastByJarIdCount(jarSlave.getId())>=7){
+                            if (basJarMastService.selectJarMastOperation(jarSlave.getId(),0,9)>=7){
                                 break;
                             }
-                            BasJarMast jarMastByJarIdMax = basJarMastService.getJarMastByJarIdMax(jarSlave.getId());
+                            if (!Objects.equals
+                                    (
+                                    basJarMastService.selectJarMastOperation(jarSlave.getId(), 0, 4)
+                                    ,
+                                    basJarMastService.selectJarMastOperation(jarSlave.getId(), 0, 9)
+                                    )
+                            ){
+                                break;
+                            }
+                            BasJarMast jarMastByJarIdMax = basJarMastService.getJarMastByJarIdMax(jarSlave.getId(),0,4);
                             int jarLocDigit = 0;
                             if (Cools.isEmpty(jarMastByJarIdMax)){
+                                if (basJarMastService.selectJarMastOperation(jarSlave.getId(),0,4)!=0){
+                                    break;
+                                }
                                 jarLocDigit = 1;
                             } else if (jarMastByJarIdMax.getJarLocDigit()<7){
                                 jarLocDigit = jarMastByJarIdMax.getJarLocDigit()+1;
@@ -4464,7 +4480,7 @@
                             if (!Cools.isEmpty(wrkMastExecute)){
                                 continue;
                             }
-                            if (jarGenerateWrkMastStaExecute(jarSlave,wrkMast,jarLocDigit,staStn.getStaNo())){
+                            if (jarMastGenerateExecute(jarSlave,wrkMast,jarLocDigit,staStn.getStaNo())){
                                 return;
                             }
                         }catch (Exception e){
@@ -4480,11 +4496,11 @@
     }
 
     /**
-     *  Jar浠诲姟鍒涘缓  鎵ц
+     *  Jar浠诲姟鍒涘缓===銆嬫墽琛�  //瀹屾垚
      */
-    public synchronized boolean jarGenerateWrkMastStaExecute(JarSlave jarSlave,WrkMast wrkMast,Integer jarLocDigit,Integer staNo) {
+    public synchronized boolean jarMastGenerateExecute(JarSlave jarSlave,WrkMast wrkMast,Integer jarLocDigit,Integer staNo) {
         try{
-            // 鑾峰彇鍫嗗灈鏈轰俊鎭�
+            // 鑾峰彇纭寲缃愪俊鎭�
             JarThread jarThread = (JarThread) SlaveConnection.get(SlaveType.Jar, jarSlave.getId());
             JarProtocol jarProtocol = jarThread.getJarProtocol();
             if (jarProtocol == null) {
@@ -4499,9 +4515,9 @@
             if (jarOtherProtocol == null) {
                 return false;
             }
-            if (jarOtherProtocol.modeType != JarModeType.AUTO){
-                return false;
-            }
+//            if (jarOtherProtocol.modeType != JarModeType.AUTO){
+//                return false;
+//            }
 
             BasJar basJar = basJarMapper.selectById(jarProtocol.getJarNo());
             if (Cools.isEmpty(basJar)){
@@ -4514,7 +4530,8 @@
             }
 
             //鑷姩銆佺┖闂层�佸彸闂ㄥ叧闂��   Other宸﹂棬鍏抽棴
-            if (jarProtocol.isAutoing() && !jarProtocol.isRightDoor() && jarProtocol.jarErr==0 && jarProtocol.leftDoorOpen==0  && jarProtocol.leftDoorClose==0
+            if (jarProtocol.isAutoing() && !jarProtocol.isRightDoor() && jarProtocol.jarErr==0
+                    && jarProtocol.leftDoorOpen==0  && jarProtocol.leftDoorClose==0 && jarProtocol.rightDoorOpen==0  && jarProtocol.rightDoorClose==0
                     && !jarOtherProtocol.isLeftDoor() && jarOtherProtocol.leftDoorOpen==0  && jarOtherProtocol.leftDoorClose==0){
                 if (jarProtocol.statusType == JarStatusType.IDLE || jarProtocol.statusType == JarStatusType.MOVING){
                     BasJarMast basJarMast = new BasJarMast(basJar, wrkMast, jarLocDigit);
@@ -4531,9 +4548,9 @@
     }
 
     /**
-     *  Jar浠诲姟鍒涘缓  鎵ц
+     *  Jar浠诲姟瀹屾垚   //鏈畬鎴�
      */
-    public synchronized boolean jarGenerateWrkMastStaExecuteOne(JarSlave jarSlave) {
+    public synchronized boolean jarMastGenerateComplete(JarSlave jarSlave) {
         try{
             // 鑾峰彇鍫嗗灈鏈轰俊鎭�
             JarThread jarThread = (JarThread) SlaveConnection.get(SlaveType.Jar, jarSlave.getId());
@@ -4558,7 +4575,6 @@
             if (jarProtocol.isAutoing() && !jarProtocol.isRightDoor() && jarProtocol.jarErr==0 && !jarOtherProtocol.isLeftDoor() && jarOtherProtocol.jarErr==0){
 
             }
-
         } catch (Exception e){
 //            log.error("鍫嗗灈鏈哄伐浣嶄簩瀹屾垚绛夊緟纭寮傚父,鍫嗗灈鏈哄彿={},寮傚父淇℃伅={},宸ヤ綅鍙�={}",crn.getId(),e.getMessage(),2);
         }
@@ -4566,86 +4582,114 @@
     }
 
     /**
-     *  Jar浠诲姟鍒涘缓  鎵ц
+     *  JarWrkMastExecute浠诲姟鍒涘缓   //鏈畬鎴�
+     *  寮�闂ㄣ�佸叆纭寲缃�
      */
-    public synchronized boolean jarGenerateWrkMastStaExecuteTwo(JarSlave jarSlave) {
+    public synchronized void jarWrkMastExecuteGenerate() {
+        for (JarSlave jarSlave : slaveProperties.getJar()) {
+            try{
+                if (wrkMastExecuteService.getWrkMastByJarIdCount(jarSlave.getId())!=0){
+                    continue;
+                }
+                List<BasJarMast> basJarMastList = basJarMastService.getJarMastByJarIdAndStatusList(jarSlave.getId(), new ArrayList<Integer>() {{
+                    add(0);
+                    add(2);
+                }});
+                for (BasJarMast basJarMast : basJarMastList){
+                    // 鑾峰彇纭寲缃愪俊鎭�
+                    JarThread jarThread = (JarThread) SlaveConnection.get(SlaveType.Jar, jarSlave.getId());
+                    JarProtocol jarProtocol = jarThread.getJarProtocol();
+                    if (jarProtocol == null) {
+                        break;
+                    }
+                    if (jarProtocol.modeType != JarModeType.AUTO){
+                        break;
+                    }
+
+                    JarThread jarOtherThread = (JarThread) SlaveConnection.get(SlaveType.Jar, jarSlave.getJarOtherId());
+                    JarProtocol jarOtherProtocol = jarOtherThread.getJarProtocol();
+                    if (jarOtherProtocol == null) {
+                        break;
+                    }
+//                    if (jarOtherProtocol.modeType != JarModeType.AUTO){
+//                        continue;
+//                    }
+
+                    BasJar basJar = basJarMapper.selectById(jarProtocol.getJarNo());
+                    if (Cools.isEmpty(basJar)){
+                        log.error("{}鍙风~鍖栫綈鏌ヨ璁惧妗f鏃犱俊鎭紒锛侊紒",jarProtocol.getJarNo());
+                        break;
+                    }
+
+                    //闂ㄤ綔涓�  鏃�
+                    //鑷姩銆佺┖闂层�佸彸闂ㄥ叧闂��   Other宸﹂棬鍏抽棴
+                    if (jarProtocol.isAutoing() && !jarProtocol.isRightDoor() && jarProtocol.jarErr==0
+                            && jarProtocol.leftDoorOpen==0  && jarProtocol.leftDoorClose==0 && jarProtocol.rightDoorOpen==0  && jarProtocol.rightDoorClose==0
+                            && !jarOtherProtocol.isLeftDoor() && jarOtherProtocol.leftDoorOpen==0  && jarOtherProtocol.leftDoorClose==0){
+                        if (jarProtocol.statusType == JarStatusType.IDLE && !jarProtocol.isLeftDoor() && basJarMast.getStatus()==0){
+                            //鐢熸垚寮�闂ㄤ换鍔� OpenTheDoor
+                            if (!jarWrkMastExecuteGenerateExecute(basJar,basJarMast,new int[]{basJar.getEnterSteNo(),basJar.getEnterRgvId(),1,1})){
+                                log.error("JarWrkMastExecute浠诲姟鍒涘缓===>鎵ц寮傚父===銆嬪紓甯告暟鎹細BasJar:"+ JSON.toJSONString(basJar)+";BasJarMast:"+JSON.toJSONString(basJarMast));
+                            }
+                            return;
+                        } else if (jarProtocol.statusType == JarStatusType.MOVING && jarProtocol.isLeftDoor()){
+                            //鐢熸垚鍏ョ~鍖栫綈浠诲姟
+                            if (!jarWrkMastExecuteGenerateExecute(basJar,basJarMast,new int[]{basJar.getEnterSteNo(),basJar.getEnterRgvId(),5,1})){
+                                log.error("JarWrkMastExecute浠诲姟鍒涘缓===>鎵ц寮傚父===銆嬪紓甯告暟鎹細BasJar:"+ JSON.toJSONString(basJar)+";BasJarMast:"+JSON.toJSONString(basJarMast));
+                            }
+                            return;
+                        }
+                    }
+                    break;
+                }
+            } catch (Exception e){
+                log.error("{}鍙风~鍖栫綈JarWrkMastExecute浠诲姟鍒涘缓寮傚父,寮傚父鍘熷洜={}",jarSlave.getId(),e.getMessage());
+            }
+        }
+    }
+
+    /**
+     *  JarWrkMastExecute浠诲姟鍒涘缓===>鎵ц   //鏈畬鎴�
+     */
+    public synchronized boolean jarWrkMastExecuteGenerateExecute(BasJar basJar,BasJarMast basJarMast,int[] digit) {
         try{
-            // 鑾峰彇鍫嗗灈鏈轰俊鎭�
-            JarThread jarThread = (JarThread) SlaveConnection.get(SlaveType.Jar, jarSlave.getId());
-            JarProtocol jarProtocol = jarThread.getJarProtocol();
-            if (jarProtocol == null) {
-                return false;
-            }
-            if (jarProtocol.modeType != JarModeType.AUTO){
-                return false;
-            }
-
-            JarThread jarOtherThread = (JarThread) SlaveConnection.get(SlaveType.Jar, jarSlave.getJarOtherId());
-            JarProtocol jarOtherProtocol = jarOtherThread.getJarProtocol();
-            if (jarOtherProtocol == null) {
-                return false;
-            }
-            if (jarOtherProtocol.modeType != JarModeType.AUTO){
-                return false;
-            }
-
-            //鑷姩銆佺┖闂层�佸彸闂ㄥ叧闂��
-            if (jarProtocol.isAutoing() && !jarProtocol.isRightDoor() && jarProtocol.jarErr==0 && !jarOtherProtocol.isLeftDoor() && jarOtherProtocol.jarErr==0){
-
-            }
-
-        } catch (Exception e){
-//            log.error("鍫嗗灈鏈哄伐浣嶄簩瀹屾垚绛夊緟纭寮傚父,鍫嗗灈鏈哄彿={},寮傚父淇℃伅={},宸ヤ綅鍙�={}",crn.getId(),e.getMessage(),2);
+            WrkMastExecute wrkMastExecute = new WrkMastExecute(basJarMast);
+            wrkMastExecute.setJarId(digit[3]==2? basJar.getBurial():basJar.getJarNo());
+            wrkMastExecute.setSteId(digit[0]);//绌挎鏉縄D
+            wrkMastExecute.setRgvId(digit[1]);//RGV ID
+            wrkMastExecute.setIoType(digit[2]);//浠诲姟绫诲瀷 0: 鏈煡  1: 寮�杩涙枡闂�  2: 鍏宠繘鏂欓棬  3: 寮�鍑烘枡闂�  4: 鍏冲嚭鏂欓棬  5: 鍏ョ~鍖栫綈  6: 鍏ュ喎鍗存Ы  7: 绌挎杞﹁繘鍐峰嵈妲�  8: 绌挎杞︾寮�鍐峰嵈妲�  9: 鍑哄喎鍗存Ы
+            wrkMastExecute.setType(digit[3]);//璁惧  0: 鏈煡  1: 纭寲缃�  2: 鍐峰嵈妲�  3: 纭寲缃�==>鍐峰嵈妲�
+            return wrkMastExecuteService.insert(wrkMastExecute);
+        }catch (Exception e){
+            log.error("JarWrkMastExecute浠诲姟鍒涘缓===>鎵ц寮傚父===銆嬪紓甯稿師鍥狅細"+e.getMessage());
         }
         return false;
-    }
-
-    /**
-     *  Jar浠诲姟鎵ц
-     */
-    public synchronized void jarExecuteWrkMastSta() {
-        try{
-
-        }catch (Exception e){
-            log.error("灏忚溅澶嶄綅绾跨▼鎶ラ敊锛�"+e);
-        }
-    }
-
-    /**
-     *  Jar瀹屾垚
-     */
-    public synchronized void jarCompleteWrkMastSta() {
-        try{
-
-        }catch (Exception e){
-            log.error("灏忚溅澶嶄綅绾跨▼鎶ラ敊锛�"+e);
-        }
     }
 
     /*
-     * 灏忚溅鍙栫┖鏉胯嚦宸ヤ綅浠诲姟  婊″彇
+     * 寮�闂ㄤ换鍔″垱寤�
      * */
-    public synchronized boolean jarRgvTake1(Integer rgvId,WrkMastSta wrkMastSta){
+    public synchronized boolean jarWrkMastExecuteGenerate2(){
         try{
-            //  鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
-            RgvCommand rgvCommand = new RgvCommand();
-            rgvCommand.setRgvNo(rgvId); // RGV缂栧彿
-            rgvCommand.setAckFinish2((short) 0);  // 宸ヤ綅2浠诲姟瀹屾垚纭浣�
-            rgvCommand.setTaskNo2(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅2宸ヤ綔鍙�
-            rgvCommand.setTaskMode2(RgvTaskModeType.FETCH_5); // 宸ヤ綅2浠诲姟妯″紡:  婊″彇
-            rgvCommand.setSourceStaNo2(wrkMastSta.getStaStart().shortValue());   //宸ヤ綅2璧风偣
-            rgvCommand.setCommand((short) 2);   //宸ヤ綅2浠诲姟纭
-            if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(5, rgvCommand))) {
-                //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱   step=4锛屽伐浣�1鍐欎换鍔★紱     step=5锛屽伐浣�2鍐欎换鍔�
-                log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand));
-                return false;
-            } else {
-                return true;
-            }
+
         } catch (Exception e){
-            return false;
+            log.error("{}鍙风~鍖栫綈OpenTheDoorGenerate==銆婮arWrkMastExecute浠诲姟鍒涘缓寮傚父,寮傚父鍘熷洜={}",null,e.getMessage());
+        }
+        return false;
+    }
+
+    /**
+     *  JarWrkMastExecute浠诲姟瀹屾垚   //鏈畬鎴�
+     */
+    public synchronized void jarWrkMastExecuteGenerateComplete() {
+        try{
+
+        }catch (Exception e){
+            log.error("灏忚溅澶嶄綅绾跨▼鎶ラ敊锛�"+e);
         }
     }
+
+
     /*
      * Rgv  绉诲姩
      * */

--
Gitblit v1.9.1