Compare commits

..

4 Commits

9 changed files with 160 additions and 27 deletions

View File

@ -0,0 +1,6 @@
namespace MasstransferCommon.Model.Constant;
public class Constants
{
public const string SN = "5506771257";
}

View File

@ -9,7 +9,7 @@
public static class Topics public static class Topics
{ {
// ReSharper disable once InconsistentNaming // ReSharper disable once InconsistentNaming
private const string SN = "123456"; private const string SN = "5506771257";
private const string Version = "1.0.0"; private const string Version = "1.0.0";

View File

@ -1,4 +1,9 @@
using MasstransferInfrastructure.Database.Sqlite; using MasstransferCommon.Model.Constant;
using MasstransferCommon.Utils;
using MasstransferCommunicate.Minio;
using MasstransferCommunicate.Mqtt.Client;
using MasstransferExporter.DataExporter.Model;
using MasstransferInfrastructure.Database.Sqlite;
namespace MasstransferExporter.DataExporter; namespace MasstransferExporter.DataExporter;
@ -9,12 +14,101 @@ public class CoordinateService
{ {
private static readonly SqliteHelper Db = SqliteHelper.GetInstance(); private static readonly SqliteHelper Db = SqliteHelper.GetInstance();
private static MinioHelper _minio = MinioHelper.GetInstance();
/// <summary> /// <summary>
/// 坐标信息导出 /// 坐标信息导出
/// </summary> /// </summary>
public static void CoordinateExporter() public static async void CoordinateExporter()
{ {
await MarkPointExporter();
}
/// <summary>
/// 上传mark点坐标文件
/// </summary>
private static async Task MarkPointExporter()
{
var formula = FormulaService.GetSelectedFormula();
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);
var path = Path.Combine(Environment.CurrentDirectory, "mark.json");
await File.WriteAllTextAsync(path, json);
var fileName = $"{Constants.SN}/20230301/20230301/mark/mark.json";
await _minio.UploadFileAsync("coordinate", fileName, path);
// 上传完成后删除本地的文件
File.Delete(path);
var data = new CoordinateData()
{
FileType = "MARK",
BatchNumber = "20230301",
BizNumber = "20230301"
};
await MessageQueueHelper.Publish(Topics.CoordinateUpload, data);
}
/// <summary>
/// 上传wafer坐标文件
/// </summary>
private async void WaferCoordinateExporter()
{
var data = new CoordinateData()
{
FileType = "WAFER",
BatchNumber = "20230301",
BizNumber = "20230301"
};
await MessageQueueHelper.Publish(Topics.CoordinateUpload, data);
}
/// <summary>
/// 上传基板坐标文件
/// </summary>
private async void SubstrateCoordinateExporter()
{
var data = new CoordinateData()
{
FileType = "PCB",
BatchNumber = "20230301",
BizNumber = "20230301"
};
await MessageQueueHelper.Publish(Topics.CoordinateUpload, data);
}
/// <summary>
/// 上传动打路径坐标文件
/// </summary>
private async void PathCoordinateExporter()
{
var data = new CoordinateData()
{
FileType = "ROUTE",
BatchNumber = "20230301",
BizNumber = "20230301"
};
await MessageQueueHelper.Publish(Topics.CoordinateUpload, data);
} }
} }

View File

@ -24,6 +24,15 @@ public class FormulaService
return BeanUtil.CopyProperties<FormulaDTO>(formulas); return BeanUtil.CopyProperties<FormulaDTO>(formulas);
} }
/// <summary>
/// 获取当前已经启用的配方
/// </summary>
/// <returns></returns>
public static Formula? GetSelectedFormula()
{
return Db.Query<Formula>("select * from formulas where selected = 1").FirstOrDefault();
}
/// <summary> /// <summary>
/// 根据配方id来获取配方信息 /// 根据配方id来获取配方信息
/// </summary> /// </summary>
@ -51,7 +60,7 @@ public class FormulaService
.FirstOrDefault(); .FirstOrDefault();
} }
private static WorkBenchSetting? GetWorkBenchSettingByFormulaId(string formulaId) public static WorkBenchSetting? GetWorkBenchSettingByFormulaId(string formulaId)
{ {
return Db.Query<WorkBenchSetting>("select * from work_bench_settings where formulaId = ?", formulaId) return Db.Query<WorkBenchSetting>("select * from work_bench_settings where formulaId = ?", formulaId)
.FirstOrDefault(); .FirstOrDefault();

View File

@ -0,0 +1,10 @@
namespace MasstransferExporter.DataExporter.Model;
public class CoordinateData
{
public string FileType { get; set; }
public string BizNumber { get; set; }
public string BatchNumber { get; set; }
}

View File

@ -85,9 +85,9 @@ public class ImageService
/// </summary> /// </summary>
public static async void ImageExporter() public static async void ImageExporter()
{ {
var yesterday = DateTime.Today.AddDays(-1); var yesterday = DateTime.Today.AddDays(-2);
await ImageExporter(yesterday); await ImageExporter(yesterday, false);
} }
/// <summary> /// <summary>
@ -99,6 +99,8 @@ public class ImageService
{ {
try try
{ {
var bucket = isThumbnail ? "thumbnail" : "image";
var systemParams = GetSystemParams(); var systemParams = GetSystemParams();
var imageStoragePath = var imageStoragePath =
systemParams!.ImageStoragePath ?? Environment.GetEnvironmentVariable("USERPROFILE"); systemParams!.ImageStoragePath ?? Environment.GetEnvironmentVariable("USERPROFILE");
@ -111,8 +113,11 @@ public class ImageService
var dirInfo = new DirectoryInfo(dir); var dirInfo = new DirectoryInfo(dir);
// 对图片进行压缩 if (isThumbnail)
GenerateThumbnail(dirInfo); {
// 对图片进行压缩
GenerateThumbnail(dirInfo);
}
// 文件保存路径的规则是 {user BasePath}/masstransfer/images/{yyyyMMdd}/{batchCode}/wafer/{waferCode}/{timestamp}.bmp // 文件保存路径的规则是 {user BasePath}/masstransfer/images/{yyyyMMdd}/{batchCode}/wafer/{waferCode}/{timestamp}.bmp
var files = dirInfo.GetDirectories(); var files = dirInfo.GetDirectories();
@ -132,11 +137,11 @@ public class ImageService
foreach (var image in images) foreach (var image in images)
{ {
var fileName = $"123456/{codeDir.Name}/{batchDir.Name}/{type.Name}/{image.Name}"; var fileName = $"{Constants.SN}/{codeDir.Name}/{batchDir.Name}/{type.Name}/{image.Name}";
var path = image.FullName; var path = image.FullName;
await Minio.UploadFileAsync("image", fileName, path); await Minio.UploadFileAsync(bucket, fileName, path);
} }
var data = new ImageExportData() var data = new ImageExportData()

View File

@ -1,4 +1,5 @@
using MasstransferCommon.Model.Entity; using MasstransferCommon.Model.Constant;
using MasstransferCommon.Model.Entity;
using MasstransferCommon.Utils; using MasstransferCommon.Utils;
using MasstransferCommunicate.Minio; using MasstransferCommunicate.Minio;
using MasstransferInfrastructure.Database.Sqlite; using MasstransferInfrastructure.Database.Sqlite;
@ -32,7 +33,7 @@ public class LogFileExporter
foreach (var file in files) foreach (var file in files)
{ {
var fileName = $"123456/{TimeUtil.FormatTime(yesterday, "yyyyMMdd")}/{level}/{file.Name}"; var fileName = $"{Constants.SN}/{TimeUtil.FormatTime(yesterday, "yyyyMMdd")}/{level}/{file.Name}";
await _minio.UploadFileAsync("log", fileName, file.FullName); await _minio.UploadFileAsync("log", fileName, file.FullName);
} }

View File

@ -1,5 +1,5 @@
using MasstransferCommunicate.Mqtt.Client; using MasstransferCommunicate.Mqtt.Client;
using MasstransferExporter.ImageExporter; using MasstransferExporter.DataExporter;
using MasstransferInfrastructure.Mqtt.Model; using MasstransferInfrastructure.Mqtt.Model;
class Program class Program
@ -15,7 +15,7 @@ class Program
await MessageQueueHelper.InitConnect(options); await MessageQueueHelper.InitConnect(options);
ImageService.ImageExporter(); CoordinateService.CoordinateExporter();
Console.WriteLine("按任意键退出"); Console.WriteLine("按任意键退出");

View File

@ -56,19 +56,27 @@ public class MinioHelper
/// <returns></returns> /// <returns></returns>
public async Task<string> UploadFileAsync(string bucketName, string fileName, string filePath) public async Task<string> UploadFileAsync(string bucketName, string fileName, string filePath)
{ {
if (!await BucketExistsAsync(bucketName)) try
{ {
await _client.MakeBucketAsync(new MakeBucketArgs().WithBucket(bucketName)); if (!await BucketExistsAsync(bucketName))
{
await _client.MakeBucketAsync(new MakeBucketArgs().WithBucket(bucketName));
}
await _client.PutObjectAsync(new PutObjectArgs()
.WithBucket(bucketName)
.WithObject(fileName)
.WithFileName(filePath));
Console.WriteLine("文件上传成功");
return $"{bucketName}/{fileName}";
}
catch (Exception e)
{
Console.WriteLine($"文件上传失败: {e}");
return "";
} }
var response = await _client.PutObjectAsync(new PutObjectArgs()
.WithBucket(bucketName)
.WithObject(fileName)
.WithFileName(filePath));
Console.WriteLine(response);
return $"{bucketName}/{fileName}";
} }
/// <summary> /// <summary>