корректировка контроллеров и сервисов

This commit is contained in:
eugeniy_ivanov 2022-07-18 18:51:49 +05:00
parent 7f4b434a8c
commit 421c706ca1
10 changed files with 218 additions and 150 deletions

View File

@ -6,6 +6,10 @@
<Nullable>disable</Nullable>
</PropertyGroup>
<ItemGroup>
<Compile Include="..\AsbCloudWebApi\DependencyInjection.cs" Link="DependencyInjection.cs" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="System.Linq" Version="4.3.0" />
</ItemGroup>

View File

@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AsbCloudApp.Requests
{
/// <summary>
/// класс с фильтрами для запроса
/// </summary>
public class SubsystemOperationTimeRequest: RequestBase
{
}
}

View File

@ -1,12 +1,20 @@
using System;
using AsbCloudApp.Data.Subsystems;
using AsbCloudApp.Requests;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace AsbCloudApp.Services.Subsystems
{
public interface ISubsystemOperationTimeService
{
Task<IEnumerable<SubsystemDto>> GetSubsystemAsync(int? idWell, CancellationToken token);
Task<IEnumerable<SubsystemStatisticsDto>> GetStatisticAsync(SubsystemOperationTimeRequest request, CancellationToken token);
Task<int> DeleteAsync(SubsystemOperationTimeRequest request, CancellationToken token);
Task<IEnumerable<SubsystemOperationTimeDto>> GetOperationTimeAsync(SubsystemOperationTimeRequest request, CancellationToken token);
}
}

View File

@ -1,16 +0,0 @@
using AsbCloudApp.Data.Subsystems;
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
namespace AsbCloudApp.Services.Subsystems
{
public interface ISubsystemStatisticsService
{
Task<IEnumerable<SubsystemStatisticsDto>> GetStatisticsAsync(CancellationToken token);
Task<IEnumerable<SubsystemStatisticsDto>> GetPeriodStatisticsAsync(DateTime periodBegin,
DateTime periodEnd,
CancellationToken token = default);
}
}

View File

@ -481,6 +481,11 @@ namespace AsbCloudDb.Model
new Permission{ Id = 124, Name="AdminWell.delete", Description="Разрешение удалять админ. Скважины"},
new Permission{ Id = 125, Name="AdminWell.edit", Description="Разрешение редактировать админ. Скважины"},
new Permission{ Id = 126, Name="AdminWell.get", Description="Разрешение просматривать админ. Скважины"},
new Permission{ Id = 127, Name="AdminSubsytem.delete", Description="Разрешение удалять админ. Подсистемы"},
new Permission{ Id = 128, Name="AdminSubsytem.edit", Description="Разрешение редактировать админ. Подсистемы"},
new Permission{ Id = 129, Name="AdminSubsytem.get", Description="Разрешение просматривать админ. Подсистемы"},
new Permission{ Id = 200, Name="Auth.edit", Description="Разрешение редактировать 0"},
new Permission{ Id = 201, Name="Auth.get", Description="Разрешение просматривать 0"},
new Permission{ Id = 202, Name="Cluster.get", Description="Разрешение просматривать Кусты"},

View File

@ -1,7 +1,10 @@
using Microsoft.Extensions.Configuration;
using AsbCloudDb.Model;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading;
@ -16,9 +19,33 @@ namespace AsbCloudInfrastructure.Services.Subsystems
{
connectionString = configuration.GetConnectionString("DefaultConnection");
}
protected override Task ExecuteAsync(CancellationToken token)
protected override async Task ExecuteAsync(CancellationToken token)
{
throw new NotImplementedException();
var timeToStartAnalysis = DateTime.Now;
var options = new DbContextOptionsBuilder<AsbCloudDbContext>()
.UseNpgsql(connectionString)
.Options;
while (!token.IsCancellationRequested)
{
if (DateTime.Now > timeToStartAnalysis)
{
timeToStartAnalysis = DateTime.Now + TimeSpan.FromHours(1);
try
{
}
catch (Exception ex)
{
Trace.TraceError(ex.Message);
}
//GC.Collect();
}
var ms = (int)(timeToStartAnalysis - DateTime.Now).TotalMilliseconds;
ms = ms > 100 ? ms : 100;
await Task.Delay(ms, token).ConfigureAwait(false);
}
}
}
}

View File

