| | |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Reflection.Metadata; |
| | | using System.Security.Cryptography; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEAWCS_Common.TaskEnum; |
| | |
| | | { |
| | | try |
| | | { |
| | | #region 任塿´æ° |
| | | var Tasks = _taskService.Db.Queryable<Dt_Task>().Where(x => |
| | | x.TaskState > (int)TaskInStatusEnum.InNew && |
| | | x.TaskState < (int)TaskInStatusEnum.AGV_InFinish || |
| | | x.TaskState > (int)TaskOutStatusEnum.Line_OutFinish && |
| | | x.TaskState < (int)TaskOutStatusEnum.AGV_OutFinish).ToList().OrderBy(x => x.Grade).ThenBy(x => x.CreateDate).ToList(); |
| | | foreach (var Task in Tasks) |
| | | { |
| | | var obj = new |
| | | { |
| | | outID = Task.TaskNum.ToString() |
| | | }; |
| | | var ResultData = HttpHelper.PostAsync(AGVInterfaceAddress.taskResult, obj.ToJson(), headers: new Dictionary<string, string>()); |
| | | if (ResultData.Result != null) |
| | | { |
| | | var content = JsonConvert.DeserializeObject<AGVReturnInfo>(ResultData.Result); |
| | | if (content.code == "20000") |
| | | { |
| | | switch (content.status) |
| | | { |
| | | case "01": |
| | | break; |
| | | case "02": |
| | | Task.TaskState = _taskService.TaskInboundTypes.Contains(Task.TaskType) ? TaskInStatusEnum.AGV_InExecuting.ObjToInt() : TaskOutStatusEnum.AGV_OutExecuting.ObjToInt(); |
| | | break; |
| | | case "08": |
| | | { |
| | | Task.TaskState = _taskService.TaskInboundTypes.Contains(Task.TaskType) ? (int)TaskInStatusEnum.AGV_InFinish : TaskOutStatusEnum.AGV_OutFinish.ObjToInt(); |
| | | Task.CurrentAddress = Task.NextAddress; |
| | | Task.NextAddress = ""; |
| | | List<Dt_Router> routers = _routerService.QueryNextRoutes(Task.CurrentAddress, Task.TargetAddress); |
| | | if (routers.Count > 0) |
| | | { |
| | | Task.NextAddress = routers.FirstOrDefault()?.ChildPosi ?? ""; |
| | | } |
| | | if (Task.TaskState == TaskOutStatusEnum.AGV_OutFinish.ObjToInt()) |
| | | { |
| | | #region åWMSåé¦å åæºä»»å¡å®æ |
| | | WMSTaskDTO WMStask = _mapper.Map<WMSTaskDTO>(Task); |
| | | HttpHelper.PostAsync(WMSInterfaceAddress.UpdateTaskStatus, WMStask.ToJson(), headers: new Dictionary<string, string>()); |
| | | #endregion |
| | | } |
| | | } |
| | | break; |
| | | case "09": |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | Thread.Sleep(5000); |
| | | } |
| | | _taskService.Db.Updateable(Tasks).ExecuteCommand(); |
| | | #endregion |
| | | |
| | | #region ä»»å¡ä¸å |
| | | List<Dt_Task> UpnewTasks = new List<Dt_Task>(); |
| | | var newTasks = _taskService.Db.Queryable<Dt_Task>().Where(x => x.TaskState == (int)TaskInStatusEnum.InNew).ToList().OrderBy(x => x.Grade).ThenBy(x => x.CreateDate).ToList(); |
| | | var newTasks = _taskService.Db.Queryable<Dt_Task>().Where(x => x.TaskState == TaskInStatusEnum.InNew.ObjToInt() || x.TaskState == TaskOutStatusEnum.Line_OutFinish.ObjToInt()).ToList().OrderBy(x => x.Grade).ThenBy(x => x.CreateDate).ToList(); |
| | | foreach (var agvTaskDTO in GetAGVTaskDTOs(newTasks)) |
| | | { |
| | | var ResultData = HttpHelper.PostAsync(AGVInterfaceAddress.taskSent, agvTaskDTO.ToJson(), headers: new Dictionary<string, string>()); |
| | |
| | | if (content.code == "20000") |
| | | { |
| | | var task = newTasks.Where(x => x.TaskNum == agvTaskDTO.outID.ObjToInt()).First(); |
| | | task.TaskState = TaskInStatusEnum.AGV_InSend.ObjToInt(); |
| | | task.TaskState = _taskService.TaskInboundTypes.Contains(task.TaskType) ? TaskInStatusEnum.AGV_InSend.ObjToInt() : TaskOutStatusEnum.AGV_OutSend.ObjToInt(); |
| | | UpnewTasks.Add(task); |
| | | } |
| | | else |
| | |
| | | Thread.Sleep(1000); |
| | | } |
| | | if (UpnewTasks.Count > 0) _taskService.Db.Updateable(UpnewTasks).ExecuteCommand(); |
| | | #endregion |
| | | |
| | | #region 任塿´æ° |
| | | var Tasks = _taskService.Db.Queryable<Dt_Task>().Where(x => x.TaskState > (int)TaskInStatusEnum.InNew && x.TaskState < (int)TaskInStatusEnum.AGV_InFinish).ToList().OrderBy(x => x.Grade).ThenBy(x => x.CreateDate).ToList(); |
| | | foreach (var Task in Tasks) |
| | | { |
| | | var ResultData = HttpHelper.PostAsync(AGVInterfaceAddress.taskResult + Task.TaskNum, null, headers: new Dictionary<string, string>()); |
| | | if (ResultData.Result != null) |
| | | { |
| | | var content = JsonConvert.DeserializeObject<AGVReturnInfo>(ResultData.Result); |
| | | if (content.code == "20000") |
| | | { |
| | | switch (content.status) |
| | | { |
| | | case "01": |
| | | break; |
| | | case "02": |
| | | Task.TaskState = TaskInStatusEnum.AGV_InExecuting.ObjToInt(); |
| | | break; |
| | | case "08": |
| | | { |
| | | Task.TaskState = (int)TaskInStatusEnum.AGV_InFinish; |
| | | Task.CurrentAddress = Task.NextAddress; |
| | | List<Dt_Router> routers = _routerService.QueryNextRoutes(Task.CurrentAddress, Task.TargetAddress); |
| | | if (routers.Count > 0) |
| | | { |
| | | Task.NextAddress = routers.FirstOrDefault().ChildPosi; |
| | | } |
| | | } |
| | | break; |
| | | case "09": |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | Thread.Sleep(1000); |
| | | } |
| | | _taskService.Db.Updateable(Tasks).ExecuteCommand(); |
| | | #endregion |
| | | } |
| | | catch (Exception ex) |