完善查询坐标的功能

This commit is contained in:
huangxianguo 2024-09-10 16:15:26 +08:00
parent 7bcc84ee8b
commit 0e5f7a56d8
8 changed files with 160 additions and 34 deletions

View File

@ -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;
/// <summary>
/// 坐标信息业务类
/// </summary>
public class CoordinateService
public class CoordinateService : Instant
{
private static readonly SqliteHelper Db = SqliteHelper.GetInstance();
@ -19,7 +21,7 @@ public class CoordinateService
/// <summary>
/// 坐标信息导出
/// 每5钟自动上报一次当前时间内的坐标信息
/// 每5钟自动上报一次当前时间内的坐标信息
/// </summary>
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);
}
}
/// <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 = $"{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<bool>.AddEventHandler(EventType.StartUp,
async () => { 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 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;
}
}
}

View File

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

View File

@ -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<double[]> Coordinates
public List<double[]>? Coordinates
{
get => !CoordinateJson.IsNullOrEmpty() ? JsonUtil.FromJson<List<double[]>>(CoordinateJson) : [];
set
@ -55,7 +62,7 @@ public class Substrate : Entity
}
[Ignore]
public double[,] Altimetry
public double[,]? Altimetry
{
get => !AltimetryJson.IsNullOrEmpty() ? JsonUtil.FromJson<double[,]>(AltimetryJson) : new double[,] { };
set
@ -66,4 +73,34 @@ public class Substrate : Entity
}
}
}
[Ignore]
public double[,]? StanderAltimetry
{
get => !StanderAltimetryJson.IsNullOrEmpty()
? JsonUtil.FromJson<double[,]>(StanderAltimetryJson)
: new double[,] { };
set
{
if (value != null)
{
StanderAltimetryJson = JsonUtil.ToJson(value);
}
}
}
[Ignore]
public SubstrateMarkPoint? SubstrateMarkPoint
{
get => !SubstrateMarkPointJson.IsNullOrEmpty()
? JsonUtil.FromJson<SubstrateMarkPoint>(SubstrateMarkPointJson)
: new SubstrateMarkPoint();
set
{
if (value != null)
{
SubstrateMarkPointJson = JsonUtil.ToJson(value);
}
}
}
}

View File

@ -0,0 +1,19 @@
namespace MasstransferExporter.DataExporter.Model;
/// <summary>
/// 基板mark点坐标
/// </summary>
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; }
}

View File

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

View File

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

View File

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

View File

@ -21,6 +21,7 @@ public class ProcessHelper
{
if (_pipe != null) return;
_pipe = new PipeClient();
_pipe.MessageReceived += HandleMessageReceived;
_pipe.Start();
}