From 7e1117448739eb1906c6f07eb4d59ad20cdff4e9 Mon Sep 17 00:00:00 2001 From: huangxiaoqiang <1247017146@qq.com> Date: 星期三, 16 四月 2025 16:22:14 +0800 Subject: [PATCH] 去除Redis --- Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs | 330 +++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 235 insertions(+), 95 deletions(-) diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs index 95f92d0..9719f2b 100644 --- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs +++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs @@ -23,6 +23,7 @@ using WIDESEAWCS_QuartzJob; using WIDESEAWCS_QuartzJob.DeviceBase; using WIDESEAWCS_QuartzJob.DTO; +using WIDESEAWCS_QuartzJob.Models; using WIDESEAWCS_QuartzJob.Repository; using WIDESEAWCS_QuartzJob.Service; using WIDESEAWCS_SignalR; @@ -51,8 +52,7 @@ private static List<string>? userTokenIds; private static List<int>? userIds; - - public CommonConveyorLineJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, IMapper mapper, ITaskRepository taskRepository, IPlatFormRepository platFormRepository, ISys_ConfigService sys_ConfigService, IDt_StationManagerService stationManagerService, IDt_StationManagerRepository stationManagerRepository, ICacheService cacheService, INoticeService noticeService, IDeviceInfoRepository deviceInfoRepository,ITask_HtyRepository task_HtyRepository) + public CommonConveyorLineJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, IMapper mapper, ITaskRepository taskRepository, IPlatFormRepository platFormRepository, ISys_ConfigService sys_ConfigService, IDt_StationManagerService stationManagerService, IDt_StationManagerRepository stationManagerRepository, ICacheService cacheService, INoticeService noticeService, IDeviceInfoRepository deviceInfoRepository, ITask_HtyRepository task_HtyRepository) { _taskService = taskService; _taskExecuteDetailService = taskExecuteDetailService; @@ -78,70 +78,115 @@ CommonConveyorLine conveyorLine = (CommonConveyorLine)context.JobDetail.JobDataMap.Get("JobParams"); if (conveyorLine != null) { + //ConsoleHelper.WriteColorLine("寮�濮嬶細" + DateTime.Now, ConsoleColor.Cyan); // 鏌ヨ鎵�鏈夊瓙璁惧鐨勪綅缃� List<string> childDeviceCodes = _routerService.QueryAllPositions(conveyorLine.DeviceCode); + // 鑾峰彇鎵�鏈夌珯鐐圭鐞嗗櫒 + List<Dt_StationManager> stationManagers = _stationManagerService.GetAllStationByDeviceCode(conveyorLine.DeviceCode); // 骞惰澶勭悊姣忎釜瀛愯澶� var tasks = childDeviceCodes.Select(childDeviceCode => ProcessDeviceAsync(conveyorLine, childDeviceCode)).ToList(); + + // 骞惰澶勭悊姣忎釜绔欑偣绠$悊鍣� + tasks = stationManagers.Select(station => Task.Run(async () => + { + var (command, commandWrite) = ReadCommands(station, conveyorLine); + if (command == null || commandWrite == null) + { + return; + } + + IStationHandler handler = StationHandlerFactory.GetHandler(station.stationType, this); + await handler.HandleStationAsync(conveyorLine, station, command, commandWrite); + })).ToList(); + + #region + //foreach (var station in stationManagers) + //{ + // #region + // //tasks.Add(Task.Run(async () => + // //{ + // // if (station.stationType == 11) + // // { + // // // 璇诲彇浠诲姟鍛戒护鍜岃澶囧懡浠� + // // ConveyorLineTaskCommand command = conveyorLine.ReadCustomer<ConveyorLineTaskCommand>(station.stationChildCode); + // // ConveyorLineTaskCommandWrite commandWrite = conveyorLine.ReadCustomer<ConveyorLineTaskCommandWrite>(station.stationChildCode, "DeviceCommand"); + // // if (command != null && commandWrite != null) + // // { + // // // 灏嗕氦浜掍俊鍙疯浆鎹负甯冨皵鏁扮粍 + // // var structs = BitConverter.GetBytes(commandWrite.WriteInteractiveSignal).Reverse().ToArray().ToBoolArray(); + // // if (structs[0] == true) + // // { + // // // 杈撳嚭璀﹀憡淇℃伅 + // // var log = $"銆恵conveyorLine.DeviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵station.stationChildCode}銆戠┖鎵樼洏璇锋眰鎵爜鍏ュ簱"; + // // ConsoleHelper.WriteWarningLine(log); + + // // await _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = log, time = DateTime.Now.ToString("G"), color = "red" }); + // // WriteInfo(conveyorLine.DeviceName, log); + + // // // 澶勭悊鍏ュ簱璇锋眰 + // // NGRequestTaskInbound(conveyorLine, command, station, 0); + // // } + // // else + // // { + // // // 鍙戦�佸畬鎴愪俊鍙� + // // ConveyorLineSendFinish(conveyorLine, station.stationChildCode, 0, false); + // // } + // // } + // // } + // // else if (station.stationType == 5) + // // { + // // // 璇诲彇浠诲姟鍛戒护鍜岃澶囧懡浠� + // // ConveyorLineTaskCommand command = conveyorLine.ReadCustomer<ConveyorLineTaskCommand>(station.stationChildCode); + // // ConveyorLineTaskCommandWrite commandWrite = conveyorLine.ReadCustomer<ConveyorLineTaskCommandWrite>(station.stationChildCode, "DeviceCommand"); + // // if (command != null && commandWrite != null) + // // { + // // // 灏嗕氦浜掍俊鍙疯浆鎹负甯冨皵鏁扮粍 + // // var structs = BitConverter.GetBytes(commandWrite.WriteInteractiveSignal).Reverse().ToArray().ToBoolArray(); + // // if (structs[0] == true) + // // { + // // // 妫�鏌ユ槸鍚﹀瓨鍦ㄤ换鍔� + // // if (_taskRepository.QueryData(x => x.SourceAddress == station.stationChildCode).Count() > 0) + // // { + // // return; + // // } + // // // 杈撳嚭璀﹀憡淇℃伅 + // // var log = $"銆恵conveyorLine.DeviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵station.stationChildCode}銆戝紓甯稿彛璇锋眰鎵爜鍏ュ簱"; + // // ConsoleHelper.WriteWarningLine(log); + + // // await _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = log, time = DateTime.Now.ToString("G"), color = "red" }); + // // WriteInfo(conveyorLine.DeviceName, log); + + // // // 澶勭悊鏂颁换鍔� + // // await HandleNewTaskAsync(conveyorLine, command, station.stationChildCode, 0); + // // } + // // else + // // { + // // // 鍙戦�佸畬鎴愪俊鍙� + // // ConveyorLineSendFinish(conveyorLine, station.stationChildCode, 0, false); + // // } + // // } + // // } + // //})); + // #endregion + + // tasks.Add(Task.Run(async () => + // { + // var (command, commandWrite) = ReadCommands(station, conveyorLine); + // if (command == null || commandWrite == null) + // { + // return; + // } + + // IStationHandler handler = StationHandlerFactory.GetHandler(station.stationType, this); + // await handler.HandleStationAsync(conveyorLine, station, command, commandWrite); + // })); + //} + #endregion + await Task.WhenAll(tasks); - - // 鑾峰彇鎵�鏈夌珯鐐圭鐞嗗櫒 - List<Dt_StationManager> stationManagers = _stationManagerService.GetAllStationByDeviceCode(conveyorLine.DeviceCode); - foreach (var station in stationManagers) - { - if (station.stationType == 11) - { - // 璇诲彇浠诲姟鍛戒护鍜岃澶囧懡浠� - ConveyorLineTaskCommand command = conveyorLine.ReadCustomer<ConveyorLineTaskCommand>(station.stationChildCode); - ConveyorLineTaskCommandWrite commandWrite = conveyorLine.ReadCustomer<ConveyorLineTaskCommandWrite>(station.stationChildCode, "DeviceCommand"); - if (command != null && commandWrite != null) - { - // 灏嗕氦浜掍俊鍙疯浆鎹负甯冨皵鏁扮粍 - var structs = BitConverter.GetBytes(commandWrite.WriteInteractiveSignal).Reverse().ToArray().ToBoolArray(); - if (structs[0] == true) - { - // 杈撳嚭璀﹀憡淇℃伅 - ConsoleHelper.WriteWarningLine($"銆恵conveyorLine.DeviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵station.stationChildCode}銆戠┖鎵樼洏璇锋眰鎵爜鍏ュ簱"); - // 澶勭悊鍏ュ簱璇锋眰 - NGRequestTaskInbound(conveyorLine, command, station, 0); - } - else - { - // 鍙戦�佸畬鎴愪俊鍙� - ConveyorLineSendFinish(conveyorLine, station.stationChildCode, 0, false); - } - } - } - else if (station.stationType == 5) - { - // 璇诲彇浠诲姟鍛戒护鍜岃澶囧懡浠� - ConveyorLineTaskCommand command = conveyorLine.ReadCustomer<ConveyorLineTaskCommand>(station.stationChildCode); - ConveyorLineTaskCommandWrite commandWrite = conveyorLine.ReadCustomer<ConveyorLineTaskCommandWrite>(station.stationChildCode, "DeviceCommand"); - if (command != null && commandWrite != null) - { - // 灏嗕氦浜掍俊鍙疯浆鎹负甯冨皵鏁扮粍 - var structs = BitConverter.GetBytes(commandWrite.WriteInteractiveSignal).Reverse().ToArray().ToBoolArray(); - if (structs[0] == true) - { - // 妫�鏌ユ槸鍚﹀瓨鍦ㄤ换鍔� - if (_taskRepository.QueryData(x => x.SourceAddress == station.stationChildCode).Count() > 0) - { - return; - } - // 杈撳嚭璀﹀憡淇℃伅 - ConsoleHelper.WriteWarningLine($"銆恵conveyorLine.DeviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵station.stationChildCode}銆戝紓甯稿彛璇锋眰鎵爜鍏ュ簱"); - // 澶勭悊鏂颁换鍔� - await HandleNewTaskAsync(conveyorLine, command, station.stationChildCode, 0); - } - else - { - // 鍙戦�佸畬鎴愪俊鍙� - ConveyorLineSendFinish(conveyorLine, station.stationChildCode, 0, false); - } - } - } - } + //ConsoleHelper.WriteColorLine("缁撴潫锛�" + DateTime.Now, ConsoleColor.Cyan); } } catch (Exception ex) @@ -156,7 +201,6 @@ { try { - // 璇诲彇浠诲姟鍛戒护鍜岃澶囧懡浠� ConveyorLineTaskCommand command = conveyorLine.ReadCustomer<ConveyorLineTaskCommand>(childDeviceCode); ConveyorLineTaskCommandWrite commandWrite = conveyorLine.ReadCustomer<ConveyorLineTaskCommandWrite>(childDeviceCode, "DeviceCommand"); @@ -214,7 +258,7 @@ } // 鏌ヨ骞冲彴淇℃伅 - Platform platform = _platFormRepository.QueryFirst(x => x.PLCCode == conveyorLine.DeviceCode && x.PlatCode == childDeviceCode && x.Status == "Active"); + Platform platform = _platFormRepository.QueryFirst(x => x.DeviceCode == conveyorLine.DeviceCode && x.PlatCode == childDeviceCode && x.Status == "Active"); if (platform != null && !string.IsNullOrEmpty(platform.Location)) { var strings = platform.Location.Split(',').ToList(); @@ -245,7 +289,6 @@ } catch (Exception ex) { - } return Task.CompletedTask; } @@ -291,7 +334,11 @@ conveyorLine.SendCommand(taskCommand, childDeviceCode); // 杈撳嚭璀﹀憡淇℃伅锛岃〃绀轰换鍔″凡鍒拌揪瀛愯澶囧苟璇锋眰鎵爜鍏ュ簱锛屼笅涓�鐩爣鍦板潃 - ConsoleHelper.WriteWarningLine($"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣姹傛壂鐮佸叆搴�,涓嬩竴鐩爣鍦板潃銆恵taskCommand.TargetAddress}銆�"); + var logs = $"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣姹傛壂鐮佸叆搴�,涓嬩竴鐩爣鍦板潃銆恵taskCommand.TargetAddress}銆�"; + ConsoleHelper.WriteWarningLine(logs); + + await _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = logs, time = DateTime.Now.ToString("G"), color = "red" }); + WriteInfo(conveyorLine.DeviceName, logs); // 鍙戦�佷换鍔″畬鎴愰�氱煡 ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); @@ -329,7 +376,12 @@ /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param> public void RequestInNextAddress(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode) { - ConsoleHelper.WriteWarningLine($"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣姹傚叆搴撲笅涓�鍦板潃"); + var log = $"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣姹傚叆搴撲笅涓�鍦板潃"; + ConsoleHelper.WriteWarningLine(log); + + _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = log, time = DateTime.Now.ToString("G"), color = "red" }); + WriteInfo(conveyorLine.DeviceName, log); + Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, childDeviceCode); if (task != null) { @@ -344,9 +396,14 @@ var taskCommand = MapTaskCommand(newTask, command); newTask.NextAddress = next; - ConsoleHelper.WriteWarningLine($"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣姹傚叆搴撲笅涓�鍦板潃,涓嬩竴鐩爣鍦板潃銆恵taskCommand.TargetAddress}銆�"); + var logs = $"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣姹傚叆搴撲笅涓�鍦板潃,涓嬩竴鐩爣鍦板潃銆恵taskCommand.TargetAddress}銆�"; + ConsoleHelper.WriteWarningLine(logs); + + _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = logs, time = DateTime.Now.ToString("G"), color = "red" }); + WriteInfo(conveyorLine.DeviceName, logs); conveyorLine.SendCommand(taskCommand, childDeviceCode); + _taskService.UpdateData(newTask); } } } @@ -365,8 +422,12 @@ { try { + var log = $"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣緭閫佺嚎鍏ュ簱瀹屾垚"; + ConsoleHelper.WriteWarningLine(log); - ConsoleHelper.WriteWarningLine($"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣緭閫佺嚎鍏ュ簱瀹屾垚"); + _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = log, time = DateTime.Now.ToString("G"), color = "red" }); + WriteInfo(conveyorLine.DeviceName, log); + var task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, childDeviceCode); if (task != null && task.TaskState != (int)TaskInStatusEnum.Line_InFinish) { @@ -374,7 +435,11 @@ { conveyorLine.SetValue(ConveyorLineDBName.WriteConveyorLineTargetAddress, "1000", childDeviceCode); - ConsoleHelper.WriteWarningLine($"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣緭閫佺嚎鍏ュ簱瀹屾垚,涓嬩竴鐩爣鍦板潃銆愮瓑寰呭垎閰嶈揣浣�,骞跺啓鍏�1000銆�"); + var logs = $"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣緭閫佺嚎鍏ュ簱瀹屾垚,涓嬩竴鐩爣鍦板潃銆愮瓑寰呭垎閰嶈揣浣�,骞跺啓鍏�1000銆�"; + ConsoleHelper.WriteWarningLine(logs); + + _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = logs, time = DateTime.Now.ToString("G"), color = "red" }); + WriteInfo(conveyorLine.DeviceName, logs); ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); @@ -401,7 +466,6 @@ } catch (Exception ex) { - } } @@ -420,12 +484,15 @@ { try { - // 鏌ヨ杈撻�佺嚎浠诲姟锛屾牴鎹緭閫佺嚎璁惧鍜屽瓙璁惧浠g爜鑾峰彇浠诲姟淇℃伅 var task = _taskService.QueryConveyorLineTask(conveyorLine.DeviceCode, childDeviceCode); // 杈撳嚭鎴愬姛淇℃伅锛屽寘鎷緭閫佺嚎鍚嶇О銆佷换鍔″彿銆佹墭鐩樻潯鐮佸拰瀛愯澶囦唬鐮侊紝浠ュ強浠诲姟淇℃伅 - ConsoleHelper.WriteSuccessLine($"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣緭閫佺嚎璇锋眰鍑哄簱,task{task.ToJsonString()}"); + var logs = $"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣緭閫佺嚎璇锋眰鍑哄簱,task{task.ToJsonString()}"; + ConsoleHelper.WriteSuccessLine(logs); + + _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = logs, time = DateTime.Now.ToString("G"), color = "red" }); + WriteInfo(conveyorLine.DeviceName, logs); // 濡傛灉浠诲姟涓嶄负绌猴紝鍒欐墽琛屼互涓嬫搷浣� if (task != null) @@ -440,7 +507,11 @@ task.NextAddress = next; // 杈撳嚭鎴愬姛淇℃伅锛屽寘鎷緭閫佺嚎鍚嶇О銆佷换鍔″彿銆佹墭鐩樻潯鐮併�佸瓙璁惧浠g爜鍜屼笅涓�鐩爣鍦板潃 - ConsoleHelper.WriteSuccessLine($"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣緭閫佺嚎璇锋眰鍑哄簱,涓嬩竴鐩爣鍦板潃銆恵taskCommand.TargetAddress}銆�"); + var log = $"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣緭閫佺嚎璇锋眰鍑哄簱,涓嬩竴鐩爣鍦板潃銆恵taskCommand.TargetAddress}銆�"; + ConsoleHelper.WriteSuccessLine(log); + + _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = log, time = DateTime.Now.ToString("G"), color = "red" }); + WriteInfo(conveyorLine.DeviceName, log); // 鍚戣緭閫佺嚎鍙戦�佸懡浠� conveyorLine.SendCommand(taskCommand, childDeviceCode); @@ -460,7 +531,6 @@ } catch (Exception ex) { - } } @@ -473,7 +543,11 @@ public void RequestOutNextAddress(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int ProtocalDetailValue) { // 鎵撳嵃鎴愬姛鏃ュ織锛屾樉绀哄綋鍓嶈澶囧悕绉般�佷换鍔″彿銆佹墭鐩樻潯鐮佷互鍙婅姹傚嚭搴撲笅涓�鍦板潃鐨勫瓙璁惧浠g爜 - ConsoleHelper.WriteSuccessLine($"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣緭閫佺嚎璇锋眰鍑哄簱涓嬩竴鍦板潃"); + var log = $"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣緭閫佺嚎璇锋眰鍑哄簱涓嬩竴鍦板潃"; + ConsoleHelper.WriteSuccessLine(log); + + _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = log, time = DateTime.Now.ToString("G"), color = "red" }); + WriteInfo(conveyorLine.DeviceName, log); // 鏌ヨ姝e湪鎵ц鐨勮緭閫佺嚎浠诲姟锛屾牴鎹换鍔″彿鍜屽瓙璁惧浠g爜鑾峰彇浠诲姟淇℃伅 Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, childDeviceCode); @@ -500,13 +574,19 @@ newTask.NextAddress = next; // 鎵撳嵃鎴愬姛鏃ュ織锛屾樉绀哄綋鍓嶈澶囧悕绉般�佷换鍔″彿銆佹墭鐩樻潯鐮併�佸瓙璁惧浠g爜浠ュ強涓嬩竴鐩爣鍦板潃 - ConsoleHelper.WriteSuccessLine($"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣緭閫佺嚎璇锋眰鍑哄簱涓嬩竴鍦板潃,涓嬩竴鐩爣鍦板潃銆恵taskCommand.TargetAddress}銆�"); + var logs = $"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣緭閫佺嚎璇锋眰鍑哄簱涓嬩竴鍦板潃,涓嬩竴鐩爣鍦板潃銆恵taskCommand.TargetAddress}銆�"; + ConsoleHelper.WriteSuccessLine(logs); + + _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = logs, time = DateTime.Now.ToString("G"), color = "red" }); + WriteInfo(conveyorLine.DeviceName, logs); // 鍙戦�佷换鍔″懡浠ゅ埌瀛愯澶� conveyorLine.SendCommand(taskCommand, childDeviceCode); // 鏍囪杈撻�佺嚎鍙戦�佷换鍔″畬鎴� ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true); + + _taskService.UpdateData(newTask); } } } @@ -522,9 +602,12 @@ { try { - // 鎵撳嵃鎴愬姛淇℃伅锛岃〃绀烘墭鐩樺凡鍒拌揪鎸囧畾杈撻�佺嚎骞跺畬鎴愬嚭搴� - ConsoleHelper.WriteSuccessLine($"銆恵conveyorLine.DeviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣緭閫佺嚎鍑哄簱瀹屾垚"); + var logs = $"銆恵conveyorLine.DeviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣緭閫佺嚎鍑哄簱瀹屾垚"; + ConsoleHelper.WriteSuccessLine(logs); + + _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = logs, time = DateTime.Now.ToString("G"), color = "red" }); + WriteInfo(conveyorLine.DeviceName, logs); // 鏌ヨ姝e湪鎵ц鐨勮緭閫佺嚎浠诲姟 var task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, childDeviceCode); @@ -560,7 +643,12 @@ } // 鎵撳嵃鎴愬姛淇℃伅锛岃〃绀烘墭鐩樺凡鍒拌揪鎸囧畾杈撻�佺嚎骞跺畬鎴愬嚭搴擄紝涓嬩竴鐩爣鍦板潃宸茬‘瀹� - ConsoleHelper.WriteSuccessLine($"銆恵conveyorLine.DeviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣緭閫佺嚎鍑哄簱瀹屾垚,涓嬩竴鐩爣鍦板潃銆恵taskCommand.TargetAddress}銆�"); + var log = $"銆恵conveyorLine.DeviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣緭閫佺嚎鍑哄簱瀹屾垚,涓嬩竴鐩爣鍦板潃銆恵taskCommand.TargetAddress}銆�"; + ConsoleHelper.WriteSuccessLine(log); + + _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = log, time = DateTime.Now.ToString("G"), color = "red" }); + WriteInfo(conveyorLine.DeviceName, log); + // 鍙戦�佸懡浠ゅ埌杈撻�佺嚎 conveyorLine.SendCommand(taskCommand, childDeviceCode); // 瀹屾垚杈撻�佺嚎鍙戦�� @@ -573,7 +661,12 @@ // 鏌ヨ鐩爣鍦板潃鐨勫閲� var NGAddress = _platFormRepository.QueryFirst(x => x.PlatCode == task.TargetAddress).Capacity; // 鎵撳嵃鎴愬姛淇℃伅锛岃〃绀烘墭鐩樺凡鍒拌揪鎸囧畾杈撻�佺嚎骞跺畬鎴愬嚭搴擄紝涓嬩竴鐩爣鍦板潃宸茬‘瀹� - ConsoleHelper.WriteSuccessLine($"銆恵conveyorLine.DeviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣緭閫佺嚎鍑哄簱瀹屾垚,涓嬩竴鐩爣鍦板潃銆恵NGAddress}銆�"); + var log = $"銆恵conveyorLine.DeviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣緭閫佺嚎鍑哄簱瀹屾垚,涓嬩竴鐩爣鍦板潃銆恵NGAddress}銆�"; + ConsoleHelper.WriteSuccessLine(log); + + _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = log, time = DateTime.Now.ToString("G"), color = "red" }); + WriteInfo(conveyorLine.DeviceName, log); + // 璁剧疆杈撻�佺嚎鐨勭洰鏍囧湴鍧�涓篘G鍦板潃 conveyorLine.SetValue(ConveyorLineDBName.WriteConveyorLineTargetAddress, NGAddress, childDeviceCode); // 瀹屾垚杈撻�佺嚎鍙戦�� @@ -585,7 +678,6 @@ } catch (Exception ex) { - } } @@ -614,8 +706,12 @@ // 灏嗕慨鏀瑰悗鐨勬暟缁剎閲嶆柊鎷兼帴鎴愬瓧绗︿覆锛屼綔涓烘柊鐨凞eviceProAddress string DeviceProAddress = string.Join(".", x); - // 浣跨敤conveyorLine鐨凜ommunicator瀵硅薄鐨刉rite鏂规硶锛屽皢value鍐欏叆鏂扮殑DeviceProAddress鍦板潃 - conveyorLine.Communicator.Write(DeviceProAddress, value); + var writeBool = conveyorLine.Communicator.Read<bool>(DeviceProAddress); + if (writeBool != value) + { + // 浣跨敤conveyorLine鐨凜ommunicator瀵硅薄鐨刉rite鏂规硶锛屽皢value鍐欏叆鏂扮殑DeviceProAddress鍦板潃 + conveyorLine.Communicator.Write(DeviceProAddress, value); + } } #region 妫�娴嬬┖鐩樺疄鐩樹换鍔� @@ -676,7 +772,17 @@ } var wmsIpAddress = wmsBase + requestTrayOutTask; - var device = _deviceInfoRepository.QueryData(x => x.DeviceStatus == "1" && x.DeviceRemark == platform.Id.ToString()); + + List<Dt_DeviceInfo> device; + if (platform.Roadway != null) + { + List<string> strings = platform.Roadway.Split(',').ToList(); + device = _deviceInfoRepository.QueryData(x => x.DeviceStatus == "1" && strings.Contains(x.DeviceCode)); + } + else + { + device = _deviceInfoRepository.QueryData(x => x.DeviceStatus == "1"); + } var deviceCode = device.Select(x => x.DeviceCode).ToList(); // 鍙戦�丠TTP POST璇锋眰鑾峰彇浠诲姟鏁版嵁 @@ -706,7 +812,7 @@ var content = _taskService.ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO }); if (content.Status) { - Console.WriteLine($"{taskDTO.TaskType}鍛煎彨鎴愬姛"); + Console.WriteLine($"{taskDTO.TargetAddress}鍛煎彨鎴愬姛"); } return content; } @@ -731,7 +837,7 @@ EquipmentCode = stationManager.stationEquipMOM, SessionId = Guid.NewGuid().ToString(), EmployeeNo = "MITest", - SceneType = "2", + SceneType = "4", RequestTime = TimeZoneInfo.ConvertTimeToUtc(DateTime.Now).ToString("yyyy-MM-ddTHH:mm:ss.fffZ") }; @@ -754,20 +860,39 @@ return; } - if (result1.SerialNos.Count <= 0) + if (stationManager.remark == "ZYNG") { - - ConsoleHelper.WriteWarningLine("2"); - ConsoleHelper.WriteWarningLine(stationManager.stationLocation); - conveyorLine.SetValue(ConveyorLineDBName.WriteConveyorLineTargetAddress, stationManager.stationLocation, stationManager.stationChildCode); - + ConsoleHelper.WriteWarningLine($"銆愭敞娑睳G鍏ュ簱銆�"); + if (result1.SerialNos.Count <= 0) + { + ConsoleHelper.WriteWarningLine("1000"); + conveyorLine.SetValue(ConveyorLineDBName.WriteConveyorLineTaskNum, 5, stationManager.stationChildCode); + conveyorLine.SetValue(ConveyorLineDBName.WriteConveyorLineTargetAddress, 1000, stationManager.stationChildCode); + } + else + { + ConsoleHelper.WriteWarningLine("2"); + ConsoleHelper.WriteWarningLine(stationManager.stationLocation); + conveyorLine.SetValue(ConveyorLineDBName.WriteConveyorLineTaskNum, 5, stationManager.stationChildCode); + conveyorLine.SetValue(ConveyorLineDBName.WriteConveyorLineTargetAddress, stationManager.stationLocation, stationManager.stationChildCode); + } + ConveyorLineSendFinish(conveyorLine, stationManager.stationChildCode, ProtocalDetailValue, true); } else { - ConsoleHelper.WriteWarningLine("1000"); - conveyorLine.SetValue(ConveyorLineDBName.WriteConveyorLineTaskNum, 5, stationManager.stationChildCode); - conveyorLine.SetValue(ConveyorLineDBName.WriteConveyorLineTargetAddress, 1000, stationManager.stationChildCode); - + if (result1.SerialNos.Count <= 0) + { + ConsoleHelper.WriteWarningLine("2"); + ConsoleHelper.WriteWarningLine(stationManager.stationLocation); + conveyorLine.SetValue(ConveyorLineDBName.WriteConveyorLineTaskNum, 5, stationManager.stationChildCode); + conveyorLine.SetValue(ConveyorLineDBName.WriteConveyorLineTargetAddress, stationManager.stationLocation, stationManager.stationChildCode); + } + else + { + ConsoleHelper.WriteWarningLine("1000"); + conveyorLine.SetValue(ConveyorLineDBName.WriteConveyorLineTaskNum, 5, stationManager.stationChildCode); + conveyorLine.SetValue(ConveyorLineDBName.WriteConveyorLineTargetAddress, 1000, stationManager.stationChildCode); + } ConveyorLineSendFinish(conveyorLine, stationManager.stationChildCode, ProtocalDetailValue, true); } } @@ -777,6 +902,21 @@ } } - #endregion 鍖栨垚NG鍙e叆搴� + #endregion 璁惧NG鍙e叆搴� + + public async Task LogAndWarn(string deviceName, string log, string color = "red") + { + ConsoleHelper.WriteWarningLine(log); + await _noticeService.Logs(userTokenIds, new { deviceName, log = log, time = DateTime.Now.ToString("G"), color = color }); + WriteInfo(deviceName, log); + } + + private (ConveyorLineTaskCommand, ConveyorLineTaskCommandWrite) ReadCommands(Dt_StationManager station, CommonConveyorLine conveyorLine) + { + ConveyorLineTaskCommand command = conveyorLine.ReadCustomer<ConveyorLineTaskCommand>(station.stationChildCode); + ConveyorLineTaskCommandWrite commandWrite = conveyorLine.ReadCustomer<ConveyorLineTaskCommandWrite>(station.stationChildCode, "DeviceCommand"); + return (command, commandWrite); + } + } } \ No newline at end of file -- Gitblit v1.9.3