From b51194fc7cdfc720d3697402fa93d45f56cf3054 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BB=ABUmbrella?= <2539020564@qq.com> Date: Thu, 5 Mar 2026 15:05:12 +0800 Subject: [PATCH] =?UTF-8?q?AGV=E5=B0=8F=E8=BD=A6=E5=9B=9E=E8=B0=83?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E6=8E=A8=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../logistics/pojo/entity/AGVCallBack.java | 50 +++++++++++++++++++ .../controller/AGVDockingController.java | 35 +++++++++++-- .../service/ITaskExecuteRecordService.java | 3 ++ .../impl/TaskExecuteRecordServiceImpl.java | 23 +++++++++ 4 files changed, 108 insertions(+), 3 deletions(-) create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/logistics/pojo/entity/AGVCallBack.java diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/logistics/pojo/entity/AGVCallBack.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/logistics/pojo/entity/AGVCallBack.java new file mode 100644 index 00000000..0d08ede8 --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/logistics/pojo/entity/AGVCallBack.java @@ -0,0 +1,50 @@ +package org.springblade.desk.logistics.pojo.entity; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "箱绑定接收") +public class AGVCallBack { + /** + * 请求编号,每个请求都要一个唯一 + * 编号, 同一个请求重复提交, 使 + * 用同一编号 + */ + private String reqCode; + /** + * 请求时间戳,格式: “yyyy-MM-dd + * HH:mm:ss” + */ + private String reqTime; + /** + 当前位置编号 + 任务开始:该位置为任务起点 + 走出储位:该位置为任务起点 + 任务单取消:该位置为工作位编号 + 任务结束:该位置为任务终点 + 取放申请:取放料箱的点 + */ + private String currentPositionCode; + /** + 方法名, 可使用任务类型做为方法 + 名 + 由 RCS-2000 任务模板配置后并告 + 知上层系统 + 默认使用方式: + start : 任务开始 + outbin : 走出储位 + end : 任务结束 + cancel : 任务单取消 + apply:CTU 料箱取放申请 + */ + private String method; + /** + AGV 编号(同 agvCode ) + */ + private String robotCode; + /** + 当前任务单号 + */ + private String taskCode; +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/controller/AGVDockingController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/controller/AGVDockingController.java index 4f88bfaa..e765fe39 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/controller/AGVDockingController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/controller/AGVDockingController.java @@ -1,19 +1,48 @@ package org.springblade.desk.logistics.controller; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.AllArgsConstructor; +import org.springblade.core.tool.api.R; +import org.springblade.desk.logistics.pojo.entity.AGVCallBack; +import org.springblade.desk.logistics.service.IOrderBoxService; +import org.springblade.desk.logistics.service.ITaskExecuteRecordService; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** - * 订单箱子 控制器 + * agv小车 控制器 * * @author BladeX * @since 2026-03-03 */ @RestController @AllArgsConstructor -@RequestMapping("/order") -@Tag(name = "订单箱子", description = "订单箱子称重接口") +@RequestMapping("/agv") +@Tag(name = "agv小车接口", description = "agv小车对接接口") public class AGVDockingController { + + private final ITaskExecuteRecordService iTaskExecuteRecordService; + + + @PostMapping("/agvCallbackService/agvCallback") + @ApiOperationSupport(order = 1) + @Operation( + summary = "agv小车回调接口", + description = "AGV小车回调接口" + ) + public R agvCallback(@RequestBody AGVCallBack agvCallBack ){ + // 1.参数合法性校验 + if (agvCallBack == null || agvCallBack.getTaskCode().trim().isEmpty()) { + return R.fail("任务单号不能为空"); + } + if (agvCallBack == null || agvCallBack.getMethod() .trim().isEmpty()) { + return R.fail("AGV小车当前状态不能为空"); + } + return iTaskExecuteRecordService.agvCallback(agvCallBack); + } + } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/ITaskExecuteRecordService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/ITaskExecuteRecordService.java index f5efcd72..f5505048 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/ITaskExecuteRecordService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/ITaskExecuteRecordService.java @@ -26,6 +26,8 @@ package org.springblade.desk.logistics.service; import org.springblade.core.mp.base.BaseService; +import org.springblade.core.tool.api.R; +import org.springblade.desk.logistics.pojo.entity.AGVCallBack; import org.springblade.desk.logistics.pojo.entity.OrderBind; import org.springblade.desk.logistics.pojo.entity.TaskExecuteRecord; @@ -37,4 +39,5 @@ import org.springblade.desk.logistics.pojo.entity.TaskExecuteRecord; */ public interface ITaskExecuteRecordService extends BaseService { + R agvCallback(AGVCallBack agvCallBack); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/TaskExecuteRecordServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/TaskExecuteRecordServiceImpl.java index 0979377e..52114fcf 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/TaskExecuteRecordServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/TaskExecuteRecordServiceImpl.java @@ -25,16 +25,21 @@ */ package org.springblade.desk.logistics.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.extern.slf4j.Slf4j; import org.springblade.core.mp.base.BaseServiceImpl; +import org.springblade.core.tool.api.R; import org.springblade.desk.logistics.mapper.OrderBindMapper; import org.springblade.desk.logistics.mapper.TaskExecuteRecordMapper; +import org.springblade.desk.logistics.pojo.entity.AGVCallBack; import org.springblade.desk.logistics.pojo.entity.OrderBind; import org.springblade.desk.logistics.pojo.entity.TaskExecuteRecord; import org.springblade.desk.logistics.service.IOrderBindService; import org.springblade.desk.logistics.service.ITaskExecuteRecordService; import org.springframework.stereotype.Service; +import java.util.List; + /** * 物流小车对接实体类 服务实现类 * @@ -46,4 +51,22 @@ import org.springframework.stereotype.Service; public class TaskExecuteRecordServiceImpl extends BaseServiceImpl implements ITaskExecuteRecordService { + @Override + public R agvCallback(AGVCallBack agvCallBack) { + log.info("agv小车接口调用参数入参:{}",agvCallBack); + List list = list(new LambdaQueryWrapper().eq(TaskExecuteRecord::getId, agvCallBack.getTaskCode()).orderByDesc(TaskExecuteRecord::getCreateTime)); + if (list==null||list.size()==0) { + return R.fail("未查询到该任务单号"); + } + TaskExecuteRecord taskExecuteRecord = list.get(0); + String method = agvCallBack.getMethod().replaceAll(" ", ""); + taskExecuteRecord.setMethod(method); + if (!updateById(taskExecuteRecord)) { + return R.fail("保存该任务单号失败"); + } + if (method.equals(TaskExecuteRecord.STATUS_END)) { + //todo: 调用东哥接口 + } + return R.success(); + } }