diff --git a/AsbCloudApp/AsbCloudApp.csproj b/AsbCloudApp/AsbCloudApp.csproj
index e84cf12c..200ee51b 100644
--- a/AsbCloudApp/AsbCloudApp.csproj
+++ b/AsbCloudApp/AsbCloudApp.csproj
@@ -6,6 +6,10 @@
disable
+
+
+
+
diff --git a/AsbCloudApp/Requests/SubsystemOperationTimeRequest.cs b/AsbCloudApp/Requests/SubsystemOperationTimeRequest.cs
new file mode 100644
index 00000000..4276ba75
--- /dev/null
+++ b/AsbCloudApp/Requests/SubsystemOperationTimeRequest.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace AsbCloudApp.Requests
+{
+ ///
+ /// класс с фильтрами для запроса
+ ///
+ public class SubsystemOperationTimeRequest: RequestBase
+ {
+ }
+}
diff --git a/AsbCloudApp/Services/Subsystems/ISubsystemOperationTimeService.cs b/AsbCloudApp/Services/Subsystems/ISubsystemOperationTimeService.cs
index 44e0b2d4..d55a9167 100644
--- a/AsbCloudApp/Services/Subsystems/ISubsystemOperationTimeService.cs
+++ b/AsbCloudApp/Services/Subsystems/ISubsystemOperationTimeService.cs
@@ -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> GetSubsystemAsync(int? idWell, CancellationToken token);
+ Task> GetStatisticAsync(SubsystemOperationTimeRequest request, CancellationToken token);
+ Task DeleteAsync(SubsystemOperationTimeRequest request, CancellationToken token);
+ Task> GetOperationTimeAsync(SubsystemOperationTimeRequest request, CancellationToken token);
+
}
}
diff --git a/AsbCloudApp/Services/Subsystems/ISubsystemStatisticsService.cs b/AsbCloudApp/Services/Subsystems/ISubsystemStatisticsService.cs
deleted file mode 100644
index 411baa9e..00000000
--- a/AsbCloudApp/Services/Subsystems/ISubsystemStatisticsService.cs
+++ /dev/null
@@ -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> GetStatisticsAsync(CancellationToken token);
- Task> GetPeriodStatisticsAsync(DateTime periodBegin,
- DateTime periodEnd,
- CancellationToken token = default);
- }
-}
diff --git a/AsbCloudDb/Model/AsbCloudDbContext.cs b/AsbCloudDb/Model/AsbCloudDbContext.cs
index 3fc9fa73..f061d084 100644
--- a/AsbCloudDb/Model/AsbCloudDbContext.cs
+++ b/AsbCloudDb/Model/AsbCloudDbContext.cs
@@ -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="Разрешение просматривать Кусты"},
diff --git a/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeBackgroundService.cs b/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeBackgroundService.cs
index e4538522..6c6fe8d8 100644
--- a/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeBackgroundService.cs
+++ b/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeBackgroundService.cs
@@ -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()
+ .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);
+ }
}
}
}
diff --git a/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs b/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs
index d756aec6..eb8d9e6c 100644
--- a/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs
+++ b/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs
@@ -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> GetSubsystemAsync(int? idWell, CancellationToken token)
+ {
+ var result = new List() {
+ 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 DeleteAsync(SubsystemOperationTimeRequest request, CancellationToken token)
+ {
+ throw new NotImplementedException();
+ }
+
+ public Task> GetOperationTimeAsync(SubsystemOperationTimeRequest request, CancellationToken token)
+ {
+ throw new NotImplementedException();
+ }
+
+
+
+ Task> ISubsystemOperationTimeService.GetStatisticAsync(SubsystemOperationTimeRequest request, CancellationToken token)
+ {
+ throw new NotImplementedException();
+ }
+
+
+
+
}
}
diff --git a/AsbCloudInfrastructure/Services/Subsystems/SubsystemStatisticService.cs b/AsbCloudInfrastructure/Services/Subsystems/SubsystemStatisticService.cs
deleted file mode 100644
index d083bf8b..00000000
--- a/AsbCloudInfrastructure/Services/Subsystems/SubsystemStatisticService.cs
+++ /dev/null
@@ -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> GetPeriodStatisticsAsync(DateTime periodBegin, DateTime periodEnd, CancellationToken token = default)
- {
- throw new NotImplementedException();
- }
-
- public Task> GetStatisticsAsync(CancellationToken token)
- {
- throw new NotImplementedException();
- }
- }
-}
diff --git a/AsbCloudWebApi/Controllers/Subsystems/OperatingTimeSubsystemController.cs b/AsbCloudWebApi/Controllers/Subsystems/OperatingTimeSubsystemController.cs
index 1e6d9451..91697b30 100644
--- a/AsbCloudWebApi/Controllers/Subsystems/OperatingTimeSubsystemController.cs
+++ b/AsbCloudWebApi/Controllers/Subsystems/OperatingTimeSubsystemController.cs
@@ -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
{
+
+
///
/// Наработка подсистем
///
- [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;
+ }
+ ///
+ /// получить статистику
+ ///
+ [HttpGet("statistic")]
+ [ProducesResponseType(typeof(IEnumerable), (int)System.Net.HttpStatusCode.OK)]
+ public async Task GetStatisticsAsync(CancellationToken token = default)
+ {
+ var subsystemResult = new List()
+ {
+ 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("subsystem")]
+ [ProducesResponseType(typeof(IEnumerable), (int)System.Net.HttpStatusCode.OK)]
+ public async Task GetSubsystemAsync([FromQuery] int? idWell, CancellationToken token = default)
+ {
+ var result = await subsystemOperationTimeService.GetSubsystemAsync(idWell, token);
+ return Ok(result);
+ }
+
+ ///
+ /// получить список наработок подсистем
+ ///
+ [HttpGet("operationTime")]
+ [ProducesResponseType(typeof(IEnumerable), (int)System.Net.HttpStatusCode.OK)]
+ public async Task GetOperationTimeAsync(
+ [FromQuery] SubsystemOperationTimeRequest request,
+ CancellationToken token = default)
+ {
+
+ var result = await subsystemOperationTimeService.GetOperationTimeAsync(request, token);
+ return Ok(result);
+ }
+
+ ///
+ /// Удалить наработки.
+ ///
+ ///
+ ///
+ ///
+ [HttpDelete]
+ [Permission]
+ [ProducesResponseType(typeof(int), (int)System.Net.HttpStatusCode.OK)]
+ public async Task DeleteAsync(
+ [FromQuery] SubsystemOperationTimeRequest request,
+ CancellationToken token)
+ {
+ var result = await subsystemOperationTimeService.DeleteAsync(request, token);
+ return Ok(result);
+ }
}
- }
+}
diff --git a/AsbCloudWebApi/Controllers/Subsystems/StatisticSubsystemsController.cs b/AsbCloudWebApi/Controllers/Subsystems/StatisticSubsystemsController.cs
deleted file mode 100644
index 1fafe82b..00000000
--- a/AsbCloudWebApi/Controllers/Subsystems/StatisticSubsystemsController.cs
+++ /dev/null
@@ -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
-{
- ///
- /// Статистика наработки подсистем
- ///
- [Route("api/statisticsSubsystem")]
- [ApiController]
- [Authorize]
- public class StatisticSubsystemsController : ControllerBase
- {
-
- ///
- /// получить без временного периода в запросе.
- ///
- [HttpGet]
- [ProducesResponseType(typeof(IEnumerable), (int)System.Net.HttpStatusCode.OK)]
- public async Task GetStatisticsAsync(CancellationToken token = default)
- {
- var subsystemResult = new List()
- {
- 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), (int)System.Net.HttpStatusCode.OK)]
- //public async Task GetStatisticsPeriodAsync(CancellationToken token = default, DateTime dateBegin , DateTime dateEnd)
- //{
- // var subsystemResult = new List()
- // {
- // 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);
- //}
-
-
- }
-}