From eae9077f3978f695f4e3af5301e8a08bdd8bf23c Mon Sep 17 00:00:00 2001 From: 肖洋 <cathay_xy@163.com> Date: 星期一, 09 十二月 2024 09:24:46 +0800 Subject: [PATCH] 最新程序 --- Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_After/CommonConveyorLine_AfterJob.cs | 183 ++++++++++++++++++++++++++++++--------------- 1 files changed, 123 insertions(+), 60 deletions(-) diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_After/CommonConveyorLine_AfterJob.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_After/CommonConveyorLine_AfterJob.cs index e5ded63..44a4a27 100644 --- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_After/CommonConveyorLine_AfterJob.cs +++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob_After/CommonConveyorLine_AfterJob.cs @@ -29,10 +29,12 @@ using System.Threading.Tasks; using WIDESEAWCS_BasicInfoRepository; using WIDESEAWCS_BasicInfoService; +using WIDESEAWCS_Common; using WIDESEAWCS_Common.TaskEnum; using WIDESEAWCS_Core; using WIDESEAWCS_Core.Helper; using WIDESEAWCS_DTO.TaskInfo; +using WIDESEAWCS_ISystemServices; using WIDESEAWCS_ITaskInfoRepository; using WIDESEAWCS_ITaskInfoService; using WIDESEAWCS_Model.Models; @@ -53,8 +55,9 @@ private readonly IRouterService _routerService; private readonly IMapper _mapper; private readonly IDt_StationManagerService _stationManagerService; + private readonly ISys_ConfigService _sys_ConfigService; - public CommonConveyorLine_AfterJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, IMapper mapper, ITaskRepository taskRepository,IDt_StationManagerService stationManagerService) + public CommonConveyorLine_AfterJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, IMapper mapper, ITaskRepository taskRepository, IDt_StationManagerService stationManagerService, ISys_ConfigService sys_ConfigService) { _taskService = taskService; _taskExecuteDetailService = taskExecuteDetailService; @@ -62,9 +65,10 @@ _mapper = mapper; _taskRepository = taskRepository; _stationManagerService = stationManagerService; + _sys_ConfigService = sys_ConfigService; } - public Task Execute(IJobExecutionContext context) + public async Task Execute(IJobExecutionContext context) { try { @@ -72,13 +76,9 @@ if (conveyorLine != null) { List<Dt_StationManager> stationManagers = _stationManagerService.GetAllStationByDeviceCode(conveyorLine.DeviceCode); - List<string> childDeviceCodes = _routerService.QueryAllPositions(conveyorLine.DeviceCode); - //List<Task> tasks = new List<Task>(); - foreach (string childDeviceCode in childDeviceCodes) + foreach (var station in stationManagers) { - ConveyorLineTaskCommand_After command = conveyorLine.ReadCustomer<ConveyorLineTaskCommand_After>(childDeviceCode); - - if (command.ConveyorLineBarcode.Trim().Contains("\0")) command.ConveyorLineBarcode = ""; + ConveyorLineTaskCommand_After command = conveyorLine.ReadCustomer<ConveyorLineTaskCommand_After>(station.stationChildCode); DeviceProtocolDetailDTO? deviceProtocolDetails = conveyorLine.DeviceProtocolDetailDTOs.FirstOrDefault(x => x.DeviceProParamName == nameof(ConveyorLineTaskCommand_After.InteractiveSignal) && x.ProtocalDetailValue == command.InteractiveSignal.ToString()); if (deviceProtocolDetails != null) @@ -86,23 +86,46 @@ MethodInfo? method = GetType().GetMethod(deviceProtocolDetails.ProtocolDetailType); if (method != null) { - method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode }); + method.Invoke(this, new object[] { conveyorLine, command, station }); } } + //if (station.stationType == 6 && station.stationArea == "3") + //{ + // await GetEmptyTrayAsync(station); + //} } - //Task.WaitAll(tasks.ToArray()); + + #region 璺敱鏂瑰紡 + //List<string> childDeviceCodes = _routerService.QueryAllPositions(conveyorLine.DeviceCode); + //foreach (string childDeviceCode in childDeviceCodes) + //{ + // ConveyorLineTaskCommand_After command = conveyorLine.ReadCustomer<ConveyorLineTaskCommand_After>(childDeviceCode); + + // if (command.ConveyorLineBarcode.Trim().Contains("\0")) command.ConveyorLineBarcode = ""; + + // DeviceProtocolDetailDTO? deviceProtocolDetails = conveyorLine.DeviceProtocolDetailDTOs.FirstOrDefault(x => x.DeviceProParamName == nameof(ConveyorLineTaskCommand_After.InteractiveSignal) && x.ProtocalDetailValue == command.InteractiveSignal.ToString()); + // if (deviceProtocolDetails != null) + // { + // MethodInfo? method = GetType().GetMethod(deviceProtocolDetails.ProtocolDetailType); + // if (method != null) + // { + // method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode }); + // } + // } + //} + #endregion } } catch (Exception ex) { - Console.Out.WriteLine(nameof(CommonConveyorLineJob) + ":" + ex.ToString()); + Console.Out.WriteLine(nameof(CommonConveyorLine_AfterJob) + ":" + ex.ToString()); } finally { //WriteDebug("CommonConveyorLineJob", "test"); //Console.Out.WriteLine(DateTime.Now); } - return Task.CompletedTask; + return; } /// <summary> @@ -111,81 +134,121 @@ /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param> /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param> /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param> - public void RequestInbound(CommonConveyorLine_After conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode) + public void RequestInbound(CommonConveyorLine_After conveyorLine, ConveyorLineTaskCommand_After command, Dt_StationManager stationInfo) { - - var taskNew = _taskService.QueryCraneConveyorLineTask(command.ConveyorLineTaskNum.ObjToInt(), childDeviceCode); + ConsoleHelper.WriteSuccessLine($"銆恵conveyorLine.DeviceName}銆�,鎵樼洏鍙凤細銆恵command.ConveyorLineBarcode}銆�,绔欏彴锛氥�恵stationInfo.remark}銆戣姹備换鍔�"); + var taskNew = _taskService.QueryTaskByPalletCode(command.ConveyorLineBarcode, stationInfo.Roadway); if (taskNew == null) { - string barcode = command.ConveyorLineBarcode.TrimEnd(); - if (_taskService.RequestWMSTask(command.ConveyorLineBarcode, childDeviceCode).Result.Status) + if (_taskService.RequestTask(command.ConveyorLineBarcode, stationInfo).Result.Status) { - Dt_Task task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode); + Dt_Task task = _taskService.QueryTaskByPalletCode(command.ConveyorLineBarcode, stationInfo.Roadway); if (task != null) { - ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(task); + //ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(task); //taskCommand.InteractiveSignal = command.InteractiveSignal; - taskCommand.ResponState = 1; - taskCommand.ConveyorLineTaskNum = task.TaskNum; - taskCommand.ConveyorLineTargetAddress = Convert.ToInt16(task.NextAddress); - conveyorLine.SendCommand(taskCommand, childDeviceCode); - + //taskCommand.ResponState = 1; + //taskCommand.ConveyorLineTaskNum = task.TaskNum; + //taskCommand.ConveyorLineTargetAddress = Convert.ToInt16(task.NextAddress); + conveyorLine.SetValue(ConveyorLineDBName_After.ResponState, 1, stationInfo.stationChildCode); + //conveyorLine.SetValue(ConveyorLineDBName_After.ConveyorLineTargetAddress, 1, task.NextAddress); //ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); - - _taskService.UpdateTaskStatusToNext(task); } } } + } - var inTask = _taskService.QueryExecutingConveyorLineTask(command.ConveyorLineTaskNum.ObjToInt(), childDeviceCode); - if (inTask != null) + /// <summary> + /// 杈撻�佺嚎璇锋眰绌烘 + /// </summary> + /// <param name="conveyorLine"></param> + /// <param name="command"></param> + /// <param name="stationInfo"></param> + public void RequestEmptyOutbound(CommonConveyorLine_After conveyorLine, ConveyorLineTaskCommand_After command, Dt_StationManager stationInfo) + { + if (stationInfo.stationType != 7) return; + var taskNew = _taskRepository.QueryFirst(x => x.Roadway == stationInfo.Roadway && x.TaskType == (int)TaskOutboundTypeEnum.OutTray); + if (taskNew == null) //涓嶅瓨鍦ㄧ┖妗嗗嚭搴撲换鍔� 鍒欒姹俉MS鍑虹┖搴� { - ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(inTask); - //taskCommand.InteractiveSignal = command.InteractiveSignal; - taskCommand.ResponState = 1; - conveyorLine.SendCommand(taskCommand, childDeviceCode); - - _taskService.UpdateTaskStatusToNext(inTask); + ConsoleHelper.WriteWarningLine("璇锋眰绌烘墭鐩�"); + if (_taskService.RequestTask(command.ConveyorLineBarcode, stationInfo).Result.Status) + { + Dt_Task task = _taskService.QueryTaskByPalletCode(command.ConveyorLineBarcode, stationInfo.Roadway); + if (task != null) + { + //ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(task); + //taskCommand.InteractiveSignal = command.InteractiveSignal; + //taskCommand.ResponState = 1; + //taskCommand.ConveyorLineTaskNum = task.TaskNum; + //taskCommand.ConveyorLineTargetAddress = Convert.ToInt16(task.NextAddress); + //conveyorLine.SetValue(ConveyorLineDBName_After.ResponState, 1, stationInfo.stationChildCode); + //conveyorLine.SetValue(ConveyorLineDBName_After.ConveyorLineTargetAddress, 1, task.NextAddress); + //ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); + } + } } } /// <summary> - /// 杈撻�佺嚎鍏ュ簱瀹屾垚 + /// 杈撻�佺嚎璇锋眰鍏ュ簱 /// </summary> /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param> /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param> /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param> - /// <param name="ProtocalDetailValue">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param> - public void ConveyorLineInFinish(CommonConveyorLine_After conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode) + //public void RequestInbound(CommonConveyorLine_After conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode) + //{ + // var stationInfo = _stationManagerService.GetStationInfoByChildCode(childDeviceCode); + // if (stationInfo != null) + // { + // //_taskService.r + // } + // var taskNew = _taskService.QueryCraneConveyorLineTask(command.ConveyorLineTaskNum.ObjToInt(), childDeviceCode); + // if (taskNew == null) + // { + // string barcode = command.ConveyorLineBarcode.TrimEnd(); + // if (_taskService.RequestWMSTask(command.ConveyorLineBarcode, childDeviceCode).Result.Status) + // { + // Dt_Task task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode); + // if (task != null) + // { + // ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(task); + // //taskCommand.InteractiveSignal = command.InteractiveSignal; + // taskCommand.ResponState = 1; + // taskCommand.ConveyorLineTaskNum = task.TaskNum; + // taskCommand.ConveyorLineTargetAddress = Convert.ToInt16(task.NextAddress); + // conveyorLine.SendCommand(taskCommand, childDeviceCode); + + // //ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); + + // _taskService.UpdateTaskStatusToNext(task); + // } + // } + // } + //} + + private async Task GetEmptyTrayAsync(Dt_StationManager stationManager) { - Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.ConveyorLineTaskNum, childDeviceCode); - if (task != null && task.TaskState != (int)TaskInStatusEnum.Line_InFinish) + var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress); + var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue; + var requestTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.GetFROutTrayToCW)?.ConfigValue; + if (wmsBase == null || requestTask == null) { - //ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); - - //conveyorLine.SetValue(ConveyorLineDBName.WriteInteractiveSignal, 0, childDeviceCode); - WebResponseContent content = _taskService.UpdateTaskStatusToNext(task); - Console.Out.WriteLine(content.Serialize()); + throw new InvalidOperationException("WMS IP 鏈厤缃�"); } - } + var wmsIpAddrss = wmsBase + requestTask; - /// <summary> - /// 杈撻�佺嚎璇锋眰鍑轰俊鎭� - /// </summary> - /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param> - /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param> - /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param> - public void RequestOutbound(CommonConveyorLine_After conveyorLine, ConveyorLineTaskCommand_After command, string childDeviceCode) - { - Dt_Task task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode); - if (task != null) + var result = await HttpHelper.PostAsync(wmsIpAddrss, new { palletCode = "", EquiCodeMOM = stationManager.stationEquipMOM, Roadways = stationManager.Roadway, area = stationManager.stationArea, Position = stationManager.stationChildCode }.ToJsonString()); + WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(result); + if(!content.Status) { - // ConveyorLineTaskCommand_After taskCommand = _mapper.Map<ConveyorLineTaskCommand_After>(task); - //taskCommand.InteractiveSignal = command.InteractiveSignal; - // conveyorLine.SendCommand(taskCommand, childDeviceCode); - - _taskService.UpdateTaskStatusToNext(task); + //ConsoleHelper.WriteErrorLine($"鍒嗗鍛煎彨绌烘墭鐩樺け璐content.Message}"); + return; } + WMSTaskDTO wMSTaskDTO = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString()); + + ConsoleHelper.WriteSuccessLine(content.Data.ToString()); + List<WMSTaskDTO> wMSTaskDTOs = new List<WMSTaskDTO>() { wMSTaskDTO }; + _taskService.ReceiveWMSTask(wMSTaskDTOs); } } } -- Gitblit v1.9.3