From b691bff6fc5b24e56e1587e0cecfad58396fc061 Mon Sep 17 00:00:00 2001 From: 肖洋 <cathay_xy@163.com> Date: 星期二, 26 十一月 2024 17:57:10 +0800 Subject: [PATCH] 改了一堆,忘记改了些啥了 --- Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs | 149 ++++++++++++++++++++++++++++--------------------- 1 files changed, 85 insertions(+), 64 deletions(-) diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs index 78f336f..6ffeb40 100644 --- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs +++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs @@ -12,8 +12,8 @@ using WIDESEAWCS_QuartzJob; using WIDESEAWCS_Tasks.ConveyorLineJob; using HslCommunication; -using OfficeOpenXml.ConditionalFormatting; using WIDESEAWCS_DTO.WMS; +using WIDESEAWCS_Common; namespace WIDESEAWCS_Tasks { @@ -24,29 +24,22 @@ /// </summary> private void HandleTaskOut(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int ProtocalDetailValue, Dt_Task taskOut) { - // 濡傛灉娌℃湁浠诲姟锛岀洿鎺ヨ繑鍥� if (taskOut == null) return; - // 鏄犲皠浠诲姟鍛戒护 var taskCommand = MapTaskCommand(taskOut, command); - // 鏍规嵁涓嶅悓鐨勪换鍔$被鍨嬪拰鐘舵�佹墽琛屼笉鍚岀殑閫昏緫 bool isOutTray = taskOut.TaskType == (int)TaskOutboundTypeEnum.OutTray; bool isOutboundAndOutFinish = taskOut.TaskType == (int)TaskOutboundTypeEnum.Outbound && taskOut.TaskState == (int)TaskOutStatusEnum.SC_OutFinish; bool isOutboundAndLineOutExecuting = taskOut.TaskType == (int)TaskOutboundTypeEnum.Outbound && taskOut.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting; - if (isOutTray || isOutboundAndOutFinish || isOutboundAndLineOutExecuting) + if (isOutTray || isOutboundAndOutFinish || !isOutboundAndLineOutExecuting) { - // 鍙戦�佸懡浠ゅ埌杈撻�佺嚎 conveyorLine.SendCommand(taskCommand, childDeviceCode); - // 鏍囪鍙戦�佸畬鎴� ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); - // 鏇存柊浠诲姟鐘舵�� _taskService.UpdateTaskStatusToNext(taskOut); } else if (taskOut.TaskType == (int)TaskOutboundTypeEnum.OutTray && taskOut.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting) { - // 瀹屾垚WMS浠诲姟 CompleteWmsTask(taskOut, command, conveyorLine, childDeviceCode, ProtocalDetailValue); } } @@ -54,23 +47,45 @@ /// <summary> /// 澶勭悊鏂颁换鍔� /// </summary> - private void HandleNewTask(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int ProtocalDetailValue) + private async void HandleNewTask(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int ProtocalDetailValue) { - // 鐗瑰畾鏉′欢涓嬪垱寤哄苟鍙戦�佺┖鎵樼洏鍏ュ簱浠诲姟 - if ((conveyorLine.DeviceCode == "1003" && childDeviceCode == "1016") || (conveyorLine.DeviceCode == "1005" && childDeviceCode == "1048")) + var stationManager = _stationManagerRepository.QueryFirst(x => x.stationChildCode == childDeviceCode && x.stationPLC == conveyorLine.DeviceCode); + + switch (stationManager.stationType) { - // 璇锋眰WMS绌烘墭鐩樹换鍔� - CreateAndSendEmptyTrayTask(conveyorLine, command, childDeviceCode, ProtocalDetailValue); + case 1: + await RequestWmsTask(conveyorLine, command, childDeviceCode, ProtocalDetailValue); + break; + case 2: + break; + case 3: + break; + case 4: + break; + case 5: + break; + case 6: + await CreateAndSendEmptyTrayTask(conveyorLine, command, childDeviceCode, ProtocalDetailValue); + break; + case 7: + break; + default: + ConveyorLineOutFinish(conveyorLine, command, childDeviceCode, ProtocalDetailValue); + break; } - else if ((conveyorLine.DeviceCode == "1001" && childDeviceCode == "1088") || (conveyorLine.DeviceCode == "1004" && childDeviceCode == "1339")) - { - // 璇锋眰WMS鍏ュ簱浠诲姟 - RequestWmsTask(conveyorLine, command, childDeviceCode, ProtocalDetailValue); - } - else if ((conveyorLine.DeviceCode == "1001" && childDeviceCode == "1073") || (conveyorLine.DeviceCode == "1003" && childDeviceCode == "1002")) - { - //TODO 鍙戦�佺洿鎺ュ幓NG鍙d换鍔� - } + + //if ((conveyorLine.DeviceCode == "1003" && childDeviceCode == "1016") || (conveyorLine.DeviceCode == "1005" && childDeviceCode == "1048")) + //{ + // await CreateAndSendEmptyTrayTask(conveyorLine, command, childDeviceCode, ProtocalDetailValue); + //} + //else if ((conveyorLine.DeviceCode == "1001" && childDeviceCode == "1088") || (conveyorLine.DeviceCode == "1004" && childDeviceCode == "1339")) + //{ + // await RequestWmsTask(conveyorLine, command, childDeviceCode, ProtocalDetailValue); + //} + //else if ((conveyorLine.DeviceCode == "1001" && childDeviceCode == "1068")) + //{ + // ConveyorLineOutFinish(conveyorLine, command, childDeviceCode, ProtocalDetailValue); + //} } /// <summary> @@ -78,7 +93,6 @@ /// </summary> private ConveyorLineTaskCommand MapTaskCommand(Dt_Task task, ConveyorLineTaskCommand command) { - // 浣跨敤mapper鏄犲皠浠诲姟鍛戒护 var comm = _mapper.Map<ConveyorLineTaskCommand>(task); comm.InteractiveSignal = command.InteractiveSignal; return comm; @@ -89,25 +103,30 @@ /// </summary> private void CompleteWmsTask(Dt_Task taskOut, ConveyorLineTaskCommand command, CommonConveyorLine conveyorLine, string childDeviceCode, int ProtocalDetailValue) { - // 濡傛灉娌℃湁鏉$爜淇℃伅锛屽垯璁剧疆鐩爣鍦板潃涓篘G鍦板潃 if (command.Barcode == "NoRead") { var NGAddress = _platFormRepository.QueryFirst(x => x.PlatCode == taskOut.TargetAddress).Capacity; taskOut.TargetAddress = NGAddress.ToString(); } - // TODO璋冪敤WMS浠诲姟瀹屾垚鎺ュ彛 var keys = new Dictionary<string, object>() - { - {"taskNum", taskOut.TaskNum} - }; - var result = HttpHelper.GetAsync($"http://127.0.0.1:5000/api/Task/CompleteTaskAsync", keys).Result; + { + {"taskNum", taskOut.TaskNum} + }; + 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; WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(result); if (content.Status) { - // 鏍囪鍙戦�佸畬鎴� ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); - // 鏇存柊浠诲姟鐘舵�� _taskService.UpdateTaskStatusToNext(taskOut); } } @@ -115,31 +134,32 @@ /// <summary> /// 鍒涘缓骞跺彂閫佺┖鎵樼洏浠诲姟 /// </summary> - public void CreateAndSendEmptyTrayTask(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int ProtocalDetailValue) + public Task CreateAndSendEmptyTrayTask(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int ProtocalDetailValue) { if (command.Barcode != "NoRead") { - // 鍒涘缓绌烘墭鐩樹换鍔TO - WMSTaskDTO taskDTO = CreateEmptyTrayTaskDto(command.Barcode, childDeviceCode); - // 鍒涘缓骞跺彂閫佷换鍔� - WebResponseContent content = CreateAndSendTask(taskDTO); + var taskDTO = CreateEmptyTrayTaskDto(command.Barcode, childDeviceCode); + + if (_taskRepository.QueryFirst(x => x.PalletCode == taskDTO.PalletCode) != null) + { + WriteInfo(conveyorLine.DeviceName, "褰撳墠鎵樼洏瀛樺湪浠诲姟"); + } + + var content = CreateAndSendTask(taskDTO); if (content.Status) { - // 鏌ヨ浠诲姟 - Dt_Task task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode); + var task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode); if (task != null) { - // 鏄犲皠浠诲姟鍛戒护 - ConveyorLineTaskCommand taskCommand = MapTaskCommand(task, command); - // 鍙戦�佸懡浠ゅ埌杈撻�佺嚎 + var taskCommand = MapTaskCommand(task, command); conveyorLine.SendCommand(taskCommand, childDeviceCode); - // 鏍囪鍙戦�佸畬鎴� ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); - // 鏇存柊浠诲姟鐘舵�� _taskService.UpdateTaskStatusToNext(task); } } } + + return Task.CompletedTask; } /// <summary> @@ -147,49 +167,50 @@ /// </summary> private WMSTaskDTO CreateEmptyTrayTaskDto(string barcode, string childDeviceCode) { - #region 鍚慦MS璇锋眰绌烘墭鐩樹换鍔� - WMSTaskDTO wMSTaskDTO = new WMSTaskDTO(); - RequestTaskDto request = new RequestTaskDto() + var request = new RequestTaskDto() { Position = childDeviceCode, PalletCode = barcode, }; - var result = HttpHelper.PostAsync("http://127.0.0.1:5000/api/Task/RequestTrayInTaskAsync", request.ToJsonString()).Result; + + var config = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress); + var wmsBase = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE)?.ConfigValue; + var requestTrayInTask = config.FirstOrDefault(x => x.ConfigKey == SysConfigKeyConst.RequestTrayInTask)?.ConfigValue; + if (wmsBase == null || requestTrayInTask == null) + { + throw new InvalidOperationException("WMS IP 鏈厤缃�"); + } + var wmsIpAddrss = wmsBase + requestTrayInTask; + var result = HttpHelper.PostAsync(wmsIpAddrss, request.ToJsonString()).Result; if (result == null) - return wMSTaskDTO; + return new WMSTaskDTO(); WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(result); - // 妫�鏌ョ姸鎬佸苟杩斿洖 if (!content.Status) - return wMSTaskDTO; + return new WMSTaskDTO(); return JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString()); - - #endregion 鍚慦MS璇锋眰绌烘墭鐩樹换鍔� } /// <summary> /// 璇锋眰WMS浠诲姟 /// </summary> - private void RequestWmsTask(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int ProtocalDetailValue) + private async Task RequestWmsTask(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int ProtocalDetailValue) { - // 璇锋眰WMS浠诲姟 - if (_taskService.RequestWMSTask(command.Barcode, childDeviceCode).Status) + var content = await _taskService.RequestWMSTask(command.Barcode, childDeviceCode); + if (content.Status) { - // 鏌ヨ浠诲姟 - Dt_Task task = _taskService.QueryBarCodeConveyorLineTask(command.Barcode, childDeviceCode); + var task = _taskService.QueryBarCodeConveyorLineTask(command.Barcode, childDeviceCode); if (task != null) { - // 鏄犲皠浠诲姟鍛戒护 - ConveyorLineTaskCommand taskCommand = MapTaskCommand(task, command); - // 鍙戦�佸懡浠ゅ埌杈撻�佺嚎 + var taskCommand = MapTaskCommand(task, command); conveyorLine.SendCommand(taskCommand, childDeviceCode); - // 鏍囪鍙戦�佸畬鎴� ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); - // 鏇存柊浠诲姟鐘舵�� _taskService.UpdateTaskStatusToNext(task); } } + else + WriteInfo(conveyorLine.DeviceName, content.Message); } } -} \ No newline at end of file +} -- Gitblit v1.9.3