forked from ddrilling/AsbCloudServer
Merge branch 'dev' into feature/daily_report
This commit is contained in:
commit
b6edb0faff
@ -9,8 +9,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AsbCloudApp", "AsbCloudApp\
|
|||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AsbCloudInfrastructure", "AsbCloudInfrastructure\AsbCloudInfrastructure.csproj", "{67DBFC52-BAE4-4903-827A-AD0288C292B6}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AsbCloudInfrastructure", "AsbCloudInfrastructure\AsbCloudInfrastructure.csproj", "{67DBFC52-BAE4-4903-827A-AD0288C292B6}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ConsoleApp1", "ConsoleApp1\ConsoleApp1.csproj", "{D04A84E7-5F08-4042-8FB5-476EE49E9D22}"
|
|
||||||
EndProject
|
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AsbCloudDb", "AsbCloudDb\AsbCloudDb.csproj", "{40FBD29B-724B-4496-B5D9-1A5D14102456}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AsbCloudDb", "AsbCloudDb\AsbCloudDb.csproj", "{40FBD29B-724B-4496-B5D9-1A5D14102456}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AsbCloudWebApi.Tests", "AsbCloudWebApi.Tests\AsbCloudWebApi.Tests.csproj", "{9CF6FBB1-9AF5-45AB-A521-24F11A79B540}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AsbCloudWebApi.Tests", "AsbCloudWebApi.Tests\AsbCloudWebApi.Tests.csproj", "{9CF6FBB1-9AF5-45AB-A521-24F11A79B540}"
|
||||||
@ -35,10 +33,6 @@ Global
|
|||||||
{67DBFC52-BAE4-4903-827A-AD0288C292B6}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{67DBFC52-BAE4-4903-827A-AD0288C292B6}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{67DBFC52-BAE4-4903-827A-AD0288C292B6}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{67DBFC52-BAE4-4903-827A-AD0288C292B6}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{67DBFC52-BAE4-4903-827A-AD0288C292B6}.Release|Any CPU.Build.0 = Release|Any CPU
|
{67DBFC52-BAE4-4903-827A-AD0288C292B6}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{D04A84E7-5F08-4042-8FB5-476EE49E9D22}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{D04A84E7-5F08-4042-8FB5-476EE49E9D22}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{D04A84E7-5F08-4042-8FB5-476EE49E9D22}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{D04A84E7-5F08-4042-8FB5-476EE49E9D22}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{40FBD29B-724B-4496-B5D9-1A5D14102456}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{40FBD29B-724B-4496-B5D9-1A5D14102456}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{40FBD29B-724B-4496-B5D9-1A5D14102456}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{40FBD29B-724B-4496-B5D9-1A5D14102456}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{40FBD29B-724B-4496-B5D9-1A5D14102456}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{40FBD29B-724B-4496-B5D9-1A5D14102456}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
8894
AsbCloudDb/Migrations/20231107091439_Add_Data_To_WellSectionType.Designer.cs
generated
Normal file
8894
AsbCloudDb/Migrations/20231107091439_Add_Data_To_WellSectionType.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,52 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace AsbCloudDb.Migrations
|
||||||
|
{
|
||||||
|
public partial class Add_Data_To_WellSectionType : Migration
|
||||||
|
{
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.InsertData(
|
||||||
|
table: "t_well_section_type",
|
||||||
|
columns: new[] { "id", "caption", "order" },
|
||||||
|
values: new object[,]
|
||||||
|
{
|
||||||
|
{ 34, "Хвостовик 6", 6.5f },
|
||||||
|
{ 35, "Хвостовик 7", 6.6f },
|
||||||
|
{ 36, "Хвостовик 8", 6.7f },
|
||||||
|
{ 37, "Хвостовик 9", 6.8f },
|
||||||
|
{ 38, "Хвостовик 10", 6.9f }
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "t_well_section_type",
|
||||||
|
keyColumn: "id",
|
||||||
|
keyValue: 34);
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "t_well_section_type",
|
||||||
|
keyColumn: "id",
|
||||||
|
keyValue: 35);
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "t_well_section_type",
|
||||||
|
keyColumn: "id",
|
||||||
|
keyValue: 36);
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "t_well_section_type",
|
||||||
|
keyColumn: "id",
|
||||||
|
keyValue: 37);
|
||||||
|
|
||||||
|
migrationBuilder.DeleteData(
|
||||||
|
table: "t_well_section_type",
|
||||||
|
keyColumn: "id",
|
||||||
|
keyValue: 38);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -7130,6 +7130,36 @@ namespace AsbCloudDb.Migrations
|
|||||||
Id = 33,
|
Id = 33,
|
||||||
Caption = "Техническая колонна 3",
|
Caption = "Техническая колонна 3",
|
||||||
Order = 2.2f
|
Order = 2.2f
|
||||||
|
},
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 34,
|
||||||
|
Caption = "Хвостовик 6",
|
||||||
|
Order = 6.5f
|
||||||
|
},
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 35,
|
||||||
|
Caption = "Хвостовик 7",
|
||||||
|
Order = 6.6f
|
||||||
|
},
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 36,
|
||||||
|
Caption = "Хвостовик 8",
|
||||||
|
Order = 6.7f
|
||||||
|
},
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 37,
|
||||||
|
Caption = "Хвостовик 9",
|
||||||
|
Order = 6.8f
|
||||||
|
},
|
||||||
|
new
|
||||||
|
{
|
||||||
|
Id = 38,
|
||||||
|
Caption = "Хвостовик 10",
|
||||||
|
Order = 6.9f
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -42,6 +42,12 @@
|
|||||||
new (){ Id = 31, Caption = "Техническая колонна", Order = 2},
|
new (){ Id = 31, Caption = "Техническая колонна", Order = 2},
|
||||||
new (){ Id = 32, Caption = "Техническая колонна 2", Order = 2.1f},
|
new (){ Id = 32, Caption = "Техническая колонна 2", Order = 2.1f},
|
||||||
new (){ Id = 33, Caption = "Техническая колонна 3", Order = 2.2f},
|
new (){ Id = 33, Caption = "Техническая колонна 3", Order = 2.2f},
|
||||||
|
|
||||||
|
new (){ Id = 34, Caption = "Хвостовик 6", Order = 6.5f},
|
||||||
|
new (){ Id = 35, Caption = "Хвостовик 7", Order = 6.6f},
|
||||||
|
new (){ Id = 36, Caption = "Хвостовик 8", Order = 6.7f},
|
||||||
|
new (){ Id = 37, Caption = "Хвостовик 9", Order = 6.8f},
|
||||||
|
new (){ Id = 38, Caption = "Хвостовик 10", Order = 6.9f},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -54,6 +54,7 @@ public class BackgroundWorker : BackgroundService
|
|||||||
|
|
||||||
protected override async Task ExecuteAsync(CancellationToken token)
|
protected override async Task ExecuteAsync(CancellationToken token)
|
||||||
{
|
{
|
||||||
|
Trace.TraceInformation($"{GetType().Name} started");
|
||||||
while (!token.IsCancellationRequested && works.TryDequeue(out CurrentWork))
|
while (!token.IsCancellationRequested && works.TryDequeue(out CurrentWork))
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
@ -1,41 +0,0 @@
|
|||||||
using System.Linq;
|
|
||||||
|
|
||||||
namespace System.Collections.Generic
|
|
||||||
{
|
|
||||||
public class OrderedList<T>: IEnumerable<T>, ICollection<T>
|
|
||||||
where T : notnull
|
|
||||||
{
|
|
||||||
private readonly List<T> list = new List<T>();
|
|
||||||
|
|
||||||
private readonly Func<T, object> keySelector;
|
|
||||||
private readonly bool isDescending = false;
|
|
||||||
|
|
||||||
private IOrderedEnumerable<T> OrdredList => isDescending
|
|
||||||
? list.OrderByDescending(keySelector)
|
|
||||||
: list.OrderBy(keySelector);
|
|
||||||
|
|
||||||
public int Count => list.Count;
|
|
||||||
|
|
||||||
public bool IsReadOnly => false;
|
|
||||||
|
|
||||||
public OrderedList(Func<T, object> keySelector, bool isDescending = false)
|
|
||||||
{
|
|
||||||
this.keySelector = keySelector;
|
|
||||||
this.isDescending = isDescending;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Add(T item) => list.Add(item);
|
|
||||||
|
|
||||||
public void Clear()=> list.Clear();
|
|
||||||
|
|
||||||
public bool Contains(T item)=> list.Contains(item);
|
|
||||||
|
|
||||||
public void CopyTo(T[] array, int arrayIndex)=> list.CopyTo(array, arrayIndex);
|
|
||||||
|
|
||||||
public bool Remove(T item)=> list.Remove(item);
|
|
||||||
|
|
||||||
public IEnumerator<T> GetEnumerator() => OrdredList.GetEnumerator();
|
|
||||||
|
|
||||||
IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
|
|
||||||
}
|
|
||||||
}
|
|
@ -42,6 +42,7 @@ public class PeriodicBackgroundWorker : BackgroundService
|
|||||||
|
|
||||||
protected override async Task ExecuteAsync(CancellationToken token)
|
protected override async Task ExecuteAsync(CancellationToken token)
|
||||||
{
|
{
|
||||||
|
Trace.TraceInformation($"{GetType().Name} started");
|
||||||
while (!token.IsCancellationRequested)
|
while (!token.IsCancellationRequested)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
11
AsbCloudInfrastructure/Background/readme.md
Normal file
11
AsbCloudInfrastructure/Background/readme.md
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
# BackgroundWorker
|
||||||
|
Класс выполнения разовой фоновой работы.
|
||||||
|
Для каждой работы создается свой scope.
|
||||||
|
|
||||||
|
# NotificationBackgroundWorker
|
||||||
|
Предназначен для различных оповещений пользователей разными способами.
|
||||||
|
Фактически это дополнительный экземпляр BackgroundWorker, чтобы оповещения не ждали завершения долгих операций из стандартного BackgroundWorker.
|
||||||
|
Не должен давать большой нагрузки БД.
|
||||||
|
|
||||||
|
# PeriodicBackgroundWorker
|
||||||
|
Класс выполнения периодической фоновой работы.
|
@ -1,12 +0,0 @@
|
|||||||
# Проблемы фонового сервиса
|
|
||||||
- Нужно состояние по загрузки сервиса и очереди работ.
|
|
||||||
- Все ли задачи укладываются в таймаут,
|
|
||||||
- Сколько свободного времени остается,
|
|
||||||
- Что делает текущая задача,
|
|
||||||
- нет управления сервисом. Для исключения его влияния на другие процессы сервера.
|
|
||||||
- отключать/включать целиком
|
|
||||||
- отключать/включать отдельную периодическую задачу
|
|
||||||
|
|
||||||
# Сделать
|
|
||||||
- Разработать dto статуса задачи
|
|
||||||
- Отказаться от периодической задачи, при добавлении в хранилище задач период будет параметром метода добавления.
|
|
@ -55,10 +55,12 @@ public class WorkSubsystemOperationTimeCalc : Work
|
|||||||
{
|
{
|
||||||
IdTelemetry = outer,
|
IdTelemetry = outer,
|
||||||
inner.SingleOrDefault()?.LastDate,
|
inner.SingleOrDefault()?.LastDate,
|
||||||
});
|
})
|
||||||
|
.OrderByDescending(i => i.IdTelemetry);
|
||||||
|
|
||||||
var count = telemetryLastDetectedDates.Count();
|
var count = telemetryLastDetectedDates.Count();
|
||||||
var i = 0d;
|
var i = 0d;
|
||||||
|
|
||||||
foreach (var item in telemetryLastDetectedDates)
|
foreach (var item in telemetryLastDetectedDates)
|
||||||
{
|
{
|
||||||
onProgressCallback($"Start handling telemetry: {item.IdTelemetry} from {item.LastDate}", i++ / count);
|
onProgressCallback($"Start handling telemetry: {item.IdTelemetry} from {item.LastDate}", i++ / count);
|
||||||
|
@ -82,7 +82,7 @@ public class WellInfoService
|
|||||||
}
|
}
|
||||||
|
|
||||||
var wellOperationsStat = operationsStat.FirstOrDefault(s => s.Id == well.Id);
|
var wellOperationsStat = operationsStat.FirstOrDefault(s => s.Id == well.Id);
|
||||||
var wellLastFactSection = wellOperationsStat?.Sections.LastOrDefault(s => s.Fact is not null);
|
var wellLastFactSection = wellOperationsStat?.Sections.OrderBy(s => s.Fact?.WellDepthStart).LastOrDefault(s => s.Fact is not null);
|
||||||
currentDepth ??= wellLastFactSection?.Fact?.WellDepthEnd;
|
currentDepth ??= wellLastFactSection?.Fact?.WellDepthEnd;
|
||||||
|
|
||||||
var wellProcessMaps = processMapPlanWellDrillings
|
var wellProcessMaps = processMapPlanWellDrillings
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
using AsbCloudApp.Services;
|
using AsbCloudDb.Model;
|
||||||
using AsbCloudDb.Model;
|
|
||||||
using AsbCloudInfrastructure.Services.DetectOperations;
|
using AsbCloudInfrastructure.Services.DetectOperations;
|
||||||
using AsbCloudInfrastructure.Services;
|
using AsbCloudInfrastructure.Services;
|
||||||
using Microsoft.EntityFrameworkCore;
|
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using Microsoft.Extensions.Hosting;
|
using Microsoft.Extensions.Hosting;
|
||||||
using System;
|
using System;
|
||||||
@ -10,10 +8,7 @@ using System.Threading.Tasks;
|
|||||||
using System.Threading;
|
using System.Threading;
|
||||||
using AsbCloudInfrastructure.Background;
|
using AsbCloudInfrastructure.Background;
|
||||||
using AsbCloudApp.Data.SAUB;
|
using AsbCloudApp.Data.SAUB;
|
||||||
using AsbCloudInfrastructure.Services.SAUB;
|
|
||||||
using AsbCloudInfrastructure.Services.Subsystems;
|
using AsbCloudInfrastructure.Services.Subsystems;
|
||||||
using System.Linq;
|
|
||||||
using DocumentFormat.OpenXml.InkML;
|
|
||||||
using AsbCloudDb;
|
using AsbCloudDb;
|
||||||
using AsbCloudApp.Repositories;
|
using AsbCloudApp.Repositories;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user