调整SN的获取来源

This commit is contained in:
huangxianguo 2024-09-24 11:16:08 +08:00
parent 57ea062060
commit c7ccffdfaf
10 changed files with 129 additions and 49 deletions

View File

@ -1,6 +0,0 @@
namespace MasstransferCommon.Model.Constant;
public class Constants
{
public const string SN = "G5506771257";
}

View File

@ -1,128 +1,128 @@
namespace MasstransferCommon.Model.Constant;
using MasstransferSecurity.Utils;
namespace MasstransferCommon.Model.Constant;
/// <summary>
/// 这里保存所有的 Mqtt Topic
/// topic 的基本结构构成
/// up/{sn}/{cmd}/{version}
/// up/{DeviceInfoUtil.GetDeviceSN()}/{cmd}/{version}
///
/// </summary>
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";
/// <summary>
/// 上报生产数据
/// </summary>
public const string ReportProductRecord = $"up/{SN}/100/{Version}";
public static string ReportProductRecord = $"up/{DeviceInfoUtil.GetDeviceSN()}/100/{Version}";
/// <summary>
/// 图片上传
/// </summary>
public const string ImageUpload = $"up/{SN}/102/{Version}";
public static string ImageUpload = $"up/{DeviceInfoUtil.GetDeviceSN()}/102/{Version}";
/// <summary>
/// 查询图片
/// </summary>
public const string QueryImage = $"down/{SN}/103/{Version}";
public static string QueryImage = $"down/{DeviceInfoUtil.GetDeviceSN()}/103/{Version}";
/// <summary>
/// 坐标文件上传
/// </summary>
public const string CoordinateUpload = $"up/{SN}/104/{Version}";
public static string CoordinateUpload = $"up/{DeviceInfoUtil.GetDeviceSN()}/104/{Version}";
/// <summary>
/// 查询坐标文件
/// </summary>
public const string QueryCoordinate = $"down/{SN}/105/{Version}";
public static string QueryCoordinate = $"down/{DeviceInfoUtil.GetDeviceSN()}/105/{Version}";
/// <summary>
/// 上报用户操作数据
/// </summary>
public const string ReportOperationLog = $"up/{SN}/200/{Version}";
public static string ReportOperationLog = $"up/{DeviceInfoUtil.GetDeviceSN()}/200/{Version}";
/// <summary>
/// 上传系统日志文件
/// </summary>
public const string UploadLogFile = $"up/{SN}/201/{Version}";
public static string UploadLogFile = $"up/{DeviceInfoUtil.GetDeviceSN()}/201/{Version}";
/// <summary>
/// 查询系统日志文件
/// </summary>
public const string QueryLogFile = $"down/{SN}/202/{Version}";
public static string QueryLogFile = $"down/{DeviceInfoUtil.GetDeviceSN()}/202/{Version}";
/// <summary>
/// 上报故障信息
/// </summary>
public const string ReportFaultRecord = $"up/{SN}/203/{Version}";
public static string ReportFaultRecord = $"up/{DeviceInfoUtil.GetDeviceSN()}/203/{Version}";
/// <summary>
/// 上报配置数据
/// </summary>
public const string ReportConfigData = $"up/{SN}/400/{Version}";
public static string ReportConfigData = $"up/{DeviceInfoUtil.GetDeviceSN()}/400/{Version}";
/// <summary>
/// 下发配置数据
/// </summary>
public const string DownloadConfigData = $"down/{SN}/401/{Version}";
public static string DownloadConfigData = $"down/{DeviceInfoUtil.GetDeviceSN()}/401/{Version}";
/// <summary>
/// 下发远程控制指令
/// </summary>
public const string RemoteControl = $"down/{SN}/402/{Version}";
public static string RemoteControl = $"down/{DeviceInfoUtil.GetDeviceSN()}/402/{Version}";
/// <summary>
/// 上报配置字典数据
/// </summary>
public const string ReportConfigDictionary = $"up/{SN}/403/{Version}";
public static string ReportConfigDictionary = $"up/{DeviceInfoUtil.GetDeviceSN()}/403/{Version}";
/// <summary>
/// 下发OTA包
/// </summary>
// ReSharper disable once InconsistentNaming
public const string IssuedOTAPackage = $"down/{SN}/500/{Version}";
public static string IssuedOTAPackage = $"down/{DeviceInfoUtil.GetDeviceSN()}/500/{Version}";
/// <summary>
/// 查询OTA信息
/// </summary>
// ReSharper disable once InconsistentNaming
public const string QueryOTA = $"up/{SN}/501/{Version}";
public static string QueryOTA = $"up/{DeviceInfoUtil.GetDeviceSN()}/501/{Version}";
/// <summary>
/// OTA 更新反馈
/// </summary>
// ReSharper disable once InconsistentNaming
public const string OTAUpgradeFeedback = $"up/{SN}/502/{Version}";
public static string OTAUpgradeFeedback = $"up/{DeviceInfoUtil.GetDeviceSN()}/502/{Version}";
/// <summary>
/// 更新证书事件
/// </summary>
public const string UpdateLicenseEvent = $"up/{SN}/503/{Version}";
public static string UpdateLicenseEvent = $"up/{DeviceInfoUtil.GetDeviceSN()}/503/{Version}";
/// <summary>
/// 更新证书事件反馈
/// </summary>
public const string UpdateLicenseEventFeedback = $"up/{SN}/505/{Version}";
public static string UpdateLicenseEventFeedback = $"up/{DeviceInfoUtil.GetDeviceSN()}/505/{Version}";
/// <summary>
/// 上行心跳信息
/// </summary>
public const string HeartBeat = $"up/{SN}/600/{Version}";
public static string HeartBeat = $"up/{DeviceInfoUtil.GetDeviceSN()}/600/{Version}";
/// <summary>
/// 上行系统状态信息
/// </summary>
public const string ReportSystemStat = $"up/{SN}/601/{Version}";
public static string ReportSystemStat = $"up/{DeviceInfoUtil.GetDeviceSN()}/601/{Version}";
/// <summary>
/// 上行系统版本信息
/// </summary>
public const string ReportSystemVersion = $"up/{SN}/602/{Version}";
public static string ReportSystemVersion = $"up/{DeviceInfoUtil.GetDeviceSN()}/602/{Version}";
}

View File

@ -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;
/// </summary>
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();
}
/// <summary>
/// 获取设备的序列号
/// </summary>
/// <returns></returns>
public static string GetDeviceSN()
{
return (string)RegistryHelper.ReadValue(KeyPath, "SerialNumber");
}
}

View File

@ -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);

View File

@ -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; }
}

View File

@ -24,4 +24,6 @@ public class SystemParamsDTO
public AxisVariables? AxisVariables { get; set; }
public AxisPositionParams? AxisPositionParams { get; set; }
public DeviceParams? DeviceParams { get; set; }
}

View File

@ -148,7 +148,8 @@ public class SystemParamsService
ScannerParams = GetScannerParams(),
SystemParams = GetSystemParams(),
AxisVariables = GetAxisVariables(),
AxisPositionParams = GetAxisPositionParams()
AxisPositionParams = GetAxisPositionParams(),
DeviceParams = GetDeviceParams()
};
var systemParams = new ConfigData<SystemParamsDTO>()
@ -235,4 +236,10 @@ public class SystemParamsService
return Db.Query<AxisPositionParams>("select * from axis_position_params limit 1")
.FirstOrDefault();
}
private static DeviceParams? GetDeviceParams()
{
return Db.Query<DeviceParams>("select * from device limit 1")
.FirstOrDefault();
}
}

View File

@ -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;

View File

@ -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<bool>.AddEventHandler(EventType.StartUp, ListenQueryLogEvent);
}
/// <summary>
/// 获取根目录路径
/// </summary>
/// <returns></returns>
private static string GetBaseDirectory()
{
var logParams = GetLogParams();
return logParams?.Path ?? "";
}
private static LogParams? GetLogParams()
{
return Helper.Query<LogParams>("select * from log_params limit 1")
.FirstOrDefault();
}
}

View File

@ -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)