Merge branch 'dev' into feature/daily_report

# Conflicts:
#	AsbCloudInfrastructure/DependencyInjection.cs
This commit is contained in:
Степанов Дмитрий 2023-11-27 11:23:40 +05:00
commit 1088092d2f
14 changed files with 9215 additions and 51 deletions

View File

@ -180,12 +180,12 @@ namespace AsbCloudApp.Data
/// </summary>
protected void SetStatusComplete()
{
CountComplete++;
if (CurrentState is null)
return;
LastComplete = new(CurrentState);
CurrentState = null;
CountComplete++;
Trace.TraceInformation($"{WorkNameForTrace} state: completed");
}
@ -194,12 +194,12 @@ namespace AsbCloudApp.Data
/// </summary>
protected void SetLastError(string errorMessage)
{
CountErrors++;
if (CurrentState is null)
return;
LastError = new LastErrorInfo(CurrentState, errorMessage);
CurrentState = null;
CountErrors++;
Trace.TraceError($"{WorkNameForTrace} throw exception[{CountErrors}]: {errorMessage}");
}
}

View File

@ -28,7 +28,7 @@ namespace AsbCloudApp.Data
/// <summary>
/// Название типа компании
/// </summary>
[StringLength(30, MinimumLength = 1, ErrorMessage = "Допустимое имя типа компании от 1 до 30 символов")]
[StringLength(255, MinimumLength = 1, ErrorMessage = "Допустимое имя типа компании от 1 до 255 символов")]
public string? CompanyTypeCaption { get; set; } = null!;
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,94 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace AsbCloudDb.Migrations
{
public partial class Add_New_WellOperationCategories : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.InsertData(
table: "t_well_operation_category",
columns: new[] { "id", "id_parent", "key_value_name", "key_value_units", "name" },
values: new object[,]
{
{ 4018, 3002, "dT", "мин", "Крепление" },
{ 5102, 4018, "dT", "мин", "Спуск пакера" },
{ 5103, 4011, "dT", "мин", "Запись гамма-каратожа" },
{ 5104, 4013, "dT", "мин", "Шаблонирование спуск БИ" },
{ 5105, 4018, "dT", "мин", "Сборка клин-отклонителя" },
{ 5106, 4018, "dT", "мин", "Ориентирование и посадка клина-отклонителя" },
{ 5107, 4018, "dT", "мин", "Протяжка подъемного патрубка подвески" },
{ 5108, 4018, "dT", "мин", "Подъем клина-отклонителя" },
{ 5109, 4018, "dT", "мин", "Стыковка стингера с хвостовиком основного ствола" },
{ 5110, 4018, "dT", "мин", "Ориентирование и установка стыковочного узла хвостовика" },
{ 5111, 4001, "МСП", "м/ч", "Бурение с отбором керна" },
{ 5112, 4018, "dT", "мин", "Работа пакером в обсадной колонне" }
});
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DeleteData(
table: "t_well_operation_category",
keyColumn: "id",
keyValue: 4018);
migrationBuilder.DeleteData(
table: "t_well_operation_category",
keyColumn: "id",
keyValue: 5102);
migrationBuilder.DeleteData(
table: "t_well_operation_category",
keyColumn: "id",
keyValue: 5103);
migrationBuilder.DeleteData(
table: "t_well_operation_category",
keyColumn: "id",
keyValue: 5104);
migrationBuilder.DeleteData(
table: "t_well_operation_category",
keyColumn: "id",
keyValue: 5105);
migrationBuilder.DeleteData(
table: "t_well_operation_category",
keyColumn: "id",
keyValue: 5106);
migrationBuilder.DeleteData(
table: "t_well_operation_category",
keyColumn: "id",
keyValue: 5107);
migrationBuilder.DeleteData(
table: "t_well_operation_category",
keyColumn: "id",
keyValue: 5108);
migrationBuilder.DeleteData(
table: "t_well_operation_category",
keyColumn: "id",
keyValue: 5109);
migrationBuilder.DeleteData(
table: "t_well_operation_category",
keyColumn: "id",
keyValue: 5110);
migrationBuilder.DeleteData(
table: "t_well_operation_category",
keyColumn: "id",
keyValue: 5111);
migrationBuilder.DeleteData(
table: "t_well_operation_category",
keyColumn: "id",
keyValue: 5112);
}
}
}

View File

