From 84dc7fa60ba6c5c412f194bfe22c14e3eceebde4 Mon Sep 17 00:00:00 2001
From: Junjie <xjj@123>
Date: 星期一, 09 六月 2025 10:47:08 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/thread/SiemensCrnThread.java         |    3 +
 src/main/java/com/zy/asrs/service/WrkMastService.java          |    2 +
 src/main/java/com/zy/asrs/utils/Utils.java                     |   18 +++++++++
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java    |   24 ++++++++++++
 src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java |   25 ++++++++++++
 src/main/java/com/zy/asrs/mapper/WrkMastMapper.java            |    4 ++
 src/main/resources/mapper/WrkMastMapper.xml                    |    8 ++++
 src/main/java/com/zy/core/model/protocol/CrnProtocol.java      |    5 ++
 8 files changed, 89 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
index 45ef477..612f0dc 100644
--- a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
@@ -109,5 +109,9 @@
 
     WrkMast selectPakoutEmpty(@Param("staNo")Integer outSite);
 
+    List<WrkMast> selectLaneWrkMastIn();//鏌ヨ鍏ュ簱浠诲姟
+
+    List<WrkMast> selectLaneWrkMastOut();//鏌ヨ鍑哄簱浠诲姟
+
 
 }
diff --git a/src/main/java/com/zy/asrs/service/WrkMastService.java b/src/main/java/com/zy/asrs/service/WrkMastService.java
index 67469f8..d8d8e98 100644
--- a/src/main/java/com/zy/asrs/service/WrkMastService.java
+++ b/src/main/java/com/zy/asrs/service/WrkMastService.java
@@ -15,4 +15,6 @@
 
     int getOutToStn182(Integer devpNo);
 
+    List<WrkMast> selectLaneWrkMast(Integer lane, Boolean pakIn);//鏌ヨ鎸囧畾宸烽亾浠诲姟
+
 }
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 5787dcb..404181e 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -87,6 +87,8 @@
     private BasErrLogService basErrLogService;
     @Autowired
     private BasCrnErrorMapper basCrnErrorMapper;
+    @Autowired
+    private WrkMastService wrkMastService;
 
     @Value("${wms.url}")
     private String wmsUrl;
@@ -722,6 +724,17 @@
                 continue;
             }
 
+            if (crnProtocol.getCrnNo() == 1) {
+                //鍒ゆ柇鍫嗗灈鏈哄拰褰撳墠浠诲姟鏄惁澶勪簬涓�涓贩閬�
+                if (Utils.getLaneByLocNo(wrkMast.getLocNo()) != crnProtocol.getCrnLane()) {
+                    //鍒ゆ柇鍫嗗灈鏈烘墍鍦ㄥ贩閬撴槸鍚﹀瓨鍦ㄥ叾浠栦换鍔★紝濡傚瓨鍦ㄥ垯浼樺厛鎵ц
+                    List<WrkMast> currentWrkMasts = wrkMastService.selectLaneWrkMast(crnProtocol.getCrnLane(), false);
+                    if (!currentWrkMasts.isEmpty()) {
+                        continue;//褰撳墠鍫嗗灈鏈烘墍鍦ㄥ贩閬撳瓨鍦ㄤ换鍔�
+                    }
+                }
+            }
+
             // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞�
             if (Utils.isDeepLoc(slaveProperties, wrkMast.getLocNo())) {
                 News.warnNoLog(""+mark+" - 1"+" - 8"+" - 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞� : 寮�濮嬫墽琛� 浠诲姟鍙�={}",wrkMast.getWrkNo());
@@ -875,6 +888,17 @@
                         break;
                     }
 
