Правки по результатам ревью

This commit is contained in:
Olga Nemt 2023-05-17 11:42:14 +05:00
parent f4cc1d1bdf
commit b95250a0dd
5 changed files with 40 additions and 46 deletions

View File

@ -19,6 +19,6 @@ namespace AsbCloudApp.Repositories
/// <param name="idWell">ключ скважины</param> /// <param name="idWell">ключ скважины</param>
/// <param name="token"></param> /// <param name="token"></param>
/// <returns></returns> /// <returns></returns>
Task<TrajectoryDto[]> GetTrajectoryAsync(int idWell, CancellationToken token); Task<IEnumerable<TrajectoryDto>> GetTrajectoryAsync(int idWell, CancellationToken token);
} }
} }

View File

@ -4,6 +4,7 @@ using AsbCloudApp.Repositories;
using AsbCloudApp.Services; using AsbCloudApp.Services;
using AsbCloudDb.Model; using AsbCloudDb.Model;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -20,7 +21,7 @@ namespace AsbCloudInfrastructure.Repository
this.wellService = wellService; this.wellService = wellService;
} }
public async Task<TrajectoryDto[]> GetTrajectoryAsync(int idWell, CancellationToken token) public async Task<IEnumerable<TrajectoryDto>> GetTrajectoryAsync(int idWell, CancellationToken token)
{ {
var well = wellService.GetOrDefault(idWell); var well = wellService.GetOrDefault(idWell);

View File

@ -86,7 +86,7 @@ namespace AsbCloudInfrastructure.Repository
.Where(x => x.IdWell == idWell); .Where(x => x.IdWell == idWell);
var entities = await query var entities = await query
.OrderBy(e => e.WellboreDepth) .OrderBy(e => e.WellboreDepth)
.ToListAsync(token); .ToArrayAsync(token);
var result = entities var result = entities
.Select(r => Convert(r, offsetHours)); .Select(r => Convert(r, offsetHours));
return result; return result;
@ -116,11 +116,20 @@ namespace AsbCloudInfrastructure.Repository
return entity; return entity;
} }
public async Task<TrajectoryDto[]> GetTrajectoryAsync(int idWell, CancellationToken token) public async Task<IEnumerable<TrajectoryDto>> GetTrajectoryAsync(int idWell, CancellationToken token)
{ {
return (await GetAsync(idWell, 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.PlannedTrajectories
.AsNoTracking()
.Where(x => x.IdWell == idWell);
return await query
.Select(coord => new TrajectoryDto(coord.WellboreDepth, coord.ZenithAngle, coord.AzimuthGeo)) .Select(coord => new TrajectoryDto(coord.WellboreDepth, coord.ZenithAngle, coord.AzimuthGeo))
.ToArray(); .ToArrayAsync()
.ConfigureAwait(false);
} }
} }

View File

@ -45,19 +45,20 @@ namespace AsbCloudInfrastructure.Services.Trajectory
/// </summary> /// </summary>
/// <param name="geoCoordinates"></param> /// <param name="geoCoordinates"></param>
/// <returns></returns> /// <returns></returns>
private List<TrajectoryVisualizationDto> GetTrajectoryVisualisation(TrajectoryDto[] geoCoordinates) private IEnumerable<TrajectoryVisualizationDto> GetTrajectoryVisualisation(IEnumerable<TrajectoryDto> geoCoordinates)
{ {
if(geoCoordinates.Length < 2) var geoCoordinatesLength = geoCoordinates.Count();
return new List<TrajectoryVisualizationDto>(); if (geoCoordinatesLength < 2)
return new TrajectoryVisualizationDto[0];
var cartesianCoordinates = new List<TrajectoryVisualizationDto>(geoCoordinates.Length) { var cartesianCoordinates = new TrajectoryVisualizationDto[geoCoordinatesLength];
new (), cartesianCoordinates[0] = new();
};
for (var i = 1; i < geoCoordinates.Length; i++) var geoCoordinatesArray = geoCoordinates.ToArray();
for (var i = 1; i < geoCoordinatesLength; i++)
{ {
var intervalGeoParams = geoCoordinates[i - 1]; var intervalGeoParams = geoCoordinatesArray[i - 1];
var deltaWellLength = geoCoordinates[i].WellboreDepth - intervalGeoParams.WellboreDepth; var deltaWellLength = geoCoordinatesArray[i].WellboreDepth - intervalGeoParams.WellboreDepth;
var projectionLengthToXYSurface = deltaWellLength * Math.Sin(intervalGeoParams.ZenithAngle * Math.PI / 180); var projectionLengthToXYSurface = deltaWellLength * Math.Sin(intervalGeoParams.ZenithAngle * Math.PI / 180);
var dz = deltaWellLength * Math.Cos(intervalGeoParams.ZenithAngle * Math.PI / 180); var dz = deltaWellLength * Math.Cos(intervalGeoParams.ZenithAngle * Math.PI / 180);
@ -72,7 +73,7 @@ namespace AsbCloudInfrastructure.Services.Trajectory
Y = preCoordinates.Y + dy, Y = preCoordinates.Y + dy,
}; };
cartesianCoordinates.Add(coordinates); cartesianCoordinates[i] = coordinates;
} }
return cartesianCoordinates; return cartesianCoordinates;