@ -6019,6 +6019,14 @@ namespace AsbCloudDb.Migrations
Name = "Спуск обсадной колонны"
},
new
{
Id = 4018,
IdParent = 3002,
KeyValueName = "dT",
KeyValueUnits = "мин",
Name = "Крепление"
},
new
{
Id = 4007,
IdParent = 3002,
@ -6905,6 +6913,94 @@ namespace AsbCloudDb.Migrations
KeyValueName = "dT",
KeyValueUnits = "мин",
Name = "Ремонт"
},
new
{
Id = 5102,
IdParent = 4018,
KeyValueName = "dT",
KeyValueUnits = "мин",
Name = "Спуск пакера"
},
new
{
Id = 5103,
IdParent = 4011,
KeyValueName = "dT",
KeyValueUnits = "мин",
Name = "Запись гамма-каратожа"
},
new
{
Id = 5104,
IdParent = 4013,
KeyValueName = "dT",
KeyValueUnits = "мин",
Name = "Шаблонирование спуск БИ"
},
new
{
Id = 5105,
IdParent = 4018,
KeyValueName = "dT",
KeyValueUnits = "мин",
Name = "Сборка клин-отклонителя"
},
new
{
Id = 5106,
IdParent = 4018,
KeyValueName = "dT",
KeyValueUnits = "мин",
Name = "Ориентирование и посадка клина-отклонителя"
},
new
{
Id = 5107,
IdParent = 4018,
KeyValueName = "dT",
KeyValueUnits = "мин",
Name = "Протяжка подъемного патрубка подвески"
},
new
{
Id = 5108,
IdParent = 4018,
KeyValueName = "dT",
KeyValueUnits = "мин",
Name = "Подъем клина-отклонителя"
},
new
{
Id = 5109,
IdParent = 4018,
KeyValueName = "dT",
KeyValueUnits = "мин",
Name = "Стыковка стингера с хвостовиком основного ствола"
},
new
{
Id = 5110,
IdParent = 4018,
KeyValueName = "dT",
KeyValueUnits = "мин",
Name = "Ориентирование и установка стыковочного узла хвостовика"
},
new
{
Id = 5111,
IdParent = 4001,
KeyValueName = "МСП",
KeyValueUnits = "м/ч",
Name = "Бурение с отбором керна"
},
new
{
Id = 5112,
IdParent = 4018,
KeyValueName = "dT",
KeyValueUnits = "мин",
Name = "Работа пакером в обсадной колонне"
});
});

View File

@ -253,6 +253,7 @@ namespace AsbCloudDb.Model
new () {Id = IdBuilding, IdParent = 3000, Name = "Наращивание", KeyValueName = "dT", KeyValueUnits = "мин" },
new () {Id = IdSPO , IdParent = 3001, Name = "СПО", KeyValueName = "dT", KeyValueUnits = "мин" },
new () {Id = IdCasingRunning, IdParent = 3002, Name = "Спуск обсадной колонны", KeyValueName = "dT", KeyValueUnits = "мин" },
new () {Id = 4018, IdParent = 3002, Name = "Крепление", KeyValueName = "dT", KeyValueUnits = "мин"},
new () {Id = IdCementing, IdParent = 3002, Name = "Цементирование", KeyValueName = "dT", KeyValueUnits = "мин" },
new () {Id = IdAuxiliaryWorkFastening, IdParent = 3002, Name = "Вспомогательные работы при креплении", KeyValueName = "dT", KeyValueUnits = "мин" },
new () {Id = IdAssemblyOrDisassemblyGIS, IdParent = 3003, Name = "Сборка/разборка приборов ГИС", KeyValueName = "dT", KeyValueUnits = "мин" },
@ -370,6 +371,17 @@ namespace AsbCloudDb.Model
new () {Id = 5099, IdParent = 4013, Name = "Подготовка ствола скважины. Перезапись ГК в интервале установки КО.", KeyValueName = "dT", KeyValueUnits = "мин" },
new () {Id = 5100, IdParent = 4013, Name = "Смена рабочего переводника ВСП", KeyValueName = "dT", KeyValueUnits = "мин" },
new () {Id = 5101, IdParent = 4014, Name = "Ремонт", KeyValueName = "dT", KeyValueUnits = "мин" },
new () {Id = 5102, IdParent = 4018, Name = "Спуск пакера", KeyValueName = "dT", KeyValueUnits = "мин"},
new () {Id = 5103, IdParent = 4011, Name = "Запись гамма-каратожа", KeyValueName = "dT", KeyValueUnits = "мин"},
new () {Id = 5104, IdParent = 4013, Name = "Шаблонирование спуск БИ", KeyValueName = "dT", KeyValueUnits = "мин"},
new () {Id = 5105, IdParent = 4018, Name = "Сборка клин-отклонителя", KeyValueName = "dT", KeyValueUnits = "мин"},
new () {Id = 5106, IdParent = 4018, Name = "Ориентирование и посадка клина-отклонителя", KeyValueName = "dT", KeyValueUnits = "мин"},
new () {Id = 5107, IdParent = 4018, Name = "Протяжка подъемного патрубка подвески", KeyValueName = "dT", KeyValueUnits = "мин"},
new () {Id = 5108, IdParent = 4018, Name = "Подъем клина-отклонителя", KeyValueName = "dT", KeyValueUnits = "мин"},
new () {Id = 5109, IdParent = 4018, Name = "Стыковка стингера с хвостовиком основного ствола", KeyValueName = "dT", KeyValueUnits = "мин"},
new () {Id = 5110, IdParent = 4018, Name = "Ориентирование и установка стыковочного узла хвостовика", KeyValueName = "dT", KeyValueUnits = "мин"},
new () {Id = 5111, IdParent = 4001, Name = "Бурение с отбором керна", KeyValueName = "МСП", KeyValueUnits = "м/ч"},
new () {Id = 5112, IdParent = 4018, Name = "Работа пакером в обсадной колонне", KeyValueName = "dT", KeyValueUnits = "мин"}
};
#endregion

