diff --git a/MasstransferExporter/DataExporter/CoordinateService.cs b/MasstransferExporter/DataExporter/CoordinateService.cs
index 4b5a106..a09f314 100644
--- a/MasstransferExporter/DataExporter/CoordinateService.cs
+++ b/MasstransferExporter/DataExporter/CoordinateService.cs
@@ -1,4 +1,6 @@
-using MasstransferCommon.Model.Constant;
+using MasstransferCommon.Atrributes;
+using MasstransferCommon.Events;
+using MasstransferCommon.Model.Constant;
using MasstransferCommon.Utils;
using MasstransferCommunicate.Minio;
using MasstransferCommunicate.Mqtt.Client;
@@ -11,7 +13,7 @@ namespace MasstransferExporter.DataExporter;
///
/// 坐标信息业务类
///
-public class CoordinateService
+public class CoordinateService : Instant
{
private static readonly SqliteHelper Db = SqliteHelper.GetInstance();
@@ -19,7 +21,7 @@ public class CoordinateService
///
/// 坐标信息导出
- /// 每5秒钟自动上报一次当前时间内的坐标信息
+ /// 每5分钟自动上报一次当前时间内的坐标信息
///
public static Task CoordinateExporter()
{
@@ -37,7 +39,7 @@ public class CoordinateService
Directory.CreateDirectory(temp);
var endTime = DateTime.Now;
- var startTime = endTime.AddDays(-5);
+ var startTime = endTime.AddMinutes(-5);
WaferCoordinateExporter(startTime, endTime);
SubstrateCoordinateExporter(startTime, endTime);
@@ -108,27 +110,36 @@ public class CoordinateService
foreach (var wafer in wafers)
{
- var path = Path.Combine(Environment.CurrentDirectory, "temp", $"{wafer.Id}.json");
- try
+ await UploadWaferCoords(wafer);
+ }
+ }
+
+ ///
+ /// 生产晶环坐标文件并上传
+ ///
+ ///
+ 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 = $"{Constants.SN}/{wafer.BatchCode}/{wafer.WaferCode}/wafer/wafer.json";
+
+ await Minio.UploadFileAsync("coordinate", fileName, path);
+
+ var data = new CoordinateData()
{
- 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);
- }
+ FileType = "WAFER",
+ BatchNumber = wafer.BatchCode,
+ BizNumber = wafer.WaferCode
+ };
+ await MessageQueueHelper.Publish(Topics.CoordinateUpload, data);
+ }
+ catch (Exception e)
+ {
+ Console.WriteLine(e);
}
}
@@ -204,4 +215,49 @@ public class CoordinateService
}
}
}
+
+ public void Initialized()
+ {
+ EventBus.AddEventHandler(EventType.StartUp,
+ async () => { await MessageQueueHelper.Subscribe(Topics.QueryCoordinate, QueryCoordinate); });
+ }
+
+ ///
+ /// 处理查询坐标请求
+ ///
+ ///
+ ///
+ private static async Task QueryCoordinate(string topic, QueryCoordinateDTO? dto)
+ {
+ if (dto == null) return;
+
+ var batchNumber = dto.BatchNumber;
+ var bizNumber = dto.BizNumber;
+ var fileType = dto.FileType;
+
+ // 根据文件类型查询对应的文件
+ if ("WAFER".Equals(fileType))
+ {
+ // 查询的是晶圆的数据
+ var wafer = Db.Query(
+ "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(
+ "SELECT * FROM substrates WHERE substrate_code = ? and batch_no = ? order by create_time desc limit 1",
+ bizNumber,
+ batchNumber).FirstOrDefault();
+ if (substrate == null) return;
+
+
+ }
+ }
}
\ No newline at end of file
diff --git a/MasstransferExporter/DataExporter/Model/QueryCoordinateDTO.cs b/MasstransferExporter/DataExporter/Model/QueryCoordinateDTO.cs
new file mode 100644
index 0000000..c835fcc
--- /dev/null
+++ b/MasstransferExporter/DataExporter/Model/QueryCoordinateDTO.cs
@@ -0,0 +1,12 @@
+using Newtonsoft.Json;
+
+namespace MasstransferExporter.DataExporter.Model;
+
+public class QueryCoordinateDTO
+{
+ [JsonProperty("fileType")] public string FileType { get; set; }
+
+ [JsonProperty("bizNumber")] public string BizNumber { get; set; }
+
+ [JsonProperty("batchNumber")] public string BatchNumber { get; set; }
+}
\ No newline at end of file
diff --git a/MasstransferExporter/DataExporter/Model/Substrate.cs b/MasstransferExporter/DataExporter/Model/Substrate.cs
index c959c35..f5fa610 100644
--- a/MasstransferExporter/DataExporter/Model/Substrate.cs
+++ b/MasstransferExporter/DataExporter/Model/Substrate.cs
@@ -41,8 +41,15 @@ public class Substrate : Entity
[Column("altimetry_json"), Description("基板测高信息")]
public string? AltimetryJson { get; set; }
+ [Column("stander_altimetry_json"), Description("基板测高信息")]
+ public string? StanderAltimetryJson { get; set; }
+
+ [Column("substrate_mark_point_json"), Description("基板3个标点信息")]
+ public string? SubstrateMarkPointJson { get; set; }
+
+
[Ignore]
- public List Coordinates
+ public List? Coordinates
{
get => !CoordinateJson.IsNullOrEmpty() ? JsonUtil.FromJson>(CoordinateJson) : [];
set
@@ -55,7 +62,7 @@ public class Substrate : Entity
}
[Ignore]
- public double[,] Altimetry
+ public double[,]? Altimetry
{
get => !AltimetryJson.IsNullOrEmpty() ? JsonUtil.FromJson(AltimetryJson) : new double[,] { };
set
@@ -66,4 +73,34 @@ public class Substrate : Entity
}
}
}
+
+ [Ignore]
+ public double[,]? StanderAltimetry
+ {
+ get => !StanderAltimetryJson.IsNullOrEmpty()
+ ? JsonUtil.FromJson(StanderAltimetryJson)
+ : new double[,] { };
+ set
+ {
+ if (value != null)
+ {
+ StanderAltimetryJson = JsonUtil.ToJson(value);
+ }
+ }
+ }
+
+ [Ignore]
+ public SubstrateMarkPoint? SubstrateMarkPoint
+ {
+ get => !SubstrateMarkPointJson.IsNullOrEmpty()
+ ? JsonUtil.FromJson(SubstrateMarkPointJson)
+ : new SubstrateMarkPoint();
+ set
+ {
+ if (value != null)
+ {
+ SubstrateMarkPointJson = JsonUtil.ToJson(value);
+ }
+ }
+ }
}
\ No newline at end of file
diff --git a/MasstransferExporter/DataExporter/Model/SubstrateMarkPoint.cs b/MasstransferExporter/DataExporter/Model/SubstrateMarkPoint.cs
new file mode 100644
index 0000000..cda5cdc
--- /dev/null
+++ b/MasstransferExporter/DataExporter/Model/SubstrateMarkPoint.cs
@@ -0,0 +1,19 @@
+namespace MasstransferExporter.DataExporter.Model;
+
+///
+/// 基板mark点坐标
+///
+public class SubstrateMarkPoint
+{
+ public double X1 { get; set; }
+
+ public double Y1 { get; set; }
+
+ public double X2 { get; set; }
+
+ public double Y2 { get; set; }
+
+ public double X3 { get; set; }
+
+ public double Y3 { get; set; }
+}
\ No newline at end of file
diff --git a/MasstransferExporter/ImageExporter/ImageService.cs b/MasstransferExporter/ImageExporter/ImageService.cs
index 8cf542c..65ca2ab 100644
--- a/MasstransferExporter/ImageExporter/ImageService.cs
+++ b/MasstransferExporter/ImageExporter/ImageService.cs
@@ -89,7 +89,7 @@ public class ImageService : Instant
}
// 上传文件
- var fileName = $"{Constants.SN}/{codeDir.Name}/{batchDir.Name}/{imageType}/{name}";
+ var fileName = $"{Constants.SN}/{codeDir.Name}/{batchDir.Name}/{picType}/{name}";
await Minio.UploadFileAsync(bucket, fileName, path);
diff --git a/MasstransferExporter/ImageExporter/Model/ImageExportData.cs b/MasstransferExporter/ImageExporter/Model/ImageExportData.cs
index eab390a..38645dc 100644
--- a/MasstransferExporter/ImageExporter/Model/ImageExportData.cs
+++ b/MasstransferExporter/ImageExporter/Model/ImageExportData.cs
@@ -1,12 +1,14 @@
-namespace MasstransferExporter.ImageExporter.Model;
+using Newtonsoft.Json;
+
+namespace MasstransferExporter.ImageExporter.Model;
public class ImageExportData
{
- public string PicType { get; set; }
+ [JsonProperty("picType")] public string PicType { get; set; }
- public string BizNumber { get; set; }
+ [JsonProperty("bizNumber")] public string BizNumber { get; set; }
- public string BatchNumber { get; set; }
+ [JsonProperty("batchNumber")] public string BatchNumber { get; set; }
- public string ImageType { get; set; }
+ [JsonProperty("imageType")] public string ImageType { get; set; }
}
\ No newline at end of file
diff --git a/MasstransferInfrastructure/Mqtt/Client/MqttClient.cs b/MasstransferInfrastructure/Mqtt/Client/MqttClient.cs
index 44dac45..cd966bd 100644
--- a/MasstransferInfrastructure/Mqtt/Client/MqttClient.cs
+++ b/MasstransferInfrastructure/Mqtt/Client/MqttClient.cs
@@ -1,5 +1,4 @@
-using System.Security.Cryptography.X509Certificates;
-using MasstransferCommon.Model.Constant;
+using MasstransferCommon.Model.Constant;
using MasstransferCommon.Utils;
using MasstransferCommunicate.Mqtt.Model;
using MasstransferInfrastructure.Mqtt.Model;
diff --git a/MasstransferInfrastructure/Process/Client/ProcessHelper.cs b/MasstransferInfrastructure/Process/Client/ProcessHelper.cs
index dbd0cee..2999f40 100644
--- a/MasstransferInfrastructure/Process/Client/ProcessHelper.cs
+++ b/MasstransferInfrastructure/Process/Client/ProcessHelper.cs
@@ -21,6 +21,7 @@ public class ProcessHelper
{
if (_pipe != null) return;
_pipe = new PipeClient();
+ _pipe.MessageReceived += HandleMessageReceived;
_pipe.Start();
}