Merge branch 'dev' into feature/#32021538-match-categories-integration-test

This commit is contained in:
on.nemtina 2024-04-23 14:47:18 +05:00
commit b8c58030b9
6 changed files with 24 additions and 17 deletions

View File

@ -72,6 +72,7 @@ namespace AsbCloudApp.Services
/// <param name="request"></param> /// <param name="request"></param>
/// <param name="token"></param> /// <param name="token"></param>
/// <returns></returns> /// <returns></returns>
[Obsolete]
Task<IEnumerable<DetectedOperationStatDto>> GetOperationsStatAsync(DetectedOperationByWellRequest request, CancellationToken token); Task<IEnumerable<DetectedOperationStatDto>> GetOperationsStatAsync(DetectedOperationByWellRequest request, CancellationToken token);
/// <summary> /// <summary>

View File

@ -133,18 +133,22 @@ namespace AsbCloudInfrastructure.Repository
if (ids.Length != dtos.Count()) if (ids.Length != dtos.Count())
throw new ArgumentInvalidException(nameof(dtos), "Все записи должны иметь уникальные Id"); throw new ArgumentInvalidException(nameof(dtos), "Все записи должны иметь уникальные Id");
var dbSet = dbContext.Set<TEntity>(); var existingEntitiesCount = await dbContext.Set<TEntity>()
var existingEntitiesCount = await dbSet
.Where(o => ids.Contains(o.Id)) .Where(o => ids.Contains(o.Id))
.CountAsync(token); .CountAsync(token);
if (ids.Length != existingEntitiesCount) if (ids.Length != existingEntitiesCount)
throw new ArgumentInvalidException(nameof(dtos), "Все записи должны существовать в БД"); throw new ArgumentInvalidException(nameof(dtos), "Все записи должны существовать в БД");
var entities = dtos.Select(Convert);
var entities = dbContext.Set<TEntity>().Where(e => ids.Contains(e.Id)); var entries = entities.Select(entity => dbContext.Set<TEntity>().Update(entity)).ToList();
dbContext.Set<TEntity>().UpdateRange(entities);
return await dbContext.SaveChangesAsync(token); var affected = await dbContext.SaveChangesAsync(token);
entries.ForEach(entry => entry.State = EntityState.Detached);
return affected;
} }
/// <inheritdoc/> /// <inheritdoc/>

View File

@ -143,6 +143,7 @@ public class DetectedOperationService : IDetectedOperationService
} }
} }
[Obsolete]
public async Task<IEnumerable<DetectedOperationStatDto>> GetOperationsStatAsync(DetectedOperationByWellRequest request, CancellationToken token) public async Task<IEnumerable<DetectedOperationStatDto>> GetOperationsStatAsync(DetectedOperationByWellRequest request, CancellationToken token)
{ {
var well = await wellService.GetOrDefaultAsync(request.IdWell, token); var well = await wellService.GetOrDefaultAsync(request.IdWell, token);

View File

@ -96,7 +96,7 @@ namespace AsbCloudInfrastructure.Services.SAUB
return 0; return 0;
entity.IdState = setpointsRequestDto.IdState; entity.IdState = setpointsRequestDto.IdState;
var affected = await setpointsRepository.UpdateAsync(entity, token); var affected = await setpointsRepository.UpdateRangeAsync(new[] { entity }, token);
return affected; return affected;
} }

View File

@ -274,6 +274,7 @@ namespace AsbCloudInfrastructure.Services
dto.Timezone = GetTimezone(entity.Id); dto.Timezone = GetTimezone(entity.Id);
dto.StartDate = dbContext.WellOperations.Where(e => e.IdType == WellOperation.IdOperationTypeFact) dto.StartDate = dbContext.WellOperations.Where(e => e.IdType == WellOperation.IdOperationTypeFact)
.AsNoTracking()
.MinOrDefault(e => e.DateStart)?.ToRemoteDateTime(dto.Timezone.Hours); .MinOrDefault(e => e.DateStart)?.ToRemoteDateTime(dto.Timezone.Hours);
dto.WellType = entity.WellType.Caption; dto.WellType = entity.WellType.Caption;
dto.Cluster = entity.Cluster.Caption; dto.Cluster = entity.Cluster.Caption;

View File

@ -1,4 +1,5 @@
using AsbCloudApp.Data.DetectedOperation; using System;
using AsbCloudApp.Data.DetectedOperation;
using AsbCloudApp.Requests; using AsbCloudApp.Requests;
using AsbCloudApp.Services; using AsbCloudApp.Services;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
@ -110,7 +111,7 @@ namespace AsbCloudWebApi.Controllers.SAUB
} }
/// <summary> /// <summary>
/// Получить фильтрованный список операций по телеметрии САУБ /// Получить список автоопределенных операций для редактирования
/// </summary> /// </summary>
/// <param name="idWell"></param> /// <param name="idWell"></param>
/// <param name="request"></param> /// <param name="request"></param>
@ -118,7 +119,7 @@ namespace AsbCloudWebApi.Controllers.SAUB
/// <returns></returns> /// <returns></returns>
[HttpGet] [HttpGet]
[ProducesResponseType(typeof(PaginationContainer<DetectedOperationDto>), StatusCodes.Status200OK)] [ProducesResponseType(typeof(PaginationContainer<DetectedOperationDto>), StatusCodes.Status200OK)]
public async Task<IActionResult> GetAsync(int idWell, [FromQuery] DetectedOperationRequest request, public async Task<IActionResult> GetPageAsync(int idWell, [FromQuery] DetectedOperationRequest request,
CancellationToken token) CancellationToken token)
{ {
await AssertUserHasAccessToWellAsync(idWell, token); await AssertUserHasAccessToWellAsync(idWell, token);
@ -133,24 +134,23 @@ namespace AsbCloudWebApi.Controllers.SAUB
var result = await detectedOperationRepository.GetPageAsync(requestToService, token); var result = await detectedOperationRepository.GetPageAsync(requestToService, token);
return Ok(result); return Ok(result);
} }
/// <summary> /// <summary>
/// Получить статистику по фильтрованному списку операций по телеметрии САУБ /// Получить статистику по автоопределенным операциям
/// </summary> /// </summary>
/// <param name="idWell"></param> /// <param name="idWell"></param>
/// <param name="request"></param> /// <param name="request"></param>
/// <param name="token"></param> /// <param name="token"></param>
/// <returns></returns> /// <returns></returns>
[HttpGet("stat")] [HttpGet("stat")]
[ProducesResponseType(typeof(IEnumerable<DetectedOperationStatDto>), StatusCodes.Status200OK)] [ProducesResponseType(typeof(DetectedOperationListDto), StatusCodes.Status200OK)]
public async Task<IActionResult> GetStatAsync(int idWell, [FromQuery] DetectedOperationRequest request, public async Task<IActionResult> GetAsync(int idWell, [FromQuery] DetectedOperationRequest request, CancellationToken token)
CancellationToken token)
{ {
await AssertUserHasAccessToWellAsync(idWell, token); await AssertUserHasAccessToWellAsync(idWell, token);
var requestToService = new DetectedOperationByWellRequest(idWell, request); var requestToService = new DetectedOperationByWellRequest(idWell, request);
var result = await detectedOperationService.GetOperationsStatAsync(requestToService, token); var result = await detectedOperationService.GetAsync(requestToService, token);
return Ok(result); return Ok(result);
} }