完善查询坐标文件功能
This commit is contained in:
parent
0e5f7a56d8
commit
cdaa4d8d52
|
@ -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;
|
||||||
|
@ -256,8 +271,31 @@ public class CoordinateService : Instant
|
||||||
bizNumber,
|
bizNumber,
|
||||||
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -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; }
|
||||||
}
|
}
|
|
@ -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"
|
||||||
};
|
};
|
||||||
|
|
||||||
// 上传完成后发布通知
|
// 上传完成后发布通知
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue