From b97d8158437dd61c3fc85921fe2bbf15ee518770 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期五, 24 四月 2026 15:35:39 +0800
Subject: [PATCH] #堆垛机命令增加排映射关系V3.0.0.8

---
 src/main/java/com/zy/core/thread/impl/ZySiemensCrnV2Thread.java |   27 +++++++++++++++++++++++----
 1 files changed, 23 insertions(+), 4 deletions(-)

diff --git a/src/main/java/com/zy/core/thread/impl/ZySiemensCrnV2Thread.java b/src/main/java/com/zy/core/thread/impl/ZySiemensCrnV2Thread.java
index 6689550..b6e6ee3 100644
--- a/src/main/java/com/zy/core/thread/impl/ZySiemensCrnV2Thread.java
+++ b/src/main/java/com/zy/core/thread/impl/ZySiemensCrnV2Thread.java
@@ -258,14 +258,15 @@
 
     @Override
     public CrnCommand getPickAndPutCommand(String sourceLocNo, String targetLocNo, Integer taskNo, Integer crnNo) {
+        BasCrnp basCrnp = getBasCrnp(crnNo);
         CrnCommand crnCommand = new CrnCommand();
         crnCommand.setCrnNo(crnNo); // 鍫嗗灈鏈虹紪鍙�
         crnCommand.setTaskNo(taskNo); // 宸ヤ綔鍙�
         crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE.id); // 浠诲姟妯″紡:  搴撲綅绉昏浆
-        crnCommand.setSourcePosX(Utils.getRow(sourceLocNo));     // 婧愬簱浣嶆帓
+        crnCommand.setSourcePosX(resolveCommandRow(sourceLocNo, basCrnp));     // 婧愬簱浣嶆帓
         crnCommand.setSourcePosY(Utils.getBay(sourceLocNo));     // 婧愬簱浣嶅垪
         crnCommand.setSourcePosZ(Utils.getLev(sourceLocNo));     // 婧愬簱浣嶅眰
-        crnCommand.setDestinationPosX(Utils.getRow(targetLocNo));     // 鐩爣搴撲綅鎺�
+        crnCommand.setDestinationPosX(resolveCommandRow(targetLocNo, basCrnp));     // 鐩爣搴撲綅鎺�
         crnCommand.setDestinationPosY(Utils.getBay(targetLocNo));     // 鐩爣搴撲綅鍒�
         crnCommand.setDestinationPosZ(Utils.getLev(targetLocNo));     // 鐩爣搴撲綅灞�
         crnCommand.setCommand(1);     // 浠诲姟纭
@@ -274,21 +275,39 @@
 
     @Override
     public CrnCommand getMoveCommand(String targetLocNo, Integer taskNo, Integer crnNo) {
+        Integer targetRow = resolveCommandRow(targetLocNo, crnNo);
         CrnCommand crnCommand = new CrnCommand();
         crnCommand.setCrnNo(crnNo); // 鍫嗗灈鏈虹紪鍙�
         crnCommand.setTaskNo(taskNo); // 宸ヤ綔鍙�
         crnCommand.setAckFinish(0);  // 浠诲姟瀹屾垚纭浣�
         crnCommand.setTaskMode(CrnTaskModeType.CRN_MOVE.id); // 浠诲姟妯″紡:  鍫嗗灈鏈虹Щ鍔�
-        crnCommand.setSourcePosX(Utils.getRow(targetLocNo));     // 鐩爣搴撲綅鎺�
+        crnCommand.setSourcePosX(targetRow);     // 鐩爣搴撲綅鎺�
         crnCommand.setSourcePosY(Utils.getBay(targetLocNo));     // 鐩爣搴撲綅鍒�
         crnCommand.setSourcePosZ(Utils.getLev(targetLocNo));     // 鐩爣搴撲綅灞�
-        crnCommand.setDestinationPosX(Utils.getRow(targetLocNo));     // 鐩爣搴撲綅鎺�
+        crnCommand.setDestinationPosX(targetRow);     // 鐩爣搴撲綅鎺�
         crnCommand.setDestinationPosY(Utils.getBay(targetLocNo));     // 鐩爣搴撲綅鍒�
         crnCommand.setDestinationPosZ(Utils.getLev(targetLocNo));     // 鐩爣搴撲綅灞�
         crnCommand.setCommand(1);     // 浠诲姟纭
         return crnCommand;
     }
 
+    private Integer resolveCommandRow(String locNo, Integer crnNo) {
+        return resolveCommandRow(locNo, getBasCrnp(crnNo));
+    }
+
+    private Integer resolveCommandRow(String locNo, BasCrnp basCrnp) {
+        Integer locationRow = Utils.getRow(locNo);
+        if (basCrnp == null) {
+            return locationRow;
+        }
+        return basCrnp.getCommandRow(locationRow);
+    }
+
+    private BasCrnp getBasCrnp(Integer crnNo) {
+        BasCrnpService basCrnpService = SpringUtils.getBean(BasCrnpService.class);
+        return basCrnpService.getById(crnNo);
+    }
+
     @Override
     public CrnCommand getResetCommand(Integer taskNo, Integer crnNo) {
         CrnCommand crnCommand = new CrnCommand();

--
Gitblit v1.9.1