forked from ddrilling/AsbCloudServer
Fix WorkLimitingParameterCalc sql query
This commit is contained in:
parent
c28315b795
commit
1f79a8f5f7
@ -7,14 +7,13 @@ using System.Linq;
|
|||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using AsbCloudInfrastructure.Background;
|
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
|
||||||
namespace AsbCloudInfrastructure.Services;
|
namespace AsbCloudInfrastructure.Background;
|
||||||
|
|
||||||
public class WorkLimitingParameterCalc : Work
|
public class WorkLimitingParameterCalc : Work
|
||||||
{
|
{
|
||||||
public WorkLimitingParameterCalc()
|
public WorkLimitingParameterCalc()
|
||||||
: base("Limiting parameter calc")
|
: base("Limiting parameter calc")
|
||||||
{
|
{
|
||||||
Timeout = TimeSpan.FromMinutes(30);
|
Timeout = TimeSpan.FromMinutes(30);
|
||||||
@ -51,7 +50,7 @@ public class WorkLimitingParameterCalc : Work
|
|||||||
var i = 0d;
|
var i = 0d;
|
||||||
foreach (var item in telemetryLastDetectedDates)
|
foreach (var item in telemetryLastDetectedDates)
|
||||||
{
|
{
|
||||||
onProgressCallback($"Start hanling telemetry: {item.IdTelemetry} from {item.LastDate}", i++/count);
|
onProgressCallback($"Start hanling telemetry: {item.IdTelemetry} from {item.LastDate}", i++ / count);
|
||||||
var newLimitingParameters = await GetLimitingParameterAsync(item.IdTelemetry, item.LastDate ?? DateTimeOffset.MinValue, db, token);
|
var newLimitingParameters = await GetLimitingParameterAsync(item.IdTelemetry, item.LastDate ?? DateTimeOffset.MinValue, db, token);
|
||||||
if (newLimitingParameters?.Any() == true)
|
if (newLimitingParameters?.Any() == true)
|
||||||
{
|
{
|
||||||
@ -63,7 +62,7 @@ public class WorkLimitingParameterCalc : Work
|
|||||||
|
|
||||||
private static async Task<IEnumerable<LimitingParameter>> GetLimitingParameterAsync(int idTelemetry, DateTimeOffset begin, IAsbCloudDbContext db, CancellationToken token)
|
private static async Task<IEnumerable<LimitingParameter>> GetLimitingParameterAsync(int idTelemetry, DateTimeOffset begin, IAsbCloudDbContext db, CancellationToken token)
|
||||||
{
|
{
|
||||||
var query =
|
var query =
|
||||||
$"select " +
|
$"select " +
|
||||||
$"limiting_parameters.date, limiting_parameters.id_feed_regulator, limiting_parameters.well_depth " +
|
$"limiting_parameters.date, limiting_parameters.id_feed_regulator, limiting_parameters.well_depth " +
|
||||||
$"from ( " +
|
$"from ( " +
|
||||||
@ -72,9 +71,9 @@ public class WorkLimitingParameterCalc : Work
|
|||||||
$"lag(id_feed_regulator, 1) over (order by date) as id_feed_regulator_lag, " +
|
$"lag(id_feed_regulator, 1) over (order by date) as id_feed_regulator_lag, " +
|
||||||
$"lead(id_feed_regulator, 1) over (order by date) as id_feed_regulator_lead " +
|
$"lead(id_feed_regulator, 1) over (order by date) as id_feed_regulator_lead " +
|
||||||
$"from t_telemetry_data_saub " +
|
$"from t_telemetry_data_saub " +
|
||||||
$"where id_feed_regulator is not null " +
|
$"where id_feed_regulator is not null " +
|
||||||
$"and id_telemetry = {idTelemetry}" +
|
$"and id_telemetry = {idTelemetry} " +
|
||||||
$"and date >= '{begin:u}'" +
|
$"and date >= '{begin:u}' " +
|
||||||
$"order by date) as limiting_parameters " +
|
$"order by date) as limiting_parameters " +
|
||||||
$"where id_feed_regulator_lag is null " +
|
$"where id_feed_regulator_lag is null " +
|
||||||
$"or (id_feed_regulator != id_feed_regulator_lag and id_feed_regulator_lead != id_feed_regulator_lag) " +
|
$"or (id_feed_regulator != id_feed_regulator_lag and id_feed_regulator_lead != id_feed_regulator_lag) " +
|
||||||
@ -102,14 +101,15 @@ public class WorkLimitingParameterCalc : Work
|
|||||||
|
|
||||||
if (limitingLast.IdFeedRegulator != idLimiting || limitingLast.DepthStart < wellDepth)
|
if (limitingLast.IdFeedRegulator != idLimiting || limitingLast.DepthStart < wellDepth)
|
||||||
{
|
{
|
||||||
limitingParameters.Add(new LimitingParameter {
|
limitingParameters.Add(new LimitingParameter
|
||||||
|
{
|
||||||
IdTelemetry = idTelemetry,
|
IdTelemetry = idTelemetry,
|
||||||
IdFeedRegulator = limitingLast.IdFeedRegulator,
|
IdFeedRegulator = limitingLast.IdFeedRegulator,
|
||||||
DateStart = limitingLast.DateStart,
|
DateStart = limitingLast.DateStart,
|
||||||
DateEnd = date,
|
DateEnd = date,
|
||||||
DepthStart = limitingLast.DepthStart,
|
DepthStart = limitingLast.DepthStart,
|
||||||
DepthEnd = wellDepth
|
DepthEnd = wellDepth
|
||||||
});
|
});
|
||||||
|
|
||||||
limitingLast = new LimitingParameter
|
limitingLast = new LimitingParameter
|
||||||
{
|
{
|
Loading…
Reference in New Issue
Block a user