AGV小车回调接口推送

liweidong
绫Umbrella 1 month ago
parent f56821459a
commit b51194fc7c
  1. 50
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/logistics/pojo/entity/AGVCallBack.java
  2. 35
      blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/controller/AGVDockingController.java
  3. 3
      blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/ITaskExecuteRecordService.java
  4. 23
      blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/TaskExecuteRecordServiceImpl.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 : 任务单取消
applyCTU 料箱取放申请
*/
private String method;
/**
AGV 编号 agvCode
*/
private String robotCode;
/**
当前任务单号
*/
private String taskCode;
}

@ -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);
}
}

@ -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<TaskExecuteRecord> {
R agvCallback(AGVCallBack agvCallBack);
}

@ -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<TaskExecuteRecordMapper, TaskExecuteRecord> implements ITaskExecuteRecordService {
@Override
public R agvCallback(AGVCallBack agvCallBack) {
log.info("agv小车接口调用参数入参:{}",agvCallBack);
List<TaskExecuteRecord> list = list(new LambdaQueryWrapper<TaskExecuteRecord>().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();
}
}

Loading…
Cancel
Save