View File

@ -13,7 +13,7 @@ namespace AsbCloudWebApi.Tests.ServicesTests
{ {
public class TrajectoryVisualizationServiceTest public class TrajectoryVisualizationServiceTest
{ {
private Mock<T> MakeTrajectoryRepositoryMock<T>(TrajectoryDto[] dateForGetMethod) private Mock<T> MakeTrajectoryRepositoryMock<T>(IEnumerable<TrajectoryDto> dateForGetMethod)
where T : class, ITrajectoryRepository where T : class, ITrajectoryRepository
{ {
var mock = new Mock<T>(); var mock = new Mock<T>();
@ -55,28 +55,18 @@ namespace AsbCloudWebApi.Tests.ServicesTests
[Fact] [Fact]
public async Task GetTrajectoryAsync_StraigthBore() public async Task GetTrajectoryAsync_StraigthBore()
{ {
var plannedTrajectory = new TrajectoryDto[] var trajectory = new TrajectoryDto[]
{ {
new(0, 0, 0), new(0, 0, 0),
new(0, 0, 0), new(0, 0, 0),
new(0, 0, 20), new(20, 0, 0),
new(0, 0, 20), new(20, 0, 0),
new(0, 0, 30), new(30, 0, 0),
new(0, 0, 50), new(50, 0, 0),
}; };
var factualTrajectory = new TrajectoryDto[] var mockPlan = MakeTrajectoryRepositoryMock<IPlannedTrajectoryRepository>(trajectory);
{ var mockFact = MakeTrajectoryRepositoryMock<IActualTrajectoryRepository>(trajectory);
new(0, 0, 0),
new(0, 0, 0),
new(0, 0, 20),
new(0, 0, 20),
new(0, 0, 30),
new(0, 0, 50),
};
var mockPlan = MakeTrajectoryRepositoryMock<IPlannedTrajectoryRepository>(plannedTrajectory);
var mockFact = MakeTrajectoryRepositoryMock<IActualTrajectoryRepository>(factualTrajectory);
var service = new TrajectoryVisualizationService(mockPlan.Object, mockFact.Object); var service = new TrajectoryVisualizationService(mockPlan.Object, mockFact.Object);
var result = await service.GetTrajectoryAsync(1, CancellationToken.None); var result = await service.GetTrajectoryAsync(1, CancellationToken.None);
var lastPointPlan = result.Plan!.Last(); var lastPointPlan = result.Plan!.Last();
@ -94,22 +84,15 @@ namespace AsbCloudWebApi.Tests.ServicesTests
[Fact] [Fact]
public async Task GetTrajectoryAsync_Match() public async Task GetTrajectoryAsync_Match()
{ {
var plannedTrajectory = new TrajectoryDto[] var trajectory = new TrajectoryDto[]
{ {
new(0, 0, 0), new(0, 0, 0),
new(30, 30, 10), new(10, 30, 30),
new(0, 0, 20), new(20, 0, 0),
}; };
var factualTrajectory = new TrajectoryDto[] var mockPlanned = MakeTrajectoryRepositoryMock<IPlannedTrajectoryRepository>(trajectory);
{ var mockFactual = MakeTrajectoryRepositoryMock<IActualTrajectoryRepository>(trajectory);
new(0, 0, 0),
new(30, 30, 10),
new(0, 0, 20),
};
var mockPlanned = MakeTrajectoryRepositoryMock<IPlannedTrajectoryRepository>(plannedTrajectory);
var mockFactual = MakeTrajectoryRepositoryMock<IActualTrajectoryRepository>(factualTrajectory);
var service = new TrajectoryVisualizationService(mockPlanned.Object, mockFactual.Object); var service = new TrajectoryVisualizationService(mockPlanned.Object, mockFactual.Object);
var result = await service.GetTrajectoryAsync(1, CancellationToken.None); var result = await service.GetTrajectoryAsync(1, CancellationToken.None);
var lastPointPlan = result.Plan!.Last(); var lastPointPlan = result.Plan!.Last();