From 1e585dfd636f811952a0d2b0fc3e735325cd5243 Mon Sep 17 00:00:00 2001
From: LSH
Date: 星期二, 27 六月 2023 15:36:10 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |   89 ++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 89 insertions(+), 0 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 12aca3a..cd92354 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -513,6 +513,95 @@
     }
 
     /**
+     * 缁戝畾灏忚溅鏂规硶
+     */
+    public synchronized void rgvBindSte() {
+        for (RgvSlave rgv : slaveProperties.getRgv()) {
+            // 鑾峰彇RGV淇℃伅
+            RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
+            RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+            if (rgvProtocol == null) {
+                continue;
+            }
+            BasRgv basRgv = basRgvService.selectById(rgv.getId());
+            if (basRgv == null) {
+                log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgv.getId());
+                continue;
+            }
+
+            // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�, 骞朵笖鏃犱换鍔°�佹棤鐗╂椂鎵嶇户缁墽琛�
+            if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
+                    && rgvProtocol.getModeType() == RgvModeType.AUTO
+                    && rgvProtocol.getTaskNo1() == 0 && rgvProtocol.getTaskNo2() == 0
+                    && rgvProtocol.getLoaded1() == 0 && rgvProtocol.getLoaded2() == 0
+            ) {
+                // 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡
+                if (rgvProtocol.getLastIo().equals("I")) {
+                    if (basRgv.getInEnable().equals("Y")) {
+                        this.rgvBindSteIn(rgv, rgvProtocol); //  鍏ュ簱
+                        rgvProtocol.setLastIo("O");
+                    } else if (basRgv.getOutEnable().equals("Y")) {
+                        this.rgvBindSteOut(rgv, rgvProtocol); //  鍑哄簱
+                        rgvProtocol.setLastIo("I");
+                    }
+                }
+                // 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡
+                else if (rgvProtocol.getLastIo().equals("O")) {
+                    if (basRgv.getOutEnable().equals("Y")) {
+                        this.rgvBindSteOut(rgv, rgvProtocol); //  鍑哄簱
+                        rgvProtocol.setLastIo("I");
+                    } else if (basRgv.getInEnable().equals("Y")) {
+                        this.rgvBindSteIn(rgv, rgvProtocol); //  鍏ュ簱
+                        rgvProtocol.setLastIo("O");
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * 缁戝畾灏忚溅鍏ュ簱鏂规硶
+     */
+    public synchronized void rgvBindSteIn(RgvSlave slave, RgvProtocol rgvProtocol) {
+        for (RgvSlave.RgvStn rgvStn: slave.getRgvInSStn()){
+            Integer staNo = rgvStn.getStaNo();
+            BasDevp basDevp = basDevpService.selectById(rgvStn.getDevpPlcId());
+            if (Cools.isEmpty(basDevp) || basDevp.getWrkNo()==0){
+                continue;
+            }else {
+                WrkMast wrkMast = wrkMastMapper.selectRgvInSteWrkNo(basDevp.getWrkNo());
+                if (!Cools.isEmpty(wrkMast)){
+                    wrkMast.setRgvNo(wrkMast.getCrnNo()>3 ? 2 : 1);
+                    wrkMast.setAppeTime(new Date());
+                    if (wrkMastMapper.updateById(wrkMast)==0){
+                        log.error("缁戝畾灏忚溅鏇存柊宸ヤ綔妗eけ璐ワ紒锛侊紒 [宸ヤ綔鍙凤細{}]", wrkMast.getWrkNo());
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * 缁戝畾灏忚溅鍑哄簱鏂规硶
+     */
+    public synchronized void rgvBindSteOut(RgvSlave slave, RgvProtocol rgvProtocol) {
+        for (RgvSlave.RgvStn rgvStn: slave.getRgvOutSStn()){
+            BasDevp basDevp = basDevpService.selectById(rgvStn.getDevpPlcId());
+            if (Cools.isEmpty(basDevp) || basDevp.getWrkNo()==0){
+                continue;
+            }else {
+                WrkMast wrkMast = wrkMastMapper.selectRgvOutSteWrkNo(basDevp.getWrkNo());
+                if (!Cools.isEmpty(wrkMast)){
+                    wrkMast.setRgvNo(rgvStn.getStaNo());
+                    wrkMast.setAppeTime(new Date());
+                    if (wrkMastMapper.updateById(wrkMast)==0){
+                        log.error("缁戝畾灏忚溅鏇存柊宸ヤ綔妗eけ璐ワ紒锛侊紒 [宸ヤ綔鍙凤細{}]", wrkMast.getWrkNo());
+                    }
+                }
+            }
+        }
+    }
+    /**
      * 鍏ュ嚭搴�  ===>>  RGV鍏ュ嚭搴撲綔涓氫笅鍙�
      */
     public synchronized void rgvIoExecute() {

--
Gitblit v1.9.1