删除项目,准备跑路
This commit is contained in:
parent
c7ccffdfaf
commit
c448ac98e9
|
@ -1,7 +0,0 @@
|
|||
.idea/
|
||||
**/bin/
|
||||
**/obj/
|
||||
/bin/
|
||||
/obj/
|
||||
global.json
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
# Rider ignored files
|
||||
/contentModel.xml
|
||||
/.idea.MasstransferExporter.iml
|
||||
/modules.xml
|
||||
/projectSettingsUpdater.xml
|
|
@ -1,4 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Encoding" addBOMForNewFiles="with BOM under Windows, with no BOM otherwise" />
|
||||
</project>
|
|
@ -1,8 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="UserContentModel">
|
||||
<attachedFolders />
|
||||
<explicitIncludes />
|
||||
<explicitExcludes />
|
||||
</component>
|
||||
</project>
|
|
@ -1,6 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
|
@ -1,21 +0,0 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>net7.0</TargetFrameworks>
|
||||
|
||||
<IsPackable>false</IsPackable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="JetBrains.Annotations" Version="2024.2.0" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
|
||||
<PackageReference Include="MSTest.TestAdapter" Version="3.5.2" />
|
||||
<PackageReference Include="MSTest.TestFramework" Version="3.5.2" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\MasstransferCommon\MasstransferCommon.csproj" />
|
||||
<ProjectReference Include="..\MasstransferExporter\MasstransferExporter.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
|
@ -1,21 +0,0 @@
|
|||
using System.IO;
|
||||
using JetBrains.Annotations;
|
||||
using MasstransferCommon.Utils;
|
||||
using MasstransferExporter.DataExporter.Model;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
|
||||
namespace MasstransferCommon.Tests.Utils;
|
||||
|
||||
[TestClass]
|
||||
[TestSubject(typeof(JsonUtil))]
|
||||
public class JsonUtilTest
|
||||
{
|
||||
[TestMethod]
|
||||
public void Test()
|
||||
{
|
||||
var json = File.ReadAllText("C:\\Users\\huangxianguo\\Desktop\\formula.json");
|
||||
|
||||
var dto = JsonUtil.FromJson<FormulaDTO>(json);
|
||||
Assert.IsNotNull(dto);
|
||||
}
|
||||
}
|
|
@ -1,11 +0,0 @@
|
|||
namespace MasstransferCommon.Annotation;
|
||||
|
||||
/// <summary>
|
||||
/// 通过添加特性注解实现开启定时任务
|
||||
/// </summary>
|
||||
/// <param name="cron"></param>
|
||||
[AttributeUsage(AttributeTargets.Class, Inherited = false)]
|
||||
public class ScheduledJobAttribute(string cron) : Attribute
|
||||
{
|
||||
public string Cron { get; } = cron;
|
||||
}
|
|
@ -1,60 +0,0 @@
|
|||
using Serilog;
|
||||
using Serilog.Core;
|
||||
using Serilog.Events;
|
||||
|
||||
namespace MasstransferCommon.Config;
|
||||
|
||||
/// <summary>
|
||||
/// 日志配置类
|
||||
/// </summary>
|
||||
public class LogConfiguration
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取日志配置对象
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public static Logger GetLogger()
|
||||
{
|
||||
// 日志输出目录
|
||||
var basePath = AppDomain.CurrentDomain.BaseDirectory;
|
||||
|
||||
return new LoggerConfiguration()
|
||||
.MinimumLevel.Debug()
|
||||
.Enrich.FromLogContext()
|
||||
.WriteTo.Logger(
|
||||
l =>
|
||||
l.Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Debug)
|
||||
.WriteTo.File(
|
||||
Path.Combine(basePath, "logs", "debug", "debug-.log"),
|
||||
rollingInterval: RollingInterval.Hour,
|
||||
retainedFileCountLimit: 24
|
||||
)
|
||||
)
|
||||
.WriteTo.Logger(
|
||||
l => l.Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Information)
|
||||
.WriteTo.File(
|
||||
Path.Combine(basePath, "logs", "info", "info-.log"),
|
||||
rollingInterval: RollingInterval.Hour,
|
||||
retainedFileCountLimit: 72
|
||||
)
|
||||
)
|
||||
.WriteTo.Logger(
|
||||
l => l.Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Warning)
|
||||
.WriteTo.File(
|
||||
Path.Combine(basePath, "logs", "warning", "warning-.log"),
|
||||
rollingInterval: RollingInterval.Day,
|
||||
retainedFileCountLimit: 30
|
||||
)
|
||||
)
|
||||
.WriteTo.Logger(
|
||||
l => l.Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Error)
|
||||
.WriteTo.File(
|
||||
Path.Combine(basePath, "logs", "error", "error-.log"),
|
||||
rollingInterval: RollingInterval.Day,
|
||||
retainedFileCountLimit: 90
|
||||
)
|
||||
)
|
||||
.WriteTo.Console()
|
||||
.CreateLogger();
|
||||
}
|
||||
}
|
|
@ -1,25 +0,0 @@
|
|||
using Newtonsoft.Json;
|
||||
using JsonSerializer = Newtonsoft.Json.JsonSerializer;
|
||||
|
||||
namespace MasstransferCommon.Convert;
|
||||
|
||||
public class DatetimeConverter : JsonConverter<DateTime>
|
||||
{
|
||||
private static readonly DateTime UnixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
|
||||
|
||||
public override void WriteJson(JsonWriter writer, DateTime value, JsonSerializer serializer)
|
||||
{
|
||||
long timestamp = (long)(value.ToUniversalTime() - UnixEpoch).TotalMilliseconds;
|
||||
writer.WriteValue(timestamp < 0 ? 0 : timestamp);
|
||||
}
|
||||
|
||||
public override DateTime ReadJson(JsonReader reader, Type objectType, DateTime existingValue, bool hasExistingValue,
|
||||
JsonSerializer serializer)
|
||||
{
|
||||
var value = reader.Value;
|
||||
|
||||
return long.TryParse(value + "", out var timestamp)
|
||||
? UnixEpoch.AddMilliseconds(timestamp)
|
||||
: UnixEpoch.AddMilliseconds((long)value);
|
||||
}
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
namespace MasstransferCommon.Events;
|
||||
|
||||
/// <summary>
|
||||
/// 用于声明当前方法为事件处理器
|
||||
/// </summary>
|
||||
[AttributeUsage(AttributeTargets.Method)]
|
||||
public class EventAction(params EventType[] types) : Attribute
|
||||
{
|
||||
public EventType[] Types => types;
|
||||
}
|
|
@ -1,65 +0,0 @@
|
|||
using Serilog;
|
||||
|
||||
namespace MasstransferCommon.Events;
|
||||
|
||||
/// <summary>
|
||||
/// 事件总线
|
||||
/// </summary>
|
||||
/// <typeparam name="T"></typeparam>
|
||||
public abstract class EventBus<T>
|
||||
{
|
||||
private static readonly Dictionary<EventType, List<Delegate>> Subscribers = new();
|
||||
|
||||
/// <summary>
|
||||
/// 添加订阅
|
||||
/// </summary>
|
||||
/// <param name="type"></param>
|
||||
/// <param name="action"></param>
|
||||
public static void AddEventHandler(EventType type, Delegate action)
|
||||
{
|
||||
if (Subscribers.TryGetValue(type, out var subscribers))
|
||||
{
|
||||
var any = subscribers.Any(item => item.Equals(action));
|
||||
if (!any) subscribers.Add(action);
|
||||
}
|
||||
else
|
||||
{
|
||||
Subscribers.Add(type, [action]);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 移除订阅逻辑
|
||||
/// </summary>
|
||||
/// <param name="type">事件类型</param>
|
||||
/// <param name="action">回调方法</param>
|
||||
public static void RemoveEventHandler(EventType type, Delegate action)
|
||||
{
|
||||
if (!Subscribers.TryGetValue(type, out var handlers)) return;
|
||||
|
||||
handlers.Remove(action);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 发布事件
|
||||
/// </summary>
|
||||
/// <param name="type"></param>
|
||||
/// <param name="data"></param>
|
||||
public static void Publish(EventType type, T data)
|
||||
{
|
||||
if (!Subscribers.TryGetValue(type, out var subscribers)) return;
|
||||
|
||||
// 创建一个副本,避免在回调中修改订阅列表导致迭代异常
|
||||
var actions = subscribers.ToList();
|
||||
|
||||
foreach (var action in actions)
|
||||
try
|
||||
{
|
||||
action.DynamicInvoke(type, data);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Log.Error(e, e.Message);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
namespace MasstransferCommon.Events;
|
||||
|
||||
/// <summary>
|
||||
/// 用于声明当前类为事件监听
|
||||
/// </summary>
|
||||
[AttributeUsage(AttributeTargets.Class)]
|
||||
public class EventListener(string name = "") : Attribute
|
||||
{
|
||||
private string Name => name;
|
||||
}
|
|
@ -1,15 +0,0 @@
|
|||
using System.ComponentModel;
|
||||
|
||||
namespace MasstransferCommon.Events;
|
||||
|
||||
/// <summary>
|
||||
/// 通过事件发布订阅模式实现系统各组件的解耦
|
||||
/// 这里定义的是事件的驱动类型
|
||||
/// </summary>
|
||||
public enum EventType
|
||||
{
|
||||
// 系统初始化事件
|
||||
[Description("系统初始化事件")] SetupNotify,
|
||||
|
||||
[Description("系统已经启动事件")] StartUp,
|
||||
}
|
|
@ -1,48 +0,0 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net7.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
<LangVersion>preview</LangVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="BouncyCastle.NetCore" Version="2.2.1" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Abstractions" Version="7.0.15" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3"/>
|
||||
<PackageReference Include="Quartz" Version="3.10.0" />
|
||||
<PackageReference Include="Serilog.Enrichers.Environment" Version="3.0.1" />
|
||||
<PackageReference Include="Serilog.Extensions.Logging" Version="3.1.0" />
|
||||
<PackageReference Include="Serilog.Extensions.Logging.File" Version="3.0.1-dev-00077" />
|
||||
<PackageReference Include="Serilog.Sinks.Console" Version="6.0.0" />
|
||||
<PackageReference Include="Serilog.Sinks.RollingFile" Version="3.3.1-dev-00771" />
|
||||
<PackageReference Include="sqlite-net-sqlcipher" Version="1.9.172" />
|
||||
<PackageReference Include="System.Management" Version="8.0.0"/>
|
||||
<PackageReference Include="Serilog" Version="4.0.0"/>
|
||||
<PackageReference Include="Serilog.Sinks.File" Version="5.0.1-dev-00972"/>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Content Include="bin\Debug\net7.0\MasstransferCommon.deps.json" />
|
||||
<Content Include="bin\Debug\net7.0\MasstransferCommon.dll" />
|
||||
<Content Include="bin\Debug\net7.0\MasstransferCommon.pdb" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Remove="bin\**" />
|
||||
<Compile Remove="obj\**" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Remove="bin\**" />
|
||||
<EmbeddedResource Remove="obj\**" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Remove="bin\**" />
|
||||
<None Remove="obj\**" />
|
||||
<None Remove=".gitignore" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
|
@ -1,6 +0,0 @@
|
|||
namespace MasstransferCommon.Model.Atrributes;
|
||||
|
||||
[AttributeUsage(AttributeTargets.Property)]
|
||||
public class Hide : Attribute
|
||||
{
|
||||
}
|
|
@ -1,30 +0,0 @@
|
|||
namespace MasstransferCommon.Model.Atrributes;
|
||||
|
||||
[AttributeUsage(AttributeTargets.Property)]
|
||||
public class Property : Attribute
|
||||
{
|
||||
public bool IsReadOnly { get; set; } = false;
|
||||
|
||||
// 字符串格式
|
||||
public string? Format { get; set; }
|
||||
|
||||
// 显示控件的宽
|
||||
public double Width { get; set; }
|
||||
|
||||
// 显示控件的高
|
||||
public double Height { get; set; }
|
||||
|
||||
public double Max { get; set; }
|
||||
|
||||
public double Min { get; set; }
|
||||
|
||||
public string Group { get; set; }
|
||||
|
||||
public bool IsPassword { get; set; }
|
||||
|
||||
public string Variable { get; set; }
|
||||
|
||||
public int Axis { get; set; } = -1;
|
||||
|
||||
public int Index { get; set; } = -1;
|
||||
}
|
|
@ -1,44 +0,0 @@
|
|||
namespace MasstransferCommon.Model.Constant;
|
||||
|
||||
public class ProcessTopics
|
||||
{
|
||||
/// <summary>
|
||||
/// 测试topic
|
||||
/// </summary>
|
||||
public const string TestEvent = "TestEvent";
|
||||
|
||||
/// <summary>
|
||||
/// 证书更新事件
|
||||
/// </summary>
|
||||
public const string LicenseUpdateEvent = "LicenseUpdateEvent";
|
||||
|
||||
/// <summary>
|
||||
/// 证书更新事件反馈
|
||||
/// </summary>
|
||||
public const string LicenseUpdateEventFeedback = "LicenseUpdateEventFeedback";
|
||||
|
||||
/// <summary>
|
||||
/// OTA请求事件
|
||||
/// </summary>
|
||||
public const string OTAQueryEvent = "OTAQueryEvent";
|
||||
|
||||
/// <summary>
|
||||
/// OTA请求反馈事件
|
||||
/// </summary>
|
||||
public const string OTAQueryEventFeedback = "OTAQueryEventFeedback";
|
||||
|
||||
/// <summary>
|
||||
/// OTA更新事件
|
||||
/// </summary>
|
||||
public const string OTAUpdateEvent = "OTAUpdateEvent";
|
||||
|
||||
/// <summary>
|
||||
/// 下载更新包事件
|
||||
/// </summary>
|
||||
public const string DownloadUpdatePackageEvent = "DownloadUpdatePackageEvent";
|
||||
|
||||
/// <summary>
|
||||
/// 下载更新包事件反馈
|
||||
/// </summary>
|
||||
public const string DownloadUpdatePackageEventFeedback = "DownloadUpdatePackageEventFeedback";
|
||||
}
|
|
@ -1,128 +0,0 @@
|
|||
using MasstransferSecurity.Utils;
|
||||
|
||||
namespace MasstransferCommon.Model.Constant;
|
||||
|
||||
/// <summary>
|
||||
/// 这里保存所有的 Mqtt Topic
|
||||
/// topic 的基本结构构成
|
||||
/// up/{DeviceInfoUtil.GetDeviceSN()}/{cmd}/{version}
|
||||
///
|
||||
/// </summary>
|
||||
public static class Topics
|
||||
{
|
||||
// ReSharper disable once InconsistentNaming
|
||||
private static string Version = "1.0.0";
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 上报生产数据
|
||||
/// </summary>
|
||||
public static string ReportProductRecord = $"up/{DeviceInfoUtil.GetDeviceSN()}/100/{Version}";
|
||||
|
||||
/// <summary>
|
||||
/// 图片上传
|
||||
/// </summary>
|
||||
public static string ImageUpload = $"up/{DeviceInfoUtil.GetDeviceSN()}/102/{Version}";
|
||||
|
||||
/// <summary>
|
||||
/// 查询图片
|
||||
/// </summary>
|
||||
public static string QueryImage = $"down/{DeviceInfoUtil.GetDeviceSN()}/103/{Version}";
|
||||
|
||||
/// <summary>
|
||||
/// 坐标文件上传
|
||||
/// </summary>
|
||||
public static string CoordinateUpload = $"up/{DeviceInfoUtil.GetDeviceSN()}/104/{Version}";
|
||||
|
||||
/// <summary>
|
||||
/// 查询坐标文件
|
||||
/// </summary>
|
||||
public static string QueryCoordinate = $"down/{DeviceInfoUtil.GetDeviceSN()}/105/{Version}";
|
||||
|
||||
/// <summary>
|
||||
/// 上报用户操作数据
|
||||
/// </summary>
|
||||
public static string ReportOperationLog = $"up/{DeviceInfoUtil.GetDeviceSN()}/200/{Version}";
|
||||
|
||||
/// <summary>
|
||||
/// 上传系统日志文件
|
||||
/// </summary>
|
||||
public static string UploadLogFile = $"up/{DeviceInfoUtil.GetDeviceSN()}/201/{Version}";
|
||||
|
||||
/// <summary>
|
||||
/// 查询系统日志文件
|
||||
/// </summary>
|
||||
public static string QueryLogFile = $"down/{DeviceInfoUtil.GetDeviceSN()}/202/{Version}";
|
||||
|
||||
/// <summary>
|
||||
/// 上报故障信息
|
||||
/// </summary>
|
||||
public static string ReportFaultRecord = $"up/{DeviceInfoUtil.GetDeviceSN()}/203/{Version}";
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 上报配置数据
|
||||
/// </summary>
|
||||
public static string ReportConfigData = $"up/{DeviceInfoUtil.GetDeviceSN()}/400/{Version}";
|
||||
|
||||
/// <summary>
|
||||
/// 下发配置数据
|
||||
/// </summary>
|
||||
public static string DownloadConfigData = $"down/{DeviceInfoUtil.GetDeviceSN()}/401/{Version}";
|
||||
|
||||
/// <summary>
|
||||
/// 下发远程控制指令
|
||||
/// </summary>
|
||||
public static string RemoteControl = $"down/{DeviceInfoUtil.GetDeviceSN()}/402/{Version}";
|
||||
|
||||
/// <summary>
|
||||
/// 上报配置字典数据
|
||||
/// </summary>
|
||||
public static string ReportConfigDictionary = $"up/{DeviceInfoUtil.GetDeviceSN()}/403/{Version}";
|
||||
|
||||
/// <summary>
|
||||
/// 下发OTA包
|
||||
/// </summary>
|
||||
// ReSharper disable once InconsistentNaming
|
||||
public static string IssuedOTAPackage = $"down/{DeviceInfoUtil.GetDeviceSN()}/500/{Version}";
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 查询OTA信息
|
||||
/// </summary>
|
||||
// ReSharper disable once InconsistentNaming
|
||||
public static string QueryOTA = $"up/{DeviceInfoUtil.GetDeviceSN()}/501/{Version}";
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// OTA 更新反馈
|
||||
/// </summary>
|
||||
// ReSharper disable once InconsistentNaming
|
||||
public static string OTAUpgradeFeedback = $"up/{DeviceInfoUtil.GetDeviceSN()}/502/{Version}";
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 更新证书事件
|
||||
/// </summary>
|
||||
public static string UpdateLicenseEvent = $"up/{DeviceInfoUtil.GetDeviceSN()}/503/{Version}";
|
||||
|
||||
/// <summary>
|
||||
/// 更新证书事件反馈
|
||||
/// </summary>
|
||||
public static string UpdateLicenseEventFeedback = $"up/{DeviceInfoUtil.GetDeviceSN()}/505/{Version}";
|
||||
|
||||
/// <summary>
|
||||
/// 上行心跳信息
|
||||
/// </summary>
|
||||
public static string HeartBeat = $"up/{DeviceInfoUtil.GetDeviceSN()}/600/{Version}";
|
||||
|
||||
/// <summary>
|
||||
/// 上行系统状态信息
|
||||
/// </summary>
|
||||
public static string ReportSystemStat = $"up/{DeviceInfoUtil.GetDeviceSN()}/601/{Version}";
|
||||
|
||||
/// <summary>
|
||||
/// 上行系统版本信息
|
||||
/// </summary>
|
||||
public static string ReportSystemVersion = $"up/{DeviceInfoUtil.GetDeviceSN()}/602/{Version}";
|
||||
}
|
|
@ -1,8 +0,0 @@
|
|||
namespace MasstransferCommon.Model.Entity;
|
||||
|
||||
public enum ChipColorEnum
|
||||
{
|
||||
R = 1,
|
||||
G = 2,
|
||||
B = 3
|
||||
}
|
|
@ -1,16 +0,0 @@
|
|||
using Newtonsoft.Json;
|
||||
using SQLite;
|
||||
|
||||
namespace MasstransferCommon.Model.Entity;
|
||||
|
||||
/// <summary>
|
||||
/// 数据库实体的父类
|
||||
/// </summary>
|
||||
public class Entity
|
||||
{
|
||||
[PrimaryKey] public string? Id { get; set; }
|
||||
|
||||
[Column("create_time"), JsonIgnore] public DateTime CreateTime { get; set; } = DateTime.Now;
|
||||
|
||||
[Column("update_time"), JsonIgnore] public DateTime UpdateTime { get; set; } = DateTime.Now;
|
||||
}
|
|
@ -1,23 +0,0 @@
|
|||
using System.ComponentModel;
|
||||
using SQLite;
|
||||
|
||||
namespace MasstransferCommon.Model.Entity;
|
||||
|
||||
/// <summary>
|
||||
/// 日志参数
|
||||
/// </summary>
|
||||
[Table("log_params")]
|
||||
[Description("日志参数")]
|
||||
public class LogParams : Entity
|
||||
{
|
||||
[Column("level"), Description("日志级别")] public string? Level { get; set; }
|
||||
|
||||
[Column("path"), Description("日志存放路径")]
|
||||
public string? Path { get; set; }
|
||||
|
||||
[Column("upload_corn"), Description("日志上传时间")]
|
||||
public string? UploadCorn { get; set; }
|
||||
|
||||
[Column("upload_levels"), Description("日志上传级别")]
|
||||
public string? UploadLevels { get; set; }
|
||||
}
|
|
@ -1,13 +0,0 @@
|
|||
using System.ComponentModel;
|
||||
using SQLite;
|
||||
|
||||
namespace MasstransferCommon.Model.Entity;
|
||||
|
||||
[Table("message_failure_record"), Description("消息发送失败记录")]
|
||||
public class MessageFailureRecord : Entity
|
||||
{
|
||||
[Column("topic"), Description("主题")] public string Topic { get; set; }
|
||||
|
||||
[Column("payload"), Description("消息内容")]
|
||||
public string Payload { get; set; }
|
||||
}
|
|
@ -1,20 +0,0 @@
|
|||
using System.ComponentModel;
|
||||
using SQLite;
|
||||
|
||||
namespace MasstransferCommon.Model.Entity;
|
||||
|
||||
[Table("minio_params"), Description("MinIO参数")]
|
||||
public class MinioParams : Entity
|
||||
{
|
||||
[Column("minio_access_key"), Description("Minio AccessKey")]
|
||||
public string MinioAccessKey { get; set; }
|
||||
|
||||
[Column("minio_secret_key"), Description("Minio SecretKey")]
|
||||
public string MinioSecretKey { get; set; }
|
||||
|
||||
[Column("minio_bucket"), Description("Minio Bucket")]
|
||||
public string MinioBucket { get; set; }
|
||||
|
||||
[Column("minio_endpoint"), Description("Minio Endpoint")]
|
||||
public string MinioEndpoint { get; set; }
|
||||
}
|
|
@ -1,19 +0,0 @@
|
|||
using System.ComponentModel;
|
||||
using SQLite;
|
||||
|
||||
namespace MasstransferCommon.Model.Entity;
|
||||
|
||||
[Table("mqtt_params"), Description("Mqtt连接参数")]
|
||||
public class MqttParams : Entity
|
||||
{
|
||||
[Column("server_address"), Description("服务器地址")]
|
||||
public string ServerAddress { get; set; }
|
||||
|
||||
[Column("port"), Description("端口")] public int Port { get; set; }
|
||||
|
||||
[Column("user_name"), Description("用户名")]
|
||||
public string UserName { get; set; }
|
||||
|
||||
[Column("password"), Description("密码")]
|
||||
public string Password { get; set; }
|
||||
}
|
|
@ -1,27 +0,0 @@
|
|||
using System.ComponentModel;
|
||||
using SQLite;
|
||||
|
||||
namespace MasstransferCommon.Model.Entity;
|
||||
|
||||
/// <summary>
|
||||
/// 用户操作日志
|
||||
/// </summary>
|
||||
[Table("operation_logs")]
|
||||
public class OperationLog : Entity
|
||||
{
|
||||
[Column("user_id"), Description("用户ID")]
|
||||
public string UserId { get; set; }
|
||||
|
||||
[Column("user_name"), Description("用户名")]
|
||||
public string UserName { get; set; }
|
||||
|
||||
[Column("action"), Description("操作")] public string Action { get; set; }
|
||||
|
||||
[Column("params"), Description("参数")] public string? Params { get; set; }
|
||||
|
||||
[Column("exception"), Description("异常信息")]
|
||||
public string? Exception { get; set; }
|
||||
|
||||
[Column("operate_time"), Description("操作时间")]
|
||||
public DateTime OperateTime { get; set; }
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
using System.ComponentModel;
|
||||
using SQLite;
|
||||
|
||||
namespace MasstransferCommon.Model.Entity;
|
||||
|
||||
/// <summary>
|
||||
/// 路径参数
|
||||
/// </summary>
|
||||
[Table("path_params"), Description("文件路径参数")]
|
||||
public class PathParams : Entity
|
||||
{
|
||||
[Column("AppDir"), Description("应用程序路径")]
|
||||
public string AppDir { get; set; }
|
||||
|
||||
[Column("AssemblyPath"), Description("程序集路径")]
|
||||
public string AssemblyPath { get; set; }
|
||||
|
||||
[Column("CriticalBackupDir"), Description("重要文件备份目录地址")]
|
||||
public string CriticalBackupDir { get; set; }
|
||||
|
||||
[Column("CriticalFileExtension"), Description("重要文件后缀")]
|
||||
public string[] CriticalFileExtension { get; set; }
|
||||
|
||||
[Column("CriticalSourceLogPath"), Description("重要文件备份记录文件地址")]
|
||||
public string CriticalSourceLogPath { get; set; }
|
||||
|
||||
[Column("PreviousBackupPath"), Description("原应用程序备份目录地址")]
|
||||
public string PreviousBackupPath { get; set; }
|
||||
|
||||
[Column("UpdatePackagePath"), Description("更新包下载地址")]
|
||||
public string UpdatePackagePath { get; set; }
|
||||
}
|
|
@ -1,17 +0,0 @@
|
|||
using System.ComponentModel;
|
||||
using SQLite;
|
||||
|
||||
namespace MasstransferCommon.Model.Entity;
|
||||
|
||||
[Table("wafer_used_record"), Description("晶环使用记录")]
|
||||
public class WaferUsedRecord : Entity
|
||||
{
|
||||
[Column("context_id"), Description("上下文编号")]
|
||||
public string? ContextId { get; set; }
|
||||
|
||||
[Column("wafer_code"), Description("晶环编号")]
|
||||
public string? WaferCode { get; set; }
|
||||
|
||||
[Column("substrate_code"), Description("基板编号")]
|
||||
public string? SubstrateCode { get; set; }
|
||||
}
|
|
@ -1,9 +0,0 @@
|
|||
using System.ComponentModel;
|
||||
|
||||
namespace MasstransferCommon.Model.Enum;
|
||||
|
||||
public enum AltimetryStrategyEnum
|
||||
{
|
||||
[Description("按面积")] ByArea = 1,
|
||||
[Description("按坐标")] ByCoordinate = 2
|
||||
}
|
|
@ -1,8 +0,0 @@
|
|||
namespace MasstransferCommon.Model.Enum;
|
||||
|
||||
public enum ChipColorEnum
|
||||
{
|
||||
R = 1,
|
||||
G = 2,
|
||||
B = 3
|
||||
}
|
|
@ -1,9 +0,0 @@
|
|||
using System.ComponentModel;
|
||||
|
||||
namespace MasstransferCommon.Model.Enum;
|
||||
|
||||
public enum DirectionEnum
|
||||
{
|
||||
[Description("行方向")] ROW = 1,
|
||||
[Description("列方向")] COLUMN = 2,
|
||||
}
|
|
@ -1,8 +0,0 @@
|
|||
namespace MasstransferCommon.Model.Enum;
|
||||
|
||||
public enum ExceptionLevel : int
|
||||
{
|
||||
NORMAL,
|
||||
WARN,
|
||||
ERROR,
|
||||
}
|
|
@ -1,8 +0,0 @@
|
|||
namespace MasstransferCommon.Model.Enum;
|
||||
|
||||
public enum GainAutoEnum
|
||||
{
|
||||
Off,
|
||||
Once,
|
||||
Continuous
|
||||
}
|
|
@ -1,19 +0,0 @@
|
|||
using System.ComponentModel;
|
||||
|
||||
namespace MasstransferCommon.Model.Enum;
|
||||
|
||||
/// <summary>
|
||||
/// 生产作业状态
|
||||
/// </summary>
|
||||
public enum JobStateEnum
|
||||
{
|
||||
[Description("待生产")] Waiting = 0,
|
||||
|
||||
[Description("生产中")] Producing = 1,
|
||||
|
||||
[Description("已完成")] Completed = 2,
|
||||
|
||||
[Description("已取消")] Canceled = 3,
|
||||
|
||||
[Description("生产异常")] Abnormal = 4,
|
||||
}
|
|
@ -1,13 +0,0 @@
|
|||
namespace MasstransferCommon.Model.Enum;
|
||||
|
||||
/// <summary>
|
||||
/// 防止注册表被恶意篡改,这里的注册许可类型需要做一些混淆
|
||||
/// </summary>
|
||||
public enum LicenseTypeEnum
|
||||
{
|
||||
// 临时许可
|
||||
Temporary = unchecked(int.MaxValue - 123456),
|
||||
|
||||
// 正式许可
|
||||
Formal = unchecked(int.MaxValue - 123457)
|
||||
}
|
|
@ -1,6 +0,0 @@
|
|||
namespace MasstransferCommon.Model.Enum;
|
||||
|
||||
public enum LineModeEnum
|
||||
{
|
||||
Strobe
|
||||
}
|
|
@ -1,8 +0,0 @@
|
|||
namespace MasstransferCommon.Model.Enum;
|
||||
|
||||
public enum LineSelectorEnum
|
||||
{
|
||||
Line0,
|
||||
Line1,
|
||||
Line2,
|
||||
}
|
|
@ -1,19 +0,0 @@
|
|||
namespace MasstransferCommon.Model.Enum;
|
||||
|
||||
/// <summary>
|
||||
/// 锁定状态
|
||||
/// </summary>
|
||||
public enum LockStateEnum
|
||||
{
|
||||
// 锁定状态
|
||||
LockedState = int.MaxValue / 3,
|
||||
|
||||
// 等待锁定状态
|
||||
WaitToLockedState = int.MaxValue / 4,
|
||||
|
||||
// 解锁状态
|
||||
UnLockedState = int.MaxValue / 5,
|
||||
|
||||
// 等待解锁状态
|
||||
WaitToUnLockedState = int.MaxValue / 6
|
||||
}
|
|
@ -1,34 +0,0 @@
|
|||
using System.ComponentModel;
|
||||
|
||||
namespace MasstransferCommon.Model.Enum;
|
||||
|
||||
/// <summary>
|
||||
/// 扫码枪接口类型
|
||||
/// </summary>
|
||||
public enum ScannerInterfaceEnum
|
||||
{
|
||||
/// <summary>
|
||||
/// 串口
|
||||
/// </summary>
|
||||
[Description("串口")] Serial,
|
||||
|
||||
/// <summary>
|
||||
/// TCP
|
||||
/// </summary>
|
||||
[Description("网口")] Tcp,
|
||||
|
||||
/// <summary>
|
||||
/// USB
|
||||
/// </summary>
|
||||
[Description("USB")] Usb,
|
||||
|
||||
/// <summary>
|
||||
/// 蓝牙
|
||||
/// </summary>
|
||||
[Description("蓝牙")] Bluetooth,
|
||||
|
||||
/// <summary>
|
||||
/// 无线
|
||||
/// </summary>
|
||||
[Description("无线")] Wireless
|
||||
}
|
|
@ -1,12 +0,0 @@
|
|||
using System.ComponentModel;
|
||||
|
||||
namespace MasstransferCommon.Model.Enum;
|
||||
|
||||
/// <summary>
|
||||
/// 基材类型
|
||||
/// </summary>
|
||||
public enum SubstrateTypeEnum
|
||||
{
|
||||
[Description("PCB")] PCB = 1,
|
||||
[Description("玻璃")] Glass = 2
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
namespace MasstransferCommon.Model.Enum;
|
||||
|
||||
public enum TlsProtocolsEnum
|
||||
{
|
||||
TLS_1_2,
|
||||
TLS_1_3
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
namespace MasstransferCommon.Model.Enum;
|
||||
|
||||
public enum TriggerActivationEnum
|
||||
{
|
||||
RisingEdge,
|
||||
FallingEdge,
|
||||
LevelHigh,
|
||||
LevelLow,
|
||||
AnyEdge
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
namespace MasstransferCommon.Model.Enum;
|
||||
|
||||
public enum TriggerModeEnum
|
||||
{
|
||||
Off,
|
||||
On
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
namespace MasstransferCommon.Model.Enum;
|
||||
|
||||
public enum TriggerSourceEnum
|
||||
{
|
||||
Software,
|
||||
Line0,
|
||||
Line2,
|
||||
Counter0,
|
||||
Anyway
|
||||
}
|
|
@ -1,42 +0,0 @@
|
|||
using Serilog;
|
||||
|
||||
namespace MasstransferCommon.Scheduler;
|
||||
|
||||
/// <summary>
|
||||
/// 延时定时任务
|
||||
/// </summary>
|
||||
public class DelayScheduler
|
||||
{
|
||||
/// <summary>
|
||||
/// 设定延时任务
|
||||
/// </summary>
|
||||
/// <param name="action"></param>
|
||||
/// <param name="delay"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <exception cref="ArgumentNullException"></exception>
|
||||
/// <exception cref="ArgumentOutOfRangeException"></exception>
|
||||
public static async void Delay(Action action, TimeSpan delay, CancellationToken cancellationToken = default)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (action == null) throw new ArgumentNullException(nameof(action));
|
||||
if (delay.TotalMilliseconds < 0)
|
||||
throw new ArgumentOutOfRangeException(nameof(delay), "延时时间不能为负数");
|
||||
|
||||
await Task.Delay(delay, cancellationToken);
|
||||
if (cancellationToken.IsCancellationRequested)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
action();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
if (e is not TaskCanceledException)
|
||||
{
|
||||
Log.Error(e, "延时任务执行失败");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,39 +0,0 @@
|
|||
namespace MasstransferCommon.Scheduler;
|
||||
|
||||
/// <summary>
|
||||
/// 通过定时执行某个委托方法
|
||||
/// </summary>
|
||||
public class ExecuteTask : ITask
|
||||
{
|
||||
private readonly Timer _timer;
|
||||
|
||||
public ExecuteTask(string name, Action action, int interval = 100)
|
||||
{
|
||||
Name = name;
|
||||
Interval = interval;
|
||||
Action = action;
|
||||
_timer = new Timer(_ => { Run(); }, null, TimeSpan.Zero, TimeSpan.FromMilliseconds(Interval));
|
||||
}
|
||||
|
||||
public int Interval { get; set; }
|
||||
|
||||
public string Name { get; set; }
|
||||
|
||||
public Action Action { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 移除任务进行定时任务释放
|
||||
/// </summary>
|
||||
public void Dispose()
|
||||
{
|
||||
_timer.Dispose();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 定义一个虚方法, 子类可以重写该方法实现具体的轮询逻辑
|
||||
/// </summary>
|
||||
public void Run()
|
||||
{
|
||||
Action.Invoke();
|
||||
}
|
||||
}
|
|
@ -1,6 +0,0 @@
|
|||
namespace MasstransferCommon.Scheduler;
|
||||
|
||||
public interface ITask : IDisposable
|
||||
{
|
||||
public void Run();
|
||||
}
|
|
@ -1,44 +0,0 @@
|
|||
using System.Collections.Concurrent;
|
||||
using Serilog;
|
||||
|
||||
namespace MasstransferCommon.Scheduler;
|
||||
|
||||
public class JobScheduler
|
||||
{
|
||||
private static readonly ConcurrentDictionary<string, ExecuteTask> Tasks = new();
|
||||
|
||||
/// <summary>
|
||||
/// 添加调度任务
|
||||
/// </summary>
|
||||
/// <param name="name"></param>
|
||||
/// <param name="action"></param>
|
||||
/// <param name="interval"></param>
|
||||
/// <param name="delay"></param>
|
||||
public static void AddTask(string name, Action action, int interval = 100, int delay = 0)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (Tasks.ContainsKey(name)) return;
|
||||
|
||||
if (delay > 0)
|
||||
{
|
||||
Thread.Sleep(delay);
|
||||
}
|
||||
|
||||
Tasks[name] = new ExecuteTask(name, action, interval);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Log.Error(e, $"添加 {name} 任务失败");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 移除任务
|
||||
/// </summary>
|
||||
/// <param name="name"></param>
|
||||
public static void RemoveTask(string name)
|
||||
{
|
||||
if (Tasks.TryRemove(name, out var task)) task.Dispose();
|
||||
}
|
||||
}
|
|
@ -1,57 +0,0 @@
|
|||
using System.Reflection;
|
||||
using MasstransferCommon.Annotation;
|
||||
using MasstransferCommon.Utils;
|
||||
using Quartz;
|
||||
using Quartz.Impl;
|
||||
|
||||
namespace MasstransferCommon.Scheduler;
|
||||
|
||||
/// <summary>
|
||||
/// 定时任务器
|
||||
/// </summary>
|
||||
public class QuartzScheduler
|
||||
{
|
||||
private readonly IScheduler _scheduler;
|
||||
|
||||
private QuartzScheduler()
|
||||
{
|
||||
var schedulerFactory = new StdSchedulerFactory();
|
||||
_scheduler = schedulerFactory.GetScheduler().Result;
|
||||
}
|
||||
|
||||
public static QuartzScheduler Instance { get; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// 启动定时任务器
|
||||
/// </summary>
|
||||
public async Task StartAsync()
|
||||
{
|
||||
await _scheduler.Start();
|
||||
|
||||
// 查找所有带有 ScheduledJobAttribute 的类
|
||||
var jobs = AssemblyUtil.GetTypesByAttribute(typeof(ScheduledJobAttribute));
|
||||
|
||||
foreach (var job in jobs)
|
||||
{
|
||||
var attribute = job.GetCustomAttribute<ScheduledJobAttribute>();
|
||||
var jobDetail = JobBuilder.Create(job)
|
||||
.WithIdentity(job.Name)
|
||||
.Build();
|
||||
|
||||
var trigger = TriggerBuilder.Create()
|
||||
.WithIdentity($"{job.Name}.trigger")
|
||||
.WithCronSchedule(attribute!.Cron)
|
||||
.Build();
|
||||
|
||||
await _scheduler.ScheduleJob(jobDetail, trigger);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 停止定时器
|
||||
/// </summary>
|
||||
public async Task StopAsync()
|
||||
{
|
||||
await _scheduler.Shutdown();
|
||||
}
|
||||
}
|
|
@ -1,9 +0,0 @@
|
|||
namespace MasstransferCommon.Atrributes;
|
||||
|
||||
public interface Instant
|
||||
{
|
||||
/// <summary>
|
||||
/// 初始化对象后进行回调
|
||||
/// </summary>
|
||||
void Initialized();
|
||||
}
|
|
@ -1,49 +0,0 @@
|
|||
using System.Reflection;
|
||||
|
||||
namespace MasstransferCommon.Utils;
|
||||
|
||||
/// <summary>
|
||||
/// 包含程序集相关的工具类
|
||||
/// </summary>
|
||||
public class AssemblyUtil
|
||||
{
|
||||
private const string Token = "masstransfer";
|
||||
|
||||
/// <summary>
|
||||
/// 根据注解来获取类信息
|
||||
/// </summary>
|
||||
/// <param name="attributeType"></param>
|
||||
/// <returns></returns>
|
||||
public static List<Type> GetTypesByAttribute(Type attributeType)
|
||||
{
|
||||
return GetAssemblies()
|
||||
.SelectMany(a => a.GetTypes()
|
||||
.Where(t => t.GetCustomAttributes(attributeType, true).Length > 0))
|
||||
.ToList();
|
||||
}
|
||||
|
||||
private static IEnumerable<Assembly> GetAssemblies()
|
||||
{
|
||||
var assemblies = new List<Assembly>();
|
||||
foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
|
||||
{
|
||||
var name = assembly.GetName().Name;
|
||||
if (name != null && name.ToLower().Contains(Token)) GetReferenceAssemblies(assembly, assemblies);
|
||||
}
|
||||
|
||||
return assemblies;
|
||||
}
|
||||
|
||||
private static void GetReferenceAssemblies(Assembly assembly, ICollection<Assembly> assemblies)
|
||||
{
|
||||
foreach (var assemblyName in assembly.GetReferencedAssemblies())
|
||||
{
|
||||
var name = assemblyName.Name;
|
||||
if (name == null || !name.ToLower().Contains(Token)) continue;
|
||||
var ass = Assembly.Load(assemblyName);
|
||||
if (assemblies.Contains(ass)) continue;
|
||||
assemblies.Add(ass);
|
||||
GetReferenceAssemblies(ass, assemblies);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,39 +0,0 @@
|
|||
namespace MasstransferCommon.Utils;
|
||||
|
||||
/// <summary>
|
||||
/// bean 工具类
|
||||
/// </summary>
|
||||
public class BeanUtil
|
||||
{
|
||||
/// <summary>
|
||||
/// 实现Bean的属性复制
|
||||
/// </summary>
|
||||
/// <param name="source"></param>
|
||||
/// <param name="target"></param>
|
||||
public static void CopyProperties(object source, object target)
|
||||
{
|
||||
var sourceProperties = source.GetType().GetProperties();
|
||||
var targetProperties = target.GetType().GetProperties();
|
||||
|
||||
foreach (var sourceProperty in sourceProperties)
|
||||
{
|
||||
var targetProperty = Array.Find(targetProperties, p => p.Name == sourceProperty.Name &&
|
||||
p.PropertyType == sourceProperty.PropertyType);
|
||||
|
||||
if (targetProperty != null && targetProperty.CanWrite)
|
||||
targetProperty.SetValue(target, sourceProperty.GetValue(source));
|
||||
}
|
||||
}
|
||||
|
||||
public static T CopyProperties<T>(object source)
|
||||
{
|
||||
var instance = Activator.CreateInstance<T>();
|
||||
CopyProperties(source, instance);
|
||||
return instance;
|
||||
}
|
||||
|
||||
public static List<T> CopyProperties<T>(IEnumerable<object> source)
|
||||
{
|
||||
return source.Select(CopyProperties<T>).ToList();
|
||||
}
|
||||
}
|
|
@ -1,29 +0,0 @@
|
|||
using System.Security.Cryptography;
|
||||
using System.Security.Cryptography.X509Certificates;
|
||||
|
||||
namespace MasstransferCommon.Utils;
|
||||
|
||||
public class CertUtil
|
||||
{
|
||||
public static void ConvertCertToPfx(string certPath, string keyPath, string pfxPath, string password)
|
||||
{
|
||||
// 加载证书文件(.cer 或 .crt)
|
||||
var cert = new X509Certificate2(certPath);
|
||||
|
||||
// 加载私钥文件(.key)
|
||||
var keyContent = File.ReadAllText(keyPath);
|
||||
|
||||
// 从PEM格式的私钥中提取RSA密钥
|
||||
var privateKey = RSA.Create();
|
||||
privateKey.ImportFromPem(keyContent.ToCharArray());
|
||||
|
||||
// 创建带有私钥的X509Certificate2对象
|
||||
var certWithPrivateKey = cert.CopyWithPrivateKey(privateKey);
|
||||
|
||||
// 导出为PFX格式
|
||||
var pfxData = certWithPrivateKey.Export(X509ContentType.Pfx, password);
|
||||
|
||||
// 保存PFX文件
|
||||
File.WriteAllBytes(pfxPath, pfxData);
|
||||
}
|
||||
}
|
|
@ -1,102 +0,0 @@
|
|||
using System.Management;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using MasstransferCommon.Utils;
|
||||
|
||||
namespace MasstransferSecurity.Utils;
|
||||
|
||||
/// <summary>
|
||||
/// 设备信息工具类方法
|
||||
/// </summary>
|
||||
public sealed class DeviceInfoUtil
|
||||
{
|
||||
private const string KeyPath = @"Software\Masstransfer\Device";
|
||||
|
||||
public static string GenerateUniqueID()
|
||||
{
|
||||
var cpuId = GetCpuId();
|
||||
var motherboardId = GetMotherboardId();
|
||||
var diskDriveId = GetDiskDriveId();
|
||||
var macAddress = GetMacAddress();
|
||||
|
||||
var deviceId = $"{cpuId}-{motherboardId}-{diskDriveId}-{macAddress}";
|
||||
return ComputeSha256Hash(deviceId);
|
||||
}
|
||||
|
||||
private static string GetCpuId()
|
||||
{
|
||||
var cpuId = string.Empty;
|
||||
var searcher = new ManagementObjectSearcher("SELECT ProcessorId FROM Win32_Processor");
|
||||
foreach (var item in searcher.Get())
|
||||
{
|
||||
cpuId = item["ProcessorId"].ToString();
|
||||
break;
|
||||
}
|
||||
|
||||
return cpuId;
|
||||
}
|
||||
|
||||
private static string GetMotherboardId()
|
||||
{
|
||||
var motherboardId = string.Empty;
|
||||
var searcher = new ManagementObjectSearcher("SELECT SerialNumber FROM Win32_BaseBoard");
|
||||
foreach (var item in searcher.Get())
|
||||
{
|
||||
motherboardId = item["SerialNumber"].ToString();
|
||||
break;
|
||||
}
|
||||
|
||||
return motherboardId;
|
||||
}
|
||||
|
||||
private static string GetDiskDriveId()
|
||||
{
|
||||
string diskDriveId = string.Empty;
|
||||
var searcher = new ManagementObjectSearcher("SELECT SerialNumber FROM Win32_DiskDrive");
|
||||
foreach (var item in searcher.Get())
|
||||
{
|
||||
diskDriveId = item["SerialNumber"].ToString();
|
||||
break;
|
||||
}
|
||||
|
||||
return diskDriveId;
|
||||
}
|
||||
|
||||
private static string GetMacAddress()
|
||||
{
|
||||
string macAddress = string.Empty;
|
||||
var searcher = new ManagementObjectSearcher(
|
||||
"SELECT MACAddress FROM Win32_NetworkAdapter WHERE MACAddress IS NOT NULL AND NOT (MACAddress LIKE '')");
|
||||
foreach (var item in searcher.Get())
|
||||
{
|
||||
macAddress = item["MACAddress"].ToString();
|
||||
break;
|
||||
}
|
||||
|
||||
return macAddress.Replace(":", string.Empty);
|
||||
}
|
||||
|
||||
private static string ComputeSha256Hash(string rawData)
|
||||
{
|
||||
using SHA256 sha256Hash = SHA256.Create();
|
||||
|
||||
var bytes = sha256Hash.ComputeHash(Encoding.UTF8.GetBytes(rawData));
|
||||
|
||||
var builder = new StringBuilder();
|
||||
foreach (var t in bytes)
|
||||
{
|
||||
builder.Append(t.ToString("x2"));
|
||||
}
|
||||
|
||||
return builder.ToString();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取设备的序列号
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public static string GetDeviceSN()
|
||||
{
|
||||
return (string)RegistryHelper.ReadValue(KeyPath, "SerialNumber");
|
||||
}
|
||||
}
|
|
@ -1,86 +0,0 @@
|
|||
using MasstransferCommon.Convert;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace MasstransferCommon.Utils;
|
||||
|
||||
public class JsonUtil
|
||||
{
|
||||
public static string ToJson(object obj)
|
||||
{
|
||||
try
|
||||
{
|
||||
var settings = new JsonSerializerSettings
|
||||
{
|
||||
NullValueHandling = NullValueHandling.Ignore,
|
||||
};
|
||||
settings.Converters.Add(new DatetimeConverter());
|
||||
|
||||
return JsonConvert.SerializeObject(obj, settings);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new ArgumentException($" 无效的json 对象 {obj} ");
|
||||
}
|
||||
}
|
||||
|
||||
public static Dictionary<string, object>? ToDictionary(string json)
|
||||
{
|
||||
try
|
||||
{
|
||||
return JsonConvert.DeserializeObject<Dictionary<string, object>>(json);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new ArgumentException($" 无效的json 对象 {json} ");
|
||||
}
|
||||
}
|
||||
|
||||
public static T? FromJson<T>(string json)
|
||||
{
|
||||
try
|
||||
{
|
||||
var settings = new JsonSerializerSettings
|
||||
{
|
||||
NullValueHandling = NullValueHandling.Ignore,
|
||||
};
|
||||
settings.Converters.Add(new DatetimeConverter());
|
||||
|
||||
return JsonConvert.DeserializeObject<T>(json, settings);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Console.WriteLine(e);
|
||||
throw new ArgumentException($" 无效的json 字符串 {json} ");
|
||||
}
|
||||
}
|
||||
|
||||
public static object? FromJson(Type type, string json)
|
||||
{
|
||||
try
|
||||
{
|
||||
var settings = new JsonSerializerSettings
|
||||
{
|
||||
NullValueHandling = NullValueHandling.Ignore,
|
||||
};
|
||||
settings.Converters.Add(new DatetimeConverter());
|
||||
|
||||
return JsonConvert.DeserializeObject(json, type, settings);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new ArgumentException($" 无效的json 字符串 {json} ");
|
||||
}
|
||||
}
|
||||
|
||||
public static T? FromJsonOrDefault<T>(string json)
|
||||
{
|
||||
try
|
||||
{
|
||||
return JsonConvert.DeserializeObject<T>(json);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
return default;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,44 +0,0 @@
|
|||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
|
||||
namespace MasstransferCommon.Utils;
|
||||
|
||||
/// <summary>
|
||||
/// MD5 加密工具类
|
||||
/// </summary>
|
||||
public class Md5Util
|
||||
{
|
||||
public static string Md5(string input)
|
||||
{
|
||||
// 创建一个MD5对象
|
||||
// 将输入字符串转换为字节数组
|
||||
var inputBytes = Encoding.UTF8.GetBytes(input);
|
||||
// 计算输入字节数组的哈希值
|
||||
var bytes = MD5.HashData(inputBytes);
|
||||
// 将字节数组转换为字符串
|
||||
var hashString = new StringBuilder();
|
||||
foreach (var b in bytes) hashString.Append($"{b:x2}");
|
||||
|
||||
return hashString.ToString();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 计算压缩包md5
|
||||
/// </summary>
|
||||
/// <param name="filePath"></param>
|
||||
/// <returns></returns>
|
||||
public static string Md5ForZipFile(string filePath)
|
||||
{
|
||||
using (var md5 = MD5.Create())
|
||||
{
|
||||
using (var stream = File.OpenRead(filePath))
|
||||
{
|
||||
// 计算文件流的哈希值
|
||||
var hash = md5.ComputeHash(stream);
|
||||
// 将哈希值转换为字符串格式
|
||||
var hashString = BitConverter.ToString(hash).Replace("-", string.Empty).ToLowerInvariant();
|
||||
return hashString;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
namespace MasstransferCommon.Utils;
|
||||
|
||||
using Microsoft.Win32;
|
||||
|
||||
/// <summary>
|
||||
/// 注册表工具类
|
||||
/// </summary>
|
||||
public static class RegistryHelper
|
||||
{
|
||||
public static void WriteValue(string keyPath, string valueName, object value, RegistryValueKind valueKind)
|
||||
{
|
||||
using var key = Registry.CurrentUser.CreateSubKey(keyPath);
|
||||
key.SetValue(valueName, value, valueKind);
|
||||
}
|
||||
|
||||
public static object? ReadValue(string keyPath, string valueName)
|
||||
{
|
||||
using var key = Registry.CurrentUser.OpenSubKey(keyPath);
|
||||
return key?.GetValue(valueName);
|
||||
}
|
||||
|
||||
public static void DeleteValue(string keyPath, string valueName)
|
||||
{
|
||||
using var key = Registry.CurrentUser.OpenSubKey(keyPath, writable: true);
|
||||
key?.DeleteValue(valueName, false);
|
||||
}
|
||||
|
||||
public static void DeleteKey(string keyPath)
|
||||
{
|
||||
Registry.CurrentUser.DeleteSubKeyTree(keyPath, false);
|
||||
}
|
||||
}
|
|
@ -1,103 +0,0 @@
|
|||
namespace MasstransferCommon.Utils;
|
||||
|
||||
using System;
|
||||
|
||||
public class SnowflakeId
|
||||
{
|
||||
private static readonly DateTime Epoch = new DateTime(2020, 1, 1, 0, 0, 0, DateTimeKind.Utc);
|
||||
private const int WorkerIdBits = 5;
|
||||
private const int DatacenterIdBits = 5;
|
||||
private const int SequenceBits = 12;
|
||||
|
||||
private const long MaxWorkerId = -1L ^ (-1L << WorkerIdBits);
|
||||
private const long MaxDatacenterId = -1L ^ (-1L << DatacenterIdBits);
|
||||
|
||||
private const long WorkerIdShift = SequenceBits;
|
||||
private const long DatacenterIdShift = SequenceBits + WorkerIdBits;
|
||||
private const long TimestampLeftShift = SequenceBits + WorkerIdBits + DatacenterIdBits;
|
||||
private const long SequenceMask = -1L ^ (-1L << SequenceBits);
|
||||
|
||||
private readonly object _lock = new object();
|
||||
private long _lastTimestamp = -1L;
|
||||
private long _sequence = 0L;
|
||||
|
||||
private static readonly SnowflakeId Instance = new SnowflakeId(0, 0);
|
||||
|
||||
public long WorkerId { get; }
|
||||
public long DatacenterId { get; }
|
||||
|
||||
public SnowflakeId(long workerId, long datacenterId)
|
||||
{
|
||||
if (workerId > MaxWorkerId || workerId < 0)
|
||||
{
|
||||
throw new ArgumentException($"workerId must be between 0 and {MaxWorkerId}");
|
||||
}
|
||||
|
||||
if (datacenterId > MaxDatacenterId || datacenterId < 0)
|
||||
{
|
||||
throw new ArgumentException($"datacenterId must be between 0 and {MaxDatacenterId}");
|
||||
}
|
||||
|
||||
WorkerId = workerId;
|
||||
DatacenterId = datacenterId;
|
||||
}
|
||||
|
||||
public static string GetNextId()
|
||||
{
|
||||
return Instance.NextId().ToString();
|
||||
}
|
||||
|
||||
private long NextId()
|
||||
{
|
||||
lock (_lock)
|
||||
{
|
||||
var timestamp = TimeGen();
|
||||
|
||||
if (timestamp < _lastTimestamp)
|
||||
{
|
||||
throw new InvalidOperationException("Clock moved backwards. Refusing to generate id");
|
||||
}
|
||||
|
||||
if (_lastTimestamp == timestamp)
|
||||
{
|
||||
_sequence = (_sequence + 1) & SequenceMask;
|
||||
if (_sequence == 0)
|
||||
{
|
||||
timestamp = TilNextMillis(_lastTimestamp);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
_sequence = 0L;
|
||||
}
|
||||
|
||||
_lastTimestamp = timestamp;
|
||||
|
||||
return ((timestamp - EpochTicks()) << (int)TimestampLeftShift) |
|
||||
(DatacenterId << (int)DatacenterIdShift) |
|
||||
(WorkerId << (int)WorkerIdShift) |
|
||||
_sequence;
|
||||
}
|
||||
}
|
||||
|
||||
private long TilNextMillis(long lastTimestamp)
|
||||
{
|
||||
var timestamp = TimeGen();
|
||||
while (timestamp <= lastTimestamp)
|
||||
{
|
||||
timestamp = TimeGen();
|
||||
}
|
||||
|
||||
return timestamp;
|
||||
}
|
||||
|
||||
private long TimeGen()
|
||||
{
|
||||
return (long)(DateTime.UtcNow - Epoch).TotalMilliseconds;
|
||||
}
|
||||
|
||||
private static long EpochTicks()
|
||||
{
|
||||
return (long)(Epoch - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds;
|
||||
}
|
||||
}
|
|
@ -1,73 +0,0 @@
|
|||
using System.Text;
|
||||
|
||||
namespace MasstransferCommon.Utils;
|
||||
|
||||
public class TimeUtil
|
||||
{
|
||||
public static void Sleep(int milliseconds)
|
||||
{
|
||||
Thread.Sleep(milliseconds);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取当前的时间戳
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public static long Now()
|
||||
{
|
||||
return new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds();
|
||||
}
|
||||
|
||||
public static DateTime ConvertTime(long time)
|
||||
{
|
||||
return DateTimeOffset.FromUnixTimeMilliseconds(time).DateTime;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 格式化时间
|
||||
/// </summary>
|
||||
/// <param name="time"></param>
|
||||
/// <param name="format"></param>
|
||||
/// <returns></returns>
|
||||
public static string FormatTime(long time, string format = "yyyy-MM-dd HH:mm:ss")
|
||||
{
|
||||
var dateTime = DateTimeOffset.FromUnixTimeMilliseconds(time).DateTime;
|
||||
return dateTime.ToString(format);
|
||||
}
|
||||
|
||||
|
||||
public static string FormatTime(DateTime dateTime, string format = "yyyy-MM-dd HH:mm:ss")
|
||||
{
|
||||
return dateTime.ToString(format);
|
||||
}
|
||||
|
||||
public static string ToTimeSpan(long time)
|
||||
{
|
||||
// 使用TimeSpan.FromMilliseconds来创建TimeSpan对象
|
||||
var timeSpan = TimeSpan.FromMilliseconds(time);
|
||||
|
||||
// 获取小时、分钟和秒
|
||||
var hours = timeSpan.Hours;
|
||||
var minutes = timeSpan.Minutes;
|
||||
var seconds = timeSpan.Seconds;
|
||||
|
||||
var sb = new StringBuilder();
|
||||
if (hours > 0)
|
||||
{
|
||||
sb.Append(hours).Append("小时");
|
||||
}
|
||||
|
||||
if (minutes > 0)
|
||||
{
|
||||
sb.Append(minutes).Append('分');
|
||||
}
|
||||
|
||||
if (seconds > 0)
|
||||
{
|
||||
sb.Append(seconds).Append('秒');
|
||||
}
|
||||
|
||||
return sb.ToString();
|
||||
}
|
||||
}
|
|
@ -1,4 +0,0 @@
|
|||
// <autogenerated />
|
||||
using System;
|
||||
using System.Reflection;
|
||||
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v7.0", FrameworkDisplayName = ".NET 7.0")]
|
|
@ -1,22 +0,0 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using System.Reflection;
|
||||
|
||||
[assembly: System.Reflection.AssemblyCompanyAttribute("MasstransferCommon")]
|
||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+877cf4ba7ae74758a89a91f7ed677f7e83789ca8")]
|
||||
[assembly: System.Reflection.AssemblyProductAttribute("MasstransferCommon")]
|
||||
[assembly: System.Reflection.AssemblyTitleAttribute("MasstransferCommon")]
|
||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||
|
||||
// 由 MSBuild WriteCodeFragment 类生成。
|
||||
|
|
@ -1 +0,0 @@
|
|||
24bba642a13e6757b4f3f31fb043b50bb46d2cbfc99854439c2393c381e11be8
|
|
@ -1,13 +0,0 @@
|
|||
is_global = true
|
||||
build_property.TargetFramework = net7.0
|
||||
build_property.TargetPlatformMinVersion =
|
||||
build_property.UsingMicrosoftNETSdkWeb =
|
||||
build_property.ProjectTypeGuids =
|
||||
build_property.InvariantGlobalization =
|
||||
build_property.PlatformNeutralAssembly =
|
||||
build_property.EnforceExtendedAnalyzerRules =
|
||||
build_property._SupportedPlatformList = Linux,macOS,Windows
|
||||
build_property.RootNamespace = MasstransferCommon
|
||||
build_property.ProjectDir = C:\Users\wangkaiyi\RiderProjects\MasstransferExporter\MasstransferCommon\
|
||||
build_property.EnableComHosting =
|
||||
build_property.EnableGeneratedComInterfaceComImportInterop =
|
|
@ -1,8 +0,0 @@
|
|||
// <auto-generated/>
|
||||
global using global::System;
|
||||
global using global::System.Collections.Generic;
|
||||
global using global::System.IO;
|
||||
global using global::System.Linq;
|
||||
global using global::System.Net.Http;
|
||||
global using global::System.Threading;
|
||||
global using global::System.Threading.Tasks;
|
Binary file not shown.
Binary file not shown.
|
@ -1,97 +0,0 @@
|
|||
{
|
||||
"format": 1,
|
||||
"restore": {
|
||||
"C:\\Users\\wangkaiyi\\RiderProjects\\MasstransferExporter\\MasstransferCommon\\MasstransferCommon.csproj": {}
|
||||
},
|
||||
"projects": {
|
||||
"C:\\Users\\wangkaiyi\\RiderProjects\\MasstransferExporter\\MasstransferCommon\\MasstransferCommon.csproj": {
|
||||
"version": "1.0.0",
|
||||
"restore": {
|
||||
"projectUniqueName": "C:\\Users\\wangkaiyi\\RiderProjects\\MasstransferExporter\\MasstransferCommon\\MasstransferCommon.csproj",
|
||||
"projectName": "MasstransferCommon",
|
||||
"projectPath": "C:\\Users\\wangkaiyi\\RiderProjects\\MasstransferExporter\\MasstransferCommon\\MasstransferCommon.csproj",
|
||||
"packagesPath": "C:\\Users\\wangkaiyi\\.nuget\\packages\\",
|
||||
"outputPath": "C:\\Users\\wangkaiyi\\RiderProjects\\MasstransferExporter\\MasstransferCommon\\obj\\",
|
||||
"projectStyle": "PackageReference",
|
||||
"configFilePaths": [
|
||||
"C:\\Users\\wangkaiyi\\AppData\\Roaming\\NuGet\\NuGet.Config",
|
||||
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
|
||||
],
|
||||
"originalTargetFrameworks": [
|
||||
"net7.0"
|
||||
],
|
||||
"sources": {
|
||||
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
|
||||
"https://api.nuget.org/v3/index.json": {}
|
||||
},
|
||||
"frameworks": {
|
||||
"net7.0": {
|
||||
"targetAlias": "net7.0",
|
||||
"projectReferences": {}
|
||||
}
|
||||
},
|
||||
"warningProperties": {
|
||||
"warnAsError": [
|
||||
"NU1605"
|
||||
]
|
||||
}
|
||||
},
|
||||
"frameworks": {
|
||||
"net7.0": {
|
||||
"targetAlias": "net7.0",
|
||||
"dependencies": {
|
||||
"BouncyCastle.NetCore": {
|
||||
"target": "Package",
|
||||
"version": "[2.2.1, )"
|
||||
},
|
||||
"Microsoft.EntityFrameworkCore.Abstractions": {
|
||||
"target": "Package",
|
||||
"version": "[7.0.15, )"
|
||||
},
|
||||
"Newtonsoft.Json": {
|
||||
"target": "Package",
|
||||
"version": "[13.0.3, )"
|
||||
},
|
||||
"Quartz": {
|
||||
"target": "Package",
|
||||
"version": "[3.10.0, )"
|
||||
},
|
||||
"Serilog": {
|
||||
"target": "Package",
|
||||
"version": "[4.0.0, )"
|
||||
},
|
||||
"Serilog.Sinks.File": {
|
||||
"target": "Package",
|
||||
"version": "[5.0.1-dev-00972, )"
|
||||
},
|
||||
"System.Management": {
|
||||
"target": "Package",
|
||||
"version": "[8.0.0, )"
|
||||
},
|
||||
"sqlite-net-sqlcipher": {
|
||||
"target": "Package",
|
||||
"version": "[1.9.172, )"
|
||||
}
|
||||
},
|
||||
"imports": [
|
||||
"net461",
|
||||
"net462",
|
||||
"net47",
|
||||
"net471",
|
||||
"net472",
|
||||
"net48",
|
||||
"net481"
|
||||
],
|
||||
"assetTargetFallback": true,
|
||||
"warn": true,
|
||||
"frameworkReferences": {
|
||||
"Microsoft.NETCore.App": {
|
||||
"privateAssets": "all"
|
||||
}
|
||||
},
|
||||
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\8.0.203\\RuntimeIdentifierGraph.json"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,15 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
|
||||
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
|
||||
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
|
||||
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
|
||||
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\wangkaiyi\.nuget\packages\</NuGetPackageFolders>
|
||||
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
|
||||
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.9.1</NuGetToolVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<SourceRoot Include="C:\Users\wangkaiyi\.nuget\packages\" />
|
||||
</ItemGroup>
|
||||
</Project>
|
|
@ -1,6 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<Import Project="$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlcipher\2.1.2\buildTransitive\net7.0\SQLitePCLRaw.lib.e_sqlcipher.targets" Condition="Exists('$(NuGetPackageRoot)sqlitepclraw.lib.e_sqlcipher\2.1.2\buildTransitive\net7.0\SQLitePCLRaw.lib.e_sqlcipher.targets')" />
|
||||
</ImportGroup>
|
||||
</Project>
|
File diff suppressed because it is too large
Load Diff
|
@ -1,31 +0,0 @@
|
|||
{
|
||||
"version": 2,
|
||||
"dgSpecHash": "unISIat3Z07bxHbfaQ5fFQ2qWX+GR/WwRL4AsE9kzvUrz9UOHareaVBe1wl0TMonTmxrFaWype+ijI+XFQaqOg==",
|
||||
"success": true,
|
||||
"projectFilePath": "C:\\Users\\wangkaiyi\\RiderProjects\\MasstransferExporter\\MasstransferCommon\\MasstransferCommon.csproj",
|
||||
"expectedPackageFiles": [
|
||||
"C:\\Users\\wangkaiyi\\.nuget\\packages\\bouncycastle.netcore\\2.2.1\\bouncycastle.netcore.2.2.1.nupkg.sha512",
|
||||
"C:\\Users\\wangkaiyi\\.nuget\\packages\\microsoft.entityframeworkcore.abstractions\\7.0.15\\microsoft.entityframeworkcore.abstractions.7.0.15.nupkg.sha512",
|
||||
"C:\\Users\\wangkaiyi\\.nuget\\packages\\microsoft.extensions.logging.abstractions\\2.1.1\\microsoft.extensions.logging.abstractions.2.1.1.nupkg.sha512",
|
||||
"C:\\Users\\wangkaiyi\\.nuget\\packages\\microsoft.win32.systemevents\\6.0.0\\microsoft.win32.systemevents.6.0.0.nupkg.sha512",
|
||||
"C:\\Users\\wangkaiyi\\.nuget\\packages\\newtonsoft.json\\13.0.3\\newtonsoft.json.13.0.3.nupkg.sha512",
|
||||
"C:\\Users\\wangkaiyi\\.nuget\\packages\\quartz\\3.10.0\\quartz.3.10.0.nupkg.sha512",
|
||||
"C:\\Users\\wangkaiyi\\.nuget\\packages\\serilog\\4.0.0\\serilog.4.0.0.nupkg.sha512",
|
||||
"C:\\Users\\wangkaiyi\\.nuget\\packages\\serilog.sinks.file\\5.0.1-dev-00972\\serilog.sinks.file.5.0.1-dev-00972.nupkg.sha512",
|
||||
"C:\\Users\\wangkaiyi\\.nuget\\packages\\sqlite-net-sqlcipher\\1.9.172\\sqlite-net-sqlcipher.1.9.172.nupkg.sha512",
|
||||
"C:\\Users\\wangkaiyi\\.nuget\\packages\\sqlitepclraw.bundle_e_sqlcipher\\2.1.2\\sqlitepclraw.bundle_e_sqlcipher.2.1.2.nupkg.sha512",
|
||||
"C:\\Users\\wangkaiyi\\.nuget\\packages\\sqlitepclraw.core\\2.1.2\\sqlitepclraw.core.2.1.2.nupkg.sha512",
|
||||
"C:\\Users\\wangkaiyi\\.nuget\\packages\\sqlitepclraw.lib.e_sqlcipher\\2.1.2\\sqlitepclraw.lib.e_sqlcipher.2.1.2.nupkg.sha512",
|
||||
"C:\\Users\\wangkaiyi\\.nuget\\packages\\sqlitepclraw.provider.e_sqlcipher\\2.1.2\\sqlitepclraw.provider.e_sqlcipher.2.1.2.nupkg.sha512",
|
||||
"C:\\Users\\wangkaiyi\\.nuget\\packages\\system.codedom\\8.0.0\\system.codedom.8.0.0.nupkg.sha512",
|
||||
"C:\\Users\\wangkaiyi\\.nuget\\packages\\system.configuration.configurationmanager\\6.0.1\\system.configuration.configurationmanager.6.0.1.nupkg.sha512",
|
||||
"C:\\Users\\wangkaiyi\\.nuget\\packages\\system.drawing.common\\6.0.0\\system.drawing.common.6.0.0.nupkg.sha512",
|
||||
"C:\\Users\\wangkaiyi\\.nuget\\packages\\system.management\\8.0.0\\system.management.8.0.0.nupkg.sha512",
|
||||
"C:\\Users\\wangkaiyi\\.nuget\\packages\\system.memory\\4.5.3\\system.memory.4.5.3.nupkg.sha512",
|
||||
"C:\\Users\\wangkaiyi\\.nuget\\packages\\system.security.accesscontrol\\6.0.0\\system.security.accesscontrol.6.0.0.nupkg.sha512",
|
||||
"C:\\Users\\wangkaiyi\\.nuget\\packages\\system.security.cryptography.protecteddata\\6.0.0\\system.security.cryptography.protecteddata.6.0.0.nupkg.sha512",
|
||||
"C:\\Users\\wangkaiyi\\.nuget\\packages\\system.security.permissions\\6.0.0\\system.security.permissions.6.0.0.nupkg.sha512",
|
||||
"C:\\Users\\wangkaiyi\\.nuget\\packages\\system.windows.extensions\\6.0.0\\system.windows.extensions.6.0.0.nupkg.sha512"
|
||||
],
|
||||
"logs": []
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
"restore":{"projectUniqueName":"C:\\Users\\wangkaiyi\\RiderProjects\\MasstransferExporter\\MasstransferCommon\\MasstransferCommon.csproj","projectName":"MasstransferCommon","projectPath":"C:\\Users\\wangkaiyi\\RiderProjects\\MasstransferExporter\\MasstransferCommon\\MasstransferCommon.csproj","outputPath":"C:\\Users\\wangkaiyi\\RiderProjects\\MasstransferExporter\\MasstransferCommon\\obj\\","projectStyle":"PackageReference","originalTargetFrameworks":["net7.0"],"sources":{"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\":{},"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net7.0":{"targetAlias":"net7.0","projectReferences":{}}},"warningProperties":{"warnAsError":["NU1605"]}}"frameworks":{"net7.0":{"targetAlias":"net7.0","dependencies":{"BouncyCastle.NetCore":{"target":"Package","version":"[2.2.1, )"},"Microsoft.EntityFrameworkCore.Abstractions":{"target":"Package","version":"[7.0.15, )"},"Newtonsoft.Json":{"target":"Package","version":"[13.0.3, )"},"Quartz":{"target":"Package","version":"[3.10.0, )"},"Serilog":{"target":"Package","version":"[4.0.0, )"},"Serilog.Sinks.File":{"target":"Package","version":"[5.0.1-dev-00972, )"},"System.Management":{"target":"Package","version":"[8.0.0, )"},"sqlite-net-sqlcipher":{"target":"Package","version":"[1.9.172, )"}},"imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"C:\\Program Files\\dotnet\\sdk\\8.0.203\\RuntimeIdentifierGraph.json"}}
|
|
@ -1 +0,0 @@
|
|||
17234348310820990
|
|
@ -1 +0,0 @@
|
|||
17234348310820990
|
Binary file not shown.
|
@ -1,138 +0,0 @@
|
|||
{
|
||||
"format": 1,
|
||||
"restore": {
|
||||
"C:\\workspace\\code_repos\\haiju\\MasstransferExporter\\MasstransferCommunicate\\MasstransferCommunicate.csproj": {}
|
||||
},
|
||||
"projects": {
|
||||
"C:\\workspace\\code_repos\\haiju\\MasstransferExporter\\MasstransferCommon\\MasstransferCommon.csproj": {
|
||||
"version": "1.0.0",
|
||||
"restore": {
|
||||
"projectUniqueName": "C:\\workspace\\code_repos\\haiju\\MasstransferExporter\\MasstransferCommon\\MasstransferCommon.csproj",
|
||||
"projectName": "MasstransferCommon",
|
||||
"projectPath": "C:\\workspace\\code_repos\\haiju\\MasstransferExporter\\MasstransferCommon\\MasstransferCommon.csproj",
|
||||
"packagesPath": "C:\\Users\\huangxianguo\\.nuget\\packages\\",
|
||||
"outputPath": "C:\\workspace\\code_repos\\haiju\\MasstransferExporter\\MasstransferCommon\\obj\\",
|
||||
"projectStyle": "PackageReference",
|
||||
"configFilePaths": [
|
||||
"C:\\Users\\huangxianguo\\AppData\\Roaming\\NuGet\\NuGet.Config"
|
||||
],
|
||||
"originalTargetFrameworks": [
|
||||
"net7.0"
|
||||
],
|
||||
"sources": {
|
||||
"https://api.nuget.org/v3/index.json": {}
|
||||
},
|
||||
"frameworks": {
|
||||
"net7.0": {
|
||||
"targetAlias": "net7.0",
|
||||
"projectReferences": {}
|
||||
}
|
||||
},
|
||||
"warningProperties": {
|
||||
"warnAsError": [
|
||||
"NU1605"
|
||||
]
|
||||
}
|
||||
},
|
||||
"frameworks": {
|
||||
"net7.0": {
|
||||
"targetAlias": "net7.0",
|
||||
"dependencies": {
|
||||
"Newtonsoft.Json": {
|
||||
"target": "Package",
|
||||
"version": "[13.0.3, )"
|
||||
},
|
||||
"System.Management": {
|
||||
"target": "Package",
|
||||
"version": "[8.0.0, )"
|
||||
}
|
||||
},
|
||||
"imports": [
|
||||
"net461",
|
||||
"net462",
|
||||
"net47",
|
||||
"net471",
|
||||
"net472",
|
||||
"net48",
|
||||
"net481"
|
||||
],
|
||||
"assetTargetFallback": true,
|
||||
"warn": true,
|
||||
"frameworkReferences": {
|
||||
"Microsoft.NETCore.App": {
|
||||
"privateAssets": "all"
|
||||
}
|
||||
},
|
||||
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\7.0.407\\RuntimeIdentifierGraph.json"
|
||||
}
|
||||
}
|
||||
},
|
||||
"C:\\workspace\\code_repos\\haiju\\MasstransferExporter\\MasstransferCommunicate\\MasstransferCommunicate.csproj": {
|
||||
"version": "1.0.0",
|
||||
"restore": {
|
||||
"projectUniqueName": "C:\\workspace\\code_repos\\haiju\\MasstransferExporter\\MasstransferCommunicate\\MasstransferCommunicate.csproj",
|
||||
"projectName": "MasstransferCommunicate",
|
||||
"projectPath": "C:\\workspace\\code_repos\\haiju\\MasstransferExporter\\MasstransferCommunicate\\MasstransferCommunicate.csproj",
|
||||
"packagesPath": "C:\\Users\\huangxianguo\\.nuget\\packages\\",
|
||||
"outputPath": "C:\\workspace\\code_repos\\haiju\\MasstransferExporter\\MasstransferCommunicate\\obj\\",
|
||||
"projectStyle": "PackageReference",
|
||||
"configFilePaths": [
|
||||
"C:\\Users\\huangxianguo\\AppData\\Roaming\\NuGet\\NuGet.Config"
|
||||
],
|
||||
"originalTargetFrameworks": [
|
||||
"net7.0"
|
||||
],
|
||||
"sources": {
|
||||
"https://api.nuget.org/v3/index.json": {}
|
||||
},
|
||||
"frameworks": {
|
||||
"net7.0": {
|
||||
"targetAlias": "net7.0",
|
||||
"projectReferences": {
|
||||
"C:\\workspace\\code_repos\\haiju\\MasstransferExporter\\MasstransferCommon\\MasstransferCommon.csproj": {
|
||||
"projectPath": "C:\\workspace\\code_repos\\haiju\\MasstransferExporter\\MasstransferCommon\\MasstransferCommon.csproj"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"warningProperties": {
|
||||
"warnAsError": [
|
||||
"NU1605"
|
||||
]
|
||||
}
|
||||
},
|
||||
"frameworks": {
|
||||
"net7.0": {
|
||||
"targetAlias": "net7.0",
|
||||
"dependencies": {
|
||||
"MQTTnet": {
|
||||
"target": "Package",
|
||||
"version": "[4.3.6.1152, )"
|
||||
},
|
||||
"Serilog": {
|
||||
"target": "Package",
|
||||
"version": "[4.0.0, )"
|
||||
}
|
||||
},
|
||||
"imports": [
|
||||
"net461",
|
||||
"net462",
|
||||
"net47",
|
||||
"net471",
|
||||
"net472",
|
||||
"net48",
|
||||
"net481"
|
||||
],
|
||||
"assetTargetFallback": true,
|
||||
"warn": true,
|
||||
"frameworkReferences": {
|
||||
"Microsoft.NETCore.App": {
|
||||
"privateAssets": "all"
|
||||
}
|
||||
},
|
||||
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\7.0.407\\RuntimeIdentifierGraph.json"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,335 +0,0 @@
|
|||
{
|
||||
"version": 3,
|
||||
"targets": {
|
||||
"net7.0": {
|
||||
"MQTTnet/4.3.6.1152": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"lib/net7.0/MQTTnet.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net7.0/MQTTnet.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Newtonsoft.Json/13.0.3": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"lib/net6.0/Newtonsoft.Json.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/Newtonsoft.Json.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Serilog/4.0.0": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"lib/net6.0/Serilog.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/Serilog.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.CodeDom/8.0.0": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"lib/net7.0/System.CodeDom.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net7.0/System.CodeDom.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"build": {
|
||||
"buildTransitive/net6.0/_._": {}
|
||||
}
|
||||
},
|
||||
"System.Management/8.0.0": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"System.CodeDom": "8.0.0"
|
||||
},
|
||||
"compile": {
|
||||
"lib/net7.0/System.Management.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net7.0/System.Management.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"build": {
|
||||
"buildTransitive/net6.0/_._": {}
|
||||
},
|
||||
"runtimeTargets": {
|
||||
"runtimes/win/lib/net7.0/System.Management.dll": {
|
||||
"assetType": "runtime",
|
||||
"rid": "win"
|
||||
}
|
||||
}
|
||||
},
|
||||
"MasstransferCommon/1.0.0": {
|
||||
"type": "project",
|
||||
"framework": ".NETCoreApp,Version=v7.0",
|
||||
"dependencies": {
|
||||
"Newtonsoft.Json": "13.0.3",
|
||||
"System.Management": "8.0.0"
|
||||
},
|
||||
"compile": {
|
||||
"bin/placeholder/MasstransferCommon.dll": {}
|
||||
},
|
||||
"runtime": {
|
||||
"bin/placeholder/MasstransferCommon.dll": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"libraries": {
|
||||
"MQTTnet/4.3.6.1152": {
|
||||
"sha512": "XBgqx60FIWiBqTiLNF40EIhENLrLDzE3I9ujzZ7343QCeAWTHP70fO0mN6LeElSfubzfRSugLpPnd0cZiccUOw==",
|
||||
"type": "package",
|
||||
"path": "mqttnet/4.3.6.1152",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"lib/net452/MQTTnet.dll",
|
||||
"lib/net452/MQTTnet.xml",
|
||||
"lib/net461/MQTTnet.dll",
|
||||
"lib/net461/MQTTnet.xml",
|
||||
"lib/net48/MQTTnet.dll",
|
||||
"lib/net48/MQTTnet.xml",
|
||||
"lib/net5.0/MQTTnet.dll",
|
||||
"lib/net5.0/MQTTnet.xml",
|
||||
"lib/net6.0/MQTTnet.dll",
|
||||
"lib/net6.0/MQTTnet.xml",
|
||||
"lib/net7.0/MQTTnet.dll",
|
||||
"lib/net7.0/MQTTnet.xml",
|
||||
"lib/netcoreapp3.1/MQTTnet.dll",
|
||||
"lib/netcoreapp3.1/MQTTnet.xml",
|
||||
"lib/netstandard1.3/MQTTnet.dll",
|
||||
"lib/netstandard1.3/MQTTnet.xml",
|
||||
"lib/netstandard2.0/MQTTnet.dll",
|
||||
"lib/netstandard2.0/MQTTnet.xml",
|
||||
"lib/netstandard2.1/MQTTnet.dll",
|
||||
"lib/netstandard2.1/MQTTnet.xml",
|
||||
"lib/uap10.0.10240/MQTTnet.dll",
|
||||
"lib/uap10.0.10240/MQTTnet.pri",
|
||||
"lib/uap10.0.10240/MQTTnet.xml",
|
||||
"mqttnet.4.3.6.1152.nupkg.sha512",
|
||||
"mqttnet.nuspec",
|
||||
"nuget.png"
|
||||
]
|
||||
},
|
||||
"Newtonsoft.Json/13.0.3": {
|
||||
"sha512": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==",
|
||||
"type": "package",
|
||||
"path": "newtonsoft.json/13.0.3",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"LICENSE.md",
|
||||
"README.md",
|
||||
"lib/net20/Newtonsoft.Json.dll",
|
||||
"lib/net20/Newtonsoft.Json.xml",
|
||||
"lib/net35/Newtonsoft.Json.dll",
|
||||
"lib/net35/Newtonsoft.Json.xml",
|
||||
"lib/net40/Newtonsoft.Json.dll",
|
||||
"lib/net40/Newtonsoft.Json.xml",
|
||||
"lib/net45/Newtonsoft.Json.dll",
|
||||
"lib/net45/Newtonsoft.Json.xml",
|
||||
"lib/net6.0/Newtonsoft.Json.dll",
|
||||
"lib/net6.0/Newtonsoft.Json.xml",
|
||||
"lib/netstandard1.0/Newtonsoft.Json.dll",
|
||||
"lib/netstandard1.0/Newtonsoft.Json.xml",
|
||||
"lib/netstandard1.3/Newtonsoft.Json.dll",
|
||||
"lib/netstandard1.3/Newtonsoft.Json.xml",
|
||||
"lib/netstandard2.0/Newtonsoft.Json.dll",
|
||||
"lib/netstandard2.0/Newtonsoft.Json.xml",
|
||||
"newtonsoft.json.13.0.3.nupkg.sha512",
|
||||
"newtonsoft.json.nuspec",
|
||||
"packageIcon.png"
|
||||
]
|
||||
},
|
||||
"Serilog/4.0.0": {
|
||||
"sha512": "2jDkUrSh5EofOp7Lx5Zgy0EB+7hXjjxE2ktTb1WVQmU00lDACR2TdROGKU0K1pDTBSJBN1PqgYpgOZF8mL7NJw==",
|
||||
"type": "package",
|
||||
"path": "serilog/4.0.0",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"README.md",
|
||||
"icon.png",
|
||||
"lib/net462/Serilog.dll",
|
||||
"lib/net462/Serilog.xml",
|
||||
"lib/net471/Serilog.dll",
|
||||
"lib/net471/Serilog.xml",
|
||||
"lib/net6.0/Serilog.dll",
|
||||
"lib/net6.0/Serilog.xml",
|
||||
"lib/net8.0/Serilog.dll",
|
||||
"lib/net8.0/Serilog.xml",
|
||||
"lib/netstandard2.0/Serilog.dll",
|
||||
"lib/netstandard2.0/Serilog.xml",
|
||||
"serilog.4.0.0.nupkg.sha512",
|
||||
"serilog.nuspec"
|
||||
]
|
||||
},
|
||||
"System.CodeDom/8.0.0": {
|
||||
"sha512": "WTlRjL6KWIMr/pAaq3rYqh0TJlzpouaQ/W1eelssHgtlwHAH25jXTkUphTYx9HaIIf7XA6qs/0+YhtLEQRkJ+Q==",
|
||||
"type": "package",
|
||||
"path": "system.codedom/8.0.0",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"Icon.png",
|
||||
"LICENSE.TXT",
|
||||
"THIRD-PARTY-NOTICES.TXT",
|
||||
"buildTransitive/net461/System.CodeDom.targets",
|
||||
"buildTransitive/net462/_._",
|
||||
"buildTransitive/net6.0/_._",
|
||||
"buildTransitive/netcoreapp2.0/System.CodeDom.targets",
|
||||
"lib/net462/System.CodeDom.dll",
|
||||
"lib/net462/System.CodeDom.xml",
|
||||
"lib/net6.0/System.CodeDom.dll",
|
||||
"lib/net6.0/System.CodeDom.xml",
|
||||
"lib/net7.0/System.CodeDom.dll",
|
||||
"lib/net7.0/System.CodeDom.xml",
|
||||
"lib/net8.0/System.CodeDom.dll",
|
||||
"lib/net8.0/System.CodeDom.xml",
|
||||
"lib/netstandard2.0/System.CodeDom.dll",
|
||||
"lib/netstandard2.0/System.CodeDom.xml",
|
||||
"system.codedom.8.0.0.nupkg.sha512",
|
||||
"system.codedom.nuspec",
|
||||
"useSharedDesignerContext.txt"
|
||||
]
|
||||
},
|
||||
"System.Management/8.0.0": {
|
||||
"sha512": "jrK22i5LRzxZCfGb+tGmke2VH7oE0DvcDlJ1HAKYU8cPmD8XnpUT0bYn2Gy98GEhGjtfbR/sxKTVb+dE770pfA==",
|
||||
"type": "package",
|
||||
"path": "system.management/8.0.0",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"Icon.png",
|
||||
"LICENSE.TXT",
|
||||
"PACKAGE.md",
|
||||
"THIRD-PARTY-NOTICES.TXT",
|
||||
"buildTransitive/net6.0/_._",
|
||||
"buildTransitive/netcoreapp2.0/System.Management.targets",
|
||||
"lib/net462/_._",
|
||||
"lib/net6.0/System.Management.dll",
|
||||
"lib/net6.0/System.Management.xml",
|
||||
"lib/net7.0/System.Management.dll",
|
||||
"lib/net7.0/System.Management.xml",
|
||||
"lib/net8.0/System.Management.dll",
|
||||
"lib/net8.0/System.Management.xml",
|
||||
"lib/netstandard2.0/System.Management.dll",
|
||||
"lib/netstandard2.0/System.Management.xml",
|
||||
"runtimes/win/lib/net6.0/System.Management.dll",
|
||||
"runtimes/win/lib/net6.0/System.Management.xml",
|
||||
"runtimes/win/lib/net7.0/System.Management.dll",
|
||||
"runtimes/win/lib/net7.0/System.Management.xml",
|
||||
"runtimes/win/lib/net8.0/System.Management.dll",
|
||||
"runtimes/win/lib/net8.0/System.Management.xml",
|
||||
"system.management.8.0.0.nupkg.sha512",
|
||||
"system.management.nuspec",
|
||||
"useSharedDesignerContext.txt"
|
||||
]
|
||||
},
|
||||
"MasstransferCommon/1.0.0": {
|
||||
"type": "project",
|
||||
"path": "../MasstransferCommon/MasstransferCommon.csproj",
|
||||
"msbuildProject": "../MasstransferCommon/MasstransferCommon.csproj"
|
||||
}
|
||||
},
|
||||
"projectFileDependencyGroups": {
|
||||
"net7.0": [
|
||||
"MQTTnet >= 4.3.6.1152",
|
||||
"MasstransferCommon >= 1.0.0",
|
||||
"Serilog >= 4.0.0"
|
||||
]
|
||||
},
|
||||
"packageFolders": {
|
||||
"C:\\Users\\huangxianguo\\.nuget\\packages\\": {}
|
||||
},
|
||||
"project": {
|
||||
"version": "1.0.0",
|
||||
"restore": {
|
||||
"projectUniqueName": "C:\\workspace\\code_repos\\haiju\\MasstransferExporter\\MasstransferCommunicate\\MasstransferCommunicate.csproj",
|
||||
"projectName": "MasstransferCommunicate",
|
||||
"projectPath": "C:\\workspace\\code_repos\\haiju\\MasstransferExporter\\MasstransferCommunicate\\MasstransferCommunicate.csproj",
|
||||
"packagesPath": "C:\\Users\\huangxianguo\\.nuget\\packages\\",
|
||||
"outputPath": "C:\\workspace\\code_repos\\haiju\\MasstransferExporter\\MasstransferCommunicate\\obj\\",
|
||||
"projectStyle": "PackageReference",
|
||||
"configFilePaths": [
|
||||
"C:\\Users\\huangxianguo\\AppData\\Roaming\\NuGet\\NuGet.Config"
|
||||
],
|
||||
"originalTargetFrameworks": [
|
||||
"net7.0"
|
||||
],
|
||||
"sources": {
|
||||
"https://api.nuget.org/v3/index.json": {}
|
||||
},
|
||||
"frameworks": {
|
||||
"net7.0": {
|
||||
"targetAlias": "net7.0",
|
||||
"projectReferences": {
|
||||
"C:\\workspace\\code_repos\\haiju\\MasstransferExporter\\MasstransferCommon\\MasstransferCommon.csproj": {
|
||||
"projectPath": "C:\\workspace\\code_repos\\haiju\\MasstransferExporter\\MasstransferCommon\\MasstransferCommon.csproj"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"warningProperties": {
|
||||
"warnAsError": [
|
||||
"NU1605"
|
||||
]
|
||||
}
|
||||
},
|
||||
"frameworks": {
|
||||
"net7.0": {
|
||||
"targetAlias": "net7.0",
|
||||
"dependencies": {
|
||||
"MQTTnet": {
|
||||
"target": "Package",
|
||||
"version": "[4.3.6.1152, )"
|
||||
},
|
||||
"Serilog": {
|
||||
"target": "Package",
|
||||
"version": "[4.0.0, )"
|
||||
}
|
||||
},
|
||||
"imports": [
|
||||
"net461",
|
||||
"net462",
|
||||
"net47",
|
||||
"net471",
|
||||
"net472",
|
||||
"net48",
|
||||
"net481"
|
||||
],
|
||||
"assetTargetFallback": true,
|
||||
"warn": true,
|
||||
"frameworkReferences": {
|
||||
"Microsoft.NETCore.App": {
|
||||
"privateAssets": "all"
|
||||
}
|
||||
},
|
||||
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\7.0.407\\RuntimeIdentifierGraph.json"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,14 +0,0 @@
|
|||
{
|
||||
"version": 2,
|
||||
"dgSpecHash": "myny0oToHxs0CsvNk62qq18WZteUByxnUHWESOWjVjvWG7USy6Jp9OIbP0CdeGvRiG54WXV8n6tKvd5Mb9GFyw==",
|
||||
"success": true,
|
||||
"projectFilePath": "C:\\workspace\\code_repos\\haiju\\MasstransferExporter\\MasstransferCommunicate\\MasstransferCommunicate.csproj",
|
||||
"expectedPackageFiles": [
|
||||
"C:\\Users\\huangxianguo\\.nuget\\packages\\mqttnet\\4.3.6.1152\\mqttnet.4.3.6.1152.nupkg.sha512",
|
||||
"C:\\Users\\huangxianguo\\.nuget\\packages\\newtonsoft.json\\13.0.3\\newtonsoft.json.13.0.3.nupkg.sha512",
|
||||
"C:\\Users\\huangxianguo\\.nuget\\packages\\serilog\\4.0.0\\serilog.4.0.0.nupkg.sha512",
|
||||
"C:\\Users\\huangxianguo\\.nuget\\packages\\system.codedom\\8.0.0\\system.codedom.8.0.0.nupkg.sha512",
|
||||
"C:\\Users\\huangxianguo\\.nuget\\packages\\system.management\\8.0.0\\system.management.8.0.0.nupkg.sha512"
|
||||
],
|
||||
"logs": []
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
17173822294614410
|
|
@ -1,34 +0,0 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MasstransferExporter", "MasstransferExporter\MasstransferExporter.csproj", "{4675176C-487E-4D48-B904-C854D8501954}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MasstransferInfrastructure", "MasstransferInfrastructure\MasstransferInfrastructure.csproj", "{D790D484-1314-4476-93EC-4151F9A6E762}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MasstransferCommon", "MasstransferCommon\MasstransferCommon.csproj", "{66C6D73C-BADB-4E28-9C83-E701B019626D}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MasstransferCommon.Tests", "MasstransferCommon.Tests\MasstransferCommon.Tests.csproj", "{DBEDC6E1-AEE6-47FA-A17A-2B412CE99C7C}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{4675176C-487E-4D48-B904-C854D8501954}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{4675176C-487E-4D48-B904-C854D8501954}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{4675176C-487E-4D48-B904-C854D8501954}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{4675176C-487E-4D48-B904-C854D8501954}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{D790D484-1314-4476-93EC-4151F9A6E762}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{D790D484-1314-4476-93EC-4151F9A6E762}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{D790D484-1314-4476-93EC-4151F9A6E762}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{D790D484-1314-4476-93EC-4151F9A6E762}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{66C6D73C-BADB-4E28-9C83-E701B019626D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{66C6D73C-BADB-4E28-9C83-E701B019626D}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{66C6D73C-BADB-4E28-9C83-E701B019626D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{66C6D73C-BADB-4E28-9C83-E701B019626D}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{DBEDC6E1-AEE6-47FA-A17A-2B412CE99C7C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{DBEDC6E1-AEE6-47FA-A17A-2B412CE99C7C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{DBEDC6E1-AEE6-47FA-A17A-2B412CE99C7C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{DBEDC6E1-AEE6-47FA-A17A-2B412CE99C7C}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
EndGlobal
|
|
@ -1,8 +0,0 @@
|
|||
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
|
||||
<s:String x:Key="/Default/Environment/UnitTesting/CreateUnitTestDialog/TestProjectMapping/=66C6D73C_002DBADB_002D4E28_002D9C83_002DE701B019626D/@EntryIndexedValue">MasstransferCommon.Tests</s:String>
|
||||
<s:String x:Key="/Default/Environment/UnitTesting/CreateUnitTestDialog/TestTemplateMapping/=MSTest/@EntryIndexedValue">d6790ab7-33c2-4425-b2c9-51480cd1a852</s:String>
|
||||
<s:String x:Key="/Default/Environment/UnitTesting/UnitTestSessionStore/Sessions/=df21ed25_002D5064_002D4b51_002D96dd_002D1d6a1eb4ab6c/@EntryIndexedValue"><SessionState ContinuousTestingMode="0" IsActive="True" Name="Test" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session">
|
||||
<TestAncestor>
|
||||
<TestId>MSTest::DBEDC6E1-AEE6-47FA-A17A-2B412CE99C7C::net7.0::MasstransferCommon.Tests.Utils.JsonUtilTest.Test</TestId>
|
||||
</TestAncestor>
|
||||
</SessionState></s:String></wpf:ResourceDictionary>
|
|
@ -1,63 +0,0 @@
|
|||
using MasstransferCommon.Atrributes;
|
||||
using MasstransferCommon.Events;
|
||||
using MasstransferCommon.Model.Constant;
|
||||
using MasstransferCommon.Utils;
|
||||
using MasstransferCommunicate.Mqtt.Client;
|
||||
using MasstransferExporter.DataExporter.Model;
|
||||
using Masuit.Tools;
|
||||
|
||||
namespace MasstransferExporter.DataExporter;
|
||||
|
||||
/// <summary>
|
||||
/// 配置服务
|
||||
/// </summary>
|
||||
public class ConfigService : Instant
|
||||
{
|
||||
/// <summary>
|
||||
/// 监听配置下发事件
|
||||
/// </summary>
|
||||
private static async Task ListenConfigIssuedEvent(EventType type, bool start)
|
||||
{
|
||||
await MessageQueueHelper.Subscribe(Topics.DownloadConfigData, HandleConfigIssuedEvent);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 处理接收到的配置下发事件,根据配置类型执行不同的操作
|
||||
/// </summary>
|
||||
/// <param name="topic"></param>
|
||||
/// <param name="data"></param>
|
||||
private static void HandleConfigIssuedEvent(string topic, ConfigData<object> data)
|
||||
{
|
||||
if (data.IsNullOrEmpty()) return;
|
||||
|
||||
var type = data.Type;
|
||||
switch (type)
|
||||
{
|
||||
case "SYSTEM":
|
||||
var systemParamsDto = JsonUtil.FromJson<SystemParamsDTO>(data.Param.ToString());
|
||||
if (systemParamsDto != null)
|
||||
{
|
||||
SystemParamsService.HandleSystemParamsIssuedEvent(systemParamsDto);
|
||||
}
|
||||
|
||||
break;
|
||||
case "FORMULA":
|
||||
{
|
||||
var formulaDto = JsonUtil.FromJson<FormulaDTO>(data.Param.ToString());
|
||||
if (formulaDto != null)
|
||||
{
|
||||
formulaDto.Name = data.Name;
|
||||
}
|
||||
|
||||
FormulaService.HandleFormulaIssuedEvent(formulaDto);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void Initialized()
|
||||
{
|
||||
EventBus<bool>.AddEventHandler(EventType.StartUp, ListenConfigIssuedEvent);
|
||||
}
|
||||
}
|
|
@ -1,302 +0,0 @@
|
|||
using MasstransferCommon.Atrributes;
|
||||
using MasstransferCommon.Events;
|
||||
using MasstransferCommon.Model.Constant;
|
||||
using MasstransferCommunicate.Minio;
|
||||
using MasstransferCommunicate.Mqtt.Client;
|
||||
using MasstransferExporter.DataExporter.Model;
|
||||
using MasstransferInfrastructure.Database.Sqlite;
|
||||
using MasstransferSecurity.Utils;
|
||||
using Masuit.Tools;
|
||||
|
||||
namespace MasstransferExporter.DataExporter;
|
||||
|
||||
/// <summary>
|
||||
/// 坐标信息业务类
|
||||
/// </summary>
|
||||
public class CoordinateService : Instant
|
||||
{
|
||||
private static readonly SqliteHelper Db = SqliteHelper.GetInstance();
|
||||
|
||||
private static readonly MinioHelper Minio = MinioHelper.GetInstance();
|
||||
|
||||
/// <summary>
|
||||
/// 坐标信息导出
|
||||
/// 每5分钟自动上报一次当前时间内的坐标信息
|
||||
/// </summary>
|
||||
public static Task CoordinateExporter()
|
||||
{
|
||||
return Task.Run(() =>
|
||||
{
|
||||
var temp = Path.Combine(Environment.CurrentDirectory, "temp");
|
||||
|
||||
// 先清理上次的临时空间
|
||||
if (Directory.Exists(temp))
|
||||
{
|
||||
Directory.Delete(temp, true);
|
||||
}
|
||||
|
||||
// 然后创建临时目录
|
||||
Directory.CreateDirectory(temp);
|
||||
|
||||
var endTime = DateTime.Now;
|
||||
var startTime = endTime.AddMinutes(-5);
|
||||
|
||||
WaferCoordinateExporter(startTime, endTime);
|
||||
SubstrateCoordinateExporter(startTime, endTime);
|
||||
PathCoordinateExporter(startTime, endTime);
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 上传mark点坐标文件
|
||||
/// </summary>
|
||||
private static async Task MarkPointExporter(Substrate substrate)
|
||||
{
|
||||
var path = Path.Combine(Environment.CurrentDirectory, "temp", "mark.json");
|
||||
try
|
||||
{
|
||||
var batchCode = substrate.BatchNo;
|
||||
var substrateCode = substrate.SubstrateCode;
|
||||
|
||||
await File.WriteAllTextAsync(path, substrate.SubstrateMarkPointJson);
|
||||
|
||||
var fileName = $"{DeviceInfoUtil.GetDeviceSN()}/{batchCode}/{substrateCode}/MARK/mark.json";
|
||||
|
||||
await Minio.UploadFileAsync("coordinate", fileName, path);
|
||||
|
||||
// 上传完成后删除本地的文件
|
||||
File.Delete(path);
|
||||
|
||||
var data = new CoordinateData()
|
||||
{
|
||||
FileType = "MARK",
|
||||
BatchNumber = batchCode,
|
||||
BizNumber = substrateCode
|
||||
};
|
||||
await MessageQueueHelper.Publish(Topics.CoordinateUpload, data);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Console.WriteLine(e);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 上传wafer坐标文件
|
||||
/// </summary>
|
||||
private static async void WaferCoordinateExporter(DateTime startTime, DateTime endTime)
|
||||
{
|
||||
// 找出当前时间段内所有的晶环信息
|
||||
var wafers = Db.Query<Wafer>("SELECT * FROM wafers WHERE create_time >= ? AND create_time <= ?", startTime,
|
||||
endTime);
|
||||
|
||||
foreach (var wafer in wafers)
|
||||
{
|
||||
await UploadWaferCoords(wafer);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 生产晶环坐标文件并上传
|
||||
/// </summary>
|
||||
/// <param name="wafer"></param>
|
||||
private static async Task UploadWaferCoords(Wafer wafer)
|
||||
{
|
||||
var path = Path.Combine(Environment.CurrentDirectory, "temp", $"{wafer.Id}.json");
|
||||
try
|
||||
{
|
||||
await File.WriteAllTextAsync(path, wafer.CoordinateJson);
|
||||
|
||||
var fileName = $"{DeviceInfoUtil.GetDeviceSN()}/{wafer.BatchCode}/{wafer.WaferCode}/WAFER/wafer.json";
|
||||
|
||||
await Minio.UploadFileAsync("coordinate", fileName, path);
|
||||
|
||||
var data = new CoordinateData()
|
||||
{
|
||||
FileType = "WAFER",
|
||||
BatchNumber = wafer.BatchCode,
|
||||
BizNumber = wafer.WaferCode
|
||||
};
|
||||
await MessageQueueHelper.Publish(Topics.CoordinateUpload, data);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Console.WriteLine(e);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 上传基板坐标文件
|
||||
/// </summary>
|
||||
private static async void SubstrateCoordinateExporter(DateTime startTime, DateTime endTime)
|
||||
{
|
||||
// 找出当前时间段内的基板信息
|
||||
var substrates = Db.Query<Substrate>("SELECT * FROM substrates WHERE create_time >= ? AND create_time <= ?",
|
||||
startTime, endTime);
|
||||
foreach (var substrate in substrates)
|
||||
{
|
||||
// 上传mark 点坐标信息
|
||||
await MarkPointExporter(substrate);
|
||||
|
||||
await UploadSubstrateCoords(substrate);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 上传基板坐标文件
|
||||
/// </summary>
|
||||
/// <param name="substrate"></param>
|
||||
private static async Task UploadSubstrateCoords(Substrate substrate)
|
||||
{
|
||||
var path = Path.Combine(Environment.CurrentDirectory, "temp", $"{substrate.Id}.json");
|
||||
try
|
||||
{
|
||||
await File.WriteAllTextAsync(path, substrate.CoordinateJson);
|
||||
|
||||
var fileName = $"{DeviceInfoUtil.GetDeviceSN()}/{substrate.BatchNo}/{substrate.SubstrateCode}/PCB/pcb.json";
|
||||
|
||||
await Minio.UploadFileAsync("coordinate", fileName, path);
|
||||
|
||||
var data = new CoordinateData()
|
||||
{
|
||||
FileType = "PCB",
|
||||
BatchNumber = substrate.BatchNo,
|
||||
BizNumber = substrate.SubstrateCode
|
||||
};
|
||||
await MessageQueueHelper.Publish(Topics.CoordinateUpload, data);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Console.WriteLine(e);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 上传动打路径坐标文件
|
||||
/// </summary>
|
||||
private static async void PathCoordinateExporter(DateTime startTime, DateTime endTime)
|
||||
{
|
||||
// 找出当前时间段内的打路径信息
|
||||
var records = Db.Query<StrikeRecord>("SELECT * FROM strike_records WHERE create_time >= ? AND create_time <= ?",
|
||||
startTime, endTime);
|
||||
|
||||
foreach (var record in records)
|
||||
{
|
||||
await UploadStrikeRecord(record);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 上传动打记录
|
||||
/// </summary>
|
||||
/// <param name="record"></param>
|
||||
private static async Task UploadStrikeRecord(StrikeRecord record)
|
||||
{
|
||||
var path = Path.Combine(Environment.CurrentDirectory, "temp", $"{record.Id}.json");
|
||||
try
|
||||
{
|
||||
await File.WriteAllTextAsync(path, record.ToJsonString());
|
||||
|
||||
var fileName =
|
||||
$"{DeviceInfoUtil.GetDeviceSN()}/{record.BatchNo}/{record.SubstrateCode}/ROUTE/{record.Id}.json";
|
||||
|
||||
await Minio.UploadFileAsync("coordinate", fileName, path);
|
||||
|
||||
var data = new CoordinateData()
|
||||
{
|
||||
FileType = "ROUTE",
|
||||
BatchNumber = record.BatchNo,
|
||||
BizNumber = record.SubstrateCode
|
||||
};
|
||||
await MessageQueueHelper.Publish(Topics.CoordinateUpload, data);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Console.WriteLine(e);
|
||||
}
|
||||
}
|
||||
|
||||
public void Initialized()
|
||||
{
|
||||
EventBus<bool>.AddEventHandler(EventType.StartUp, ListenCoordinateQueryEvent);
|
||||
}
|
||||
|
||||
private static async Task ListenCoordinateQueryEvent(EventType type, bool start)
|
||||
{
|
||||
await MessageQueueHelper.Subscribe(Topics.QueryCoordinate, QueryCoordinate);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 处理查询坐标请求
|
||||
/// </summary>
|
||||
/// <param name="topic"></param>
|
||||
/// <param name="dto"></param>
|
||||
private static async Task QueryCoordinate(string topic, QueryCoordinateDTO? dto)
|
||||
{
|
||||
if (dto == null) return;
|
||||
|
||||
var temp = Path.Combine(Environment.CurrentDirectory, "temp");
|
||||
|
||||
// 先清理上次的临时空间
|
||||
if (Directory.Exists(temp))
|
||||
{
|
||||
Directory.Delete(temp, true);
|
||||
}
|
||||
|
||||
// 然后创建临时目录
|
||||
Directory.CreateDirectory(temp);
|
||||
|
||||
|
||||
var batchNumber = dto.BatchNumber;
|
||||
var bizNumber = dto.BizNumber;
|
||||
var fileType = dto.FileType;
|
||||
|
||||
// 根据文件类型查询对应的文件
|
||||
if ("WAFER".Equals(fileType))
|
||||
{
|
||||
// 查询的是晶圆的数据
|
||||
var wafer = Db.Query<Wafer>(
|
||||
"SELECT * FROM wafers WHERE wafer_code = ? and batch_code = ? order by create_time desc limit 1",
|
||||
bizNumber,
|
||||
batchNumber).FirstOrDefault();
|
||||
if (wafer == null) return;
|
||||
|
||||
// 生产晶圆坐标文件并上传
|
||||
await UploadWaferCoords(wafer);
|
||||
}
|
||||
else
|
||||
{
|
||||
// 对应查询的是基板的数据
|
||||
var substrate = Db.Query<Substrate>(
|
||||
"SELECT * FROM substrates WHERE substrate_code = ? and batch_no = ? order by create_time desc limit 1",
|
||||
bizNumber,
|
||||
batchNumber).FirstOrDefault();
|
||||
if (substrate == null) return;
|
||||
|
||||
switch (fileType)
|
||||
{
|
||||
case "MARK":
|
||||
// 上传基板mark点坐标
|
||||
await MarkPointExporter(substrate);
|
||||
break;
|
||||
case "PCB":
|
||||
// 上传基板坐标
|
||||
await UploadSubstrateCoords(substrate);
|
||||
break;
|
||||
case "PATH":
|
||||
{
|
||||
// 上传打路径坐标
|
||||
// 查询跟这个基板的动打记录
|
||||
const string sql = "SELECT * FROM strike_records WHERE substrate_id = ?";
|
||||
var records = Db.Query<StrikeRecord>(sql, substrate.Id);
|
||||
foreach (var record in records)
|
||||
{
|
||||
await UploadStrikeRecord(record);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,36 +0,0 @@
|
|||
using MasstransferCommon.Model.Constant;
|
||||
using MasstransferCommunicate.Mqtt.Client;
|
||||
using MasstransferExporter.DataExporter.Model;
|
||||
using MasstransferInfrastructure.Database.Sqlite;
|
||||
|
||||
namespace MasstransferExporter.DataExporter;
|
||||
|
||||
public class FaultRecordService
|
||||
{
|
||||
private static readonly SqliteHelper Db = SqliteHelper.GetInstance();
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 每5分钟上传一次故障数据
|
||||
/// </summary>
|
||||
public static async Task FaultRecordDataExporter()
|
||||
{
|
||||
var endTime = DateTime.Now;
|
||||
var startTime = endTime.AddMinutes(-5);
|
||||
|
||||
// 查询5分钟内的故障记录
|
||||
var sql = "SELECT * FROM fault_records WHERE update_time >= ? AND update_time <= ?";
|
||||
var records = Db.Query<FaultRecord>(sql, startTime, endTime);
|
||||
foreach (var record in records)
|
||||
{
|
||||
var dto = new FaultRecordDTO()
|
||||
{
|
||||
ErrorCode = record.FaultCode,
|
||||
Timestamp = record.UpdateTime,
|
||||
Status = record.Solved ? 0 : 1
|
||||
};
|
||||
|
||||
await MessageQueueHelper.Publish(Topics.ReportFaultRecord, dto);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,272 +0,0 @@
|
|||
using System.ComponentModel;
|
||||
using System.Reflection;
|
||||
using MasstransferCommon.Model.Constant;
|
||||
using MasstransferCommon.Model.Entity;
|
||||
using MasstransferCommon.Utils;
|
||||
using MasstransferCommunicate.Mqtt.Client;
|
||||
using MasstransferExporter.DataExporter.Model;
|
||||
using MasstransferInfrastructure.Database.Sqlite;
|
||||
using Masuit.Tools;
|
||||
|
||||
namespace MasstransferExporter.DataExporter;
|
||||
|
||||
/// <summary>
|
||||
/// 配方管理相关业务类
|
||||
/// </summary>
|
||||
public class FormulaService
|
||||
{
|
||||
private static readonly SqliteHelper Db = SqliteHelper.GetInstance();
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 处理配方下发事件
|
||||
/// </summary>
|
||||
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;
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取所有的配方列表
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
private static List<FormulaDTO> GetAllFormulas()
|
||||
{
|
||||
var formulas = Db.ListAll<Formula>();
|
||||
return BeanUtil.CopyProperties<FormulaDTO>(formulas);
|
||||
}
|
||||
|
||||
private static Formula? GetFormulaByName(string name)
|
||||
{
|
||||
return Db.Query<Formula>("select * from formulas where name = ?", name).FirstOrDefault();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取当前已经启用的配方
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public static Formula? GetSelectedFormula()
|
||||
{
|
||||
return Db.Query<Formula>("select * from formulas where selected = 1").FirstOrDefault();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 根据配方id来获取配方信息
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
private static FormulaDTO? GetFormulaById(string id)
|
||||
{
|
||||
var formula = Db.GetById<Formula>(id);
|
||||
if (formula == null) return null;
|
||||
var dto = BeanUtil.CopyProperties<FormulaDTO>(formula);
|
||||
dto.WorkBenchSetting = GetWorkBenchSettingByFormulaId(id) ?? new WorkBenchSetting();
|
||||
dto.WaferSetting = GetWaferSettingByFormulaId(id) ?? new WaferSetting();
|
||||
dto.PcbSetting = GetPcbSettingByFormulaId(id) ?? new PcbSetting();
|
||||
dto.NeedleSetting = GetNeedleSettingByFormulaId(id) ?? new NeedleSetting();
|
||||
dto.AltimetryParams = GetAltimetryParamsByFormulaId(id) ?? new AltimetryParams();
|
||||
dto.JobSetting = GetJobSettingByFormulaId(id) ?? new JobSetting();
|
||||
dto.AlgorithmParams = GetAlgorithmParamsByFormulaId(id) ?? new AlgorithmParams();
|
||||
return dto;
|
||||
}
|
||||
|
||||
private static NeedleSetting? GetNeedleSettingByFormulaId(string formulaId)
|
||||
{
|
||||
return Db.Query<NeedleSetting>("select * from needle_settings where formulaId = ?", formulaId)
|
||||
.FirstOrDefault();
|
||||
}
|
||||
|
||||
public static WorkBenchSetting? GetWorkBenchSettingByFormulaId(string formulaId)
|
||||
{
|
||||
return Db.Query<WorkBenchSetting>("select * from work_bench_settings where formulaId = ?", formulaId)
|
||||
.FirstOrDefault();
|
||||
}
|
||||
|
||||
private static PcbSetting? GetPcbSettingByFormulaId(string formulaId)
|
||||
{
|
||||
return Db.Query<PcbSetting>("select * from pcb_settings where formulaId = ?", formulaId).FirstOrDefault();
|
||||
}
|
||||
|
||||
private static WaferSetting? GetWaferSettingByFormulaId(string formulaId)
|
||||
{
|
||||
return Db.Query<WaferSetting>("select * from wafer_settings where formulaId = ?", formulaId).FirstOrDefault();
|
||||
}
|
||||
|
||||
|
||||
private static JobSetting? GetJobSettingByFormulaId(string formulaId)
|
||||
{
|
||||
return Db.Query<JobSetting>("select * from job_settings where formulaId = ?", formulaId)
|
||||
.FirstOrDefault();
|
||||
}
|
||||
|
||||
private static AlgorithmParams? GetAlgorithmParamsByFormulaId(string formulaId)
|
||||
{
|
||||
return Db.Query<AlgorithmParams>("select * from algorithm_params where formula_id = ?", formulaId)
|
||||
.FirstOrDefault();
|
||||
}
|
||||
|
||||
private static AltimetryParams? GetAltimetryParamsByFormulaId(string formulaId)
|
||||
{
|
||||
return Db.Query<AltimetryParams>("select * from altimetry_params where formula_id = ?", formulaId)
|
||||
.FirstOrDefault();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 定时上报配方数据
|
||||
/// </summary>
|
||||
public static async Task FormulaDataExporter()
|
||||
{
|
||||
try
|
||||
{
|
||||
var formulas = GetAllFormulas();
|
||||
|
||||
var dto = formulas[0];
|
||||
|
||||
// 推送配方字段名称字典内容
|
||||
var mapping = new Dictionary<string, object>();
|
||||
GetFormulaFieldNameMapping(dto.GetType(), mapping);
|
||||
|
||||
await MessageQueueHelper.Publish(Topics.ReportConfigDictionary, mapping);
|
||||
|
||||
foreach (var formula in formulas)
|
||||
{
|
||||
var formulaDto = GetFormulaById(formula.Id);
|
||||
if (formulaDto == null) continue;
|
||||
var data = new ConfigData<FormulaDTO>()
|
||||
{
|
||||
Name = formulaDto.Name,
|
||||
Param = formulaDto,
|
||||
Type = "FORMULA"
|
||||
};
|
||||
|
||||
await MessageQueueHelper.Publish(Topics.ReportConfigData, data);
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Console.WriteLine($"定时上报配方数据失败: {e}");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 获取配方字段名称映射
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
private static void GetFormulaFieldNameMapping(Type type, IDictionary<string, object> mapping)
|
||||
{
|
||||
var fields = type.GetProperties();
|
||||
foreach (var field in fields)
|
||||
{
|
||||
// 判定当前的属性是否为 Entity的子类
|
||||
if (field.PropertyType.IsSubclassOf(typeof(Entity)))
|
||||
{
|
||||
var subMapping = new Dictionary<string, object>();
|
||||
GetFormulaFieldNameMapping(field.PropertyType, subMapping);
|
||||
mapping.Add(field.Name, subMapping);
|
||||
}
|
||||
else
|
||||
{
|
||||
var description = field.GetCustomAttribute<DescriptionAttribute>();
|
||||
if (description != null)
|
||||
{
|
||||
mapping.Add(field.Name, description.Description);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,167 +0,0 @@
|
|||
using System.ComponentModel;
|
||||
using MasstransferCommon.Model.Atrributes;
|
||||
using MasstransferCommon.Model.Entity;
|
||||
using SQLite;
|
||||
|
||||
namespace MasstransferExporter.DataExporter.Model;
|
||||
|
||||
/// <summary>
|
||||
/// 算法参数
|
||||
/// </summary>
|
||||
[Table("algorithm_params")]
|
||||
[Description("算法参数")]
|
||||
public class AlgorithmParams : Entity
|
||||
{
|
||||
[Column("formula_id"), Description("配方Id"), Hide]
|
||||
public string FormulaId { get; set; }
|
||||
|
||||
[Column("chip_detect_angle_start")]
|
||||
[Description("芯片识别开始角度")]
|
||||
public double ChipDetectAngleStart { get; set; }
|
||||
|
||||
[Column("chip_detect_angle_extent")]
|
||||
[Description("芯片识别角度范围")]
|
||||
public double ChipDetectAngleExtent { get; set; }
|
||||
|
||||
[Column("chip_max_angle")]
|
||||
[Description("芯片识别最大角度")]
|
||||
public double ChipMaxAngle { get; set; }
|
||||
|
||||
[Column("chip_detect_min_score")]
|
||||
[Description("芯片识别最小分数 eg:0.6")]
|
||||
public double ChipDetectMinScore { get; set; }
|
||||
|
||||
[Column("chip_detect_max_overlap")]
|
||||
[Description("芯片识别最大重叠 eg:0.5")]
|
||||
public double ChipDetectMaxOverlap { get; set; }
|
||||
|
||||
[Column("chip_detect_greediness")]
|
||||
[Description("芯片识别贪婪度 eg:0.9")]
|
||||
public double ChipDetectGreediness { get; set; }
|
||||
|
||||
[Column("solder_joint_chip_detect_angle_start")]
|
||||
[Description("焊点识别 开始角度")]
|
||||
public int SolderJointChipDetectAngleStart { get; set; }
|
||||
|
||||
[Column("solder_joint_chip_detect_angle_extent")]
|
||||
[Description("焊点识别 角度范围")]
|
||||
public int SolderJointChipDetectAngleExtent { get; set; }
|
||||
|
||||
[Column("solder_joint_chip_detect_min_score")]
|
||||
[Description("焊点识别最小分数 eg:0.6")]
|
||||
public double SolderJointChipDetectMinScore { get; set; }
|
||||
|
||||
[Column("solder_joint_chip_detect_max_overlap")]
|
||||
[Description("焊点识别贪婪度 eg:0.9")]
|
||||
public double SolderJointChipDetectGreediness { get; set; }
|
||||
|
||||
[Column("chip_amount_per_row")]
|
||||
[Description("每行芯片数量")]
|
||||
public int ChipAmountPerRow { get; set; }
|
||||
|
||||
[Column("chip_padding_x")]
|
||||
[Description("芯片坐标X轴补偿间距值"), Property(Format = "0.#######")]
|
||||
public double ChipPaddingX { get; set; }
|
||||
|
||||
[Column("chip_padding_y")]
|
||||
[Description("芯片坐标Y轴补偿间距值"), Property(Format = "0.#######")]
|
||||
public double ChipPaddingY { get; set; }
|
||||
|
||||
[Column("chip_constant_x"), Property(Format = "0.#######")]
|
||||
[Description("芯片坐标X轴补偿常量")]
|
||||
public double ChipConstantX { get; set; }
|
||||
|
||||
[Column("chip_constant_y")]
|
||||
[Description("芯片坐标Y轴补偿常量"), Property(Format = "0.#######")]
|
||||
public double ChipConstantY { get; set; }
|
||||
|
||||
[Column("chip_constant_x_for_right2left")]
|
||||
[Description("芯片从右到左方向动打补偿值")]
|
||||
public double ChipConstantXForRight2Left { get; set; }
|
||||
|
||||
[Column("chip_constant_x_for_left2_right")]
|
||||
[Description("芯片从左到右方向动打补偿值")]
|
||||
public double ChipConstantXForLeft2Right { get; set; }
|
||||
|
||||
[Column("chip_multi_of_total_padding_x")]
|
||||
[Description("芯片坐标X轴补偿间距值系数")]
|
||||
public double ChipMultiOfTotalPaddingX { get; set; }
|
||||
|
||||
[Column("chip_multi_of_total_padding_y")]
|
||||
[Description("芯片坐标Y轴补偿间距值系数")]
|
||||
public double ChipMultiOfTotalPaddingY { get; set; }
|
||||
|
||||
[Column("pcb_diff_x_tolerance")]
|
||||
[Description("PCB路径插补3点之间的距离差值容忍值")]
|
||||
public double PcbDiffXTolerance { get; set; }
|
||||
|
||||
[Column("chip_diff_x_tolerance")]
|
||||
[Description("芯片路径插补3点之间的距离差值容忍值")]
|
||||
public double ChipDiffXTolerance { get; set; }
|
||||
|
||||
[Column("pcb_wrap_threshold")]
|
||||
[Description("pcb路径换行逻辑的Y值阈值")]
|
||||
public double PcbWrapThreshold { get; set; }
|
||||
|
||||
[Column("chip_wrap_threshold")]
|
||||
[Description("芯片路径换行逻辑的Y值阈值")]
|
||||
public double ChipWrapThreshold { get; set; }
|
||||
|
||||
[Column("interpolate_wrap_count")]
|
||||
[Description("换行插点数")]
|
||||
public int InterpolateWrapCount { get; set; }
|
||||
|
||||
[Column("pcb_merge_similar_point_windows"), Description("PCB路径合并相似点窗口")]
|
||||
public string PcbMergeSimilarPointWindows { get; set; } = "29,34";
|
||||
|
||||
[Column("chip_merge_similar_point_windows"), Description("芯片路径合并相似点窗口")]
|
||||
public string ChipMergeSimilarPointWindows { get; set; } = "29,34";
|
||||
|
||||
[Column("pcb_row_similar_threshold"), Description("PCB路径行相似度阈值")]
|
||||
public double PcbRowSimilarThreshold { get; set; }
|
||||
|
||||
[Column("pcb_col_similar_threshold"), Description("PCB路径列相似度阈值")]
|
||||
public double PcbColSimilarThreshold { get; set; }
|
||||
|
||||
[Column("chip_row_similar_threshold"), Description("芯片路径行相似度阈值")]
|
||||
public double ChipRowSimilarThreshold { get; set; }
|
||||
|
||||
[Column("chip_col_similar_threshold"), Description("芯片路径列相似度阈值")]
|
||||
public double ChipColSimilarThreshold { get; set; }
|
||||
|
||||
[Column("skip_chips"), Description("跳过芯片数量")]
|
||||
public int SkipChips { get; set; }
|
||||
|
||||
[Column("bin_coordinate_transform_strategy"), Description("晶圆机构坐标转换策略,0:基于角度,1:基于矩阵")]
|
||||
public int BinCoordinateTransformStrategy { get; set; }
|
||||
|
||||
[Column("x_over_speed_distant_threshold"), Description("动打X方向导致加速度过大的3点之间距离差的阈值")]
|
||||
public double XOverSpeedDistantThreshold { get; set; }
|
||||
|
||||
[Column("y_over_speed_distant_threshold"), Description("动打Y方向导致加速度过大的3点之间距离差的阈值")]
|
||||
public double YOverSpeedDistantThreshold { get; set; }
|
||||
|
||||
[Column("from_right_Chip_offset_to_solder_joint_center"), Description("从右到左方向芯片对齐焊点中心需要增加的X偏移量")]
|
||||
public double FromRightChipOffsetToSolderJointCenter { get; set; }
|
||||
|
||||
[Column("from_left_Chip_offset_to_solder_joint_center"), Description("从左到右方向芯片对齐焊点中心需要增加的X偏移量")]
|
||||
public double FromLeftChipOffsetToSolderJointCenter { get; set; }
|
||||
|
||||
[Column("from_right_early_strike_offset"), Description("从右到左方向提前下针的X偏移量")]
|
||||
public double FromRightEarlyStrikeOffset { get; set; }
|
||||
|
||||
[Column("from_left_early_strike_offset"), Description("从左到右方向提前下针的X偏移量")]
|
||||
public double FromLeftEarlyStrikeOffset { get; set; }
|
||||
|
||||
[Column("chip_min_gray"), Description("芯片最小灰度值")]
|
||||
public double ChipMinGray { get; set; }
|
||||
|
||||
[Column("chip_max_gray"), Description("芯片最大灰度值")]
|
||||
public double ChipMaxGray { get; set; }
|
||||
|
||||
[Column("chip_min_area"), Description("芯片筛选最小面积")]
|
||||
public double ChipMinArea { get; set; }
|
||||
|
||||
[Column("chip_max_area"), Description("芯片筛选最大面积")]
|
||||
public double ChipMaxArea { get; set; }
|
||||
}
|
|
@ -1,55 +0,0 @@
|
|||
using System.ComponentModel;
|
||||
using MasstransferCommon.Model.Entity;
|
||||
using MasstransferCommon.Model.Enum;
|
||||
using MasstransferCommon.Utils;
|
||||
using SQLite;
|
||||
|
||||
namespace MasstransferExporter.DataExporter.Model;
|
||||
|
||||
/// <summary>
|
||||
/// 测高参数
|
||||
/// </summary>
|
||||
[Table("altimetry_params")]
|
||||
[Description("测高参数")]
|
||||
public class AltimetryParams : Entity
|
||||
{
|
||||
[Column("formula_id"), Description("配方Id")]
|
||||
public string FormulaId { get; set; }
|
||||
|
||||
[Column("RowArea"), Description("针刺测高区域行数")]
|
||||
public int RowArea { get; set; }
|
||||
|
||||
[Column("ColumnArea"), Description("针刺测高区域列数")]
|
||||
public int ColumnArea { get; set; }
|
||||
|
||||
[Column(" altimetry_strategy"), Description("测高策略,1:按区域,2:按指定点位")]
|
||||
public AltimetryStrategyEnum Strategy { get; set; }
|
||||
|
||||
[Column("delta_height_of_plane"), Description("测高平面高度补偿值")]
|
||||
public double DeltaHeightOfPlane { get; set; }
|
||||
|
||||
[Column("first_point_per_row_delta_height"), Description("换行第一个点的补偿值")]
|
||||
public double FirstPointPerRowDeltaHeight { get; set; }
|
||||
|
||||
[Column("normal_delta_height"), Description("其他点补偿值")]
|
||||
public double NormalDeltaHeight { get; set; }
|
||||
|
||||
[Column("base_height"), Description("针刺测高基准高度")]
|
||||
public double BaseHeight { get; set; }
|
||||
|
||||
[Column("delta_base_height"), Description("第一个针刺测高值与基准高度的差值")]
|
||||
public double DeltaBaseHeight { get; set; }
|
||||
|
||||
[Column("p2p_delta"), Description("p2p的高度补偿")]
|
||||
public double P2PDelta { get; set; }
|
||||
|
||||
[Column("acupuncture_altimetry_coordinates_json"), Description("针刺测高坐标 eg: [[x1,y1],[x2,y2],[x3,y3]]")]
|
||||
public string AcupunctureAltimetryCoordinatesJson { get; set; }
|
||||
|
||||
[Ignore, Description("针刺测高坐标 eg: [[x1,y1],[x2,y2],[x3,y3]]")]
|
||||
public double[][] AcupunctureAltimetryCoordinates
|
||||
{
|
||||
get => JsonUtil.FromJsonOrDefault<double[][]>(AcupunctureAltimetryCoordinatesJson);
|
||||
set => AcupunctureAltimetryCoordinatesJson = JsonUtil.ToJson(value);
|
||||
}
|
||||
}
|
|
@ -1,227 +0,0 @@
|
|||
using System.ComponentModel;
|
||||
using MasstransferCommon.Model.Atrributes;
|
||||
using MasstransferCommon.Model.Entity;
|
||||
using SQLite;
|
||||
|
||||
namespace MasstransferExporter.DataExporter.Model;
|
||||
|
||||
/// <summary>
|
||||
/// ACS 位置参数
|
||||
/// </summary>
|
||||
[Table("axis_position_params"), Description("轴位置参数")]
|
||||
public class AxisPositionParams : Entity
|
||||
{
|
||||
[Column("wafer_y_manual_position"), Description("晶环龙门Y手动位置"),
|
||||
Property(Group = "WaferY", Variable = "stAxisArPos", Axis = 0, Index = 0)]
|
||||
public double WaferYManualPosition { get; set; }
|
||||
|
||||
[Column("wafer_y_idle_position"), Description("晶环龙门Y待机位置"),
|
||||
Property(Group = "WaferY", Variable = "stAxisArPos", Axis = 0, Index = 1)]
|
||||
public double WaferYIdlePosition { get; set; }
|
||||
|
||||
[Column("wafer_y_loading_position"), Description("晶环龙门Y换料位置"),
|
||||
Property(Group = "WaferY", Variable = "stAxisArPos", Axis = 0, Index = 2)]
|
||||
public double WaferYLoadingPosition { get; set; }
|
||||
|
||||
[Column("wafer_y_camera_position"), Description("晶环龙门Y拍照位置"),
|
||||
Property(Group = "WaferY", Variable = "stAxisArPos", Axis = 0, Index = 3)]
|
||||
public double WaferYCameraPosition { get; set; }
|
||||
|
||||
[Column("wafer_y_scanner_position"), Description("晶环龙门Y扫码位置"),
|
||||
Property(Group = "WaferY", Variable = "stAxisArPos", Axis = 0, Index = 4)]
|
||||
public double WaferYScannerPosition { get; set; }
|
||||
|
||||
[Column("wafer_y_replace_wafer_box_position"), Description("晶环龙门Y料盒更换位置"),
|
||||
Property(Group = "WaferY", Variable = "stAxisArPos", Axis = 0, Index = 5)]
|
||||
public double WaferYReplaceWaferBoxPosition { get; set; }
|
||||
|
||||
[Column("needle_y_manual_position"), Description("针刺龙门Y手动位置"),
|
||||
Property(Group = "NeedleY", Variable = "stAxisArPos", Axis = 2, Index = 0)]
|
||||
public double NeedleYManualPosition { get; set; }
|
||||
|
||||
[Column("needle_y_idle_position"), Description("针刺龙门Y待机位置"),
|
||||
Property(Group = "NeedleY", Variable = "stAxisArPos", Axis = 2, Index = 1)]
|
||||
public double NeedleYIdlePosition { get; set; }
|
||||
|
||||
[Column("needle_y_camera_position"), Description("针刺龙门Y拍照位置"),
|
||||
Property(Group = "NeedleY", Variable = "stAxisArPos", Axis = 2, Index = 2)]
|
||||
public double NeedleYCameraPosition { get; set; }
|
||||
|
||||
[Column("needle_y_scanner_position"), Description("针刺龙门Y扫码位置"),
|
||||
Property(Group = "NeedleY", Variable = "stAxisArPos", Axis = 2, Index = 3)]
|
||||
public double NeedleYScannerPosition { get; set; }
|
||||
|
||||
|
||||
[Column("wafer_x_manual_position"), Description("晶环龙门X手动位置"),
|
||||
Property(Group = "WaferX", Variable = "stAxisArPos", Axis = 4, Index = 0)]
|
||||
public double WaferXManualPosition { get; set; }
|
||||
|
||||
[Column("wafer_x_idle_position"), Description("晶环龙门X待机位置"),
|
||||
Property(Group = "WaferX", Variable = "stAxisArPos", Axis = 4, Index = 1)]
|
||||
public double WaferXIdlePosition { get; set; }
|
||||
|
||||
[Column("wafer_x_loading_position"), Description("晶环龙门X换料位置"),
|
||||
Property(Group = "WaferX", Variable = "stAxisArPos", Axis = 4, Index = 2)]
|
||||
public double WaferXLoadingPosition { get; set; }
|
||||
|
||||
[Column("wafer_x_camera_position"), Description("晶环龙门X拍照位置"),
|
||||
Property(Group = "WaferX", Variable = "stAxisArPos", Axis = 4, Index = 3)]
|
||||
public double WaferXCameraPosition { get; set; }
|
||||
|
||||
[Column("wafer_x_scanner_position"), Description("晶环龙门X扫码位置"),
|
||||
Property(Group = "WaferX", Variable = "stAxisArPos", Axis = 4, Index = 4)]
|
||||
public double WaferXScannerPosition { get; set; }
|
||||
|
||||
|
||||
[Column("needle_x_manual_position"), Description("针刺龙门X手动位置"),
|
||||
Property(Group = "NeedleX", Variable = "stAxisArPos", Axis = 5, Index = 0)]
|
||||
public double NeedleXManualPosition { get; set; }
|
||||
|
||||
[Column("needle_x_idle_position"), Description("针刺龙门X待机位置"),
|
||||
Property(Group = "NeedleX", Variable = "stAxisArPos", Axis = 5, Index = 1)]
|
||||
public double NeedleXIdlePosition { get; set; }
|
||||
|
||||
[Column("needle_x_camera_position"), Description("针刺龙门X拍照位置"),
|
||||
Property(Group = "NeedleX", Variable = "stAxisArPos", Axis = 5, Index = 2)]
|
||||
public double NeedleXCameraPosition { get; set; }
|
||||
|
||||
|
||||
[Column("wafer_x_2_manual_position"), Description("晶环龙门X_2手动位置"),
|
||||
Property(Group = "WaferX", Variable = "stAxisArPos", Axis = 6, Index = 0)]
|
||||
public double WaferX2ManualPosition { get; set; }
|
||||
|
||||
[Column("wafer_x2_idle_position"), Description("晶环龙门X_2待机位置"),
|
||||
Property(Group = "WaferX", Variable = "stAxisArPos", Axis = 6, Index = 1)]
|
||||
public double WaferX2IdlePosition { get; set; }
|
||||
|
||||
|
||||
[Column("needle_x2_manual_position"), Description("针刺龙门X_2手动位置"),
|
||||
Property(Group = "NeedleX", Variable = "stAxisArPos", Axis = 7, Index = 0)]
|
||||
public double NeedleX2ManualPosition { get; set; }
|
||||
|
||||
[Column("needle_x2_idle_position"), Description("针刺龙门X_2待机位置"),
|
||||
Property(Group = "NeedleX", Variable = "stAxisArPos", Axis = 7, Index = 1)]
|
||||
public double NeedleX2IdlePosition { get; set; }
|
||||
|
||||
|
||||
[Column("needle_z_motor_manual_position"), Description("针刺音圈Z手动位置"),
|
||||
Property(Group = "NeedleZ", Variable = "stAxisArPos", Axis = 8, Index = 0)]
|
||||
public double NeedleZMotorManualPosition { get; set; }
|
||||
|
||||
[Column("needle_z_motor_idle_position"), Description("针刺音圈Z待机位置"),
|
||||
Property(Group = "NeedleZ", Variable = "stAxisArPos", Axis = 8, Index = 1)]
|
||||
public double NeedleZMotorIdlePosition { get; set; }
|
||||
|
||||
[Column("needle_z_motor_job_position"), Description("针刺音圈Z打晶抬升位置"),
|
||||
Property(Group = "NeedleZ", Variable = "stAxisArPos", Axis = 8, Index = 2)]
|
||||
public double NeedleZMotorJobPosition { get; set; }
|
||||
|
||||
|
||||
[Column("needle_z_servo_manual_position"), Description("针刺伺服Z手动位置"),
|
||||
Property(Group = "NeedleZ", Variable = "stAxisArPos", Axis = 9, Index = 0)]
|
||||
public double NeedleZServoManualPosition { get; set; }
|
||||
|
||||
[Column("needle_z_servo_idle_position"), Description("针刺伺服Z待机位置"),
|
||||
Property(Group = "NeedleZ", Variable = "stAxisArPos", Axis = 9, Index = 1)]
|
||||
public double NeedleZServoIdlePosition { get; set; }
|
||||
|
||||
[Column("needle_z_servo_pcb_camera_position"), Description("针刺伺服Z基板拍照位"),
|
||||
Property(Group = "NeedleZ", Variable = "stAxisArPos", Axis = 9, Index = 2)]
|
||||
public double NeedleZServoPcbCameraPosition { get; set; }
|
||||
|
||||
[Column("needle_z_servo_wafer_camera_position"), Description("针刺伺服Z芯片拍照位"),
|
||||
Property(Group = "NeedleZ", Variable = "stAxisArPos", Axis = 9, Index = 3)]
|
||||
public double NeedleZServoWaferCameraPosition { get; set; }
|
||||
|
||||
[Column("needle_z_servo_job_position"), Description("针刺伺服Z打晶位置"),
|
||||
Property(Group = "NeedleZ", Variable = "stAxisArPos", Axis = 9, Index = 4)]
|
||||
public double NeedleZServoJobPosition { get; set; }
|
||||
|
||||
|
||||
[Column("wafer_rotate_servo_manual_position"), Description("晶环旋转伺服手动位置"),
|
||||
Property(Group = "WaferLoading", Variable = "stAxisArPos", Axis = 10, Index = 0)]
|
||||
public double WaferRotateServoManualPosition { get; set; }
|
||||
|
||||
[Column("wafer_rotate_servo_idle_position"), Description("晶环旋转伺服待机位置"),
|
||||
Property(Group = "WaferLoading", Variable = "stAxisArPos", Axis = 10, Index = 1)]
|
||||
public double WaferRotateServoIdlePosition { get; set; }
|
||||
|
||||
[Column("wafer_rotate_servo_origin_position"), Description("晶环旋转伺服相对原点位置"),
|
||||
Property(Group = "WaferLoading", Variable = "stAxisArPos", Axis = 10, Index = 2)]
|
||||
public double WaferRotateServoOriginPosition { get; set; }
|
||||
|
||||
|
||||
[Column("wafer_z_servo_loading_manual_position"), Description("晶环换料升降伺服手动位置"),
|
||||
Property(Group = "WaferLoading", Variable = "stAxisArPos", Axis = 11, Index = 0)]
|
||||
public double WaferZServoLoadingManualPosition { get; set; }
|
||||
|
||||
[Column("wafer_z_servo_loading_idle_position"), Description("晶环换料升降伺服待机位置"),
|
||||
Property(Group = "WaferLoading", Variable = "stAxisArPos", Axis = 11, Index = 1)]
|
||||
public double WaferZServoLoadingIdlePosition { get; set; }
|
||||
|
||||
[Column("wafer_z_servo_relate_wafer_rotate_servo_loading_idle_position"), Description("晶环换料升降伺服晶环旋转端换料位置"),
|
||||
Property(Group = "WaferLoading", Variable = "stAxisArPos", Axis = 11, Index = 2)]
|
||||
public double WaferZServoRelateWaferRotateServoLoadingIdlePosition { get; set; }
|
||||
|
||||
[Column("wafer_z_servo_to_wafer_box1_position"), Description("晶环换料升降伺服晶环料盒1层位置"),
|
||||
Property(Group = "WaferLoading", Variable = "stAxisArPos", Axis = 11, Index = 3)]
|
||||
public double WaferZServoToWaferBox1Position { get; set; }
|
||||
|
||||
[Column("wafer_z_servo_to_wafer_box2_position"), Description("晶环换料升降伺服晶环料盒2层位置"),
|
||||
Property(Group = "WaferLoading", Variable = "stAxisArPos", Axis = 11, Index = 4)]
|
||||
public double WaferZServoToWaferBox2Position { get; set; }
|
||||
|
||||
[Column("wafer_z_servo_to_wafer_box3_position"), Description("晶环换料升降伺服晶环料盒3层位置"),
|
||||
Property(Group = "WaferLoading", Variable = "stAxisArPos", Axis = 11, Index = 5)]
|
||||
public double WaferZServoToWaferBox3Position { get; set; }
|
||||
|
||||
[Column("wafer_z_servo_to_wafer_box4_position"), Description("晶环换料升降伺服晶环料盒4层位置"),
|
||||
Property(Group = "WaferLoading", Variable = "stAxisArPos", Axis = 11, Index = 6)]
|
||||
public double WaferZServoToWaferBox4Position { get; set; }
|
||||
|
||||
[Column("wafer_z_servo_to_wafer_box5_position"), Description("晶环换料升降伺服晶环料盒5层位置"),
|
||||
Property(Group = "WaferLoading", Variable = "stAxisArPos", Axis = 11, Index = 7)]
|
||||
public double WaferZServoToWaferBox5Position { get; set; }
|
||||
|
||||
[Column("wafer_z_servo_to_wafer_box6_position"), Description("晶环换料升降伺服晶环料盒6层位置"),
|
||||
Property(Group = "WaferLoading", Variable = "stAxisArPos", Axis = 11, Index = 8)]
|
||||
public double WaferZServoToWaferBox6Position { get; set; }
|
||||
|
||||
[Column("wafer_z_servo_to_wafer_box7_position"), Description("晶环换料升降伺服晶环料盒7层位置"),
|
||||
Property(Group = "WaferLoading", Variable = "stAxisArPos", Axis = 11, Index = 9)]
|
||||
public double WaferZServoToWaferBox7Position { get; set; }
|
||||
|
||||
[Column("wafer_z_servo_to_wafer_box8_position"), Description("晶环换料升降伺服晶环料盒8层位置"),
|
||||
Property(Group = "WaferLoading", Variable = "stAxisArPos", Axis = 11, Index = 10)]
|
||||
public double WaferZServoToWaferBox8Position { get; set; }
|
||||
|
||||
[Column("wafer_z_servo_to_wafer_box9_position"), Description("晶环换料升降伺服晶环料盒9层位置"),
|
||||
Property(Group = "WaferLoading", Variable = "stAxisArPos", Axis = 11, Index = 11)]
|
||||
public double WaferZServoToWaferBox9Position { get; set; }
|
||||
|
||||
[Column("wafer_z_servo_to_wafer_box10_position"), Description("晶环换料升降伺服晶环料盒10层位置"),
|
||||
Property(Group = "WaferLoading", Variable = "stAxisArPos", Axis = 11, Index = 12)]
|
||||
public double WaferZServoToWaferBox10Position { get; set; }
|
||||
|
||||
[Column("wafer_translation_servo_loading_manual_position"), Description("晶环换料平移伺服手动位置"),
|
||||
Property(Group = "WaferLoading", Variable = "stAxisArPos", Axis = 12, Index = 0)]
|
||||
public double WaferTranslationServoLoadingManualPosition { get; set; }
|
||||
|
||||
[Column("wafer_translation_servo_loading_idle_position"), Description("晶环换料平移伺服待机位置"),
|
||||
Property(Group = "WaferLoading", Variable = "stAxisArPos", Axis = 12, Index = 1)]
|
||||
public double WaferTranslationServoLoadingIdlePosition { get; set; }
|
||||
|
||||
|
||||
[Column("wafer_translation_servo_relate_wafer_rotate_servo_loading_idle_position"),
|
||||
Description("晶环换料平移伺服晶环旋转端换料位置"),
|
||||
Property(Group = "WaferLoading", Variable = "stAxisArPos", Axis = 12, Index = 2)]
|
||||
public double WaferTranslationServoRelateWaferRotateServoLoadingIdlePosition { get; set; }
|
||||
|
||||
[Column("wafer_translation_servo_to_wafer_box_take_wafer_position"), Description("晶环换料平移伺服晶环料盒端换料位置-取料"),
|
||||
Property(Group = "WaferLoading", Variable = "stAxisArPos", Axis = 12, Index = 3)]
|
||||
public double WaferTranslationServoToWaferBoxTakeWaferPosition { get; set; }
|
||||
|
||||
[Column("wafer_translation_servo_to_wafer_box_put_wafer_position"), Description("晶环换料平移伺服晶环料盒端换料位置-放料"),
|
||||
Property(Group = "WaferLoading", Variable = "stAxisArPos", Axis = 12, Index = 4)]
|
||||
public double WaferTranslationServoToWaferBoxPutWaferPosition { get; set; }
|
||||
}
|
|
@ -1,569 +0,0 @@
|
|||
using System.ComponentModel;
|
||||
using MasstransferCommon.Model.Atrributes;
|
||||
using MasstransferCommon.Model.Entity;
|
||||
using SQLite;
|
||||
|
||||
namespace MasstransferExporter.DataExporter.Model;
|
||||
|
||||
/// <summary>
|
||||
/// 轴变量参数
|
||||
/// </summary>
|
||||
[Table("axis_variables"), Description("轴变量")]
|
||||
public class AxisVariables : Entity
|
||||
{
|
||||
[Column("wafer_y_motor_left_soft_limit"), Description("晶圆Y轴左软限位"),
|
||||
Property(Group = "SoftLimit", Variable = "stAxisSoftLimit", Axis = 0, Index = 0)]
|
||||
public double WaferYMotorLeftSoftLimit { get; set; }
|
||||
|
||||
[Column("wafer_y_motor_right_soft_limit"), Description("晶圆Y轴右软限位"),
|
||||
Property(Group = "SoftLimit", Variable = "stAxisSoftLimit", Axis = 0, Index = 1)]
|
||||
public double WaferYMotorRightSoftLimit { get; set; }
|
||||
|
||||
[Column("wafer_y_slave_motor_left_soft_limit"), Description("晶圆Y轴从机左软限位"),
|
||||
Property(Group = "SoftLimit", Variable = "stAxisSoftLimit", Axis = 1, Index = 0)]
|
||||
public double WaferYSlaveMotorLeftSoftLimit { get; set; }
|
||||
|
||||
[Column("wafer_y_slave_motor_right_soft_limit"), Description("晶圆Y轴从机右软限位"),
|
||||
Property(Group = "SoftLimit", Variable = "stAxisSoftLimit", Axis = 1, Index = 1)]
|
||||
public double WaferYSlaveMotorRightSoftLimit { get; set; }
|
||||
|
||||
[Column("needle_y_motor_left_soft_limit"), Description("针刺Y轴左软限位"),
|
||||
Property(Group = "SoftLimit", Variable = "stAxisSoftLimit", Axis = 2, Index = 0)]
|
||||
public double NeedleYMotorLeftSoftLimit { get; set; }
|
||||
|
||||
[Column("needle_y_motor_right_soft_limit"), Description("针刺Y轴右软限位"),
|
||||
Property(Group = "SoftLimit", Variable = "stAxisSoftLimit", Axis = 2, Index = 1)]
|
||||
public double NeedleYMotorRightSoftLimit { get; set; }
|
||||
|
||||
[Column("needle_y_slave_motor_left_soft_limit"), Description("针刺Y轴从机左软限位"),
|
||||
Property(Group = "SoftLimit", Variable = "stAxisSoftLimit", Axis = 3, Index = 0)]
|
||||
public double NeedleYSlaveMotorLeftSoftLimit { get; set; }
|
||||
|
||||
[Column("needle_y_slave_motor_right_soft_limit"), Description("针刺Y轴从机右软限位"),
|
||||
Property(Group = "SoftLimit", Variable = "stAxisSoftLimit", Axis = 3, Index = 1)]
|
||||
public double NeedleYSlaveMotorRightSoftLimit { get; set; }
|
||||
|
||||
[Column("wafer_x_motor_1_left_soft_limit"), Description("晶圆X轴1左软限位"),
|
||||
Property(Group = "SoftLimit", Variable = "stAxisSoftLimit", Axis = 4, Index = 0)]
|
||||
public double WaferXMotor1LeftSoftLimit { get; set; }
|
||||
|
||||
[Column("wafer_x_motor_1_right_soft_limit"), Description("晶圆X轴1右软限位"),
|
||||
Property(Group = "SoftLimit", Variable = "stAxisSoftLimit", Axis = 4, Index = 1)]
|
||||
public double WaferXMotor1RightSoftLimit { get; set; }
|
||||
|
||||
[Column("needle_x_motor1_left_soft_limit"), Description("针刺X轴左软限位"),
|
||||
Property(Group = "SoftLimit", Variable = "stAxisSoftLimit", Axis = 5, Index = 0)]
|
||||
public double NeedleXMotor1LeftSoftLimit { get; set; }
|
||||
|
||||
[Column("needle_x_motor1_right_soft_limit"), Description("针刺X轴右软限位"),
|
||||
Property(Group = "SoftLimit", Variable = "stAxisSoftLimit", Axis = 5, Index = 1)]
|
||||
public double NeedleXMotor1RightSoftLimit { get; set; }
|
||||
|
||||
[Column("wafer_x_motor_2_left_soft_limit"), Description("晶圆X轴2左软限位"),
|
||||
Property(Group = "SoftLimit", Variable = "stAxisSoftLimit", Axis = 6, Index = 0)]
|
||||
public double WaferXMotor2LeftSoftLimit { get; set; }
|
||||
|
||||
[Column("wafer_x_motor_2_right_soft_limit"), Description("晶圆X轴2右软限位"),
|
||||
Property(Group = "SoftLimit", Variable = "stAxisSoftLimit", Axis = 6, Index = 1)]
|
||||
public double WaferXMotor2RightSoftLimit { get; set; }
|
||||
|
||||
[Column("needle_x_motor2_left_soft_limit"), Description("针刺X轴2左软限位"),
|
||||
Property(Group = "SoftLimit", Variable = "stAxisSoftLimit", Axis = 7, Index = 0)]
|
||||
public double NeedleXMotor2LeftSoftLimit { get; set; }
|
||||
|
||||
[Column("needle_x_motor2_right_soft_limit"), Description("针刺X轴2右软限位"),
|
||||
Property(Group = "SoftLimit", Variable = "stAxisSoftLimit", Axis = 7, Index = 1)]
|
||||
public double NeedleXMotor2RightSoftLimit { get; set; }
|
||||
|
||||
[Column("needle_z_motor_left_soft_limit"), Description("针刺Z轴左软限位"),
|
||||
Property(Group = "SoftLimit", Variable = "stAxisSoftLimit", Axis = 8, Index = 0)]
|
||||
public double NeedleZMotorLeftSoftLimit { get; set; }
|
||||
|
||||
[Column("needle_z_motor_right_soft_limit"), Description("针刺Z轴右软限位"),
|
||||
Property(Group = "SoftLimit", Variable = "stAxisSoftLimit", Axis = 8, Index = 1)]
|
||||
public double NeedleZMotorRightSoftLimit { get; set; }
|
||||
|
||||
[Column("needle_z_servo_left_soft_limit"), Description("针刺Z轴左软限位"),
|
||||
Property(Group = "SoftLimit", Variable = "stAxisSoftLimit", Axis = 9, Index = 0)]
|
||||
public double NeedleZServoLeftSoftLimit { get; set; }
|
||||
|
||||
[Column("needle_z_servo_right_soft_limit"), Description("针刺Z轴右软限位"),
|
||||
Property(Group = "SoftLimit", Variable = "stAxisSoftLimit", Axis = 9, Index = 1)]
|
||||
public double NeedleZServoRightSoftLimit { get; set; }
|
||||
|
||||
[Column("wafer_rotate_servo_left_soft_limit"), Description("晶圆旋转轴左软限位"),
|
||||
Property(Group = "SoftLimit", Variable = "stAxisSoftLimit", Axis = 10, Index = 0)]
|
||||
public double WaferRotateServoLeftSoftLimit { get; set; }
|
||||
|
||||
[Column("wafer_rotate_servo_right_soft_limit"), Description("晶圆旋转轴右软限位"),
|
||||
Property(Group = "SoftLimit", Variable = "stAxisSoftLimit", Axis = 10, Index = 1)]
|
||||
public double WaferRotateServoRightSoftLimit { get; set; }
|
||||
|
||||
[Column("wafer_up_down_servo_left_soft_limit"), Description("晶圆上下轴左软限位"),
|
||||
Property(Group = "SoftLimit", Variable = "stAxisSoftLimit", Axis = 11, Index = 0)]
|
||||
public double WaferUpDownServoLeftSoftLimit { get; set; }
|
||||
|
||||
[Column("wafer_up_down_servo_right_soft_limit"), Description("晶圆上下轴右软限位"),
|
||||
Property(Group = "SoftLimit", Variable = "stAxisSoftLimit", Axis = 11, Index = 1)]
|
||||
public double WaferUpDownServoRightSoftLimit { get; set; }
|
||||
|
||||
[Column("wafer_translation_servo_left_soft_limit"), Description("晶圆平移轴左软限位"),
|
||||
Property(Group = "SoftLimit", Variable = "stAxisSoftLimit", Axis = 12, Index = 0)]
|
||||
public double WaferTranslationServoLeftSoftLimit { get; set; }
|
||||
|
||||
[Column("wafer_translation_servo_right_soft_limit"), Description("晶圆平移轴右软限位"),
|
||||
Property(Group = "SoftLimit", Variable = "stAxisSoftLimit", Axis = 12, Index = 1)]
|
||||
public double WaferTranslationServoRightSoftLimit { get; set; }
|
||||
|
||||
[Column("substrate_location_servo_left_soft_limit"), Description(" 基板定位步进电机左软限位"),
|
||||
Property(Group = "SoftLimit", Variable = "stAxisSoftLimit", Axis = 13, Index = 0)]
|
||||
public double SubstrateLocationServoLeftSoftLimit { get; set; }
|
||||
|
||||
[Column("substrate_location_servo_right_soft_limit"), Description(" 基板定位步进电机右软限位"),
|
||||
Property(Group = "SoftLimit", Variable = "stAxisSoftLimit", Axis = 13, Index = 1)]
|
||||
public double SubstrateLocationServoRightSoftLimit { get; set; }
|
||||
|
||||
|
||||
[Column("needle_z_job_compensation"), Description("针刺Z轴工作补偿"),
|
||||
Property(Group = "Job", Variable = "Axis8TransferPosPlus")]
|
||||
public double NeedleZJobCompensation { get; set; }
|
||||
|
||||
[Column("needle_x_1_flying_trigger_velocity"), Description("针刺X轴飞拍速度"),
|
||||
Property(Group = "Job", Variable = "axisFlyVel")]
|
||||
public double NeedleX1FlyingTriggerVelocity { get; set; }
|
||||
|
||||
[Column("job_frequency"), Description("动打频率"), Property(Group = "Job", Variable = "axisTransferVel")]
|
||||
public int JobFrequency { get; set; }
|
||||
|
||||
[Column("wafer_y_auto_velocity"), Description("晶圆Y轴自动速度"),
|
||||
Property(Group = "WaferY", Variable = "axisVel", Axis = 0, Index = 0)]
|
||||
public int WaferYAutoVelocity { get; set; }
|
||||
|
||||
[Column("wafer_y_auto_acceleration"), Description("晶圆Y轴自动加速度"),
|
||||
Property(Group = "WaferY", Variable = "axisAcc", Axis = 0, Index = 0)]
|
||||
public int WaferYAutoAcceleration { get; set; }
|
||||
|
||||
[Column("wafer_y_auto_deceleration"), Description("晶圆Y轴自动减速度"),
|
||||
Property(Group = "WaferY", Variable = "axisDec", Axis = 0, Index = 0)]
|
||||
public int WaferYAutoDeceleration { get; set; }
|
||||
|
||||
[Column("wafer_y_auto_jerk"), Description("晶圆Y轴自动加加速度"),
|
||||
Property(Group = "WaferY", Variable = "axisJerk", Axis = 0, Index = 0)]
|
||||
public int WaferYAutoJerk { get; set; }
|
||||
|
||||
[Column("wafer_y_reset_velocity"), Description("晶圆Y轴回原速度"),
|
||||
Property(Group = "WaferY", Variable = "axisVel", Axis = 0, Index = 1)]
|
||||
public int WaferYResetVelocity { get; set; }
|
||||
|
||||
[Column("wafer_y_reset_acceleration"), Description("晶圆Y轴回原加速度"),
|
||||
Property(Group = "WaferY", Variable = "axisAcc", Axis = 0, Index = 1)]
|
||||
public int WaferYResetAcceleration { get; set; }
|
||||
|
||||
[Column("wafer_y_reset_deceleration"), Description("晶圆Y轴回原减速度"),
|
||||
Property(Group = "WaferY", Variable = "axisDec", Axis = 0, Index = 1)]
|
||||
public int WaferYResetDeceleration { get; set; }
|
||||
|
||||
[Column("wafer_y_reset_jerk"), Description("晶圆Y轴回原加加速度"),
|
||||
Property(Group = "WaferY", Variable = "axisJerk", Axis = 0, Index = 1)]
|
||||
public int WaferYResetJerk { get; set; }
|
||||
|
||||
[Column("needle_y_auto_velocity"), Description("针刺Y轴自动速度"),
|
||||
Property(Group = "NeedleY", Variable = "axisVel", Axis = 2, Index = 0)]
|
||||
public int NeedleYAutoVelocity { get; set; }
|
||||
|
||||
[Column("needle_y_auto_acceleration"), Description("针刺Y轴自动加速度"),
|
||||
Property(Group = "NeedleY", Variable = "axisAcc", Axis = 2, Index = 0)]
|
||||
public int NeedleYAutoAcceleration { get; set; }
|
||||
|
||||
[Column("needle_y_auto_deceleration"), Description("针刺Y轴自动减速度"),
|
||||
Property(Group = "NeedleY", Variable = "axisDec", Axis = 2, Index = 0)]
|
||||
public int NeedleYAutoDeceleration { get; set; }
|
||||
|
||||
[Column("needle_y_auto_jerk"), Description("针刺Y轴自动加加速度"),
|
||||
Property(Group = "NeedleY", Variable = "axisJerk", Axis = 2, Index = 0)]
|
||||
public int NeedleYAutoJerk { get; set; }
|
||||
|
||||
[Column("needle_y_reset_velocity"), Description("针刺Y轴回原速度"),
|
||||
Property(Group = "NeedleY", Variable = "axisVel", Axis = 2, Index = 1)]
|
||||
public int NeedleYResetVelocity { get; set; }
|
||||
|
||||
[Column("needle_y_reset_acceleration"), Description("针刺Y轴回原加速度"),
|
||||
Property(Group = "NeedleY", Variable = "axisAcc", Axis = 2, Index = 1)]
|
||||
public int NeedleYResetAcceleration { get; set; }
|
||||
|
||||
[Column("needle_y_reset_deceleration"), Description("针刺Y轴回原减速度"),
|
||||
Property(Group = "NeedleY", Variable = "axisDec", Axis = 2, Index = 1)]
|
||||
public int NeedleYResetDeceleration { get; set; }
|
||||
|
||||
[Column("needle_y_reset_jerk"), Description("针刺Y轴回原加加速度"),
|
||||
Property(Group = "NeedleY", Variable = "axisJerk", Axis = 2, Index = 1)]
|
||||
public int NeedleYResetJerk { get; set; }
|
||||
|
||||
[Column("wafer_x_auto_velocity"), Description("晶圆X轴自动速度"),
|
||||
Property(Group = "WaferX", Variable = "axisVel", Axis = 4, Index = 0)]
|
||||
public int WaferXAutoVelocity { get; set; }
|
||||
|
||||
[Column("wafer_x_auto_acceleration"), Description("晶圆X轴自动加速度"),
|
||||
Property(Group = "WaferX", Variable = "axisAcc", Axis = 4, Index = 0)]
|
||||
public int WaferXAutoAcceleration { get; set; }
|
||||
|
||||
[Column("wafer_x_auto_deceleration"), Description("晶圆X轴自动减速度"),
|
||||
Property(Group = "WaferX", Variable = "axisDec", Axis = 4, Index = 0)]
|
||||
public int WaferXAutoDeceleration { get; set; }
|
||||
|
||||
[Column("wafer_x_auto_jerk"), Description("晶圆X轴自动加加速度"),
|
||||
Property(Group = "WaferX", Variable = "axisJerk", Axis = 4, Index = 0)]
|
||||
public int WaferXAutoJerk { get; set; }
|
||||
|
||||
[Column("wafer_x_reset_velocity"), Description("晶圆X回原速度"),
|
||||
Property(Group = "WaferX", Variable = "axisVel", Axis = 4, Index = 1)]
|
||||
public int WaferXResetVelocity { get; set; }
|
||||
|
||||
[Column("wafer_x_reset_acceleration"), Description("晶圆X轴回原加速度"),
|
||||
Property(Group = "WaferX", Variable = "axisAcc", Axis = 4, Index = 1)]
|
||||
public int WaferXResetAcceleration { get; set; }
|
||||
|
||||
[Column("wafer_x_reset_deceleration"), Description("晶圆X轴回原减速度"),
|
||||
Property(Group = "WaferX", Variable = "axisDec", Axis = 4, Index = 1)]
|
||||
public int WaferXResetDeceleration { get; set; }
|
||||
|
||||
[Column("wafer_x_reset_jerk"), Description("晶圆X轴回原加加速度"),
|
||||
Property(Group = "WaferX", Variable = "axisJerk", Axis = 4, Index = 1)]
|
||||
public int WaferXResetJerk { get; set; }
|
||||
|
||||
[Column("needle_x_auto_velocity"), Description("针刺X轴自动速度"),
|
||||
Property(Group = "NeedleX", Variable = "axisVel", Axis = 5, Index = 0)]
|
||||
public int NeedleXAutoVelocity { get; set; }
|
||||
|
||||
[Column("needle_x_auto_acceleration"), Description("针刺X轴自动加速度"),
|
||||
Property(Group = "NeedleX", Variable = "axisAcc", Axis = 5, Index = 0)]
|
||||
public int NeedleXAutoAcceleration { get; set; }
|
||||
|
||||
[Column("needle_x_auto_deceleration"), Description("针刺X轴自动减速度"),
|
||||
Property(Group = "NeedleX", Variable = "axisDec", Axis = 5, Index = 0)]
|
||||
public int NeedleXAutoDeceleration { get; set; }
|
||||
|
||||
[Column("needle_x_auto_jerk"), Description("针刺X轴自动加加速度"),
|
||||
Property(Group = "NeedleX", Variable = "axisJerk", Axis = 5, Index = 0)]
|
||||
public int NeedleXAutoJerk { get; set; }
|
||||
|
||||
|
||||
[Column("needle_x_reset_velocity"), Description("针刺X回原速度"),
|
||||
Property(Group = "NeedleX", Variable = "axisVel", Axis = 5, Index = 1)]
|
||||
public int NeedleXResetVelocity { get; set; }
|
||||
|
||||
[Column("needle_x_reset_acceleration"), Description("针刺X轴回原加速度"),
|
||||
Property(Group = "NeedleX", Variable = "axisAcc", Axis = 5, Index = 1)]
|
||||
public int NeedleXResetAcceleration { get; set; }
|
||||
|
||||
[Column("needle_x_reset_deceleration"), Description("针刺X轴回原减速度"),
|
||||
Property(Group = "NeedleX", Variable = "axisDec", Axis = 5, Index = 1)]
|
||||
public int NeedleXResetDeceleration { get; set; }
|
||||
|
||||
[Column("needle_x_reset_jerk"), Description("针刺X轴回原加加速度"),
|
||||
Property(Group = "NeedleX", Variable = "axisJerk", Axis = 5, Index = 1)]
|
||||
public int NeedleXResetJerk { get; set; }
|
||||
|
||||
[Column("wafer_x2_auto_velocity"), Description("晶圆X2轴自动速度"),
|
||||
Property(Group = "WaferX", Variable = "axisVel", Axis = 6, Index = 0)]
|
||||
public int WaferX2AutoVelocity { get; set; }
|
||||
|
||||
[Column("wafer_x2_auto_acceleration"), Description("晶圆X2轴自动加速度"),
|
||||
Property(Group = "WaferX", Variable = "axisAcc", Axis = 6, Index = 0)]
|
||||
public int WaferX2AutoAcceleration { get; set; }
|
||||
|
||||
[Column("wafer_x2_auto_deceleration"), Description("晶圆X2轴自动减速度"),
|
||||
Property(Group = "WaferX", Variable = "axisDec", Axis = 6, Index = 0)]
|
||||
public int WaferX2AutoDeceleration { get; set; }
|
||||
|
||||
[Column("wafer_x2_auto_jerk"), Description("晶圆X2轴自动加加速度"),
|
||||
Property(Group = "WaferX", Variable = "axisJerk", Axis = 6, Index = 0)]
|
||||
public int WaferX2AutoJerk { get; set; }
|
||||
|
||||
[Column("wafer_x2_reset_velocity"), Description("晶圆X2回原速度"),
|
||||
Property(Group = "WaferX", Variable = "axisVel", Axis = 6, Index = 1)]
|
||||
public int WaferX2ResetVelocity { get; set; }
|
||||
|
||||
[Column("wafer_x2_reset_acceleration"), Description("晶圆X2轴回原加速度"),
|
||||
Property(Group = "WaferX", Variable = "axisAcc", Axis = 6, Index = 1)]
|
||||
public int WaferX2ResetAcceleration { get; set; }
|
||||
|
||||
[Column("wafer_x2_reset_deceleration"), Description("晶圆X2轴回原减速度"),
|
||||
Property(Group = "WaferX", Variable = "axisDec", Axis = 6, Index = 1)]
|
||||
public int WaferX2ResetDeceleration { get; set; }
|
||||
|
||||
[Column("wafer_x2_reset_jerk"), Description("晶圆X2轴回原加加速度"),
|
||||
Property(Group = "WaferX", Variable = "axisJerk", Axis = 6, Index = 1)]
|
||||
public int WaferX2ResetJerk { get; set; }
|
||||
|
||||
[Column("needle_x2_auto_velocity"), Description("针刺X2轴自动速度"),
|
||||
Property(Group = "NeedleX", Variable = "axisVel", Axis = 7, Index = 0)]
|
||||
public int NeedleX2AutoVelocity { get; set; }
|
||||
|
||||
[Column("needle_x2_auto_acceleration"), Description("针刺X2轴自动加速度"), Property(Group = "NeedleX",
|
||||
Variable = "axisAcc", Axis = 7, Index = 0)]
|
||||
public int NeedleX2AutoAcceleration { get; set; }
|
||||
|
||||
[Column("needle_x2_auto_deceleration"), Description("针刺X2轴自动减速度"),
|
||||
Property(Group = "NeedleX", Variable = "axisDec", Axis = 7, Index = 0)]
|
||||
public int NeedleX2AutoDeceleration { get; set; }
|
||||
|
||||
[Column("needle_x2_auto_jerk"), Description("针刺X2轴自动加加速度"),
|
||||
Property(Group = "NeedleX", Variable = "axisJerk", Axis = 7, Index = 0)]
|
||||
public int NeedleX2AutoJerk { get; set; }
|
||||
|
||||
[Column("needle_x2_reset_velocity"), Description("针刺X2回原速度"),
|
||||
Property(Group = "NeedleX", Variable = "axisVel", Axis = 7, Index = 1)]
|
||||
public int NeedleX2ResetVelocity { get; set; }
|
||||
|
||||
[Column("needle_x2_reset_acceleration"), Description("针刺X2轴回原加速度"),
|
||||
Property(Group = "NeedleX", Variable = "axisAcc", Axis = 7, Index = 1)]
|
||||
public int NeedleX2ResetAcceleration { get; set; }
|
||||
|
||||
[Column("needle_x2_reset_deceleration"), Description("针刺X2轴回原减速度"),
|
||||
Property(Group = "NeedleX", Variable = "axisDec", Axis = 7, Index = 1)]
|
||||
public int NeedleX2ResetDeceleration { get; set; }
|
||||
|
||||
[Column("needle_x2_reset_jerk"), Description("针刺X2轴回原加加速度"),
|
||||
Property(Group = "NeedleX", Variable = "axisJerk", Axis = 7, Index = 1)]
|
||||
public int NeedleX2ResetJerk { get; set; }
|
||||
|
||||
[Column("needle_z_auto_velocity"), Description("针刺升降音圈电机自动速度"),
|
||||
Property(Group = "NeedleZ", Variable = "axisVel", Axis = 8, Index = 0)]
|
||||
public int NeedleZAutoVelocity { get; set; }
|
||||
|
||||
[Column("needle_z_auto_acceleration"), Description("针刺升降音圈电机自动加速度"),
|
||||
Property(Group = "NeedleZ", Variable = "axisAcc", Axis = 8, Index = 0)]
|
||||
public int NeedleZAutoAcceleration { get; set; }
|
||||
|
||||
[Column("needle_z_auto_deceleration"), Description("针刺升降音圈电机自动减速度"),
|
||||
Property(Group = "NeedleZ", Variable = "axisDec", Axis = 8, Index = 0)]
|
||||
public int NeedleZAutoDeceleration { get; set; }
|
||||
|
||||
[Column("needle_z_auto_jerk"), Description("针刺升降音圈电机自动加加速度"),
|
||||
Property(Group = "NeedleZ", Variable = "axisJerk", Axis = 8, Index = 0)]
|
||||
public int NeedleZAutoJerk { get; set; }
|
||||
|
||||
[Column("needle_z_reset_velocity"), Description("针刺升降音圈电机回原速度"),
|
||||
Property(Group = "NeedleZ", Variable = "axisVel", Axis = 8, Index = 1)]
|
||||
public int NeedleZResetVelocity { get; set; }
|
||||
|
||||
[Column("needle_z_reset_acceleration"), Description("针刺升降音圈电机回原加速度"),
|
||||
Property(Group = "NeedleZ", Variable = "axisAcc", Axis = 8, Index = 1)]
|
||||
public int NeedleZResetAcceleration { get; set; }
|
||||
|
||||
[Column("needle_z_reset_deceleration"), Description("针刺升降音圈电机回原减速度"),
|
||||
Property(Group = "NeedleZ", Variable = "axisDec", Axis = 8, Index = 1)]
|
||||
public int NeedleZResetDeceleration { get; set; }
|
||||
|
||||
[Column("needle_z_reset_jerk"), Description("针刺升降音圈电机回原加加速度"),
|
||||
Property(Group = "NeedleZ", Variable = "axisJerk", Axis = 8, Index = 1)]
|
||||
public int NeedleZResetJerk { get; set; }
|
||||
|
||||
[Column("needle_z_servo_auto_velocity"), Description("针刺升降伺服自动速度"),
|
||||
Property(Group = "NeedleZ", Variable = "axisVel", Axis = 9, Index = 0)]
|
||||
public int NeedleZServoAutoVelocity { get; set; }
|
||||
|
||||
[Column("needle_z_servo_auto_acceleration"), Description("针刺升降伺服自动加速度"),
|
||||
Property(Group = "NeedleZ", Variable = "axisAcc", Axis = 9, Index = 0)]
|
||||
public int NeedleZServoAutoAcceleration { get; set; }
|
||||
|
||||
[Column("needle_z_servo_auto_deceleration"), Description("针刺升降伺服自动减速度"),
|
||||
Property(Group = "NeedleZ", Variable = "axisDec", Axis = 9, Index = 0)]
|
||||
public int NeedleZServoAutoDeceleration { get; set; }
|
||||
|
||||
[Column("needle_z_servo_auto_jerk"), Description("针刺升降伺服自动加加速度"),
|
||||
Property(Group = "NeedleZ", Variable = "axisJerk", Axis = 9, Index = 0)]
|
||||
public int NeedleZServoAutoJerk { get; set; }
|
||||
|
||||
[Column("needle_z_servo_reset_velocity"), Description("针刺升降伺服回原速度"),
|
||||
Property(Group = "NeedleZ", Variable = "axisVel", Axis = 9, Index = 1)]
|
||||
public int NeedleZServoResetVelocity { get; set; }
|
||||
|
||||
[Column("needle_z_servo_reset_acceleration"), Description("针刺升降伺服回原加速度"),
|
||||
Property(Group = "NeedleZ", Variable = "axisAcc", Axis = 9, Index = 1)]
|
||||
public int NeedleZServoResetAcceleration { get; set; }
|
||||
|
||||
[Column("needle_z_servo_reset_deceleration"), Description("针刺升降伺服回原减速度"),
|
||||
Property(Group = "NeedleZ", Variable = "axisDec", Axis = 9, Index = 1)]
|
||||
public int NeedleZServoResetDeceleration { get; set; }
|
||||
|
||||
[Column("needle_z_servo_reset_jerk"), Description("针刺升降伺服回原加加速度"),
|
||||
Property(Group = "NeedleZ", Variable = "axisJerk", Axis = 9, Index = 1)]
|
||||
public int NeedleZServoResetJerk { get; set; }
|
||||
|
||||
|
||||
[Column("wafer_rotate_servo_auto_velocity"), Description("晶环旋转伺服自动速度"),
|
||||
Property(Group = "WaferRotate", Variable = "axisVel", Axis = 10, Index = 0)]
|
||||
public int WaferRotateServoAutoVelocity { get; set; }
|
||||
|
||||
[Column("wafer_rotate_servo_auto_acceleration"), Description("晶环旋转伺服自动加速度"),
|
||||
Property(Group = "WaferRotate", Variable = "axisAcc", Axis = 10, Index = 0)]
|
||||
public int WaferRotateServoAutoAcceleration { get; set; }
|
||||
|
||||
[Column("wafer_rotate_servo_auto_deceleration"), Description("晶环旋转伺服自动减速度"),
|
||||
Property(Group = "WaferRotate", Variable = "axisDec", Axis = 10, Index = 0)]
|
||||
public int WaferRotateServoAutoDeceleration { get; set; }
|
||||
|
||||
[Column("wafer_rotate_servo_auto_jerk"), Description("晶环旋转伺服自动加加速度"),
|
||||
Property(Group = "WaferRotate", Variable = "axisJerk", Axis = 10, Index = 0)]
|
||||
public int WaferRotateServoAutoJerk { get; set; }
|
||||
|
||||
[Column("wafer_rotate_servo_reset_velocity"), Description("晶环旋转伺服回原速度"),
|
||||
Property(Group = "WaferRotate", Variable = "axisVel", Axis = 10, Index = 1)]
|
||||
public int WaferRotateServoResetVelocity { get; set; }
|
||||
|
||||
[Column("wafer_rotate_servo_reset_acceleration"), Description("晶环旋转伺服回原加速度"),
|
||||
Property(Group = "WaferRotate", Variable = "axisAcc", Axis = 10, Index = 1)]
|
||||
public int WaferRotateServoResetAcceleration { get; set; }
|
||||
|
||||
[Column("wafer_rotate_servo_reset_deceleration"), Description("晶环旋转伺服回原减速度"),
|
||||
Property(Group = "WaferRotate", Variable = "axisDec", Axis = 10, Index = 1)]
|
||||
public int WaferRotateServoResetDeceleration { get; set; }
|
||||
|
||||
[Column("wafer_rotate_servo_reset_jerk"), Description("晶环旋转伺服回原加加速度"),
|
||||
Property(Group = "WaferRotate", Variable = "axisJerk", Axis = 10, Index = 1)]
|
||||
public int WaferRotateServoResetJerk { get; set; }
|
||||
|
||||
[Column("wafer_up_down_servo_auto_velocity"), Description("晶环上料升降步进自动速度"),
|
||||
Property(Group = "WaferLoading", Variable = "axisVel", Axis = 11, Index = 0)]
|
||||
public int WaferUpDownServoAutoVelocity { get; set; }
|
||||
|
||||
[Column("wafer_up_down_servo_auto_acceleration"), Description("晶环上料升降步进自动加速度"),
|
||||
Property(Group = "WaferLoading", Variable = "axisAcc", Axis = 11, Index = 0)]
|
||||
public int WaferUpDownServoAutoAcceleration { get; set; }
|
||||
|
||||
[Column("wafer_up_down_servo_auto_deceleration"), Description("晶环上料升降步进自动减速度"),
|
||||
Property(Group = "WaferLoading", Variable = "axisDec", Axis = 11, Index = 0)]
|
||||
public int WaferUpDownServoAutoDeceleration { get; set; }
|
||||
|
||||
[Column("wafer_up_down_servo_auto_jerk"), Description("晶环上料升降步进自动加加速度"),
|
||||
Property(Group = "WaferLoading", Variable = "axisJerk", Axis = 11, Index = 0)]
|
||||
public int WaferUpDownServoAutoJerk { get; set; }
|
||||
|
||||
[Column("wafer_up_down_servo_reset_velocity"), Description("晶环上料升降步进回原速度"),
|
||||
Property(Group = "WaferLoading", Variable = "axisVel", Axis = 11, Index = 1)]
|
||||
public int WaferUpDownServoResetVelocity { get; set; }
|
||||
|
||||
[Column("wafer_up_down_servo_reset_acceleration"), Description("晶环上料升降步进回原加速度"),
|
||||
Property(Group = "WaferLoading", Variable = "axisAcc", Axis = 11, Index = 1)]
|
||||
public int WaferUpDownServoResetAcceleration { get; set; }
|
||||
|
||||
[Column("wafer_up_down_servo_reset_deceleration"), Description("晶环上料升降步进回原减速度"),
|
||||
Property(Group = "WaferLoading", Variable = "axisDec", Axis = 11, Index = 1)]
|
||||
public int WaferUpDownServoResetDeceleration { get; set; }
|
||||
|
||||
[Column("wafer_up_down_servo_reset_jerk"), Description("晶环上料升降步进回原加加速度"),
|
||||
Property(Group = "WaferLoading", Variable = "axisJerk", Axis = 11, Index = 1)]
|
||||
public int WaferUpDownServoResetJerk { get; set; }
|
||||
|
||||
[Column("wafer_translation_servo_auto_velocity"), Description("晶环上料平移步进自动速度"),
|
||||
Property(Group = "WaferLoading", Variable = "axisVel", Axis = 12, Index = 0)]
|
||||
public int WaferTranslationServoAutoVelocity { get; set; }
|
||||
|
||||
[Column("wafer_translation_servo_auto_acceleration"), Description("晶环上料平移步进自动加速度"),
|
||||
Property(Group = "WaferLoading", Variable = "axisAcc", Axis = 12, Index = 0)]
|
||||
public int WaferTranslationServoAutoAcceleration { get; set; }
|
||||
|
||||
[Column("wafer_translation_servo_auto_deceleration"), Description("晶环上料平移步进自动减速度"),
|
||||
Property(Group = "WaferLoading", Variable = "axisDec", Axis = 12, Index = 0)]
|
||||
public int WaferTranslationServoAutoDeceleration { get; set; }
|
||||
|
||||
[Column("wafer_translation_servo_auto_jerk"), Description("晶环上料平移步进自动加加速度"),
|
||||
Property(Group = "WaferLoading", Variable = "axisJerk", Axis = 12, Index = 0)]
|
||||
public int WaferTranslationServoAutoJerk { get; set; }
|
||||
|
||||
|
||||
[Column("wafer_translation_servo_reset_velocity"), Description("晶环上料平移步进回原速度"),
|
||||
Property(Group = "WaferLoading", Variable = "axisVel", Axis = 12, Index = 1)]
|
||||
public int WaferTranslationServoResetVelocity { get; set; }
|
||||
|
||||
[Column("wafer_translation_servo_acceleration"), Description("晶环上料平移步进回原加速度"),
|
||||
Property(Group = "WaferLoading", Variable = "axisAcc", Axis = 12, Index = 1)]
|
||||
public int WaferTranslationServoAcceleration { get; set; }
|
||||
|
||||
[Column("wafer_translation_servo_deceleration"), Description("晶环上料平移步进回原减速度"),
|
||||
Property(Group = "WaferLoading", Variable = "axisDec", Axis = 12, Index = 1)]
|
||||
public int WaferTranslationServoDeceleration { get; set; }
|
||||
|
||||
[Column("wafer_translation_servo_reset_jerk"), Description("晶环上料平移步进回原加加速度"),
|
||||
Property(Group = "WaferLoading", Variable = "axisJerk", Axis = 12, Index = 1)]
|
||||
public int WaferTranslationServoResetJerk { get; set; }
|
||||
|
||||
[Column("wafer_loading_z_offset"), Description("料盒取料升降避让偏移量"),
|
||||
Property(Group = "WaferLoading", Variable = "iBinLoadZOffset")]
|
||||
public double WaferLoadingZOffset { get; set; }
|
||||
|
||||
|
||||
[Column("wafer_y_motor_origin_offset"), Description("晶片Y轴回源偏移量"),
|
||||
Property(Group = "OriginOffset", Variable = "stAxisOriginOffset", Axis = 0)]
|
||||
public double WaferYMotorOriginOffset { get; set; }
|
||||
|
||||
[Column("wafer_y_slave_motor_origin_offset"), Description("晶圆Y轴电机从轴回源偏移量"),
|
||||
Property(Group = "OriginOffset", Variable = "stAxisOriginOffset", Axis = 1)]
|
||||
public double WaferYSlaveMotorOriginOffset { get; set; }
|
||||
|
||||
[Column("needle_y_motor_origin_offset"), Description("针刺Y轴回原偏移量"),
|
||||
Property(Group = "OriginOffset", Variable = "stAxisOriginOffset", Axis = 2)]
|
||||
public double NeedleYMotorOriginOffset { get; set; }
|
||||
|
||||
[Column("needle_y_slave_motor_origin_offset"), Description("针刺Y轴从轴回原偏移量"),
|
||||
Property(Group = "OriginOffset", Variable = "stAxisOriginOffset", Axis = 3)]
|
||||
public double NeedleYSlaveMotorOriginOffset { get; set; }
|
||||
|
||||
[Column("wafer_x_motor1_origin_offset"), Description("晶园X轴电机回原偏移量"),
|
||||
Property(Group = "OriginOffset", Variable = "stAxisOriginOffset", Axis = 4)]
|
||||
public double WaferXMotor1OriginOffset { get; set; }
|
||||
|
||||
[Column("needle_x_motor1_origin_offset"), Description("针刺X轴电机回原偏移量"),
|
||||
Property(Group = "OriginOffset", Variable = "stAxisOriginOffset", Axis = 5)]
|
||||
public double NeedleXMotor1OriginOffset { get; set; }
|
||||
|
||||
[Column("wafer_x_motor2_origin_offset"), Description("晶圆X轴电机从轴回原偏移量"),
|
||||
Property(Group = "OriginOffset", Variable = "stAxisOriginOffset", Axis = 6)]
|
||||
public double WaferXMotor2OriginOffset { get; set; }
|
||||
|
||||
[Column("needle_x_motor2_origin_offset"), Description("针刺X轴电机从轴回原偏移量"),
|
||||
Property(Group = "OriginOffset", Variable = "stAxisOriginOffset", Axis = 7)]
|
||||
public double NeedleXMotor2OriginOffset { get; set; }
|
||||
|
||||
[Column("needle_z_motor_origin_offset"), Description("针刺Z轴电机回原偏移量"),
|
||||
Property(Group = "OriginOffset", Variable = "stAxisOriginOffset", Axis = 8)]
|
||||
public double NeedleZMotorOriginOffset { get; set; }
|
||||
|
||||
[Column("needle_z_servo_origin_offset"), Description("针刺Z轴私服回原偏移量"),
|
||||
Property(Group = "OriginOffset", Variable = "stAxisOriginOffset", Axis = 9)]
|
||||
public double NeedleZServoOriginOffset { get; set; }
|
||||
|
||||
[Column("wafer_rotate_servo_origin_offset"), Description(" 晶膜旋转伺服回原偏移量"),
|
||||
Property(Group = "OriginOffset", Variable = "stAxisOriginOffset", Axis = 10)]
|
||||
public double WaferRotateServoOriginOffset { get; set; }
|
||||
|
||||
[Column("wafer_up_down_servo_origin_offset"), Description("晶片上下升降伺服回原偏移量"),
|
||||
Property(Group = "OriginOffset", Variable = "stAxisOriginOffset", Axis = 11)]
|
||||
public double WaferUpDownServoOriginOffset { get; set; }
|
||||
|
||||
[Column("wafer_translation_servo_origin_offset"), Description("晶片平移伺服回原偏移量"),
|
||||
Property(Group = "OriginOffset", Variable = "stAxisOriginOffset", Axis = 12)]
|
||||
public double WaferTranslationServoOriginOffset { get; set; }
|
||||
|
||||
[Column("substrate_location_servo_origin_offset"), Description("基板定位步进电机回原偏移量"),
|
||||
Property(Group = "OriginOffset", Variable = "stAxisOriginOffset", Axis = 13)]
|
||||
public double SubstrateLocationServoOriginOffset { get; set; }
|
||||
|
||||
[Column("y_motor_ran_limit_space"), Description("横梁干涉限位"),
|
||||
Property(Group = "RanLimitSpace", Variable = "stRANLimitSpace", Index = 0)]
|
||||
public double YMotorRanLimitSpace { get; set; }
|
||||
|
||||
[Column("needle_y_and_wafer_y_ran_limit_space"), Description("针刺Y和晶圆Y旋转干涉限位"),
|
||||
Property(Group = "RanLimitSpace", Variable = "stRANLimitSpace", Index = 1)]
|
||||
public double NeedleYAndWaferYRanLimitSpace { get; set; }
|
||||
|
||||
[Column("wafer_x_and_needle_x_ran_limit_space"), Description("晶圆X和针刺X旋转干涉限位"),
|
||||
Property(Group = "RanLimitSpace", Variable = "stRANLimitSpace", Index = 2)]
|
||||
public double WaferXMotorAndNeedleXMotorRanLimitSpace { get; set; }
|
||||
|
||||
[Column("needle_z_and_needle_z_servo_ran_limit_space"), Description("音圈Z和私服Z旋转干涉限位"),
|
||||
Property(Group = "RanLimitSpace", Variable = "stRANLimitSpace", Index = 3)]
|
||||
public double NeedleZAndNeedleZServoRanLimitSpace { get; set; }
|
||||
}
|
|
@ -1,60 +0,0 @@
|
|||
using System.ComponentModel;
|
||||
using MasstransferCommon.Model.Atrributes;
|
||||
using MasstransferCommon.Model.Entity;
|
||||
using MasstransferCommon.Model.Enum;
|
||||
using SQLite;
|
||||
|
||||
namespace MasstransferExporter.DataExporter.Model;
|
||||
|
||||
[Table("camera_internal_params"), Description("相机内部参数")]
|
||||
public class CameraInternalParams : Entity
|
||||
{
|
||||
[Column("type"), Description("参数类型")] public string Type { get; set; }
|
||||
|
||||
[Column("balance_ratio"), Description("白平衡值")]
|
||||
public int BalanceRatio { get; set; }
|
||||
|
||||
[Column("exposure_time"), Description("曝光时间"), Property(Min = 15, Max = 2000)]
|
||||
public int ExposureTime { get; set; }
|
||||
|
||||
[Column("exposure_auto"), Description("自动曝光")]
|
||||
public bool ExposureAuto { get; set; }
|
||||
|
||||
[Column("gain"), Description("增益")] public float Gain { get; set; }
|
||||
|
||||
[Column("gain_auto"), Description("自动增益")]
|
||||
public GainAutoEnum GainAuto { get; set; }
|
||||
|
||||
[Column("black_level"), Description("灰度值")]
|
||||
public float BlackLevel { get; set; }
|
||||
|
||||
[Column("black_level_enable"), Description("黑电平调节使能")]
|
||||
public bool BlackLevelEnable { get; set; }
|
||||
|
||||
[Column("balance_white_auto"), Description("自动白平衡")]
|
||||
public bool BalanceWhiteAuto { get; set; }
|
||||
|
||||
[Column("resulting_frame_rate"), Description("实际采集帧率fps")]
|
||||
public float ResultingFrameRate { get; set; }
|
||||
|
||||
[Column("gamma"), Description("gamma值"), Property(Min = 0, Max = 4)]
|
||||
public float Gamma { get; set; }
|
||||
|
||||
[Column("gamma_enable"), Description("是否gamma使能")]
|
||||
public bool GammaEnable { get; set; }
|
||||
|
||||
[Column("line_mode"), Description("IO 模式")]
|
||||
public LineModeEnum LineMode { get; set; }
|
||||
|
||||
[Column("line_selector"), Description("IO 选择")]
|
||||
public LineSelectorEnum LineSelector { get; set; }
|
||||
|
||||
[Column("trigger_activation"), Description("触发激活")]
|
||||
public TriggerActivationEnum TriggerActivation { get; set; }
|
||||
|
||||
[Column("trigger_mode"), Description("触发模式")]
|
||||
public TriggerModeEnum TriggerMode { get; set; }
|
||||
|
||||
[Column("trigger_source"), Description("触发源")]
|
||||
public TriggerSourceEnum TriggerSource { get; set; }
|
||||
}
|
|
@ -1,33 +0,0 @@
|
|||
using System.ComponentModel;
|
||||
using MasstransferCommon.Model.Atrributes;
|
||||
using MasstransferCommon.Model.Entity;
|
||||
using SQLite;
|
||||
|
||||
namespace MasstransferExporter.DataExporter.Model;
|
||||
|
||||
/// <summary>
|
||||
/// 相机参数
|
||||
/// </summary>
|
||||
[Table("camera_params")]
|
||||
[Description("相机参数")]
|
||||
public class CameraParams : Entity
|
||||
{
|
||||
[Column("camera_sn"), Description("相机序列号")]
|
||||
public string CameraSn { get; set; }
|
||||
|
||||
[Column("sdk"), Description("SDK")] public string Sdk { get; set; }
|
||||
|
||||
[Column("dll"), Description("DLL")] public string Dll { get; set; }
|
||||
|
||||
[Column("scale_ratio"), Description("视频缩放比例")]
|
||||
public double ScaleRatio { get; set; }
|
||||
|
||||
[Column("pixel_length"), Description("像素长度"), Property(Format = "0.########")]
|
||||
public double PixelLength { get; set; }
|
||||
|
||||
[Column("deflect_angle"), Description("相机偏转角度"), Property(Format = "0.#####")]
|
||||
public double DeflectAngle { get; set; }
|
||||
|
||||
[Column("camera_inner_param_template"), Description("相机内参模板")]
|
||||
public string CameraInnerParamTemplate { get; set; }
|
||||
}
|
|
@ -1,15 +0,0 @@
|
|||
using Newtonsoft.Json;
|
||||
|
||||
namespace MasstransferExporter.DataExporter.Model;
|
||||
|
||||
/// <summary>
|
||||
/// 配置数据
|
||||
/// </summary>
|
||||
public class ConfigData<T>
|
||||
{
|
||||
[JsonProperty("name")] public string Name { get; set; }
|
||||
|
||||
[JsonProperty("type")] public string Type { get; set; }
|
||||
|
||||
[JsonProperty("param")] public T? Param { get; set; }
|
||||
}
|
|
@ -1,12 +0,0 @@
|
|||
using Newtonsoft.Json;
|
||||
|
||||
namespace MasstransferExporter.DataExporter.Model;
|
||||
|
||||
public class CoordinateData
|
||||
{
|
||||
[JsonProperty("fileType")] public string FileType { get; set; }
|
||||
|
||||
[JsonProperty("bizNumber")] public string BizNumber { get; set; }
|
||||
|
||||
[JsonProperty("batchNumber")] public string BatchNumber { get; set; }
|
||||
}
|
|
@ -1,45 +0,0 @@
|
|||
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; }
|
||||
}
|
|
@ -1,43 +0,0 @@
|
|||
using System.ComponentModel;
|
||||
using MasstransferCommon.Model.Entity;
|
||||
using MasstransferCommon.Model.Enum;
|
||||
using SQLite;
|
||||
|
||||
namespace MasstransferExporter.DataExporter.Model;
|
||||
|
||||
/// <summary>
|
||||
/// 故障记录
|
||||
/// </summary>
|
||||
[Table("fault_records"), Description("故障记录")]
|
||||
public class FaultRecord : Entity
|
||||
{
|
||||
[Column("source"), Description("故障来源")]
|
||||
public string? Source { get; set; }
|
||||
|
||||
[Column("fault_code"), Description("故障编码")]
|
||||
public string? FaultCode { get; set; }
|
||||
|
||||
[Column("fault_desc"), Description("故障描述")]
|
||||
public string? FaultDesc { get; set; }
|
||||
|
||||
[Column("fault_time"), Description("故障时间")]
|
||||
public DateTime FaultTime { get; set; }
|
||||
|
||||
[Column("fault_level"), Description("故障级别")]
|
||||
public ExceptionLevel Level { get; set; }
|
||||
|
||||
[Column("fault_message"), Description("故障信息")]
|
||||
public string? FaultMessage { get; set; }
|
||||
|
||||
[Column("solved"), Description("是否已处理")]
|
||||
public bool Solved { get; set; }
|
||||
|
||||
[Column("solved_time"), Description("处理时间")]
|
||||
public DateTime? SolvedTime { get; set; }
|
||||
|
||||
[Column("solved_by_user_id"), Description("处理人Id")]
|
||||
public string? SolvedByUserId { get; set; }
|
||||
|
||||
[Column("solved_by_user_name"), Description("处理人名称")]
|
||||
public string? SolvedByUserName { get; set; }
|
||||
}
|
|
@ -1,25 +0,0 @@
|
|||
using Newtonsoft.Json;
|
||||
|
||||
namespace MasstransferExporter.DataExporter.Model;
|
||||
|
||||
/// <summary>
|
||||
/// 上报的故障信息
|
||||
/// </summary>
|
||||
public class FaultRecordDTO
|
||||
{
|
||||
/// <summary>
|
||||
/// 错误码
|
||||
/// </summary>
|
||||
[JsonProperty("errorCode")]
|
||||
public string? ErrorCode { get; set; }
|
||||
|
||||
[JsonProperty("timestamp")] public DateTime Timestamp { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 故障状态项
|
||||
/// 0:解除故障
|
||||
/// 1:发生故障
|
||||
/// </summary>
|
||||
[JsonProperty("status")]
|
||||
public int Status { get; set; }
|
||||
}
|
|
@ -1,22 +0,0 @@
|
|||
using System.ComponentModel;
|
||||
using MasstransferCommon.Model.Entity;
|
||||
using SQLite;
|
||||
|
||||
namespace MasstransferExporter.DataExporter.Model;
|
||||
|
||||
/// <summary>
|
||||
/// 配方信息
|
||||
/// </summary>
|
||||
[Table("formulas")]
|
||||
public class Formula : Entity
|
||||
{
|
||||
[Column("name"), Description("配方名称")] public string Name { get; set; }
|
||||
|
||||
[Column("code"), Description("配方编码")] public string Code { get; set; }
|
||||
|
||||
[Column("description"), Description("配方描述")]
|
||||
public string Description { get; set; }
|
||||
|
||||
[Column("selected"), Description("是否启用")]
|
||||
public bool Selected { get; set; }
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
namespace MasstransferExporter.DataExporter.Model;
|
||||
|
||||
/// <summary>
|
||||
/// 配方参数信息
|
||||
/// </summary>
|
||||
public class FormulaConfig
|
||||
{
|
||||
|
||||
|
||||
}
|
|
@ -1,37 +0,0 @@
|
|||
using System.ComponentModel;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace MasstransferExporter.DataExporter.Model;
|
||||
|
||||
/// <summary>
|
||||
/// 配方信息
|
||||
/// </summary>
|
||||
public class FormulaDTO
|
||||
{
|
||||
[Description("配方id"), JsonProperty("id")]
|
||||
public string Id { get; set; }
|
||||
|
||||
[Description("配方名称"), JsonProperty("name")]
|
||||
public string Name { get; set; }
|
||||
|
||||
[Description("配方编号"), JsonProperty("code")]
|
||||
public string Code { get; set; }
|
||||
|
||||
[Description("配方描述"), JsonProperty("description")]
|
||||
public string Description { get; set; }
|
||||
|
||||
[Description("是否启用")] public bool Selected { get; set; }
|
||||
|
||||
public WorkBenchSetting? WorkBenchSetting { get; set; }
|
||||
|
||||
public PcbSetting? PcbSetting { get; set; }
|
||||
|
||||
public WaferSetting? WaferSetting { get; set; }
|
||||
|
||||
public NeedleSetting? NeedleSetting { get; set; }
|
||||
|
||||
public AltimetryParams? AltimetryParams { get; set; }
|
||||
public JobSetting? JobSetting { get; set; }
|
||||
|
||||
public AlgorithmParams? AlgorithmParams { get; set; }
|
||||
}
|
|
@ -1,33 +0,0 @@
|
|||
using System.ComponentModel;
|
||||
using MasstransferCommon.Model.Entity;
|
||||
using SQLite;
|
||||
|
||||
namespace MasstransferExporter.DataExporter.Model;
|
||||
|
||||
/// <summary>
|
||||
/// 作业配置
|
||||
/// </summary>
|
||||
[Table("job_settings")]
|
||||
public class JobSetting : Entity
|
||||
{
|
||||
[Column("formulaId"), Description("配方Id")]
|
||||
public string? FormulaId { get; set; }
|
||||
|
||||
[Column("batch_no"), Description("批次号")]
|
||||
public string? BatchNo { get; set; }
|
||||
|
||||
[Column("chip_amount_per_batch"), Description("每批次的芯片数量")]
|
||||
public int ChipAmountPerBatch { get; set; }
|
||||
|
||||
[Column("strike_detect_threshold"), Description("每次动打数量检测阈值")]
|
||||
public int StrikeDetectThreshold { get; set; }
|
||||
|
||||
[Column("max_re_strike_times"), Description("最大补打次数")]
|
||||
public int MaxReStrikeTimes { get; set; }
|
||||
|
||||
[Column("missing_threshold"), Description("最大漏打数量阈值")]
|
||||
public int MissingThreshold { get; set; }
|
||||
|
||||
[Column("batch_preset_capacity"), Description("批次预设容量")]
|
||||
public int BatchPresetCapacity { get; set; }
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue