251030
This commit is contained in:
@@ -117,7 +117,7 @@ namespace MoviconHub.App.Services
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.Error(ex, "轮询RTVar数据时发生错误");
|
||||
Logger.Error($"实时数据轮询时发生错误: {ex.Message}");
|
||||
// 发生错误时,等待一段时间后重试
|
||||
await Task.Delay(5000, cancellationToken);
|
||||
}
|
||||
@@ -142,7 +142,7 @@ namespace MoviconHub.App.Services
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.Error(ex, "读取RTVar数据时发生错误");
|
||||
Logger.Error($"读取RTVar数据时发生错误: {ex.StackTrace}");
|
||||
throw;
|
||||
}
|
||||
}
|
||||
@@ -153,51 +153,61 @@ namespace MoviconHub.App.Services
|
||||
/// <param name="rtVars">RTVar数据列表</param>
|
||||
private void UpdateWebSocketData(List<RTVar> rtVars)
|
||||
{
|
||||
if (rtVars == null || rtVars.Count == 0)
|
||||
return;
|
||||
|
||||
lock (_lockObject)
|
||||
try
|
||||
{
|
||||
|
||||
// 更新设备状态信息
|
||||
var deviceCodeVar = rtVars.FirstOrDefault(v => v.Name == "Device_Code");
|
||||
if (deviceCodeVar != null)
|
||||
_realtimeData.Device_Code = deviceCodeVar.Val;
|
||||
if (rtVars == null || rtVars.Count == 0)
|
||||
return;
|
||||
|
||||
var deviceNameVar = rtVars.FirstOrDefault(v => v.Name == "Device_Name");
|
||||
if (deviceNameVar != null)
|
||||
_realtimeData.Device_Name = deviceNameVar.Val;
|
||||
lock (_lockObject)
|
||||
{
|
||||
|
||||
var deviceManufacturerVar = rtVars.FirstOrDefault(v => v.Name == "Device_Manufacturer");
|
||||
if (deviceManufacturerVar != null)
|
||||
_realtimeData.Device_Manufacturer = deviceManufacturerVar.Val;
|
||||
// 更新设备状态信息
|
||||
var deviceCodeVar = rtVars.FirstOrDefault(v => v.Name == "Device_Code");
|
||||
if (deviceCodeVar != null)
|
||||
_realtimeData.Device_Code = deviceCodeVar.Val;
|
||||
|
||||
var statusVar = rtVars.FirstOrDefault(v => v.Name == "Device_Status");
|
||||
if (statusVar != null)
|
||||
_realtimeData.Device_Status = statusVar.Val;
|
||||
var deviceNameVar = rtVars.FirstOrDefault(v => v.Name == "Device_Name");
|
||||
if (deviceNameVar != null)
|
||||
_realtimeData.Device_Name = deviceNameVar.Val;
|
||||
|
||||
// 解析故障信息
|
||||
UpdateFaultDetails(rtVars);
|
||||
var deviceManufacturerVar = rtVars.FirstOrDefault(v => v.Name == "Device_Manufacturer");
|
||||
if (deviceManufacturerVar != null)
|
||||
_realtimeData.Device_Manufacturer = deviceManufacturerVar.Val;
|
||||
|
||||
// 解析组件信息
|
||||
UpdateComponentsInfo(rtVars);
|
||||
var statusVar = rtVars.FirstOrDefault(v => v.Name == "Device_Status");
|
||||
if (statusVar != null)
|
||||
_realtimeData.Device_Status = statusVar.Val;
|
||||
|
||||
// 解析测试数据
|
||||
UpdateTestData(rtVars);
|
||||
// 解析故障信息
|
||||
UpdateFaultDetails(rtVars);
|
||||
|
||||
//获取条码信息,确定是否需要搜索数据
|
||||
SglModel.CodeReady = rtVars.FirstOrDefault(v => v.Name == "part_qrid").Val;
|
||||
// 解析组件信息
|
||||
UpdateComponentsInfo(rtVars);
|
||||
|
||||
UpdateRemoteDb(RealtimeData);
|
||||
// 解析测试数据
|
||||
UpdateTestData(rtVars);
|
||||
|
||||
//把最新的数据赋值给WebSocketClient中
|
||||
WebSocketClientHelper.CurWebSocketData = RealtimeData;
|
||||
//获取条码信息,确定是否需要搜索数据
|
||||
SglModel.CodeReady = rtVars.FirstOrDefault(v => v.Name == "part_qrid").Val;
|
||||
|
||||
//更新数据到远程数据库
|
||||
UpdateRemoteDb(RealtimeData);
|
||||
|
||||
//把最新的数据赋值给WebSocketClient中
|
||||
WebSocketClientHelper.CurWebSocketData = RealtimeData;
|
||||
|
||||
//更新数据到远程数据库
|
||||
|
||||
// 记录日志
|
||||
//Logger.Debug("实时数据已更新");
|
||||
}
|
||||
|
||||
// 记录日志
|
||||
Logger.Debug("实时数据已更新");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.Error($"UpdateWebSocketData: {ex.StackTrace}");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -206,72 +216,80 @@ namespace MoviconHub.App.Services
|
||||
/// <param name="webSocketData"></param>
|
||||
private void UpdateRemoteDb(WebSocketData webSocketData)
|
||||
{
|
||||
// 获取组件信息
|
||||
var component = webSocketData.ListComponentsInfo?.FirstOrDefault();
|
||||
|
||||
// 创建CurRunClearState对象并映射数据
|
||||
var curRunClearState = new CurRunClearState()
|
||||
try
|
||||
{
|
||||
//只有一个,更新数据
|
||||
Id = 1,
|
||||
// 获取组件信息
|
||||
var component = webSocketData.ListComponentsInfo?.FirstOrDefault();
|
||||
|
||||
// 基本信息
|
||||
DeviceCode = webSocketData.Device_Code,
|
||||
DeviceName = webSocketData.Device_Name,
|
||||
// 创建CurRunClearState对象并映射数据
|
||||
var curRunClearState = new CurRunClearState()
|
||||
{
|
||||
//只有一个,更新数据
|
||||
Id = 1,
|
||||
|
||||
// 组件信息
|
||||
part_qrid = component?.part_qrid,
|
||||
part_num = component?.part_num,
|
||||
part_position = component?.part_position,
|
||||
component_name = component?.part_name,
|
||||
vehicle_model = component?.part_Vehicle_model,
|
||||
locomotive_number = component?.part_locomotive_number,
|
||||
repair_process = component?.part_repair_process,
|
||||
// 基本信息
|
||||
DeviceCode = webSocketData.Device_Code,
|
||||
DeviceName = webSocketData.Device_Name,
|
||||
|
||||
program_process = webSocketData.TestData.Test_FrameworkProgramProcess,
|
||||
// 组件信息
|
||||
part_qrid = component?.part_qrid,
|
||||
part_num = component?.part_num,
|
||||
part_position = component?.part_position,
|
||||
component_name = component?.part_name,
|
||||
vehicle_model = component?.part_Vehicle_model,
|
||||
locomotive_number = component?.part_locomotive_number,
|
||||
repair_process = component?.part_repair_process,
|
||||
|
||||
// 程序进程
|
||||
Test_FrameworkProgramProcess = webSocketData.TestData.Test_FrameworkProgramProcess,
|
||||
Test_FrameworkProgramProcessPercentage = webSocketData.TestData.Test_FrameworkProgramProcessPercentage,
|
||||
program_process = webSocketData.TestData.Test_FrameworkProgramProcess,
|
||||
|
||||
// 设备状态
|
||||
Test_PartsEquipmentStatus = webSocketData.TestData.Test_PartsEquipmentStatus,
|
||||
// 程序进程
|
||||
Test_FrameworkProgramProcess = webSocketData.TestData.Test_FrameworkProgramProcess,
|
||||
Test_FrameworkProgramProcessPercentage = webSocketData.TestData.Test_FrameworkProgramProcessPercentage,
|
||||
|
||||
// 清洗时长和用量
|
||||
Test_FrameworkPerModelCleaningDuration = webSocketData.TestData.Test_FrameworkPerModelCleaningDuration,
|
||||
Test_FrameworkPerModelCleaningAgentUsage = webSocketData.TestData.Test_FrameworkPerModelCleaningAgentUsage,
|
||||
Test_FrameworkPerModelWaterUsage = webSocketData.TestData.Test_FrameworkPerModelWaterUsage,
|
||||
// 设备状态
|
||||
Test_PartsEquipmentStatus = webSocketData.TestData.Test_PartsEquipmentStatus,
|
||||
|
||||
// 水箱和清洗剂罐信息
|
||||
WaterTank_Temp = webSocketData.TestData.Test_WaterTankTemperature,
|
||||
AgentTank_Temp = webSocketData.TestData.Test_CleaningAgentTankTemperature,
|
||||
WaterTank_Level = webSocketData.TestData.Test_WaterTankLevel,
|
||||
AgentTank_Level = webSocketData.TestData.Test_CleaningAgentTankLevel,
|
||||
// 清洗时长和用量
|
||||
Test_FrameworkPerModelCleaningDuration = webSocketData.TestData.Test_FrameworkPerModelCleaningDuration,
|
||||
Test_FrameworkPerModelCleaningAgentUsage = webSocketData.TestData.Test_FrameworkPerModelCleaningAgentUsage,
|
||||
Test_FrameworkPerModelWaterUsage = webSocketData.TestData.Test_FrameworkPerModelWaterUsage,
|
||||
|
||||
// 浸泡池温度
|
||||
SoakingTank1_Temp = webSocketData.TestData.Test_SoakingTank1Temperature,
|
||||
SoakingTank2_Temp = webSocketData.TestData.Test_SoakingTank2Temperature,
|
||||
// 水箱和清洗剂罐信息
|
||||
WaterTank_Temp = webSocketData.TestData.Test_WaterTankTemperature,
|
||||
AgentTank_Temp = webSocketData.TestData.Test_CleaningAgentTankTemperature,
|
||||
WaterTank_Level = webSocketData.TestData.Test_WaterTankLevel,
|
||||
AgentTank_Level = webSocketData.TestData.Test_CleaningAgentTankLevel,
|
||||
|
||||
// 运行模式
|
||||
Test_WaterTankHeat = webSocketData.TestData.Test_WaterTankHeat,
|
||||
Test_WaterTankAdd = webSocketData.TestData.Test_WaterTankAdd,
|
||||
Test_CleaningAgentTankHeat = webSocketData.TestData.Test_CleaningAgentTankHeat,
|
||||
Test_CleaningAgentTankAdd = webSocketData.TestData.Test_CleaningAgentTankAdd,
|
||||
|
||||
// 监控信息
|
||||
Test_ElectricSurveillance = webSocketData.TestData.Test_ElectricSurveillance,
|
||||
Test_SteamSurveillance = webSocketData.TestData.Test_SteamSurveillance
|
||||
};
|
||||
// 浸泡池温度
|
||||
SoakingTank1_Temp = webSocketData.TestData.Test_SoakingTank1Temperature,
|
||||
SoakingTank2_Temp = webSocketData.TestData.Test_SoakingTank2Temperature,
|
||||
|
||||
var Data = FRemoteSqlContext.FDb
|
||||
.InsertOrUpdate<CurRunClearState>()
|
||||
.SetSource(curRunClearState)
|
||||
.ExecuteAffrows();
|
||||
// 运行模式
|
||||
Test_WaterTankHeat = webSocketData.TestData.Test_WaterTankHeat,
|
||||
Test_WaterTankAdd = webSocketData.TestData.Test_WaterTankAdd,
|
||||
Test_CleaningAgentTankHeat = webSocketData.TestData.Test_CleaningAgentTankHeat,
|
||||
Test_CleaningAgentTankAdd = webSocketData.TestData.Test_CleaningAgentTankAdd,
|
||||
|
||||
if (Data > 0)
|
||||
{
|
||||
Logger.Debug("实时数据已更新到远程数据库");
|
||||
// 监控信息
|
||||
Test_ElectricSurveillance = webSocketData.TestData.Test_ElectricSurveillance,
|
||||
Test_SteamSurveillance = webSocketData.TestData.Test_SteamSurveillance
|
||||
};
|
||||
|
||||
var Data = FRemoteSqlContext.FDb
|
||||
.InsertOrUpdate<CurRunClearState>()
|
||||
.SetSource(curRunClearState)
|
||||
.ExecuteAffrows();
|
||||
|
||||
if (Data > 0)
|
||||
{
|
||||
Logger.Debug("实时数据已更新到远程数据库");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.Error($"UpdateRemoteDb: {ex.StackTrace}");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user