Merge branch 'feature/wellOperationRepository-refactoring' of http://test.digitaldrilling.ru:8080/DDrilling/AsbCloudServer into feature/wellOperationRepository-refactoring

This commit is contained in:
Olga Nemt 2024-04-24 12:28:43 +05:00
commit becb4e78b3
5 changed files with 48 additions and 20 deletions

View File

@ -33,9 +33,9 @@ namespace AsbCloudApp.Repositories
/// Сохранить данные drill_test /// Сохранить данные drill_test
/// </summary> /// </summary>
/// <param name="idTelemetry">ключ телеметрии</param> /// <param name="idTelemetry">ключ телеметрии</param>
/// <param name="dto">запись drill test</param> /// <param name="dtos">записи drill test</param>
/// <param name="token"></param> /// <param name="token"></param>
/// <returns></returns> /// <returns></returns>
Task<int> SaveDataAsync(int idTelemetry, DrillTestBaseDto dto, CancellationToken token); Task<int> SaveDataAsync(int idTelemetry, IEnumerable<DrillTestBaseDto> dtos, CancellationToken token);
} }
} }

View File

@ -63,16 +63,20 @@ namespace AsbCloudInfrastructure.Repository
return dto; return dto;
} }
public async Task<int> SaveDataAsync(int idTelemetry, DrillTestBaseDto dto, CancellationToken token) public async Task<int> SaveDataAsync(int idTelemetry, IEnumerable<DrillTestBaseDto> dtos, CancellationToken token)
{ {
var entity = dto.Adapt<DrillTest>(); var entities = dtos.Select(dto =>
entity.IdTelemetry = idTelemetry; {
db.DrillTests.Add(entity); var entity = dto.Adapt<DrillTest>();
entity.IdTelemetry = idTelemetry;
return entity;
});
db.DrillTests.AddRange(entities);
var result = await db.SaveChangesAsync(token); var result = await db.SaveChangesAsync(token);
return result; return result;
} }
private DrillTestDto Convert(DrillTest entity) private static DrillTestDto Convert(DrillTest entity)
{ {
var dto = entity.Adapt<DrillTestDto>(); var dto = entity.Adapt<DrillTestDto>();
dto.TimeStampStart = dto.TimeStampStart.ToRemoteDateTime(dto.Telemetry?.TimeZone?.Hours ?? 0); dto.TimeStampStart = dto.TimeStampStart.ToRemoteDateTime(dto.Telemetry?.TimeZone?.Hours ?? 0);

View File

@ -37,28 +37,41 @@ public class WellCompositeOperationService : IWellCompositeOperationService
private static Dictionary<(int, int), int> SettingsForSectionCategoryChange = new Dictionary<(int, int), int>() { private static Dictionary<(int, int), int> SettingsForSectionCategoryChange = new Dictionary<(int, int), int>() {
{ (2, 5096), 5013 }, { (2, 5096), 5013 },
{ (2, 5008), 5013 }, { (2, 5008), 5013 },
{ (2, 5002), 5113 },
{ (2, 5003), 5113 },
{ (3, 5096), 5084 }, { (3, 5096), 5084 },
{ (3, 5008), 5084 }, { (3, 5008), 5084 },
{ (3, 5085), 5015 }, { (3, 5085), 5015 },
{ (3, 5014), 5015 }, { (3, 5014), 5015 },
{ (3, 5002), 5113 },
{ (3, 5003), 5113 },
{ (31, 5014), 5015 }, { (31, 5014), 5015 },
{ (31, 5012), 5013 }, { (31, 5012), 5013 },
{ (31, 5083), 5013 }, { (31, 5083), 5013 },
{ (31, 5002), 5113 },
{ (31, 5003), 5113 },
{ (4, 5085), 5015 }, { (4, 5085), 5015 },
{ (4, 5087), 5015 }, { (4, 5087), 5015 },
{ (4, 5014), 5015 }, { (4, 5014), 5015 },
{ (4, 5053), 5037 }, { (4, 5053), 5037 },
{ (4, 5084), 5096 }, { (4, 5084), 5096 },
{ (4, 5086), 5013 }, { (4, 5086), 5013 },
{ (4, 5002), 5113 },
{ (4, 5003), 5113 },
{ (6, 5085), 5015 }, { (6, 5085), 5015 },
{ (6, 5036), 5034 }, { (6, 5036), 5034 },
{ (6, 5035), 5097 } { (6, 5035), 5097 },
{ (6, 5002), 5113 },
{ (6, 5003), 5113 },
{ (6, 5021), 5095 },
{ (6, 5086), 5012 }
}; };
private HashSet<(int IdSectionType, int IdCategory)> WellSectionTypesWithCategories = new HashSet<(int IdSectionType, int IdCategory)>() private HashSet<(int IdSectionType, int IdCategory)> WellSectionTypesWithCategories = new HashSet<(int IdSectionType, int IdCategory)>()
{ {
{ (2, 5001) }, { (2, 5001) },
{ (2, 5003) }, { (2, 5113) },
{ (2, 5013) }, { (2, 5013) },
{ (2, 5000) }, { (2, 5000) },
{ (2, 5022) }, { (2, 5022) },
@ -70,7 +83,7 @@ public class WellCompositeOperationService : IWellCompositeOperationService
{ (3, 5015) }, { (3, 5015) },
{ (3, 5037) }, { (3, 5037) },
{ (3, 5057) }, { (3, 5057) },
{ (3, 5003) }, { (3, 5113) },
{ (3, 5036) }, { (3, 5036) },
{ (3, 5084) }, { (3, 5084) },
{ (3, 5013) }, { (3, 5013) },
@ -86,7 +99,7 @@ public class WellCompositeOperationService : IWellCompositeOperationService
{ (31, 5015) }, { (31, 5015) },
{ (31, 5037) }, { (31, 5037) },
{ (31, 5057) }, { (31, 5057) },
{ (31, 5003) }, { (31, 5113) },
{ (31, 5036) }, { (31, 5036) },
{ (31, 5013) }, { (31, 5013) },
{ (31, 5022) }, { (31, 5022) },
@ -102,7 +115,7 @@ public class WellCompositeOperationService : IWellCompositeOperationService
{ (4, 5037) }, { (4, 5037) },
{ (4, 5097) }, { (4, 5097) },
{ (4, 5057) }, { (4, 5057) },
{ (4, 5003) }, { (4, 5113) },
{ (4, 5036) }, { (4, 5036) },
{ (4, 5008) }, { (4, 5008) },
{ (4, 5003) }, { (4, 5003) },
@ -121,7 +134,17 @@ public class WellCompositeOperationService : IWellCompositeOperationService
{ (6, 5037) }, { (6, 5037) },
{ (6, 5097) }, { (6, 5097) },
{ (6, 5057) }, { (6, 5057) },
{ (6, 5003) } { (6, 5113) },
{ (6, 5036) },
{ (6, 5013) },
{ (6, 5000) },
{ (6, 5022) },
{ (6, 5093) },
{ (6, 5017) },
{ (6, 5095) },
{ (6, 5012) },
{ (6, 5040) },
{ (6, 5092) }
}; };
public WellCompositeOperationService( public WellCompositeOperationService(

View File

@ -11,6 +11,7 @@ using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.SignalR; using Microsoft.AspNetCore.SignalR;
using System; using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.Net; using System.Net;
using System.Threading; using System.Threading;
@ -51,27 +52,27 @@ public class DrillTestController : ControllerBase
/// Сохраняет в БД. /// Сохраняет в БД.
/// </summary> /// </summary>
/// <param name="uid">уникальный идентификатор записи drill_test</param> /// <param name="uid">уникальный идентификатор записи drill_test</param>
/// <param name="dto">запись drill test</param> /// <param name="dtos">записи drill test</param>
/// <param name="token"></param> /// <param name="token"></param>
/// <returns></returns> /// <returns></returns>
[AllowAnonymous] [AllowAnonymous]
[HttpPost("api/telemetry/{uid}/[controller]")] [HttpPost("api/telemetry/{uid}/[controller]")]
public async Task<IActionResult> PostDataAsync( public async Task<IActionResult> PostDataAsync(
string uid, string uid,
[FromBody] DrillTestBaseDto dto, [FromBody] IEnumerable<DrillTestBaseDto> dtos,
CancellationToken token) CancellationToken token)
{ {
var telemetry = telemetryService.GetOrCreateTelemetryByUid(uid); var telemetry = telemetryService.GetOrCreateTelemetryByUid(uid);
if (telemetry is null) if (telemetry is null)
throw new Exception($"Telemetry with RemoteUid: {uid} does not exist."); throw new Exception($"Telemetry with RemoteUid: {uid} does not exist.");
await drillTestRepository.SaveDataAsync(telemetry.Id, dto, token); await drillTestRepository.SaveDataAsync(telemetry.Id, dtos, token);
var idWell = telemetryService.GetIdWellByTelemetryUid(uid); var idWell = telemetryService.GetIdWellByTelemetryUid(uid);
if (idWell is not null) if (idWell is not null)
_ = Task.Run(async () => _ = Task.Run(async () =>
{ {
var clients = telemetryHubContext.Clients.Group($"well_{idWell}"); var clients = telemetryHubContext.Clients.Group($"well_{idWell}");
await clients.ReceiveDrilltestData(dto, token); await clients.ReceiveDrilltestData(dtos, token);
}, CancellationToken.None); }, CancellationToken.None);
return Ok(); return Ok();

View File

@ -17,10 +17,10 @@ namespace AsbCloudWebApi.SignalR.Clients
/// Отправка клиенту уведомления о доставке с панели drill test данных. /// Отправка клиенту уведомления о доставке с панели drill test данных.
/// Для подписки на метод необходимо отправить сообщение в формате $"well_{idWell}" /// Для подписки на метод необходимо отправить сообщение в формате $"well_{idWell}"
/// </summary> /// </summary>
/// <param name="dto"></param> /// <param name="dtos"></param>
/// <param name="token"></param> /// <param name="token"></param>
/// <returns></returns> /// <returns></returns>
Task ReceiveDrilltestData(DrillTestBaseDto dto, CancellationToken token); Task ReceiveDrilltestData(IEnumerable<DrillTestBaseDto> dtos, CancellationToken token);
/// <summary> /// <summary>
/// Обновление записей РТК /// Обновление записей РТК