删除项目,准备跑路

This commit is contained in:
huangxianguo 2024-09-24 19:13:38 +08:00
parent c7ccffdfaf
commit c448ac98e9
186 changed files with 0 additions and 16248 deletions

7
.gitignore vendored
View File

@ -1,7 +0,0 @@
.idea/
**/bin/
**/obj/
/bin/
/obj/
global.json

View File

@ -1,8 +0,0 @@
# Default ignored files
/shelf/
/workspace.xml
# Rider ignored files
/contentModel.xml
/.idea.MasstransferExporter.iml
/modules.xml
/projectSettingsUpdater.xml

View File

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

View File

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="UserContentModel">
<attachedFolders />
<explicitIncludes />
<explicitExcludes />
</component>
</project>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,10 +0,0 @@
namespace MasstransferCommon.Events;
/// <summary>
/// 用于声明当前方法为事件处理器
/// </summary>
[AttributeUsage(AttributeTargets.Method)]
public class EventAction(params EventType[] types) : Attribute
{
public EventType[] Types => types;
}

View File

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

View File

@ -1,10 +0,0 @@
namespace MasstransferCommon.Events;
/// <summary>
/// 用于声明当前类为事件监听
/// </summary>
[AttributeUsage(AttributeTargets.Class)]
public class EventListener(string name = "") : Attribute
{
private string Name => name;
}

View File

@ -1,15 +0,0 @@
using System.ComponentModel;
namespace MasstransferCommon.Events;
/// <summary>
/// 通过事件发布订阅模式实现系统各组件的解耦
/// 这里定义的是事件的驱动类型
/// </summary>
public enum EventType
{
// 系统初始化事件
[Description("系统初始化事件")] SetupNotify,
[Description("系统已经启动事件")] StartUp,
}

View File

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

View File

@ -1,6 +0,0 @@
namespace MasstransferCommon.Model.Atrributes;
[AttributeUsage(AttributeTargets.Property)]
public class Hide : Attribute
{
}

View File

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

View File

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

View File

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

View File

@ -1,8 +0,0 @@
namespace MasstransferCommon.Model.Entity;
public enum ChipColorEnum
{
R = 1,
G = 2,
B = 3
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,9 +0,0 @@
using System.ComponentModel;
namespace MasstransferCommon.Model.Enum;
public enum AltimetryStrategyEnum
{
[Description("按面积")] ByArea = 1,
[Description("按坐标")] ByCoordinate = 2
}

View File

@ -1,8 +0,0 @@
namespace MasstransferCommon.Model.Enum;
public enum ChipColorEnum
{
R = 1,
G = 2,
B = 3
}

View File

@ -1,9 +0,0 @@
using System.ComponentModel;
namespace MasstransferCommon.Model.Enum;
public enum DirectionEnum
{
[Description("行方向")] ROW = 1,
[Description("列方向")] COLUMN = 2,
}

View File

@ -1,8 +0,0 @@
namespace MasstransferCommon.Model.Enum;
public enum ExceptionLevel : int
{
NORMAL,
WARN,
ERROR,
}

View File

@ -1,8 +0,0 @@
namespace MasstransferCommon.Model.Enum;
public enum GainAutoEnum
{
Off,
Once,
Continuous
}

View File

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

View File

@ -1,13 +0,0 @@
namespace MasstransferCommon.Model.Enum;
/// <summary>
/// 防止注册表被恶意篡改,这里的注册许可类型需要做一些混淆
/// </summary>
public enum LicenseTypeEnum
{
// 临时许可
Temporary = unchecked(int.MaxValue - 123456),
// 正式许可
Formal = unchecked(int.MaxValue - 123457)
}

View File

@ -1,6 +0,0 @@
namespace MasstransferCommon.Model.Enum;
public enum LineModeEnum
{
Strobe
}

View File

@ -1,8 +0,0 @@
namespace MasstransferCommon.Model.Enum;
public enum LineSelectorEnum
{
Line0,
Line1,
Line2,
}

View File

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

View File

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

View File

@ -1,12 +0,0 @@
using System.ComponentModel;
namespace MasstransferCommon.Model.Enum;
/// <summary>
/// 基材类型
/// </summary>
public enum SubstrateTypeEnum
{
[Description("PCB")] PCB = 1,
[Description("玻璃")] Glass = 2
}

View File

@ -1,7 +0,0 @@
namespace MasstransferCommon.Model.Enum;
public enum TlsProtocolsEnum
{
TLS_1_2,
TLS_1_3
}

View File

@ -1,10 +0,0 @@
namespace MasstransferCommon.Model.Enum;
public enum TriggerActivationEnum
{
RisingEdge,
FallingEdge,
LevelHigh,
LevelLow,
AnyEdge
}

View File

@ -1,7 +0,0 @@
namespace MasstransferCommon.Model.Enum;
public enum TriggerModeEnum
{
Off,
On
}

View File

@ -1,10 +0,0 @@
namespace MasstransferCommon.Model.Enum;
public enum TriggerSourceEnum
{
Software,
Line0,
Line2,
Counter0,
Anyway
}

View File

@ -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, "延时任务执行失败");
}
}
}
}

View File

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

View File

@ -1,6 +0,0 @@
namespace MasstransferCommon.Scheduler;
public interface ITask : IDisposable
{
public void Run();
}

View File

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

View File

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

View File

@ -1,9 +0,0 @@
namespace MasstransferCommon.Atrributes;
public interface Instant
{
/// <summary>
/// 初始化对象后进行回调
/// </summary>
void Initialized();
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,4 +0,0 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v7.0", FrameworkDisplayName = ".NET 7.0")]

View File

@ -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 类生成。

View File

@ -1 +0,0 @@
24bba642a13e6757b4f3f31fb043b50bb46d2cbfc99854439c2393c381e11be8

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -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": []
}

View File

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

View File

@ -1 +0,0 @@
17234348310820990

View File

@ -1 +0,0 @@
17234348310820990

View File

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

View File

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

View File

@ -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": []
}

View File

@ -1 +0,0 @@
17173822294614410

View File

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

View File

@ -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">&lt;SessionState ContinuousTestingMode="0" IsActive="True" Name="Test" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session"&gt;&#xD;
&lt;TestAncestor&gt;&#xD;
&lt;TestId&gt;MSTest::DBEDC6E1-AEE6-47FA-A17A-2B412CE99C7C::net7.0::MasstransferCommon.Tests.Utils.JsonUtilTest.Test&lt;/TestId&gt;&#xD;
&lt;/TestAncestor&gt;&#xD;
&lt;/SessionState&gt;</s:String></wpf:ResourceDictionary>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,10 +0,0 @@
namespace MasstransferExporter.DataExporter.Model;
/// <summary>
/// 配方参数信息
/// </summary>
public class FormulaConfig
{
}

View File

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

View File

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