forked from ddrilling/AsbCloudServer
delete manual timescale script (error index)
edit generic repository
This commit is contained in:
parent
75738b7712
commit
e26c5d98a7
@ -4,7 +4,7 @@ using System.Collections.Generic;
|
|||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace AsbCloudApp.Services.WITS
|
namespace AsbCloudApp.Repositories
|
||||||
{
|
{
|
||||||
#nullable enable
|
#nullable enable
|
||||||
/// <summary>
|
/// <summary>
|
@ -74,10 +74,10 @@ namespace AsbCloudDb.Migrations
|
|||||||
onDelete: ReferentialAction.Cascade);
|
onDelete: ReferentialAction.Cascade);
|
||||||
},
|
},
|
||||||
comment: "таблица данных ГТИ с типом значения string");
|
comment: "таблица данных ГТИ с типом значения string");
|
||||||
migrationBuilder.Sql
|
//migrationBuilder.Sql
|
||||||
("SELECT create_hypertable('t_wits_string','time','id_telemetry',chunk_time_interval => INTERVAL '5 day'); " +
|
// ("SELECT create_hypertable('t_wits_string','date','id_telemetry', 2, chunk_time_interval => INTERVAL '5 day'); " +
|
||||||
"SELECT create_hypertable('t_wits_float','time','id_telemetry',chunk_time_interval => INTERVAL '5 day'); " +
|
// "SELECT create_hypertable('t_wits_float','date','id_telemetry', 2, chunk_time_interval => INTERVAL '5 day'); " +
|
||||||
"SELECT create_hypertable('t_wits_int','time','id_telemetry',chunk_time_interval => INTERVAL '5 day'); ");
|
// "SELECT create_hypertable('t_wits_int','date','id_telemetry', 2, chunk_time_interval => INTERVAL '5 day'); ");
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Down(MigrationBuilder migrationBuilder)
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
using AsbCloudApp.Data;
|
using AsbCloudApp.Data;
|
||||||
|
using AsbCloudApp.Data.GTR;
|
||||||
using AsbCloudApp.Data.SAUB;
|
using AsbCloudApp.Data.SAUB;
|
||||||
using AsbCloudApp.Data.Subsystems;
|
using AsbCloudApp.Data.Subsystems;
|
||||||
using AsbCloudApp.Repositories;
|
using AsbCloudApp.Repositories;
|
||||||
using AsbCloudApp.Services;
|
using AsbCloudApp.Services;
|
||||||
using AsbCloudApp.Services.Subsystems;
|
using AsbCloudApp.Services.Subsystems;
|
||||||
using AsbCloudDb.Model;
|
using AsbCloudDb.Model;
|
||||||
|
using AsbCloudDb.Model.GTR;
|
||||||
using AsbCloudDb.Model.Subsystems;
|
using AsbCloudDb.Model.Subsystems;
|
||||||
using AsbCloudInfrastructure.Background;
|
using AsbCloudInfrastructure.Background;
|
||||||
using AsbCloudInfrastructure.Repository;
|
using AsbCloudInfrastructure.Repository;
|
||||||
@ -136,6 +138,9 @@ namespace AsbCloudInfrastructure
|
|||||||
services.AddTransient<IProcessMapReportService, ProcessMapReportService>();
|
services.AddTransient<IProcessMapReportService, ProcessMapReportService>();
|
||||||
services.AddTransient<IProcessMapService, ProcessMapService>();
|
services.AddTransient<IProcessMapService, ProcessMapService>();
|
||||||
services.AddTransient<ITrajectoryVisualizationService, TrajectoryVisualizationService>();
|
services.AddTransient<ITrajectoryVisualizationService, TrajectoryVisualizationService>();
|
||||||
|
services.AddTransient<IGtrRepository, GtrWitsRepository<WitsItemBase<int>,int>>();
|
||||||
|
services.AddTransient<IGtrRepository, GtrWitsRepository<WitsItemBase<float>, float>>();
|
||||||
|
services.AddTransient<IGtrRepository, GtrWitsRepository<WitsItemBase<string>, string>>();
|
||||||
|
|
||||||
// admin crud services:
|
// admin crud services:
|
||||||
services.AddTransient<ICrudRepository<TelemetryDto>, CrudCacheRepositoryBase<TelemetryDto, Telemetry>>(s =>
|
services.AddTransient<ICrudRepository<TelemetryDto>, CrudCacheRepositoryBase<TelemetryDto, Telemetry>>(s =>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
using AsbCloudApp.Data.GTR;
|
using AsbCloudApp.Data.GTR;
|
||||||
|
using AsbCloudApp.Repositories;
|
||||||
using AsbCloudApp.Services;
|
using AsbCloudApp.Services;
|
||||||
using AsbCloudApp.Services.WITS;
|
|
||||||
using AsbCloudDb.Model;
|
using AsbCloudDb.Model;
|
||||||
using AsbCloudDb.Model.GTR;
|
using AsbCloudDb.Model.GTR;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
@ -13,19 +13,19 @@ using System.Threading.Tasks;
|
|||||||
namespace AsbCloudInfrastructure.Repository
|
namespace AsbCloudInfrastructure.Repository
|
||||||
{
|
{
|
||||||
#nullable enable
|
#nullable enable
|
||||||
public class GtrWitsRepository<T> : IGtrRepository
|
public class GtrWitsRepository<TEntity, T> : IGtrRepository
|
||||||
where T : WitsItemBase<T>
|
where TEntity : WitsItemBase<T>
|
||||||
{
|
{
|
||||||
private readonly IAsbCloudDbContext db;
|
private readonly IAsbCloudDbContext db;
|
||||||
private readonly ITelemetryService telemetryService;
|
private readonly ITelemetryService telemetryService;
|
||||||
private readonly DbSet<T> dbset;
|
private readonly DbSet<TEntity> dbset;
|
||||||
private static Random random = new Random((int)(DateTime.Now.Ticks % 0xFFFFFFFF));
|
private static Random random = new Random((int)(DateTime.Now.Ticks % 0xFFFFFFFF));
|
||||||
|
|
||||||
public GtrWitsRepository(
|
public GtrWitsRepository(
|
||||||
IAsbCloudDbContext db,
|
IAsbCloudDbContext db,
|
||||||
ITelemetryService telemetryService)
|
ITelemetryService telemetryService)
|
||||||
{
|
{
|
||||||
dbset = db.Set<T>();
|
dbset = db.Set<TEntity>();
|
||||||
this.db = db;
|
this.db = db;
|
||||||
this.telemetryService = telemetryService;
|
this.telemetryService = telemetryService;
|
||||||
}
|
}
|
||||||
@ -60,7 +60,7 @@ namespace AsbCloudInfrastructure.Repository
|
|||||||
// return cacheData;
|
// return cacheData;
|
||||||
|
|
||||||
var dateEnd = dateBeginUtc.AddSeconds(intervalSec);
|
var dateEnd = dateBeginUtc.AddSeconds(intervalSec);
|
||||||
var dbSet = db.Set<T>();
|
var dbSet = db.Set<TEntity>();
|
||||||
|
|
||||||
var query = dbSet
|
var query = dbSet
|
||||||
.Where(d => d.IdTelemetry == telemetry.Id
|
.Where(d => d.IdTelemetry == telemetry.Id
|
||||||
@ -120,7 +120,7 @@ namespace AsbCloudInfrastructure.Repository
|
|||||||
{
|
{
|
||||||
if (!existingEntities.Any(e => e == entity.DateTime))
|
if (!existingEntities.Any(e => e == entity.DateTime))
|
||||||
{
|
{
|
||||||
dbset.Add((T)entity);
|
dbset.Add((TEntity)entity);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -134,7 +134,7 @@ namespace AsbCloudInfrastructure.Repository
|
|||||||
dt.Second,
|
dt.Second,
|
||||||
(dt.Millisecond + random.Next(1, 283)) % 1000,
|
(dt.Millisecond + random.Next(1, 283)) % 1000,
|
||||||
dt.Offset);
|
dt.Offset);
|
||||||
dbset.Add((T)entity);
|
dbset.Add((TEntity)entity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
await db.SaveChangesAsync(token);
|
await db.SaveChangesAsync(token);
|
||||||
|
@ -1,5 +1,15 @@
|
|||||||
using Microsoft.AspNetCore.Http;
|
using AsbCloudApp.Data.GTR;
|
||||||
|
using AsbCloudApp.Repositories;
|
||||||
|
using AsbCloudApp.Services;
|
||||||
|
using AsbCloudDb.Model;
|
||||||
|
using AsbCloudWebApi.SignalR;
|
||||||
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using Microsoft.AspNetCore.SignalR;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace AsbCloudWebApi.Controllers.GTR
|
namespace AsbCloudWebApi.Controllers.GTR
|
||||||
{
|
{
|
||||||
@ -7,5 +17,55 @@ namespace AsbCloudWebApi.Controllers.GTR
|
|||||||
[ApiController]
|
[ApiController]
|
||||||
public class GtrWitsController : ControllerBase
|
public class GtrWitsController : ControllerBase
|
||||||
{
|
{
|
||||||
|
protected readonly IWellService wellService;
|
||||||
|
private readonly ITelemetryService telemetryService;
|
||||||
|
private readonly IGtrRepository gtrRepository;
|
||||||
|
private readonly IHubContext<TelemetryHub> telemetryHubContext;
|
||||||
|
|
||||||
|
//public string SirnalRMethodGetDataName { get; protected set; } = "ReceiveData";
|
||||||
|
|
||||||
|
public GtrWitsController(
|
||||||
|
ITelemetryService telemetryService,
|
||||||
|
IGtrRepository gtrRepository,
|
||||||
|
IWellService wellService,
|
||||||
|
IHubContext<TelemetryHub> telemetryHubContext)
|
||||||
|
{
|
||||||
|
this.telemetryService = telemetryService;
|
||||||
|
this.gtrRepository = gtrRepository;
|
||||||
|
this.wellService = wellService;
|
||||||
|
this.telemetryHubContext = telemetryHubContext;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Возвращает данные САУБ по скважине.
|
||||||
|
/// По умолчанию за последние 10 минут.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="idWell">id скважины</param>
|
||||||
|
/// <param name="begin">дата начала выборки. По умолчанию: текущее время - intervalSec</param>
|
||||||
|
/// <param name="intervalSec">интервал времени даты начала выборки, секунды</param>
|
||||||
|
/// <param name="approxPointsCount">желаемое количество точек. Если в выборке точек будет больше, то выборка будет прорежена.</param>
|
||||||
|
/// <param name="token">Токен завершения задачи</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet("{idWell}")]
|
||||||
|
//[Permission]
|
||||||
|
public virtual async Task<ActionResult<IEnumerable<WitsRecordDto>>> GetDataAsync(int idWell, DateTime begin = default,
|
||||||
|
int intervalSec = 600, int approxPointsCount = 1024, CancellationToken token = default)
|
||||||
|
{
|
||||||
|
//int? idCompany = User.GetCompanyId();
|
||||||
|
|
||||||
|
//if (idCompany is null)
|
||||||
|
// return Forbid();
|
||||||
|
|
||||||
|
//bool isCompanyOwnsWell = await wellService.IsCompanyInvolvedInWellAsync((int)idCompany,
|
||||||
|
// idWell, token).ConfigureAwait(false);
|
||||||
|
|
||||||
|
//if (!isCompanyOwnsWell)
|
||||||
|
// return Forbid();
|
||||||
|
|
||||||
|
var content = await gtrRepository.GetAsync(idWell, begin,
|
||||||
|
intervalSec, approxPointsCount, token).ConfigureAwait(false);
|
||||||
|
|
||||||
|
return Ok(content);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user