forked from ddrilling/AsbCloudServer
Add SetpointInfoDto
This commit is contained in:
parent
18ad9fc91a
commit
26ada6572b
12
AsbCloudApp/Data/SetpointInfoDto.cs
Normal file
12
AsbCloudApp/Data/SetpointInfoDto.cs
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
namespace AsbCloudApp.Data
|
||||||
|
{
|
||||||
|
public class SetpointInfoDto
|
||||||
|
{
|
||||||
|
public string DisplayName { get; set; }
|
||||||
|
public string Name { get; set; }
|
||||||
|
public string Units { get; set; }
|
||||||
|
public string Comment { get; set; }
|
||||||
|
public double Max { get; set; }
|
||||||
|
public double Min { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -15,5 +15,6 @@ namespace AsbCloudApp.Services
|
|||||||
Task<IEnumerable<SetpointsRequestDto>> GetForPanelAsync(string uid, CancellationToken token);
|
Task<IEnumerable<SetpointsRequestDto>> GetForPanelAsync(string uid, CancellationToken token);
|
||||||
Task<int> TryDelete(int idWell, int id, CancellationToken token);
|
Task<int> TryDelete(int idWell, int id, CancellationToken token);
|
||||||
Task<int> UpdateStateAsync(string uid, int id, SetpointsRequestDto setpointsRequestDto, CancellationToken token);
|
Task<int> UpdateStateAsync(string uid, int id, SetpointsRequestDto setpointsRequestDto, CancellationToken token);
|
||||||
|
IEnumerable<SetpointInfoDto> GetSetpointsNames(int idWell);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,6 +13,41 @@ namespace AsbCloudInfrastructure.Services
|
|||||||
{
|
{
|
||||||
public class SetpointsService : ISetpointsService, IConverter<SetpointsRequestDto, SetpointsRequest>
|
public class SetpointsService : ISetpointsService, IConverter<SetpointsRequestDto, SetpointsRequest>
|
||||||
{
|
{
|
||||||
|
private static readonly Dictionary<string, SetpointInfoDto> SetpointInfos = new ()
|
||||||
|
{
|
||||||
|
{ "pressureSp", new SetpointInfoDto { Name = "pressureSp", DisplayName = "Заданное давление в зависимости от режима" } },
|
||||||
|
{ "dPressureMaxSP", new SetpointInfoDto { Name = "dPressureMaxSP", DisplayName = "Заданное максимально допустимое дифференциальное рабочее давление" } },
|
||||||
|
{ "pressureRotorSp", new SetpointInfoDto { Name = "pressureRotorSp", DisplayName = "Заданное рабочее давление в роторе" } },
|
||||||
|
{ "pressureDevelopSp", new SetpointInfoDto { Name = "pressureDevelopSp", DisplayName = "Заданное рабочее давление при проработке" } },
|
||||||
|
{ "pressureSlideSp", new SetpointInfoDto { Name = "pressureSlideSp", DisplayName = "Заданное рабочее давление в слайде" } },
|
||||||
|
{ "dPressureMaxRotorSP", new SetpointInfoDto { Name = "dPressureMaxRotorSP", DisplayName = "Заданное дифференциальное рабочее давление при бурении в роторе" } },
|
||||||
|
{ "dPressureMaxDevelopSP", new SetpointInfoDto { Name = "dPressureMaxDevelopSP", DisplayName = "Заданное дифференциальное рабочее давление при проработке" } },
|
||||||
|
{ "dPressureMaxSlideSP", new SetpointInfoDto { Name = "dPressureMaxSlideSP", DisplayName = "Дифференциальное рабочее давление в слайде" } },
|
||||||
|
{ "torqueSp", new SetpointInfoDto { Name = "torqueSp", DisplayName = "Момент заданный" } },
|
||||||
|
{ "speedSp", new SetpointInfoDto { Name = "speedSp", DisplayName = "Скорость заданная" } },
|
||||||
|
{ "filterSpeedPidTime", new SetpointInfoDto { Name = "filterSpeedPidTime", DisplayName = "Время усреднения скорости для регулятора" } },
|
||||||
|
{ "filterSpeedHmiTime", new SetpointInfoDto { Name = "filterSpeedHmiTime", DisplayName = "Время усреднения скорости для панели" } },
|
||||||
|
{ "torqueSwitchModeSp", new SetpointInfoDto { Name = "torqueSwitchModeSp", DisplayName = "момент для переключения слайд/ротор" } },
|
||||||
|
{ "speedSwitchModeSp", new SetpointInfoDto { Name = "speedSwitchModeSp", DisplayName = "Скорость для переключения слайд/ротор" } },
|
||||||
|
{ "speedRotorSp", new SetpointInfoDto { Name = "speedRotorSp", DisplayName = "Задание скорости бурения в роторе" } },
|
||||||
|
{ "speedSlideSp", new SetpointInfoDto { Name = "speedSlideSp", DisplayName = "Задание скорости бурения в слайде" } },
|
||||||
|
{ "speedDevelopSp", new SetpointInfoDto { Name = "speedDevelopSp", DisplayName = "Задание скорости проработки" } },
|
||||||
|
{ "hookWeightSp", new SetpointInfoDto { Name = "hookWeightSp", DisplayName = "Рабочий вес накрюке" } },
|
||||||
|
{ "speedOutMax", new SetpointInfoDto { Name = "speedOutMax", DisplayName = "Верхний предел аналогового выхода по скорости" } },
|
||||||
|
{ "liftingSpeedMax", new SetpointInfoDto { Name = "liftingSpeedMax", DisplayName = "Макс скорость при подъёме" } },
|
||||||
|
{ "loweringSpeedMax", new SetpointInfoDto { Name = "loweringSpeedMax", DisplayName = "Макс скорость при спуске СПО" } },
|
||||||
|
{ "dDepthSwitchSp", new SetpointInfoDto { Name = "dDepthSwitchSp", DisplayName = "Высота над забоем для перехода на режим спускоподъёмных операций" } },
|
||||||
|
{ "speedSpMax", new SetpointInfoDto { Name = "speedSpMax", DisplayName = "Верхняя граница шкалы выходного сигнала задания скорости в инженерных единицах" } },
|
||||||
|
{ "speedSpMin", new SetpointInfoDto { Name = "speedSpMin", DisplayName = "Нижняя граница шкалы выходного сигнала задания скорости в инженерных единицах" } },
|
||||||
|
{ "ramp_dSP_g", new SetpointInfoDto { Name = "ramp_dSP_g", DisplayName = "темп изменения задания регулятору нагрузки" } },
|
||||||
|
{ "ramp_dSP_P", new SetpointInfoDto { Name = "ramp_dSP_P", DisplayName = "темп изменения задания регулятору дифперепада давления" } },
|
||||||
|
{ "ramp_dSP_M", new SetpointInfoDto { Name = "ramp_dSP_M", DisplayName = "темп изменения задания регулятору момента" } },
|
||||||
|
{ "T_IdleSp", new SetpointInfoDto { Name = "T_IdleSp", DisplayName = "Время контроля простоя в открытом стволе (МИНУТЫ!!!)" } },
|
||||||
|
{ "Break2Sp", new SetpointInfoDto { Name = "Break2Sp", DisplayName = "% вспом. тормоз" } },
|
||||||
|
{ "mseNVspMax", new SetpointInfoDto { Name = "mseNVspMax", DisplayName = "Задание оптимальной скорости вращения ВСП определённое в результате работы MSE" } },
|
||||||
|
{ "mseAutoSpeedLoAuto", new SetpointInfoDto { Name = "mseAutoSpeedLoAuto", DisplayName = "Минимальная скорость проходки для автоматического включения режима МСЕ, в % от заданной скорости" } },
|
||||||
|
};
|
||||||
|
|
||||||
private readonly CacheTable<SetpointsRequest> cacheSetpoints;
|
private readonly CacheTable<SetpointsRequest> cacheSetpoints;
|
||||||
private readonly ITelemetryService telemetryService;
|
private readonly ITelemetryService telemetryService;
|
||||||
|
|
||||||
@ -30,6 +65,7 @@ namespace AsbCloudInfrastructure.Services
|
|||||||
public async Task<int> InsertAsync(SetpointsRequestDto setpoints, CancellationToken token)
|
public async Task<int> InsertAsync(SetpointsRequestDto setpoints, CancellationToken token)
|
||||||
{
|
{
|
||||||
setpoints.IdState = 1;
|
setpoints.IdState = 1;
|
||||||
|
setpoints.UploadDate = DateTime.Now;
|
||||||
var inserted = await cacheSetpoints.InsertAsync(Convert(setpoints), token)
|
var inserted = await cacheSetpoints.InsertAsync(Convert(setpoints), token)
|
||||||
.ConfigureAwait(false);
|
.ConfigureAwait(false);
|
||||||
return inserted?.Id ?? 0;
|
return inserted?.Id ?? 0;
|
||||||
@ -50,10 +86,11 @@ namespace AsbCloudInfrastructure.Services
|
|||||||
if (idWell < 0)
|
if (idWell < 0)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
var entities = await cacheSetpoints.WhereAsync(s =>
|
var entities = (await cacheSetpoints.WhereAsync(s =>
|
||||||
s.IdWell == idWell && s.IdState == 1 && s.UploadDate.AddSeconds(s.ObsolescenceSec) > DateTime.Now,
|
s.IdWell == idWell && s.IdState == 1 && s.UploadDate.AddSeconds(s.ObsolescenceSec) > DateTime.Now,
|
||||||
token)
|
token)
|
||||||
.ConfigureAwait(false);
|
.ConfigureAwait(false))
|
||||||
|
.ToList();// без .ToList() работает не правильно.
|
||||||
|
|
||||||
if (!entities.Any())
|
if (!entities.Any())
|
||||||
return null;
|
return null;
|
||||||
@ -71,7 +108,7 @@ namespace AsbCloudInfrastructure.Services
|
|||||||
|
|
||||||
public async Task<int> UpdateStateAsync(string uid, int id, SetpointsRequestDto setpointsRequestDto, CancellationToken token)
|
public async Task<int> UpdateStateAsync(string uid, int id, SetpointsRequestDto setpointsRequestDto, CancellationToken token)
|
||||||
{
|
{
|
||||||
if (setpointsRequestDto.IdState != 3 || setpointsRequestDto.IdState != 4)
|
if (setpointsRequestDto.IdState != 3 && setpointsRequestDto.IdState != 4)
|
||||||
throw new ArgumentOutOfRangeException(nameof(setpointsRequestDto), $"{nameof(setpointsRequestDto.IdState)} = {setpointsRequestDto.IdState}. Mast be 3 or 4.");
|
throw new ArgumentOutOfRangeException(nameof(setpointsRequestDto), $"{nameof(setpointsRequestDto.IdState)} = {setpointsRequestDto.IdState}. Mast be 3 or 4.");
|
||||||
|
|
||||||
var idWell = telemetryService.GetidWellByTelemetryUid(uid) ?? -1;
|
var idWell = telemetryService.GetidWellByTelemetryUid(uid) ?? -1;
|
||||||
@ -83,6 +120,10 @@ namespace AsbCloudInfrastructure.Services
|
|||||||
|
|
||||||
var entity = await cacheSetpoints.FirstOrDefaultAsync(Predicate, token)
|
var entity = await cacheSetpoints.FirstOrDefaultAsync(Predicate, token)
|
||||||
.ConfigureAwait(false);
|
.ConfigureAwait(false);
|
||||||
|
|
||||||
|
if (entity is null)
|
||||||
|
return 0;
|
||||||
|
|
||||||
entity.IdState = setpointsRequestDto.IdState;
|
entity.IdState = setpointsRequestDto.IdState;
|
||||||
await cacheSetpoints.UpsertAsync(entity, token)
|
await cacheSetpoints.UpsertAsync(entity, token)
|
||||||
.ConfigureAwait(false);
|
.ConfigureAwait(false);
|
||||||
@ -116,5 +157,8 @@ namespace AsbCloudInfrastructure.Services
|
|||||||
var dto = src.Adapt<SetpointsRequestDto>();
|
var dto = src.Adapt<SetpointsRequestDto>();
|
||||||
return dto;
|
return dto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public IEnumerable<SetpointInfoDto> GetSetpointsNames(int idWell)
|
||||||
|
=> SetpointInfos.Values;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -26,6 +26,26 @@ namespace AsbCloudWebApi.Controllers
|
|||||||
this.wellService = wellService;
|
this.wellService = wellService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Получает список запросов на изменение уставок.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="idWell"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet("api/well/{idWell}/setpointsNames")]
|
||||||
|
[ProducesResponseType(typeof(IEnumerable<SetpointInfoDto>), (int)System.Net.HttpStatusCode.OK)]
|
||||||
|
public IActionResult GetSetpointsNamesByIdWellAsync([FromRoute] int idWell)
|
||||||
|
{
|
||||||
|
int? idCompany = User.GetCompanyId();
|
||||||
|
int? idUser = User.GetUserId();
|
||||||
|
|
||||||
|
if (idCompany is null || idUser is null)
|
||||||
|
return Forbid();
|
||||||
|
|
||||||
|
var result = setpointsService.GetSetpointsNames(idWell);
|
||||||
|
|
||||||
|
return Ok(result);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Добавляет запрос на изменение заданий панели оператора.
|
/// Добавляет запрос на изменение заданий панели оператора.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -138,12 +158,12 @@ namespace AsbCloudWebApi.Controllers
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Пробуем удалить запрос на изменение уставок. Это будет выполнено, если запрос еще не был отправлен.
|
/// Пробует удалить запрос на изменение уставок. Это будет выполнено, если запрос еще не был отправлен на панель.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="idWell"></param>
|
/// <param name="idWell"></param>
|
||||||
/// <param name="id"></param>
|
/// <param name="id"></param>
|
||||||
/// <param name="token"></param>
|
/// <param name="token"></param>
|
||||||
/// <returns>1 - удалено, <= 0 - не удалено</returns>
|
/// <returns>1 - удалено, 0 и меньше - не удалено</returns>
|
||||||
[HttpDelete("api/well/{idWell}/setpoints/{id}")]
|
[HttpDelete("api/well/{idWell}/setpoints/{id}")]
|
||||||
public async Task<IActionResult> TryDeleteByIdWellAsync(int idWell, int id, CancellationToken token = default)
|
public async Task<IActionResult> TryDeleteByIdWellAsync(int idWell, int id, CancellationToken token = default)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user