Compare commits
4 Commits
34c7a83ab7
...
c140544af7
Author | SHA1 | Date |
---|---|---|
huangxianguo | c140544af7 | |
huangxianguo | 3fdbe7c5c5 | |
huangxianguo | 44456861df | |
huangxianguo | 9c1993f730 |
|
@ -0,0 +1,6 @@
|
||||||
|
namespace MasstransferCommon.Model.Constant;
|
||||||
|
|
||||||
|
public class Constants
|
||||||
|
{
|
||||||
|
public const string SN = "5506771257";
|
||||||
|
}
|
|
@ -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";
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -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();
|
||||||
|
|
|
@ -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; }
|
||||||
|
}
|
|
@ -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()
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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("按任意键退出");
|
||||||
|
|
|
@ -55,21 +55,29 @@ public class MinioHelper
|
||||||
/// <param name="filePath"></param>
|
/// <param name="filePath"></param>
|
||||||
/// <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)
|
||||||
|
{
|
||||||
|
try
|
||||||
{
|
{
|
||||||
if (!await BucketExistsAsync(bucketName))
|
if (!await BucketExistsAsync(bucketName))
|
||||||
{
|
{
|
||||||
await _client.MakeBucketAsync(new MakeBucketArgs().WithBucket(bucketName));
|
await _client.MakeBucketAsync(new MakeBucketArgs().WithBucket(bucketName));
|
||||||
}
|
}
|
||||||
|
|
||||||
var response = await _client.PutObjectAsync(new PutObjectArgs()
|
await _client.PutObjectAsync(new PutObjectArgs()
|
||||||
.WithBucket(bucketName)
|
.WithBucket(bucketName)
|
||||||
.WithObject(fileName)
|
.WithObject(fileName)
|
||||||
.WithFileName(filePath));
|
.WithFileName(filePath));
|
||||||
|
|
||||||
Console.WriteLine(response);
|
Console.WriteLine("文件上传成功");
|
||||||
|
|
||||||
return $"{bucketName}/{fileName}";
|
return $"{bucketName}/{fileName}";
|
||||||
}
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
Console.WriteLine($"文件上传失败: {e}");
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 下载文件
|
/// 下载文件
|
||||||
|
|
Loading…
Reference in New Issue