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 CliWrap;
using System.Threading.Tasks;
using System.Threading;
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")
.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)
{
@ -52,7 +53,6 @@ namespace AsbCloudInfrastructure.Services.DrillingProgram.Convert
{
throw new FileFormatException($"Файл с именем: {file} - неподдерживаемого формата. Он не может быть добавлен в список файлов для конвертации и слияния в общий файл программы бурения.");
}
}
var listFileNames = filesNames
@ -64,8 +64,12 @@ namespace AsbCloudInfrastructure.Services.DrillingProgram.Convert
.ToList();
foreach (var fileName in listFileNames)
{
if (!fileName.inputFile.ToLower().EndsWith(".pdf"))
await StartConvertProcessAsync(fileName.inputFile, fileName.convertedFile);
var fileExt = Path.GetExtension(fileName.inputFile);
if (fileExt != ".pdf")
{
//FileInfo fileInfo = new FileInfo(fileName.inputFile);
await StartConvertProcessAsync(fileName.inputFile, fileName.convertedFile, token);
}
}
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 fileService = serviceProvider.GetRequiredService<FileService>();
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);
};

View File

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