+                    if (crnProtocol.getCrnNo() == 1) {
+                        //鍒ゆ柇鍫嗗灈鏈哄拰褰撳墠浠诲姟鏄惁澶勪簬涓�涓贩閬�
+                        if (Utils.getLaneByLocNo(wrkMast.getLocNo()) != crnProtocol.getCrnLane()) {
+                            //鍒ゆ柇鍫嗗灈鏈烘墍鍦ㄥ贩閬撴槸鍚﹀瓨鍦ㄥ叾浠栦换鍔★紝濡傚瓨鍦ㄥ垯浼樺厛鎵ц
+                            List<WrkMast> currentWrkMasts = wrkMastService.selectLaneWrkMast(crnProtocol.getCrnLane(), false);
+                            if (!currentWrkMasts.isEmpty()) {
+                                continue;//褰撳墠鍫嗗灈鏈烘墍鍦ㄥ贩閬撳瓨鍦ㄤ换鍔�
+                            }
+                        }
+                    }
+
                     // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞�
                     if (Utils.isDeepLoc(slaveProperties, wrkMast.getSourceLocNo())) {
                         News.warnNoLog(""+mark+" - 2"+" - 6"+" - 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞� : 寮�濮嬫墽琛� 浠诲姟鍙�={}",wrkMast.getWrkNo());
diff --git a/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
index 8c0b9e9..c1638cd 100644
--- a/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
@@ -5,8 +5,10 @@
 import com.zy.asrs.entity.WrkMast;
 import com.zy.asrs.mapper.WrkMastMapper;
 import com.zy.asrs.service.WrkMastService;
+import com.zy.asrs.utils.Utils;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.List;
 
 @Service("wrkMastService")
@@ -31,4 +33,27 @@
     public int getOutToStn182(Integer devpNo) {
         return selectCount(new EntityWrapper<WrkMast>().eq("sta_no", devpNo).in("wrk_sts",11,12));
     }
+
+    @Override
+    public List<WrkMast> selectLaneWrkMast(Integer lane, Boolean pakIn) {
+        List<WrkMast> list = new ArrayList<>();
+
+        List<WrkMast> wrkMasts = null;
+        if (pakIn) {
+            wrkMasts = this.baseMapper.selectLaneWrkMastIn();
+        }else {
+            wrkMasts = this.baseMapper.selectLaneWrkMastOut();
+        }
+
+        if (wrkMasts == null) {
+            return list;
+        }
+
+        for (WrkMast wrkMast : wrkMasts) {
+            if (Utils.getLaneByLocNo(wrkMast.getIoType() > 100 ? wrkMast.getSourceLocNo() : wrkMast.getLocNo()) == lane) {
+                list.add(wrkMast);
+            }
+        }
+        return list;
+    }
 }
diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java
index e82cac2..17910d6 100644
--- a/src/main/java/com/zy/asrs/utils/Utils.java
+++ b/src/main/java/com/zy/asrs/utils/Utils.java
@@ -164,6 +164,24 @@
 
     }
 
+    /**
+     * 閫氳繃搴撲綅鍙疯幏鍙栨墍鍦ㄥ贩閬�
+     */
+    public static int getLaneByLocNo(String locNo) {
+        int row = Utils.getRow(locNo);
+        switch (row) {
+            case 1:
+            case 2:
+            case 3:
+                return 1;
+            case 4:
+            case 5:
+            case 6:
+                return 2;
+        }
+        return 0;
+    }
+
     public static void main(String[] args) {
         SlaveProperties slaveProperties = new SlaveProperties();
         slaveProperties.setDoubleDeep(true);
diff --git a/src/main/java/com/zy/core/model/protocol/CrnProtocol.java b/src/main/java/com/zy/core/model/protocol/CrnProtocol.java
index a63b90b..fff8bc1 100644
--- a/src/main/java/com/zy/core/model/protocol/CrnProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/CrnProtocol.java
@@ -187,6 +187,11 @@
      */
     public Float yDuration;
 
+    /**
+     * 鍫嗗灈鏈烘墍鍦ㄥ贩閬�
+     */
+    private Integer crnLane = 1;
+
     public void setMode(Short mode) {
         this.mode = mode;
         this.modeType = CrnModeType.get(mode);
diff --git a/src/main/java/com/zy/core/thread/SiemensCrnThread.java b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
index edbaac5..cdc49e4 100644
--- a/src/main/java/com/zy/core/thread/SiemensCrnThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -181,6 +181,9 @@
                 crnProtocol.setyDistance(siemensNet.getByteTransform().TransInt16(result.Content, 44));
                 crnProtocol.setxDuration(siemensNet.getByteTransform().TransInt16(result.Content, 48));
                 crnProtocol.setyDuration(siemensNet.getByteTransform().TransInt16(result.Content, 52));
+                if (slave.getId() == 1) {
+                    crnProtocol.setCrnLane((int) siemensNet.getByteTransform().TransInt16(result.Content, 56));
+                }
 
                 OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
 
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index 53cb7a2..1e68904 100644
--- a/src/main/resources/mapper/WrkMastMapper.xml
+++ b/src/main/resources/mapper/WrkMastMapper.xml
@@ -189,4 +189,12 @@
     <select id="selectPakoutEmpty" resultMap="BaseResultMap">
         select top 1 * from dbo.asr_wrk_mast where  io_type = 110 and sta_no = #{staNo} order by io_time,wrk_no
     </select>
+
+    <select id="selectLaneWrkMastIn" resultMap="BaseResultMap">
+        select * from dbo.asr_wrk_mast where wrk_sts=2 and (io_type=1 or io_type=10 or io_type=53 or io_type=54 or io_type=57) order by io_pri desc,io_time,wrk_no ASC
+    </select>
+
+    <select id="selectLaneWrkMastOut" resultMap="BaseResultMap">
+        select * from dbo.asr_wrk_mast where wrk_sts in (11,12,13,14) and io_type>100 order by io_pri desc,io_time,wrk_no asc
+    </select>
 </mapper>

--
Gitblit v1.9.1