From 48fce55ab5d11a1821ab640742153425d594709c Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期四, 27 三月 2025 09:30:05 +0800
Subject: [PATCH] 更新配置和代码逻辑,优化异常处理
---
CodeManagement/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs | 324 +++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 236 insertions(+), 88 deletions(-)
diff --git a/CodeManagement/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs b/CodeManagement/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs
index 4b2fcb7..0e4e237 100644
--- a/CodeManagement/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs
+++ b/CodeManagement/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs
@@ -1,6 +1,8 @@
锘縰sing HslCommunication;
using Mapster;
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
+using Microsoft.CodeAnalysis;
+using Microsoft.VisualBasic;
using Newtonsoft.Json;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
@@ -148,12 +150,12 @@
{
string isTrue = string.Empty;
- //ResultTrayCellsStatus result = GetResultTrayCellsStatus(command, stationManager);
+ ResultTrayCellsStatus result = GetResultTrayCellsStatus(command, stationManager);
List<string> strings = stationManager.Roadway.Split(",").ToList();
foreach (string item in strings)
{
- isTrue = RequestInboundPlatform(item, "ZJ-11", true);
+ isTrue = RequestInboundPlatform(item, result.ProductionLine, true);
if (isTrue != null)
{
break;
@@ -171,10 +173,10 @@
RoadWay = childDeviceCode,
SourceAddress = childDeviceCode,
TargetAddress = isTrue,
- TaskState = (int)TaskOutStatusEnum.OutNew,
+ TaskState = (int)TaskOutStatusEnum.SC_OutFinish,
Id = 0,
TaskType = (int)TaskOutboundTypeEnum.TrayInToOut,
- ProductionLine = "ZJ-11",
+ ProductionLine = result.ProductionLine,
};
}
else
@@ -283,47 +285,59 @@
{
string isTrue = string.Empty;
- //ResultTrayCellsStatus result = GetResultTrayCellsStatus(command, stationManager);
+ ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
- //List<string> strings = stationManager.Roadway.Split(",").ToList();
- //foreach (string item in strings)
- //{
- // isTrue = RequestInboundPlatform(conveyorLine, item, result.ProductionLine, false);
- // if (isTrue != null)
- // {
- // break;
- // }
- //}
- //if (isTrue != null && isTrue != string.Empty)
- //{
- // WMSTaskDTO taskDTO = new WMSTaskDTO
- // {
- // TaskNum = _taskRepository.GetTaskNo().Result,
- // Grade = 1,
- // PalletCode = command.Barcode,
- // RoadWay = childDeviceCode,
- // SourceAddress = childDeviceCode,
- // TargetAddress = isTrue,
- // TaskState = (int)TaskOutStatusEnum.OutNew,
- // Id = 2,
- // TaskType = (int)TaskOutboundTypeEnum.InToOut,
- // ProductionLine = result.ProductionLine,
- // };
- // var Taskcontent = _taskService.ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
- // if (Taskcontent.Status)
- // {
- // ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
- // }
+ ResultTrayCellsStatus result = GetResultTrayCellsStatus(command, stationManager);
- //}
- //else
- //{
+ if (result.SerialNos.Count == 0)
+ {
+ var Traycontent = await _taskService.RequestWMSTask(command.Barcode, childDeviceCode);
+ if (Traycontent.Status)
+ {
+ ConsoleHelper.WriteSuccessLine("璇锋眰鍥炴祦闈欑疆");
+ ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
+ }
+ }
+
+ List<string> strings = stationManager.Roadway.Split(",").ToList();
+ foreach (string item in strings)
+ {
+ isTrue = RequestInboundPlatform(item, result.ProductionLine, false);
+ if (isTrue != null)
+ {
+ break;
+ }
+ }
+ if (isTrue != null && isTrue != string.Empty)
+ {
+ WMSTaskDTO taskDTO = new WMSTaskDTO
+ {
+ TaskNum = _taskRepository.GetTaskNo().Result,
+ Grade = 1,
+ PalletCode = command.Barcode,
+ RoadWay = childDeviceCode,
+ SourceAddress = childDeviceCode,
+ TargetAddress = isTrue,
+ TaskState = (int)TaskOutStatusEnum.OutNew,
+ Id = 2,
+ TaskType = (int)TaskOutboundTypeEnum.InToOut,
+ ProductionLine = result.ProductionLine,
+ };
+ var Taskcontent = _taskService.ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
+ if (Taskcontent.Status)
+ {
+ ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
+ }
+
+ }
+ else
+ {
var Taskcontent = await _taskService.RequestWMSTask(command.Barcode, childDeviceCode);
if (Taskcontent.Status)
{
ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
}
- //}
+ }
#region
//if (Taskcontent.Status)
@@ -388,7 +402,6 @@
#endregion
}
-
/// <summary>
/// 鎴愬寲鍏ラ潤缃�
/// </summary>
@@ -401,30 +414,50 @@
/// <exception cref="InvalidOperationException"></exception>
private async Task JZRequestInBound(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int ProtocalDetailValue, Dt_StationManager stationManager)
{
+
+ ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
+
ResultTrayCellsStatus resultTrayCellsStatus = GetResultTrayCellsStatus(command, stationManager);
+
+
//todo鍒ゆ柇鏄惁涓虹┖妗�
var serialNosError = resultTrayCellsStatus.SerialNos.Where(x => x.SerialNoStatus != 1 && x.SerialNoStatus != 4).ToList();
if (serialNosError.Count > 0)
{
- //绌烘閫昏緫
+ //NG娴佺▼
+ var platform = _platFormRepository.QueryFirst(x => x.ProductionLine == resultTrayCellsStatus.ProductionLine);
+ ConveyorLineTaskCommand conveyorLineTaskCommand = new ConveyorLineTaskCommand()
+ {
+ TaskNum = 1,
+ TargetAddress=Convert.ToInt32( platform.Capacity),
+ Barcode= resultTrayCellsStatus.TrayBarcode,
+ };
+ conveyorLine.SendCommand(conveyorLineTaskCommand, childDeviceCode);
+ ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
+ ConsoleHelper.WriteSuccessLine($"MOM鏁版嵁寮傚父,閫佽嚦浜屽皝銆恵resultTrayCellsStatus.ProductionLine}銆戝紓甯稿彛銆恵Convert.ToInt32(platform.Capacity)}銆�");
+ return;
+ }
+ if (resultTrayCellsStatus.SerialNos.Count == 0)
+ {
var Traycontent = await _taskService.RequestWMSTask(command.Barcode, childDeviceCode);
if (Traycontent.Status)
{
ConsoleHelper.WriteSuccessLine("鍖栨垚绌烘璇锋眰鍥炴祦闈欑疆");
ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
+ return;
}
}
else
{
var configz = _sys_ConfigService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
var wmsbase = configz.Where(x => x.ConfigKey == SysConfigKeyConst.WMSIP_BASE).FirstOrDefault()?.ConfigValue;
- var address = configz.Where(x => x.ConfigKey == SysConfigKeyConst.GetJZStockInfo).FirstOrDefault()?.ConfigValue;
+ var address = configz.Where(x => x.ConfigKey == SysConfigKeyConst.QueryStockInfoForRealTrayJZAsync).FirstOrDefault()?.ConfigValue;
if (wmsbase == null || address == null)
{
throw new InvalidOperationException("WMS IP 鏈厤缃�");
}
var wmsIpAddrss = wmsbase + address;
- var result = await HttpHelper.PostAsync(wmsIpAddrss);
+ var result = await HttpHelper.PostAsync(wmsIpAddrss, new { ProductLine = resultTrayCellsStatus.ProductionLine }.ToJsonString());
var StockInfocontent = JsonConvert.DeserializeObject<WebResponseContent>(result);
if (StockInfocontent.Status)
{
@@ -440,24 +473,34 @@
{
ConsoleHelper.WriteSuccessLine("鍖栨垚瀹炴墭璇锋眰鍏ラ潤缃�");
ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
+ return;
}
else
{
ConsoleHelper.WriteWarningLine("鍑哄簱浠诲姟鏈畬鎴�");
+ return;
}
}
else if (task != null && task.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting)
{
ConsoleHelper.WriteWarningLine("宸插瓨鍦ㄩ潤缃嚭搴撲换鍔�");
+ return;
}
else
{
-
- ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
+ var Task = await _taskService.RequestWMSTask(command.Barcode, childDeviceCode);
+ if (Task.Status)
+ {
+ ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
+ }
+ return;
}
}
else
+ {
WriteInfo(conveyorLine.DeviceName, Taskcontent.Message);
+ return;
+ }
}
else
{
@@ -482,7 +525,7 @@
RoadWay = isTrue,
SourceAddress = childDeviceCode,
TargetAddress = isTrue,
- TaskState = (int)TaskOutStatusEnum.OutNew,
+ TaskState = (int)TaskOutStatusEnum.SC_OutFinish,
Id = 2,
TaskType = (int)TaskOutboundTypeEnum.InToOut,
ProductionLine = resultTrayCellsStatus.ProductionLine,
@@ -491,74 +534,179 @@
if (Taskcontent.Status)
{
ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
+ return;
}
else
+ {
WriteInfo(conveyorLine.DeviceName, Taskcontent.Message);
-
+ return;
+ }
}
else
{
+ var Task = await _taskService.RequestWMSTask(command.Barcode, childDeviceCode);
+ if (Task.Status)
+ {
+ ExecuteConveyorLineTask(conveyorLine, command, ProtocalDetailValue, childDeviceCode);
+ }
ConsoleHelper.WriteWarningLine("浜屽皝缂撳瓨浣嶅凡婊�");
+ return;
}
}
}
}
- public void ExecuteConveyorLineTask(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, int ProtocalDetailValue ,string childDeviceCode)
+
+ //public void ExecuteConveyorLineTask(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, int ProtocalDetailValue ,string childDeviceCode)
+ //{
+ // var task = _taskService.QueryBarCodeConveyorLineTask(command.Barcode, childDeviceCode);
+ // if (task != null)
+ // {
+ // var value = _sys_ConfigService.GetByConfigKey(CateGoryConst.CONFIG_SYS_InStation, SysConfigKeyConst.JZNGInBoundStation).ConfigValue;
+ // var valueList = value.Split(',').ToList();
+ // if (valueList.Contains(task.SourceAddress))
+ // {
+ // conveyorLine.SetValue(ConveyorLineDBName.WriteConveyorLineTargetAddress, "1000", childDeviceCode);
+
+ // var log = $"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵task.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵task.PalletCode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣姹傛壂鐮佸叆搴�(瀹炵洏),涓嬩竴鐩爣鍦板潃銆恵1000}銆�";
+ // ConsoleHelper.WriteWarningLine(log);
+
+ // _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = log, time = DateTime.Now.ToString("G"), color = "red" });
+ // WriteInfo(conveyorLine.DeviceName, log);
+
+ // ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
+ // }
+ // else if (task.TargetAddress == "1020-1")
+ // {
+ // var next = task.NextAddress;
+ // var taskCommand = MapTaskCommand(task, command);
+ // task.NextAddress = next;
+
+ // var log = $"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣姹傛壂鐮佸叆搴�(瀹炵洏),涓嬩竴鐩爣鍦板潃銆恵taskCommand.TargetAddress}銆�";
+ // ConsoleHelper.WriteWarningLine(log);
+
+ // _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = log, time = DateTime.Now.ToString("G"), color = "red" });
+ // WriteInfo(conveyorLine.DeviceName, log);
+
+ // conveyorLine.SendCommand(taskCommand, childDeviceCode);
+ // ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
+
+ // var taskHty = task.Adapt<Dt_Task_Hty>();
+ // _task_HtyRepository.AddData(taskHty);
+ // _taskService.DeleteData(task);
+ // }
+ // else
+ // {
+ // var next = task.NextAddress;
+ // var taskCommand = MapTaskCommand(task, command);
+ // task.NextAddress = next;
+
+ // var log = $"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣姹傛壂鐮佸叆搴�(瀹炵洏),涓嬩竴鐩爣鍦板潃銆恵taskCommand.TargetAddress}銆�";
+ // ConsoleHelper.WriteWarningLine(log);
+
+ // _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = log, time = DateTime.Now.ToString("G"), color = "red" });
+ // WriteInfo(conveyorLine.DeviceName, log);
+
+ // conveyorLine.SendCommand(taskCommand, childDeviceCode);
+ // ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
+ // _taskService.UpdateTaskStatusToNext(task);
+ // }
+ // }
+ //}
+
+ /// <summary>
+ /// 鎵ц杈撻�佺嚎浠诲姟
+ /// </summary>
+ /// <param name="conveyorLine">杈撻�佺嚎瀵硅薄</param>
+ /// <param name="command">杈撻�佺嚎浠诲姟鍛戒护</param>
+ /// <param name="ProtocalDetailValue">鍗忚鏄庣粏鍊�</param>
+ /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
+ public void ExecuteConveyorLineTask(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, int ProtocalDetailValue, string childDeviceCode)
{
+ // 鏌ヨ浠诲姟淇℃伅
var task = _taskService.QueryBarCodeConveyorLineTask(command.Barcode, childDeviceCode);
- if (task != null)
+
+ if (task == null) return;
+
+ // 鑾峰彇閰嶇疆鍊煎苟杞崲涓哄垪琛�
+ var value = _sys_ConfigService.GetByConfigKey(CateGoryConst.CONFIG_SYS_InStation, SysConfigKeyConst.JZNGInBoundStation).ConfigValue;
+ var valueList = value.Split(',').ToList();
+
+ // 鏃ュ織妯℃澘
+ var logMessage = $"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵task.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵task.PalletCode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣姹傛壂鐮佸叆搴�(瀹炵洏),涓嬩竴鐩爣鍦板潃銆恵{0}}銆�";
+
+ // 鍒ゆ柇浠诲姟鐨勮捣濮嬪湴鍧�鏄惁鍦ㄩ厤缃垪琛ㄤ腑
+ if (valueList.Contains(task.SourceAddress))
{
- var value = _sys_ConfigService.GetByConfigKey(CateGoryConst.CONFIG_SYS_InStation, SysConfigKeyConst.JZNGInBoundStation).ConfigValue;
- var valueList = value.Split(',').ToList();
- if (valueList.Contains(task.SourceAddress))
+ // 璁剧疆鐩爣鍦板潃涓� "1000"
+ conveyorLine.SetValue(ConveyorLineDBName.WriteConveyorLineTargetAddress, "1000", childDeviceCode);
+
+ // 璁板綍鏃ュ織骞跺彂閫佸畬鎴愪俊鍙�
+ LogAndSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, logMessage, "1000");
+ }
+ else if (task.Roadway.Contains("JZ"))
+ {
+ // 鏌ヨ鏄惁瀛樺湪闈欑疆鍑哄簱浠诲姟
+ var outJZTask = _taskRepository.QueryData(x => x.Roadway == task.Roadway &&
+ (x.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting ||
+ x.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting ||
+ x.TaskState == (int)TaskOutStatusEnum.SC_OutFinish));
+
+ if (outJZTask.IsNullOrEmpty())
{
- conveyorLine.SetValue(ConveyorLineDBName.WriteConveyorLineTargetAddress, "1000", childDeviceCode);
-
- var log = $"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵task.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵task.PalletCode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣姹傛壂鐮佸叆搴�(瀹炵洏),涓嬩竴鐩爣鍦板潃銆恵1000}銆�";
- ConsoleHelper.WriteWarningLine(log);
-
- _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = log, time = DateTime.Now.ToString("G"), color = "red" });
- WriteInfo(conveyorLine.DeviceName, log);
-
- ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
- }
- else if (task.TargetAddress == "1020-1")
- {
- var next = task.NextAddress;
+ // 鏄犲皠浠诲姟鍛戒护
var taskCommand = MapTaskCommand(task, command);
- task.NextAddress = next;
- var log = $"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣姹傛壂鐮佸叆搴�(瀹炵洏),涓嬩竴鐩爣鍦板潃銆恵taskCommand.TargetAddress}銆�";
- ConsoleHelper.WriteWarningLine(log);
-
- _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = log, time = DateTime.Now.ToString("G"), color = "red" });
- WriteInfo(conveyorLine.DeviceName, log);
-
+ // 鍙戦�佷换鍔″懡浠�
conveyorLine.SendCommand(taskCommand, childDeviceCode);
- ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
- var taskHty = task.Adapt<Dt_Task_Hty>();
- _task_HtyRepository.AddData(taskHty);
- _taskService.DeleteData(task);
+ // 璁板綍鏃ュ織骞跺彂閫佸畬鎴愪俊鍙�
+ LogAndSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, logMessage, taskCommand.TargetAddress.ToString());
+
+ // 鏇存柊浠诲姟鐘舵��
+ _taskService.UpdateTaskStatusToNext(task);
}
else
{
- var next = task.NextAddress;
- var taskCommand = MapTaskCommand(task, command);
- task.NextAddress = next;
-
- var log = $"銆恵conveyorLine._deviceName}銆戜换鍔″彿锛氥�恵command.TaskNum}銆�,鎵樼洏鏉$爜锛氥�恵command.Barcode}銆戝凡鍒拌揪銆恵childDeviceCode}銆戣姹傛壂鐮佸叆搴�(瀹炵洏),涓嬩竴鐩爣鍦板潃銆恵taskCommand.TargetAddress}銆�";
- ConsoleHelper.WriteWarningLine(log);
-
- _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log = log, time = DateTime.Now.ToString("G"), color = "red" });
- WriteInfo(conveyorLine.DeviceName, log);
-
- conveyorLine.SendCommand(taskCommand, childDeviceCode);
- ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
- _taskService.UpdateTaskStatusToNext(task);
+ ConsoleHelper.WriteWarningLine("宸插瓨鍦ㄩ潤缃嚭搴撲换鍔�,闈欑疆鍏ュ簱浠诲姟鏃犳硶涓嬪彂鑷崇嚎浣�");
}
}
+ else
+ {
+ // 鏄犲皠浠诲姟鍛戒护
+ var taskCommand = MapTaskCommand(task, command);
+
+ // 鍙戦�佷换鍔″懡浠�
+ conveyorLine.SendCommand(taskCommand, childDeviceCode);
+
+ // 璁板綍鏃ュ織骞跺彂閫佸畬鎴愪俊鍙�
+ LogAndSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, logMessage, taskCommand.TargetAddress.ToString());
+
+ // 鏇存柊浠诲姟鐘舵��
+ _taskService.UpdateTaskStatusToNext(task);
+ }
}
+
+ /// <summary>
+ /// 璁板綍鏃ュ織骞跺彂閫佸畬鎴愪俊鍙�
+ /// </summary>
+ /// <param name="conveyorLine">杈撻�佺嚎瀵硅薄</param>
+ /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
+ /// <param name="ProtocalDetailValue">鍗忚鏄庣粏鍊�</param>
+ /// <param name="logMessage">鏃ュ織娑堟伅妯℃澘</param>
+ /// <param name="targetAddress">鐩爣鍦板潃</param>
+ private void LogAndSendFinish(CommonConveyorLine conveyorLine, string childDeviceCode, int ProtocalDetailValue, string logMessage, string targetAddress)
+ {
+ // 鏍煎紡鍖栨棩蹇楁秷鎭�
+ var log = string.Format(logMessage, targetAddress);
+ // 杈撳嚭璀﹀憡鏃ュ織
+ ConsoleHelper.WriteWarningLine(log);
+ // 璁板綍鏃ュ織
+ _noticeService.Logs(userTokenIds, new { conveyorLine.DeviceName, log, time = DateTime.Now.ToString("G"), color = "red" });
+ WriteInfo(conveyorLine.DeviceName, log);
+ // 鍙戦�佸畬鎴愪俊鍙�
+ ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
+ }
+
}
}
\ No newline at end of file
--
Gitblit v1.9.3