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 | 185 +++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 175 insertions(+), 10 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 92c0972..d4f13a8 100644
--- a/src/main/java/com/zy/api/service/impl/AgvScheduleServiceImpl.java
+++ b/src/main/java/com/zy/api/service/impl/AgvScheduleServiceImpl.java
@@ -1,13 +1,47 @@
package com.zy.api.service.impl;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+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;
+import com.zy.asrs.entity.LocCache;
+import com.zy.asrs.entity.Task;
+import com.zy.asrs.entity.result.ForwardAGVTaskDTO;
+import com.zy.asrs.entity.result.HIKApiDTO;
+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;
+import com.zy.asrs.service.impl.LocCacheServiceImpl;
+import com.zy.common.constant.HIKApiConstant;
+import com.zy.common.utils.HttpHandler;
+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.*;
+
+@Slf4j
@Service
public class AgvScheduleServiceImpl implements AgvScheduleService {
+
+ @Autowired
+ private ApiLogService apiLogService;
+ @Autowired
+ private TaskService taskService;
+ @Autowired
+ private LocCacheService locCacheService;
/**
* @author Ryan
@@ -16,20 +50,151 @@
* @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. 鎼繍瀹屾垚锛屼慨鏀�
- 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("浠诲姟淇℃伅涓嶅瓨鍦紒锛�");
+ }
+
+ 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();
+ 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.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"}
+ } catch (Exception e) {
+ result.setMessage(e.getMessage());
+ log.error("鍙戦�乤gv浠诲姟寮傚父", e);
+ } finally {
+ try {
+ // 淇濆瓨鎺ュ彛鏃ュ織
+ apiLogService.save(
+ "鍙戦�乤gv浠诲姟",
+ HIKApiConstant.AGV_IP + path,
+ null,
+ "127.0.0.1",
+ body,
+ response,
+ result.isSuccess());
+ } catch (Exception e) {
+ log.error("", e);
+ }
+ }
+ return result;
+ }
+
}
--
Gitblit v1.9.1