完善系统参数下发功能

This commit is contained in:
huangxianguo 2024-09-10 19:44:26 +08:00
parent 504216dfbd
commit e5c23c26ef
5 changed files with 114 additions and 162 deletions

View File

@ -35,12 +35,16 @@ public class ConfigService : Instant
switch (type) switch (type)
{ {
case "SYSTEM": case "SYSTEM":
SystemParamsService.HandleSystemParamsIssuedEvent(data); var systemParamsDto = JsonUtil.FromJson<SystemParamsDTO>(data.Param.ToString());
if (systemParamsDto != null)
{
SystemParamsService.HandleSystemParamsIssuedEvent(systemParamsDto);
}
break; break;
case "FORMULA": case "FORMULA":
{ {
var param = data.Param; var formulaDto = JsonUtil.FromJson<FormulaDTO>(data.Param.ToString());
var formulaDto = JsonUtil.FromJson<FormulaDTO>(param.ToString());
if (formulaDto != null) if (formulaDto != null)
{ {
formulaDto.Name = data.Name; formulaDto.Name = data.Name;

View File

@ -5,19 +5,19 @@
/// </summary> /// </summary>
public class SystemParamsDTO public class SystemParamsDTO
{ {
public CameraParams CameraParams { get; set; } public CameraParams? CameraParams { get; set; }
public SystemParams SystemParams { get; set; } public SystemParams? SystemParams { get; set; }
public LogParams LogParams { get; set; } public LogParams? LogParams { get; set; }
public ScannerParams ScannerParams { get; set; } public ScannerParams? ScannerParams { get; set; }
public CameraInternalParams WaferCameraInternalParams { get; set; } public CameraInternalParams? WaferCameraInternalParams { get; set; }
public CameraInternalParams SubstrateCameraInternalParams { get; set; } public CameraInternalParams? SubstrateCameraInternalParams { get; set; }
public MinioParams MinioParams { get; set; } public MinioParams? MinioParams { get; set; }
public MqttParams MqttParams { get; set; } public MqttParams? MqttParams { get; set; }
} }

View File

@ -1,5 +1,4 @@
using MasstransferCommon.Model.Constant; using MasstransferCommon.Model.Constant;
using MasstransferCommon.Utils;
using MasstransferCommunicate.Mqtt.Client; using MasstransferCommunicate.Mqtt.Client;
using MasstransferExporter.DataExporter.Model; using MasstransferExporter.DataExporter.Model;
using MasstransferInfrastructure.Database.Sqlite; using MasstransferInfrastructure.Database.Sqlite;
@ -19,17 +18,14 @@ public class SystemParamsService
/// 处理下发的系统配置参数 /// 处理下发的系统配置参数
/// </summary> /// </summary>
/// <param name="data"></param> /// <param name="data"></param>
public static void HandleSystemParamsIssuedEvent(ConfigData<object> data) public static void HandleSystemParamsIssuedEvent(SystemParamsDTO dto)
{ {
if (data.IsNullOrEmpty()) return; if (dto.IsNullOrEmpty()) return;
var name = data.Name;
var param = data?.Param?.ToString(); if (dto?.CameraParams != null)
switch (name)
{ {
case "相机配置": var cameraParams = dto.CameraParams;
var cameraParams = JsonUtil.FromJson<CameraParams>(param);
if (cameraParams == null) break;
var cameraParamsFromDb = GetCameraParams(); var cameraParamsFromDb = GetCameraParams();
if (cameraParamsFromDb != null) if (cameraParamsFromDb != null)
{ {
@ -37,10 +33,11 @@ public class SystemParamsService
} }
Db.SaveOrUpdate(cameraParams); Db.SaveOrUpdate(cameraParams);
break; }
case "日志配置":
var logParams = JsonUtil.FromJson<LogParams>(param); if (dto?.LogParams != null)
if (logParams == null) break; {
var logParams = dto.LogParams;
var logParamsFromDb = GetLogParams(); var logParamsFromDb = GetLogParams();
if (logParamsFromDb != null) if (logParamsFromDb != null)
{ {
@ -48,32 +45,11 @@ public class SystemParamsService
} }
Db.SaveOrUpdate(logParams); Db.SaveOrUpdate(logParams);
break;
case "系统配置":
var systemParams = JsonUtil.FromJson<SystemParams>(param);
if (systemParams == null) break;
var systemParamsFromDb = GetSystemParams();
if (systemParamsFromDb != null)
{
systemParams.Id = systemParamsFromDb.Id;
} }
Db.SaveOrUpdate(systemParams); if (dto?.MinioParams != null)
break;
case "扫描器配置":
var scannerParams = JsonUtil.FromJson<ScannerParams>(param);
if (scannerParams == null) break;
var scannerParamsFromDb = GetScannerParams();
if (scannerParamsFromDb != null)
{ {
scannerParams.Id = scannerParamsFromDb.Id; var minioParams = dto.MinioParams;
}
Db.SaveOrUpdate(scannerParams);
break;
case "MinIO配置":
var minioParams = JsonUtil.FromJson<MinioParams>(param);
if (minioParams == null) break;
var minioParamsFromDb = GetMinioParams(); var minioParamsFromDb = GetMinioParams();
if (minioParamsFromDb != null) if (minioParamsFromDb != null)
{ {
@ -81,10 +57,11 @@ public class SystemParamsService
} }
Db.SaveOrUpdate(minioParams); Db.SaveOrUpdate(minioParams);
break; }
case "MQTT配置":
var mqttParams = JsonUtil.FromJson<MqttParams>(param); if (dto?.MqttParams != null)
if (mqttParams == null) break; {
var mqttParams = dto.MqttParams;
var mqttParamsFromDb = GetMqttConnectParams(); var mqttParamsFromDb = GetMqttConnectParams();
if (mqttParamsFromDb != null) if (mqttParamsFromDb != null)
{ {
@ -92,10 +69,23 @@ public class SystemParamsService
} }
Db.SaveOrUpdate(mqttParams); Db.SaveOrUpdate(mqttParams);
break; }
case "基板拍照相机内参":
var waferCameraInternalParams = JsonUtil.FromJson<CameraInternalParams>(param); if (dto?.ScannerParams != null)
if (waferCameraInternalParams == null) break; {
var scannerParams = dto.ScannerParams;
var scannerParamsFromDb = GetScannerParams();
if (scannerParamsFromDb != null)
{
scannerParams.Id = scannerParamsFromDb.Id;
}
Db.SaveOrUpdate(scannerParams);
}
if (dto?.WaferCameraInternalParams != null)
{
var waferCameraInternalParams = dto.WaferCameraInternalParams;
var waferCameraInternalParamsFromDb = GetWaferParams(); var waferCameraInternalParamsFromDb = GetWaferParams();
if (waferCameraInternalParamsFromDb != null) if (waferCameraInternalParamsFromDb != null)
{ {
@ -103,10 +93,11 @@ public class SystemParamsService
} }
Db.SaveOrUpdate(waferCameraInternalParams); Db.SaveOrUpdate(waferCameraInternalParams);
break; }
case "基板拍照相机外参":
var substrateCameraInternalParams = JsonUtil.FromJson<CameraInternalParams>(param); if (dto?.SubstrateCameraInternalParams == null) return;
if (substrateCameraInternalParams == null) break;
var substrateCameraInternalParams = dto.SubstrateCameraInternalParams;
var substrateCameraInternalParamsFromDb = GetSubstrateParams(); var substrateCameraInternalParamsFromDb = GetSubstrateParams();
if (substrateCameraInternalParamsFromDb != null) if (substrateCameraInternalParamsFromDb != null)
{ {
@ -114,80 +105,35 @@ public class SystemParamsService
} }
Db.SaveOrUpdate(substrateCameraInternalParams); Db.SaveOrUpdate(substrateCameraInternalParams);
break;
}
} }
/// <summary> /// <summary>
/// 系统参数上报 /// 系统参数上报
/// </summary> /// </summary>
public static async Task SystemParamsExporter() public static async Task ExportSystemParams()
{ {
try try
{ {
var cameraParams = new ConfigData<CameraParams>() var dto = new SystemParamsDTO()
{ {
Name = "相机配置", CameraParams = GetCameraParams(),
Param = GetCameraParams(), SubstrateCameraInternalParams = GetSubstrateParams(),
Type = "SYSTEM" WaferCameraInternalParams = GetWaferParams(),
LogParams = GetLogParams(),
MinioParams = GetMinioParams(),
MqttParams = GetMqttConnectParams(),
ScannerParams = GetScannerParams(),
SystemParams = GetSystemParams(),
}; };
var substrateCameraInternalParams = new ConfigData<CameraInternalParams>() var systemParams = new ConfigData<SystemParamsDTO>()
{
Name = "基板拍照相机内参",
Param = GetSubstrateParams(),
Type = "SYSTEM"
};
var waferCameraInternalParams = new ConfigData<CameraInternalParams>()
{
Name = "芯片拍照相机内参",
Param = GetWaferParams(),
Type = "SYSTEM"
};
var logParams = new ConfigData<LogParams>()
{
Name = "日志配置",
Param = GetLogParams(),
Type = "SYSTEM"
};
var systemParams = new ConfigData<SystemParams>()
{ {
Name = "系统配置", Name = "系统配置",
Param = GetSystemParams(), Param = dto,
Type = "SYSTEM" Type = "SYSTEM"
}; };
var scannerParams = new ConfigData<ScannerParams>()
{
Name = "扫描器配置",
Param = GetScannerParams(),
Type = "SYSTEM"
};
var minioParams = new ConfigData<MinioParams>()
{
Name = "MinIO配置",
Param = GetMinioParams(),
Type = "SYSTEM"
};
var mqttParams = new ConfigData<MqttParams>()
{
Name = "MQTT配置",
Param = GetMqttConnectParams(),
Type = "SYSTEM"
};
await MessageQueueHelper.Publish(Topics.ReportConfigData, cameraParams);
await MessageQueueHelper.Publish(Topics.ReportConfigData, substrateCameraInternalParams);
await MessageQueueHelper.Publish(Topics.ReportConfigData, waferCameraInternalParams);
await MessageQueueHelper.Publish(Topics.ReportConfigData, logParams);
await MessageQueueHelper.Publish(Topics.ReportConfigData, systemParams); await MessageQueueHelper.Publish(Topics.ReportConfigData, systemParams);
await MessageQueueHelper.Publish(Topics.ReportConfigData, scannerParams);
await MessageQueueHelper.Publish(Topics.ReportConfigData, minioParams);
await MessageQueueHelper.Publish(Topics.ReportConfigData, mqttParams);
} }
catch (Exception e) catch (Exception e)
{ {

View File

@ -2,6 +2,7 @@
using MasstransferCommon.Events; using MasstransferCommon.Events;
using MasstransferCommon.Scheduler; using MasstransferCommon.Scheduler;
using MasstransferCommunicate.Mqtt.Client; using MasstransferCommunicate.Mqtt.Client;
using MasstransferExporter.DataExporter;
using MasstransferExporter.Init; using MasstransferExporter.Init;
using MasstransferExporter.StatExporter; using MasstransferExporter.StatExporter;
using MasstransferInfrastructure.Database.Sqlite; using MasstransferInfrastructure.Database.Sqlite;
@ -38,8 +39,8 @@ class Program
// 启动完成后,广播启动通知 // 启动完成后,广播启动通知
EventBus<bool>.Publish(EventType.StartUp, true); EventBus<bool>.Publish(EventType.StartUp, true);
// DelayScheduler.Delay(async () => await SystemStatExporter.ExportSystemStat(), DelayScheduler.Delay(async () => await SystemParamsService.ExportSystemParams(),
// TimeSpan.FromSeconds(3)); TimeSpan.FromSeconds(3));
// 启动与主程序的通信 // 启动与主程序的通信

View File

@ -2,6 +2,7 @@
using MasstransferCommon.Utils; using MasstransferCommon.Utils;
using MasstransferCommunicate.Mqtt.Model; using MasstransferCommunicate.Mqtt.Model;
using MasstransferInfrastructure.Mqtt.Model; using MasstransferInfrastructure.Mqtt.Model;
using Masuit.Tools;
using MQTTnet; using MQTTnet;
using MQTTnet.Client; using MQTTnet.Client;
using MQTTnet.Protocol; using MQTTnet.Protocol;
@ -106,7 +107,7 @@ internal class MqttClient
var payload = JsonUtil.ToJson(message); var payload = JsonUtil.ToJson(message);
Console.WriteLine(payload); Console.WriteLine(message.ToJsonString());
var result = await _client.PublishAsync(new MqttApplicationMessageBuilder() var result = await _client.PublishAsync(new MqttApplicationMessageBuilder()
.WithTopic(topic) .WithTopic(topic)