From 7c264be282c33feedbd4478f7e674ebac8fd55db Mon Sep 17 00:00:00 2001
From: 1 <1>
Date: 星期六, 21 三月 2026 15:39:22 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |   14 +++++--
 src/main/java/com/zy/core/model/protocol/RgvProtocol.java   |   60 ++++++++++++++++++++----------
 src/main/resources/mapper/WrkMastStaMapper.xml              |    8 ++--
 3 files changed, 54 insertions(+), 28 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 9658c7c..8242f56 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -285,6 +285,9 @@
                             staProtocolNew.setSiteId(staProtocol.getSiteId());
                             devpThread.setPakMk(staProtocol.getSiteId(), false);
                             staProtocolNew.setBarcode(barcode);
+                            if(!staProtocolNew.isLoading()){
+                                continue;
+                            }
                             MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocolNew));
                             if (ledThread != null) {
                                 News.error(methodName + ":鎵爜澶辫触锛岃閲嶈瘯");
@@ -1098,14 +1101,17 @@
                     }
                 }
             }
-            if(staProtocolIn.getWorkNo() != null && staProtocolIn.getStaNo() != 4001){
+            WrkMast wrkMastIn= wrkMastMapper.selectByWrkNo(staProtocolIn.getWorkNo());
+            if(wrkMastIn == null){
+                continue;
+            }
+            if(staProtocolIn.getWorkNo() != null && wrkMastIn.getStaNo() != 4001){
                 WrkMast wrkMastCrn = wrkMastMapper.selectByWrkNo(staProtocolIn.getWorkNo());
                 if(wrkMastCrn!=null){
                     if(wrkMastCrn.getCrnNo() == 3 ){
                         continue;
                     }
                 }
-                WrkMast wrkMastIn = wrkMastMapper.selectByWrkNo(staProtocolIn.getWorkNo());
                 WrkMast wrkMast = wrkMastMapper.selectByWrkNo(9996);
                 if(wrkMastIn == null){
                     continue;
@@ -5604,7 +5610,7 @@
                     }
 
                     // 鍒ゆ柇閲嶅宸ヤ綔妗�
-                    List<BasAgvMast> basAgvMastList = basAgvMastService.selectList(new EntityWrapper<BasAgvMast>().eq("task_no", staProtocol.getWorkNo()));
+                    List<BasAgvMast> basAgvMastList = basAgvMastService.selectList(new EntityWrapper<BasAgvMast>().eq("task_no", wrkMast.getWrkNo()));
                     if (!basAgvMastList.isEmpty()) {
                         wrkMast.setTakeNone("2");
                         wrkMastMapper.updateById(wrkMast);
@@ -5732,7 +5738,7 @@
                     }
                     List<LocMast> locMastList = locMastService.selectList(new EntityWrapper<LocMast>().eq("barcode", barcode));
                     if (!locMastList.isEmpty()) {
-//                        News.info("{}鍙风珯鐐规潯鐮佷俊鎭噸澶嶏細{}", outStaAgv.getStaNo(), barcode);
+                        News.info("{}鍙风珯鐐规潯鐮佷俊鎭噸澶嶏細{}", outStaAgv.getStaNo(), barcode);
                         continue;
                     }
                     // 浠诲姟鐢熸垚鍖� --------------------------------------------------------------------------
diff --git a/src/main/java/com/zy/core/model/protocol/RgvProtocol.java b/src/main/java/com/zy/core/model/protocol/RgvProtocol.java
index ac5bec5..e92e36b 100644
--- a/src/main/java/com/zy/core/model/protocol/RgvProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/RgvProtocol.java
@@ -430,8 +430,30 @@
         return map.get(RgvPos);
     }
 
+    // 涓婁竴娆′綅缃紙鐢ㄤ簬闃茶烦鍙橈級
+    private Integer lastRgvPos1 = null;
+    private Integer lastRgvPos2 = null;
+
+    // ================= 鍏叡鏂规硶 =================
+    private Integer getClosestSite(int rgvPos, Map<Integer, Integer> posMap, int tolerance) {
+        int minDiff = Integer.MAX_VALUE;
+        Integer result = 0;
+
+        for (Map.Entry<Integer, Integer> entry : posMap.entrySet()) {
+            int diff = Math.abs(rgvPos - entry.getValue());
+            if (diff < minDiff) {
+                minDiff = diff;
+                result = entry.getKey();
+            }
+        }
+
+        // 鈿狅笍 涓嶅啀杩斿洖0锛屽己鍒惰繑鍥炴渶杩戠偣
+        return result;
+    }
+
+    // ================= RGV1 =================
     public Integer getRgvPosI1() {
-        // key: 绔欑偣鍙�  value: 鍩哄噯鐗╃悊浣嶇疆
+
         Map<Integer, Integer> posMap = new HashMap<>();
         posMap.put(1004, 6534);
         posMap.put(1007, 33634);
@@ -444,22 +466,21 @@
         posMap.put(1031, 288194);
         posMap.put(1035, 314954);
 
+        int tolerance = 500;
 
-
-        int tolerance = 200; // 鍏佽璇樊鑼冨洿
-
-        for (Map.Entry<Integer, Integer> entry : posMap.entrySet()) {
-            int site = entry.getKey();
-            int basePos = entry.getValue();
-            if (Math.abs(RgvPos - basePos) <= tolerance) {
-                return site;
-            }
+        // ========= 寮傚父淇濇姢 =========
+        if (RgvPos < 0 || RgvPos > 400000) {
+            return 0;
         }
 
-        return 0; // 娌″尮閰嶅埌绔欑偣
+        lastRgvPos1 = RgvPos;
+
+        return getClosestSite(RgvPos, posMap, tolerance);
     }
+
+    // ================= RGV2 =================
     public Integer getRgvPosI2() {
-        // key: 绔欑偣鍙�  value: 鍩哄噯鐗╃悊浣嶇疆
+
         Map<Integer, Integer> posMap = new HashMap<>();
         posMap.put(2030, 314954);
         posMap.put(2027, 288094);
@@ -471,17 +492,16 @@
         posMap.put(2009, 75174);
         posMap.put(2006, 33748);
         posMap.put(2003, 6449);
-        int tolerance = 500; // 鍏佽璇樊鑼冨洿
 
-        for (Map.Entry<Integer, Integer> entry : posMap.entrySet()) {
-            int site = entry.getKey();
-            int basePos = entry.getValue();
-            if (Math.abs(RgvPos - basePos) <= tolerance) {
-                return site;
-            }
+        int tolerance = 500;
+
+        // ========= 寮傚父淇濇姢 =========
+        if (RgvPos < 0 || RgvPos > 400000) {
+            return 0;
         }
+        lastRgvPos2 = RgvPos;
 
-        return 0; // 娌″尮閰嶅埌绔欑偣
+        return getClosestSite(RgvPos, posMap, tolerance);
     }
 
 
diff --git a/src/main/resources/mapper/WrkMastStaMapper.xml b/src/main/resources/mapper/WrkMastStaMapper.xml
index 9250187..f3f9e3c 100644
--- a/src/main/resources/mapper/WrkMastStaMapper.xml
+++ b/src/main/resources/mapper/WrkMastStaMapper.xml
@@ -40,10 +40,10 @@
     </select>
 
     <select id="selectByWrkNoPut" resultMap="BaseResultMap">
-        select top 1 * from asr_wrk_mast_sta
-        where 1=1
-          and wrk_no = #{workNo}
-          and wrk_sts = 1
+        select top 1 *
+        from asr_wrk_mast_sta WITH (ROWLOCK, READPAST)
+        where wrk_no = #{workNo}
+        and wrk_sts = 1
     </select>
 
 <!--    <select id="selectNoInterfere" resultMap="BaseResultMap">-->

--
Gitblit v1.9.1