完善查询坐标文件功能
This commit is contained in:
parent
0e5f7a56d8
commit
cdaa4d8d52
|
@ -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";
|
||||
|
||||
|
@ -153,31 +135,39 @@ public class CoordinateService : Instant
|
|||
startTime, endTime);
|
||||
foreach (var substrate in substrates)
|
||||
{
|
||||
var path = Path.Combine(Environment.CurrentDirectory, "temp", $"{substrate.Id}.json");
|
||||
try
|
||||
// 上传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
|
||||
{
|
||||
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);
|
||||
|
||||
var fileName = $"{Constants.SN}/{substrate.BatchNo}/{substrate.SubstrateCode}/pcb/pcb.json";
|
||||
|
||||
await Minio.UploadFileAsync("coordinate", fileName, path);
|
||||
|
||||
var data = new CoordinateData()
|
||||
{
|
||||
FileType = "PCB",
|
||||
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);
|
||||
}
|
||||
FileType = "PCB",
|
||||
BatchNumber = substrate.BatchNo,
|
||||
BizNumber = substrate.SubstrateCode
|
||||
};
|
||||
await MessageQueueHelper.Publish(Topics.CoordinateUpload, data);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Console.WriteLine(e);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -192,34 +182,47 @@ public class CoordinateService : Instant
|
|||
|
||||
foreach (var record in records)
|
||||
{
|
||||
var path = Path.Combine(Environment.CurrentDirectory, "temp", $"{record.Id}.json");
|
||||
try
|
||||
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
|
||||
{
|
||||
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());
|
||||
|
||||
var fileName = $"{Constants.SN}/{record.BatchNo}/{record.SubstrateCode}/route/{record.Id}.json";
|
||||
|
||||
await Minio.UploadFileAsync("coordinate", fileName, path);
|
||||
|
||||
var data = new CoordinateData()
|
||||
{
|
||||
FileType = "ROUTE",
|
||||
BatchNumber = record.BatchNo,
|
||||
BizNumber = record.SubstrateCode
|
||||
};
|
||||
await MessageQueueHelper.Publish(Topics.CoordinateUpload, data);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Console.WriteLine(e);
|
||||
}
|
||||
FileType = "ROUTE",
|
||||
BatchNumber = record.BatchNo,
|
||||
BizNumber = record.SubstrateCode
|
||||
};
|
||||
await MessageQueueHelper.Publish(Topics.CoordinateUpload, data);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
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;
|
||||
|
@ -256,8 +271,31 @@ public class CoordinateService : Instant
|
|||
bizNumber,
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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; }
|
||||
}
|
|
@ -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"
|
||||
};
|
||||
|
||||
// 上传完成后发布通知
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -30,6 +30,7 @@ internal class MqttClient
|
|||
.WithClientId(Constants.SN)
|
||||
.WithKeepAlivePeriod(TimeSpan.FromSeconds(60))
|
||||
.WithCleanStart(true)
|
||||
.WithWillRetain(false)
|
||||
.WithCleanSession()
|
||||
.Build();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue