From 707d414c0e6a8baff3ce7affec820f0fc1a13c19 Mon Sep 17 00:00:00 2001
From: skyouc <958836976@qq.com>
Date: 星期二, 24 二月 2026 09:06:04 +0800
Subject: [PATCH] no message

---
 src/main/java/com/zy/api/service/impl/AgvScheduleServiceImpl.java |  165 ++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 110 insertions(+), 55 deletions(-)

diff --git a/src/main/java/com/zy/api/service/impl/AgvScheduleServiceImpl.java b/src/main/java/com/zy/api/service/impl/AgvScheduleServiceImpl.java
index b66d76f..d4f13a8 100644
--- a/src/main/java/com/zy/api/service/impl/AgvScheduleServiceImpl.java
+++ b/src/main/java/com/zy/api/service/impl/AgvScheduleServiceImpl.java
@@ -5,6 +5,9 @@
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.R;
 import com.core.exception.CoolException;
+import com.zy.api.controller.params.AgvCallBackParam;
+import com.zy.api.controller.params.AgvCarriesParam;
+import com.zy.api.controller.params.AgvRequestParam;
 import com.zy.api.entity.CallAgvParams;
 import com.zy.api.enums.OrderType;
 import com.zy.api.service.AgvScheduleService;
@@ -15,6 +18,7 @@
 import com.zy.asrs.entity.result.HIKResultDTO;
 import com.zy.asrs.enums.LocStsType;
 import com.zy.asrs.enums.TaskIOType;
+import com.zy.asrs.enums.TaskStatusType;
 import com.zy.asrs.service.ApiLogService;
 import com.zy.asrs.service.LocCacheService;
 import com.zy.asrs.service.TaskService;
@@ -24,11 +28,9 @@
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-import java.util.UUID;
+import java.util.*;
 
 @Slf4j
 @Service
