This commit is contained in:
eugeniy_ivanov 2022-12-25 23:16:36 +05:00
parent 169968da44
commit 3c84648eec
6 changed files with 30 additions and 20 deletions

View File

@ -7,6 +7,11 @@ namespace AsbCloudApp.Data
/// </summary>
public class PlannedTrajectoryDto
{
/// <summary>
/// ИД строки с координатами
/// </summary>
public int Id { get; set; }
/// <summary>
/// ИД скважины
/// </summary>
@ -14,7 +19,7 @@ namespace AsbCloudApp.Data
/// <summary>
/// Дата загрузки
/// </summary>
public DateTimeOffset Date { get; set; }
public DateTimeOffset UpdateDate { get; set; }
/// <summary>
/// ИД пользователя
/// </summary>

View File

@ -1,30 +1,31 @@
using System.IO;
namespace AsbCloudApp.Services
{
#nullable enable
/// <summary>
/// Сервис загрузки и обработки плановой траектории из файла
/// </summary>
public interface IPlannedTrajectoryImportService
{
/// <summary>
/// шаблон для заполнения плановой траектории
/// скачать шаблон для заполнения плановой траектории
/// </summary>
/// <returns></returns>
Stream GetTemplateFile();
/// <summary>
/// загрузить строки плановой траектории в .xlsx
/// загрузить текущую плановую траекторию в .xlsx
/// </summary>
/// <param name="idWell"></param>
/// <returns></returns>
Stream ExportRows(int idWell);
Stream Export(int idWell);
/// <summary>
/// закгрузить из excel координаты плановой траектории
/// импортировать из excel плановую траекторию
/// </summary>
/// <param name="idWell"></param>
/// <param name="idUser"></param>
/// <param name="stream"></param>
/// <param name="deleteWellOperationsBeforeImport">Очистить старые перед импортом (если файл проходит валидацию)</param>
/// <param name="deleteWellOperationsBeforeImport">Очистить старые координаты перед импортом (если файл проходит валидацию)</param>
void Import(int idWell, int idUser, Stream stream, bool deleteWellOperationsBeforeImport = false);
}
#nullable disable
}

View File

@ -5,6 +5,7 @@ using System.Threading.Tasks;
namespace AsbCloudApp.Services
{
#nullable enable
/// <summary>
/// CRUD для работы с плановой траекторией из клиента
/// </summary>
@ -17,7 +18,7 @@ namespace AsbCloudApp.Services
/// <param name="idWell"></param>
/// <param name="token"></param>
/// <returns></returns>
Task<IEnumerable<PlannedTrajectoryDto>> GetCoordinates(int idWell, CancellationToken token);
Task<IEnumerable<PlannedTrajectoryDto>?> GetCoordinatesAsync(int idWell, CancellationToken token);
/// <summary>
/// Добавить строки с координатами
@ -43,11 +44,12 @@ namespace AsbCloudApp.Services
CancellationToken token);
/// <summary>
/// Удалить строку с координатами
/// Удалить строки с координатами
/// </summary>
/// <param name="ids"></param>
/// <param name="token"></param>
/// <returns></returns>
Task<int> DeleteAsync(IEnumerable<int> ids, CancellationToken token);
Task<int> DeleteRangeAsync(IEnumerable<int> ids, CancellationToken token);
}
#nullable disable
}

View File

@ -11,6 +11,7 @@ using System.Linq;
namespace AsbCloudInfrastructure.Services.PlannedTrajectory
{
#nullable enable
public class PlannedTrajectoryImportService : IPlannedTrajectoryImportService
{
/*
@ -51,7 +52,7 @@ namespace AsbCloudInfrastructure.Services.PlannedTrajectory
return stream;
}
public Stream ExportRows(int idWell)
public Stream Export(int idWell)
{
var plannedTrajectorys = db.PlannedTrajectorys
.Where(o => o.IdWell == idWell)
@ -252,5 +253,6 @@ namespace AsbCloudInfrastructure.Services.PlannedTrajectory
return trajectoryRow;
}
}
#nullable disable
}

View File

@ -38,7 +38,7 @@ namespace AsbCloudInfrastructure.Services.PlannedTrajectory
.ConfigureAwait(false);
}
public async Task<int> DeleteAsync(IEnumerable<int> ids, CancellationToken token)
public async Task<int> DeleteRangeAsync(IEnumerable<int> ids, CancellationToken token)
{
var query = db.PlannedTrajectorys.Where(e => ids.Contains(e.Id));
db.PlannedTrajectorys.RemoveRange(query);
@ -46,16 +46,16 @@ namespace AsbCloudInfrastructure.Services.PlannedTrajectory
.ConfigureAwait(false);
}
public async Task<IEnumerable<PlannedTrajectoryDto>?> GetCoordinates(int idWell, CancellationToken token)
public async Task<IEnumerable<PlannedTrajectoryDto>?> GetCoordinatesAsync(int idWell, CancellationToken token)
{
var well = wellService.GetOrDefault(idWell);
if (well is null || well.Timezone is null)
throw new ArgumentInvalidException("idWell doesn`t exist", nameof(idWell));
var query = db.PlannedTrajectorys
.Where(x => x.IdWell == idWell);
.Where(x => x.IdWell == idWell);
var entities = await query
.OrderBy(e => e.LoadDate)
.ToListAsync(token);
.ToListAsync(token);
var result = entities
.Select(r => Convert(r));
return result;

View File

@ -40,7 +40,7 @@ namespace AsbCloudWebApi.Controllers
[Route("template")]
[AllowAnonymous]
[ProducesResponseType(typeof(PhysicalFileResult), (int)System.Net.HttpStatusCode.OK)]
public IActionResult GetTamplate()
public IActionResult GetTemplate()
{
var stream = plannedTrajectoryImportService.GetTemplateFile();
var fileName = "ЕЦП_шаблон_файла_плановая_траектория.xlsx";
@ -68,7 +68,7 @@ namespace AsbCloudWebApi.Controllers
idWell, token).ConfigureAwait(false))
return Forbid();
var stream = plannedTrajectoryImportService.ExportRows(idWell);
var stream = plannedTrajectoryImportService.Export(idWell);
var fileName = await wellService.GetWellCaptionByIdAsync(idWell, token) + "_plannedTrajectory.xlsx";
return File(stream, "application/octet-stream", fileName);
}
@ -82,7 +82,7 @@ namespace AsbCloudWebApi.Controllers
/// <param name="token"> Токен отмены задачи </param>
/// <returns></returns>
[HttpPost]
//[Permission]
[Permission]
[Route("import/{options}")]
public async Task<IActionResult> ImportAsync(int idWell,
[FromForm] IFormFileCollection files,
@ -145,7 +145,7 @@ namespace AsbCloudWebApi.Controllers
idWell, token).ConfigureAwait(false))
return Forbid();
var result = plannedTrajectoryService.GetCoordinates(idWell,token);
var result = plannedTrajectoryService.GetCoordinatesAsync(idWell,token);
return Ok(result);
}
@ -208,7 +208,7 @@ namespace AsbCloudWebApi.Controllers
token).ConfigureAwait(false))
return Forbid();
var result = await plannedTrajectoryService.DeleteAsync(new int[] { idRow }, token)
var result = await plannedTrajectoryService.DeleteRangeAsync(new int[] { idRow }, token)
.ConfigureAwait(false);
return Ok(result);