From 7ca9651f81d7b84f054194d3d46fdbd1d9c8b922 Mon Sep 17 00:00:00 2001 From: dengjunjie <dengjunjie@hnkhzn.com> Date: 星期三, 09 七月 2025 22:55:27 +0800 Subject: [PATCH] 增加质检出入库逻辑 --- 项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/AGV/AGVJob.cs | 96 ++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 89 insertions(+), 7 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 883d815..ef342f2 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" @@ -5,6 +5,7 @@ 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; @@ -15,7 +16,9 @@ using WIDESEAWCS_ITaskInfoService; using WIDESEAWCS_Model.Models; using WIDESEAWCS_QuartzJob; +using WIDESEAWCS_QuartzJob.Models; using WIDESEAWCS_QuartzJob.Service; +using WIDESEAWCS_TaskInfoService; namespace WIDESEAWCS_Tasks { @@ -38,8 +41,85 @@ { try { - List<Dt_Task> UpTasks = 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(); + #region 浠诲姟鍙栨秷 + var CancelTasks = _taskService.Db.Queryable<Dt_Task>().Where(x => x.TaskState == TaskInStatusEnum.InCancel.ObjToInt() || x.TaskState == TaskOutStatusEnum.OutCancel.ObjToInt()).ToList(); + foreach (var CancelTask in CancelTasks) + { + var difference = DateTime.Now.AddMinutes(-5); + if (difference > CancelTask.ModifyDate) + { + //todo 鍚屾鍒癢MS + WMSTaskDTO WMStask = _mapper.Map<WMSTaskDTO>(CancelTask); + HttpHelper.PostAsync(WMSInterfaceAddress.CancelTask, WMStask.ToJson(), headers: new Dictionary<string, string>()); + _taskService.AddTask_Hty(CancelTask, TaskOperateTypeEnum.AGVDeletion); + } + } + #endregion + + #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 鍚慦MS鍙嶉鍫嗗灈鏈轰换鍔″畬鎴� + WMSTaskDTO WMStask = _mapper.Map<WMSTaskDTO>(Task); + HttpHelper.PostAsync(WMSInterfaceAddress.UpdateTaskStatus, WMStask.ToJson(), headers: new Dictionary<string, string>()); + #endregion + } + } + break; + case "09": + { + Task.TaskState = _taskService.TaskInboundTypes.Contains(Task.TaskType) ? (int)TaskInStatusEnum.InCancel : TaskOutStatusEnum.OutCancel.ObjToInt(); + Task.ModifyDate = DateTime.Now; + Task.Modifier = "AGV"; + } + 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 == 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>()); @@ -48,18 +128,20 @@ if (content.code == "20000") { var task = newTasks.Where(x => x.TaskNum == agvTaskDTO.outID.ObjToInt()).First(); - task.TaskState = TaskInStatusEnum.AGV_InSend.ObjToInt(); - UpTasks.Add(task); + task.Dispatchertime = DateTime.Now; + 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; - UpTasks.Add(task); + UpnewTasks.Add(task); } Thread.Sleep(1000); } - var count = _taskService.Db.Updateable(UpTasks).ExecuteCommand(); + if (UpnewTasks.Count > 0) _taskService.Db.Updateable(UpnewTasks).ExecuteCommand(); + #endregion } catch (Exception ex) { @@ -90,7 +172,7 @@ point point2 = new point() { sn = "02", - pointCode = task.NextAddress, + pointCode = task.NextAddress == "1001" ? "2001" : task.NextAddress, pointType = "04", matCode = task.PalletCode }; -- Gitblit v1.9.3