|
@@ -171,94 +171,82 @@ namespace WCS.WorkEngineering.WebApi.Controllers
|
|
|
{
|
|
|
var key = $"WCS:Lock:AGV:{nameof(AgvCallback)}";
|
|
|
var res = new AgvCallbackResponse() { code = AgvResponseCode.Success, message = "失败" };
|
|
|
- return res;
|
|
|
+
|
|
|
try
|
|
|
{
|
|
|
- if (RedisHub.Default.Get(key) != null)
|
|
|
+ if (RedisHub.Default.Exists(key))
|
|
|
{
|
|
|
res.code = AgvResponseCode.Error;
|
|
|
res.message = $"[{nameof(AgvCallback)}]--触发并发管控";
|
|
|
+ return res;
|
|
|
}
|
|
|
- else
|
|
|
+ RedisHub.Default.Expire(key, 60);
|
|
|
+
|
|
|
+ SqlSugarHelper.Do(db =>
|
|
|
{
|
|
|
- RedisHub.Default.Set(key, nameof(AgvCallback));
|
|
|
- WCS_TaskInfo taskInfo = null;
|
|
|
- try
|
|
|
+ //跟据AGVid找到对应的AGV任务
|
|
|
+ var agvTask = db.Default.Queryable<WCS_AgvTaskInfo>().SplitTable(tabs => tabs.Take(2))
|
|
|
+ .First(v => v.AgvID == reqDto.taskCode && v.Status < AGVTaskStatus.MissionCompleted);
|
|
|
+ if (agvTask == null)
|
|
|
{
|
|
|
- SqlSugarHelper.Do(db =>
|
|
|
- {
|
|
|
- //跟据AGVid找到对应的AGV任务
|
|
|
- var agvTask = db.Default.Queryable<WCS_AgvTaskInfo>().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任务";
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- switch (reqDto.method)
|
|
|
- {
|
|
|
- //case "start": //表示请求巷道
|
|
|
- // agvTask.Status = AGVTaskStatus.RequestOrPermission1;
|
|
|
- // break;
|
|
|
-
|
|
|
- //case "end": //表示请求巷道
|
|
|
- // agvTask.Status = AGVTaskStatus.RequestOrPermission1;
|
|
|
- // break;
|
|
|
-
|
|
|
- case "applyContinue": //表示请求巷道
|
|
|
- agvTask.AgvStatus = AGVTaskStatus.RequestOrPermission1;
|
|
|
- break;
|
|
|
+ res.code = AgvResponseCode.Fail;
|
|
|
+ res.message = "未找到对应的AGV任务";
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ switch (reqDto.method)
|
|
|
+ {
|
|
|
+ case "applyContinue": //表示请求巷道
|
|
|
+ agvTask.AgvStatus = AGVTaskStatus.RequestOrPermission1;
|
|
|
+ break;
|
|
|
|
|
|
- case "applySecurity": //表示请求放货或取货
|
|
|
- agvTask.AgvStatus = AGVTaskStatus.RequestOrPermission2;
|
|
|
- break;
|
|
|
+ case "applySecurity": //表示请求放货或取货
|
|
|
+ agvTask.AgvStatus = AGVTaskStatus.RequestOrPermission2;
|
|
|
+ break;
|
|
|
|
|
|
- case "hjend_2": //补空任务完成
|
|
|
- agvTask.AgvStatus = AGVTaskStatus.MissionCompleted;
|
|
|
- break;
|
|
|
+ case "hjend_2": //补空任务完成
|
|
|
+ agvTask.AgvStatus = AGVTaskStatus.MissionCompleted;
|
|
|
+ break;
|
|
|
|
|
|
- case "endhjBM": //取满任务完成
|
|
|
- agvTask.AgvStatus = AGVTaskStatus.MissionCompleted;
|
|
|
- break;
|
|
|
+ case "endhjBM": //取满任务完成
|
|
|
+ agvTask.AgvStatus = AGVTaskStatus.MissionCompleted;
|
|
|
+ break;
|
|
|
|
|
|
- case "end": //二楼出满任务完成
|
|
|
- agvTask.AgvStatus = AGVTaskStatus.MissionCompleted;
|
|
|
- break;
|
|
|
+ case "end": //二楼出满任务完成
|
|
|
+ agvTask.AgvStatus = AGVTaskStatus.MissionCompleted;
|
|
|
+ break;
|
|
|
|
|
|
- case "tcEnd": //机台补空任务完成
|
|
|
- agvTask.AgvStatus = AGVTaskStatus.MissionCompleted;
|
|
|
- break;
|
|
|
+ case "tcEnd": //机台补空任务完成
|
|
|
+ agvTask.AgvStatus = AGVTaskStatus.MissionCompleted;
|
|
|
+ break;
|
|
|
|
|
|
- case "exc_end": //异常信息上抛-值不匹配
|
|
|
- agvTask.AgvStatus = AGVTaskStatus.MissionCompleted;
|
|
|
- break;
|
|
|
+ case "exc_end": //异常信息上抛-值不匹配
|
|
|
+ agvTask.AgvStatus = AGVTaskStatus.MissionCompleted;
|
|
|
+ break;
|
|
|
|
|
|
- case "outbin": //小车退出取货位
|
|
|
- agvTask.AgvStatus = AGVTaskStatus.Complete3;
|
|
|
- break;
|
|
|
+ case "outbin": //小车退出取货位
|
|
|
+ agvTask.AgvStatus = AGVTaskStatus.Complete3;
|
|
|
+ break;
|
|
|
|
|
|
- case "cancel": //取消任务
|
|
|
- //agvTask.AgvStatus = AGVTaskStatus.Cancel;
|
|
|
- break;
|
|
|
- }
|
|
|
- db.Default.Updateable(agvTask).SplitTable().ExecuteCommand();
|
|
|
- res.code = AgvResponseCode.Success;
|
|
|
- res.message = "成功";
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
- catch (Exception ex)
|
|
|
- {
|
|
|
- res.code = AgvResponseCode.Error;
|
|
|
- res.message = ex.Message;
|
|
|
+ case "cancel": //取消任务
|
|
|
+ //agvTask.AgvStatus = AGVTaskStatus.Cancel;
|
|
|
+ break;
|
|
|
}
|
|
|
- }
|
|
|
+
|
|
|
+ db.Default.Updateable(agvTask).SplitTable().ExecuteCommand();
|
|
|
+ res.code = AgvResponseCode.Success;
|
|
|
+ res.message = "成功";
|
|
|
+ });
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ res.code = AgvResponseCode.Error;
|
|
|
+ res.message = ex.Message;
|
|
|
}
|
|
|
finally
|
|
|
{
|
|
|
RedisHub.Default.Del(key);
|
|
|
}
|
|
|
+
|
|
|
return res;
|
|
|
}
|
|
|
}
|