@@ -48,77 +50,132 @@
      * @version 1.0
      */
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public R callAgvCarry(CallAgvParams params) {
-        if (params.getType().equals(OrderType.ORDER_OUT.type)) {
-            //缂撳瓨鍖哄嚭搴�
-        } else if (params.getType().equals(OrderType.ORDER_IN.type)) {
-            //缂撳瓨鍖哄叆搴�
-        } else {
-
+        if (Objects.isNull(params)) {
+            return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
         }
+        if (Objects.isNull(params.getWrkNo())) {
+            return R.error("浠诲姟鍙蜂笉鑳戒负绌猴紒锛�");
+        }
+
+        Task task = taskService.selectOne(new EntityWrapper<Task>().eq("wrk_no", params.getWrkNo()));
+        if (Objects.isNull(task)) {
+            return R.error("浠诲姟淇℃伅涓嶅瓨鍦紒锛�");
+        }
+
+        if (Arrays.asList(TaskIOType.ALL_IN.type, TaskIOType.PICK_IN.type, TaskIOType.MERGE_IN.type)
+                .contains(task.getIoType())) {
+            // 鍏ュ簱
+            task.setWrkSts(TaskStatusType.AGV_TASK_ISSUED_IN.type);
+        } else if (Arrays.asList(TaskIOType.ALL_OUT.type, TaskIOType.PICK_OUT.type, TaskIOType.MERGE_OUT.type, TaskIOType.EMPTY_OUT.type)
+                .contains(task.getIoType())) {
+            // 鍑哄簱
+            task.setWrkSts(TaskStatusType.AGV_TASK_ISSUED_OUT.type);
+        }
+
+        HIKResultDTO hikResultDTO = sendAgvTask(params, HIKApiConstant.TASK_SUBMIT);
+
+        if (hikResultDTO.isSuccess()) {
+            if (!taskService.updateById(task)) {
+                throw new CoolException("浠诲姟鐘舵�佹洿鏂板け璐ワ紒锛�");
+            }
+        }
+
         return R.ok();
     }
 
-    @Override
-    public R callback(CallAgvParams params) {
-        //TODO 1. 鎼繍瀹屾垚锛屼慨鏀圭珯鐐瑰簱浣嶇姸鎬�
-        if (params.getType().equals(OrderType.ORDER_OUT.type)) {
-            //鍑哄簱鍗�
-            if (params.getStatus().equals("RUNING")) {
-                LocCache locCache = locCacheService.selectOne(new EntityWrapper<LocCache>().eq("loc_no", params.getOrgLoc()));
-                if (Objects.isNull(locCache)) {
-                    throw new CoolException("搴撲綅淇℃伅涓嶅瓨鍦紒锛�");
-                }
-                if (!locCache.getLocSts().equals(LocStsType.LOC_STS_TYPE_O.type)) {
-                    locCache.setLocSts(LocStsType.LOC_STS_TYPE_O.type);
-                }
-            } else if (params.getStatus().equals("FINISHED")) {
-                Task task = taskService.selectOne(new EntityWrapper<Task>().eq("wrk_no", params.getWrkNo()));
-                if (Objects.isNull(task)) {
-                    throw new CoolException("浠诲姟淇℃伅涓嶅瓨鍦紒锛�");
-                }
-                if (!taskService.updateById(task)) {
-                    throw new CoolException("浠诲姟鐘舵�佹洿鏂板け璐ワ紒锛�");
-                }
-            }
-        } else {
-            //鍏ュ簱鍗�
-
-        }
-
-        return null;
+    /**
+     * 鑾峰彇鑷畾涔夎姹傚ご
+     *
+     * @return java.util.Map<java.lang.String, java.lang.Object>
+     * @author Ryan
+     * @date 2025/12/29 9:11
+     */
+    private Map<String, Object> getHeaderParam() {
+        Map<String, Object> headerParam = new HashMap<>();
+        //璁剧疆璇锋眰杩炴帴鐨凾oken
+        headerParam.put("X-LR-REQUEST-ID", new Date().getTime() + "");
+        return headerParam;
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public R callback(AgvCallBackParam params) {
+        if (Objects.isNull(params)) {
+            return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        if (Objects.isNull(params.getRobotTaskCode())) {
+            return R.error("浠诲姟鍙蜂笉鑳戒负绌猴紒锛�");
+        }
+        Task task = taskService.selectOne(new EntityWrapper<Task>().eq("wrk_no", params.getRobotTaskCode()));
+        if (Objects.isNull(task)) {
+            return R.error("浠诲姟淇℃伅涓嶅瓨鍦紒锛�");
+        }
 
-    public HIKResultDTO sendAgvTask(HIKApiDTO haiKangApiDTO, String path) {
+        if (Arrays.asList(TaskIOType.ALL_IN.type, TaskIOType.PICK_IN.type, TaskIOType.MERGE_IN.type)
+                .contains(task.getIoType())) {
+            // 鍏ュ簱
+            if (params.getExtra().getValues().getMethod().equals("start")) {
+                task.setWrkSts(TaskStatusType.AGV_TASK_RUNNING_IN.type);
+            } else if (params.getExtra().getValues().getMethod().equals("end")){
+                task.setWrkSts(TaskStatusType.AGV_TASK_FINISHED_IN.type);
+            }
+        } else if (Arrays.asList(TaskIOType.ALL_OUT.type, TaskIOType.PICK_OUT.type, TaskIOType.MERGE_OUT.type, TaskIOType.EMPTY_OUT.type)
+                .contains(task.getIoType())) {
+            // 鍑哄簱p
+            if (params.getExtra().getValues().getMethod().equals("start")) {
+                task.setWrkSts(TaskStatusType.AGV_TASK_RUNNING_OUT.type);
+            } else if (params.getExtra().getValues().getMethod().equals("end")){
+                task.setWrkSts(TaskStatusType.AGV_TASK_FINISHED_OUT.type);
+            }
+        }
+
+        if (!taskService.updateById(task)) {
+            throw new CoolException("鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+        }
+        return R.ok("鎵ц瀹屾垚 锛侊紒");
+    }
+
+    public HIKResultDTO sendAgvTask(CallAgvParams param, String path) {
         HIKResultDTO result = new HIKResultDTO();
-        ForwardAGVTaskDTO forwardAGVTaskParam = new ForwardAGVTaskDTO();
-        forwardAGVTaskParam.setReqCode(UUID.randomUUID().toString().replace("-", ""));
-        forwardAGVTaskParam.setClientCode("IWMS");
-        forwardAGVTaskParam.setTaskTyp(haiKangApiDTO.getTaskType());
-        forwardAGVTaskParam.setCtnrTyp(haiKangApiDTO.getCtnrType());
-        forwardAGVTaskParam.setPriority(haiKangApiDTO.getPriority());
-        List<ForwardAGVTaskDTO.PositionCodePaths> positionCodePathsList = new ArrayList<>();
-        positionCodePathsList.add(new ForwardAGVTaskDTO.PositionCodePaths(haiKangApiDTO.getOrg(), haiKangApiDTO.getOrgType()));
-        positionCodePathsList.add(new ForwardAGVTaskDTO.PositionCodePaths(haiKangApiDTO.getTar(), haiKangApiDTO.getTarType()));
-        forwardAGVTaskParam.setPositionCodePath(positionCodePathsList);
-        String body = JSON.toJSONString(forwardAGVTaskParam);
+        AgvRequestParam requestParam = new AgvRequestParam();
+        requestParam.setTaskType(param.getTaskType());
+        List<AgvCarriesParam> agvCarriesParams = new ArrayList<>();
+
+        AgvCarriesParam carriesParam = new AgvCarriesParam();
+        carriesParam.setSeq(0);
+        carriesParam.setCode(param.getOrgSite());
+
+        agvCarriesParams.add(carriesParam);
+
+        AgvCarriesParam carriesParam2 = new AgvCarriesParam();
+        carriesParam2.setSeq(1);
+        carriesParam2.setCode(param.getTarSite());
+
+        agvCarriesParams.add(carriesParam2);
+
+        requestParam.setRobotTaskCode(param.getWrkNo());
+        requestParam.setTargetRoute(agvCarriesParams);
+
+        String body = JSON.toJSONString(requestParam);
         String response = "";
         try {
             response = new HttpHandler.Builder()
                     .setUri(HIKApiConstant.AGV_IP)
                     .setPath(path)
+                    .setHeaders(getHeaderParam())
                     .setJson(body)
                     .build()
                     .doPost();
             JSONObject jsonObject = JSON.parseObject(response);
-            if (jsonObject.getInteger("code").equals(0)) {
+            if (jsonObject.getString("code").equals("SUCCESS")) {
                 result.setSuccess(true);
             } else {
                 result.setMessage(jsonObject.getString("message"));
                 log.error("鍙戦�乤gv浠诲姟澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", HIKApiConstant.AGV_IP + path, body, response);
             }
-//            {"code":"1","data":"","interrupt":false,"message":"閲嶅鎻愪氦","msgErrCode":"0x3a80D012","reqCode":"fa92b49481a44627ae4d80c1400f28f6"}
+            // {"code":"1","data":"","interrupt":false,"message":"閲嶅鎻愪氦","msgErrCode":"0x3a80D012","reqCode":"fa92b49481a44627ae4d80c1400f28f6"}
         } catch (Exception e) {
             result.setMessage(e.getMessage());
             log.error("鍙戦�乤gv浠诲姟寮傚父", e);
@@ -132,14 +189,12 @@
                         "127.0.0.1",
                         body,
                         response,
-                        result.isSuccess()
-                );
+                        result.isSuccess());
             } catch (Exception e) {
                 log.error("", e);
             }
         }
         return result;
     }
-
 
 }

--
Gitblit v1.9.1