package com.ruoyi.api.controller; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import com.ruoyi.api.domain.agv.agvCallback.AgvCallbackRequest; import com.ruoyi.api.domain.agv.agvCallback.AgvCallbackResponse; import com.ruoyi.api.domain.agv.cancelTask.CancelTaskRequest; import com.ruoyi.api.domain.agv.cancelTask.CancelTaskResponse; import com.ruoyi.api.service.IApiService; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.queue.agv.domain.AgvQueue; import com.ruoyi.queue.agv.service.IAgvQueueService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.Map; /** * Agv操作请求 */ @RestController @RequestMapping("/agv/api") @Slf4j public class AgvController extends BaseController { @Autowired private IApiService apiService; @Autowired private IAgvQueueService agvQueueService; /** * agv执行状态返回接口 * @param request * @return */ @PostMapping("/agvCallback") public AgvCallbackResponse agvCallback(@RequestBody AgvCallbackRequest request) { return apiService.agvCallback(request); } /** * agv搬运作业 * @param param{ * startPoint:起始点 * endPoint:结束点 * containerCode:容器编号 * taskNo:任务号 * } * @return */ @PostMapping("/receiveAgvMoveJob") public AjaxResult receiveAgvMoveJob(@RequestBody Map param) { return apiService.receiveAgvMoveJob(param); } @PostMapping("/deleteAgvTray") public AjaxResult deleteAgvTray(@RequestBody Map param) { AgvQueue agvQueue = agvQueueService.selectAgvQueueByTaskCode(param.get("taskCode")); if(agvQueue==null){ return AjaxResult.error("AGV任务队列不存在!"); }else{ return apiService.deleteAgvTray(agvQueue); } } @PostMapping("/continueTask") public AjaxResult continueTask(@RequestBody Map param) { AgvQueue agvQueue = agvQueueService.selectAgvQueueByTaskCode(param.get("taskCode")); if(agvQueue==null){ return AjaxResult.error("AGV任务队列不存在!"); }else{ return apiService.continueTask(agvQueue); } } /** * 前端手动操作完成/取消AGV作业时,请求rcs,取消当前AGV正执行的作业 * @param param * @return */ @PostMapping("/cancelTask") public AjaxResult cancelTask(@RequestBody Map param) { AgvQueue agvQueue = agvQueueService.selectAgvQueueByTaskCode(param.get("taskCode")); if(agvQueue==null){ return AjaxResult.error("AGV任务队列不存在!"); }else{ CancelTaskRequest cancelTaskRequest = new CancelTaskRequest(); cancelTaskRequest.setReqCode(IdUtil.fastSimpleUUID()); cancelTaskRequest.setReqTime(DateUtil.formatDateTime(DateUtil.date())); cancelTaskRequest.setTaskCode(agvQueue.getTaskCode()); //取消rcs中指定的agv任务 CancelTaskResponse cancelTaskResponse = apiService.cancelTask(cancelTaskRequest); if(cancelTaskResponse.getCode() == 0 && "成功".equals(cancelTaskResponse.getMsg()) && cancelTaskResponse.getReqCode() == cancelTaskRequest.getReqCode()){ return AjaxResult.success("AGV任务队列取消成功!", cancelTaskResponse); } return AjaxResult.error("取消RCS-AGV任务队列失败!"); } } }