123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- using Microsoft.AspNetCore.Mvc;
- using ServiceCenter.SqlSugars;
- using WCS.Entity;
- using WCS.WorkEngineering.WebApi.Models.AGV;
- using WCS.WorkEngineering.WebApi.Models.AGV.Request;
- 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;
- case 2:
- //AgvApi.机台补满();
- break;
- case 3:
- AgvApi.满轮入库(code, pos, Guid.NewGuid().ToString().Replace("-", ""), "1");
- break;
- default:
- break;
- }
- return "成功";
- }
- catch (Exception ex)
- {
- return $"Error-----" +
- $"{ex.Message}------" +
- $"{ex.StackTrace}";
- }
- }
- /// <summary>
- /// AGV执行回调
- /// </summary>
- /// <param name="reqDto"></param>
- /// <returns></returns>
- [HttpPost]
- public AgvCallbackResponse AgvCallback(AgvCallbackRequest reqDto)
- {
- var msg = "成功";
- var code = AgvResponseCode.Success;
- try
- {
- SqlSugarHelper.Do(db =>
- {
- //跟据AGVid找到对应的AGV任务
- var agvTask = db.Default.Queryable<WCS_AgvTaskInfo>().SplitTable(tabs => tabs.Take(3)).First(v => v.AgvID == reqDto.taskCode);
- if (agvTask == null)
- {
- msg = "未找到对应的AGV任务";
- code = AgvResponseCode.Fail;
- }
- switch (reqDto.method)
- {
- case "applyContinue": //表示请求巷道
- agvTask.Status = AGVTaskStatus.RequestOrPermission1;
- break;
- case "applySecurity": //表示请求放货或取货
- //agvTask.Status = AGVTaskStatus.RequestOrPermission2;
- AgvApi.ContinueTask(reqDto.taskCode, "1015");
- break;
- case "hjend_2": //补空任务完成
- agvTask.Status = AGVTaskStatus.MissionCompleted;
- break;
- case "endhjBM": //取满任务完成
- agvTask.Status = AGVTaskStatus.MissionCompleted;
- break;
- case "applyEmpty": //申请补空任务
- db.Default.Insertable(new WCS_AgvTaskInfo()
- {
- AgvID = reqDto.taskCode,
- TaskType = AGVTaskType.CallForMaterial,
- Status = AGVTaskStatus.NewBuild,
- }).AddQueue();
- AgvApi.缓存架补空(reqDto.taskCode, "1016");
- break;
- case "exc_end": //异常信息上抛-值不匹配
- agvTask.Status = AGVTaskStatus.MissionCompleted;
- break;
- default:
- break;
- }
- db.Default.Updateable(agvTask).AddQueue();
- db.Default.SaveQueues();
- });
- }
- catch (Exception ex)
- {
- code = AgvResponseCode.Error;
- msg = ex.Message;
- }
- var res = new AgvCallbackResponse() { code = code, message = msg };
- return res;
- }
- }
- }
|