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