@ -1,14 +1,74 @@
using AsbCloudApp.Services.Subsystems;
using AsbCloudApp.Data.Subsystems;
using AsbCloudApp.Requests;
using AsbCloudApp.Services;
using AsbCloudApp.Services.Subsystems;
using AsbCloudDb.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace AsbCloudInfrastructure.Services.Subsystems
{
internal class SubsystemOperationTimeService: ISubsystemOperationTimeService
internal class SubsystemOperationTimeService : ISubsystemOperationTimeService
{
private readonly IAsbCloudDbContext db;
private readonly IWellService wellService;
public SubsystemOperationTimeService(IAsbCloudDbContext db, IWellService wellService)
{
this.db = db;
this.wellService = wellService;
}
public async Task<IEnumerable<SubsystemDto>> GetSubsystemAsync(int? idWell, CancellationToken token)
{
var result = new List<SubsystemDto>() {
new SubsystemDto()
{
Id = 1,
Name = "test1",
Description = "test desription1"
},
new SubsystemDto()
{
Id = 2,
Name = "test2",
Description = "test desription2"
},
new SubsystemDto()
{
Id = 3,
Name = "test3",
Description = "test desription3"
}
};
return result;
}
public async Task<int> DeleteAsync(SubsystemOperationTimeRequest request, CancellationToken token)
{
throw new NotImplementedException();
}
public Task<IEnumerable<SubsystemOperationTimeDto>> GetOperationTimeAsync(SubsystemOperationTimeRequest request, CancellationToken token)
{
throw new NotImplementedException();
}
Task<IEnumerable<SubsystemStatisticsDto>> ISubsystemOperationTimeService.GetStatisticAsync(SubsystemOperationTimeRequest request, CancellationToken token)
{
throw new NotImplementedException();
}
}
}

View File

@ -1,30 +0,0 @@
using AsbCloudApp.Data.Subsystems;
using AsbCloudApp.Services.Subsystems;
using AsbCloudDb.Model;
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
namespace AsbCloudInfrastructure.Services.Subsystems
{
internal class SubsystemStatisticService : ISubsystemStatisticsService
{
private readonly IAsbCloudDbContext db;
public SubsystemStatisticService(IAsbCloudDbContext db)
{
this.db = db;
}
public Task<IEnumerable<SubsystemStatisticsDto>> GetPeriodStatisticsAsync(DateTime periodBegin, DateTime periodEnd, CancellationToken token = default)
{
throw new NotImplementedException();
}
public Task<IEnumerable<SubsystemStatisticsDto>> GetStatisticsAsync(CancellationToken token)
{
throw new NotImplementedException();
}
}
}

View File

@ -1,5 +1,7 @@
using AsbCloudApp.Data.Subsystems;
using AsbCloudApp.Requests;
using AsbCloudApp.Services;
using AsbCloudApp.Services.Subsystems;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
@ -9,14 +11,101 @@ using System.Threading.Tasks;
namespace AsbCloudWebApi.Controllers.Subsystems
{
/// <summary>
/// Наработка подсистем
/// </summary>
[Route("api/[OperatingTimeSubsystem]")]
[Route("api/[controller]")]
[ApiController]
[Authorize]
public class OperatingTimeSubsystemController : ControllerBase
{
private readonly ISubsystemOperationTimeService subsystemOperationTimeService;
private readonly IWellService wellService;
public OperatingTimeSubsystemController(ISubsystemOperationTimeService subsystemOperationTimeService, IWellService wellService)
{
this.subsystemOperationTimeService = subsystemOperationTimeService;
this.wellService = wellService;
}
/// <summary>
/// получить статистику
/// </summary>
[HttpGet("statistic")]
[ProducesResponseType(typeof(IEnumerable<SubsystemStatisticsDto>), (int)System.Net.HttpStatusCode.OK)]
public async Task<IActionResult> GetStatisticsAsync(CancellationToken token = default)
{
var subsystemResult = new List<SubsystemStatisticsDto>()
{
new SubsystemStatisticsDto(){
IdSubsystem = 1,
Subsystem = "test1",
UsedTime = System.DateTime.Now,
K2 = System.TimeSpan.MinValue,
KUsage = System.TimeSpan.MinValue
},
new SubsystemStatisticsDto(){
IdSubsystem = 2,
Subsystem = "test2",
UsedTime = System.DateTime.Now,
K2 = System.TimeSpan.Zero,
KUsage = System.TimeSpan.Zero
},
new SubsystemStatisticsDto(){
IdSubsystem = 3,
Subsystem = "test3",
UsedTime = System.DateTime.Now,
K2 = System.TimeSpan.MaxValue,
KUsage = System.TimeSpan.MaxValue
}
};
return Ok(subsystemResult);
}
/// <summary>
/// получить список подсистем общий.
/// </summary>
[HttpGet("subsystem")]
[ProducesResponseType(typeof(IEnumerable<SubsystemDto>), (int)System.Net.HttpStatusCode.OK)]
public async Task<IActionResult> GetSubsystemAsync([FromQuery] int? idWell, CancellationToken token = default)
{
var result = await subsystemOperationTimeService.GetSubsystemAsync(idWell, token);
return Ok(result);
}
/// <summary>
/// получить список наработок подсистем
/// </summary>
[HttpGet("operationTime")]
[ProducesResponseType(typeof(IEnumerable<SubsystemOperationTimeDto>), (int)System.Net.HttpStatusCode.OK)]
public async Task<IActionResult> GetOperationTimeAsync(
[FromQuery] SubsystemOperationTimeRequest request,
CancellationToken token = default)
{
var result = await subsystemOperationTimeService.GetOperationTimeAsync(request, token);
return Ok(result);
}
/// <summary>
/// Удалить наработки.
/// </summary>
/// <param name="request"></param>
/// <param name="token"></param>
/// <returns></returns>
[HttpDelete]
[Permission]
[ProducesResponseType(typeof(int), (int)System.Net.HttpStatusCode.OK)]
public async Task<IActionResult> DeleteAsync(
[FromQuery] SubsystemOperationTimeRequest request,
CancellationToken token)
{
var result = await subsystemOperationTimeService.DeleteAsync(request, token);
return Ok(result);
}
}
}
}