View File

@ -15,7 +15,7 @@ sudo nano postgresql.conf
2. В postgres.conf найти запись listen_addresses и добавить туда ip standby-сервера
> listen_addresses = '*, <ip standby-сервера>'
> listen_addresses = 'localhost, <ip standby-сервера>'
3. Открыть клиент для работы с postgres
@ -52,7 +52,7 @@ sudo nano pg_hba.conf
```
## 3. Настройка replica-сервера
1. Остановить сервер
1. Остановить сервер
```
sudo systemctl stop postgresql
```
@ -75,7 +75,7 @@ sudo nano pg_hba.conf
5. Используя утилиту basebackup создать базовую резервную копию с правами владения postgres (либо любого пользователя с соответствующими разрешениями).
```
pg_basebackup -h <ip primary-сервера> -D /var/lib/postgresql/14/main/ -U replicator -P -v -R -X stream -C -S slaveslot1
pg_basebackup -h <ip primary-сервера> -D /var/lib/postgresql/15/main/ -U replicator -P -v -R -X stream -C -S slaveslot1
где: /var/lib/postgresql/15/main/ - каталог replica-сервера
```
@ -133,12 +133,12 @@ sudo -u postgres psql
1. Установить на primary-сервер pgpool2 и postgresql-14-pgpool2
```
apt-get -y install pgpool2 postgresql-15-pgpool2
apt -y install pgpool2 postgresql-15-pgpool2
```
2. Установить на standby-сервер только postgresql-14-pgpool2
```
apt-get -y install postgresql-15-pgpool2
apt -y install postgresql-15-pgpool2
```
### Далее все настройки выполнить на primary-сервере
3. Зайти на редактирование в конфигурационный файл pgpool2
@ -154,11 +154,12 @@ apt-get -y install postgresql-15-pgpool2
backend_hostname0 = '<ip primary-сервера>'
backend_port0 = '<порт primary-сервера>'
backend_weight0 = 0
backend_data_directory0 = '/var/lib/postgresql/14/main'
backend_data_directory0 = '/var/lib/postgresql/15/main'
___
backend_hostname1 = '<ip replica-сервера>'
backend_port1 = '<порт primary-сервера>'
backend_port1 = '<порт replica-сервера>'
backend_weight1 = 1
___
enable_pool_hba = on
log_statement = on

View File

@ -1,4 +1,5 @@
using AsbCloudApp.Data;
using System;
using AsbCloudApp.Data;
using AsbCloudApp.Data.DrillTestReport;
using AsbCloudApp.Data.Manuals;
using AsbCloudApp.Data.ProcessMaps;
@ -36,7 +37,6 @@ using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using System;
using AsbCloudApp.Data.DailyReport.Blocks.TimeBalance;
using AsbCloudApp.Services.DailyReport;
using AsbCloudDb.Model.DailyReports.Blocks.TimeBalance;
@ -46,15 +46,6 @@ namespace AsbCloudInfrastructure
public static class DependencyInjection
{
public static IAsbCloudDbContext MakeContext(string connectionString)
{
var options = new DbContextOptionsBuilder<AsbCloudDbContext>()
.UseNpgsql(connectionString)
.Options;
var context = new AsbCloudDbContext(options);
return context;
}
public static void MapsterSetup()
{
TypeAdapterConfig.GlobalSettings.Default.Config
@ -319,19 +310,5 @@ namespace AsbCloudInfrastructure
return services;
}
public static IServiceCollection AddTransientLazy<TService, TImplementation>(this IServiceCollection services)
where TService : class
where TImplementation : class, TService
=> services.AddTransient<TService, TImplementation>()
.AddTransient(provider => new Lazy<TService>(provider.GetRequiredService<TService>));
public static IServiceCollection AddTransientLazy<TService, TImplementation>(this IServiceCollection services, Func<IServiceProvider, TImplementation> implementationFactory)
where TService : class
where TImplementation : class, TService
=> services.AddTransient<TService, TImplementation>(implementationFactory)
.AddTransient(provider => new Lazy<TService>(() => implementationFactory(provider)));
}
}

View File

@ -187,4 +187,15 @@ Cборка хвостовика=Сборка хвостовика 114мм (со
Выброс СБТ 127 (2100м), оставляется СБТ-127 (700 м) на след скв. ЗБР, чистка емкостей, вывоз БР.=Подъем БИ с выбросом на мостки
Монтаж ПВО повторный (смена плашек ПВО). ЗБР, чистка емкостей, вывоз БР=Монтаж ПВО
Опрессовка ПВО (200 атм), глухие=Опрессовка ПВО
Сборка ТБТ на 2 этапе (кол-во по согласованию с ЦУСС). Подъем/спуск БИ со сборкой ТБТ 102 мм. Опрессовка БИ (1.5 ч)=Сборка и спуск ТБТ
Сборка ТБТ на 2 этапе (кол-во по согласованию с ЦУСС). Подъем/спуск БИ со сборкой ТБТ 102 мм. Опрессовка БИ (1.5 ч)=Сборка и спуск ТБТ
Спуск пакера=Спуск пакера
Запись гамма-каратожа=Запись гамма-каратожа
Шаблонирование спуск БИ=Шаблонирование спуск БИ
Сборка клин-отклонителя=Сборка клин-отклонителя
Ориентирование и посадка клина-отклонителя=Ориентирование и посадка клина-отклонителя
Протяжка подъемного патрубка подвески=Протяжка подъемного патрубка подвески
Подъем клина-отклонителя=Подъем клина-отклонителя
Стыковка стингера с хвостовиком основного ствола=Стыковка стингера с хвостовиком основного ствола
Ориентирование и установка стыковочного узла хвостовика=Ориентирование и установка стыковочного узла хвостовика
Бурение с отбором керна=Бурение с отбором керна
Работа пакером в обсадной колонне=Работа пакером в обсадной колонне

View File

@ -25,9 +25,6 @@
</ItemGroup>
<ItemGroup>
<Content Update="wwwroot\**">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="AsbCloudWebApi.service">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>

View File

@ -132,17 +132,6 @@ namespace AsbCloudWebApi
app.UseDeveloperExceptionPage();
}
app.UseDefaultFiles();
app.UseStaticFiles(
new StaticFileOptions
{
OnPrepareResponse = ctx =>
{
ctx.Context.Response.Headers.CacheControl = "public,max-age=2592000";
ctx.Context.Response.Headers.Expires = System.DateTime.UtcNow.AddDays(10).ToString("R", System.Globalization.CultureInfo.InvariantCulture);
}
}
);
app.UseCors("ClientPermission");
app.UseRouting();

View File

@ -1 +0,0 @@
<!doctype html><html lang="ru"><head><meta charset="utf-8"/><link rel="icon" href="/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="white"/><meta name="theme-color" media="(prefers-color-scheme: light)" content="white"/><meta name="theme-color" media="(prefers-color-scheme: dark)" content="black"/><meta name="description" content="Онлайн мониторинг процесса бурения в реальном времени в офисе заказчика"/><title>DDrill</title><script defer="defer" src="/runtime~main.5f05be65.js"></script><script defer="defer" src="/vendors.408d069b.js"></script><script defer="defer" src="/main.c3c166db.js"></script></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>