forked from ddrilling/AsbCloudServer
merge dev to subsystem
This commit is contained in:
commit
a0ec08fac5
@ -94,6 +94,26 @@
|
||||
/// НПВ
|
||||
/// </summary>
|
||||
public string Npv { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Проработка перед наращиванием
|
||||
/// </summary>
|
||||
public string ElaborationBeforeBuilding { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Шаблонировка перед наращиванием
|
||||
/// </summary>
|
||||
public string TemplatingBeforeBuilding { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Промывка перед наращиванием
|
||||
/// </summary>
|
||||
public string FlushingBeforeBuilding { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Статический замер телесистемы
|
||||
/// </summary>
|
||||
public string StaticSurveying { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -39,11 +39,6 @@ namespace AsbCloudApp.Data
|
||||
/// </summary>
|
||||
public long Size { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// инфо о публикации файла на гугл диске
|
||||
/// </summary>
|
||||
public FilePublishInfoDto PublishInfo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// DTO автора
|
||||
/// </summary>
|
||||
|
@ -1,25 +0,0 @@
|
||||
using System;
|
||||
|
||||
namespace AsbCloudApp.Data
|
||||
{
|
||||
/// <summary>
|
||||
/// èíôî î ôàéëå íà ãóãë äèñêå
|
||||
/// </summary>
|
||||
public class FilePublishInfoDto
|
||||
{
|
||||
/// <summary>
|
||||
/// Ëîãèí ïîëüçîâàòåëÿ âûëîæèâøåãî ôàéë íà äèñê
|
||||
/// </summary>
|
||||
public string PublisherLogin { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// äàòà ïóáëèêàöèè
|
||||
/// </summary>
|
||||
public DateTime Date { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// ññûëêà äëÿ ñêà÷èâàíèÿ
|
||||
/// </summary>
|
||||
public string WebStorageFileUrl { get; set; }
|
||||
}
|
||||
}
|
@ -15,7 +15,7 @@ namespace AsbCloudApp.Data.SAUB
|
||||
/// <summary>
|
||||
/// метка времени данных (legacy)
|
||||
/// </summary>
|
||||
public DateTime Date // TODO: remove this legacy after all panels updated
|
||||
public DateTime Date // TODO: remove this legacy after all panels updated (> 3.2.0407)
|
||||
{
|
||||
get { return DateTime; }
|
||||
set { DateTime = value; }
|
||||
|
@ -2,6 +2,8 @@
|
||||
|
||||
namespace AsbCloudApp.Data
|
||||
{
|
||||
//todo: добавить валидацию
|
||||
|
||||
/// <summary>
|
||||
/// Операции на скважине (заведенные пользователем)
|
||||
/// </summary>
|
||||
|
@ -12,11 +12,51 @@ namespace AsbCloudApp.Services
|
||||
/// </summary>
|
||||
public interface IDailyReportService
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// получить список сформированных рапортов по скважине за период времени
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="v1"></param>
|
||||
/// <param name="v2"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
Task<IEnumerable<DailyReportDto>> GetListAsync(int idWell, DateTime? v1, DateTime? v2, CancellationToken cancellationToken);
|
||||
|
||||
/// <summary>
|
||||
/// получить из БД или генерировать данные для суточного рапорта за указанную дату
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="date"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<DailyReportDto> GetOrGenerateAsync(int idWell, DateTime date, CancellationToken token);
|
||||
|
||||
/// <summary>
|
||||
/// Добавить новый рапорт
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="dto"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<int> AddAsync(int idWell, DailyReportDto dto, CancellationToken token = default);
|
||||
|
||||
/// <summary>
|
||||
/// изменить данные для суточного рапорта
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="date"></param>
|
||||
/// <param name="dto"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<int> UpdateAsync(int idWell, DateTime date, DailyReportDto dto, CancellationToken token = default);
|
||||
|
||||
/// <summary>
|
||||
/// Сформировать файл рапорта
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="date"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<Stream> MakeReportAsync(int idWell, DateTime date, CancellationToken token = default);
|
||||
}
|
||||
}
|
||||
|
@ -9,7 +9,7 @@ namespace AsbCloudApp.Services
|
||||
/// <summary>
|
||||
/// РТК
|
||||
/// </summary>
|
||||
public interface IDrillFlowChartService : ICrudWellRelatedService<DrillFlowChartDto>
|
||||
public interface IDrillFlowChartRepository : IRepositoryWellRelated<DrillFlowChartDto>
|
||||
{
|
||||
/// <summary>
|
||||
/// Получить параметры бурения начиная с даты.
|
||||
|
@ -19,27 +19,6 @@ namespace AsbCloudApp.Services
|
||||
/// </summary>
|
||||
string RootPath { get; }
|
||||
|
||||
/// <summary>
|
||||
/// получить url Google drive
|
||||
/// </summary>
|
||||
/// <param name="idFileInfo"></param>
|
||||
/// <param name="idUser"></param>
|
||||
/// <param name="fileShareService"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<string> GetSharedUrlAsync(int idFileInfo, int idUser, IFileShareService fileShareService, CancellationToken token);
|
||||
|
||||
/// <summary>
|
||||
/// получить url Google drive
|
||||
/// </summary>
|
||||
/// <param name="dto"></param>
|
||||
/// <param name="idUser"></param>
|
||||
/// <param name="fileShareService"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<string> GetSharedUrlAsync(FileInfoDto dto, int idUser, IFileShareService fileShareService,
|
||||
CancellationToken token = default);
|
||||
|
||||
/// <summary>
|
||||
/// Сохранить файл
|
||||
/// </summary>
|
||||
|
@ -1,32 +0,0 @@
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AsbCloudApp.Services
|
||||
{
|
||||
//TODO: Óäàëèòü ýòîò ôóíêöèîíàë
|
||||
|
||||
/// <summary>
|
||||
/// Ñåðâèñ âûêëàäûâàíèÿ ôàéëà íà Google disk
|
||||
/// </summary>
|
||||
public interface IFileShareService
|
||||
{
|
||||
/// <summary>
|
||||
/// Îïóáëèêîâàòü
|
||||
/// </summary>
|
||||
/// <param name="filePath"></param>
|
||||
/// <param name="originalName"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<string> PublishFileToCloudAsync(string filePath, string originalName,
|
||||
CancellationToken token);
|
||||
|
||||
/// <summary>
|
||||
/// Óäàëèòü ïóáëèêàöèþ
|
||||
/// </summary>
|
||||
/// <param name="sharedFileId"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task DeleteFileAsync(string sharedFileId,
|
||||
CancellationToken token = default);
|
||||
}
|
||||
}
|
@ -7,14 +7,36 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace AsbCloudApp.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// Сервис сообщений панели оператора
|
||||
/// </summary>
|
||||
public interface IMessageService
|
||||
{
|
||||
/// <summary>
|
||||
/// Получить сообщения по параметрам
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="categoryids"></param>
|
||||
/// <param name="begin"></param>
|
||||
/// <param name="end"></param>
|
||||
/// <param name="searchString"></param>
|
||||
/// <param name="skip"></param>
|
||||
/// <param name="take"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<PaginationContainer<MessageDto>> GetMessagesAsync(int idWell,
|
||||
IEnumerable<int> categoryids = default, DateTime begin = default,
|
||||
DateTime end = default, string searchString = default,
|
||||
int skip = 0, int take = 32,
|
||||
CancellationToken token = default);
|
||||
|
||||
/// <summary>
|
||||
/// Метод для сохранения сообщения от панели
|
||||
/// </summary>
|
||||
/// <param name="uid"></param>
|
||||
/// <param name="dtos"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task InsertAsync(string uid, IEnumerable<TelemetryMessageDto> dtos,
|
||||
CancellationToken token);
|
||||
}
|
||||
|
@ -1,8 +0,0 @@
|
||||
using AsbCloudApp.Data;
|
||||
|
||||
namespace AsbCloudApp.Services
|
||||
{
|
||||
public interface IOperationValueService : ICrudWellRelatedService<OperationValueDto>
|
||||
{
|
||||
}
|
||||
}
|
@ -5,12 +5,50 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace AsbCloudApp.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// Сервис расчета статистики по операциям вводимым вручную
|
||||
/// </summary>
|
||||
public interface IOperationsStatService
|
||||
{
|
||||
/// <summary>
|
||||
/// Получить статистику МСП по кусту в котором находится скважина с IdWell
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<ClusterRopStatDto> GetRopStatAsync(int idWell, CancellationToken token);
|
||||
|
||||
/// <summary>
|
||||
/// Получить статистику по скважинам куста, которые доступны компании
|
||||
/// </summary>
|
||||
/// <param name="idCluster"></param>
|
||||
/// <param name="idCompany"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<StatClusterDto> GetStatClusterAsync(int idCluster, int idCompany, CancellationToken token = default);
|
||||
|
||||
/// <summary>
|
||||
/// получить статистику по скважине
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<StatWellDto> GetWellStatAsync(int idWell, CancellationToken token = default);
|
||||
|
||||
/// <summary>
|
||||
/// Получить данные для графика TVD
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<IEnumerable<PlanFactPredictBase<WellOperationDto>>> GetTvdAsync(int idWell, CancellationToken token);
|
||||
|
||||
/// <summary>
|
||||
/// Получить статистику по набору скважин
|
||||
/// </summary>
|
||||
/// <param name="idWells"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<IEnumerable<StatWellDto>> GetWellsStatAsync(IEnumerable<int> idWells, CancellationToken token);
|
||||
}
|
||||
}
|
||||
|
@ -1,10 +0,0 @@
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AsbCloudApp.Services
|
||||
{
|
||||
public interface IPaginationService<Tdto>
|
||||
{
|
||||
Task<Data.PaginationContainer<Tdto>> GetPageAsync(int skip = 0, int take = 32, CancellationToken token = default);
|
||||
}
|
||||
}
|
@ -6,15 +6,57 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace AsbCloudApp.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// Сервис рапортов
|
||||
/// </summary>
|
||||
public interface IReportService
|
||||
{
|
||||
/// <summary>
|
||||
/// категория рапорта
|
||||
/// </summary>
|
||||
int ReportCategoryId { get; }
|
||||
|
||||
// TODO: rename this method
|
||||
/// <summary>
|
||||
/// Поставить рапорт в очередь на формирование
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="idUser"></param>
|
||||
/// <param name="stepSeconds"></param>
|
||||
/// <param name="format"></param>
|
||||
/// <param name="begin"></param>
|
||||
/// <param name="end"></param>
|
||||
/// <param name="handleReportProgress"></param>
|
||||
/// <returns></returns>
|
||||
string CreateReport(int idWell, int idUser, int stepSeconds,
|
||||
int format, DateTime begin, DateTime end,
|
||||
Action<object, string> handleReportProgress);
|
||||
|
||||
/// <summary>
|
||||
/// Получить предполагаемый список страниц рапорта
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="begin"></param>
|
||||
/// <param name="end"></param>
|
||||
/// <param name="stepSeconds"></param>
|
||||
/// <param name="format"></param>
|
||||
/// <returns></returns>
|
||||
int GetReportPagesCount(int idWell, DateTime begin, DateTime end,
|
||||
int stepSeconds, int format);
|
||||
|
||||
/// <summary>
|
||||
/// получить диапазон дат за которые есть данные
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <returns></returns>
|
||||
DatesRangeDto GetDatesRangeOrDefault(int idWell);
|
||||
|
||||
/// <summary>
|
||||
/// Список готовых рапортов
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<IEnumerable<ReportPropertiesDto>> GetAllReportsByWellAsync(int idWell, CancellationToken token);
|
||||
}
|
||||
}
|
||||
|
@ -1,11 +0,0 @@
|
||||
using System;
|
||||
|
||||
namespace AsbCloudApp.Services
|
||||
{
|
||||
public interface IReportsBackgroundQueue
|
||||
{
|
||||
int EnqueueTask(Action<int> action);
|
||||
|
||||
bool TryDequeue(out (Action<int> action, int id) item);
|
||||
}
|
||||
}
|
@ -5,12 +5,13 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace AsbCloudApp.Services
|
||||
{
|
||||
#nullable enable
|
||||
/// <summary>
|
||||
/// Сервис получения, добавления, изменения, удаления данных<br/>
|
||||
/// Репозиторий получения, добавления, изменения, удаления данных<br/>
|
||||
/// Для сущностей относящихся к скважине
|
||||
/// </summary>
|
||||
/// <typeparam name="Tdto"></typeparam>
|
||||
public interface ICrudWellRelatedService<Tdto> : ICrudService<Tdto>
|
||||
public interface IRepositoryWellRelated<Tdto> : ICrudService<Tdto>
|
||||
where Tdto : IId, IWellRelated
|
||||
{
|
||||
/// <summary>
|
||||
@ -19,7 +20,7 @@ namespace AsbCloudApp.Services
|
||||
/// <param name="idWell">id скважины</param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns>emptyList if nothing found</returns>
|
||||
Task<IEnumerable<Tdto>> GetByIdWellAsync(int idWell, CancellationToken token);
|
||||
Task<IEnumerable<Tdto>?> GetByIdWellAsync(int idWell, CancellationToken token);
|
||||
|
||||
/// <summary>
|
||||
/// Получение всех записей по нескольким скважинам
|
||||
@ -27,7 +28,7 @@ namespace AsbCloudApp.Services
|
||||
/// <param name="idsWells">id скважин</param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns>emptyList if nothing found</returns>
|
||||
Task<IEnumerable<Tdto>> GetByIdWellAsync(IEnumerable<int> idsWells, CancellationToken token);
|
||||
Task<IEnumerable<Tdto>?> GetByIdWellAsync(IEnumerable<int> idsWells, CancellationToken token);
|
||||
}
|
||||
#nullable disable
|
||||
}
|
@ -4,14 +4,59 @@ using System.Collections.Generic;
|
||||
|
||||
namespace AsbCloudApp.Services
|
||||
{
|
||||
// TODO: make this nullable
|
||||
|
||||
/// <summary>
|
||||
/// Отслеживание и сбор статистики по запросам
|
||||
/// </summary>
|
||||
public interface IRequerstTrackerService
|
||||
{
|
||||
/// <summary>
|
||||
/// Регистрирует новый запрос
|
||||
/// </summary>
|
||||
/// <param name="requestLog"></param>
|
||||
void RegisterRequest(RequestLogDto requestLog);
|
||||
|
||||
/// <summary>
|
||||
/// Регистрирует новый запрос, вызвавший ошибку на сервере
|
||||
/// </summary>
|
||||
/// <param name="requestLog"></param>
|
||||
/// <param name="ex"></param>
|
||||
void RegisterRequestError(RequestLogDto requestLog, Exception ex);
|
||||
|
||||
/// <summary>
|
||||
/// все зарегистрированные запросы
|
||||
/// </summary>
|
||||
/// <param name="take"></param>
|
||||
/// <returns></returns>
|
||||
IEnumerable<RequestLogDto> GetAll(int take = -1);
|
||||
|
||||
/// <summary>
|
||||
/// запросы которые выполнялись быстро
|
||||
/// </summary>
|
||||
/// <param name="take"></param>
|
||||
/// <returns></returns>
|
||||
IEnumerable<RequestLogDto> GetFast(int take = -1);
|
||||
|
||||
/// <summary>
|
||||
/// запросы, которые выполнялись медленно
|
||||
/// </summary>
|
||||
/// <param name="take"></param>
|
||||
/// <returns></returns>
|
||||
IEnumerable<RequestLogDto> GetSlow(int take = -1);
|
||||
|
||||
/// <summary>
|
||||
/// запросы, которые завершились ошибкой
|
||||
/// </summary>
|
||||
/// <param name="take"></param>
|
||||
/// <returns></returns>
|
||||
IEnumerable<RequestLogDto> GetError(int take = -1);
|
||||
|
||||
/// <summary>
|
||||
/// Статистика посещений пользователей
|
||||
/// </summary>
|
||||
/// <param name="take"></param>
|
||||
/// <returns></returns>
|
||||
IEnumerable<RequestLogUserDto> GetUsersStat(int take = -1);
|
||||
}
|
||||
}
|
||||
|
@ -4,8 +4,17 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace AsbCloudApp.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// Сервис формирования Сетевого графика.
|
||||
/// </summary>
|
||||
public interface IScheduleReportService
|
||||
{
|
||||
/// <summary>
|
||||
/// Сформировать.
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<Stream> MakeReportAsync(int idWell, CancellationToken token = default);
|
||||
}
|
||||
}
|
@ -5,8 +5,19 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace AsbCloudApp.Services
|
||||
{
|
||||
public interface IScheduleService : ICrudWellRelatedService<ScheduleDto>
|
||||
/// <summary>
|
||||
/// Репозиторий расписания смен бурильщика
|
||||
/// </summary>
|
||||
public interface IScheduleRepository : IRepositoryWellRelated<ScheduleDto>
|
||||
{
|
||||
// TODO: this should be nullable.
|
||||
/// <summary>
|
||||
/// получить бурильщика по idWell и времени
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="workTime"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<DrillerDto> GetDrillerAsync(int idWell, DateTime workTime, CancellationToken token);
|
||||
}
|
||||
}
|
||||
|
@ -5,13 +5,55 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace AsbCloudApp.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// Сервис рекомендаций новых уставок для панели оператора САУБ
|
||||
/// </summary>
|
||||
public interface ISetpointsService
|
||||
{
|
||||
/// <summary>
|
||||
/// Добавить новый набор рекомендаций
|
||||
/// </summary>
|
||||
/// <param name="setpoints"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<int> InsertAsync(SetpointsRequestDto setpoints, CancellationToken token);
|
||||
|
||||
/// <summary>
|
||||
/// Получить наборы уставок на скважине
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<IEnumerable<SetpointsRequestDto>> GetAsync(int idWell, CancellationToken token);
|
||||
|
||||
/// <summary>
|
||||
/// Скачать новые рекомендации (скачивает панель оператора)
|
||||
/// </summary>
|
||||
/// <param name="uid"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<IEnumerable<SetpointsRequestDto>> GetForPanelAsync(string uid, CancellationToken token);
|
||||
|
||||
/// <summary>
|
||||
/// Попробовать удалить (успешно, если панель еще не забрала уставки)
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<int> TryDelete(int id, CancellationToken token);
|
||||
|
||||
/// <summary>
|
||||
/// отредактировать состояние набора рекомендаций
|
||||
/// </summary>
|
||||
/// <param name="setpointsRequestDto"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<int> UpdateStateAsync(SetpointsRequestDto setpointsRequestDto, CancellationToken token);
|
||||
|
||||
/// <summary>
|
||||
/// Список уставок для рекомендаций
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
IEnumerable<SetpointInfoDto> GetSetpointsNames();
|
||||
}
|
||||
}
|
||||
|
@ -6,12 +6,33 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace AsbCloudApp.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// сервис данных тех. процесса
|
||||
/// </summary>
|
||||
/// <typeparam name="TDto"></typeparam>
|
||||
public interface ITelemetryDataService<TDto> where TDto : ITelemetryData
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// получить данные тех. процесса
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="dateBegin"></param>
|
||||
/// <param name="intervalSec"></param>
|
||||
/// <param name="approxPointsCount">кол-во элементов до которых эти данные прореживаются</param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<IEnumerable<TDto>> GetAsync(int idWell,
|
||||
DateTime dateBegin = default, double intervalSec = 600d,
|
||||
int approxPointsCount = 1024, CancellationToken token = default);
|
||||
|
||||
/// <summary>
|
||||
/// добавить/изменить данные тех. процесса (используется панелью)
|
||||
/// </summary>
|
||||
/// <param name="uid"></param>
|
||||
/// <param name="dtos"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<int> UpdateDataAsync(string uid, IEnumerable<TDto> dtos, CancellationToken token = default);
|
||||
}
|
||||
}
|
@ -7,18 +7,89 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace AsbCloudApp.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// Сервис телеметрии
|
||||
/// </summary>
|
||||
public interface ITelemetryService
|
||||
{
|
||||
/// <summary>
|
||||
/// сервис временных зон
|
||||
/// </summary>
|
||||
ITimezoneService TimeZoneService { get; }
|
||||
|
||||
/// <summary>
|
||||
/// трекер запросов
|
||||
/// </summary>
|
||||
ITelemetryTracker TelemetryTracker { get; }
|
||||
|
||||
/// <summary>
|
||||
/// получить idWell по uid телеметрии
|
||||
/// </summary>
|
||||
/// <param name="uid"></param>
|
||||
/// <returns></returns>
|
||||
int? GetIdWellByTelemetryUid(string uid);
|
||||
|
||||
/// <summary>
|
||||
/// Получить id телеметрии. Если её нет в БД, то добавить новую.
|
||||
/// </summary>
|
||||
/// <param name="uid"></param>
|
||||
/// <returns></returns>
|
||||
int GetOrCreateTelemetryIdByUid(string uid);
|
||||
|
||||
/// <summary>
|
||||
/// получить временную зону скважины по idTelemetry
|
||||
/// </summary>
|
||||
/// <param name="idTelemetry"></param>
|
||||
/// <returns></returns>
|
||||
SimpleTimezoneDto GetTimezone(int idTelemetry);
|
||||
|
||||
// TODO: вероятно лишнее
|
||||
/// <summary>
|
||||
/// Список передающих в данный момент телеметрий
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
IEnumerable<TelemetryDto> GetTransmittingTelemetries();
|
||||
|
||||
// TODO: вероятно лишнее
|
||||
/// <summary>
|
||||
/// Получить дату получения последних данных
|
||||
/// </summary>
|
||||
/// <param name="idTelemetry"></param>
|
||||
/// <param name="useUtc"></param>
|
||||
/// <returns></returns>
|
||||
DateTime GetLastTelemetryDate(int idTelemetry, bool useUtc = false);
|
||||
|
||||
/// <summary>
|
||||
/// получить idTelemetry по IdWell
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <returns></returns>
|
||||
int? GetIdTelemetryByIdWell(int idWell);
|
||||
|
||||
/// <summary>
|
||||
/// получить диапазон дат за которые есть данные
|
||||
/// </summary>
|
||||
/// <param name="idTelemetry"></param>
|
||||
/// <returns></returns>
|
||||
DatesRangeDto GetDatesRange(int idTelemetry);
|
||||
|
||||
/// <summary>
|
||||
/// обновить данные о телеметрии (используется панелью)
|
||||
/// </summary>
|
||||
/// <param name="uid"></param>
|
||||
/// <param name="info"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task UpdateInfoAsync(string uid, TelemetryInfoDto info, CancellationToken token);
|
||||
|
||||
// TODO: вероятно лишнее
|
||||
/// <summary>
|
||||
/// обновить данные о временной зоне (используется панелью)
|
||||
/// </summary>
|
||||
/// <param name="uid"></param>
|
||||
/// <param name="telemetryTimeZoneInfo"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task UpdateTimezoneAsync(string uid, SimpleTimezoneDto telemetryTimeZoneInfo, CancellationToken token);
|
||||
|
||||
/// <summary>
|
||||
@ -29,6 +100,13 @@ namespace AsbCloudApp.Services
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<int> MergeAsync(int from, int to, CancellationToken token);
|
||||
|
||||
// TODO: вероятно лишнее
|
||||
/// <summary>
|
||||
/// сохранить данные о запросе
|
||||
/// </summary>
|
||||
/// <param name="uid"></param>
|
||||
/// <param name="remoteDate"></param>
|
||||
void SaveRequestDate(string uid, DateTimeOffset remoteDate);
|
||||
}
|
||||
}
|
@ -4,11 +4,36 @@ using System.Collections.Generic;
|
||||
|
||||
namespace AsbCloudApp.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// Сервис статистики телеметрии
|
||||
/// </summary>
|
||||
public interface ITelemetryTracker
|
||||
{
|
||||
/// <summary>
|
||||
/// получить дату последней отправки данных панелью
|
||||
/// </summary>
|
||||
/// <param name="uid"></param>
|
||||
/// <returns></returns>
|
||||
DateTimeOffset GetLastTelemetryDateByUid(string uid);
|
||||
|
||||
/// <summary>
|
||||
/// получить диапазон дат за которые есть данные по телеметрии
|
||||
/// </summary>
|
||||
/// <param name="uid"></param>
|
||||
/// <returns></returns>
|
||||
DatesRangeDto GetTelemetryDateRangeByUid(string uid);
|
||||
|
||||
/// <summary>
|
||||
/// список передающих телеметрий
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
IEnumerable<string> GetTransmittingTelemetriesUids();
|
||||
|
||||
/// <summary>
|
||||
/// обновить статистику по телеметрии
|
||||
/// </summary>
|
||||
/// <param name="uid"></param>
|
||||
/// <param name="remoteDate"></param>
|
||||
void SaveRequestDate(string uid, DateTimeOffset remoteDate);
|
||||
}
|
||||
}
|
||||
|
@ -5,8 +5,18 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace AsbCloudApp.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// сервис пользователей телеметрии
|
||||
/// </summary>
|
||||
public interface ITelemetryUserService
|
||||
{
|
||||
/// <summary>
|
||||
/// получает и сохраняет/обновляет список пользователей панели оператора
|
||||
/// </summary>
|
||||
/// <param name="uid"></param>
|
||||
/// <param name="dtos"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task UpsertAsync(string uid, IEnumerable<TelemetryUserDto> dtos, CancellationToken token = default);
|
||||
}
|
||||
}
|
@ -4,9 +4,26 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace AsbCloudApp.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// сервис определения временной зоны
|
||||
/// </summary>
|
||||
public interface ITimezoneService
|
||||
{
|
||||
/// <summary>
|
||||
/// по координатам
|
||||
/// </summary>
|
||||
/// <param name="latitude"></param>
|
||||
/// <param name="longitude"></param>
|
||||
/// <returns></returns>
|
||||
SimpleTimezoneDto GetByCoordinates(double latitude, double longitude);
|
||||
|
||||
/// <summary>
|
||||
/// по координатам
|
||||
/// </summary>
|
||||
/// <param name="latitude"></param>
|
||||
/// <param name="longitude"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<Data.SimpleTimezoneDto> GetByCoordinatesAsync(double latitude, double longitude, CancellationToken token);
|
||||
}
|
||||
}
|
@ -5,11 +5,34 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace AsbCloudApp.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// Репозиторий ролей пользователя
|
||||
/// </summary>
|
||||
public interface IUserRoleService : ICrudService<UserRoleDto>
|
||||
{
|
||||
Task<UserRoleDto> GetByNameAsync(string name, CancellationToken token = default);
|
||||
// todo: переименовать
|
||||
/// <summary>
|
||||
/// получить dto по названиям
|
||||
/// </summary>
|
||||
/// <param name="names"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<IEnumerable<UserRoleDto>> GetByNamesAsync(IEnumerable<string> names, CancellationToken token = default);
|
||||
|
||||
/// <summary>
|
||||
/// получить все вложенные разрешения
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <param name="counter"></param>
|
||||
/// <returns></returns>
|
||||
IEnumerable<UserRoleDto> GetNestedById(int id, int counter = 10);
|
||||
|
||||
/// <summary>
|
||||
/// определяет содержится ли разрешение в одной из указанных ролей
|
||||
/// </summary>
|
||||
/// <param name="rolesIds"></param>
|
||||
/// <param name="permissionName"></param>
|
||||
/// <returns></returns>
|
||||
bool HasPermission(IEnumerable<int> rolesIds, string permissionName);
|
||||
}
|
||||
}
|
@ -3,13 +3,37 @@ using System.Collections.Generic;
|
||||
|
||||
namespace AsbCloudApp.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// Сервис пользователей
|
||||
/// </summary>
|
||||
public interface IUserService : ICrudService<UserExtendedDto>
|
||||
{
|
||||
/// <summary>
|
||||
/// Сервис ролей
|
||||
/// </summary>
|
||||
IUserRoleService RoleService { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Получить список всех прав пользователя (включая наследование групп)
|
||||
/// </summary>
|
||||
/// <param name="idUser"></param>
|
||||
/// <returns></returns>
|
||||
IEnumerable<PermissionDto> GetNestedPermissions(int idUser);
|
||||
|
||||
/// <summary>
|
||||
/// Получить список ролей пользователя (включая наследование)
|
||||
/// </summary>
|
||||
/// <param name="idUser"></param>
|
||||
/// <param name="nestedLevel"></param>
|
||||
/// <returns></returns>
|
||||
IEnumerable<UserRoleDto> GetRolesByIdUser(int idUser, int nestedLevel = 0);
|
||||
bool HasAnyRoleOf(int idUser, IEnumerable<string> roleNames);
|
||||
bool HasAnyRoleOf(int idUser, IEnumerable<int> roleIds);
|
||||
|
||||
/// <summary>
|
||||
/// определяет есть ли у пользователя указанное разрешение
|
||||
/// </summary>
|
||||
/// <param name="idUser"></param>
|
||||
/// <param name="permissionName"></param>
|
||||
/// <returns></returns>
|
||||
public bool HasPermission(int idUser, string permissionName);
|
||||
}
|
||||
}
|
||||
|
@ -3,13 +3,47 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace AsbCloudApp.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// репозиторий для личных настроек пользователя
|
||||
/// </summary>
|
||||
public interface IUserSettingsRepository
|
||||
{
|
||||
/// <summary>
|
||||
/// код ошибки: ключ не найден
|
||||
/// </summary>
|
||||
public const int ErrorKeyNotFound = -1;
|
||||
|
||||
/// <summary>
|
||||
/// код ошибки: ключ уже занят
|
||||
/// </summary>
|
||||
public const int ErrorKeyIsUsed = -2;
|
||||
Task<object> GetOrDefaultAsync(int userId, string key, CancellationToken token);
|
||||
Task<int> InsertAsync(int userId, string key, object value, CancellationToken token);
|
||||
Task<int> UpdateAsync(int userId, string key, object value, CancellationToken token);
|
||||
|
||||
/// <summary>
|
||||
/// Получить настройки по ключу для пользователя
|
||||
/// </summary>
|
||||
/// <param name="userId"></param>
|
||||
/// <param name="key"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<System.Text.Json.JsonDocument> GetOrDefaultAsync(int userId, string key, CancellationToken token);
|
||||
|
||||
/// <summary>
|
||||
/// Добавить или изменить настройки с ключем для пользователя
|
||||
/// </summary>
|
||||
/// <param name="userId"></param>
|
||||
/// <param name="key"></param>
|
||||
/// <param name="value"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<int> UpsertAsync(int userId, string key, System.Text.Json.JsonDocument value, CancellationToken token);
|
||||
|
||||
/// <summary>
|
||||
/// Удалить настройки с ключем для пользователя
|
||||
/// </summary>
|
||||
/// <param name="userId"></param>
|
||||
/// <param name="key"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<int> DeleteAsync(int userId, string key, CancellationToken token);
|
||||
}
|
||||
}
|
@ -5,9 +5,26 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace AsbCloudApp.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// Сервис создания композитной скважины
|
||||
/// </summary>
|
||||
public interface IWellCompositeService
|
||||
{
|
||||
/// <summary>
|
||||
/// Получить секции композитной скважины
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="cancellationToken"></param>
|
||||
/// <returns></returns>
|
||||
Task<IEnumerable<WellCompositeDto>> GetAsync(int idWell, CancellationToken cancellationToken);
|
||||
|
||||
/// <summary>
|
||||
/// сохранить секции композитной скважины
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="wellComposites"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<int> SaveAsync(int idWell, IEnumerable<WellCompositeDto> wellComposites, CancellationToken token);
|
||||
}
|
||||
}
|
||||
|
@ -2,10 +2,30 @@
|
||||
|
||||
namespace AsbCloudApp.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// сервис импорта/экспорта операций по скважине вводимых вручную
|
||||
/// </summary>
|
||||
public interface IWellOperationImportService
|
||||
{
|
||||
/// <summary>
|
||||
/// скачать в excel
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <returns></returns>
|
||||
Stream Export(int idWell);
|
||||
|
||||
/// <summary>
|
||||
/// скачать шаблон для заполнения
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
Stream GetExcelTemplateStream();
|
||||
|
||||
/// <summary>
|
||||
/// закгрузить из excel список операций
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="stream"></param>
|
||||
/// <param name="deleteWellOperationsBeforeImport">Очистить старые перед импортом (если файл проходит валидацию)</param>
|
||||
void Import(int idWell, Stream stream, bool deleteWellOperationsBeforeImport = false);
|
||||
}
|
||||
}
|
@ -6,10 +6,33 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace AsbCloudApp.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// сервис операций по скважине
|
||||
/// </summary>
|
||||
public interface IWellOperationService
|
||||
{
|
||||
/// <summary>
|
||||
/// список названий операций
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
IEnumerable<WellOperationCategoryDto> GetCategories();
|
||||
|
||||
// TODO: объединить параметры в объект запроса
|
||||
/// <summary>
|
||||
/// Получить список операций
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="operationType"></param>
|
||||
/// <param name="sectionTypeIds"></param>
|
||||
/// <param name="operationCategoryIds"></param>
|
||||
/// <param name="begin"></param>
|
||||
/// <param name="end"></param>
|
||||
/// <param name="minDepth"></param>
|
||||
/// <param name="maxDepth"></param>
|
||||
/// <param name="skip"></param>
|
||||
/// <param name="take"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<PaginationContainer<WellOperationDto>> GetOperationsAsync(
|
||||
int idWell,
|
||||
int? operationType = null,
|
||||
@ -23,16 +46,56 @@ namespace AsbCloudApp.Services
|
||||
int take = 32,
|
||||
CancellationToken token = default);
|
||||
|
||||
/// <summary>
|
||||
/// Получить операцию по id
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<WellOperationDto> GetAsync(int id, CancellationToken token);
|
||||
|
||||
//todo: idWell Не нужен
|
||||
/// <summary>
|
||||
/// Добавить несколько операций за один раз
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="wellOperationDtos"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<int> InsertRangeAsync(int idWell,
|
||||
IEnumerable<WellOperationDto> wellOperationDtos, CancellationToken token);
|
||||
|
||||
//todo: id Не нужны
|
||||
/// <summary>
|
||||
/// Обновить существующую операцию
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="idOperation"></param>
|
||||
/// <param name="item"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<int> UpdateAsync(int idWell, int idOperation, WellOperationDto item,
|
||||
CancellationToken token);
|
||||
|
||||
/// <summary>
|
||||
/// Удалить операции по id
|
||||
/// </summary>
|
||||
/// <param name="ids"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<int> DeleteAsync(IEnumerable<int> ids, CancellationToken token);
|
||||
|
||||
/// <summary>
|
||||
/// Список секций
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
IDictionary<int, string> GetSectionTypes();
|
||||
|
||||
/// <summary>
|
||||
/// дата/время первой операции по скважине
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <returns></returns>
|
||||
DateTimeOffset? FirstOperationDate(int idWell);
|
||||
}
|
||||
}
|
||||
|
@ -6,21 +6,100 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace AsbCloudApp.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// сервис скважин
|
||||
/// </summary>
|
||||
public interface IWellService : ICrudService<WellDto>
|
||||
{
|
||||
/// <summary>
|
||||
/// сервис телеметрии
|
||||
/// </summary>
|
||||
ITelemetryService TelemetryService { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Список скважин доступных компании
|
||||
/// </summary>
|
||||
/// <param name="idCompany"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<IEnumerable<WellDto>> GetWellsByCompanyAsync(int idCompany, CancellationToken token);
|
||||
|
||||
/// <summary>
|
||||
/// проверяет доступ к скважине для компании
|
||||
/// </summary>
|
||||
/// <param name="idCompany"></param>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<bool> IsCompanyInvolvedInWellAsync(int idCompany, int idWell, CancellationToken token);
|
||||
Task<string> GetWellCaptionByIdAsync(int idWell, CancellationToken token);
|
||||
//TODO: remove that
|
||||
Task<IEnumerable<CompanyDto>> GetCompaniesAsync(int idWell, CancellationToken token);
|
||||
|
||||
/// <summary>
|
||||
/// проверяет доступ к скважине для компании
|
||||
/// </summary>
|
||||
/// <param name="idCompany"></param>
|
||||
/// <param name="idWell"></param>
|
||||
/// <returns></returns>
|
||||
bool IsCompanyInvolvedInWell(int idCompany, int idWell);
|
||||
|
||||
/// <summary>
|
||||
/// получить название скважины по id
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<string> GetWellCaptionByIdAsync(int idWell, CancellationToken token);
|
||||
|
||||
/// <summary>
|
||||
/// список компаний участвующих в скважине
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<IEnumerable<CompanyDto>> GetCompaniesAsync(int idWell, CancellationToken token);
|
||||
|
||||
//TODO: remove that
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="state"></param>
|
||||
/// <returns></returns>
|
||||
string GetStateText(int state);
|
||||
|
||||
/// <summary>
|
||||
/// дата получения последних данных от панели
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <returns></returns>
|
||||
DateTimeOffset GetLastTelemetryDate(int idWell);
|
||||
|
||||
//TODO: выяснить и удалить отсюда
|
||||
/// <summary>
|
||||
/// получение списка скважин куста в котором находится указанная скважина
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<IEnumerable<int>> GetClusterWellsIdsAsync(int idWell, CancellationToken token);
|
||||
SimpleTimezoneDto GetTimezone(int idWell);
|
||||
|
||||
/// <summary>
|
||||
/// часовой пояс скважины
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <returns></returns>
|
||||
SimpleTimezoneDto GetTimezone(int idWell);
|
||||
|
||||
/// <summary>
|
||||
/// диапазон дат с данными телеметрии
|
||||
/// </summary>
|
||||
/// <param name="idWell"></param>
|
||||
/// <returns></returns>
|
||||
DatesRangeDto GetDatesRange(int idWell);
|
||||
|
||||
/// <summary>
|
||||
/// Проверить задан ли у скважины часовой пояс и задать его если он не задан
|
||||
/// </summary>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task EnshureTimezonesIsSetAsync(CancellationToken token);
|
||||
}
|
||||
}
|
||||
|
@ -4,7 +4,7 @@ using System.Collections.Concurrent;
|
||||
namespace AsbCloudApp.Services
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// Репозиторий для хранения в оперативке данных (от панели)
|
||||
/// </summary>
|
||||
public class InstantDataRepository : ConcurrentDictionary<int, ConcurrentDictionary<Type, object>>
|
||||
{
|
||||
|
6294
AsbCloudDb/Migrations/20220808122212_Rename_WellOperations_key_param_name.Designer.cs
generated
Normal file
6294
AsbCloudDb/Migrations/20220808122212_Rename_WellOperations_key_param_name.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,995 @@
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace AsbCloudDb.Migrations
|
||||
{
|
||||
public partial class Rename_WellOperations_key_param_name : Migration
|
||||
{
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 4,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 5,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 6,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 7,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 8,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 9,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 10,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 11,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 12,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 13,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 14,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 15,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 16,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 17,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 18,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 19,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 20,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 21,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 22,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1002,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1003,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1004,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1005,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1006,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1007,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1008,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1011,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1012,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1013,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1014,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1015,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1016,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1017,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1018,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1019,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1020,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1021,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1022,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1023,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1024,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1025,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1026,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1027,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1028,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1029,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1030,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1031,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1032,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1033,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1034,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1035,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1037,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1038,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1039,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1040,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1041,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1042,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1043,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1044,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1045,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1046,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1047,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1048,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1050,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1051,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1052,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1053,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1054,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1055,
|
||||
column: "key_value_name",
|
||||
value: "dT");
|
||||
}
|
||||
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 4,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 5,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 6,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 7,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 8,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 9,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 10,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 11,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 12,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 13,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 14,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 15,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 16,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 17,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 18,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 19,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 20,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 21,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 22,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1002,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1003,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1004,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1005,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1006,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1007,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1008,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1011,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1012,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1013,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1014,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1015,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1016,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1017,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1018,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1019,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1020,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1021,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1022,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1023,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1024,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1025,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1026,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1027,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1028,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1029,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1030,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1031,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1032,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1033,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1034,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1035,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1037,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1038,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1039,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1040,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1041,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1042,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1043,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1044,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1045,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1046,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1047,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1048,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1050,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1051,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1052,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1053,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1054,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 1055,
|
||||
column: "key_value_name",
|
||||
value: "Продолжительность");
|
||||
}
|
||||
}
|
||||
}
|
6300
AsbCloudDb/Migrations/20220809123505_Add_IdReasonOfEnd_to_DetectedOperation.Designer.cs
generated
Normal file
6300
AsbCloudDb/Migrations/20220809123505_Add_IdReasonOfEnd_to_DetectedOperation.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,27 @@
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace AsbCloudDb.Migrations
|
||||
{
|
||||
public partial class Add_IdReasonOfEnd_to_DetectedOperation : Migration
|
||||
{
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.AddColumn<int>(
|
||||
name: "id_reason_of_end",
|
||||
table: "t_detected_operation",
|
||||
type: "integer",
|
||||
nullable: false,
|
||||
defaultValue: 0,
|
||||
comment: "Код признака окончания операции");
|
||||
}
|
||||
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropColumn(
|
||||
name: "id_reason_of_end",
|
||||
table: "t_detected_operation");
|
||||
}
|
||||
}
|
||||
}
|
6308
AsbCloudDb/Migrations/20220810102038_Add_new_operation_DetectorTemplatingWhileDrilling.Designer.cs
generated
Normal file
6308
AsbCloudDb/Migrations/20220810102038_Add_new_operation_DetectorTemplatingWhileDrilling.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,25 @@
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace AsbCloudDb.Migrations
|
||||
{
|
||||
public partial class Add_new_operation_DetectorTemplatingWhileDrilling : Migration
|
||||
{
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.InsertData(
|
||||
table: "t_well_operation_category",
|
||||
columns: new[] { "id", "code", "key_value_name", "key_value_units", "name" },
|
||||
values: new object[] { 23, 0, "dT", "мин", "Шаблонировка при бурении" });
|
||||
}
|
||||
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DeleteData(
|
||||
table: "t_well_operation_category",
|
||||
keyColumn: "id",
|
||||
keyValue: 23);
|
||||
}
|
||||
}
|
||||
}
|
6303
AsbCloudDb/Migrations/20220811101026_Remove_fileShare_service.Designer.cs
generated
Normal file
6303
AsbCloudDb/Migrations/20220811101026_Remove_fileShare_service.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,26 @@
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace AsbCloudDb.Migrations
|
||||
{
|
||||
public partial class Remove_fileShare_service : Migration
|
||||
{
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropColumn(
|
||||
name: "publish_info",
|
||||
table: "t_file_info");
|
||||
}
|
||||
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "publish_info",
|
||||
table: "t_file_info",
|
||||
type: "jsonb",
|
||||
nullable: true,
|
||||
comment: "Информация о файле в облаке");
|
||||
}
|
||||
}
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
// <auto-generated />
|
||||
using System;
|
||||
using System.Text.Json;
|
||||
using AsbCloudDb.Model;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||
@ -229,6 +230,11 @@ namespace AsbCloudDb.Migrations
|
||||
.HasColumnName("id_category")
|
||||
.HasComment("Id категории операции");
|
||||
|
||||
b.Property<int>("IdReasonOfEnd")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("id_reason_of_end")
|
||||
.HasComment("Код признака окончания операции");
|
||||
|
||||
b.Property<int>("IdTelemetry")
|
||||
.HasColumnType("integer")
|
||||
.HasColumnName("id_telemetry");
|
||||
@ -703,11 +709,6 @@ namespace AsbCloudDb.Migrations
|
||||
.HasColumnName("name")
|
||||
.HasComment("Название файла");
|
||||
|
||||
b.Property<string>("PublishInfo")
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("publish_info")
|
||||
.HasComment("Информация о файле в облаке");
|
||||
|
||||
b.Property<long>("Size")
|
||||
.HasColumnType("bigint")
|
||||
.HasColumnName("file_size")
|
||||
@ -4040,7 +4041,7 @@ namespace AsbCloudDb.Migrations
|
||||
.HasColumnName("key")
|
||||
.HasComment("Ключ настроек пользователя");
|
||||
|
||||
b.Property<object>("Value")
|
||||
b.Property<JsonDocument>("Value")
|
||||
.HasColumnType("jsonb")
|
||||
.HasColumnName("setting_value")
|
||||
.HasComment("Значение настроек пользователя");
|
||||
@ -4256,7 +4257,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Невозможно определить операцию"
|
||||
},
|
||||
@ -4280,7 +4281,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 4,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Подъем с проработкой"
|
||||
},
|
||||
@ -4288,7 +4289,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 5,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Спуск с проработкой"
|
||||
},
|
||||
@ -4296,7 +4297,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 6,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Подъем с промывкой"
|
||||
},
|
||||
@ -4304,7 +4305,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 7,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Спуск с промывкой"
|
||||
},
|
||||
@ -4312,7 +4313,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 8,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Спуск в скважину"
|
||||
},
|
||||
@ -4320,7 +4321,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 9,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Спуск с вращением"
|
||||
},
|
||||
@ -4328,7 +4329,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 10,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Подъем из скважины"
|
||||
},
|
||||
@ -4336,7 +4337,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 11,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Подъем с вращением"
|
||||
},
|
||||
@ -4344,7 +4345,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 12,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Промывка в покое"
|
||||
},
|
||||
@ -4352,7 +4353,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 13,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Промывка с вращением"
|
||||
},
|
||||
@ -4360,7 +4361,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 14,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Удержание в клиньях"
|
||||
},
|
||||
@ -4368,7 +4369,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 15,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Неподвижное состояние"
|
||||
},
|
||||
@ -4376,7 +4377,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 16,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Вращение без циркуляции"
|
||||
},
|
||||
@ -4384,7 +4385,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 17,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "На поверхности"
|
||||
},
|
||||
@ -4392,7 +4393,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 18,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Проработка перед наращиванием"
|
||||
},
|
||||
@ -4400,7 +4401,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 19,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Шаблонировка перед наращиванием"
|
||||
},
|
||||
@ -4408,7 +4409,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 20,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Промывка перед наращиванием"
|
||||
},
|
||||
@ -4416,7 +4417,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 21,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Статический замер телесистемы"
|
||||
},
|
||||
@ -4424,11 +4425,19 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 22,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Промывка"
|
||||
},
|
||||
new
|
||||
{
|
||||
Id = 23,
|
||||
Code = 0,
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Шаблонировка при бурении"
|
||||
},
|
||||
new
|
||||
{
|
||||
Id = 1001,
|
||||
Code = 0,
|
||||
@ -4440,7 +4449,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1002,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "ГИС"
|
||||
},
|
||||
@ -4448,7 +4457,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1003,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "ГФР"
|
||||
},
|
||||
@ -4456,7 +4465,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1004,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Монтаж ПВО"
|
||||
},
|
||||
@ -4464,7 +4473,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1005,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Демонтаж ПВО"
|
||||
},
|
||||
@ -4472,7 +4481,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1006,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Установка ФА"
|
||||
},
|
||||
@ -4480,7 +4489,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1007,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Оборудование устья"
|
||||
},
|
||||
@ -4488,7 +4497,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1008,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "ОЗЦ"
|
||||
},
|
||||
@ -4496,7 +4505,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1011,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Начало цикла строительства скважины"
|
||||
},
|
||||
@ -4504,7 +4513,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1012,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Окончание цикла строительства скважины"
|
||||
},
|
||||
@ -4512,7 +4521,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1013,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Опрессовка ПВО"
|
||||
},
|
||||
@ -4520,7 +4529,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1014,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Опрессовка Ц.К."
|
||||
},
|
||||
@ -4528,7 +4537,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1015,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Опрессовка ВЗД"
|
||||
},
|
||||
@ -4536,7 +4545,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1016,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Перевод скв на другой тип промывочной жидкости"
|
||||
},
|
||||
@ -4544,7 +4553,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1017,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Перезапись каротажа"
|
||||
},
|
||||
@ -4552,7 +4561,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1018,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Перетяжка талевого каната"
|
||||
},
|
||||
@ -4560,7 +4569,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1019,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Наращивание, промывка"
|
||||
},
|
||||
@ -4568,7 +4577,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1020,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Подъем инструмента"
|
||||
},
|
||||
@ -4576,7 +4585,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1021,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Подъем инструмента с промывкой"
|
||||
},
|
||||
@ -4584,7 +4593,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1022,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Обратная проработка"
|
||||
},
|
||||
@ -4592,7 +4601,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1023,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Сборка инструмента с мостков"
|
||||
},
|
||||
@ -4600,7 +4609,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1024,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Подготовительные работы"
|
||||
},
|
||||
@ -4608,7 +4617,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1025,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Сборка КНБК"
|
||||
},
|
||||
@ -4616,7 +4625,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1026,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Разборка КНБК"
|
||||
},
|
||||
@ -4624,7 +4633,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1027,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Промывка"
|
||||
},
|
||||
@ -4632,7 +4641,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1028,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Промежуточная промывка"
|
||||
},
|
||||
@ -4640,7 +4649,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1029,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Прокачка пачек"
|
||||
},
|
||||
@ -4648,7 +4657,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1030,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Разбуривание тех.оснастки"
|
||||
},
|
||||
@ -4656,7 +4665,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1031,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Ремонт"
|
||||
},
|
||||
@ -4664,7 +4673,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1032,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Спуск инструмента"
|
||||
},
|
||||
@ -4672,7 +4681,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1033,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Спуск инструмента с промывкой"
|
||||
},
|
||||
@ -4680,7 +4689,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1034,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Прямая проработка"
|
||||
},
|
||||
@ -4688,7 +4697,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1035,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Принудительная проработка"
|
||||
},
|
||||
@ -4696,7 +4705,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1037,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Тех СПО-подъем"
|
||||
},
|
||||
@ -4704,7 +4713,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1038,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Тех СПО-спуск"
|
||||
},
|
||||
@ -4712,7 +4721,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1039,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Техническое обслуживание"
|
||||
},
|
||||
@ -4720,7 +4729,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1040,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Цементаж"
|
||||
},
|
||||
@ -4728,7 +4737,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1041,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Шаблонировка ствола"
|
||||
},
|
||||
@ -4736,7 +4745,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1042,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Геологическое осложнение"
|
||||
},
|
||||
@ -4744,7 +4753,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1043,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "НПВ"
|
||||
},
|
||||
@ -4752,7 +4761,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1044,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "ВМР"
|
||||
},
|
||||
@ -4760,7 +4769,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1045,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Прочее"
|
||||
},
|
||||
@ -4768,7 +4777,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1046,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Спуск КНБК"
|
||||
},
|
||||
@ -4776,7 +4785,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1047,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Подъем КНБК"
|
||||
},
|
||||
@ -4784,7 +4793,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1048,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Спуск ОК"
|
||||
},
|
||||
@ -4792,7 +4801,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1050,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Промывка при спуске ОК"
|
||||
},
|
||||
@ -4800,7 +4809,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1051,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Замер ТС"
|
||||
},
|
||||
@ -4808,7 +4817,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1052,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Тех. отстой"
|
||||
},
|
||||
@ -4816,7 +4825,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1053,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Циркуляция и Обработка БР"
|
||||
},
|
||||
@ -4824,7 +4833,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1054,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Срезка ствола"
|
||||
},
|
||||
@ -4832,7 +4841,7 @@ namespace AsbCloudDb.Migrations
|
||||
{
|
||||
Id = 1055,
|
||||
Code = 0,
|
||||
KeyValueName = "Продолжительность",
|
||||
KeyValueName = "dT",
|
||||
KeyValueUnits = "мин",
|
||||
Name = "Вспомогательные работы"
|
||||
});
|
||||
|
@ -279,12 +279,6 @@ namespace AsbCloudDb.Model
|
||||
.HasJsonConversion();
|
||||
});
|
||||
|
||||
modelBuilder.Entity<FileInfo>(entity =>
|
||||
{
|
||||
entity.Property(e => e.PublishInfo)
|
||||
.HasJsonConversion();
|
||||
});
|
||||
|
||||
modelBuilder.Entity<FileMark>(entity =>
|
||||
{
|
||||
entity.HasOne(d => d.User)
|
||||
|
@ -4,81 +4,82 @@
|
||||
{
|
||||
protected override WellOperationCategory[] GetData() => new WellOperationCategory[]{
|
||||
// Автоматически определяемые операции
|
||||
new () {Id = 1, Name = "Невозможно определить операцию", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин"},
|
||||
new () {Id = 1, Name = "Невозможно определить операцию", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин"},
|
||||
new () {Id = 2, Name = "Роторное бурение", Code = 0, KeyValueName = "МСП", KeyValueUnits = "м/ч" },
|
||||
new () {Id = 3, Name = "Слайдирование", Code = 0, KeyValueName = "МСП", KeyValueUnits = "м/ч" },
|
||||
new () {Id = 4, Name = "Подъем с проработкой", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 5, Name = "Спуск с проработкой", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 6, Name = "Подъем с промывкой", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 7, Name = "Спуск с промывкой", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 8, Name = "Спуск в скважину", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 9, Name = "Спуск с вращением", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 10, Name = "Подъем из скважины", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 11, Name = "Подъем с вращением", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 12, Name = "Промывка в покое", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 13, Name = "Промывка с вращением", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 14, Name = "Удержание в клиньях", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 15, Name = "Неподвижное состояние", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 16, Name = "Вращение без циркуляции", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 17, Name = "На поверхности", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 18, Name = "Проработка перед наращиванием", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 19, Name = "Шаблонировка перед наращиванием", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 20, Name = "Промывка перед наращиванием", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 21, Name = "Статический замер телесистемы", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 22, Name = "Промывка", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 4, Name = "Подъем с проработкой", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 5, Name = "Спуск с проработкой", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 6, Name = "Подъем с промывкой", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 7, Name = "Спуск с промывкой", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 8, Name = "Спуск в скважину", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 9, Name = "Спуск с вращением", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 10, Name = "Подъем из скважины", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 11, Name = "Подъем с вращением", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 12, Name = "Промывка в покое", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 13, Name = "Промывка с вращением", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 14, Name = "Удержание в клиньях", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 15, Name = "Неподвижное состояние", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 16, Name = "Вращение без циркуляции", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 17, Name = "На поверхности", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 18, Name = "Проработка перед наращиванием", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 19, Name = "Шаблонировка перед наращиванием", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 20, Name = "Промывка перед наращиванием", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 21, Name = "Статический замер телесистемы", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 22, Name = "Промывка", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 23, Name = "Шаблонировка при бурении", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
|
||||
// Операции ручного ввода
|
||||
new () {Id = 1001, Name = "Бурение", Code = 0, KeyValueName = "МСП", KeyValueUnits = "м/ч" },
|
||||
new () {Id = 1002, Name = "ГИС", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 1003, Name = "ГФР", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 1004, Name = "Монтаж ПВО", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 1005, Name = "Демонтаж ПВО", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 1006, Name = "Установка ФА", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 1007, Name = "Оборудование устья", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 1008, Name = "ОЗЦ", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 1011, Name = "Начало цикла строительства скважины", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 1012, Name = "Окончание цикла строительства скважины", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 1013, Name = "Опрессовка ПВО", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 1014, Name = "Опрессовка Ц.К.", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 1015, Name = "Опрессовка ВЗД", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 1016, Name = "Перевод скв на другой тип промывочной жидкости", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 1017, Name = "Перезапись каротажа", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 1018, Name = "Перетяжка талевого каната", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 1019, Name = "Наращивание, промывка", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 1020, Name = "Подъем инструмента", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 1021, Name = "Подъем инструмента с промывкой", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 1022, Name = "Обратная проработка", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 1023, Name = "Сборка инструмента с мостков", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 1024, Name = "Подготовительные работы", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 1025, Name = "Сборка КНБК", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 1026, Name = "Разборка КНБК", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 1027, Name = "Промывка", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 1028, Name = "Промежуточная промывка", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 1029, Name = "Прокачка пачек", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 1030, Name = "Разбуривание тех.оснастки", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 1031, Name = "Ремонт", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 1032, Name = "Спуск инструмента", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 1033, Name = "Спуск инструмента с промывкой", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 1034, Name = "Прямая проработка", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 1035, Name = "Принудительная проработка", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 1037, Name = "Тех СПО-подъем", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 1038, Name = "Тех СПО-спуск", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 1039, Name = "Техническое обслуживание", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 1040, Name = "Цементаж", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 1041, Name = "Шаблонировка ствола", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 1042, Name = "Геологическое осложнение", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 1043, Name = "НПВ", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 1044, Name = "ВМР", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 1045, Name = "Прочее", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 1046, Name = "Спуск КНБК", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 1047, Name = "Подъем КНБК", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 1048, Name = "Спуск ОК", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 1050, Name = "Промывка при спуске ОК", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 1051, Name = "Замер ТС", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 1052, Name = "Тех. отстой", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 1053, Name = "Циркуляция и Обработка БР", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 1054, Name = "Срезка ствола", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 1055, Name = "Вспомогательные работы", Code = 0, KeyValueName = "Продолжительность", KeyValueUnits = "мин" },
|
||||
new () {Id = 1002, Name = "ГИС", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 1003, Name = "ГФР", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 1004, Name = "Монтаж ПВО", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 1005, Name = "Демонтаж ПВО", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 1006, Name = "Установка ФА", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 1007, Name = "Оборудование устья", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 1008, Name = "ОЗЦ", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 1011, Name = "Начало цикла строительства скважины", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 1012, Name = "Окончание цикла строительства скважины", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 1013, Name = "Опрессовка ПВО", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 1014, Name = "Опрессовка Ц.К.", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 1015, Name = "Опрессовка ВЗД", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 1016, Name = "Перевод скв на другой тип промывочной жидкости", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 1017, Name = "Перезапись каротажа", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 1018, Name = "Перетяжка талевого каната", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 1019, Name = "Наращивание, промывка", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 1020, Name = "Подъем инструмента", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 1021, Name = "Подъем инструмента с промывкой", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 1022, Name = "Обратная проработка", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 1023, Name = "Сборка инструмента с мостков", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 1024, Name = "Подготовительные работы", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 1025, Name = "Сборка КНБК", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 1026, Name = "Разборка КНБК", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 1027, Name = "Промывка", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 1028, Name = "Промежуточная промывка", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 1029, Name = "Прокачка пачек", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 1030, Name = "Разбуривание тех.оснастки", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 1031, Name = "Ремонт", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 1032, Name = "Спуск инструмента", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 1033, Name = "Спуск инструмента с промывкой", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 1034, Name = "Прямая проработка", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 1035, Name = "Принудительная проработка", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 1037, Name = "Тех СПО-подъем", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 1038, Name = "Тех СПО-спуск", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 1039, Name = "Техническое обслуживание", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 1040, Name = "Цементаж", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 1041, Name = "Шаблонировка ствола", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 1042, Name = "Геологическое осложнение", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 1043, Name = "НПВ", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 1044, Name = "ВМР", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 1045, Name = "Прочее", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 1046, Name = "Спуск КНБК", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 1047, Name = "Подъем КНБК", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 1048, Name = "Спуск ОК", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 1050, Name = "Промывка при спуске ОК", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 1051, Name = "Замер ТС", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 1052, Name = "Тех. отстой", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 1053, Name = "Циркуляция и Обработка БР", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 1054, Name = "Срезка ствола", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
new () {Id = 1055, Name = "Вспомогательные работы", Code = 0, KeyValueName = "dT", KeyValueUnits = "мин" },
|
||||
};
|
||||
}
|
||||
}
|
||||
|
@ -41,6 +41,9 @@ namespace AsbCloudDb.Model
|
||||
[Column("value"), Comment("Ключевой показатель операции")]
|
||||
public double Value { get; set; }
|
||||
|
||||
[Column("id_reason_of_end"), Comment("Код признака окончания операции")]
|
||||
public int IdReasonOfEnd { get; set; }
|
||||
|
||||
[JsonIgnore]
|
||||
[ForeignKey(nameof(IdTelemetry))]
|
||||
public virtual Telemetry Telemetry { get; set; }
|
||||
|
@ -33,9 +33,6 @@ namespace AsbCloudDb.Model
|
||||
[Column("file_size"), Comment("Размер файла")]
|
||||
public long Size { get; set; }
|
||||
|
||||
[Column("publish_info", TypeName = "jsonb"), Comment("Информация о файле в облаке")]
|
||||
public FilePublishInfo PublishInfo { get; set; }
|
||||
|
||||
[Column("is_deleted"), Comment("Удален ли файл")]
|
||||
public bool IsDeleted { get; set; }
|
||||
|
||||
|
@ -2,6 +2,7 @@
|
||||
using System;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Text.Json;
|
||||
|
||||
namespace AsbCloudDb.Model
|
||||
{
|
||||
@ -16,7 +17,7 @@ namespace AsbCloudDb.Model
|
||||
public string Key { get; set; } = null!;
|
||||
|
||||
[Column("setting_value", TypeName = "jsonb"), Comment("Значение настроек пользователя")]
|
||||
public object? Value { get; set; }
|
||||
public JsonDocument? Value { get; set; }
|
||||
|
||||
[ForeignKey(nameof(IdUser))]
|
||||
public User User { get; set; } = null!;
|
||||
|
@ -82,7 +82,6 @@ namespace AsbCloudInfrastructure
|
||||
services.AddFluentValidation();
|
||||
|
||||
services.AddScoped<IAsbCloudDbContext>(provider => provider.GetService<AsbCloudDbContext>());
|
||||
services.AddScoped<IFileShareService, GoogleDriveService>();
|
||||
services.AddScoped<IEmailService, EmailService>();
|
||||
|
||||
services.AddHostedService<OperationDetectionBackgroundService>();
|
||||
@ -96,7 +95,7 @@ namespace AsbCloudInfrastructure
|
||||
|
||||
services.AddTransient<IAuthService, AuthService>();
|
||||
services.AddTransient<IClusterService, ClusterService>();
|
||||
services.AddTransient<IDrillFlowChartService, DrillFlowChartService>();
|
||||
services.AddTransient<IDrillFlowChartRepository, DrillFlowChartRepository>();
|
||||
services.AddTransient<IDrillingProgramService, DrillingProgramService>();
|
||||
services.AddTransient<IDrillParamsService, DrillParamsService>();
|
||||
services.AddTransient<IEventService, EventService>();
|
||||
@ -122,6 +121,8 @@ namespace AsbCloudInfrastructure
|
||||
services.AddTransient<IScheduleService, ScheduleService>();
|
||||
services.AddTransient<IOperationValueService, OperationValueService>();
|
||||
services.AddTransient<ISubsystemOperationTimeService, SubsystemOperationTimeService>();
|
||||
services.AddTransient<IScheduleRepository, ScheduleRepository>();
|
||||
services.AddTransient<IRepositoryWellRelated<OperationValueDto>, CrudWellRelatedServiceBase<OperationValueDto, OperationValue>>();
|
||||
services.AddTransient<IUserSettingsRepository, UserSettingsRepository>();
|
||||
|
||||
// admin crud services:
|
||||
|
@ -10,7 +10,7 @@ using System.Threading.Tasks;
|
||||
namespace AsbCloudInfrastructure.Repository
|
||||
{
|
||||
#nullable enable
|
||||
public class CrudWellRelatedCacheServiceBase<TDto, TEntity> : CrudCacheServiceBase<TDto, TEntity>, ICrudWellRelatedService<TDto>
|
||||
public class CrudWellRelatedCacheServiceBase<TDto, TEntity> : CrudCacheServiceBase<TDto, TEntity>, IRepositoryWellRelated<TDto>
|
||||
where TDto : AsbCloudApp.Data.IId, AsbCloudApp.Data.IWellRelated
|
||||
where TEntity : class, IId, IWellRelated
|
||||
{
|
||||
|
@ -10,7 +10,7 @@ using System.Threading.Tasks;
|
||||
namespace AsbCloudInfrastructure.Repository
|
||||
{
|
||||
#nullable enable
|
||||
public class CrudWellRelatedServiceBase<TDto, TEntity> : CrudServiceBase<TDto, TEntity>, ICrudWellRelatedService<TDto>
|
||||
public class CrudWellRelatedServiceBase<TDto, TEntity> : CrudServiceBase<TDto, TEntity>, IRepositoryWellRelated<TDto>
|
||||
where TDto : AsbCloudApp.Data.IId, AsbCloudApp.Data.IWellRelated
|
||||
where TEntity : class, IId, IWellRelated
|
||||
{
|
||||
|
@ -1,7 +1,6 @@
|
||||
using AsbCloudApp.Data;
|
||||
using AsbCloudApp.Services;
|
||||
using AsbCloudDb.Model;
|
||||
using AsbCloudInfrastructure.Repository;
|
||||
using Mapster;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System;
|
||||
@ -10,18 +9,16 @@ using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AsbCloudInfrastructure.Services
|
||||
namespace AsbCloudInfrastructure.Repository
|
||||
{
|
||||
public class DrillFlowChartService : CrudWellRelatedServiceBase<DrillFlowChartDto, DrillFlowChart>,
|
||||
IDrillFlowChartService
|
||||
public class DrillFlowChartRepository : CrudWellRelatedServiceBase<DrillFlowChartDto, DrillFlowChart>,
|
||||
IDrillFlowChartRepository
|
||||
{
|
||||
private readonly IAsbCloudDbContext db;
|
||||
private readonly IWellService wellService;
|
||||
|
||||
public DrillFlowChartService(IAsbCloudDbContext context, IWellService wellService)
|
||||
public DrillFlowChartRepository(IAsbCloudDbContext context, IWellService wellService)
|
||||
: base(context)
|
||||
{
|
||||
this.db = context;
|
||||
this.wellService = wellService;
|
||||
}
|
||||
|
@ -1,7 +1,6 @@
|
||||
using AsbCloudApp.Data;
|
||||
using AsbCloudApp.Services;
|
||||
using AsbCloudDb.Model;
|
||||
using AsbCloudInfrastructure.Repository;
|
||||
using Mapster;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System;
|
||||
@ -9,14 +8,14 @@ using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AsbCloudInfrastructure.Services
|
||||
namespace AsbCloudInfrastructure.Repository
|
||||
{
|
||||
#nullable enable
|
||||
public class ScheduleService : CrudWellRelatedServiceBase<ScheduleDto, Schedule>, IScheduleService
|
||||
public class ScheduleRepository : CrudWellRelatedServiceBase<ScheduleDto, Schedule>, IScheduleRepository
|
||||
{
|
||||
private readonly IWellService wellService;
|
||||
|
||||
public ScheduleService(IAsbCloudDbContext context, IWellService wellService)
|
||||
public ScheduleRepository(IAsbCloudDbContext context, IWellService wellService)
|
||||
: base(context, dbSet => dbSet.Include(s => s.Driller))
|
||||
{
|
||||
this.wellService = wellService;
|
||||
@ -40,7 +39,7 @@ namespace AsbCloudInfrastructure.Services
|
||||
var time = new TimeOnly(remoteDate.Hour, remoteDate.Minute, remoteDate.Second);
|
||||
|
||||
var entity = entities.FirstOrDefault(s =>
|
||||
(s.ShiftStart > s.ShiftEnd) ^
|
||||
s.ShiftStart > s.ShiftEnd ^
|
||||
(time >= s.ShiftStart && time < s.ShiftEnd)
|
||||
);
|
||||
|
@ -5,7 +5,7 @@ using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AsbCloudInfrastructure.Services
|
||||
namespace AsbCloudInfrastructure.Repository
|
||||
{
|
||||
public class UserSettingsRepository : IUserSettingsRepository
|
||||
{
|
||||
@ -16,43 +16,33 @@ namespace AsbCloudInfrastructure.Services
|
||||
this.context = context;
|
||||
}
|
||||
|
||||
public Task<object> GetOrDefaultAsync(int userId, string key, CancellationToken token)
|
||||
public Task<System.Text.Json.JsonDocument> GetOrDefaultAsync(int userId, string key, CancellationToken token)
|
||||
=> context.Set<UserSetting>()
|
||||
.Where(s => s.IdUser == userId && s.Key == key)
|
||||
.Select(s=>s.Value)
|
||||
.Select(s => s.Value)
|
||||
.FirstOrDefaultAsync(token);
|
||||
|
||||
public async Task<int> InsertAsync(int userId, string key, object value, CancellationToken token)
|
||||
{
|
||||
var set = context.Set<UserSetting>();
|
||||
|
||||
if (await set.AnyAsync(s=>s.IdUser == userId && s.Key == key, token))
|
||||
return IUserSettingsRepository.ErrorKeyIsUsed;
|
||||
|
||||
var entity = new UserSetting
|
||||
{
|
||||
IdUser = userId,
|
||||
Key = key,
|
||||
Value = value,
|
||||
};
|
||||
|
||||
context.Set<UserSetting>()
|
||||
.Add(entity);
|
||||
|
||||
return await context.SaveChangesAsync(token);
|
||||
}
|
||||
|
||||
public async Task<int> UpdateAsync(int userId, string key, object value, CancellationToken token)
|
||||
public async Task<int> UpsertAsync(int userId, string key, System.Text.Json.JsonDocument value, CancellationToken token)
|
||||
{
|
||||
var set = context.Set<UserSetting>();
|
||||
var updatingItem = await set
|
||||
.FirstOrDefaultAsync(s => s.IdUser == userId && s.Key == key, token);
|
||||
|
||||
if (updatingItem is null)
|
||||
return IUserSettingsRepository.ErrorKeyNotFound;
|
||||
|
||||
updatingItem.Value = value;
|
||||
set.Update(updatingItem);
|
||||
{
|
||||
var settings = new UserSetting
|
||||
{
|
||||
IdUser = userId,
|
||||
Key = key,
|
||||
Value = value,
|
||||
};
|
||||
set.Add(settings);
|
||||
}
|
||||
else
|
||||
{
|
||||
updatingItem.Value = value;
|
||||
set.Update(updatingItem);
|
||||
}
|
||||
|
||||
return await context.SaveChangesAsync(token);
|
||||
}
|
||||
@ -60,9 +50,9 @@ namespace AsbCloudInfrastructure.Services
|
||||
{
|
||||
var set = context.Set<UserSetting>();
|
||||
var removingItem = await set
|
||||
.FirstOrDefaultAsync(s=>s.IdUser == userId && s.Key ==key, token);
|
||||
.FirstOrDefaultAsync(s => s.IdUser == userId && s.Key == key, token);
|
||||
|
||||
if(removingItem is null)
|
||||
if (removingItem is null)
|
||||
return IUserSettingsRepository.ErrorKeyNotFound;
|
||||
|
||||
set.Remove(removingItem);
|
@ -9,7 +9,7 @@ using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AsbCloudInfrastructure.Services
|
||||
namespace AsbCloudInfrastructure.Repository
|
||||
{
|
||||
public class WitsRecordRepository<TDto, TEntity> : IWitsRecordRepository<TDto>
|
||||
where TEntity : class, ITelemetryData
|
||||
@ -74,7 +74,7 @@ namespace AsbCloudInfrastructure.Services
|
||||
var timezoneHours = telemetryService.GetTimezone(idTelemetry).Hours;
|
||||
var entities = dtos
|
||||
.DistinctBy(d => d.DateTime)
|
||||
.Select(dto => Convert(dto, idTelemetry, timezoneHours));
|
||||
.Select(dto => Convert(dto, idTelemetry, timezoneHours));
|
||||
dbset.AddRange(entities);
|
||||
return db.SaveChangesAsync(token);
|
||||
}
|
@ -9,6 +9,9 @@ using AsbCloudApp.Services;
|
||||
using AsbCloudDb.Model;
|
||||
using System.Collections.Generic;
|
||||
using AsbCloudApp.Data.DailyReport;
|
||||
using AsbCloudApp.Requests;
|
||||
using AsbCloudInfrastructure.Services.DetectOperations;
|
||||
using AsbCloudApp.Data.DetectedOperation;
|
||||
|
||||
namespace AsbCloudInfrastructure.Services.DailyReport
|
||||
{
|
||||
@ -17,12 +20,14 @@ namespace AsbCloudInfrastructure.Services.DailyReport
|
||||
{
|
||||
private readonly IAsbCloudDbContext db;
|
||||
private readonly IWellService wellService;
|
||||
private readonly IDetectedOperationService detectedOperationService;
|
||||
private readonly DailyReportMakerExcel dailyReportMaker = new DailyReportMakerExcel();
|
||||
|
||||
public DailyReportService(IAsbCloudDbContext db, IWellService wellService)
|
||||
public DailyReportService(IAsbCloudDbContext db, IWellService wellService, IDetectedOperationService detectedOperationService)
|
||||
{
|
||||
this.db = db;
|
||||
this.wellService = wellService;
|
||||
this.detectedOperationService = detectedOperationService;
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<DailyReportDto>> GetListAsync(int idWell, DateTime? begin, DateTime? end, CancellationToken token)
|
||||
@ -109,19 +114,57 @@ namespace AsbCloudInfrastructure.Services.DailyReport
|
||||
private async Task<DailyReportDto> MakeDefaultDailyReportAsync(int idWell, DateTime date, CancellationToken token)
|
||||
{
|
||||
var well = await wellService.GetOrDefaultAsync(idWell, token);
|
||||
|
||||
var dto = new DailyReportDto()
|
||||
{
|
||||
Head = new HeadDto()
|
||||
{
|
||||
ReportDate = date.Date,
|
||||
WellName = well?.Caption ?? "",
|
||||
ClusterName = well?.Cluster ?? ""
|
||||
}
|
||||
ClusterName = well?.Cluster ?? "",
|
||||
},
|
||||
TimeBalance = await MakeTimeBalanceAsync(idWell, date, token),
|
||||
};
|
||||
|
||||
return dto;
|
||||
}
|
||||
|
||||
private async Task<TimeBalanceDto> MakeTimeBalanceAsync(int idWell, DateTime date, CancellationToken token)
|
||||
{
|
||||
var stat = await detectedOperationService.GetOperationsStatAsync(new DetectedOperationRequest
|
||||
{
|
||||
IdWell = idWell,
|
||||
GtDate = date.Date,
|
||||
LtDate = date.Date.AddDays(1)
|
||||
}, token);
|
||||
|
||||
if (stat is null)
|
||||
return new TimeBalanceDto();
|
||||
|
||||
var dto = new TimeBalanceDto()
|
||||
{
|
||||
Drilling = $"{GetHoursFromStat(stat, DetectedOperationService.IdOperationRotor, DetectedOperationService.IdOperationSlide):#0.00}",
|
||||
Flushing = $"{GetHoursFromStat(stat, DetectedOperationService.idOperationFlushing):#0.00}",
|
||||
Building = $"{GetHoursFromStat(stat, DetectedOperationService.IdOperationSlipsTime):#0.00}",
|
||||
Elaboration = $"{GetHoursFromStat(stat, DetectedOperationService.IdOperationElaboration):#0.00}",
|
||||
ElaborationBeforeBuilding = $"{GetHoursFromStat(stat, DetectedOperationService.IdOperationElaborationBeforeBuilding):#0.00}",
|
||||
TemplatingBeforeBuilding = $"{GetHoursFromStat(stat, DetectedOperationService.IdOperationTemplatingBeforeBuilding):#0.00}",
|
||||
FlushingBeforeBuilding = $"{GetHoursFromStat(stat, DetectedOperationService.IdOperationFlushingBeforeBuilding):#0.00}",
|
||||
StaticSurveying = $"{GetHoursFromStat(stat, DetectedOperationService.IdOperationStaticSurveying):#0.00}",
|
||||
Gis = $"{GetHoursFromStat(stat, DetectedOperationService.IdOperationGis):#0.00}",
|
||||
Ozc = $"{GetHoursFromStat(stat, DetectedOperationService.IdOperationOzc):#0.00}",
|
||||
Cementing = $"{GetHoursFromStat(stat, DetectedOperationService.IdOperationCementing):#0.00}",
|
||||
Npv = $"{GetHoursFromStat(stat, DetectedOperationService.IdOperationNpv):#0.00}",
|
||||
};
|
||||
return dto;
|
||||
}
|
||||
|
||||
private static double GetHoursFromStat(IEnumerable<DetectedOperationStatDto> stat, params int[] idCategories)
|
||||
{
|
||||
var valueMinutes = stat.Where(o => idCategories.Contains(o.IdCategory))
|
||||
.Sum(o => o.MinutesTotal);
|
||||
return valueMinutes / 60d;
|
||||
}
|
||||
|
||||
private static DailyReportDto Convert(AsbCloudDb.Model.DailyReport.DailyReport entity)
|
||||
{
|
||||
var dto = entity.Info.Adapt<DailyReportDto>();
|
||||
|
@ -21,14 +21,27 @@ namespace AsbCloudInfrastructure.Services.DetectOperations
|
||||
public const int IdOperationRotor = 1;
|
||||
public const int IdOperationSlide = 3;
|
||||
public const int IdOperationSlipsTime = 14;
|
||||
public const int idOperationFlushing = 22;
|
||||
public const int IdOperationElaboration = 1022;
|
||||
|
||||
public const int idOperationRepair = 1031;
|
||||
public const int IdOperationGis = 1001;
|
||||
public const int IdOperationOzc = 1008;
|
||||
public const int IdOperationCementing = 1040;
|
||||
public const int IdOperationNpv = 1043;
|
||||
|
||||
public const int IdOperationElaborationBeforeBuilding = 18;
|
||||
public const int IdOperationTemplatingBeforeBuilding = 19;
|
||||
public const int IdOperationFlushingBeforeBuilding = 20;
|
||||
public const int IdOperationStaticSurveying = 21;
|
||||
|
||||
private readonly IAsbCloudDbContext db;
|
||||
private readonly IWellService wellService;
|
||||
private readonly IOperationValueService operationValueService;
|
||||
private readonly IScheduleService scheduleService;
|
||||
private readonly IRepositoryWellRelated<OperationValueDto> operationValueService;
|
||||
private readonly IScheduleRepository scheduleService;
|
||||
|
||||
public DetectedOperationService(IAsbCloudDbContext db, IWellService wellService,
|
||||
IOperationValueService operationValueService, IScheduleService scheduleService)
|
||||
IRepositoryWellRelated<OperationValueDto> operationValueService, IScheduleRepository scheduleService)
|
||||
{
|
||||
this.db = db;
|
||||
this.wellService = wellService;
|
||||
|
@ -1,6 +1,5 @@
|
||||
using AsbCloudDb.Model;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors
|
||||
@ -11,6 +10,30 @@ namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors
|
||||
private readonly int idOperation;
|
||||
private readonly int stepLength = 3;
|
||||
|
||||
protected const int IdReasonOfEnd_NotDetected = 0;
|
||||
protected const int IdReasonOfEnd_NotDetectBegin = 1;
|
||||
|
||||
protected const int IdReasonOfEnd_DeltaDepthIsLo = 100;
|
||||
protected const int IdReasonOfEnd_DeltaDepthIsHi = 101;
|
||||
protected const int IdReasonOfEnd_DeltaDepthOutOfRange = 102;
|
||||
protected const int IdReasonOfEnd_WellDepthDeviates = 200;
|
||||
|
||||
protected const int IdReasonOfEnd_PressureIsLo = 300;
|
||||
protected const int IdReasonOfEnd_PressureIsHi = 301;
|
||||
protected const int IdReasonOfEnd_PressureOutOfRange = 302;
|
||||
protected const int IdReasonOfEnd_PressureIsRising = 303;
|
||||
|
||||
protected const int IdReasonOfEnd_RotorSpeedIsLo = 400;
|
||||
protected const int IdReasonOfEnd_RotorSpeedIsHi = 401;
|
||||
protected const int IdReasonOfEnd_AvgRotorSpeedIsHi = 402;
|
||||
protected const int IdReasonOfEnd_AvgRotorSpeedIsLo = 403;
|
||||
|
||||
protected const int IdReasonOfEnd_BlockPositionIsLo = 500;
|
||||
protected const int IdReasonOfEnd_BlockPositionIsHi = 501;
|
||||
protected const int IdReasonOfEnd_BlockPositionDeviates = 502;
|
||||
|
||||
protected const int IdReasonOfEnd_Custom1 = 10_000;
|
||||
|
||||
protected DetectorAbstract(int idOperation)
|
||||
{
|
||||
this.idOperation = idOperation;
|
||||
@ -29,9 +52,10 @@ namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors
|
||||
if ((positionEnd > end))
|
||||
break;
|
||||
|
||||
if (DetectEnd(telemetry, positionEnd, previousOperation))
|
||||
var idReasonOfEnd = DetectEnd(telemetry, positionEnd, previousOperation);
|
||||
if (idReasonOfEnd != IdReasonOfEnd_NotDetected)
|
||||
{
|
||||
result = MakeOperation(idTelemetry, telemetry, begin, positionEnd);
|
||||
result = MakeOperation(idTelemetry, telemetry, begin, positionEnd, idReasonOfEnd);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -41,10 +65,12 @@ namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors
|
||||
}
|
||||
|
||||
protected abstract bool DetectBegin(DetectableTelemetry[] telemetry, int position, DetectedOperation? previousOperation);
|
||||
protected virtual bool DetectEnd(DetectableTelemetry[] telemetry, int position, DetectedOperation? previousOperation)
|
||||
=> !DetectBegin(telemetry, position, previousOperation);
|
||||
protected virtual int DetectEnd(DetectableTelemetry[] telemetry, int position, DetectedOperation? previousOperation)
|
||||
=> DetectBegin(telemetry, position, previousOperation)
|
||||
? IdReasonOfEnd_NotDetected
|
||||
: IdReasonOfEnd_NotDetectBegin;
|
||||
|
||||
private OperationDetectorResult MakeOperation(int idTelemetry, DetectableTelemetry[] telemetry, int begin, int end)
|
||||
private OperationDetectorResult MakeOperation(int idTelemetry, DetectableTelemetry[] telemetry, int begin, int end, int idReasonOfEnd)
|
||||
{
|
||||
var pBegin = telemetry[begin];
|
||||
var pEnd = telemetry[end];
|
||||
@ -62,6 +88,7 @@ namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors
|
||||
DepthStart = (double)pBegin.WellDepth,
|
||||
DepthEnd = (double)pEnd.WellDepth,
|
||||
Value = CalcValue(telemetry, begin, end),
|
||||
IdReasonOfEnd = idReasonOfEnd,
|
||||
},
|
||||
};
|
||||
return result;
|
||||
|
@ -36,23 +36,23 @@ namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors
|
||||
return true;
|
||||
}
|
||||
|
||||
protected override bool DetectEnd(DetectableTelemetry[] telemetry, int position, DetectedOperation? previousOperation)
|
||||
protected override int DetectEnd(DetectableTelemetry[] telemetry, int position, DetectedOperation? previousOperation)
|
||||
{
|
||||
var point0 = telemetry[position];
|
||||
var delta = point0.WellDepth - point0.BitDepth;
|
||||
if (delta < 0.03d || delta > 30)
|
||||
return true;
|
||||
return IdReasonOfEnd_DeltaDepthOutOfRange;
|
||||
|
||||
if (point0.Pressure < 15)
|
||||
return true;
|
||||
return IdReasonOfEnd_PressureIsLo;
|
||||
|
||||
if (point0.BlockPosition > 31)
|
||||
return true;
|
||||
return IdReasonOfEnd_BlockPositionIsHi;
|
||||
|
||||
if (point0.RotorSpeed < 10)
|
||||
return true;
|
||||
return IdReasonOfEnd_RotorSpeedIsLo;
|
||||
|
||||
return false;
|
||||
return IdReasonOfEnd_NotDetected;
|
||||
}
|
||||
|
||||
protected override bool IsValid(DetectableTelemetry[] telemetry, int begin, int end)
|
||||
|
@ -31,19 +31,22 @@ namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors
|
||||
if (point0.BlockPosition < 3)
|
||||
return false;
|
||||
|
||||
if (ContainsDeviationApprox(telemetry, t => t.WellDepth, position, 150, 0.0001))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
protected override bool DetectEnd(DetectableTelemetry[] telemetry, int position, DetectedOperation? previousOperation)
|
||||
protected override int DetectEnd(DetectableTelemetry[] telemetry, int position, DetectedOperation? previousOperation)
|
||||
{
|
||||
var point0 = telemetry[position];
|
||||
var delta = point0.WellDepth - point0.BitDepth;
|
||||
if ((delta > 0.03d )
|
||||
&& (point0.Pressure > 15)
|
||||
&& ContainsDeviationApprox(telemetry, t=>t.BlockPosition, position, 60, 0.03))
|
||||
return true;
|
||||
return IdReasonOfEnd_Custom1;
|
||||
|
||||
return false;
|
||||
return IdReasonOfEnd_NotDetected;
|
||||
}
|
||||
|
||||
protected override bool IsValid(DetectableTelemetry[] telemetry, int begin, int end)
|
||||
|
@ -34,16 +34,16 @@ namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors
|
||||
return true;
|
||||
}
|
||||
|
||||
protected override bool DetectEnd(DetectableTelemetry[] telemetry, int position, DetectedOperation? previousOperation)
|
||||
protected override int DetectEnd(DetectableTelemetry[] telemetry, int position, DetectedOperation? previousOperation)
|
||||
{
|
||||
var point0 = telemetry[position];
|
||||
var delta = point0.WellDepth - point0.BitDepth;
|
||||
if ((delta > 0.03d )
|
||||
&& (point0.Pressure > 15)
|
||||
&& ContainsDeviationApprox(telemetry, t=>t.BlockPosition, position, 60, 0.03))
|
||||
return true;
|
||||
return IdReasonOfEnd_Custom1;
|
||||
|
||||
return false;
|
||||
return IdReasonOfEnd_NotDetected;
|
||||
}
|
||||
|
||||
protected override bool IsValid(DetectableTelemetry[] telemetry, int begin, int end)
|
||||
|
@ -28,25 +28,25 @@ namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors
|
||||
return true;
|
||||
}
|
||||
|
||||
protected override bool DetectEnd(DetectableTelemetry[] telemetry, int position, DetectedOperation? previousOperation)
|
||||
protected override int DetectEnd(DetectableTelemetry[] telemetry, int position, DetectedOperation? previousOperation)
|
||||
{
|
||||
var point0 = telemetry[position];
|
||||
var delta = point0.WellDepth - point0.BitDepth;
|
||||
if (delta > 0.03d)
|
||||
return true;
|
||||
return IdReasonOfEnd_DeltaDepthIsHi;
|
||||
|
||||
if (point0.Pressure < 25)
|
||||
return true;
|
||||
return IdReasonOfEnd_PressureIsLo;
|
||||
|
||||
var lineRotorSpeed = MakeInterpolationLine(d => d.RotorSpeed, telemetry, position, 10);
|
||||
var lineRotorSpeed = MakeInterpolationLine(d => d.RotorSpeed, telemetry, position, 60);
|
||||
|
||||
if (lineRotorSpeed.IsAverageYLessThan(5))
|
||||
return true;
|
||||
if (lineRotorSpeed.IsAverageYLessThan(10))
|
||||
return IdReasonOfEnd_AvgRotorSpeedIsLo;
|
||||
|
||||
if (!DeviatesFromBegin(telemetry, t => t.WellDepth, position, 60, 0.003))
|
||||
return true;
|
||||
if (!DeviatesFromBegin(telemetry, t => t.WellDepth, position, 150, 0.003))
|
||||
return IdReasonOfEnd_WellDepthDeviates;
|
||||
|
||||
return false;
|
||||
return IdReasonOfEnd_NotDetected;
|
||||
}
|
||||
|
||||
protected override bool IsValid(DetectableTelemetry[] telemetry, int begin, int end)
|
||||
|
@ -28,25 +28,25 @@ namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors
|
||||
return true;
|
||||
}
|
||||
|
||||
protected override bool DetectEnd(DetectableTelemetry[] telemetry, int position, DetectedOperation? previousOperation)
|
||||
protected override int DetectEnd(DetectableTelemetry[] telemetry, int position, DetectedOperation? previousOperation)
|
||||
{
|
||||
var point0 = telemetry[position];
|
||||
var delta = point0.WellDepth - point0.BitDepth;
|
||||
if (delta > 0.03d)
|
||||
return true;
|
||||
return IdReasonOfEnd_DeltaDepthIsHi;
|
||||
|
||||
if (point0.Pressure < 25)
|
||||
return true;
|
||||
return IdReasonOfEnd_PressureIsLo;
|
||||
|
||||
var lineRotorSpeed = MakeInterpolationLine(d => d.RotorSpeed, telemetry, position, 10);
|
||||
var lineRotorSpeed = MakeInterpolationLine(d => d.RotorSpeed, telemetry, position, 60);
|
||||
|
||||
if (lineRotorSpeed.IsAverageYGreaterThan(5))
|
||||
return true;
|
||||
if (lineRotorSpeed.IsAverageYGreaterThan(10))
|
||||
return IdReasonOfEnd_AvgRotorSpeedIsHi;
|
||||
|
||||
if (!DeviatesFromBegin(telemetry, t => t.WellDepth, position, 60, 0.003))
|
||||
return true;
|
||||
if (!DeviatesFromBegin(telemetry, t => t.WellDepth, position, 150, 0.003))
|
||||
return IdReasonOfEnd_WellDepthDeviates;
|
||||
|
||||
return false;
|
||||
return IdReasonOfEnd_NotDetected;
|
||||
}
|
||||
|
||||
protected override bool IsValid(DetectableTelemetry[] telemetry, int begin, int end)
|
||||
|
@ -1,4 +1,6 @@
|
||||
using AsbCloudDb.Model;
|
||||
using System.Linq;
|
||||
using System;
|
||||
|
||||
namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors
|
||||
{
|
||||
@ -20,13 +22,13 @@ namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors
|
||||
return false;
|
||||
|
||||
var delta = point0.WellDepth - point0.BitDepth;
|
||||
if (delta > 2.5d || delta < 0.8d)
|
||||
if (delta > 2.5d || delta < 0.15d)
|
||||
return false;
|
||||
|
||||
if (point0.RotorSpeed > 30)
|
||||
return false;
|
||||
|
||||
if (ContainsDeviation(telemetry, t => t.BlockPosition, position, 60, 0.03))
|
||||
if (ContainsDeviation(telemetry, t => t.BlockPosition, position, 120, 0.03))
|
||||
return false;
|
||||
|
||||
if (ContainsDeviation(telemetry, t => t.Pressure, position, 60, 10))
|
||||
@ -35,24 +37,24 @@ namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors
|
||||
return true;
|
||||
}
|
||||
|
||||
protected override bool DetectEnd(DetectableTelemetry[] telemetry, int position, DetectedOperation? previousOperation)
|
||||
protected override int DetectEnd(DetectableTelemetry[] telemetry, int position, DetectedOperation? previousOperation)
|
||||
{
|
||||
var point0 = telemetry[position];
|
||||
|
||||
var delta = point0.WellDepth - point0.BitDepth;
|
||||
if (delta > 2.5d || delta < 0.8d)
|
||||
return true;
|
||||
if (delta > 2.5d )
|
||||
return IdReasonOfEnd_DeltaDepthIsHi;
|
||||
|
||||
if (point0.RotorSpeed > 30)
|
||||
return true;
|
||||
return IdReasonOfEnd_RotorSpeedIsHi;
|
||||
|
||||
if (RisesFromBegin(telemetry, t => t.Pressure, position, 10, 5))
|
||||
return true;
|
||||
if (RisesFromBegin(telemetry, t => t.Pressure, position, 10, 15))
|
||||
return IdReasonOfEnd_PressureIsRising;
|
||||
|
||||
if (ContainsDeviation(telemetry, t => t.BlockPosition, position, 10, 0.05))
|
||||
return false;
|
||||
return IdReasonOfEnd_BlockPositionDeviates;
|
||||
|
||||
return false;
|
||||
return IdReasonOfEnd_NotDetected;
|
||||
}
|
||||
|
||||
protected override bool IsValid(DetectableTelemetry[] telemetry, int begin, int end)
|
||||
|
@ -37,23 +37,23 @@ namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors
|
||||
return true;
|
||||
}
|
||||
|
||||
protected override bool DetectEnd(DetectableTelemetry[] telemetry, int position, DetectedOperation? previousOperation)
|
||||
protected override int DetectEnd(DetectableTelemetry[] telemetry, int position, DetectedOperation? previousOperation)
|
||||
{
|
||||
var point0 = telemetry[position];
|
||||
var delta = point0.WellDepth - point0.BitDepth;
|
||||
if (delta < 0.03d || delta > 30)
|
||||
return true;
|
||||
return IdReasonOfEnd_DeltaDepthOutOfRange;
|
||||
|
||||
if (point0.Pressure < 15)
|
||||
return true;
|
||||
return IdReasonOfEnd_PressureIsLo;
|
||||
|
||||
if (point0.BlockPosition > 31)
|
||||
return true;
|
||||
return IdReasonOfEnd_BlockPositionIsHi;
|
||||
|
||||
if (point0.RotorSpeed > 10)
|
||||
return true;
|
||||
return IdReasonOfEnd_RotorSpeedIsHi;
|
||||
|
||||
return false;
|
||||
return IdReasonOfEnd_NotDetected;
|
||||
}
|
||||
|
||||
protected override bool IsValid(DetectableTelemetry[] telemetry, int begin, int end)
|
||||
|
@ -0,0 +1,61 @@
|
||||
using AsbCloudDb.Model;
|
||||
|
||||
namespace AsbCloudInfrastructure.Services.DetectOperations.Detectors
|
||||
{
|
||||
#nullable enable
|
||||
/// <summary>
|
||||
/// Шаблонировка при бурении
|
||||
/// </summary>
|
||||
internal class DetectorTemplatingWhileDrilling : DetectorAbstract
|
||||
{
|
||||
public DetectorTemplatingWhileDrilling()
|
||||
: base(23) { }
|
||||
|
||||
protected override double CalcValue(DetectableTelemetry[] telemetry, int begin, int end)
|
||||
=> CalcDeltaMinutes(telemetry, begin, end);
|
||||
|
||||
protected override bool DetectBegin(DetectableTelemetry[] telemetry, int position, DetectedOperation? previousOperation)
|
||||
{
|
||||
if (previousOperation?.IdCategory != 22)
|
||||
return false;
|
||||
|
||||
var point0 = telemetry[position];
|
||||
|
||||
if (point0.Pressure < 15)
|
||||
return false;
|
||||
|
||||
if (point0.RotorSpeed < 1)
|
||||
return false;
|
||||
|
||||
if (RisesFromBegin(telemetry, t => t.BlockPosition, position, 30, 0.5))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
protected override int DetectEnd(DetectableTelemetry[] telemetry, int position, DetectedOperation? previousOperation)
|
||||
{
|
||||
var point0 = telemetry[position];
|
||||
|
||||
if (point0.Pressure < 15)
|
||||
return IdReasonOfEnd_PressureIsLo;
|
||||
|
||||
if (RisesFromBegin(telemetry, t=>t.WellDepth, position, 10, 0.01))
|
||||
return IdReasonOfEnd_WellDepthDeviates;
|
||||
|
||||
var delta = point0.WellDepth - point0.BitDepth;
|
||||
if ( (delta > 0.03d )
|
||||
&& (point0.Pressure > 15)
|
||||
&& (!ContainsDeviationApprox(telemetry, t=>t.BlockPosition, position, 60, 0.03)))
|
||||
return IdReasonOfEnd_Custom1;
|
||||
|
||||
return IdReasonOfEnd_NotDetected;
|
||||
}
|
||||
|
||||
protected override bool IsValid(DetectableTelemetry[] telemetry, int begin, int end)
|
||||
=> IsValidByWellDepthDoesNotChange(telemetry, begin, end);
|
||||
}
|
||||
|
||||
#nullable disable
|
||||
}
|
||||
|
@ -28,6 +28,7 @@ namespace AsbCloudInfrastructure.Services.DetectOperations
|
||||
new DetectorStaticSurveying(),
|
||||
new DetectorFlashingBeforeConnection(),
|
||||
new DetectorFlashing(),
|
||||
new DetectorTemplatingWhileDrilling(),
|
||||
};
|
||||
|
||||
public OperationDetectionBackgroundService(IConfiguration configuration)
|
||||
|
@ -12,8 +12,8 @@
|
||||
Признак окончания операции =
|
||||
( расстояние от долота до забоя > 0.03м ) ИЛИ
|
||||
( давление < 25атм ) ИЛИ
|
||||
( среднее арифметическое оборотов ротора за 10 сек < 5 об/м ) ИЛИ
|
||||
( глубина забоя в течении следующих 60 сек не изменяется больше чем на 0.003 );
|
||||
( среднее арифметическое оборотов ротора за 60 сек < 10 об/м ) ИЛИ
|
||||
( глубина забоя в течении следующих 150 сек не изменяется больше чем на 0.003 );
|
||||
|
||||
## Метод определения бурения в слайде
|
||||
Повторяет метод определения бурения в роторе, за исключением условия с оборотами ротора. Это уловие нужно инвертировать.
|
||||
|
@ -14,7 +14,8 @@
|
||||
( предыдущая операция == бурение в роторе или слайде)
|
||||
( расстояние от долота до забоя < 0,05м ) И
|
||||
( давление > 15 атм ) И
|
||||
( положение блока > 3м )
|
||||
( положение блока > 3м ) И
|
||||
( глубина забоя изменяется менее чем на 0,0001м в течении 150 сек)
|
||||
|
||||
Признак окончания операции =
|
||||
( расстояние от долота до забоя > 0.03м ) И
|
||||
|
@ -6,16 +6,16 @@
|
||||
|
||||
Признак начала операции =
|
||||
( давление > 15 атм ) И
|
||||
( расстояние от долота до забоя > 0.8м ) И
|
||||
( расстояние от долота до забоя > 0.15м ) И
|
||||
( расстояние от долота до забоя < 2.5м ) И
|
||||
( обороты ротора < 30 об/м ) И
|
||||
( движение тал.блока в течении 60 сек изменяется менее чем на 3 см ) И
|
||||
( движение тал.блока в течении 120 сек изменяется менее чем на 3 см ) И
|
||||
( давление за следующие 60 сек изменяется менее чем на 10 атм )
|
||||
|
||||
Признак окончания операции =
|
||||
( расстояние от долота до забоя > 2.5м ) ИЛИ
|
||||
( обороты ротора > 30 об/м ) ИЛИ
|
||||
( давление за следующие 10 сек вырастет на 5 атм ) ИЛИ
|
||||
( давление за следующие 10 сек вырастет на 15 атм ) ИЛИ
|
||||
( движение тал.блока в течении 10 сек изменяется более чем на 3 см )
|
||||
|
||||
## Ключевой параметр
|
||||
|
@ -0,0 +1,24 @@
|
||||
# Алгоритм определения Шаблонировки при бурении
|
||||
|
||||
## Описание
|
||||
Шаблонировка при бурении -
|
||||
|
||||
## Метод определения
|
||||
|
||||
Признак начала операции =
|
||||
( предыдущая операция == промывка )
|
||||
( давление > 15 атм ) И
|
||||
( положение блока увеличится на 0,5м за следующие 30сек ) И
|
||||
( Обороты ротора меньше 1 )
|
||||
|
||||
Признак окончания операции =
|
||||
(
|
||||
( высота блока не изменяется больше чем на 0.03м в течении 60 сек после окончания операции ) И
|
||||
( расстояние от долота до забоя > 0.03м ) И
|
||||
( давление > 15 атм )
|
||||
) ИЛИ
|
||||
( давление < 15 атм ) ИЛИ
|
||||
( Увеличение глубины забоя > 0,01м за 10 секунд)
|
||||
|
||||
## Ключевой параметр
|
||||
Продолжительность операции.
|
@ -434,7 +434,6 @@ namespace AsbCloudInfrastructure.Services.DrillingProgram
|
||||
IdCategory = fileEntity.IdCategory,
|
||||
IdWell = fileEntity.IdWell,
|
||||
Name = fileEntity.Name,
|
||||
PublishInfo = fileEntity.PublishInfo.Adapt<FilePublishInfoDto>(),
|
||||
Size = fileEntity.Size,
|
||||
UploadDate = fileEntity.UploadDate.ToRemoteDateTime(timezoneOffset),
|
||||
};
|
||||
|
@ -33,33 +33,6 @@ namespace AsbCloudInfrastructure.Services
|
||||
.Include(f => f.Well);
|
||||
}
|
||||
|
||||
public async Task<string> GetSharedUrlAsync(int idFileInfo, int idUser, IFileShareService fileShareService,
|
||||
CancellationToken token)
|
||||
{
|
||||
var fileInfo = await GetInfoAsync(idFileInfo, token);
|
||||
if (fileInfo is null)
|
||||
return null;
|
||||
var sharedUrl = await GetSharedUrlAsync(fileInfo, idUser, fileShareService, token);
|
||||
return sharedUrl;
|
||||
}
|
||||
|
||||
public async Task<string> GetSharedUrlAsync(FileInfoDto fileInfo, int idUser, IFileShareService fileShareService,
|
||||
CancellationToken token)
|
||||
{
|
||||
var fileWebUrl = fileInfo.PublishInfo?.WebStorageFileUrl;
|
||||
|
||||
if (!string.IsNullOrEmpty(fileWebUrl))
|
||||
return fileWebUrl;
|
||||
|
||||
var relativePath = GetUrl(fileInfo);
|
||||
var sharedUrl = await fileShareService.PublishFileToCloudAsync(relativePath,
|
||||
fileInfo.Name, token);
|
||||
|
||||
await SaveWeblinkToFileInfo(fileInfo.Id, idUser, sharedUrl, token);
|
||||
|
||||
return sharedUrl;
|
||||
}
|
||||
|
||||
public async Task<FileInfoDto> MoveAsync(int idWell, int? idUser, int idCategory,
|
||||
string destinationFileName, string srcFilePath, CancellationToken token = default)
|
||||
{
|
||||
@ -357,21 +330,6 @@ namespace AsbCloudInfrastructure.Services
|
||||
fileMark.IsDeleted = true;
|
||||
|
||||
return await db.SaveChangesAsync(token);
|
||||
}
|
||||
|
||||
private async Task<int> SaveWeblinkToFileInfo(int idFileInfo, int idUser, string weblink,
|
||||
CancellationToken token)
|
||||
{
|
||||
var fileInfo = await db.Files.FirstOrDefaultAsync(f => f.Id == idFileInfo, token)
|
||||
.ConfigureAwait(false);
|
||||
fileInfo.PublishInfo = new FilePublishInfo()
|
||||
{
|
||||
IdPublisher = idUser,
|
||||
Date = DateTime.UtcNow,
|
||||
WebStorageFileUrl = weblink
|
||||
};
|
||||
|
||||
return await db.SaveChangesAsync(token).ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,176 +0,0 @@
|
||||
using AsbCloudApp.Services;
|
||||
using Google.Apis.Auth.OAuth2;
|
||||
using Google.Apis.Auth.OAuth2.Flows;
|
||||
using Google.Apis.Drive.v3;
|
||||
using Google.Apis.Drive.v3.Data;
|
||||
using Google.Apis.Services;
|
||||
using Google.Apis.Util.Store;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AsbCloudInfrastructure.Services
|
||||
{
|
||||
public class GoogleDriveService : IFileShareService, IDisposable
|
||||
{
|
||||
private readonly DriveService service;
|
||||
|
||||
const string applicationName = "FileSharing";
|
||||
const string username = "asbautodrilling@gmail.com";
|
||||
const string redirectUri = "http://autodrilling.naftagaz.com/AuthCallback/IndexAsync";
|
||||
const string clientId = "1020584579240-f7amqg35qg7j94ta1ntgitajq27cgh49.apps.googleusercontent.com";
|
||||
const string clientSecret = "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";
|
||||
const string authorizationCode = "4/0AX4XfWjAV_cwaXdtBHHIseToLqI36PeMycW7wMCdZBmumADKu0Ov2AoVg3F6NDRCApmW8A";
|
||||
const string refreshToken = "1//04rHpwsBJqXWyCgYIARAAGAQSNwF-L9IrzEaVHpC_Ajim5ZF0_hlSyOOW-QFARlRx4Xanx_H9TxyuRJSCIMmdVDf6S-qejlGli54";
|
||||
//const string accessToken = "ya29.a0ARrdaM8jLcdNDylpV70X08ix-pqU-1QfLbmQy4iRb7KWUgl3keukmd2mx5AxraEO0eveR3I_p1EacrgtlbbxtNWbXxl_YPf4mQTbhhNaoltp2aSn6VndUlyydLDKzw9J9r8ouFNnVZip9fivBmc-AX_rWXsj";
|
||||
|
||||
static readonly IAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow(new GoogleAuthorizationCodeFlow.Initializer
|
||||
{
|
||||
ClientSecrets = new ClientSecrets
|
||||
{
|
||||
ClientId = clientId,
|
||||
ClientSecret = clientSecret
|
||||
},
|
||||
|
||||
Scopes = new[] { DriveService.Scope.Drive },
|
||||
DataStore = new FileDataStore(applicationName),//TODO: replace FileDataStore by thread safe static datastore service
|
||||
});
|
||||
|
||||
public GoogleDriveService()
|
||||
{
|
||||
service = MakeDriveServiceAsync(CancellationToken.None).Result;
|
||||
}
|
||||
|
||||
~GoogleDriveService()
|
||||
{
|
||||
Dispose();
|
||||
}
|
||||
|
||||
private async Task<DriveService> MakeDriveServiceAsync(CancellationToken cancellationToken)
|
||||
{
|
||||
var token = await flow.LoadTokenAsync(username, cancellationToken).ConfigureAwait(false);
|
||||
|
||||
if (flow.ShouldForceTokenRetrieval() || token is null || token.IsExpired(flow.Clock))
|
||||
{
|
||||
token = await flow.RefreshTokenAsync(clientId, refreshToken, cancellationToken).ConfigureAwait(false);
|
||||
//token = await flow.ExchangeCodeForTokenAsync(clientId, authorizationCode, redirectUri, cancellationToken).ConfigureAwait(false);
|
||||
await flow.DataStore.StoreAsync(username, token).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
var credential = new UserCredential(flow, username, token);
|
||||
|
||||
var newService = new DriveService(new BaseClientService.Initializer
|
||||
{
|
||||
HttpClientInitializer = credential,
|
||||
ApplicationName = applicationName
|
||||
});
|
||||
return newService;
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<string>> GetAllFileNames()
|
||||
{
|
||||
var fileList = service.Files.List();
|
||||
fileList.Fields = "files(id, webViewLink, size)";
|
||||
|
||||
var result = new List<Google.Apis.Drive.v3.Data.File>();
|
||||
string pageToken = null;
|
||||
do
|
||||
{
|
||||
fileList.PageToken = pageToken;
|
||||
var filesResult = await fileList.ExecuteAsync();
|
||||
var files = filesResult.Files;
|
||||
pageToken = filesResult.NextPageToken;
|
||||
result.AddRange(files);
|
||||
} while (pageToken != null);
|
||||
|
||||
return result.Select(r => r.Name);
|
||||
}
|
||||
|
||||
public async Task<string> GetFileWebLinkAsync(string idFile,
|
||||
CancellationToken token = default)
|
||||
{
|
||||
var fileList = service.Files.List();
|
||||
fileList.Fields = "files(id, webViewLink, size)";
|
||||
var filesResult = await fileList.ExecuteAsync(token)
|
||||
.ConfigureAwait(false);
|
||||
var file = filesResult.Files.FirstOrDefault(f => f.Id == idFile);
|
||||
return file?.WebViewLink ?? string.Empty;
|
||||
}
|
||||
|
||||
public async Task<string> CreateFolderAsync(string folderName,
|
||||
CancellationToken token = default)
|
||||
{
|
||||
var driveFolder = new Google.Apis.Drive.v3.Data.File();
|
||||
driveFolder.Name = folderName;
|
||||
driveFolder.MimeType = "application/vnd.google-apps.folder";
|
||||
//driveFolder.Parents = new string[] { parent };
|
||||
var command = service.Files.Create(driveFolder);
|
||||
var file = await command.ExecuteAsync(token)
|
||||
.ConfigureAwait(false);
|
||||
return file.Id;
|
||||
}
|
||||
|
||||
public async Task CreatePublicPermissionForFileAsync(string idFile,
|
||||
CancellationToken token = default)
|
||||
{
|
||||
var permission = new Permission() { Type = "anyone", Role = "reader" };
|
||||
var addPermissionRequest = service.Permissions.Create(permission, idFile);
|
||||
await addPermissionRequest.ExecuteAsync(token)
|
||||
.ConfigureAwait(false);
|
||||
}
|
||||
|
||||
public async Task<string> UploadFileAsync(Stream file, string fileName, string fileMime,
|
||||
string fileDescription, CancellationToken token = default)
|
||||
{
|
||||
var driveFile = new Google.Apis.Drive.v3.Data.File();
|
||||
driveFile.Name = fileName;
|
||||
driveFile.Description = fileDescription;
|
||||
driveFile.MimeType = fileMime;
|
||||
//driveFile.Parents = new [] {folder};
|
||||
|
||||
var request = service.Files.Create(driveFile, file, fileMime);
|
||||
request.Fields = "id";
|
||||
|
||||
var response = await request.UploadAsync(token)
|
||||
.ConfigureAwait(false);
|
||||
if (response.Status != Google.Apis.Upload.UploadStatus.Completed)
|
||||
throw response.Exception;
|
||||
|
||||
return request.ResponseBody.Id;
|
||||
}
|
||||
|
||||
public async Task DeleteFileAsync(string fileId,
|
||||
CancellationToken token = default)
|
||||
{
|
||||
var command = service.Files.Delete(fileId);
|
||||
await command.ExecuteAsync(token)
|
||||
.ConfigureAwait(false);
|
||||
}
|
||||
|
||||
#pragma warning disable CA1816 // Методы Dispose должны вызывать SuppressFinalize
|
||||
public void Dispose()
|
||||
{
|
||||
service?.Dispose();
|
||||
}
|
||||
#pragma warning restore CA1816 // Методы Dispose должны вызывать SuppressFinalize
|
||||
|
||||
public async Task<string> PublishFileToCloudAsync(string filePath, string originalName, CancellationToken token)
|
||||
{
|
||||
await using var fileStream = System.IO.File.Open(filePath, FileMode.Open);
|
||||
var uploadedFileId = await UploadFileAsync(fileStream, originalName,
|
||||
"", "uploaded", token)
|
||||
.ConfigureAwait(false);
|
||||
|
||||
await CreatePublicPermissionForFileAsync(uploadedFileId, token)
|
||||
.ConfigureAwait(false);
|
||||
|
||||
var webLink = await GetFileWebLinkAsync(uploadedFileId, token)
|
||||
.ConfigureAwait(false);
|
||||
|
||||
return webLink;
|
||||
}
|
||||
}
|
||||
}
|
@ -101,7 +101,7 @@ namespace AsbCloudInfrastructure.Services
|
||||
var timezone = wellService.GetTimezone(idWell);
|
||||
entity.IdWell = idWell;
|
||||
entity.Timestamp = dto.Timestamp.ToUtcDateTimeOffset(timezone.Hours);
|
||||
entity.Data = (RawData)dto.Data;
|
||||
entity.Data = dto.Data.Adapt<RawData>();
|
||||
|
||||
return await db.SaveChangesAsync(token).ConfigureAwait(false);
|
||||
}
|
||||
|
@ -1,14 +0,0 @@
|
||||
using AsbCloudApp.Data;
|
||||
using AsbCloudApp.Services;
|
||||
using AsbCloudDb.Model;
|
||||
using AsbCloudInfrastructure.Repository;
|
||||
|
||||
namespace AsbCloudInfrastructure.Services
|
||||
{
|
||||
public class OperationValueService : CrudWellRelatedServiceBase<OperationValueDto, OperationValue>, IOperationValueService
|
||||
{
|
||||
public OperationValueService(IAsbCloudDbContext context) : base(context)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
@ -75,16 +75,6 @@ namespace AsbCloudInfrastructure.Services
|
||||
return dto;
|
||||
}
|
||||
|
||||
public async Task<UserRoleDto> GetByNameAsync(string name, CancellationToken token = default)
|
||||
{
|
||||
var entity = await cacheUserRoles.FirstOrDefaultAsync(r => r.Caption == name, token)
|
||||
.ConfigureAwait(false);
|
||||
if (entity is null)
|
||||
return null;
|
||||
var dto = Convert(entity);
|
||||
return dto;
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<UserRoleDto>> GetByNamesAsync(IEnumerable<string> names, CancellationToken token = default)
|
||||
{
|
||||
if (names?.Any() != true)
|
||||
|
@ -167,28 +167,6 @@ namespace AsbCloudInfrastructure.Services
|
||||
}), token).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
public bool HasAnyRoleOf(int idUser, IEnumerable<string> roleNames)
|
||||
{
|
||||
if (!roleNames.Any())
|
||||
return true;
|
||||
var userRoleNames = GetRolesNamesByIdUser(idUser);
|
||||
foreach (var roleName in userRoleNames)
|
||||
if (roleNames.Contains(roleName))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
public bool HasAnyRoleOf(int idUser, IEnumerable<int> roleIds)
|
||||
{
|
||||
if (!roleIds.Any())
|
||||
return true;
|
||||
var userRoles = GetRolesByIdUser(idUser);
|
||||
foreach (var role in userRoles)
|
||||
if (roleIds.Contains(role.Id))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
public bool HasPermission(int idUser, string permissionName)
|
||||
{
|
||||
if (idUser == 1)
|
||||
|
@ -125,7 +125,7 @@ namespace AsbCloudWebApi.Tests.ServicesTests
|
||||
wellServiceMock.Setup(s => s.GetTimezone(It.IsAny<int>())).Returns(timezone);
|
||||
wellServiceMock.Setup(s => s.GetOrDefaultAsync(It.IsAny<int>(),CancellationToken.None)).Returns(Task.Run(() => wellDto));
|
||||
var operationValueService = new OperationValueService(context);
|
||||
var scheduleService = new ScheduleService(context, wellServiceMock.Object);
|
||||
var scheduleService = new ScheduleRepository(context, wellServiceMock.Object);
|
||||
|
||||
service = new DetectedOperationService(context, wellServiceMock.Object, operationValueService, scheduleService);
|
||||
request = new DetectedOperationRequest
|
||||
|
@ -1,7 +1,7 @@
|
||||
using AsbCloudApp.Data;
|
||||
using AsbCloudApp.Services;
|
||||
using AsbCloudDb.Model;
|
||||
using AsbCloudInfrastructure.Services;
|
||||
using AsbCloudInfrastructure.Repository;
|
||||
using Moq;
|
||||
using System;
|
||||
using System.Linq;
|
||||
@ -14,7 +14,7 @@ namespace AsbCloudWebApi.Tests.ServicesTests
|
||||
public class ScheduleServiceTest
|
||||
{
|
||||
private readonly AsbCloudDbContext context;
|
||||
private readonly ScheduleService scheduleService;
|
||||
private readonly ScheduleRepository scheduleService;
|
||||
private Deposit deposit = new Deposit { Id = 1, Caption = "Депозит 1" };
|
||||
private Cluster clater = new Cluster { Id = 1, Caption = "Кластер 1", IdDeposit = 1, Timezone = new SimpleTimezone() };
|
||||
private Schedule scd = new Schedule
|
||||
@ -71,7 +71,7 @@ namespace AsbCloudWebApi.Tests.ServicesTests
|
||||
var timezone = new SimpleTimezoneDto { Hours = 5 };
|
||||
var wellServiceMock = new Mock<IWellService>();
|
||||
wellServiceMock.Setup(s => s.GetTimezone(It.IsAny<int>())).Returns(timezone);
|
||||
scheduleService = new ScheduleService(context, wellServiceMock.Object);
|
||||
scheduleService = new ScheduleRepository(context, wellServiceMock.Object);
|
||||
AsbCloudInfrastructure.DependencyInjection.MapsterSetup();
|
||||
}
|
||||
|
||||
|
@ -20,7 +20,7 @@ namespace AsbCloudWebApi.Controllers
|
||||
[Authorize]
|
||||
public abstract class CrudWellRelatedController<T, TService> : CrudController<T, TService>
|
||||
where T : IId, IWellRelated
|
||||
where TService : ICrudWellRelatedService<T>
|
||||
where TService : IRepositoryWellRelated<T>
|
||||
{
|
||||
protected readonly IWellService wellService;
|
||||
|
||||
|
@ -15,11 +15,11 @@ namespace AsbCloudWebApi.Controllers
|
||||
[ApiController]
|
||||
[Route("api/[controller]")]
|
||||
[Authorize]
|
||||
public class DrillFlowChartController : CrudWellRelatedController<DrillFlowChartDto, IDrillFlowChartService>
|
||||
public class DrillFlowChartController : CrudWellRelatedController<DrillFlowChartDto, IDrillFlowChartRepository>
|
||||
{
|
||||
private readonly ITelemetryService telemetryService;
|
||||
|
||||
public DrillFlowChartController(IWellService wellService, IDrillFlowChartService service,
|
||||
public DrillFlowChartController(IWellService wellService, IDrillFlowChartRepository service,
|
||||
ITelemetryService telemetryService)
|
||||
: base(wellService, service)
|
||||
{
|
||||
|
@ -11,9 +11,9 @@ namespace AsbCloudWebApi.Controllers
|
||||
[Route("api/operationValue")]
|
||||
[ApiController]
|
||||
[Authorize]
|
||||
public class OperationValueController : CrudWellRelatedController<OperationValueDto, IOperationValueService>
|
||||
public class OperationValueController : CrudWellRelatedController<OperationValueDto, IRepositoryWellRelated<OperationValueDto>>
|
||||
{
|
||||
public OperationValueController(IOperationValueService service, IWellService wellService) : base(wellService, service)
|
||||
public OperationValueController(IRepositoryWellRelated<OperationValueDto> service, IWellService wellService) : base(wellService, service)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
@ -14,11 +14,11 @@ namespace AsbCloudWebApi.Controllers
|
||||
[Route("api/schedule")]
|
||||
[ApiController]
|
||||
[Authorize]
|
||||
public class ScheduleController : CrudWellRelatedController<ScheduleDto, IScheduleService>
|
||||
public class ScheduleController : CrudWellRelatedController<ScheduleDto, IScheduleRepository>
|
||||
{
|
||||
private readonly IScheduleService scheduleService;
|
||||
private readonly IScheduleRepository scheduleService;
|
||||
|
||||
public ScheduleController(IScheduleService scheduleService, IWellService wellService)
|
||||
public ScheduleController(IScheduleRepository scheduleService, IWellService wellService)
|
||||
: base(wellService, scheduleService)
|
||||
{
|
||||
this.scheduleService = service;
|
||||
|
@ -8,6 +8,9 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace AsbCloudWebApi.Controllers
|
||||
{
|
||||
/// <summary>
|
||||
/// Контроллер настроек для пользователя
|
||||
/// </summary>
|
||||
[Route("api/[controller]")]
|
||||
[ApiController]
|
||||
[Authorize]
|
||||
@ -20,8 +23,15 @@ namespace AsbCloudWebApi.Controllers
|
||||
this.service = service;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Получить настройки
|
||||
/// </summary>
|
||||
/// <param name="key"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet("{key}")]
|
||||
[Permission]
|
||||
[ProducesResponseType(typeof(object), (int)System.Net.HttpStatusCode.OK)]
|
||||
[Produces("application/json")]
|
||||
public virtual async Task<IActionResult> GetAsync(
|
||||
[StringLength(255, MinimumLength = 1, ErrorMessage = "The key value cannot less then 1 character and greater then 255. ")]
|
||||
string key,
|
||||
@ -32,36 +42,37 @@ namespace AsbCloudWebApi.Controllers
|
||||
return Forbid();
|
||||
|
||||
var result = await service.GetOrDefaultAsync((int)userId, key, token).ConfigureAwait(false);
|
||||
return Ok(result);
|
||||
}
|
||||
|
||||
[HttpPost("{key}")]
|
||||
[Permission]
|
||||
public virtual async Task<ActionResult<int>> InsertAsync(string key, [FromBody] object value, CancellationToken token)
|
||||
{
|
||||
var userId = User.GetUserId();
|
||||
if (userId is null)
|
||||
return Forbid();
|
||||
|
||||
var result = await service.InsertAsync((int)userId, key, value, token).ConfigureAwait(false);
|
||||
if (result == IUserSettingsRepository.ErrorKeyIsUsed)
|
||||
return BadRequest(ArgumentInvalidException.MakeValidationError(nameof(key), "is already used"));
|
||||
return Ok(result);
|
||||
var actionResult = new JsonResult(result);
|
||||
actionResult.ContentType = "application/json";
|
||||
return actionResult;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// записать новые или обновить старые
|
||||
/// </summary>
|
||||
/// <param name="key"></param>
|
||||
/// <param name="value"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPut("{key}")]
|
||||
public virtual async Task<ActionResult<int>> UpdateAsync(string key, [FromBody] object value, CancellationToken token)
|
||||
public virtual async Task<ActionResult<int>> UpsertAsync(string key, [FromBody] System.Text.Json.JsonDocument value, CancellationToken token)
|
||||
{
|
||||
var userId = User.GetUserId();
|
||||
if (userId is null)
|
||||
return Forbid();
|
||||
|
||||
var result = await service.UpdateAsync((int)userId, key, value, token).ConfigureAwait(false);
|
||||
var result = await service.UpsertAsync((int)userId, key, value, token).ConfigureAwait(false);
|
||||
if (result < 0)
|
||||
return BadRequest(ArgumentInvalidException.MakeValidationError(nameof(key), "not found"));
|
||||
return Ok(result);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Удалить настройки пользователя по ключу
|
||||
/// </summary>
|
||||
/// <param name="key"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
[HttpDelete("{key}")]
|
||||
public virtual async Task<ActionResult<int>> DeleteAsync(string key, CancellationToken token)
|
||||
{
|
||||
|
@ -1,50 +1,50 @@
|
||||
{
|
||||
"files": {
|
||||
"main.css": "/static/css/main.61ecfb0d.chunk.css",
|
||||
"main.js": "/static/js/main.2493f2fa.chunk.js",
|
||||
"main.js.map": "/static/js/main.2493f2fa.chunk.js.map",
|
||||
"runtime-main.js": "/static/js/runtime-main.83ebcb38.js",
|
||||
"runtime-main.js.map": "/static/js/runtime-main.83ebcb38.js.map",
|
||||
"static/js/2.ebe1f792.chunk.js": "/static/js/2.ebe1f792.chunk.js",
|
||||
"static/js/2.ebe1f792.chunk.js.map": "/static/js/2.ebe1f792.chunk.js.map",
|
||||
"main.css": "/static/css/main.c2a82e71.chunk.css",
|
||||
"main.js": "/static/js/main.01e9ada9.chunk.js",
|
||||
"main.js.map": "/static/js/main.01e9ada9.chunk.js.map",
|
||||
"runtime-main.js": "/static/js/runtime-main.8da12c69.js",
|
||||
"runtime-main.js.map": "/static/js/runtime-main.8da12c69.js.map",
|
||||
"static/js/2.f196b75b.chunk.js": "/static/js/2.f196b75b.chunk.js",
|
||||
"static/js/2.f196b75b.chunk.js.map": "/static/js/2.f196b75b.chunk.js.map",
|
||||
"static/css/3.f8ac3883.chunk.css": "/static/css/3.f8ac3883.chunk.css",
|
||||
"static/js/3.a763380a.chunk.js": "/static/js/3.a763380a.chunk.js",
|
||||
"static/js/3.a763380a.chunk.js.map": "/static/js/3.a763380a.chunk.js.map",
|
||||
"static/js/3.31b66021.chunk.js": "/static/js/3.31b66021.chunk.js",
|
||||
"static/js/3.31b66021.chunk.js.map": "/static/js/3.31b66021.chunk.js.map",
|
||||
"static/css/4.f8ac3883.chunk.css": "/static/css/4.f8ac3883.chunk.css",
|
||||
"static/js/4.14deb3a9.chunk.js": "/static/js/4.14deb3a9.chunk.js",
|
||||
"static/js/4.14deb3a9.chunk.js.map": "/static/js/4.14deb3a9.chunk.js.map",
|
||||
"static/js/5.54daf1dd.chunk.js": "/static/js/5.54daf1dd.chunk.js",
|
||||
"static/js/5.54daf1dd.chunk.js.map": "/static/js/5.54daf1dd.chunk.js.map",
|
||||
"static/js/6.2f64a277.chunk.js": "/static/js/6.2f64a277.chunk.js",
|
||||
"static/js/6.2f64a277.chunk.js.map": "/static/js/6.2f64a277.chunk.js.map",
|
||||
"static/js/7.8c90cea1.chunk.js": "/static/js/7.8c90cea1.chunk.js",
|
||||
"static/js/7.8c90cea1.chunk.js.map": "/static/js/7.8c90cea1.chunk.js.map",
|
||||
"static/js/8.6e937634.chunk.js": "/static/js/8.6e937634.chunk.js",
|
||||
"static/js/8.6e937634.chunk.js.map": "/static/js/8.6e937634.chunk.js.map",
|
||||
"static/js/9.3b35991a.chunk.js": "/static/js/9.3b35991a.chunk.js",
|
||||
"static/js/9.3b35991a.chunk.js.map": "/static/js/9.3b35991a.chunk.js.map",
|
||||
"static/js/10.69527c71.chunk.js": "/static/js/10.69527c71.chunk.js",
|
||||
"static/js/10.69527c71.chunk.js.map": "/static/js/10.69527c71.chunk.js.map",
|
||||
"static/js/11.f8320c6a.chunk.js": "/static/js/11.f8320c6a.chunk.js",
|
||||
"static/js/11.f8320c6a.chunk.js.map": "/static/js/11.f8320c6a.chunk.js.map",
|
||||
"static/js/12.7a9654fd.chunk.js": "/static/js/12.7a9654fd.chunk.js",
|
||||
"static/js/12.7a9654fd.chunk.js.map": "/static/js/12.7a9654fd.chunk.js.map",
|
||||
"static/js/13.35247644.chunk.js": "/static/js/13.35247644.chunk.js",
|
||||
"static/js/13.35247644.chunk.js.map": "/static/js/13.35247644.chunk.js.map",
|
||||
"static/js/14.0f147158.chunk.js": "/static/js/14.0f147158.chunk.js",
|
||||
"static/js/14.0f147158.chunk.js.map": "/static/js/14.0f147158.chunk.js.map",
|
||||
"static/js/4.1f09e89e.chunk.js": "/static/js/4.1f09e89e.chunk.js",
|
||||
"static/js/4.1f09e89e.chunk.js.map": "/static/js/4.1f09e89e.chunk.js.map",
|
||||
"static/js/5.ef929bfe.chunk.js": "/static/js/5.ef929bfe.chunk.js",
|
||||
"static/js/5.ef929bfe.chunk.js.map": "/static/js/5.ef929bfe.chunk.js.map",
|
||||
"static/js/6.88051835.chunk.js": "/static/js/6.88051835.chunk.js",
|
||||
"static/js/6.88051835.chunk.js.map": "/static/js/6.88051835.chunk.js.map",
|
||||
"static/js/7.4f3c315a.chunk.js": "/static/js/7.4f3c315a.chunk.js",
|
||||
"static/js/7.4f3c315a.chunk.js.map": "/static/js/7.4f3c315a.chunk.js.map",
|
||||
"static/js/8.8e9a1dc7.chunk.js": "/static/js/8.8e9a1dc7.chunk.js",
|
||||
"static/js/8.8e9a1dc7.chunk.js.map": "/static/js/8.8e9a1dc7.chunk.js.map",
|
||||
"static/js/9.71667cac.chunk.js": "/static/js/9.71667cac.chunk.js",
|
||||
"static/js/9.71667cac.chunk.js.map": "/static/js/9.71667cac.chunk.js.map",
|
||||
"static/js/10.e5247b1b.chunk.js": "/static/js/10.e5247b1b.chunk.js",
|
||||
"static/js/10.e5247b1b.chunk.js.map": "/static/js/10.e5247b1b.chunk.js.map",
|
||||
"static/js/11.70112c8f.chunk.js": "/static/js/11.70112c8f.chunk.js",
|
||||
"static/js/11.70112c8f.chunk.js.map": "/static/js/11.70112c8f.chunk.js.map",
|
||||
"static/js/12.2265b74f.chunk.js": "/static/js/12.2265b74f.chunk.js",
|
||||
"static/js/12.2265b74f.chunk.js.map": "/static/js/12.2265b74f.chunk.js.map",
|
||||
"static/js/13.063a16c9.chunk.js": "/static/js/13.063a16c9.chunk.js",
|
||||
"static/js/13.063a16c9.chunk.js.map": "/static/js/13.063a16c9.chunk.js.map",
|
||||
"static/js/14.50a284b1.chunk.js": "/static/js/14.50a284b1.chunk.js",
|
||||
"static/js/14.50a284b1.chunk.js.map": "/static/js/14.50a284b1.chunk.js.map",
|
||||
"index.html": "/index.html",
|
||||
"static/css/3.f8ac3883.chunk.css.map": "/static/css/3.f8ac3883.chunk.css.map",
|
||||
"static/css/4.f8ac3883.chunk.css.map": "/static/css/4.f8ac3883.chunk.css.map",
|
||||
"static/css/main.61ecfb0d.chunk.css.map": "/static/css/main.61ecfb0d.chunk.css.map",
|
||||
"static/js/2.ebe1f792.chunk.js.LICENSE.txt": "/static/js/2.ebe1f792.chunk.js.LICENSE.txt",
|
||||
"static/css/main.c2a82e71.chunk.css.map": "/static/css/main.c2a82e71.chunk.css.map",
|
||||
"static/js/2.f196b75b.chunk.js.LICENSE.txt": "/static/js/2.f196b75b.chunk.js.LICENSE.txt",
|
||||
"static/media/ClusterIcon.f85713df.svg": "/static/media/ClusterIcon.f85713df.svg",
|
||||
"static/media/DepositIcon.9688e406.svg": "/static/media/DepositIcon.9688e406.svg"
|
||||
},
|
||||
"entrypoints": [
|
||||
"static/js/runtime-main.83ebcb38.js",
|
||||
"static/js/2.ebe1f792.chunk.js",
|
||||
"static/css/main.61ecfb0d.chunk.css",
|
||||
"static/js/main.2493f2fa.chunk.js"
|
||||
"static/js/runtime-main.8da12c69.js",
|
||||
"static/js/2.f196b75b.chunk.js",
|
||||
"static/css/main.c2a82e71.chunk.css",
|
||||
"static/js/main.01e9ada9.chunk.js"
|
||||
]
|
||||
}
|
@ -1 +1 @@
|
||||
<!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>АСБ Vision</title><script defer="defer" src="/vendors.8b2328d4.js"></script><script defer="defer" src="/main.d469f489.js"></script></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
|
||||
<!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>АСБ Vision</title><script defer="defer" src="/vendors.5c0d0b53.js"></script><script defer="defer" src="/main.05a81b59.js"></script></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
|
Loading…
Reference in New Issue
Block a user