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; 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 io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor; 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.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
/** /**
* 订单箱子 控制器 * agv小车 控制器
* *
* @author BladeX * @author BladeX
* @since 2026-03-03 * @since 2026-03-03
*/ */
@RestController @RestController
@AllArgsConstructor @AllArgsConstructor
@RequestMapping("/order") @RequestMapping("/agv")
@Tag(name = "订单箱子", description = "订单箱子称重接口") @Tag(name = "agv小车接口", description = "agv小车对接接口")
public class AGVDockingController { 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; package org.springblade.desk.logistics.service;
import org.springblade.core.mp.base.BaseService; 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.OrderBind;
import org.springblade.desk.logistics.pojo.entity.TaskExecuteRecord; 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> { public interface ITaskExecuteRecordService extends BaseService<TaskExecuteRecord> {
R agvCallback(AGVCallBack agvCallBack);
} }

@ -25,16 +25,21 @@
*/ */
package org.springblade.desk.logistics.service.impl; package org.springblade.desk.logistics.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.base.BaseServiceImpl; 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.OrderBindMapper;
import org.springblade.desk.logistics.mapper.TaskExecuteRecordMapper; 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.OrderBind;
import org.springblade.desk.logistics.pojo.entity.TaskExecuteRecord; import org.springblade.desk.logistics.pojo.entity.TaskExecuteRecord;
import org.springblade.desk.logistics.service.IOrderBindService; import org.springblade.desk.logistics.service.IOrderBindService;
import org.springblade.desk.logistics.service.ITaskExecuteRecordService; import org.springblade.desk.logistics.service.ITaskExecuteRecordService;
import org.springframework.stereotype.Service; 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 { 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