From a982b8c9f5922684216cbc307a8507a627dde8d0 Mon Sep 17 00:00:00 2001
From: huangxiaoqiang <1247017146@qq.com>
Date: 星期六, 10 五月 2025 20:48:58 +0800
Subject: [PATCH] 优化
---
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs | 289 ++++++++++++++++++++++++++++++++++++++++++---------------
1 files changed, 212 insertions(+), 77 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 5470af5..9b1752f 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;
@@ -77,69 +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)
@@ -211,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();
@@ -287,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);
@@ -325,8 +376,14 @@
/// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
public void RequestInNextAddress(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode)
{
- ConsoleHelper.WriteWarningLine($"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣姹傚叆搴撲笅涓�鍦板潃");
- Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, 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);
+ Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, childDeviceCode, command.Barcode);
if (task != null)
{
if (command.Barcode == task.PalletCode)
@@ -340,9 +397,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);
}
}
}
@@ -361,15 +423,25 @@
{
try
{
- ConsoleHelper.WriteWarningLine($"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣緭閫佺嚎鍏ュ簱瀹屾垚");
- var task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, 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);
+
+ //var task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, childDeviceCode);
+ var task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, childDeviceCode, command.Barcode);
if (task != null && task.TaskState != (int)TaskInStatusEnum.Line_InFinish)
{
if (command.Barcode == task.PalletCode && childDeviceCode == task.NextAddress)
{
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);
@@ -418,7 +490,11 @@
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)
@@ -433,7 +509,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);
@@ -465,10 +545,15 @@
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);
+ //Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, childDeviceCode);
+ Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, childDeviceCode, command.Barcode);
// 濡傛灉浠诲姟瀛樺湪
if (task != null)
@@ -492,13 +577,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);
}
}
}
@@ -515,10 +606,15 @@
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);
+ //var task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, childDeviceCode);
+ var task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, childDeviceCode, command.Barcode);
// 濡傛灉浠诲姟瀛樺湪
if (task != null)
@@ -551,7 +647,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);
// 瀹屾垚杈撻�佺嚎鍙戦��
@@ -564,7 +665,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);
// 瀹屾垚杈撻�佺嚎鍙戦��
@@ -604,8 +710,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 妫�娴嬬┖鐩樺疄鐩樹换鍔�
@@ -666,7 +776,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璇锋眰鑾峰彇浠诲姟鏁版嵁
@@ -696,7 +816,7 @@
var content = _taskService.ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
if (content.Status)
{
- Console.WriteLine($"{taskDTO.TaskType}鍛煎彨鎴愬姛");
+ Console.WriteLine($"{taskDTO.TargetAddress}鍛煎彨鎴愬姛");
}
return content;
}
@@ -787,5 +907,20 @@
}
#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