diff --git a/MasstransferCommon/Model/Constant/Topics.cs b/MasstransferCommon/Model/Constant/Topics.cs
index b7388c2..dbcba63 100644
--- a/MasstransferCommon/Model/Constant/Topics.cs
+++ b/MasstransferCommon/Model/Constant/Topics.cs
@@ -75,6 +75,11 @@ public static class Topics
///
public const string RemoteControl = $"down/{SN}/402/{Version}";
+ ///
+ /// 上报配置字典数据
+ ///
+ public const string ReportConfigDictionary = $"up/{SN}/403/{Version}";
+
///
/// 下发OTA包
///
diff --git a/MasstransferExporter/DataExporter/ConfigService.cs b/MasstransferExporter/DataExporter/ConfigService.cs
index ca228ef..37745d5 100644
--- a/MasstransferExporter/DataExporter/ConfigService.cs
+++ b/MasstransferExporter/DataExporter/ConfigService.cs
@@ -1,8 +1,6 @@
using MasstransferCommon.Atrributes;
using MasstransferCommon.Events;
-using MasstransferCommon.Model.Constant;
using MasstransferCommon.Utils;
-using MasstransferCommunicate.Mqtt.Client;
using MasstransferExporter.DataExporter.Model;
using Masuit.Tools;
@@ -26,13 +24,9 @@ public class ConfigService : Instant
/// 处理接收到的配置下发事件,根据配置类型执行不同的操作
///
///
- ///
- private static void HandleConfigIssuedEvent(string topic, string payload)
+ ///
+ private static void HandleConfigIssuedEvent(string topic, ConfigData data)
{
- if (payload.IsNullOrEmpty()) return;
-
- var data = JsonUtil.FromJson(payload);
-
if (data.IsNullOrEmpty()) return;
var type = data.Type;
diff --git a/MasstransferExporter/DataExporter/FormulaService.cs b/MasstransferExporter/DataExporter/FormulaService.cs
index 68c94a4..694cc36 100644
--- a/MasstransferExporter/DataExporter/FormulaService.cs
+++ b/MasstransferExporter/DataExporter/FormulaService.cs
@@ -1,4 +1,7 @@
-using MasstransferCommon.Model.Constant;
+using System.ComponentModel;
+using System.Reflection;
+using MasstransferCommon.Model.Constant;
+using MasstransferCommon.Model.Entity;
using MasstransferCommon.Utils;
using MasstransferCommunicate.Mqtt.Client;
using MasstransferCore.Model.Entity;
@@ -249,6 +252,14 @@ public class FormulaService
{
var formulas = GetAllFormulas();
+ var dto = formulas[0];
+
+ // 推送配方字段名称字典内容
+ var mapping = new Dictionary();
+ GetFormulaFieldNameMapping(dto.GetType(), mapping);
+
+ await MessageQueueHelper.Publish(Topics.ReportConfigDictionary, mapping);
+
foreach (var formula in formulas)
{
var formulaDto = GetFormulaById(formula.Id);
@@ -268,4 +279,32 @@ public class FormulaService
Console.WriteLine($"定时上报配方数据失败: {e}");
}
}
+
+
+ ///
+ /// 获取配方字段名称映射
+ ///
+ ///
+ private static void GetFormulaFieldNameMapping(Type type, IDictionary mapping)
+ {
+ var fields = type.GetProperties();
+ foreach (var field in fields)
+ {
+ // 判定当前的属性是否为 Entity的子类
+ if (field.PropertyType.IsSubclassOf(typeof(Entity)))
+ {
+ var subMapping = new Dictionary();
+ GetFormulaFieldNameMapping(field.PropertyType, subMapping);
+ mapping.Add(field.Name, subMapping);
+ }
+ else
+ {
+ var description = field.GetCustomAttribute();
+ if (description != null)
+ {
+ mapping.Add(field.Name, description.Description);
+ }
+ }
+ }
+ }
}
\ No newline at end of file
diff --git a/MasstransferExporter/DataExporter/Model/FormulaDTO.cs b/MasstransferExporter/DataExporter/Model/FormulaDTO.cs
index 59c31c5..0302c9e 100644
--- a/MasstransferExporter/DataExporter/Model/FormulaDTO.cs
+++ b/MasstransferExporter/DataExporter/Model/FormulaDTO.cs
@@ -1,4 +1,5 @@
-using MasstransferCore.Model.Entity;
+using System.ComponentModel;
+using MasstransferCore.Model.Entity;
namespace MasstransferExporter.DataExporter.Model;
@@ -7,15 +8,15 @@ namespace MasstransferExporter.DataExporter.Model;
///
public class FormulaDTO
{
- public string Id { get; set; }
+ [Description("配方id")] public string Id { get; set; }
- public string Name { get; set; }
+ [Description("配方名称")] public string Name { get; set; }
- public string Code { get; set; }
+ [Description("配方编号")] public string Code { get; set; }
- public string Description { get; set; }
+ [Description("配方描述")] public string Description { get; set; }
- public bool Selected { get; set; }
+ [Description("是否启用")] public bool Selected { get; set; }
public WorkBenchSetting? WorkBenchSetting { get; set; }
diff --git a/MasstransferExporter/ImageExporter/ImageService.cs b/MasstransferExporter/ImageExporter/ImageService.cs
index 3cab2e0..1ab3029 100644
--- a/MasstransferExporter/ImageExporter/ImageService.cs
+++ b/MasstransferExporter/ImageExporter/ImageService.cs
@@ -2,7 +2,6 @@
using MasstransferCommon.Atrributes;
using MasstransferCommon.Events;
using MasstransferCommon.Model.Constant;
-using MasstransferCommon.Utils;
using MasstransferCommunicate.Minio;
using MasstransferCommunicate.Mqtt.Client;
using MasstransferExporter.DataExporter.Model;
@@ -31,12 +30,8 @@ public class ImageService : Instant
///
/// 处理图片查询请求
///
- private static async Task HandleImageQueryEvent(string topic, string payload)
+ private static async Task HandleImageQueryEvent(string topic, ImageQueryDTO queryDto)
{
- if (payload == null) return;
-
- var queryDto = JsonUtil.FromJson(payload);
-
if (queryDto == null) return;
var batchNumber = queryDto.batchNumber;
@@ -130,20 +125,19 @@ public class ImageService : Instant
// 获取文件夹下所有文件的信息
var fs = dir.GetFiles();
- if (fs != null && fs.Length > 0)
+ if (fs.Length > 0)
{
try
{
foreach (var file in fs)
{
- if (file.Name.EndsWith(".bmp") && !file.Name.Contains("_thumbnail"))
+ if (!file.Name.EndsWith(".bmp") || file.Name.Contains("_thumbnail")) continue;
+
+ // 判断是否已经存在缩略图,如果存在的话,则跳过生成过程
+ var thumbnailFilePath = file.FullName.Replace(".bmp", "_thumbnail.bmp");
+ if (!File.Exists(thumbnailFilePath))
{
- // 判断是否已经存在缩略图,如果存在的话,则跳过生成过程
- var thumbnailFilePath = file.FullName.Replace(".bmp", "_thumbnail.bmp");
- if (!File.Exists(thumbnailFilePath))
- {
- GenerateThumbnail(file.FullName);
- }
+ GenerateThumbnail(file.FullName);
}
}
}
diff --git a/MasstransferExporter/Program.cs b/MasstransferExporter/Program.cs
index 334e5ba..4664f89 100644
--- a/MasstransferExporter/Program.cs
+++ b/MasstransferExporter/Program.cs
@@ -42,8 +42,8 @@ class Program
// 启动完成后,广播启动通知
EventBus.Publish(EventType.StartUp, true);
- // DelayScheduler.Delay(async () => await FormulaService.FormulaDataExporter(),
- // TimeSpan.FromSeconds(5));
+ DelayScheduler.Delay(async () => await FormulaService.FormulaDataExporter(),
+ TimeSpan.FromSeconds(5));
// 启动与主程序的通信
ProcessHelper.Init();
diff --git a/MasstransferInfrastructure/Mqtt/Client/MessageQueueHelper.cs b/MasstransferInfrastructure/Mqtt/Client/MessageQueueHelper.cs
index 9ae2c51..0da143a 100644
--- a/MasstransferInfrastructure/Mqtt/Client/MessageQueueHelper.cs
+++ b/MasstransferInfrastructure/Mqtt/Client/MessageQueueHelper.cs
@@ -8,7 +8,7 @@ using MQTTnet;
using MQTTnet.Client;
using MQTTnet.Protocol;
using Serilog;
-using MqttClient = MasstransferInfrastructure.Mqtt.Client.MqttClient;
+using MqttClient = MasstransferCommunicate.Mqtt.Client.MqttClient;
namespace MasstransferCommunicate.Mqtt.Client;
diff --git a/MasstransferInfrastructure/Mqtt/Client/MqttClient.cs b/MasstransferInfrastructure/Mqtt/Client/MqttClient.cs
index 5b659e5..0d8f842 100644
--- a/MasstransferInfrastructure/Mqtt/Client/MqttClient.cs
+++ b/MasstransferInfrastructure/Mqtt/Client/MqttClient.cs
@@ -4,18 +4,17 @@ using MasstransferCommon.Utils;
using MasstransferCommunicate.Mqtt.Model;
using MasstransferInfrastructure.Mqtt.Model;
using MasstransferSecurity.Utils;
-using Masuit.Tools.Systems;
using MQTTnet;
using MQTTnet.Client;
using MQTTnet.Protocol;
-namespace MasstransferInfrastructure.Mqtt.Client;
+namespace MasstransferCommunicate.Mqtt.Client;
-class MqttClient
+internal class MqttClient
{
private IMqttClient? _client;
- public event EventHandler MessageReceived;
+ public event EventHandler? MessageReceived;
private static readonly DateTime Epoch = new DateTime(2024, 1, 1, 0, 0, 0, DateTimeKind.Utc);
@@ -30,11 +29,6 @@ class MqttClient
{
var clientId = DeviceInfoUtil.GenerateUniqueID();
- // var caCert = GetCertificate(options.CaCert);
- // var clientCert = GetCertificate(options.ClientCert);
- //
- // var chain = new X509Certificate2Collection(new[] { caCert, clientCert });
-
return new MqttClientOptionsBuilder()
.WithTcpServer(options.ServerAddress, options.Port)
// .WithCredentials(options.UserName, options.Password)
@@ -45,7 +39,6 @@ class MqttClient
{
o.UseTls(options.EnableTls);
o.WithSslProtocols(options.Protocols);
- // o.WithTrustChain(chain);
}
)
.Build();