完善查询坐标文件功能

This commit is contained in:
huangxianguo 2024-09-10 16:54:03 +08:00
parent 0e5f7a56d8
commit cdaa4d8d52
5 changed files with 122 additions and 78 deletions

View File

@ -50,33 +50,15 @@ public class CoordinateService : Instant
/// <summary> /// <summary>
/// 上传mark点坐标文件 /// 上传mark点坐标文件
/// </summary> /// </summary>
private static async Task MarkPointExporter(string batchCode, string substrateCode) private static async Task MarkPointExporter(Substrate substrate)
{ {
var path = Path.Combine(Environment.CurrentDirectory, "temp", "mark.json"); var path = Path.Combine(Environment.CurrentDirectory, "temp", "mark.json");
try try
{ {
var formula = FormulaService.GetSelectedFormula(); var batchCode = substrate.BatchNo;
var substrateCode = substrate.SubstrateCode;
if (formula == null) return; await File.WriteAllTextAsync(path, substrate.SubstrateMarkPointJson);
var benchSetting = FormulaService.GetWorkBenchSettingByFormulaId(formula.Id);
if (benchSetting == null) return;
// 将mark点转为json,写到临时文件
var coordinates = new Dictionary<string, double>
{
{ "SolderJointX1", benchSetting.SolderJointX1 },
{ "SolderJointY1", benchSetting.SolderJointY1 },
{ "SolderJointX2", benchSetting.SolderJointX2 },
{ "SolderJointY2", benchSetting.SolderJointY2 },
{ "SolderJointX3", benchSetting.SolderJointX3 },
{ "SolderJointY3", benchSetting.SolderJointY3 }
};
var json = JsonUtil.ToJson(coordinates);
await File.WriteAllTextAsync(path, json);
var fileName = $"{Constants.SN}/{batchCode}/{substrateCode}/mark/mark.json"; var fileName = $"{Constants.SN}/{batchCode}/{substrateCode}/mark/mark.json";
@ -153,31 +135,39 @@ public class CoordinateService : Instant
startTime, endTime); startTime, endTime);
foreach (var substrate in substrates) foreach (var substrate in substrates)
{ {
var path = Path.Combine(Environment.CurrentDirectory, "temp", $"{substrate.Id}.json"); // 上传mark 点坐标信息
try 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 = $"{Constants.SN}/{substrate.BatchNo}/{substrate.SubstrateCode}/pcb/pcb.json";
await Minio.UploadFileAsync("coordinate", fileName, path);
var data = new CoordinateData()
{ {
await File.WriteAllTextAsync(path, substrate.CoordinateJson); FileType = "PCB",
BatchNumber = substrate.BatchNo,
var fileName = $"{Constants.SN}/{substrate.BatchNo}/{substrate.SubstrateCode}/pcb/pcb.json"; BizNumber = substrate.SubstrateCode
};
await Minio.UploadFileAsync("coordinate", fileName, path); await MessageQueueHelper.Publish(Topics.CoordinateUpload, data);
}
var data = new CoordinateData() catch (Exception e)
{ {
FileType = "PCB", Console.WriteLine(e);
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);
}
} }
} }
@ -192,34 +182,47 @@ public class CoordinateService : Instant
foreach (var record in records) foreach (var record in records)
{ {
var path = Path.Combine(Environment.CurrentDirectory, "temp", $"{record.Id}.json"); await UploadStrikeRecord(record);
try }
}
/// <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 = $"{Constants.SN}/{record.BatchNo}/{record.SubstrateCode}/route/{record.Id}.json";
await Minio.UploadFileAsync("coordinate", fileName, path);
var data = new CoordinateData()
{ {
await File.WriteAllTextAsync(path, record.ToJsonString()); FileType = "ROUTE",
BatchNumber = record.BatchNo,
var fileName = $"{Constants.SN}/{record.BatchNo}/{record.SubstrateCode}/route/{record.Id}.json"; BizNumber = record.SubstrateCode
};
await Minio.UploadFileAsync("coordinate", fileName, path); await MessageQueueHelper.Publish(Topics.CoordinateUpload, data);
}
var data = new CoordinateData() catch (Exception e)
{ {
FileType = "ROUTE", Console.WriteLine(e);
BatchNumber = record.BatchNo,
BizNumber = record.SubstrateCode
};
await MessageQueueHelper.Publish(Topics.CoordinateUpload, data);
}
catch (Exception e)
{
Console.WriteLine(e);
}
} }
} }
public void Initialized() public void Initialized()
{ {
EventBus<bool>.AddEventHandler(EventType.StartUp, EventBus<bool>.AddEventHandler(EventType.StartUp, ListenCoordinateQueryEvent);
async () => { await MessageQueueHelper.Subscribe(Topics.QueryCoordinate, QueryCoordinate); }); }
private static async Task ListenCoordinateQueryEvent(EventType type, bool start)
{
await MessageQueueHelper.Subscribe(Topics.QueryCoordinate, QueryCoordinate);
} }
/// <summary> /// <summary>
@ -231,6 +234,18 @@ public class CoordinateService : Instant
{ {
if (dto == null) return; 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 batchNumber = dto.BatchNumber;
var bizNumber = dto.BizNumber; var bizNumber = dto.BizNumber;
var fileType = dto.FileType; var fileType = dto.FileType;
@ -257,7 +272,30 @@ public class CoordinateService : Instant
batchNumber).FirstOrDefault(); batchNumber).FirstOrDefault();
if (substrate == null) return; 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,10 +1,12 @@
namespace MasstransferExporter.DataExporter.Model; using Newtonsoft.Json;
namespace MasstransferExporter.DataExporter.Model;
public class CoordinateData public class CoordinateData
{ {
public string FileType { get; set; } [JsonProperty("fileType")] public string FileType { 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; }
} }

