Форматирование TelemetryDataSaubService

This commit is contained in:
ngfrolov 2024-02-12 08:51:31 +05:00
parent 7dd92be567
commit bb107c8f5b
Signed by: ng.frolov
GPG Key ID: E99907A0357B29A7

View File

@ -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;
} }
}
} }