diff --git a/MasstransferExporter/DataExporter/ConfigService.cs b/MasstransferExporter/DataExporter/ConfigService.cs
new file mode 100644
index 0000000..6615651
--- /dev/null
+++ b/MasstransferExporter/DataExporter/ConfigService.cs
@@ -0,0 +1,51 @@
+using MasstransferCommon.Model.Constant;
+using MasstransferCommon.Utils;
+using MasstransferCommunicate.Mqtt.Client;
+using MasstransferExporter.DataExporter.Model;
+using Masuit.Tools;
+
+namespace MasstransferExporter.DataExporter;
+
+///
+/// 配置服务
+///
+public class ConfigService
+{
+ ///
+ /// 监听配置下发事件
+ ///
+ public static async Task ListenConfigIssuedEvent()
+ {
+ await MessageQueueHelper.Subscribe(Topics.DownloadConfigData, HandleConfigIssuedEvent);
+ }
+
+
+ ///
+ /// 处理接收到的配置下发事件,根据配置类型执行不同的操作
+ ///
+ ///
+ ///
+ private static void HandleConfigIssuedEvent(string topic, string payload)
+ {
+ if (payload.IsNullOrEmpty()) return;
+
+ var data = JsonUtil.FromJson(payload);
+
+ if (data.IsNullOrEmpty()) return;
+
+ var type = data.Type;
+ switch (type)
+ {
+ case "system":
+ SystemParamsService.HandleSystemParamsIssuedEvent(data);
+ break;
+ case "formula":
+ {
+ var param = data.Param;
+ var formulaDto = JsonUtil.FromJson(JsonUtil.ToJson(param));
+ FormulaService.HandleFormulaIssuedEvent(formulaDto);
+ break;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/MasstransferExporter/DataExporter/FormulaService.cs b/MasstransferExporter/DataExporter/FormulaService.cs
index b9f6956..ca8da78 100644
--- a/MasstransferExporter/DataExporter/FormulaService.cs
+++ b/MasstransferExporter/DataExporter/FormulaService.cs
@@ -4,6 +4,7 @@ using MasstransferCommunicate.Mqtt.Client;
using MasstransferCore.Model.Entity;
using MasstransferExporter.DataExporter.Model;
using MasstransferInfrastructure.Database.Sqlite;
+using Masuit.Tools;
namespace MasstransferExporter.DataExporter;
@@ -14,6 +15,133 @@ public class FormulaService
{
private static readonly SqliteHelper Db = SqliteHelper.GetInstance();
+
+ ///
+ /// 处理配方下发事件
+ ///
+ public static void HandleFormulaIssuedEvent(FormulaDTO formulaDto)
+ {
+ if (formulaDto.IsNullOrEmpty() || formulaDto.Name.IsNullOrEmpty()) return;
+
+ var name = formulaDto.Name;
+
+ var formula = GetFormulaByName(name);
+
+ if (formula.IsNullOrEmpty())
+ {
+ // 当前不存在这个配方,则去创建这个配方
+ formula = new Formula()
+ {
+ Name = name,
+ Code = formulaDto.Code,
+ Description = formulaDto.Description,
+ Selected = false,
+ };
+
+ Db.Insert(formula);
+ }
+
+ // 插入其他的配方记录
+ var formulaId = formula.Id;
+
+ var algorithmParams = formulaDto.AlgorithmParams;
+ var altimetryParams = formulaDto.AltimetryParams;
+ var needleSetting = formulaDto.NeedleSetting;
+ var pcbSetting = formulaDto.PcbSetting;
+ var waferSetting = formulaDto.WaferSetting;
+ var jobSetting = formulaDto.JobSetting;
+ var axisPositionParams = formulaDto.AxisPositionParams;
+ var axisVariables = formulaDto.AxisVariables;
+
+ if (algorithmParams != null)
+ {
+ var algorithmParamsByFormulaId = GetAlgorithmParamsByFormulaId(formulaId);
+ if (algorithmParamsByFormulaId != null)
+ {
+ algorithmParams.Id = algorithmParamsByFormulaId.Id;
+ }
+
+ Db.SaveOrUpdate(algorithmParams);
+ }
+
+ if (altimetryParams != null)
+ {
+ var altimetryParamsByFormulaId = GetAltimetryParamsByFormulaId(formulaId);
+ if (altimetryParamsByFormulaId != null)
+ {
+ altimetryParams.Id = altimetryParamsByFormulaId.Id;
+ }
+
+ Db.SaveOrUpdate(altimetryParams);
+ }
+
+ if (needleSetting != null)
+ {
+ var needleSettingByFormulaId = GetNeedleSettingByFormulaId(formulaId);
+ if (needleSettingByFormulaId != null)
+ {
+ needleSetting.Id = needleSettingByFormulaId.Id;
+ }
+
+ Db.SaveOrUpdate(needleSetting);
+ }
+
+ if (pcbSetting != null)
+ {
+ var pcbSettingByFormulaId = GetPcbSettingByFormulaId(formulaId);
+ if (pcbSettingByFormulaId != null)
+ {
+ pcbSetting.Id = pcbSettingByFormulaId.Id;
+ }
+
+ Db.SaveOrUpdate(pcbSetting);
+ }
+
+ if (waferSetting != null)
+ {
+ var waferSettingByFormulaId = GetWaferSettingByFormulaId(formulaId);
+ if (waferSettingByFormulaId != null)
+ {
+ waferSetting.Id = waferSettingByFormulaId.Id;
+ }
+
+ Db.SaveOrUpdate(waferSetting);
+ }
+
+ if (jobSetting != null)
+ {
+ var jobSettingByFormulaId = GetJobSettingByFormulaId(formulaId);
+ if (jobSettingByFormulaId != null)
+ {
+ jobSetting.Id = jobSettingByFormulaId.Id;
+ }
+
+ Db.SaveOrUpdate(jobSetting);
+ }
+
+ if (axisPositionParams != null)
+ {
+ var axisPositionParamsByFormulaId = GetAxisPositionParamsByFormulaId(formulaId);
+ if (axisPositionParamsByFormulaId != null)
+ {
+ axisPositionParams.Id = axisPositionParamsByFormulaId.Id;
+ }
+
+ Db.SaveOrUpdate(axisPositionParams);
+ }
+
+ if (axisVariables != null)
+ {
+ var axisVariablesByFormulaId = GetAxisVariablesByFormulaId(formulaId);
+ if (axisVariablesByFormulaId != null)
+ {
+ axisVariables.Id = axisVariablesByFormulaId.Id;
+ }
+
+ Db.SaveOrUpdate(axisVariables);
+ }
+ }
+
///
/// 获取所有的配方列表
///
@@ -24,6 +152,11 @@ public class FormulaService
return BeanUtil.CopyProperties(formulas);
}
+ private static Formula GetFormulaByName(string name)
+ {
+ return Db.Query("select * from formulas where name = ?", name).FirstOrDefault();
+ }
+
///
/// 获取当前已经启用的配方
///
diff --git a/MasstransferExporter/DataExporter/SystemParamsService.cs b/MasstransferExporter/DataExporter/SystemParamsService.cs
index 9b775dc..a185d7a 100644
--- a/MasstransferExporter/DataExporter/SystemParamsService.cs
+++ b/MasstransferExporter/DataExporter/SystemParamsService.cs
@@ -1,7 +1,9 @@
using MasstransferCommon.Model.Constant;
+using MasstransferCommon.Utils;
using MasstransferCommunicate.Mqtt.Client;
using MasstransferExporter.DataExporter.Model;
using MasstransferInfrastructure.Database.Sqlite;
+using Masuit.Tools;
namespace MasstransferExporter.DataExporter;
@@ -12,6 +14,110 @@ public class SystemParamsService
{
private static readonly SqliteHelper Db = SqliteHelper.GetInstance();
+
+ ///
+ /// 处理下发的系统配置参数
+ ///
+ ///
+ public static void HandleSystemParamsIssuedEvent(ConfigData data)
+ {
+ if (data.IsNullOrEmpty()) return;
+
+ var name = data.Name;
+ var param = JsonUtil.ToJson(data.Param);
+ switch (name)
+ {
+ case "相机配置":
+ var cameraParams = JsonUtil.FromJson(param);
+ if (cameraParams == null) break;
+ var cameraParamsFromDb = GetCameraParams();
+ if (cameraParamsFromDb != null)
+ {
+ cameraParams.Id = cameraParamsFromDb.Id;
+ }
+
+ Db.SaveOrUpdate(cameraParams);
+ break;
+ case "日志配置":
+ var logParams = JsonUtil.FromJson(param);
+ if (logParams == null) break;
+ var logParamsFromDb = GetLogParams();
+ if (logParamsFromDb != null)
+ {
+ logParams.Id = logParamsFromDb.Id;
+ }
+
+ Db.SaveOrUpdate(logParams);
+ break;
+ case "系统配置":
+ var systemParams = JsonUtil.FromJson(param);
+ if (systemParams == null) break;
+ var systemParamsFromDb = GetSystemParams();
+ if (systemParamsFromDb != null)
+ {
+ systemParams.Id = systemParamsFromDb.Id;
+ }
+
+ Db.SaveOrUpdate(systemParams);
+ break;
+ case "扫描器配置":
+ var scannerParams = JsonUtil.FromJson(param);
+ if (scannerParams == null) break;
+ var scannerParamsFromDb = GetScannerParams();
+ if (scannerParamsFromDb != null)
+ {
+ scannerParams.Id = scannerParamsFromDb.Id;
+ }
+
+ Db.SaveOrUpdate(scannerParams);
+ break;
+ case "MinIO配置":
+ var minioParams = JsonUtil.FromJson(param);
+ if (minioParams == null) break;
+ var minioParamsFromDb = GetMinioParams();
+ if (minioParamsFromDb != null)
+ {
+ minioParams.Id = minioParamsFromDb.Id;
+ }
+
+ Db.SaveOrUpdate(minioParams);
+ break;
+ case "MQTT配置":
+ var mqttParams = JsonUtil.FromJson(param);
+ if (mqttParams == null) break;
+ var mqttParamsFromDb = GetMqttConnectParams();
+ if (mqttParamsFromDb != null)
+ {
+ mqttParams.Id = mqttParamsFromDb.Id;
+ }
+
+ Db.SaveOrUpdate(mqttParams);
+ break;
+ case "基板拍照相机内参":
+ var waferCameraInternalParams = JsonUtil.FromJson(param);
+ if (waferCameraInternalParams == null) break;
+ var waferCameraInternalParamsFromDb = GetWaferParams();
+ if (waferCameraInternalParamsFromDb != null)
+ {
+ waferCameraInternalParams.Id = waferCameraInternalParamsFromDb.Id;
+ }
+
+ Db.SaveOrUpdate(waferCameraInternalParams);
+ break;
+ case "基板拍照相机外参":
+ var substrateCameraInternalParams = JsonUtil.FromJson(param);
+ if (substrateCameraInternalParams == null) break;
+ var substrateCameraInternalParamsFromDb = GetSubstrateParams();
+ if (substrateCameraInternalParamsFromDb != null)
+ {
+ substrateCameraInternalParams.Id = substrateCameraInternalParamsFromDb.Id;
+ }
+
+ Db.SaveOrUpdate(substrateCameraInternalParams);
+ break;
+ }
+ }
+
///
/// 系统参数上报
///
diff --git a/MasstransferExporter/Program.cs b/MasstransferExporter/Program.cs
index 722aed3..bbd6049 100644
--- a/MasstransferExporter/Program.cs
+++ b/MasstransferExporter/Program.cs
@@ -13,9 +13,9 @@ class Program
EnableTls = false
};
- await MessageQueueHelper.InitConnect(options);
+ // await MessageQueueHelper.InitConnect(options);
- CoordinateService.CoordinateExporter();
+ await FormulaService.FormulaDataExporter();
Console.WriteLine("按任意键退出");