refact GetConverteAndMergedFileAsync

This commit is contained in:
eugeniy_ivanov 2023-01-17 11:11:40 +05:00
parent 1b834e7752
commit 3e128c5cba
4 changed files with 20 additions and 8 deletions

View File

@ -5,6 +5,7 @@ using System.IO;
using System.Linq; using System.Linq;
using CliWrap; using CliWrap;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Threading;
namespace AsbCloudInfrastructure.Services.DrillingProgram.Convert namespace AsbCloudInfrastructure.Services.DrillingProgram.Convert
{ {
@ -36,14 +37,14 @@ namespace AsbCloudInfrastructure.Services.DrillingProgram.Convert
} }
} }
private async Task StartConvertProcessAsync(string inputFileName, string outFileName) private async Task StartConvertProcessAsync(string inputFileName, string outFileName, CancellationToken token)
{ {
var result = Cli.Wrap("/usr/bin/soffice") var result = Cli.Wrap("/usr/bin/soffice")
.WithArguments($"--headless --convert-to pdf {inputFileName} --outdir {outFileName}"); .WithArguments($"--headless --convert-to pdf {inputFileName} --outdir {outFileName}");
await result.ExecuteAsync(); await result.ExecuteAsync(token);
} }
public async Task GetConverteAndMergedFileAsync(IEnumerable<string> filesNames, string resultPath) public async Task GetConverteAndMergedFileAsync(IEnumerable<string> filesNames, string resultPath, CancellationToken token)
{ {
foreach (var file in filesNames) foreach (var file in filesNames)
{ {
@ -52,7 +53,6 @@ namespace AsbCloudInfrastructure.Services.DrillingProgram.Convert
{ {
throw new FileFormatException($"Файл с именем: {file} - неподдерживаемого формата. Он не может быть добавлен в список файлов для конвертации и слияния в общий файл программы бурения."); throw new FileFormatException($"Файл с именем: {file} - неподдерживаемого формата. Он не может быть добавлен в список файлов для конвертации и слияния в общий файл программы бурения.");
} }
} }
var listFileNames = filesNames var listFileNames = filesNames
@ -64,8 +64,12 @@ namespace AsbCloudInfrastructure.Services.DrillingProgram.Convert
.ToList(); .ToList();
foreach (var fileName in listFileNames) foreach (var fileName in listFileNames)
{ {
if (!fileName.inputFile.ToLower().EndsWith(".pdf")) var fileExt = Path.GetExtension(fileName.inputFile);
await StartConvertProcessAsync(fileName.inputFile, fileName.convertedFile); if (fileExt != ".pdf")
{
//FileInfo fileInfo = new FileInfo(fileName.inputFile);
await StartConvertProcessAsync(fileName.inputFile, fileName.convertedFile, token);
}
} }
DoMergedAsync(listFileNames.Select(c => c.convertedFile), resultPath); DoMergedAsync(listFileNames.Select(c => c.convertedFile), resultPath);
} }

View File

@ -15,5 +15,11 @@ Windows - C:\Program Files\LibreOffice\program\soffice.exe
с "ненужным" или "неправильным" форматом просто не будут попадать в список на преобразование. с "ненужным" или "неправильным" форматом просто не будут попадать в список на преобразование.
--список сигнатур файлов разных расширений
1.xlsx
(xlsDoc[0]==0x50) && (xlsDoc[1]==0x4B)
2.docx

View File

@ -481,7 +481,7 @@ namespace AsbCloudInfrastructure.Services.DrillingProgram
var context = serviceProvider.GetRequiredService<IAsbCloudDbContext>(); var context = serviceProvider.GetRequiredService<IAsbCloudDbContext>();
var fileService = serviceProvider.GetRequiredService<FileService>(); var fileService = serviceProvider.GetRequiredService<FileService>();
var files = state.Parts.Select(p => fileService.GetUrl(p.File)); var files = state.Parts.Select(p => fileService.GetUrl(p.File));
await converter.GetConverteAndMergedFileAsync(files, tempResultFilePath); await converter.GetConverteAndMergedFileAsync(files, tempResultFilePath, token);
await fileService.MoveAsync(idWell, null, idFileCategoryDrillingProgram, resultFileName, tempResultFilePath, token); await fileService.MoveAsync(idWell, null, idFileCategoryDrillingProgram, resultFileName, tempResultFilePath, token);
}; };

View File

@ -28,6 +28,8 @@ namespace ConsoleApp1
.Distinct() .Distinct()
.Where(f => fileExtension.Any(fe => f.ToLower().EndsWith(fe))) .Where(f => fileExtension.Any(fe => f.ToLower().EndsWith(fe)))
.ToList(); .ToList();
FileInfo fileInfo = new FileInfo(resultFile);
matchesExtensions(inputFiles); matchesExtensions(inputFiles);
foreach (var FileName in inputFiles) foreach (var FileName in inputFiles)
{ {