完善查询坐标文件功能

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>
/// 上传mark点坐标文件
/// </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");
try
{
var formula = FormulaService.GetSelectedFormula();
var batchCode = substrate.BatchNo;
var substrateCode = substrate.SubstrateCode;
if (formula == null) return;
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);
await File.WriteAllTextAsync(path, substrate.SubstrateMarkPointJson);
var fileName = $"{Constants.SN}/{batchCode}/{substrateCode}/mark/mark.json";
@ -152,6 +134,19 @@ public class CoordinateService : Instant
var substrates = Db.Query<Substrate>("SELECT * FROM substrates WHERE create_time >= ? AND create_time <= ?",
startTime, endTime);
foreach (var substrate in substrates)
{
// 上传mark 点坐标信息
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
@ -169,17 +164,12 @@ public class CoordinateService : Instant
BizNumber = substrate.SubstrateCode
};
await MessageQueueHelper.Publish(Topics.CoordinateUpload, data);
// 上传mark 点坐标信息
await MarkPointExporter(substrate.BatchNo, substrate.SubstrateCode);
}
catch (Exception e)
{
Console.WriteLine(e);
}
}
}
/// <summary>
/// 上传动打路径坐标文件
@ -191,6 +181,16 @@ public class CoordinateService : Instant
startTime, endTime);
foreach (var record in records)
{
await UploadStrikeRecord(record);
}
}
/// <summary>
/// 上传动打记录
/// </summary>
/// <param name="record"></param>
private static async Task UploadStrikeRecord(StrikeRecord record)
{
var path = Path.Combine(Environment.CurrentDirectory, "temp", $"{record.Id}.json");
try
@ -214,12 +214,15 @@ public class CoordinateService : Instant
Console.WriteLine(e);
}
}
}
public void Initialized()
{
EventBus<bool>.AddEventHandler(EventType.StartUp,
async () => { await MessageQueueHelper.Subscribe(Topics.QueryCoordinate, QueryCoordinate); });
EventBus<bool>.AddEventHandler(EventType.StartUp, ListenCoordinateQueryEvent);
}
private static async Task ListenCoordinateQueryEvent(EventType type, bool start)
{
await MessageQueueHelper.Subscribe(Topics.QueryCoordinate, QueryCoordinate);
}
/// <summary>
@ -231,6 +234,18 @@ public class CoordinateService : Instant
{
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 bizNumber = dto.BizNumber;
var fileType = dto.FileType;
@ -257,7 +272,30 @@ public class CoordinateService : Instant
batchNumber).FirstOrDefault();
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 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,
BizNumber = codeDir.Name,
ImageType = imageType,
PicType = isThumbnail ? "thumbnail" : "raw"
PicType = isThumbnail ? "thumbnail" : "image"
};
// 上传完成后发布通知
@ -233,7 +233,7 @@ public class ImageService : Instant
foreach (var image in images)
{
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;
@ -245,7 +245,7 @@ public class ImageService : Instant
BatchNumber = batchCode.Name,
BizNumber = codeDir.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)
{
var applicationMessage = e.ApplicationMessage;
var retain = applicationMessage.Retain;
var topic = applicationMessage.Topic;
var message = applicationMessage.ConvertPayloadToString();
Console.WriteLine($"收到消息:{topic} - {message}");
Console.WriteLine($"收到消息:{topic} -> {message}");
if (retain) return;
if (!Subscribers.TryGetValue(topic, out var subscribers)) return;

View File

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