View File

@ -1,94 +0,0 @@
using AsbCloudApp.Data.Subsystems;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
namespace AsbCloudWebApi.Controllers.Subsystems
{
/// <summary>
/// Статистика наработки подсистем
/// </summary>
[Route("api/statisticsSubsystem")]
[ApiController]
[Authorize]
public class StatisticSubsystemsController : ControllerBase
{
/// <summary>
/// получить без временного периода в запросе.
/// </summary>
[HttpGet]
[ProducesResponseType(typeof(IEnumerable<SubsystemStatisticsDto>), (int)System.Net.HttpStatusCode.OK)]
public async Task<IActionResult> GetStatisticsAsync(CancellationToken token = default)
{
var subsystemResult = new List<SubsystemStatisticsDto>()
{
new SubsystemStatisticsDto(){
IdSubsystem = 1,
Subsystem = "test1",
UsedTime = System.DateTime.Now,
K2 = System.TimeSpan.MinValue,
KUsage = System.TimeSpan.MinValue
},
new SubsystemStatisticsDto(){
IdSubsystem = 2,
Subsystem = "test2",
UsedTime = System.DateTime.Now,
K2 = System.TimeSpan.Zero,
KUsage = System.TimeSpan.Zero
},
new SubsystemStatisticsDto(){
IdSubsystem = 3,
Subsystem = "test3",
UsedTime = System.DateTime.Now,
K2 = System.TimeSpan.MaxValue,
KUsage = System.TimeSpan.MaxValue
}
};
return Ok(subsystemResult);
}
//[HttpGet]
//[ProducesResponseType(typeof(IEnumerable<SubsystemStatisticsDto>), (int)System.Net.HttpStatusCode.OK)]
//public async Task<IActionResult> GetStatisticsPeriodAsync(CancellationToken token = default, DateTime dateBegin , DateTime dateEnd)
//{
// var subsystemResult = new List<SubsystemStatisticsDto>()
// {
// new SubsystemStatisticsDto(){
// IdSubsystem = 1,
// Subsystem = "test1",
// UsedTime = System.DateTime.Now,
// K2 = System.TimeSpan.MinValue,
// KUsage = System.TimeSpan.MinValue
// },
// new SubsystemStatisticsDto(){
// IdSubsystem = 2,
// Subsystem = "test2",
// UsedTime = System.DateTime.Now,
// K2 = System.TimeSpan.Zero,
// KUsage = System.TimeSpan.Zero
// },
// new SubsystemStatisticsDto(){
// IdSubsystem = 3,
// Subsystem = "test3",
// UsedTime = System.DateTime.Now,
// K2 = System.TimeSpan.MaxValue,
// KUsage = System.TimeSpan.MaxValue
// }
// };
// return Ok(subsystemResult);
//}
}
}