From 5431646d7fc6bd18e3fe9484b875084e620d6dc6 Mon Sep 17 00:00:00 2001 From: 肖洋 <cathay_xy@163.com> Date: 星期日, 15 十二月 2024 09:28:05 +0800 Subject: [PATCH] Merge branch 'master' of http://115.159.85.185:8098/r/HuaYiZhongHeng/BaiBuLiKu --- Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs | 173 ++++++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 132 insertions(+), 41 deletions(-) diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs index 8999c14..5dee342 100644 --- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs +++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs @@ -1,6 +1,8 @@ 锘� using AutoMapper; using HslCommunication; +using Mapster; +using Microsoft.AspNetCore.Components.Routing; using Newtonsoft.Json; using SqlSugar; using System.Diagnostics.CodeAnalysis; @@ -15,10 +17,14 @@ using WIDESEAWCS_DTO.TaskInfo; using WIDESEAWCS_DTO.WMS; using WIDESEAWCS_ISystemServices; +using WIDESEAWCS_ITaskInfo_HtyRepository; using WIDESEAWCS_ITaskInfoRepository; using WIDESEAWCS_ITaskInfoService; using WIDESEAWCS_Model.Models; +using WIDESEAWCS_QuartzJob; +using WIDESEAWCS_QuartzJob.DeviceBase; using WIDESEAWCS_QuartzJob.Models; +using WIDESEAWCS_QuartzJob.Repository; using WIDESEAWCS_QuartzJob.Service; namespace WIDESEAWCS_TaskInfoService @@ -32,6 +38,8 @@ private readonly IMapper _mapper; private readonly IDt_StationManagerService _stationManagerService; private readonly IDt_StationManagerRepository _stationManagerRepository; + private readonly IRouterRepository _routerRepository; + private readonly ITask_HtyRepository _taskHtyRepository; private Dictionary<string, OrderByType> _taskOrderBy = new() { @@ -46,7 +54,7 @@ public List<int> TaskOutboundTypes => typeof(TaskOutboundTypeEnum).GetEnumIndexList(); - public TaskService(ITaskRepository BaseDal, IRouterService routerService, ITaskExecuteDetailService taskExecuteDetailService, ITaskExecuteDetailRepository taskExecuteDetailRepository, IMapper mapper, ISys_ConfigService sys_ConfigService, IDt_StationManagerService stationManagerService, IDt_StationManagerRepository stationManagerRepository) : base(BaseDal) + public TaskService(ITaskRepository BaseDal, IRouterService routerService, ITaskExecuteDetailService taskExecuteDetailService, ITaskExecuteDetailRepository taskExecuteDetailRepository, IMapper mapper, ISys_ConfigService sys_ConfigService, IDt_StationManagerService stationManagerService, IDt_StationManagerRepository stationManagerRepository, IRouterRepository routerRepository, ITask_HtyRepository htyRepository) : base(BaseDal) { _routerService = routerService; _taskExecuteDetailService = taskExecuteDetailService; @@ -55,6 +63,8 @@ _sys_ConfigService = sys_ConfigService; _stationManagerService = stationManagerService; _stationManagerRepository = stationManagerRepository; + _routerRepository = routerRepository; + _taskHtyRepository = htyRepository; } /// <summary> @@ -84,6 +94,16 @@ task.TaskState = (int)TaskOutStatusEnum.OutNew; task.CurrentAddress = item.SourceAddress; task.NextAddress = routers.FirstOrDefault().ChildPosi; + } + else + { + routers = _routerService.QueryNextRoutes(item.SourceAddress, item.TargetAddress); + if (routers.Count > 0) + { + task.TaskState = (int)TaskOutStatusEnum.SC_OutFinish; + task.CurrentAddress = item.SourceAddress; + task.NextAddress = routers.FirstOrDefault().ChildPosi; + } } } else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup) @@ -125,7 +145,7 @@ var hasTask = await BaseDal.QueryFirstAsync(x => x.PalletCode == palletCode); if (hasTask != null) { - return content.Error("褰撳墠鎵樼洏瀛樺湪浠诲姟"); + return content.OK("褰撳墠鎵樼洏瀛樺湪浠诲姟"); } var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress); @@ -147,7 +167,24 @@ } var task = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString()); - return ReceiveWMSTask(new List<WMSTaskDTO> { task }); + if (task.TaskType == (int)TaskInboundTypeEnum.InNG) + { + var station = await _stationManagerRepository.QueryFirstAsync(x => x.stationChildCode == task.SourceAddress); + Dt_Task _Task = _mapper.Map<Dt_Task>(task); + _Task.TaskState = (int)TaskInStatusEnum.InNew; + _Task.CurrentAddress = task.SourceAddress; + _Task.NextAddress = station.stationNGChildCode; + _Task.TargetAddress = station.stationNGLocation; + _Task.Roadway = station.Roadway; + + BaseDal.AddData(_Task); + _taskExecuteDetailService.AddTaskExecuteDetail(_Task.TaskNum, "鎺ユ敹WMS浠诲姟"); + return content.OK(); + } + else + { + return ReceiveWMSTask(new List<WMSTaskDTO> { task }); + } } catch (Exception ex) { @@ -381,7 +418,12 @@ { task.ModifyDate = DateTime.Now; task.Modifier = "System"; + + Dt_Task_Hty task_Hty = _mapper.Map<Dt_Task_Hty>(task); + task_Hty.TaskId = 0; + BaseDal.DeleteData(task); + _taskHtyRepository.AddData(task_Hty); } } else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup) @@ -437,7 +479,11 @@ task.ModifyDate = DateTime.Now; task.Modifier = "System"; + Dt_Task_Hty task_Hty = _mapper.Map<Dt_Task_Hty>(task); + task_Hty.TaskId = 0; + BaseDal.DeleteData(task); + _taskHtyRepository.AddData(task_Hty); } } else @@ -528,20 +574,70 @@ var task = BaseDal.QueryFirst(x => x.TaskNum == taskNum); if (task == null) return WebResponseContent.Instance.Error($"鏈壘鍒拌浠诲姟淇℃伅,浠诲姟鍙�:銆恵taskNum}銆�"); + #region WMS鍚屾浠诲姟瀹屾垚 + var keys = new Dictionary<string, object>() + { + {"taskNum", taskNum} + }; + // 鑾峰彇WMSip鍦板潃 + var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress); + var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue; + var completeTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.CompleteTask)?.ConfigValue; + if (wmsBase == null || completeTask == null) + { + throw new InvalidOperationException("WMS IP 鏈厤缃�"); + } + var wmsIpAddress = wmsBase + completeTask; + + var result = HttpHelper.GetAsync(wmsIpAddress, keys).Result; + content = JsonConvert.DeserializeObject<WebResponseContent>(result); + if (!content.Data.IsNullOrEmpty()) + { + if (content.Data.ToString() == "NG") + { + task.Remark = "NG"; + //BaseDal.UpdateData(task); + //_taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄嚭搴撳畬鎴愶紝MOM杩斿洖NG"); + } + } + task.ExceptionMessage += " " + content.Message; + #endregion + if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup && task.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting) { - var routers = _routerService.QueryNextRoutes(task.NextAddress, task.TargetAddress); - if (!routers.Any()) return WebResponseContent.Instance.Error($"鏈壘鍒拌澶囪矾鐢变俊鎭�"); + if (!task.Roadway.Contains("GW")) + { + var routers = _routerService.QueryNextRoutes(task.NextAddress, task.TargetAddress); + if (!routers.Any()) return WebResponseContent.Instance.Error($"鏈壘鍒拌澶囪矾鐢变俊鎭�"); - int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskOutStatusEnum>(); - task.TaskState = nextStatus; - task.CurrentAddress = task.NextAddress; - task.NextAddress = routers.FirstOrDefault().ChildPosi; - task.ModifyDate = DateTime.Now; - task.Modifier = "System"; - BaseDal.UpdateData(task); + int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskOutStatusEnum>(); + task.TaskState = nextStatus; + task.CurrentAddress = task.NextAddress; + task.NextAddress = routers.FirstOrDefault().ChildPosi; + task.ModifyDate = DateTime.Now; + task.Modifier = "System"; + BaseDal.UpdateData(task); - _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄嚭搴撳畬鎴�"); + _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄嚭搴撳畬鎴�"); + } + else + { + task.TaskState = (int)TaskOutStatusEnum.OutFinish; + //濡傞珮娓╁嚭搴撳悗 NG 鍒欏皢浠诲姟鏍囪涓篘G 骞跺湪鍑哄簱鐢宠鍚庡皢浠诲姟鍑鸿嚦NG鍙� + if (task.Remark == "NG") + { + BaseDal.UpdateData(task); + } + else + { + BaseDal.DeleteData(task); + ConsoleHelper.WriteWarningLine($"楂樻俯鍑哄簱鐩殑鍦板潃{task.TargetAddress}"); + } + + var taskHty = task.Adapt<Dt_Task_Hty>(); + _taskHtyRepository.AddData(taskHty); + _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄嚭搴撳畬鎴�"); + } //鏆備笉鑰冭檻澶氫釜鍑哄簱鍙� @@ -553,7 +649,12 @@ task.TaskState = nextStatus; task.ModifyDate = DateTime.Now; task.Modifier = "System"; + + Dt_Task_Hty task_Hty = _mapper.Map<Dt_Task_Hty>(task); + task_Hty.TaskId = 0; + BaseDal.DeleteData(task); + _taskHtyRepository.AddData(task_Hty); _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"鍫嗗灈鏈哄叆搴撳畬鎴�"); } else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup) @@ -569,37 +670,17 @@ } - #region WMS鍚屾浠诲姟瀹屾垚 - var keys = new Dictionary<string, object>() - { - {"taskNum", taskNum} - }; - // 鑾峰彇WMSip鍦板潃 - var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress); - var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue; - var completeTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.CompleteTask)?.ConfigValue; - if (wmsBase == null || completeTask == null) - { - throw new InvalidOperationException("WMS IP 鏈厤缃�"); - } - var wmsIpAddress = wmsBase + completeTask; - - var result = HttpHelper.GetAsync(wmsIpAddress, keys).Result; - content = JsonConvert.DeserializeObject<WebResponseContent>(result); - #endregion - - #region 鏇存柊浠诲姟鐘舵�� - var updateTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.UpdateTask)?.ConfigValue; - if (wmsBase == null || updateTask == null) - { - throw new InvalidOperationException("WMS IP 鏈厤缃�"); - } - wmsIpAddress = wmsBase + updateTask; + //var updateTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.UpdateTask)?.ConfigValue; + //if (wmsBase == null || updateTask == null) + //{ + // throw new InvalidOperationException("WMS IP 鏈厤缃�"); + //} + //wmsIpAddress = wmsBase + updateTask; - result = HttpHelper.PostAsync(wmsIpAddress, new { TaskNum = task.TaskNum, TaskState = task.TaskState }.ToJsonString()).Result; - content = JsonConvert.DeserializeObject<WebResponseContent>(result); + //result = HttpHelper.PostAsync(wmsIpAddress, new { TaskNum = task.TaskNum, TaskState = task.TaskState }.ToJsonString()).Result; + //content = JsonConvert.DeserializeObject<WebResponseContent>(result); #endregion //content = WebResponseContent.Instance.OK(); } @@ -699,5 +780,15 @@ } return content; } + + public Dt_Task QueryRelocationTask(string deviceNo) + { + return BaseDal.QueryFirst(x => x.Roadway == deviceNo && x.TaskType == (int)TaskRelocationTypeEnum.Relocation && x.TaskState == (int)TaskStatus.Created); + } + + public Dt_Task QueryExecutingTaskByBarcode(string barcode, string nextAddress) + { + return BaseDal.QueryFirst(x => x.PalletCode == barcode && x.NextAddress == nextAddress && (x.TaskState == (int)TaskInStatusEnum.Line_InExecuting || x.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting), TaskOrderBy); + } } } \ No newline at end of file -- Gitblit v1.9.3