forked from ddrilling/AsbCloudServer
Форматирование TelemetryDataSaubService
This commit is contained in:
parent
7dd92be567
commit
bb107c8f5b
@ -1,27 +1,23 @@
|
|||||||
using AsbCloudApp.Data;
|
using AsbCloudApp.Data.SAUB;
|
||||||
using AsbCloudApp.Data.SAUB;
|
|
||||||
using AsbCloudApp.Exceptions;
|
using AsbCloudApp.Exceptions;
|
||||||
using AsbCloudApp.Repositories;
|
using AsbCloudApp.Repositories;
|
||||||
using AsbCloudApp.Services;
|
using AsbCloudApp.Services;
|
||||||
using AsbCloudDb.Model;
|
using AsbCloudDb.Model;
|
||||||
using Mapster;
|
using Mapster;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Org.BouncyCastle.Asn1.Pkcs;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.IO.Compression;
|
using System.IO.Compression;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
|
||||||
using System.Text.Csv;
|
using System.Text.Csv;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace AsbCloudInfrastructure.Services.SAUB
|
namespace AsbCloudInfrastructure.Services.SAUB;
|
||||||
{
|
|
||||||
|
|
||||||
public class TelemetryDataSaubService : TelemetryDataBaseService<TelemetryDataSaubDto, TelemetryDataSaub>, ITelemetryDataSaubService
|
public class TelemetryDataSaubService : TelemetryDataBaseService<TelemetryDataSaubDto, TelemetryDataSaub>, ITelemetryDataSaubService
|
||||||
{
|
{
|
||||||
private readonly ITelemetryUserService telemetryUserService;
|
private readonly ITelemetryUserService telemetryUserService;
|
||||||
|
|
||||||
public TelemetryDataSaubService(
|
public TelemetryDataSaubService(
|
||||||
@ -71,11 +67,13 @@ namespace AsbCloudInfrastructure.Services.SAUB
|
|||||||
.Where(t => t.WellDepth > 0.0001)
|
.Where(t => t.WellDepth > 0.0001)
|
||||||
.Where(t => modes.Contains(t.Mode))
|
.Where(t => modes.Contains(t.Mode))
|
||||||
.Where(t => t.WellDepth - t.BitDepth < 0.01)
|
.Where(t => t.WellDepth - t.BitDepth < 0.01)
|
||||||
.GroupBy(t => new {
|
.GroupBy(t => new
|
||||||
|
{
|
||||||
t.DateTime.Hour,
|
t.DateTime.Hour,
|
||||||
WellDepthX10 = Math.Truncate(t.WellDepth * 10),
|
WellDepthX10 = Math.Truncate(t.WellDepth * 10),
|
||||||
t.Mode,
|
t.Mode,
|
||||||
t.IdFeedRegulator})
|
t.IdFeedRegulator
|
||||||
|
})
|
||||||
.Select(g => new TelemetryDataSaubStatDto
|
.Select(g => new TelemetryDataSaubStatDto
|
||||||
{
|
{
|
||||||
Count = g.Count(),
|
Count = g.Count(),
|
||||||
@ -127,7 +125,7 @@ namespace AsbCloudInfrastructure.Services.SAUB
|
|||||||
public override TelemetryDataSaubDto Convert(TelemetryDataSaub src, double timezoneOffset)
|
public override TelemetryDataSaubDto Convert(TelemetryDataSaub src, double timezoneOffset)
|
||||||
{
|
{
|
||||||
var dto = src.Adapt<TelemetryDataSaubDto>();
|
var dto = src.Adapt<TelemetryDataSaubDto>();
|
||||||
var telemetryUser = telemetryUserService.GetOrDefault(src.IdTelemetry, src.IdUser??int.MinValue);
|
var telemetryUser = telemetryUserService.GetOrDefault(src.IdTelemetry, src.IdUser ?? int.MinValue);
|
||||||
dto.User = telemetryUser?.MakeDisplayName();
|
dto.User = telemetryUser?.MakeDisplayName();
|
||||||
dto.DateTime = src.DateTime.ToRemoteDateTime(timezoneOffset);
|
dto.DateTime = src.DateTime.ToRemoteDateTime(timezoneOffset);
|
||||||
dto.BitDepth = src.BitDepth <= src.WellDepth
|
dto.BitDepth = src.BitDepth <= src.WellDepth
|
||||||
@ -139,7 +137,7 @@ namespace AsbCloudInfrastructure.Services.SAUB
|
|||||||
public async Task<Stream> GetZippedCsv(int idWell, DateTime beginDate, DateTime endDate, CancellationToken token)
|
public async Task<Stream> GetZippedCsv(int idWell, DateTime beginDate, DateTime endDate, CancellationToken token)
|
||||||
{
|
{
|
||||||
double intervalSec = (endDate - beginDate).TotalSeconds;
|
double intervalSec = (endDate - beginDate).TotalSeconds;
|
||||||
if (intervalSec > 60*60*24*3)
|
if (intervalSec > 60 * 60 * 24 * 3)
|
||||||
throw new ArgumentInvalidException(nameof(endDate), "Слишком большой диапазон");
|
throw new ArgumentInvalidException(nameof(endDate), "Слишком большой диапазон");
|
||||||
|
|
||||||
var telemetry = telemetryService.GetOrDefaultTelemetryByIdWell(idWell)
|
var telemetry = telemetryService.GetOrDefaultTelemetryByIdWell(idWell)
|
||||||
@ -153,7 +151,7 @@ namespace AsbCloudInfrastructure.Services.SAUB
|
|||||||
_ => 32_768
|
_ => 32_768
|
||||||
};
|
};
|
||||||
|
|
||||||
var data = await GetAsync(idWell, beginDate, intervalSec, approxPointsCount, token );
|
var data = await GetAsync(idWell, beginDate, intervalSec, approxPointsCount, token);
|
||||||
|
|
||||||
var fileName = $"DataSaub idWell{idWell}";
|
var fileName = $"DataSaub idWell{idWell}";
|
||||||
if (telemetry.Info is not null)
|
if (telemetry.Info is not null)
|
||||||
@ -171,6 +169,4 @@ namespace AsbCloudInfrastructure.Services.SAUB
|
|||||||
outStream.Seek(0, SeekOrigin.Begin);
|
outStream.Seek(0, SeekOrigin.Begin);
|
||||||
return outStream;
|
return outStream;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user