diff --git a/MasstransferExporter/DataExporter/CoordinateService.cs b/MasstransferExporter/DataExporter/CoordinateService.cs
index 1c7d6ee..4b5a106 100644
--- a/MasstransferExporter/DataExporter/CoordinateService.cs
+++ b/MasstransferExporter/DataExporter/CoordinateService.cs
@@ -1,119 +1,207 @@
-using MasstransferCommon.Atrributes;
-using MasstransferCommon.Model.Constant;
+using MasstransferCommon.Model.Constant;
using MasstransferCommon.Utils;
using MasstransferCommunicate.Minio;
using MasstransferCommunicate.Mqtt.Client;
using MasstransferExporter.DataExporter.Model;
using MasstransferInfrastructure.Database.Sqlite;
+using Masuit.Tools;
namespace MasstransferExporter.DataExporter;
///
/// 坐标信息业务类
///
-public class CoordinateService : Instant
+public class CoordinateService
{
private static readonly SqliteHelper Db = SqliteHelper.GetInstance();
- private static MinioHelper _minio = MinioHelper.GetInstance();
+ private static readonly MinioHelper Minio = MinioHelper.GetInstance();
///
/// 坐标信息导出
+ /// 每5秒钟自动上报一次当前时间内的坐标信息
///
- public static async void CoordinateExporter()
+ public static Task CoordinateExporter()
{
- await MarkPointExporter();
+ 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.AddDays(-5);
+
+ WaferCoordinateExporter(startTime, endTime);
+ SubstrateCoordinateExporter(startTime, endTime);
+ PathCoordinateExporter(startTime, endTime);
+ });
}
///
/// 上传mark点坐标文件
///
- private static async Task MarkPointExporter()
+ private static async Task MarkPointExporter(string batchCode, string substrateCode)
{
- var formula = FormulaService.GetSelectedFormula();
-
- if (formula == null) return;
-
- var benchSetting = FormulaService.GetWorkBenchSettingByFormulaId(formula.Id);
-
- if (benchSetting == null) return;
-
- // 将mark点转为json,写到临时文件
- var coordinates = new Dictionary
+ var path = Path.Combine(Environment.CurrentDirectory, "temp", "mark.json");
+ try
{
- { "SolderJointX1", benchSetting.SolderJointX1 },
- { "SolderJointY1", benchSetting.SolderJointY1 },
- { "SolderJointX2", benchSetting.SolderJointX2 },
- { "SolderJointY2", benchSetting.SolderJointY2 },
- { "SolderJointX3", benchSetting.SolderJointX3 },
- { "SolderJointY3", benchSetting.SolderJointY3 }
- };
+ var formula = FormulaService.GetSelectedFormula();
- var json = JsonUtil.ToJson(coordinates);
+ if (formula == null) return;
- var path = Path.Combine(Environment.CurrentDirectory, "mark.json");
+ var benchSetting = FormulaService.GetWorkBenchSettingByFormulaId(formula.Id);
- await File.WriteAllTextAsync(path, json);
+ if (benchSetting == null) return;
- var fileName = $"{Constants.SN}/20230301/20230301/mark/mark.json";
+ // 将mark点转为json,写到临时文件
+ var coordinates = new Dictionary
+ {
+ { "SolderJointX1", benchSetting.SolderJointX1 },
+ { "SolderJointY1", benchSetting.SolderJointY1 },
+ { "SolderJointX2", benchSetting.SolderJointX2 },
+ { "SolderJointY2", benchSetting.SolderJointY2 },
+ { "SolderJointX3", benchSetting.SolderJointX3 },
+ { "SolderJointY3", benchSetting.SolderJointY3 }
+ };
- await _minio.UploadFileAsync("coordinate", fileName, path);
+ var json = JsonUtil.ToJson(coordinates);
- // 上传完成后删除本地的文件
- File.Delete(path);
+ await File.WriteAllTextAsync(path, json);
- var data = new CoordinateData()
+ var fileName = $"{Constants.SN}/{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)
{
- FileType = "MARK",
- BatchNumber = "20230301",
- BizNumber = "20230301"
- };
- await MessageQueueHelper.Publish(Topics.CoordinateUpload, data);
+ Console.WriteLine(e);
+ }
}
///
/// 上传wafer坐标文件
///
- private async void WaferCoordinateExporter()
+ private static async void WaferCoordinateExporter(DateTime startTime, DateTime endTime)
{
- var data = new CoordinateData()
+ // 找出当前时间段内所有的晶环信息
+ var wafers = Db.Query("SELECT * FROM wafers WHERE create_time >= ? AND create_time <= ?", startTime,
+ endTime);
+
+ foreach (var wafer in wafers)
{
- FileType = "WAFER",
- BatchNumber = "20230301",
- BizNumber = "20230301"
- };
- await MessageQueueHelper.Publish(Topics.CoordinateUpload, data);
+ var path = Path.Combine(Environment.CurrentDirectory, "temp", $"{wafer.Id}.json");
+ try
+ {
+ await File.WriteAllTextAsync(path, wafer.CoordinateJson);
+
+ var fileName = $"{Constants.SN}/{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);
+ }
+ }
}
///
/// 上传基板坐标文件
///
- private async void SubstrateCoordinateExporter()
+ private static async void SubstrateCoordinateExporter(DateTime startTime, DateTime endTime)
{
- var data = new CoordinateData()
+ // 找出当前时间段内的基板信息
+ var substrates = Db.Query("SELECT * FROM substrates WHERE create_time >= ? AND create_time <= ?",
+ startTime, endTime);
+ foreach (var substrate in substrates)
{
- FileType = "PCB",
- BatchNumber = "20230301",
- BizNumber = "20230301"
- };
- await MessageQueueHelper.Publish(Topics.CoordinateUpload, data);
+ var path = Path.Combine(Environment.CurrentDirectory, "temp", $"{substrate.Id}.json");
+ try
+ {
+ await File.WriteAllTextAsync(path, substrate.CoordinateJson);
+
+ var fileName = $"{Constants.SN}/{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);
+
+
+ // 上传mark 点坐标信息
+ await MarkPointExporter(substrate.BatchNo, substrate.SubstrateCode);
+ }
+ catch (Exception e)
+ {
+ Console.WriteLine(e);
+ }
+ }
}
///
/// 上传动打路径坐标文件
///
- private async void PathCoordinateExporter()
+ private static async void PathCoordinateExporter(DateTime startTime, DateTime endTime)
{
- var data = new CoordinateData()
- {
- FileType = "ROUTE",
- BatchNumber = "20230301",
- BizNumber = "20230301"
- };
- await MessageQueueHelper.Publish(Topics.CoordinateUpload, data);
- }
+ // 找出当前时间段内的打路径信息
+ var records = Db.Query("SELECT * FROM strike_records WHERE create_time >= ? AND create_time <= ?",
+ startTime, endTime);
- public void Initialized()
- {
+ foreach (var record in records)
+ {
+ var path = Path.Combine(Environment.CurrentDirectory, "temp", $"{record.Id}.json");
+ try
+ {
+ await File.WriteAllTextAsync(path, record.ToJsonString());
+
+ var fileName = $"{Constants.SN}/{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);
+ }
+ }
}
}
\ No newline at end of file
diff --git a/MasstransferExporter/DataExporter/FaultRecordService.cs b/MasstransferExporter/DataExporter/FaultRecordService.cs
index 26c96f6..ac78434 100644
--- a/MasstransferExporter/DataExporter/FaultRecordService.cs
+++ b/MasstransferExporter/DataExporter/FaultRecordService.cs
@@ -16,7 +16,7 @@ public class FaultRecordService
public static async Task FaultRecordDataExporter()
{
var endTime = DateTime.Now;
- var startTime = endTime.AddMinutes(-30);
+ var startTime = endTime.AddMinutes(-5);
// 查询5分钟内的故障记录
var sql = "SELECT * FROM fault_records WHERE update_time >= ? AND update_time <= ?";
diff --git a/MasstransferExporter/Program.cs b/MasstransferExporter/Program.cs
index 8faff95..39ed302 100644
--- a/MasstransferExporter/Program.cs
+++ b/MasstransferExporter/Program.cs
@@ -1,7 +1,9 @@
using MasstransferCommon.Config;
using MasstransferCommon.Events;
using MasstransferCommon.Model.Entity;
+using MasstransferCommon.Scheduler;
using MasstransferCommunicate.Mqtt.Client;
+using MasstransferExporter.DataExporter;
using MasstransferExporter.Init;
using MasstransferInfrastructure.Database.Sqlite;
using MasstransferInfrastructure.Mqtt.Model;
@@ -15,12 +17,10 @@ class Program
public static async Task Main()
{
- // 进行初始化调用
- InstantUtil.Init();
-
Log.Logger = LogConfiguration.GetLogger();
- Log.Error("Masstransfer Exporter Startup");
+ // 进行初始化调用
+ InstantUtil.Init();
var mqttParams = Db.Query("select * from mqtt_params").FirstOrDefault();
@@ -38,8 +38,8 @@ class Program
// 启动完成后,广播启动通知
EventBus.Publish(EventType.StartUp, true);
- // DelayScheduler.Delay(async () => ImageService.ImageExporter(),
- // TimeSpan.FromSeconds(5));
+ DelayScheduler.Delay(async () => await CoordinateService.CoordinateExporter(),
+ TimeSpan.FromSeconds(5));
// 启动与主程序的通信
// ProcessHelper.Init();