diff --git a/AsbCloudApp/AsbCloudApp.csproj b/AsbCloudApp/AsbCloudApp.csproj
index 60d2ae14..f208d303 100644
--- a/AsbCloudApp/AsbCloudApp.csproj
+++ b/AsbCloudApp/AsbCloudApp.csproj
@@ -4,12 +4,4 @@
net5.0
-
-
-
-
-
-
-
-
diff --git a/AsbCloudApp/Data/DataSaubBaseDto.cs b/AsbCloudApp/Data/DataSaubBaseDto.cs
index 36f61f39..20cedf1f 100644
--- a/AsbCloudApp/Data/DataSaubBaseDto.cs
+++ b/AsbCloudApp/Data/DataSaubBaseDto.cs
@@ -23,6 +23,11 @@ namespace AsbCloudApp.Data
///
public int? Mode { get; set; }
+ ///
+ /// telemetry id
+ ///
+ public int IdTelemetry { get; set; }
+
///
/// telemetry user
///
diff --git a/AsbCloudApp/Data/TelemetryAnalysisDto.cs b/AsbCloudApp/Data/TelemetryAnalysisDto.cs
new file mode 100644
index 00000000..ed48f2bc
--- /dev/null
+++ b/AsbCloudApp/Data/TelemetryAnalysisDto.cs
@@ -0,0 +1,26 @@
+namespace AsbCloudApp.Data
+{
+ public class TelemetryAnalysisDto
+ {
+ public int Id { get; set; }
+ public int IdTelemetry { get; set; }
+ public int IdOperation { get; set; }
+ public long UnixDate { get; set; }
+ public int DurationSec { get; set; }
+ public double? OperationStartDepth { get; set; }
+ public double? OperationEndDepth { get; set; }
+ public bool IsWellDepthIncreasing { get; set; }
+ public bool IsWellDepthDecreasing { get; set; }
+ public bool IsBitPositionIncreasing { get; set; }
+ public bool IsBitPositionDecreasing { get; set; }
+ public bool IsBitPositionLt20 { get; set; }
+ public bool IsBlockPositionIncreasing { get; set; }
+ public bool IsBlockPositionDecreasing { get; set; }
+ public bool IsRotorSpeedLt3 { get; set; }
+ public bool IsRotorSpeedGt3 { get; set; }
+ public bool IsPressureLt20 { get; set; }
+ public bool IsPressureGt20 { get; set; }
+ public bool IsHookWeightNotChanges { get; set; }
+ public bool IsHookWeightLt3 { get; set; }
+ }
+}
diff --git a/AsbCloudApp/Services/IAnalyticsService.cs b/AsbCloudApp/Services/IAnalyticsService.cs
index 28b83d96..88b3c753 100644
--- a/AsbCloudApp/Services/IAnalyticsService.cs
+++ b/AsbCloudApp/Services/IAnalyticsService.cs
@@ -1,5 +1,4 @@
using AsbCloudApp.Data;
-using AsbCloudDb.Model;
using System;
using System.Collections.Generic;
@@ -17,6 +16,6 @@ namespace AsbCloudApp.Services
DateTime begin = default, DateTime end = default);
IEnumerable GetOperationsToInterval(int idWell,
int intervalHoursTimestamp, int workBeginTimestamp);
- void SaveAnalytics(DataSaubBase dataSaub);
+ void SaveAnalytics(DataSaubBaseDto dataSaub);
}
}
diff --git a/AsbCloudApp/Services/ISaubDataCache.cs b/AsbCloudApp/Services/ISaubDataCache.cs
index 95745e34..a1474615 100644
--- a/AsbCloudApp/Services/ISaubDataCache.cs
+++ b/AsbCloudApp/Services/ISaubDataCache.cs
@@ -1,12 +1,12 @@
-using AsbCloudDb.Model;
-using System.Collections.Generic;
+using System.Collections.Generic;
+using AsbCloudApp.Data;
namespace AsbCloudApp.Services
{
public interface ISaubDataCache
{
- TelemetryAnalysis CurrentAnalysis { get; set; }
- IEnumerable GetOrCreateCache(int telemetryId);
- void AddData(DataSaubBase data);
+ TelemetryAnalysisDto CurrentAnalysis { get; set; }
+ IEnumerable GetOrCreateCache(int telemetryId);
+ void AddData(DataSaubBaseDto data);
}
}
diff --git a/AsbCloudApp/Services/ITelemetryService.cs b/AsbCloudApp/Services/ITelemetryService.cs
index 4c876077..30a26cee 100644
--- a/AsbCloudApp/Services/ITelemetryService.cs
+++ b/AsbCloudApp/Services/ITelemetryService.cs
@@ -1,5 +1,4 @@
using AsbCloudApp.Data;
-using AsbCloudDb.Model;
namespace AsbCloudApp.Services
{
@@ -9,6 +8,6 @@ namespace AsbCloudApp.Services
int GetOrCreateTemetryIdByUid(string uid);
double GetTimezoneOffsetByTelemetryId(int idTelemetry);
void UpdateInfo(string uid, TelemetryInfoDto info);
- Telemetry GetTelemetryByidWell(int idWell);
+ int? GetIdTelemetryByIdWell(int idWell);
}
}
diff --git a/AsbCloudDb/Model/LastData.cs b/AsbCloudDb/Model/LastData.cs
index 7cdfa796..c9679c78 100644
--- a/AsbCloudDb/Model/LastData.cs
+++ b/AsbCloudDb/Model/LastData.cs
@@ -1,5 +1,4 @@
-using System;
-using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Text.Json.Serialization;
diff --git a/AsbCloudInfrastructure/Services/AnalyticsService.cs b/AsbCloudInfrastructure/Services/AnalyticsService.cs
index a18657e5..6d279833 100644
--- a/AsbCloudInfrastructure/Services/AnalyticsService.cs
+++ b/AsbCloudInfrastructure/Services/AnalyticsService.cs
@@ -6,6 +6,7 @@ using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.EntityFrameworkCore;
+using Mapster;
namespace AsbCloudInfrastructure.Services
{
@@ -31,13 +32,13 @@ namespace AsbCloudInfrastructure.Services
public IEnumerable GetWellDepthToDay(int idWell)
{
- var telemetry = telemetryService.GetTelemetryByidWell(idWell);
+ var telemetryId = telemetryService.GetIdTelemetryByIdWell(idWell);
- if (telemetry is null)
+ if (telemetryId is null)
return null;
var depthToTimeData = (from d in db.DataSaubBases
- where d.IdTelemetry == telemetry.Id
+ where d.IdTelemetry == telemetryId
select new
{
d.Id,
@@ -64,14 +65,14 @@ namespace AsbCloudInfrastructure.Services
{
intervalSeconds = intervalSeconds == 0 ? 86400 : intervalSeconds;
- var telemetry = telemetryService.GetTelemetryByidWell(idWell);
+ var telemetryId = telemetryService.GetIdTelemetryByIdWell(idWell);
- if (telemetry is null)
+ if (telemetryId is null)
return null;
- var timezoneOffset = telemetryService.GetTimezoneOffsetByTelemetryId(telemetry.Id);
+ var timezoneOffset = telemetryService.GetTimezoneOffsetByTelemetryId((int)telemetryId);
- var drillingPeriodsInfo = db.GetDepthToInterval(telemetry.Id, intervalSeconds,
+ var drillingPeriodsInfo = db.GetDepthToInterval((int)telemetryId, intervalSeconds,
workBeginSeconds, timezoneOffset);
var wellDepthToIntervalData = drillingPeriodsInfo.Select(d => new WellDepthToIntervalDto
@@ -87,14 +88,14 @@ namespace AsbCloudInfrastructure.Services
IEnumerable categoryIds = default, DateTime begin = default,
DateTime end = default, int skip = 0, int take = 32)
{
- var telemetry = telemetryService.GetTelemetryByidWell(idWell);
+ var telemetryId = telemetryService.GetIdTelemetryByIdWell(idWell);
- if (telemetry is null)
+ if (telemetryId is null)
return null;
var operations = from a in db.TelemetryAnalysis.Include(t => t.Operation)
- where a.IdTelemetry == telemetry.Id
- select a;
+ where a.IdTelemetry == telemetryId
+ select a;
if ((categoryIds != default) && (categoryIds.Any()))
operations = operations.Where(o => categoryIds.Contains(o.IdOperation));
@@ -150,16 +151,16 @@ namespace AsbCloudInfrastructure.Services
public IEnumerable GetOperationsSummary(int idWell,
DateTime begin = default, DateTime end = default)
{
- var telemetry = telemetryService.GetTelemetryByidWell(idWell);
+ var telemetryId = telemetryService.GetIdTelemetryByIdWell(idWell);
- if (telemetry is null)
+ if (telemetryId is null)
return null;
var unixBegin = (begin - new DateTime(1970, 1, 1)).TotalSeconds;
var unixEnd = (end - new DateTime(1970, 1, 1)).TotalSeconds;
var operations = (from a in db.TelemetryAnalysis
- where a.IdTelemetry == telemetry.Id &&
+ where a.IdTelemetry == telemetryId &&
a.UnixDate > unixBegin && a.UnixDate < unixEnd
join o in db.Operations on a.IdOperation equals o.Id
group a by new { a.IdOperation, o.Name } into g
@@ -178,15 +179,15 @@ namespace AsbCloudInfrastructure.Services
{
intervalSeconds = intervalSeconds == 0 ? 86400 : intervalSeconds;
- var telemetry = telemetryService.GetTelemetryByidWell(idWell);
+ var telemetryId = telemetryService.GetIdTelemetryByIdWell(idWell);
- if (telemetry is null)
+ if (telemetryId is null)
return null;
- var timezoneOffset = telemetryService.GetTimezoneOffsetByTelemetryId(telemetry.Id);
+ var timezoneOffset = telemetryService.GetTimezoneOffsetByTelemetryId((int)telemetryId);
var operations = (from a in db.TelemetryAnalysis
- where a.IdTelemetry == telemetry.Id
+ where a.IdTelemetry == telemetryId
join o in db.Operations on a.IdOperation equals o.Id
group a by new
{
@@ -216,36 +217,36 @@ namespace AsbCloudInfrastructure.Services
return operationsGroupedByInterval;
}
- public void SaveAnalytics(DataSaubBase dataSaub)
+ public void SaveAnalytics(DataSaubBaseDto dataSaubDto)
{
- saubDataCache.AddData(dataSaub);
+ saubDataCache.AddData(dataSaubDto);
- if (saubDataCache.GetOrCreateCache(dataSaub.IdTelemetry).Count() > 1)
+ if (saubDataCache.GetOrCreateCache(dataSaubDto.IdTelemetry).Count() > 1)
{
- var dataSaubs = saubDataCache.GetOrCreateCache(dataSaub.IdTelemetry)
+ var dataSaubs = saubDataCache.GetOrCreateCache(dataSaubDto.IdTelemetry)
.OrderBy(d => d.Date);
- var telemetryAnalysis = GetDrillingAnalysis(dataSaubs);
+ var telemetryAnalysisDto = GetDrillingAnalysis(dataSaubs);
if (saubDataCache.CurrentAnalysis is null)
- saubDataCache.CurrentAnalysis = telemetryAnalysis;
+ saubDataCache.CurrentAnalysis = telemetryAnalysisDto;
- if (saubDataCache.CurrentAnalysis.IdOperation == telemetryAnalysis.IdOperation)
+ if (saubDataCache.CurrentAnalysis.IdOperation == telemetryAnalysisDto.IdOperation)
{
saubDataCache.CurrentAnalysis.DurationSec +=
- telemetryAnalysis.DurationSec;
- saubDataCache.CurrentAnalysis.OperationEndDepth = dataSaub.WellDepth;
+ telemetryAnalysisDto.DurationSec;
+ saubDataCache.CurrentAnalysis.OperationEndDepth = dataSaubDto.WellDepth;
}
else
{
- db.TelemetryAnalysis.Add(saubDataCache.CurrentAnalysis);
- saubDataCache.CurrentAnalysis = telemetryAnalysis;
- saubDataCache.CurrentAnalysis.OperationStartDepth = dataSaub.WellDepth;
+ db.TelemetryAnalysis.Add(saubDataCache.CurrentAnalysis.Adapt());
+ saubDataCache.CurrentAnalysis = telemetryAnalysisDto;
+ saubDataCache.CurrentAnalysis.OperationStartDepth = dataSaubDto.WellDepth;
}
}
}
- private TelemetryAnalysis GetDrillingAnalysis(IEnumerable dataSaubBases)
+ private TelemetryAnalysisDto GetDrillingAnalysis(IEnumerable dataSaubBases)
{
var lastSaubDate = dataSaubBases.Last().Date;
@@ -279,7 +280,7 @@ namespace AsbCloudInfrastructure.Services
var IsBlockGoesDown = InterpolationLine.IsValueIncreases(blockPositionChangingIndex, 0.0001);
var IsBlockStandsStill = InterpolationLine.IsValueNotChanges(blockPositionChangingIndex, (0.0001, -0.0001));
- var drillingAnalysis = new TelemetryAnalysis
+ var drillingAnalysis = new TelemetryAnalysisDto
{
IdTelemetry = dataSaubBases.First().IdTelemetry,
UnixDate = (long)(lastSaubDate - new DateTime(1970, 1, 1, 0, 0, 0)).TotalSeconds,
diff --git a/AsbCloudInfrastructure/Services/CrudService.cs b/AsbCloudInfrastructure/Services/CrudService.cs
index a21b709b..6fb65bb7 100644
--- a/AsbCloudInfrastructure/Services/CrudService.cs
+++ b/AsbCloudInfrastructure/Services/CrudService.cs
@@ -4,7 +4,6 @@ using AsbCloudDb.Model;
using AsbCloudApp.Services;
using Mapster;
using Microsoft.EntityFrameworkCore;
-using Microsoft.Extensions.Configuration;
namespace AsbCloudInfrastructure.Services
{
@@ -22,12 +21,12 @@ namespace AsbCloudInfrastructure.Services
dbSet = context.Set();
}
- public IEnumerable GetAll(System.Linq.Expressions.Expression> predicate = null)
+ public IEnumerable GetAll(System.Linq.Expressions.Expression> predicate = null)
{
IQueryable entities = dbSet;
if (predicate is not null)
- entities = entities.Where(predicate);
+ entities = entities.Where(predicate).Cast();
var dto = entities.Adapt();
return dto;
diff --git a/AsbCloudInfrastructure/Services/DataService.cs b/AsbCloudInfrastructure/Services/DataService.cs
index 2f672b52..233d4cfc 100644
--- a/AsbCloudInfrastructure/Services/DataService.cs
+++ b/AsbCloudInfrastructure/Services/DataService.cs
@@ -85,13 +85,14 @@ namespace AsbCloudInfrastructure.Services
db.DataSaubBases.RemoveRange(oldDataSaubBase);
- foreach (var item in dtos)
+ foreach (var dto in dtos)
{
- var dataSaub = item.Adapt();
+ var dataSaub = dto.Adapt();
dataSaub.IdTelemetry = telemetryId;
db.DataSaubBases.Add(dataSaub);
- analyticsService.SaveAnalytics(dataSaub);
+ dto.IdTelemetry = telemetryId;
+ analyticsService.SaveAnalytics(dto);
}
db.SaveChanges();
@@ -99,11 +100,11 @@ namespace AsbCloudInfrastructure.Services
public DatesRangeDto GetDataDatesRange(int idWell)
{
- var telemetry = telemetryService.GetTelemetryByidWell(idWell);
- if (telemetry is null)
+ var telemetryId = telemetryService.GetIdTelemetryByIdWell(idWell);
+ if (telemetryId is null)
return null;
- var (From, To) = db.GetDatesRange(telemetry.Id);
+ var (From, To) = db.GetDatesRange((int)telemetryId);
return new DatesRangeDto { From = From, To = To };
}
diff --git a/AsbCloudInfrastructure/Services/FileService.cs b/AsbCloudInfrastructure/Services/FileService.cs
index 6a825413..36bad845 100644
--- a/AsbCloudInfrastructure/Services/FileService.cs
+++ b/AsbCloudInfrastructure/Services/FileService.cs
@@ -49,10 +49,6 @@ namespace AsbCloudInfrastructure.Services
int idCategory, DateTime begin = default, DateTime end = default,
int skip = 0, int take = 32)
{
- var telemetry = telemetryService.GetTelemetryByidWell(idWell);
- if (telemetry is null)
- return null;
-
var filesInfoQuery = db.Files.Include(f => f.User)
.Where(f => f.IdWell == idWell &&
f.IdCategory == idCategory);
diff --git a/AsbCloudInfrastructure/Services/LastDataService.cs b/AsbCloudInfrastructure/Services/LastDataService.cs
index b9102cb8..41b71218 100644
--- a/AsbCloudInfrastructure/Services/LastDataService.cs
+++ b/AsbCloudInfrastructure/Services/LastDataService.cs
@@ -1,5 +1,4 @@
-using System;
-using System.Linq;
+using System.Linq;
using AsbCloudDb.Model;
using AsbCloudApp.Services;
using Mapster;
diff --git a/AsbCloudInfrastructure/Services/MessageService.cs b/AsbCloudInfrastructure/Services/MessageService.cs
index 05f936a4..81fd14e5 100644
--- a/AsbCloudInfrastructure/Services/MessageService.cs
+++ b/AsbCloudInfrastructure/Services/MessageService.cs
@@ -27,17 +27,17 @@ namespace AsbCloudInfrastructure.Services
public PaginationContainer GetMessages(int idWell, IEnumerable categoryids = default, DateTime begin = default, DateTime end = default, int skip = 0, int take = 32)
{
- var telemetry = telemetryService.GetTelemetryByidWell(idWell);
- if (telemetry is null)
+ var telemetryId = telemetryService.GetIdTelemetryByIdWell(idWell);
+ if (telemetryId is null)
return null;
- var events = cacheEvents.Select(e => e.IdTelemetry == telemetry.Id);
+ var events = cacheEvents.Select(e => e.IdTelemetry == telemetryId);
if (!events.Any())
return null;
var messages = from m in db.Messages
- where m.IdTelemetry == telemetry.Id
+ where m.IdTelemetry == telemetryId
select m;
if ((categoryids != default) && (categoryids.Any()))
@@ -72,7 +72,7 @@ namespace AsbCloudInfrastructure.Services
if (messagesList.Count == 0)
return result;
- var users = cacheTUsers.Select(u => u.IdTelemetry == telemetry.Id);
+ var users = cacheTUsers.Select(u => u.IdTelemetry == telemetryId);
foreach (var message in messagesList)
{
@@ -98,11 +98,11 @@ namespace AsbCloudInfrastructure.Services
public DatesRangeDto GetMessagesDatesRange(int idWell)
{
- var telemetry = telemetryService.GetTelemetryByidWell(idWell);
- if (telemetry is null)
+ var telemetryId = telemetryService.GetIdTelemetryByIdWell(idWell);
+ if (telemetryId is null)
return null;
- var (From, To) = db.GetDatesRange(telemetry.Id);
+ var (From, To) = db.GetDatesRange((int)telemetryId);
return new DatesRangeDto { From = From, To = To };
}
diff --git a/AsbCloudInfrastructure/Services/ReportService.cs b/AsbCloudInfrastructure/Services/ReportService.cs
index 602db859..87ffcf02 100644
--- a/AsbCloudInfrastructure/Services/ReportService.cs
+++ b/AsbCloudInfrastructure/Services/ReportService.cs
@@ -111,16 +111,16 @@ namespace AsbCloudInfrastructure.Services
public DatesRangeDto GetReportsDatesRange(int idWell)
{
- var telemetry = telemetryService.GetTelemetryByidWell(idWell);
+ var telemetryId = telemetryService.GetIdTelemetryByIdWell(idWell);
- if (telemetry is null)
+ if (telemetryId is null)
return null;
var datesRange = (from d in db.DataSaubBases
- where d.IdTelemetry == telemetry.Id
+ where d.IdTelemetry == telemetryId
select d.Date).Union(
from m in db.Messages
- where m.IdTelemetry == telemetry.Id
+ where m.IdTelemetry == telemetryId
select m.Date).DefaultIfEmpty().GroupBy(g => true)
.Select(g => new
{
diff --git a/AsbCloudInfrastructure/Services/SaubDataCache.cs b/AsbCloudInfrastructure/Services/SaubDataCache.cs
index 21e4bced..264dc6fc 100644
--- a/AsbCloudInfrastructure/Services/SaubDataCache.cs
+++ b/AsbCloudInfrastructure/Services/SaubDataCache.cs
@@ -1,25 +1,25 @@
-using AsbCloudApp.Services;
-using AsbCloudDb.Model;
+using AsbCloudApp.Data;
+using AsbCloudApp.Services;
using System.Collections.Generic;
namespace AsbCloudInfrastructure.Services
{
public class SaubDataCache : ISaubDataCache
{
- public TelemetryAnalysis CurrentAnalysis { get; set; }
+ public TelemetryAnalysisDto CurrentAnalysis { get; set; }
- private readonly Dictionary> saubData =
- new Dictionary>();
+ private readonly Dictionary> saubData =
+ new Dictionary>();
- public IEnumerable GetOrCreateCache(int telemetryId)
+ public IEnumerable GetOrCreateCache(int telemetryId)
{
if (!saubData.ContainsKey(telemetryId))
- saubData[telemetryId] = new List();
+ saubData[telemetryId] = new List();
return saubData[telemetryId];
}
- public void AddData(DataSaubBase data)
+ public void AddData(DataSaubBaseDto data)
{
GetOrCreateCache(data.IdTelemetry);
diff --git a/AsbCloudInfrastructure/Services/TelemetryOperationDetector.cs b/AsbCloudInfrastructure/Services/TelemetryOperationDetector.cs
index 6a9af0b5..38c174bd 100644
--- a/AsbCloudInfrastructure/Services/TelemetryOperationDetector.cs
+++ b/AsbCloudInfrastructure/Services/TelemetryOperationDetector.cs
@@ -1,4 +1,5 @@
using AsbCloudDb.Model;
+using AsbCloudApp.Data;
using System;
namespace AsbCloudInfrastructure.Services
@@ -7,6 +8,6 @@ namespace AsbCloudInfrastructure.Services
{
public int Order { get; set; }
public TelemetryOperation Operation { get; set; }
- public Func Detect { get; set; }
+ public Func Detect { get; set; }
}
}
diff --git a/AsbCloudInfrastructure/Services/TelemetryOperationDetectorService.cs b/AsbCloudInfrastructure/Services/TelemetryOperationDetectorService.cs
index 49ca1e90..05e369fd 100644
--- a/AsbCloudInfrastructure/Services/TelemetryOperationDetectorService.cs
+++ b/AsbCloudInfrastructure/Services/TelemetryOperationDetectorService.cs
@@ -1,4 +1,5 @@
using AsbCloudDb.Model;
+using AsbCloudApp.Data;
using System.Collections.Generic;
using System.Linq;
@@ -179,7 +180,7 @@ namespace AsbCloudInfrastructure.Services
};
}
- public TelemetryOperation DetectOperation(TelemetryAnalysis data) =>
+ public TelemetryOperation DetectOperation(TelemetryAnalysisDto data) =>
detectors.OrderBy(d => d.Order).First(o => o.Detect(data)).Operation
?? new TelemetryOperation { Id = 1, Name = "Невозможно определить операцию" };
}
diff --git a/AsbCloudInfrastructure/Services/TelemetryService.cs b/AsbCloudInfrastructure/Services/TelemetryService.cs
index be950ed6..d3d495b2 100644
--- a/AsbCloudInfrastructure/Services/TelemetryService.cs
+++ b/AsbCloudInfrastructure/Services/TelemetryService.cs
@@ -33,17 +33,13 @@ namespace AsbCloudInfrastructure.Services
cacheTelemetry.Upsert(telemetry);
}
- public Telemetry GetTelemetryByidWell(int idWell)
+ public int? GetIdTelemetryByIdWell(int idWell)
{
var well = cacheWells.FirstOrDefault(w => w.Id == idWell);
if (well is null)
return null;
- var telemetry = cacheTelemetry.FirstOrDefault(t => t.Id == well.Id);
- if (telemetry is null)
- return null;
-
- return telemetry;
+ return well.IdTelemetry;
}
private Well GetWellByTelemetryUid(string uid)