From cf723668b6c5636378a276e23366298289a1a1f5 Mon Sep 17 00:00:00 2001
From: vincentlu <t1341870251@gmail.com>
Date: 星期三, 25 三月 2026 15:20:55 +0800
Subject: [PATCH] #

---
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java |  109 ++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 77 insertions(+), 32 deletions(-)

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 cde9b3d..4d46033 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
@@ -21,6 +21,7 @@
 import com.zy.acs.manager.core.domain.TaskPosDto;
 import com.zy.acs.manager.core.integrate.conveyor.ConveyorStationService;
 import com.zy.acs.manager.core.integrate.dto.OpenBusSubmitParam;
+import com.zy.acs.manager.core.service.hik.HikOrderPublishService;
 import com.zy.acs.manager.core.service.astart.MapDataDispatcher;
 import com.zy.acs.manager.manager.entity.*;
 import com.zy.acs.manager.manager.enums.*;
@@ -98,6 +99,8 @@
     private StaReserveService staReserveService;
     @Autowired
     private ConveyorStationService conveyorStationService;
+    @Autowired
+    private HikOrderPublishService hikOrderPublishService;
 
     @SuppressWarnings("all")
     @Transactional
@@ -1582,47 +1585,25 @@
     @Transactional
     public void publishAction(String actionGroupId) {
         try {
-            Date now = new Date();
-
-            // action
-            List<Action> actionList = actionService.list(new LambdaQueryWrapper<Action>()
-                    .eq(Action::getGroupId, actionGroupId).eq(Action::getActionSts, ActionStsType.PREPARE.val())
-                    .orderByDesc(Action::getPriority));
+            List<Action> actionList = listPrepareActions(actionGroupId);
             if (Cools.isEmpty(actionList)) {
                 return;
             }
 
             Long agvId = actionList.get(0).getAgvId();
+            AgvModel agvModel = agvModelService.getByAgvId(agvId);
+            if (hikOrderPublishService.support(agvModel)) {
+                publishActionForHik(actionGroupId);
+                return;
+            }
+
+            Date now = new Date();
             String agvNo = agvService.getAgvNo(agvId);
             if (!agvService.judgeOnline(agvId)) {
                 return;
             }
 
-            long actionIssuedSts = ActionStsType.ISSUED.val();
-            for (Action action : actionList) {
-                action.setActionSts(actionIssuedSts);
-                action.setStartTime(now);
-                action.setIoTime(now);
-                action.setUpdateTime(now);
-            }
-            if (!actionService.updateBatchById(actionList)) {
-                throw new BusinessException("failed to update action batch !!!");
-            }
-
-            // task
-            List<Long> taskIds = actionService.selectTaskIdsByGroupId(actionGroupId);
-            long taskAssignSts = TaskStsType.ASSIGN.val();
-            long taskProgressSts = TaskStsType.PROGRESS.val();
-            for (Long taskId : taskIds) {
-                Task task = taskService.getById(taskId);
-                if (task.getTaskSts().equals(taskAssignSts)) {
-                    task.setTaskSts(taskProgressSts);
-                    task.setUpdateTime(now);
-                    if (!taskService.updateById(task)) {
-                        throw new BusinessException(task.getSeqNum() + "浠诲姟鏇存柊澶辫触");
-                    }
-                }
-            }
+            markActionAndTaskIssued(actionGroupId, actionList, now);
 
             AgvAction agvAction = new AgvAction(agvNo, actionGroupId);
             for (Action action : actionList) {
@@ -1750,6 +1731,70 @@
             TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
         }
 
+    }
+
+    @Transactional
+    public void publishActionForHik(String actionGroupId) {
+        try {
+            List<Action> actionList = listPrepareActions(actionGroupId);
+            if (Cools.isEmpty(actionList)) {
+                return;
+            }
+
+            Long agvId = actionList.get(0).getAgvId();
+            String agvNo = agvService.getAgvNo(agvId);
+            if (!agvService.judgeOnline(agvId)) {
+                return;
+            }
+
+            AgvModel agvModel = agvModelService.getByAgvId(agvId);
+            if (!hikOrderPublishService.support(agvModel)) {
+                throw new CoolException("agv [" + agvNo + "] protocol is not hik");
+            }
+
+            Date now = new Date();
+            markActionAndTaskIssued(actionGroupId, actionList, now);
+
+            hikOrderPublishService.publish(actionGroupId, agvNo, agvModel, actionList);
+            News.info("娴峰悍浠诲姟缁� [{}] order 宸蹭笅鍙� ===>> 鎸囦护鏁伴噺锛歿}", actionGroupId, actionList.size());
+        } catch (Exception e) {
+            News.error("mainService.publishActionForHik", e);
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+        }
+    }
+
+    private List<Action> listPrepareActions(String actionGroupId) {
+        return actionService.list(new LambdaQueryWrapper<Action>()
+                .eq(Action::getGroupId, actionGroupId)
+                .eq(Action::getActionSts, ActionStsType.PREPARE.val())
+                .orderByDesc(Action::getPriority));
+    }
+
+    private void markActionAndTaskIssued(String actionGroupId, List<Action> actionList, Date now) {
+        long actionIssuedSts = ActionStsType.ISSUED.val();
+        for (Action action : actionList) {
+            action.setActionSts(actionIssuedSts);
+            action.setStartTime(now);
+            action.setIoTime(now);
+            action.setUpdateTime(now);
+        }
+        if (!actionService.updateBatchById(actionList)) {
+            throw new BusinessException("failed to update action batch !!!");
+        }
+
+        List<Long> taskIds = actionService.selectTaskIdsByGroupId(actionGroupId);
+        long taskAssignSts = TaskStsType.ASSIGN.val();
+        long taskProgressSts = TaskStsType.PROGRESS.val();
+        for (Long taskId : taskIds) {
+            Task task = taskService.getById(taskId);
+            if (task != null && task.getTaskSts().equals(taskAssignSts)) {
+                task.setTaskSts(taskProgressSts);
+                task.setUpdateTime(now);
+                if (!taskService.updateById(task)) {
+                    throw new BusinessException(task.getSeqNum() + "浠诲姟鏇存柊澶辫触");
+                }
+            }
+        }
     }
 
     @Transactional
@@ -2027,4 +2072,4 @@
         segmentService.processNext(segmentList);
     }
 
-}
\ No newline at end of file
+}

--
Gitblit v1.9.1