From 8abc9481eafeb715b39a4f4f8d6f628a642e6b53 Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期三, 19 三月 2025 17:38:18 +0800
Subject: [PATCH] 优化AGV和输送线、产线对接逻辑
---
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/AGV/AGVJob.cs | 61 ++++++++++++++++--------------
1 files changed, 33 insertions(+), 28 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/AGV/AGVJob.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/AGV/AGVJob.cs"
index d7d4715..b5295ff 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/AGV/AGVJob.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/AGV/AGVJob.cs"
@@ -39,33 +39,13 @@
{
try
{
- #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();
- foreach (var agvTaskDTO in GetAGVTaskDTOs(newTasks))
- {
- var ResultData = HttpHelper.PostAsync(AGVInterfaceAddress.taskSent, agvTaskDTO.ToJson(), headers: new Dictionary<string, string>());
- if (ResultData.Result == null) throw new Exception($"AGV浠诲姟涓嬪彂鎺ュ彛璇锋眰瓒呮椂");
- var content = JsonConvert.DeserializeObject<AGVReturnInfo>(ResultData.Result);
- if (content.code == "20000")
- {
- var task = newTasks.Where(x => x.TaskNum == agvTaskDTO.outID.ObjToInt()).First();
- task.TaskState = TaskInStatusEnum.AGV_InSend.ObjToInt();
- UpnewTasks.Add(task);
- }
- else
- {
- var task = newTasks.Where(x => x.TaskNum == agvTaskDTO.outID.ObjToInt()).First();
- task.ExceptionMessage = content.message;
- UpnewTasks.Add(task);
- }
- 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();
+ 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 ResultData = HttpHelper.PostAsync(AGVInterfaceAddress.taskResult + Task.TaskNum, null, headers: new Dictionary<string, string>());
@@ -79,16 +59,16 @@
case "01":
break;
case "02":
- Task.TaskState = TaskInStatusEnum.AGV_InExecuting.ObjToInt();
+ Task.TaskState = _taskService.TaskInboundTypes.Contains(Task.TaskType) ? TaskInStatusEnum.AGV_InExecuting.ObjToInt() : TaskOutStatusEnum.AGV_OutExecuting.ObjToInt();
break;
case "08":
{
- Task.TaskState = (int)TaskInStatusEnum.AGV_InFinish;
+ Task.TaskState = _taskService.TaskInboundTypes.Contains(Task.TaskType) ? (int)TaskInStatusEnum.AGV_InFinish : TaskOutStatusEnum.AGV_OutFinish.ObjToInt();
Task.CurrentAddress = Task.NextAddress;
List<Dt_Router> routers = _routerService.QueryNextRoutes(Task.CurrentAddress, Task.TargetAddress);
if (routers.Count > 0)
{
- Task.NextAddress = routers.FirstOrDefault().ChildPosi;
+ Task.NextAddress = routers.FirstOrDefault()?.ChildPosi ?? "";
}
}
break;
@@ -103,6 +83,31 @@
}
_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 == 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 (ResultData.Result == null) throw new Exception($"AGV浠诲姟涓嬪彂鎺ュ彛璇锋眰瓒呮椂");
+ var content = JsonConvert.DeserializeObject<AGVReturnInfo>(ResultData.Result);
+ if (content.code == "20000")
+ {
+ var task = newTasks.Where(x => x.TaskNum == agvTaskDTO.outID.ObjToInt()).First();
+ task.TaskState = _taskService.TaskInboundTypes.Contains(task.TaskType)? TaskInStatusEnum.AGV_InSend.ObjToInt(): TaskOutStatusEnum.AGV_OutSend.ObjToInt();
+ UpnewTasks.Add(task);
+ }
+ else
+ {
+ var task = newTasks.Where(x => x.TaskNum == agvTaskDTO.outID.ObjToInt()).First();
+ task.ExceptionMessage = content.message;
+ UpnewTasks.Add(task);
+ }
+ Thread.Sleep(1000);
+ }
+ if (UpnewTasks.Count > 0) _taskService.Db.Updateable(UpnewTasks).ExecuteCommand();
+ #endregion
}
catch (Exception ex)
{
--
Gitblit v1.9.3