From cedb12de87ac799582eed01f66c2f6b698585a69 Mon Sep 17 00:00:00 2001
From: vincentlu <t1341870251@gmail.com>
Date: 星期三, 02 四月 2025 09:30:20 +0800
Subject: [PATCH] #

---
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java                       |   32 +++++++++++----
 zy-acs-common/src/main/java/com/zy/acs/common/domain/protocol/action/ReadyReleaseToConveyorSta.java |   33 ++++++++++++++++
 zy-acs-common/src/main/java/com/zy/acs/common/domain/protocol/action/ReadyTakeFromConveyorSta.java  |   33 ++++++++++++++++
 zy-acs-common/src/main/java/com/zy/acs/common/enums/AgvActionCmdType.java                           |    7 ++-
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java                        |    4 +-
 5 files changed, 96 insertions(+), 13 deletions(-)

diff --git a/zy-acs-common/src/main/java/com/zy/acs/common/domain/protocol/action/ReadyReleaseToConveyorSta.java b/zy-acs-common/src/main/java/com/zy/acs/common/domain/protocol/action/ReadyReleaseToConveyorSta.java
new file mode 100644
index 0000000..b43b712
--- /dev/null
+++ b/zy-acs-common/src/main/java/com/zy/acs/common/domain/protocol/action/ReadyReleaseToConveyorSta.java
@@ -0,0 +1,33 @@
+package com.zy.acs.common.domain.protocol.action;
+
+import com.zy.acs.common.domain.protocol.IActionBody;
+import com.zy.acs.common.utils.Utils;
+import com.zy.acs.framework.common.RadixTools;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 鍑嗗寰�杈撻�佺嚎鏀捐揣
+ * 灞炴�у�硷細鏂瑰悜锛屽乏1 鍙�2
+ * Created by vincent on 2023/3/23
+ */
+@Data
+public class ReadyReleaseToConveyorSta implements IActionBody, Serializable {
+
+    private static final long serialVersionUID = 6496283344148393737L;
+
+    @Override
+    public byte[] writeToBytes() {
+        return Utils.reverse(RadixTools.shortToByte(this.height));
+    }
+
+    @Override
+    public void readFromBytes(byte[] messageBodyBytes) {
+
+    }
+
+    // 鍙栬揣楂樺害
+    private Short height;
+
+}
diff --git a/zy-acs-common/src/main/java/com/zy/acs/common/domain/protocol/action/ReadyTakeFromConveyorSta.java b/zy-acs-common/src/main/java/com/zy/acs/common/domain/protocol/action/ReadyTakeFromConveyorSta.java
new file mode 100644
index 0000000..30c5611
--- /dev/null
+++ b/zy-acs-common/src/main/java/com/zy/acs/common/domain/protocol/action/ReadyTakeFromConveyorSta.java
@@ -0,0 +1,33 @@
+package com.zy.acs.common.domain.protocol.action;
+
+import com.zy.acs.common.domain.protocol.IActionBody;
+import com.zy.acs.common.utils.Utils;
+import com.zy.acs.framework.common.RadixTools;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 鍑嗗浠庤緭閫佺嚎鍙栬揣
+ * 灞炴�у�硷細鏂瑰悜锛屽乏1 鍙�2
+ * Created by vincent on 2023/3/23
+ */
+@Data
+public class ReadyTakeFromConveyorSta implements IActionBody, Serializable {
+
+    private static final long serialVersionUID = 2178106700498872411L;
+
+    @Override
+    public byte[] writeToBytes() {
+        return Utils.reverse(RadixTools.shortToByte(this.height));
+    }
+
+    @Override
+    public void readFromBytes(byte[] messageBodyBytes) {
+
+    }
+
+    // 鍙栬揣楂樺害
+    private Short height;
+
+}
diff --git a/zy-acs-common/src/main/java/com/zy/acs/common/enums/AgvActionCmdType.java b/zy-acs-common/src/main/java/com/zy/acs/common/enums/AgvActionCmdType.java
index 36e4707..b549ff8 100644
--- a/zy-acs-common/src/main/java/com/zy/acs/common/enums/AgvActionCmdType.java
+++ b/zy-acs-common/src/main/java/com/zy/acs/common/enums/AgvActionCmdType.java
@@ -4,8 +4,7 @@
 import com.zy.acs.common.domain.protocol.action.*;
 
 /**
- * 鐩磋鍚庨��鍒嗗贩閬�
- *
+ * 鍔ㄤ綔鐮佹灇涓�
  *
  */
 public enum AgvActionCmdType {
@@ -30,6 +29,10 @@
 
     READY_RELEASE_FROM_SHELVES_LOC(0x78, "鍑嗗寰�璐ф灦鏀捐揣", ReadyReleaseToShelvesLoc.class),
 
+    READY_TAKE_FROM_CONVEYOR_STA(0x79, "鍑嗗浠庤緭閫佺嚎鍙栬揣", ReadyTakeFromConveyorSta.class),
+
+    READY_RELEASE_FROM_CONVEYOR_STA(0x7A, "鍑嗗寰�杈撻�佺嚎鏀捐揣", ReadyReleaseToConveyorSta.class),
+
     FINISH_PATH(0xFF, "鏁翠釜璺緞缁撴潫", FinishPathAction.class),
 
     ;
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java
index 7a4edd4..7825f26 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java
@@ -859,6 +859,7 @@
 
                 // 浣滀笟鐐瑰姩浣�
                 AgvDirectionType agvDirectionType;
+                Double staWorkDirection;
                 AgvBackpackType backpackType = AgvBackpackType.query(segment.getBackpack());
                 switch (Objects.requireNonNull(TaskPosDto.queryPosType(segment.getPosType()))) {
                     case ORI_LOC:
@@ -974,18 +975,18 @@
                             lastDirection = oriStaWorkDirection;
                         }
                         // 璁$畻璐у弶宸ヤ綔鏂瑰悜
-                        agvDirectionType = mapService.calculateAgvWorkDirectionByStation(oriSta, lastCode);
+                        staWorkDirection = mapService.calculateAgvWorkDirectionByStation(oriStaWorkDirection, lastDirection);
                         actionList.add(new Action(
                                 null,    // 缂栧彿
                                 task.getBusId(),    // 鎬荤嚎
                                 task.getId(),    // 浠诲姟
                                 null,    // 鍔ㄤ綔鍙�
                                 null,    // 浼樺厛绾�
-                                ActionTypeType.ReadyTakeFromShelvesLoc.desc,    // 鍚嶇О
-                                (double) agvDirectionType.val,    // 灞炴�у��
+                                ActionTypeType.ReadyTakeFromConveyorSta.desc,    // 鍚嶇О
+                                staWorkDirection,    // 灞炴�у��
                                 lastCode.getData(),    // 鍦伴潰鐮�
                                 String.valueOf(oriSta.getOffset()),   // 鍔ㄤ綔鍙傛暟
-                                ActionTypeType.ReadyTakeFromShelvesLoc.val(),    // 鍔ㄤ綔绫诲瀷
+                                ActionTypeType.ReadyTakeFromConveyorSta.val(),    // 鍔ㄤ綔绫诲瀷
                                 actionPrepareSts,    // 鍔ㄤ綔杩涘害
                                 agvId,    // AGV
                                 now    // 宸ヤ綔鏃堕棿
@@ -1053,18 +1054,18 @@
                                 now    // 宸ヤ綔鏃堕棿
                         ));
                         // 璁$畻璐у弶宸ヤ綔鏂瑰悜
-                        agvDirectionType = mapService.calculateAgvWorkDirectionByStation(destSta, lastCode);
+                        staWorkDirection = mapService.calculateAgvWorkDirectionByStation(destStaWorkDirection, lastDirection);
                         actionList.add(new Action(
                                 null,    // 缂栧彿
                                 task.getBusId(),    // 鎬荤嚎
                                 task.getId(),    // 浠诲姟
                                 null,    // 鍔ㄤ綔鍙�
                                 null,    // 浼樺厛绾�
-                                ActionTypeType.ReadyReleaseToShelvesLoc.desc,    // 鍚嶇О
-                                (double) agvDirectionType.val,    // 灞炴�у��
+                                ActionTypeType.ReadyReleaseToConveyorSta.desc,    // 鍚嶇О
+                                staWorkDirection,    // 灞炴�у��
                                 lastCode.getData(),    // 鍦伴潰鐮�
                                 String.valueOf(destSta.getOffset()),   // 鍔ㄤ綔鍙傛暟
-                                ActionTypeType.ReadyReleaseToShelvesLoc.val(),    // 鍔ㄤ綔绫诲瀷
+                                ActionTypeType.ReadyReleaseToConveyorSta.val(),    // 鍔ㄤ綔绫诲瀷
                                 actionPrepareSts,    // 鍔ㄤ綔杩涘害
                                 agvId,    // AGV
                                 now    // 宸ヤ綔鏃堕棿
@@ -1241,7 +1242,6 @@
             String agvNo = agvService.getAgvNo(actionList.get(0).getAgvId());
             AgvAction agvAction = new AgvAction(agvNo, actionGroupId);
             for (Action action : actionList) {
-
                 switch (Objects.requireNonNull(ActionTypeType.get(action.getActionTypeEl()))) {
                     case TurnCorner:
                         agvAction.add(new AgvActionItem<>(TurnCornerAction.class)
@@ -1275,6 +1275,13 @@
                                 .bodySync(body -> body.setHeight((short) Double.parseDouble(action.getParams())))
                         );
                         break;
+                    case ReadyTakeFromConveyorSta:
+                        agvAction.add(new AgvActionItem<>(ReadyTakeFromConveyorSta.class)
+                                .setVal(action.getVal().intValue())
+                                .setQrCode(action.getCode())
+                                .bodySync(body -> body.setHeight((short) Double.parseDouble(action.getParams())))
+                        );
+                        break;
                     case ReadyTakeFromAgvSite:
                         agvAction.add(new AgvActionItem<>(ReadyTakeFromAgvSite.class)
                                 .setVal(action.getVal().intValue())
@@ -1289,6 +1296,13 @@
                                 .bodySync(body -> body.setHeight((short) Double.parseDouble(action.getParams())))
                         );
                         break;
+                    case ReadyReleaseToConveyorSta:
+                        agvAction.add(new AgvActionItem<>(ReadyReleaseToConveyorSta.class)
+                                .setVal(action.getVal().intValue())
+                                .setQrCode(action.getCode())
+                                .bodySync(body -> body.setHeight((short) Double.parseDouble(action.getParams())))
+                        );
+                        break;
                     case ReadyReleaseToAgvSite:
                         agvAction.add(new AgvActionItem<>(ReadyReleaseToAgvSite.class)
                                 .setVal(action.getVal().intValue())
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java
index 1da3a4f..5f4df21 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MapService.java
@@ -177,8 +177,8 @@
         return Double.parseDouble(sta.getAngle());
     }
 
-    public AgvDirectionType calculateAgvWorkDirectionByStation(Sta sta, Code code) {
-        return AgvDirectionType.FORWARD;
+    public Double calculateAgvWorkDirectionByStation(Double staWorkDirection, Double lastDirection) {
+        return Math.abs(staWorkDirection - lastDirection) + 90.0D;
     }
 
     public double calculateDistance(double x1, double y1, double x2, double y2) {

--
Gitblit v1.9.1