diff --git a/MasstransferCommon/Model/Constant/Constants.cs b/MasstransferCommon/Model/Constant/Constants.cs
deleted file mode 100644
index 14b036a..0000000
--- a/MasstransferCommon/Model/Constant/Constants.cs
+++ /dev/null
@@ -1,6 +0,0 @@
-namespace MasstransferCommon.Model.Constant;
-
-public class Constants
-{
- public const string SN = "G5506771257";
-}
\ No newline at end of file
diff --git a/MasstransferCommon/Model/Constant/Topics.cs b/MasstransferCommon/Model/Constant/Topics.cs
index d8b2bd2..df8a162 100644
--- a/MasstransferCommon/Model/Constant/Topics.cs
+++ b/MasstransferCommon/Model/Constant/Topics.cs
@@ -1,128 +1,128 @@
-namespace MasstransferCommon.Model.Constant;
+using MasstransferSecurity.Utils;
+
+namespace MasstransferCommon.Model.Constant;
///
/// 这里保存所有的 Mqtt Topic
/// topic 的基本结构构成
-/// up/{sn}/{cmd}/{version}
+/// up/{DeviceInfoUtil.GetDeviceSN()}/{cmd}/{version}
///
///
public static class Topics
{
// ReSharper disable once InconsistentNaming
- private const string SN = "G5506771257";
-
- private const string Version = "1.0.0";
+ private static string Version = "1.0.0";
///
/// 上报生产数据
///
- public const string ReportProductRecord = $"up/{SN}/100/{Version}";
+ public static string ReportProductRecord = $"up/{DeviceInfoUtil.GetDeviceSN()}/100/{Version}";
///
/// 图片上传
///
- public const string ImageUpload = $"up/{SN}/102/{Version}";
+ public static string ImageUpload = $"up/{DeviceInfoUtil.GetDeviceSN()}/102/{Version}";
///
/// 查询图片
///
- public const string QueryImage = $"down/{SN}/103/{Version}";
+ public static string QueryImage = $"down/{DeviceInfoUtil.GetDeviceSN()}/103/{Version}";
///
/// 坐标文件上传
///
- public const string CoordinateUpload = $"up/{SN}/104/{Version}";
+ public static string CoordinateUpload = $"up/{DeviceInfoUtil.GetDeviceSN()}/104/{Version}";
///
/// 查询坐标文件
///
- public const string QueryCoordinate = $"down/{SN}/105/{Version}";
+ public static string QueryCoordinate = $"down/{DeviceInfoUtil.GetDeviceSN()}/105/{Version}";
///
/// 上报用户操作数据
///
- public const string ReportOperationLog = $"up/{SN}/200/{Version}";
+ public static string ReportOperationLog = $"up/{DeviceInfoUtil.GetDeviceSN()}/200/{Version}";
///
/// 上传系统日志文件
///
- public const string UploadLogFile = $"up/{SN}/201/{Version}";
+ public static string UploadLogFile = $"up/{DeviceInfoUtil.GetDeviceSN()}/201/{Version}";
///
/// 查询系统日志文件
///
- public const string QueryLogFile = $"down/{SN}/202/{Version}";
+ public static string QueryLogFile = $"down/{DeviceInfoUtil.GetDeviceSN()}/202/{Version}";
///
/// 上报故障信息
///
- public const string ReportFaultRecord = $"up/{SN}/203/{Version}";
+ public static string ReportFaultRecord = $"up/{DeviceInfoUtil.GetDeviceSN()}/203/{Version}";
///
/// 上报配置数据
///
- public const string ReportConfigData = $"up/{SN}/400/{Version}";
+ public static string ReportConfigData = $"up/{DeviceInfoUtil.GetDeviceSN()}/400/{Version}";
///
/// 下发配置数据
///
- public const string DownloadConfigData = $"down/{SN}/401/{Version}";
+ public static string DownloadConfigData = $"down/{DeviceInfoUtil.GetDeviceSN()}/401/{Version}";
///
/// 下发远程控制指令
///
- public const string RemoteControl = $"down/{SN}/402/{Version}";
+ public static string RemoteControl = $"down/{DeviceInfoUtil.GetDeviceSN()}/402/{Version}";
///
/// 上报配置字典数据
///
- public const string ReportConfigDictionary = $"up/{SN}/403/{Version}";
+ public static string ReportConfigDictionary = $"up/{DeviceInfoUtil.GetDeviceSN()}/403/{Version}";
///
/// 下发OTA包
///
// ReSharper disable once InconsistentNaming
- public const string IssuedOTAPackage = $"down/{SN}/500/{Version}";
+ public static string IssuedOTAPackage = $"down/{DeviceInfoUtil.GetDeviceSN()}/500/{Version}";
///
/// 查询OTA信息
///
// ReSharper disable once InconsistentNaming
- public const string QueryOTA = $"up/{SN}/501/{Version}";
+ public static string QueryOTA = $"up/{DeviceInfoUtil.GetDeviceSN()}/501/{Version}";
///
/// OTA 更新反馈
///
// ReSharper disable once InconsistentNaming
- public const string OTAUpgradeFeedback = $"up/{SN}/502/{Version}";
+ public static string OTAUpgradeFeedback = $"up/{DeviceInfoUtil.GetDeviceSN()}/502/{Version}";
///
/// 更新证书事件
///
- public const string UpdateLicenseEvent = $"up/{SN}/503/{Version}";
+ public static string UpdateLicenseEvent = $"up/{DeviceInfoUtil.GetDeviceSN()}/503/{Version}";
///
/// 更新证书事件反馈
///
- public const string UpdateLicenseEventFeedback = $"up/{SN}/505/{Version}";
+ public static string UpdateLicenseEventFeedback = $"up/{DeviceInfoUtil.GetDeviceSN()}/505/{Version}";
///
/// 上行心跳信息
///
- public const string HeartBeat = $"up/{SN}/600/{Version}";
+ public static string HeartBeat = $"up/{DeviceInfoUtil.GetDeviceSN()}/600/{Version}";
///
/// 上行系统状态信息
///
- public const string ReportSystemStat = $"up/{SN}/601/{Version}";
-
+ public static string ReportSystemStat = $"up/{DeviceInfoUtil.GetDeviceSN()}/601/{Version}";
+
///
/// 上行系统版本信息
///
- public const string ReportSystemVersion = $"up/{SN}/602/{Version}";
+ public static string ReportSystemVersion = $"up/{DeviceInfoUtil.GetDeviceSN()}/602/{Version}";
}
\ No newline at end of file
diff --git a/MasstransferCommon/Utils/DeviceInfoUtil.cs b/MasstransferCommon/Utils/DeviceInfoUtil.cs
index 18c4a84..c74ff76 100644
--- a/MasstransferCommon/Utils/DeviceInfoUtil.cs
+++ b/MasstransferCommon/Utils/DeviceInfoUtil.cs
@@ -1,6 +1,7 @@
using System.Management;
using System.Security.Cryptography;
using System.Text;
+using MasstransferCommon.Utils;
namespace MasstransferSecurity.Utils;
@@ -9,6 +10,8 @@ namespace MasstransferSecurity.Utils;
///
public sealed class DeviceInfoUtil
{
+ private const string KeyPath = @"Software\Masstransfer\Device";
+
public static string GenerateUniqueID()
{
var cpuId = GetCpuId();
@@ -87,4 +90,13 @@ public sealed class DeviceInfoUtil
return builder.ToString();
}
+
+ ///
+ /// 获取设备的序列号
+ ///
+ ///
+ public static string GetDeviceSN()
+ {
+ return (string)RegistryHelper.ReadValue(KeyPath, "SerialNumber");
+ }
}
\ No newline at end of file
diff --git a/MasstransferExporter/DataExporter/CoordinateService.cs b/MasstransferExporter/DataExporter/CoordinateService.cs
index 925209c..c037633 100644
--- a/MasstransferExporter/DataExporter/CoordinateService.cs
+++ b/MasstransferExporter/DataExporter/CoordinateService.cs
@@ -5,6 +5,7 @@ using MasstransferCommunicate.Minio;
using MasstransferCommunicate.Mqtt.Client;
using MasstransferExporter.DataExporter.Model;
using MasstransferInfrastructure.Database.Sqlite;
+using MasstransferSecurity.Utils;
using Masuit.Tools;
namespace MasstransferExporter.DataExporter;
@@ -59,7 +60,7 @@ public class CoordinateService : Instant
await File.WriteAllTextAsync(path, substrate.SubstrateMarkPointJson);
- var fileName = $"{Constants.SN}/{batchCode}/{substrateCode}/MARK/mark.json";
+ var fileName = $"{DeviceInfoUtil.GetDeviceSN()}/{batchCode}/{substrateCode}/MARK/mark.json";
await Minio.UploadFileAsync("coordinate", fileName, path);
@@ -106,7 +107,7 @@ public class CoordinateService : Instant
{
await File.WriteAllTextAsync(path, wafer.CoordinateJson);
- var fileName = $"{Constants.SN}/{wafer.BatchCode}/{wafer.WaferCode}/WAFER/wafer.json";
+ var fileName = $"{DeviceInfoUtil.GetDeviceSN()}/{wafer.BatchCode}/{wafer.WaferCode}/WAFER/wafer.json";
await Minio.UploadFileAsync("coordinate", fileName, path);
@@ -152,7 +153,7 @@ public class CoordinateService : Instant
{
await File.WriteAllTextAsync(path, substrate.CoordinateJson);
- var fileName = $"{Constants.SN}/{substrate.BatchNo}/{substrate.SubstrateCode}/PCB/pcb.json";
+ var fileName = $"{DeviceInfoUtil.GetDeviceSN()}/{substrate.BatchNo}/{substrate.SubstrateCode}/PCB/pcb.json";
await Minio.UploadFileAsync("coordinate", fileName, path);
@@ -196,7 +197,8 @@ public class CoordinateService : Instant
{
await File.WriteAllTextAsync(path, record.ToJsonString());
- var fileName = $"{Constants.SN}/{record.BatchNo}/{record.SubstrateCode}/ROUTE/{record.Id}.json";
+ var fileName =
+ $"{DeviceInfoUtil.GetDeviceSN()}/{record.BatchNo}/{record.SubstrateCode}/ROUTE/{record.Id}.json";
await Minio.UploadFileAsync("coordinate", fileName, path);
diff --git a/MasstransferExporter/DataExporter/Model/DeviceParams.cs b/MasstransferExporter/DataExporter/Model/DeviceParams.cs
new file mode 100644
index 0000000..46f9a6b
--- /dev/null
+++ b/MasstransferExporter/DataExporter/Model/DeviceParams.cs
@@ -0,0 +1,45 @@
+using System.ComponentModel;
+using MasstransferCommon.Model.Entity;
+using SQLite;
+
+namespace MasstransferExporter.DataExporter.Model;
+
+[Table("device"), Description("设备信息")]
+public class DeviceParams : Entity
+{
+ [Column("device_name"), Description("设备名称")]
+ public string? DeviceName { get; set; }
+
+ [Column("device_type"), Description("设备型号")]
+ public string? DeviceType { get; set; }
+
+ [Column("weight"), Description("设备重量(kg)")]
+ public int Weight { get; set; }
+
+ [Column("input_pressure"), Description("输入压力(MPa)")]
+ public string? InputPressure { get; set; }
+
+ [Column("length"), Description("设备长度(mm)")]
+ public int Length { get; set; }
+
+ [Column("width"), Description("设备宽度(mm)")]
+ public int Width { get; set; }
+
+ [Column("height"), Description("设备高度(mm)")]
+ public int Height { get; set; }
+
+ [Column("power"), Description("设备功率(W)")]
+ public int Power { get; set; }
+
+ [Column("voltage"), Description("设备电压(V)")]
+ public int Voltage { get; set; }
+
+ [Column("current"), Description("设备电流(A)")]
+ public int Current { get; set; }
+
+ [Column("date_of_manufacture"), Description("设备生产日期")]
+ public string? DateOfManufacture { get; set; }
+
+ [Column("serial_number"), Description("设备序列号")]
+ public string? SerialNumber { get; set; }
+}
\ No newline at end of file
diff --git a/MasstransferExporter/DataExporter/Model/SystemParamsDTO.cs b/MasstransferExporter/DataExporter/Model/SystemParamsDTO.cs
index bf419a3..2c36b47 100644
--- a/MasstransferExporter/DataExporter/Model/SystemParamsDTO.cs
+++ b/MasstransferExporter/DataExporter/Model/SystemParamsDTO.cs
@@ -24,4 +24,6 @@ public class SystemParamsDTO
public AxisVariables? AxisVariables { get; set; }
public AxisPositionParams? AxisPositionParams { get; set; }
+
+ public DeviceParams? DeviceParams { get; set; }
}
\ No newline at end of file
diff --git a/MasstransferExporter/DataExporter/SystemParamsService.cs b/MasstransferExporter/DataExporter/SystemParamsService.cs
index aa26a8e..b24cac0 100644
--- a/MasstransferExporter/DataExporter/SystemParamsService.cs
+++ b/MasstransferExporter/DataExporter/SystemParamsService.cs
@@ -148,7 +148,8 @@ public class SystemParamsService
ScannerParams = GetScannerParams(),
SystemParams = GetSystemParams(),
AxisVariables = GetAxisVariables(),
- AxisPositionParams = GetAxisPositionParams()
+ AxisPositionParams = GetAxisPositionParams(),
+ DeviceParams = GetDeviceParams()
};
var systemParams = new ConfigData()
@@ -235,4 +236,10 @@ public class SystemParamsService
return Db.Query("select * from axis_position_params limit 1")
.FirstOrDefault();
}
+
+ private static DeviceParams? GetDeviceParams()
+ {
+ return Db.Query("select * from device limit 1")
+ .FirstOrDefault();
+ }
}
\ No newline at end of file
diff --git a/MasstransferExporter/ImageExporter/ImageService.cs b/MasstransferExporter/ImageExporter/ImageService.cs
index 338e527..c79b668 100644
--- a/MasstransferExporter/ImageExporter/ImageService.cs
+++ b/MasstransferExporter/ImageExporter/ImageService.cs
@@ -7,6 +7,7 @@ using MasstransferCommunicate.Mqtt.Client;
using MasstransferExporter.DataExporter.Model;
using MasstransferExporter.ImageExporter.Model;
using MasstransferInfrastructure.Database.Sqlite;
+using MasstransferSecurity.Utils;
namespace MasstransferExporter.ImageExporter;
@@ -89,7 +90,8 @@ public class ImageService : Instant
}
// 上传文件
- var fileName = $"{Constants.SN}/{codeDir.Name}/{batchDir.Name}/{picType.ToUpper()}/{name}";
+ var fileName =
+ $"{DeviceInfoUtil.GetDeviceSN()}/{codeDir.Name}/{batchDir.Name}/{picType.ToUpper()}/{name}";
await Minio.UploadFileAsync(bucket, fileName, path);
@@ -233,7 +235,7 @@ public class ImageService : Instant
foreach (var image in images)
{
var fileName =
- $"{Constants.SN}/{codeDir.Name}/{batchCode.Name}/{type.Name.ToUpper()}/{image.Name}";
+ $"{DeviceInfoUtil.GetDeviceSN()}/{codeDir.Name}/{batchCode.Name}/{type.Name.ToUpper()}/{image.Name}";
var path = image.FullName;
diff --git a/MasstransferExporter/LogExporter/LogFileExporter.cs b/MasstransferExporter/LogExporter/LogFileExporter.cs
index 0c4c851..9412e35 100644
--- a/MasstransferExporter/LogExporter/LogFileExporter.cs
+++ b/MasstransferExporter/LogExporter/LogFileExporter.cs
@@ -7,6 +7,7 @@ using MasstransferCommunicate.Minio;
using MasstransferCommunicate.Mqtt.Client;
using MasstransferExporter.LogExporter.Model;
using MasstransferInfrastructure.Database.Sqlite;
+using MasstransferSecurity.Utils;
namespace MasstransferExporter.LogExporter;
@@ -34,8 +35,7 @@ public class LogFileExporter : Instant
{
if (dto == null) return;
- var path =
- "C:\\workspace\\code_repos\\haiju\\MasstransferHost\\MasstransferDesktop\\bin\\Debug\\net7.0";
+ var path = GetBaseDirectory();
var directory = new DirectoryInfo(path + "\\logs");
@@ -46,7 +46,7 @@ public class LogFileExporter : Instant
foreach (var file in files)
{
var fileName =
- $"{Constants.SN}/{TimeUtil.FormatTime(file.CreationTime, "yyyyMMdd")}/{dto.Module}/{file.Name}";
+ $"{DeviceInfoUtil.GetDeviceSN()}/{TimeUtil.FormatTime(file.CreationTime, "yyyyMMdd")}/{dto.Module}/{file.Name}";
await Minio.UploadFileAsync("log", fileName, file.FullName);
}
@@ -59,8 +59,7 @@ public class LogFileExporter : Instant
var yesterday = DateTime.Today.AddDays(-1);
- var path =
- "C:\\workspace\\code_repos\\haiju\\MasstransferHost\\MasstransferDesktop\\bin\\Debug\\net7.0";
+ var path = GetBaseDirectory();
foreach (var level in Levels)
{
@@ -72,7 +71,8 @@ public class LogFileExporter : Instant
foreach (var file in files)
{
- var fileName = $"{Constants.SN}/{TimeUtil.FormatTime(yesterday, "yyyyMMdd")}/{level}/{file.Name}";
+ var fileName =
+ $"{DeviceInfoUtil.GetDeviceSN()}/{TimeUtil.FormatTime(yesterday, "yyyyMMdd")}/{level}/{file.Name}";
await Minio.UploadFileAsync("log", fileName, file.FullName);
}
@@ -128,4 +128,20 @@ public class LogFileExporter : Instant
{
EventBus.AddEventHandler(EventType.StartUp, ListenQueryLogEvent);
}
+
+ ///
+ /// 获取根目录路径
+ ///
+ ///
+ private static string GetBaseDirectory()
+ {
+ var logParams = GetLogParams();
+ return logParams?.Path ?? "";
+ }
+
+ private static LogParams? GetLogParams()
+ {
+ return Helper.Query("select * from log_params limit 1")
+ .FirstOrDefault();
+ }
}
\ No newline at end of file
diff --git a/MasstransferInfrastructure/Mqtt/Client/MqttClient.cs b/MasstransferInfrastructure/Mqtt/Client/MqttClient.cs
index df5a7c3..774e57e 100644
--- a/MasstransferInfrastructure/Mqtt/Client/MqttClient.cs
+++ b/MasstransferInfrastructure/Mqtt/Client/MqttClient.cs
@@ -1,7 +1,7 @@
-using MasstransferCommon.Model.Constant;
-using MasstransferCommon.Utils;
+using MasstransferCommon.Utils;
using MasstransferCommunicate.Mqtt.Model;
using MasstransferInfrastructure.Mqtt.Model;
+using MasstransferSecurity.Utils;
using Masuit.Tools;
using MQTTnet;
using MQTTnet.Client;
@@ -28,7 +28,7 @@ internal class MqttClient
{
return new MqttClientOptionsBuilder()
.WithTcpServer(options.ServerAddress, options.Port)
- .WithClientId(Constants.SN)
+ .WithClientId(DeviceInfoUtil.GetDeviceSN())
.WithKeepAlivePeriod(TimeSpan.FromSeconds(60))
.WithCleanStart(true)
.WithWillRetain(false)