|
@@ -10,127 +10,127 @@ using WCS.WorkEngineering.WebApi.Models.AGV.Response;
|
|
|
|
|
|
namespace WCS.WorkEngineering.WebApi.Controllers
|
|
|
{
|
|
|
- ///// <summary>
|
|
|
- ///// AGV相关接口控制器
|
|
|
- ///// </summary>
|
|
|
- //[ApiController]
|
|
|
- //[Route("api/[controller]/[action]")]
|
|
|
- //public class AgvController : ControllerBase
|
|
|
- //{
|
|
|
- // /// <summary>
|
|
|
- // /// AGV任务下发测试
|
|
|
- // /// </summary>
|
|
|
- // /// <param name="type">任务类型</param>
|
|
|
- // /// <param name="code">RFID</param>
|
|
|
- // /// <param name="pos">目标位置</param>
|
|
|
- // /// <returns></returns>
|
|
|
- // [HttpPost]
|
|
|
- // public string AgvDebug(int type, string code, string pos)
|
|
|
- // {
|
|
|
- // try
|
|
|
- // {
|
|
|
- // switch (type)
|
|
|
- // {
|
|
|
- // case 1:
|
|
|
- // //AgvApi.机台补空(pos, code, "1");
|
|
|
- // break;
|
|
|
+ /// <summary>
|
|
|
+ /// AGV相关接口控制器
|
|
|
+ /// </summary>
|
|
|
+ [ApiController]
|
|
|
+ [Route("api/[controller]/[action]")]
|
|
|
+ public class AgvController : ControllerBase
|
|
|
+ {
|
|
|
+ /// <summary>
|
|
|
+ /// AGV任务下发测试
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="type">任务类型</param>
|
|
|
+ /// <param name="code">RFID</param>
|
|
|
+ /// <param name="pos">目标位置</param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost]
|
|
|
+ public string AgvDebug(int type, string code, string pos)
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ switch (type)
|
|
|
+ {
|
|
|
+ case 1:
|
|
|
+ //AgvApi.机台补空(pos, code, "1");
|
|
|
+ break;
|
|
|
|
|
|
- // case 2:
|
|
|
- // //AgvApi.机台补满();
|
|
|
- // break;
|
|
|
+ case 2:
|
|
|
+ //AgvApi.机台补满();
|
|
|
+ break;
|
|
|
|
|
|
- // case 3:
|
|
|
- // //AgvApi.满轮入库(code, pos, Guid.NewGuid().ToString().Replace("-", ""), "1");
|
|
|
- // break;
|
|
|
- // }
|
|
|
- // return "成功";
|
|
|
- // }
|
|
|
- // catch (Exception ex)
|
|
|
- // {
|
|
|
- // return $"Error-----" +
|
|
|
- // $"{ex.Message}------" +
|
|
|
- // $"{ex.StackTrace}";
|
|
|
- // }
|
|
|
- // }
|
|
|
+ case 3:
|
|
|
+ //AgvApi.满轮入库(code, pos, Guid.NewGuid().ToString().Replace("-", ""), "1");
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ return "成功";
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ return $"Error-----" +
|
|
|
+ $"{ex.Message}------" +
|
|
|
+ $"{ex.StackTrace}";
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- // /// <summary>
|
|
|
- // /// AGV执行回调
|
|
|
- // /// </summary>
|
|
|
- // /// <param name="reqDto"></param>
|
|
|
- // /// <returns></returns>
|
|
|
- // [HttpPost]
|
|
|
- // public AgvCallbackResponse AgvCallback([FromBody] AgvCallbackRequest reqDto)
|
|
|
- // {
|
|
|
- // var key = $"WCS:Lock:AGV:{nameof(AgvCallback)}";
|
|
|
- // var res = new AgvCallbackResponse() { code = AgvResponseCode.Success, message = "失败" };
|
|
|
- // //LogHub.InterfacePublish(nameof(AgvCallback), $"传入参数--reqCode:{reqDto.reqCode}--taskCode:{reqDto.taskCode}--method:{reqDto.method}");
|
|
|
- // try
|
|
|
- // {
|
|
|
- // RedisHub.Do(key, redis =>
|
|
|
- // {
|
|
|
- // SqlSugarHelper.Do(db =>
|
|
|
- // {
|
|
|
- // //跟据AGVid找到对应的AGV任务
|
|
|
- // var agvTask = db.Default.Queryable<WCS_AgvTaskInfo>().UpdLock().SplitTable(tabs => tabs.Take(2))
|
|
|
- // .First(v => v.AgvID == reqDto.taskCode && v.Status < AGVTaskStatus.MissionCompleted);
|
|
|
- // if (agvTask == null)
|
|
|
- // {
|
|
|
- // res.code = AgvResponseCode.Fail;
|
|
|
- // res.message = "未找到对应的AGV任务";
|
|
|
+ /// <summary>
|
|
|
+ /// AGV执行回调
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="reqDto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost]
|
|
|
+ public AgvCallbackResponse AgvCallback([FromBody] AgvCallbackRequest reqDto)
|
|
|
+ {
|
|
|
+ var key = $"WCS:Lock:AGV:{nameof(AgvCallback)}";
|
|
|
+ var res = new AgvCallbackResponse() { code = AgvResponseCode.Success, message = "失败" };
|
|
|
+ //LogHub.InterfacePublish(nameof(AgvCallback), $"传入参数--reqCode:{reqDto.reqCode}--taskCode:{reqDto.taskCode}--method:{reqDto.method}");
|
|
|
+ try
|
|
|
+ {
|
|
|
+ RedisHub.Do(key, redis =>
|
|
|
+ {
|
|
|
+ SqlSugarHelper.Do(db =>
|
|
|
+ {
|
|
|
+ //跟据AGVid找到对应的AGV任务
|
|
|
+ var agvTask = db.Default.Queryable<WCS_AgvTaskInfo>().UpdLock().SplitTable(tabs => tabs.Take(2))
|
|
|
+ .First(v => v.AgvID == reqDto.taskCode && v.Status < AGVTaskStatus.MissionCompleted);
|
|
|
+ if (agvTask == null)
|
|
|
+ {
|
|
|
+ res.code = AgvResponseCode.Fail;
|
|
|
+ res.message = "未找到对应的AGV任务";
|
|
|
|
|
|
- // return;
|
|
|
- // }
|
|
|
- // switch (reqDto.method)
|
|
|
- // {
|
|
|
- // case "applyContinue": //表示请求巷道
|
|
|
- // agvTask.AgvStatus = AGVTaskStatus.RequestOrPermission1;
|
|
|
- // break;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ switch (reqDto.method)
|
|
|
+ {
|
|
|
+ case "applyContinue": //表示请求巷道
|
|
|
+ agvTask.AgvStatus = AGVTaskStatus.RequestOrPermission1;
|
|
|
+ break;
|
|
|
|
|
|
- // case "outbin": //小车退出取货位
|
|
|
- // agvTask.AgvStatus = AGVTaskStatus.LeaveGet;
|
|
|
- // break;
|
|
|
+ case "outbin": //小车退出取货位
|
|
|
+ agvTask.AgvStatus = AGVTaskStatus.LeaveGet;
|
|
|
+ break;
|
|
|
|
|
|
- // case "applySecurity": //表示请求放货或取货
|
|
|
- // agvTask.AgvStatus = AGVTaskStatus.RequestOrPermission2;
|
|
|
- // break;
|
|
|
+ case "applySecurity": //表示请求放货或取货
|
|
|
+ agvTask.AgvStatus = AGVTaskStatus.RequestOrPermission2;
|
|
|
+ break;
|
|
|
|
|
|
- // case "applySecurityPut": //表示请求放货或取货
|
|
|
- // agvTask.AgvStatus = AGVTaskStatus.PutRequestOrPermission;
|
|
|
- // break;
|
|
|
+ case "applySecurityPut": //表示请求放货或取货
|
|
|
+ agvTask.AgvStatus = AGVTaskStatus.PutRequestOrPermission;
|
|
|
+ break;
|
|
|
|
|
|
- // case "FJend": //任务完成
|
|
|
- // agvTask.AgvStatus = AGVTaskStatus.MissionCompleted;
|
|
|
- // break;
|
|
|
+ case "FJend": //任务完成
|
|
|
+ agvTask.AgvStatus = AGVTaskStatus.MissionCompleted;
|
|
|
+ break;
|
|
|
|
|
|
- // case "cancel": //取消任务
|
|
|
- // if (agvTask.TaskType == AGVTaskType.EnterDepot)
|
|
|
- // {
|
|
|
- // agvTask.AgvStatus = AGVTaskStatus.Cancel;
|
|
|
- // }
|
|
|
+ case "cancel": //取消任务
|
|
|
+ if (agvTask.TaskType == AGVTaskType.EnterDepot)
|
|
|
+ {
|
|
|
+ agvTask.AgvStatus = AGVTaskStatus.Cancel;
|
|
|
+ }
|
|
|
|
|
|
- // break;
|
|
|
- // }
|
|
|
+ break;
|
|
|
+ }
|
|
|
|
|
|
- // int i = db.Default.Updateable(agvTask).SplitTable(x => x.Take(2)).ExecuteCommand();
|
|
|
- // if (i > 0)
|
|
|
- // {
|
|
|
- // res.code = AgvResponseCode.Success;
|
|
|
- // res.message = "成功";
|
|
|
- // }
|
|
|
- // else
|
|
|
- // {
|
|
|
- // return;
|
|
|
- // }
|
|
|
- // });
|
|
|
- // });
|
|
|
- // }
|
|
|
- // catch (Exception ex)
|
|
|
- // {
|
|
|
- // res.code = AgvResponseCode.Error;
|
|
|
- // res.message = ex.Message;
|
|
|
- // }
|
|
|
- // //LogHub.InterfacePublish(nameof(AgvCallback), $"返回结果--reqCode:{reqDto.reqCode}--code:{res.code}--message:{res.message}--taskCode:{reqDto.taskCode}");
|
|
|
- // return res;
|
|
|
- // }
|
|
|
- //}
|
|
|
+ int i = db.Default.Updateable(agvTask).SplitTable(x => x.Take(2)).ExecuteCommand();
|
|
|
+ if (i > 0)
|
|
|
+ {
|
|
|
+ res.code = AgvResponseCode.Success;
|
|
|
+ res.message = "成功";
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ });
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ res.code = AgvResponseCode.Error;
|
|
|
+ res.message = ex.Message;
|
|
|
+ }
|
|
|
+ //LogHub.InterfacePublish(nameof(AgvCallback), $"返回结果--reqCode:{reqDto.reqCode}--code:{res.code}--message:{res.message}--taskCode:{reqDto.taskCode}");
|
|
|
+ return res;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|