diff --git a/MasstransferExporter/DataExporter/CoordinateService.cs b/MasstransferExporter/DataExporter/CoordinateService.cs
index a09f314..a588df3 100644
--- a/MasstransferExporter/DataExporter/CoordinateService.cs
+++ b/MasstransferExporter/DataExporter/CoordinateService.cs
@@ -50,33 +50,15 @@ public class CoordinateService : Instant
///
/// 上传mark点坐标文件
///
- 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
- {
- { "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);
+ }
+ }
+
+ ///
+ /// 上传基板坐标文件
+ ///
+ ///
+ 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);
+ }
+ }
+
+ ///
+ /// 上传动打记录
+ ///
+ ///
+ 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.AddEventHandler(EventType.StartUp,
- async () => { await MessageQueueHelper.Subscribe(Topics.QueryCoordinate, QueryCoordinate); });
+ EventBus.AddEventHandler(EventType.StartUp, ListenCoordinateQueryEvent);
+ }
+
+ private static async Task ListenCoordinateQueryEvent(EventType type, bool start)
+ {
+ await MessageQueueHelper.Subscribe(Topics.QueryCoordinate, QueryCoordinate);
}
///
@@ -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(sql, substrate.Id);
+ foreach (var record in records)
+ {
+ await UploadStrikeRecord(record);
+ }
+
+ break;
+ }
+ }
}
}
}
\ No newline at end of file
diff --git a/MasstransferExporter/DataExporter/Model/CoordinateData.cs b/MasstransferExporter/DataExporter/Model/CoordinateData.cs
index ae8c95f..022f333 100644
--- a/MasstransferExporter/DataExporter/Model/CoordinateData.cs
+++ b/MasstransferExporter/DataExporter/Model/CoordinateData.cs
@@ -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; }
}
\ No newline at end of file
diff --git a/MasstransferExporter/ImageExporter/ImageService.cs b/MasstransferExporter/ImageExporter/ImageService.cs
index 65ca2ab..ed2f29e 100644
--- a/MasstransferExporter/ImageExporter/ImageService.cs
+++ b/MasstransferExporter/ImageExporter/ImageService.cs
@@ -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"
};
// 上传完成后发布通知
diff --git a/MasstransferInfrastructure/Mqtt/Client/MessageQueueHelper.cs b/MasstransferInfrastructure/Mqtt/Client/MessageQueueHelper.cs
index 0da143a..7a50a99 100644
--- a/MasstransferInfrastructure/Mqtt/Client/MessageQueueHelper.cs
+++ b/MasstransferInfrastructure/Mqtt/Client/MessageQueueHelper.cs
@@ -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;
diff --git a/MasstransferInfrastructure/Mqtt/Client/MqttClient.cs b/MasstransferInfrastructure/Mqtt/Client/MqttClient.cs
index cd966bd..cac79e4 100644
--- a/MasstransferInfrastructure/Mqtt/Client/MqttClient.cs
+++ b/MasstransferInfrastructure/Mqtt/Client/MqttClient.cs
@@ -30,6 +30,7 @@ internal class MqttClient
.WithClientId(Constants.SN)
.WithKeepAlivePeriod(TimeSpan.FromSeconds(60))
.WithCleanStart(true)
+ .WithWillRetain(false)
.WithCleanSession()
.Build();
}