forked from ddrilling/AsbCloudServer
черновички
This commit is contained in:
parent
08152679a9
commit
aa94db6549
@ -38,6 +38,7 @@ namespace AsbCloudInfrastructure.Background.PeriodicWorks
|
|||||||
// параметры метода: массив из
|
// параметры метода: массив из
|
||||||
|
|
||||||
using var db = services.GetRequiredService<IAsbCloudDbContext>();
|
using var db = services.GetRequiredService<IAsbCloudDbContext>();
|
||||||
|
|
||||||
var dateFrom = db.ProcessMapDrillingCache
|
var dateFrom = db.ProcessMapDrillingCache
|
||||||
.OrderByDescending(c => c.DateTo)
|
.OrderByDescending(c => c.DateTo)
|
||||||
.FirstOrDefault()?.DateTo
|
.FirstOrDefault()?.DateTo
|
||||||
@ -66,14 +67,8 @@ namespace AsbCloudInfrastructure.Background.PeriodicWorks
|
|||||||
var indexEnd = 0;
|
var indexEnd = 0;
|
||||||
foreach (var operation in detectedOperations)
|
foreach (var operation in detectedOperations)
|
||||||
{
|
{
|
||||||
var telemetryDataSaubItemStart = telemetryDataSaub
|
indexStart = Array.FindIndex(telemetryDataSaub, indexEnd, t => t.DateTime >= operation.DateStart );
|
||||||
.FirstOrDefault(t => t.DateTime >= operation.DateStart);
|
indexEnd = Array.FindIndex(telemetryDataSaub, indexStart, t => t.DateTime > operation.DateEnd) - 1;
|
||||||
var telemetryDataSaubItemEnd = telemetryDataSaub
|
|
||||||
.Where(t => t.DateTime <= operation.DateEnd)
|
|
||||||
.LastOrDefault();
|
|
||||||
|
|
||||||
indexStart = Array.IndexOf(telemetryDataSaub, telemetryDataSaubItemStart, indexEnd);
|
|
||||||
indexEnd = Array.IndexOf(telemetryDataSaub, telemetryDataSaubItemEnd, indexStart);
|
|
||||||
|
|
||||||
if(indexStart >= 0 && indexEnd >= indexStart)
|
if(indexStart >= 0 && indexEnd >= indexStart)
|
||||||
{
|
{
|
||||||
@ -81,6 +76,7 @@ namespace AsbCloudInfrastructure.Background.PeriodicWorks
|
|||||||
|
|
||||||
var subset = telemetryDataSaub.AsSpan(indexStart, length + 1);
|
var subset = telemetryDataSaub.AsSpan(indexStart, length + 1);
|
||||||
var result = CalcStats(operation, subset);
|
var result = CalcStats(operation, subset);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -96,11 +92,13 @@ namespace AsbCloudInfrastructure.Background.PeriodicWorks
|
|||||||
var previous = telemetryDataSaub[i - 1];
|
var previous = telemetryDataSaub[i - 1];
|
||||||
var current = telemetryDataSaub[i];
|
var current = telemetryDataSaub[i];
|
||||||
|
|
||||||
if(IsNewCacheItem(previous, current))
|
if(IsNewCacheItem(previous, current) || i == telemetryDataSaub.Length)
|
||||||
{
|
{
|
||||||
var span = telemetryDataSaub.Slice(indexStart, i - indexStart);
|
var length = i - indexStart;
|
||||||
|
var span = telemetryDataSaub.Slice(indexStart, length);
|
||||||
indexStart = i;
|
indexStart = i;
|
||||||
var processMapDrillingCacheItem = CalcStat(operation, span);
|
var processMapDrillingCacheItem = CalcStat(operation, span);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
@ -109,7 +107,7 @@ namespace AsbCloudInfrastructure.Background.PeriodicWorks
|
|||||||
private ProcessMapDrillingCache CalcStat(DetectedOperation operation, Span<TelemetryDataSaub> span)
|
private ProcessMapDrillingCache CalcStat(DetectedOperation operation, Span<TelemetryDataSaub> span)
|
||||||
{
|
{
|
||||||
var depthStart = span[0].WellDepth;
|
var depthStart = span[0].WellDepth;
|
||||||
var depthEnd = span[span.Length - 1].WellDepth;
|
var depthEnd = span[^1].WellDepth;
|
||||||
|
|
||||||
var hasOscillation = false;
|
var hasOscillation = false;
|
||||||
if (operation.ExtraData.TryGetValue(DetectorDrilling.ExtraDataKeyHasOscillation, out object? HasOscillation))
|
if (operation.ExtraData.TryGetValue(DetectorDrilling.ExtraDataKeyHasOscillation, out object? HasOscillation))
|
||||||
@ -149,15 +147,17 @@ namespace AsbCloudInfrastructure.Background.PeriodicWorks
|
|||||||
double AxialLoad,
|
double AxialLoad,
|
||||||
double RotorTorque,
|
double RotorTorque,
|
||||||
double RotorSpeed
|
double RotorSpeed
|
||||||
) CalcValue(Span<TelemetryDataSaub> span, float diffDepthTotal)
|
) CalcValue(Span<TelemetryDataSaub> span)
|
||||||
{
|
{
|
||||||
var sumPressure = 0.0;
|
var sumPressure = 0.0;
|
||||||
var sumAxialLoad = 0.0;
|
var sumAxialLoad = 0.0;
|
||||||
var sumRotorTorque = 0.0;
|
var sumRotorTorque = 0.0;
|
||||||
var sumRotorSpeed = 0.0;
|
var sumRotorSpeed = 0.0;
|
||||||
|
var diffDepthTotal = span[^1].WellDepth - span[0].WellDepth;
|
||||||
for (var i = 0; i < span.Length - 1; i++)
|
for (var i = 0; i < span.Length - 1; i++)
|
||||||
{
|
{
|
||||||
sumPressure += (span[i + 1].WellDepth - span[i].WellDepth) * span[i].Pressure;
|
var weigth = span[i + 1].WellDepth - span[i].WellDepth;
|
||||||
|
sumPressure += () * span[i].Pressure;
|
||||||
sumAxialLoad += (span[i + 1].WellDepth - span[i].WellDepth) * span[i].AxialLoad;
|
sumAxialLoad += (span[i + 1].WellDepth - span[i].WellDepth) * span[i].AxialLoad;
|
||||||
sumRotorTorque += (span[i + 1].WellDepth - span[i].WellDepth) * span[i].RotorTorque;
|
sumRotorTorque += (span[i + 1].WellDepth - span[i].WellDepth) * span[i].RotorTorque;
|
||||||
sumRotorSpeed += (span[i + 1].WellDepth - span[i].WellDepth) * span[i].RotorSpeed;
|
sumRotorSpeed += (span[i + 1].WellDepth - span[i].WellDepth) * span[i].RotorSpeed;
|
||||||
|
Loading…
Reference in New Issue
Block a user