View File

@ -98,7 +98,7 @@ public class ImageService : Instant
BatchNumber = batchDir.Name, BatchNumber = batchDir.Name,
BizNumber = codeDir.Name, BizNumber = codeDir.Name,
ImageType = imageType, ImageType = imageType,
PicType = isThumbnail ? "thumbnail" : "raw" PicType = isThumbnail ? "thumbnail" : "image"
}; };
// 上传完成后发布通知 // 上传完成后发布通知
@ -233,7 +233,7 @@ public class ImageService : Instant
foreach (var image in images) foreach (var image in images)
{ {
var fileName = var fileName =
$"{Constants.SN}/{codeDir.Name}/{batchCode.Name}/{type.Name}/{image.Name}"; $"{Constants.SN}/{codeDir.Name}/{batchCode.Name}/{type.Name.ToUpper()}/{image.Name}";
var path = image.FullName; var path = image.FullName;
@ -245,7 +245,7 @@ public class ImageService : Instant
BatchNumber = batchCode.Name, BatchNumber = batchCode.Name,
BizNumber = codeDir.Name, BizNumber = codeDir.Name,
ImageType = type.Name, ImageType = type.Name,
PicType = isThumbnail ? "thumbnail" : "raw" PicType = isThumbnail ? "thumbnail" : "image"
}; };
// 上传完成后发布通知 // 上传完成后发布通知

View File

@ -103,10 +103,13 @@ public class MessageQueueHelper
private static void HandleMessageReceived(object? sender, MqttApplicationMessageReceivedEventArgs e) private static void HandleMessageReceived(object? sender, MqttApplicationMessageReceivedEventArgs e)
{ {
var applicationMessage = e.ApplicationMessage; var applicationMessage = e.ApplicationMessage;
var retain = applicationMessage.Retain;
var topic = applicationMessage.Topic; var topic = applicationMessage.Topic;
var message = applicationMessage.ConvertPayloadToString(); var message = applicationMessage.ConvertPayloadToString();
Console.WriteLine($"收到消息:{topic} - {message}"); Console.WriteLine($"收到消息:{topic} -> {message}");
if (retain) return;
if (!Subscribers.TryGetValue(topic, out var subscribers)) return; if (!Subscribers.TryGetValue(topic, out var subscribers)) return;

View File

@ -30,6 +30,7 @@ internal class MqttClient
.WithClientId(Constants.SN) .WithClientId(Constants.SN)
.WithKeepAlivePeriod(TimeSpan.FromSeconds(60)) .WithKeepAlivePeriod(TimeSpan.FromSeconds(60))
.WithCleanStart(true) .WithCleanStart(true)
.WithWillRetain(false)
.WithCleanSession() .WithCleanSession()
.Build(); .Build();
} }