forked from ddrilling/AsbCloudServer
namespace to fileScope
This commit is contained in:
parent
6c64321c30
commit
cb20a81cb0
@ -2,53 +2,52 @@ using AsbCloudApp.Data;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics.CodeAnalysis;
|
using System.Diagnostics.CodeAnalysis;
|
||||||
|
|
||||||
namespace AsbCloudApp.Comparators
|
namespace AsbCloudApp.Comparators;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Компаратор для сравнения сущностей по ID
|
||||||
|
/// </summary>
|
||||||
|
public class ComparerIId : IComparer<IId>, IEqualityComparer<IId>
|
||||||
{
|
{
|
||||||
|
private static readonly ComparerIId instance = new();
|
||||||
|
private ComparerIId() { }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Компаратор для сравнения сущностей по ID
|
/// Singleton ссылка
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class ComparerIId : IComparer<IId>, IEqualityComparer<IId>
|
/// <returns></returns>
|
||||||
{
|
public static ComparerIId GetInstance() => instance;
|
||||||
private static readonly ComparerIId instance = new();
|
|
||||||
private ComparerIId() { }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Singleton ссылка
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns></returns>
|
/// <param name="x"></param>
|
||||||
public static ComparerIId GetInstance() => instance;
|
/// <param name="y"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public int Compare(IId? x, IId? y)
|
||||||
|
=> (x?.Id??0).CompareTo(y?.Id??0);
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="x"></param>
|
/// <param name="x"></param>
|
||||||
/// <param name="y"></param>
|
/// <param name="y"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public int Compare(IId? x, IId? y)
|
public bool Equals(IId? x, IId? y)
|
||||||
=> (x?.Id??0).CompareTo(y?.Id??0);
|
{
|
||||||
|
if (x is not null && y is not null)
|
||||||
|
return x.Id == y.Id;
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="x"></param>
|
|
||||||
/// <param name="y"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public bool Equals(IId? x, IId? y)
|
|
||||||
{
|
|
||||||
if (x is not null && y is not null)
|
|
||||||
return x.Id == y.Id;
|
|
||||||
|
|
||||||
return x == y;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="obj"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public int GetHashCode([DisallowNull] IId obj) =>
|
|
||||||
obj.GetHashCode();
|
|
||||||
|
|
||||||
|
return x == y;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="obj"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public int GetHashCode([DisallowNull] IId obj) =>
|
||||||
|
obj.GetHashCode();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,21 +1,20 @@
|
|||||||
using AsbCloudApp.Data.SAUB;
|
using AsbCloudApp.Data.SAUB;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace AsbCloudApp.Comparators
|
namespace AsbCloudApp.Comparators;
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public class TelemetryUserDtoComparer : IEqualityComparer<TelemetryUserDto>
|
||||||
{
|
{
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
public class TelemetryUserDtoComparer : IEqualityComparer<TelemetryUserDto>
|
public bool Equals(TelemetryUserDto? prevUser, TelemetryUserDto? nextUser)
|
||||||
{
|
{
|
||||||
/// <inheritdoc/>
|
if (prevUser is not null && nextUser is not null)
|
||||||
public bool Equals(TelemetryUserDto? prevUser, TelemetryUserDto? nextUser)
|
return prevUser.Id == nextUser.Id;
|
||||||
{
|
|
||||||
if (prevUser is not null && nextUser is not null)
|
|
||||||
return prevUser.Id == nextUser.Id;
|
|
||||||
|
|
||||||
return prevUser == nextUser;
|
return prevUser == nextUser;
|
||||||
}
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public int GetHashCode(TelemetryUserDto user) => user.Id.GetHashCode();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public int GetHashCode(TelemetryUserDto user) => user.Id.GetHashCode();
|
||||||
}
|
}
|
||||||
|
@ -1,196 +1,195 @@
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
|
||||||
namespace System.Collections.Generic
|
namespace System.Collections.Generic;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Цикличный массив
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T"></typeparam>
|
||||||
|
public class CyclicArray<T> : IEnumerable<T>
|
||||||
{
|
{
|
||||||
|
readonly T[] array;
|
||||||
|
int used, current = -1;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Цикличный массив
|
/// constructor
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <typeparam name="T"></typeparam>
|
/// <param name="capacity"></param>
|
||||||
public class CyclicArray<T> : IEnumerable<T>
|
public CyclicArray(int capacity)
|
||||||
{
|
{
|
||||||
readonly T[] array;
|
array = new T[capacity];
|
||||||
int used, current = -1;
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// constructor
|
/// Количество элементов в массиве
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="capacity"></param>
|
public int Count => used;
|
||||||
public CyclicArray(int capacity)
|
|
||||||
|
/// <summary>
|
||||||
|
/// Добавить новый элемент<br/>
|
||||||
|
/// Если capacity достигнуто, то вытеснит самый первый элемент
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="item"></param>
|
||||||
|
public void Add(T item)
|
||||||
|
{
|
||||||
|
current = (++current) % array.Length;
|
||||||
|
array[current] = item;
|
||||||
|
if (used < array.Length)
|
||||||
|
used++;
|
||||||
|
UpdatedInvoke(current, item);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Добавить новые элементы.<br/>
|
||||||
|
/// Если capacity достигнуто, то вытеснит самые первые элементы.<br/>
|
||||||
|
/// Не вызывает Updated!
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="items"></param>
|
||||||
|
public void AddRange(IEnumerable<T> items)
|
||||||
|
{
|
||||||
|
var capacity = array.Length;
|
||||||
|
var newItems = items.TakeLast(capacity).ToArray();
|
||||||
|
if (newItems.Length == capacity)
|
||||||
{
|
{
|
||||||
array = new T[capacity];
|
Array.Copy(newItems, array, capacity);
|
||||||
|
current = capacity - 1;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
/// <summary>
|
|
||||||
/// Количество элементов в массиве
|
|
||||||
/// </summary>
|
|
||||||
public int Count => used;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Добавить новый элемент<br/>
|
|
||||||
/// Если capacity достигнуто, то вытеснит самый первый элемент
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="item"></param>
|
|
||||||
public void Add(T item)
|
|
||||||
{
|
{
|
||||||
current = (++current) % array.Length;
|
current = (++current) % capacity;
|
||||||
array[current] = item;
|
var countToEndOfArray = capacity - current;
|
||||||
if (used < array.Length)
|
if (newItems.Length <= countToEndOfArray)
|
||||||
used++;
|
|
||||||
UpdatedInvoke(current, item);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Добавить новые элементы.<br/>
|
|
||||||
/// Если capacity достигнуто, то вытеснит самые первые элементы.<br/>
|
|
||||||
/// Не вызывает Updated!
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="items"></param>
|
|
||||||
public void AddRange(IEnumerable<T> items)
|
|
||||||
{
|
|
||||||
var capacity = array.Length;
|
|
||||||
var newItems = items.TakeLast(capacity).ToArray();
|
|
||||||
if (newItems.Length == capacity)
|
|
||||||
{
|
{
|
||||||
Array.Copy(newItems, array, capacity);
|
Array.Copy(newItems, 0, array, current, newItems.Length);
|
||||||
current = capacity - 1;
|
current += newItems.Length - 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
current = (++current) % capacity;
|
var firstStepLength = countToEndOfArray;
|
||||||
var countToEndOfArray = capacity - current;
|
Array.Copy(newItems, 0, array, current, firstStepLength);
|
||||||
if (newItems.Length <= countToEndOfArray)
|
var secondStepCount = newItems.Length - firstStepLength;
|
||||||
{
|
Array.Copy(newItems, firstStepLength, array, 0, secondStepCount);
|
||||||
Array.Copy(newItems, 0, array, current, newItems.Length);
|
current = secondStepCount - 1;
|
||||||
current += newItems.Length - 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
var firstStepLength = countToEndOfArray;
|
|
||||||
Array.Copy(newItems, 0, array, current, firstStepLength);
|
|
||||||
var secondStepCount = newItems.Length - firstStepLength;
|
|
||||||
Array.Copy(newItems, firstStepLength, array, 0, secondStepCount);
|
|
||||||
current = secondStepCount - 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (used < capacity)
|
|
||||||
{
|
|
||||||
used += newItems.Length;
|
|
||||||
used = used > capacity ? capacity : used;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
if (used < capacity)
|
||||||
/// Индекс
|
{
|
||||||
/// </summary>
|
used += newItems.Length;
|
||||||
/// <param name="index"></param>
|
used = used > capacity ? capacity : used;
|
||||||
/// <returns></returns>
|
}
|
||||||
public T this[int index]
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Индекс
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="index"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public T this[int index]
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (used == 0)
|
||||||
|
throw new IndexOutOfRangeException();
|
||||||
|
|
||||||
|
var i = (current + 1 + index) % used;
|
||||||
|
return array[i];
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
var devider = used > 0 ? used : array.Length;
|
||||||
|
var i = (current + 1 + index) % devider;
|
||||||
|
array[i] = value;
|
||||||
|
UpdatedInvoke(current, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// событие на изменение элемента в массиве
|
||||||
|
/// </summary>
|
||||||
|
public event EventHandler<(int index, T value)>? Updated;
|
||||||
|
private void UpdatedInvoke(int index, T value)
|
||||||
|
{
|
||||||
|
Updated?.Invoke(this, (index, value));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Агрегирование значения по всему массиву
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="Tout"></typeparam>
|
||||||
|
/// <param name="func"></param>
|
||||||
|
/// <param name="startValue"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public Tout Aggregate<Tout>(Func<T, Tout, Tout> func, Tout startValue)
|
||||||
|
{
|
||||||
|
Tout result = startValue;
|
||||||
|
for (int i = 0; i < used; i++)
|
||||||
|
result = func(this[i], result);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public IEnumerator<T> GetEnumerator()
|
||||||
|
=> new CyclycListEnumerator<T>(array, current, used);
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
IEnumerator IEnumerable.GetEnumerator()
|
||||||
|
=> GetEnumerator();
|
||||||
|
|
||||||
|
class CyclycListEnumerator<Te> : IEnumerator<Te>
|
||||||
|
{
|
||||||
|
private readonly Te[] array;
|
||||||
|
private readonly int used;
|
||||||
|
private readonly int first;
|
||||||
|
private int current = -1;
|
||||||
|
|
||||||
|
public CyclycListEnumerator(Te[] array, int first, int used)
|
||||||
|
{
|
||||||
|
this.array = new Te[array.Length];
|
||||||
|
array.CopyTo(this.array, 0);
|
||||||
|
this.used = used;
|
||||||
|
this.first = first;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Te Current
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
if (used == 0)
|
if (IsCurrentOk())
|
||||||
throw new IndexOutOfRangeException();
|
|
||||||
|
|
||||||
var i = (current + 1 + index) % used;
|
|
||||||
return array[i];
|
|
||||||
}
|
|
||||||
set
|
|
||||||
{
|
|
||||||
var devider = used > 0 ? used : array.Length;
|
|
||||||
var i = (current + 1 + index) % devider;
|
|
||||||
array[i] = value;
|
|
||||||
UpdatedInvoke(current, value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// событие на изменение элемента в массиве
|
|
||||||
/// </summary>
|
|
||||||
public event EventHandler<(int index, T value)>? Updated;
|
|
||||||
private void UpdatedInvoke(int index, T value)
|
|
||||||
{
|
|
||||||
Updated?.Invoke(this, (index, value));
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Агрегирование значения по всему массиву
|
|
||||||
/// </summary>
|
|
||||||
/// <typeparam name="Tout"></typeparam>
|
|
||||||
/// <param name="func"></param>
|
|
||||||
/// <param name="startValue"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public Tout Aggregate<Tout>(Func<T, Tout, Tout> func, Tout startValue)
|
|
||||||
{
|
|
||||||
Tout result = startValue;
|
|
||||||
for (int i = 0; i < used; i++)
|
|
||||||
result = func(this[i], result);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public IEnumerator<T> GetEnumerator()
|
|
||||||
=> new CyclycListEnumerator<T>(array, current, used);
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
IEnumerator IEnumerable.GetEnumerator()
|
|
||||||
=> GetEnumerator();
|
|
||||||
|
|
||||||
class CyclycListEnumerator<Te> : IEnumerator<Te>
|
|
||||||
{
|
|
||||||
private readonly Te[] array;
|
|
||||||
private readonly int used;
|
|
||||||
private readonly int first;
|
|
||||||
private int current = -1;
|
|
||||||
|
|
||||||
public CyclycListEnumerator(Te[] array, int first, int used)
|
|
||||||
{
|
|
||||||
this.array = new Te[array.Length];
|
|
||||||
array.CopyTo(this.array, 0);
|
|
||||||
this.used = used;
|
|
||||||
this.first = first;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Te Current
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
{
|
||||||
if (IsCurrentOk())
|
var i = (current + first + 1) % used;
|
||||||
{
|
return array[i];
|
||||||
var i = (current + first + 1) % used;
|
|
||||||
return array[i];
|
|
||||||
}
|
|
||||||
else
|
|
||||||
return default!;
|
|
||||||
}
|
}
|
||||||
}
|
else
|
||||||
|
return default!;
|
||||||
object? IEnumerator.Current => Current;
|
|
||||||
|
|
||||||
public void Dispose() {; }
|
|
||||||
|
|
||||||
private bool IsCurrentOk() => current >= 0 && current < used;
|
|
||||||
|
|
||||||
public bool MoveNext()
|
|
||||||
{
|
|
||||||
if (current < used)
|
|
||||||
current++;
|
|
||||||
return IsCurrentOk();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Reset()
|
|
||||||
{
|
|
||||||
current = -1;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
object? IEnumerator.Current => Current;
|
||||||
/// Очистить весь массив
|
|
||||||
/// </summary>
|
public void Dispose() {; }
|
||||||
public void Clear()
|
|
||||||
|
private bool IsCurrentOk() => current >= 0 && current < used;
|
||||||
|
|
||||||
|
public bool MoveNext()
|
||||||
|
{
|
||||||
|
if (current < used)
|
||||||
|
current++;
|
||||||
|
return IsCurrentOk();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Reset()
|
||||||
{
|
{
|
||||||
used = 0;
|
|
||||||
current = -1;
|
current = -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Очистить весь массив
|
||||||
|
/// </summary>
|
||||||
|
public void Clear()
|
||||||
|
{
|
||||||
|
used = 0;
|
||||||
|
current = -1;
|
||||||
|
}
|
||||||
}
|
}
|
@ -1,24 +1,23 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// DTO для авторизации
|
||||||
|
/// </summary>
|
||||||
|
public class AuthDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// DTO для авторизации
|
/// Имя пользователя для входа
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class AuthDto
|
[Required(ErrorMessage = "Логин не должен быть пустым")]
|
||||||
{
|
[StringLength(50, MinimumLength = 1, ErrorMessage = "Допустимая длина логина от 1 до 50 символов")]
|
||||||
/// <summary>
|
public string Login { get; set; } = null!;
|
||||||
/// Имя пользователя для входа
|
|
||||||
/// </summary>
|
|
||||||
[Required(ErrorMessage = "Логин не должен быть пустым")]
|
|
||||||
[StringLength(50, MinimumLength = 1, ErrorMessage = "Допустимая длина логина от 1 до 50 символов")]
|
|
||||||
public string Login { get; set; } = null!;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Пароль пользователя для входа
|
/// Пароль пользователя для входа
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required(ErrorMessage = "Пароль не должен быть пустым")]
|
[Required(ErrorMessage = "Пароль не должен быть пустым")]
|
||||||
[StringLength(50, MinimumLength = 1, ErrorMessage = "Допустимая длина пароля от 1 до 50 символов")]
|
[StringLength(50, MinimumLength = 1, ErrorMessage = "Допустимая длина пароля от 1 до 50 символов")]
|
||||||
public string Password { get; set; } = null!;
|
public string Password { get; set; } = null!;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,206 +1,205 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Информация о фоновой работе
|
||||||
|
/// </summary>
|
||||||
|
public class BackgroundWorkDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Информация о фоновой работе
|
/// Идентификатор работы. Должен быть уникальным. Используется в логах и передается в колбэки.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class BackgroundWorkDto
|
public string Id { get; init; } = null!;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Класс описания состояния
|
||||||
|
/// </summary>
|
||||||
|
public class CurrentStateInfo
|
||||||
|
{
|
||||||
|
private string state = "start";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Время последнего запуска
|
||||||
|
/// </summary>
|
||||||
|
public DateTime Start { get; } = DateTime.Now;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Текущее время выполнения
|
||||||
|
/// </summary>
|
||||||
|
public TimeSpan ExecutionTime => DateTime.Now - Start;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Текстовое описание того, что происходит в задаче.
|
||||||
|
/// </summary>
|
||||||
|
public string State
|
||||||
|
{
|
||||||
|
get => state;
|
||||||
|
internal set
|
||||||
|
{
|
||||||
|
state = value;
|
||||||
|
StateUpdate = DateTime.Now;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Прогресс
|
||||||
|
/// </summary>
|
||||||
|
public double Progress { get; internal set; } = 0;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Время последнего запуска
|
||||||
|
/// </summary>
|
||||||
|
public DateTime StateUpdate { get; private set; } = DateTime.Now;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Инфо о последней ошибке
|
||||||
|
/// </summary>
|
||||||
|
public class LastErrorInfo : LastCompleteInfo
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Идентификатор работы. Должен быть уникальным. Используется в логах и передается в колбэки.
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string Id { get; init; } = null!;
|
/// <param name="state"></param>
|
||||||
|
/// <param name="errorText"></param>
|
||||||
/// <summary>
|
public LastErrorInfo(CurrentStateInfo state, string errorText)
|
||||||
/// Класс описания состояния
|
: base(state)
|
||||||
/// </summary>
|
|
||||||
public class CurrentStateInfo
|
|
||||||
{
|
{
|
||||||
private string state = "start";
|
ErrorText = errorText;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Время последнего запуска
|
|
||||||
/// </summary>
|
|
||||||
public DateTime Start { get; } = DateTime.Now;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Текущее время выполнения
|
|
||||||
/// </summary>
|
|
||||||
public TimeSpan ExecutionTime => DateTime.Now - Start;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Текстовое описание того, что происходит в задаче.
|
|
||||||
/// </summary>
|
|
||||||
public string State
|
|
||||||
{
|
|
||||||
get => state;
|
|
||||||
internal set
|
|
||||||
{
|
|
||||||
state = value;
|
|
||||||
StateUpdate = DateTime.Now;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Прогресс
|
|
||||||
/// </summary>
|
|
||||||
public double Progress { get; internal set; } = 0;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Время последнего запуска
|
|
||||||
/// </summary>
|
|
||||||
public DateTime StateUpdate { get; private set; } = DateTime.Now;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Инфо о последней ошибке
|
|
||||||
/// </summary>
|
|
||||||
public class LastErrorInfo : LastCompleteInfo
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="state"></param>
|
|
||||||
/// <param name="errorText"></param>
|
|
||||||
public LastErrorInfo(CurrentStateInfo state, string errorText)
|
|
||||||
: base(state)
|
|
||||||
{
|
|
||||||
ErrorText = errorText;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Последняя ошибка
|
|
||||||
/// </summary>
|
|
||||||
public string ErrorText { get; init; } = null!;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Инфо о последнем завершении
|
|
||||||
/// </summary>
|
|
||||||
public class LastCompleteInfo
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Дата запуска
|
|
||||||
/// </summary>
|
|
||||||
public DateTime Start { get; init; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Дата завершения
|
|
||||||
/// </summary>
|
|
||||||
public DateTime End { get; init; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Продолжительность последнего выполнения
|
|
||||||
/// </summary>
|
|
||||||
public TimeSpan ExecutionTime => End - Start;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Состояние на момент завершения
|
|
||||||
/// </summary>
|
|
||||||
public string State { get; init; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// ctor
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="state"></param>
|
|
||||||
public LastCompleteInfo(CurrentStateInfo state)
|
|
||||||
{
|
|
||||||
Start = state.Start;
|
|
||||||
End = DateTime.Now;
|
|
||||||
State = state.State;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Текущее состояние
|
|
||||||
/// </summary>
|
|
||||||
public CurrentStateInfo? CurrentState { get; private set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Последняя ошибка
|
/// Последняя ошибка
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public LastErrorInfo? LastError { get; private set; }
|
public string ErrorText { get; init; } = null!;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Инфо о последнем завершении
|
||||||
|
/// </summary>
|
||||||
|
public class LastCompleteInfo
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Дата запуска
|
||||||
|
/// </summary>
|
||||||
|
public DateTime Start { get; init; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Последняя завершенная
|
/// Дата завершения
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public LastCompleteInfo? LastComplete { get; private set; }
|
public DateTime End { get; init; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Кол-во запусков
|
/// Продолжительность последнего выполнения
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int CountStart { get; private set; }
|
public TimeSpan ExecutionTime => End - Start;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Кол-во завершений
|
/// Состояние на момент завершения
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int CountComplete { get; private set; }
|
public string State { get; init; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Кол-во ошибок
|
/// ctor
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int CountErrors { get; private set; }
|
/// <param name="state"></param>
|
||||||
|
public LastCompleteInfo(CurrentStateInfo state)
|
||||||
/// <summary>
|
|
||||||
/// Максимально допустимое время выполнения работы
|
|
||||||
/// </summary>
|
|
||||||
public TimeSpan Timeout { get; set; } = TimeSpan.FromMinutes(1);
|
|
||||||
|
|
||||||
private string WorkNameForTrace => $"Backgroud work:\"{Id}\"";
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Обновления состояния при запуске работы
|
|
||||||
/// </summary>
|
|
||||||
protected void SetStatusStart()
|
|
||||||
{
|
{
|
||||||
CurrentState = new();
|
Start = state.Start;
|
||||||
CountStart++;
|
End = DateTime.Now;
|
||||||
Trace.TraceInformation($"{WorkNameForTrace} state: starting");
|
State = state.State;
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Обновления состояния в процессе работы
|
|
||||||
/// </summary>
|
|
||||||
protected void UpdateStatus(string newState, double? progress)
|
|
||||||
{
|
|
||||||
if (CurrentState is null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
CurrentState.State = newState;
|
|
||||||
if (progress.HasValue)
|
|
||||||
CurrentState.Progress = progress.Value;
|
|
||||||
|
|
||||||
Trace.TraceInformation($"{WorkNameForTrace} state[{100*progress:#}%]: {newState}");
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Обновления состояния при успешном завершении работы
|
|
||||||
/// </summary>
|
|
||||||
protected void SetStatusComplete()
|
|
||||||
{
|
|
||||||
CountComplete++;
|
|
||||||
if (CurrentState is null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
LastComplete = new(CurrentState);
|
|
||||||
CurrentState = null;
|
|
||||||
Trace.TraceInformation($"{WorkNameForTrace} state: completed");
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Обновления состояния при ошибке в работе
|
|
||||||
/// </summary>
|
|
||||||
protected void SetLastError(string errorMessage)
|
|
||||||
{
|
|
||||||
CountErrors++;
|
|
||||||
if (CurrentState is null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
LastError = new LastErrorInfo(CurrentState, errorMessage);
|
|
||||||
CurrentState = null;
|
|
||||||
Trace.TraceError($"{WorkNameForTrace} throw exception[{CountErrors}]: {errorMessage}");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Текущее состояние
|
||||||
|
/// </summary>
|
||||||
|
public CurrentStateInfo? CurrentState { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Последняя ошибка
|
||||||
|
/// </summary>
|
||||||
|
public LastErrorInfo? LastError { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Последняя завершенная
|
||||||
|
/// </summary>
|
||||||
|
public LastCompleteInfo? LastComplete { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Кол-во запусков
|
||||||
|
/// </summary>
|
||||||
|
public int CountStart { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Кол-во завершений
|
||||||
|
/// </summary>
|
||||||
|
public int CountComplete { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Кол-во ошибок
|
||||||
|
/// </summary>
|
||||||
|
public int CountErrors { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Максимально допустимое время выполнения работы
|
||||||
|
/// </summary>
|
||||||
|
public TimeSpan Timeout { get; set; } = TimeSpan.FromMinutes(1);
|
||||||
|
|
||||||
|
private string WorkNameForTrace => $"Backgroud work:\"{Id}\"";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Обновления состояния при запуске работы
|
||||||
|
/// </summary>
|
||||||
|
protected void SetStatusStart()
|
||||||
|
{
|
||||||
|
CurrentState = new();
|
||||||
|
CountStart++;
|
||||||
|
Trace.TraceInformation($"{WorkNameForTrace} state: starting");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Обновления состояния в процессе работы
|
||||||
|
/// </summary>
|
||||||
|
protected void UpdateStatus(string newState, double? progress)
|
||||||
|
{
|
||||||
|
if (CurrentState is null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
CurrentState.State = newState;
|
||||||
|
if (progress.HasValue)
|
||||||
|
CurrentState.Progress = progress.Value;
|
||||||
|
|
||||||
|
Trace.TraceInformation($"{WorkNameForTrace} state[{100*progress:#}%]: {newState}");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Обновления состояния при успешном завершении работы
|
||||||
|
/// </summary>
|
||||||
|
protected void SetStatusComplete()
|
||||||
|
{
|
||||||
|
CountComplete++;
|
||||||
|
if (CurrentState is null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
LastComplete = new(CurrentState);
|
||||||
|
CurrentState = null;
|
||||||
|
Trace.TraceInformation($"{WorkNameForTrace} state: completed");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Обновления состояния при ошибке в работе
|
||||||
|
/// </summary>
|
||||||
|
protected void SetLastError(string errorMessage)
|
||||||
|
{
|
||||||
|
CountErrors++;
|
||||||
|
if (CurrentState is null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
LastError = new LastErrorInfo(CurrentState, errorMessage);
|
||||||
|
CurrentState = null;
|
||||||
|
Trace.TraceError($"{WorkNameForTrace} throw exception[{CountErrors}]: {errorMessage}");
|
||||||
|
}
|
||||||
}
|
}
|
@ -2,39 +2,38 @@ using System.Collections.Generic;
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// DTO кустов
|
||||||
|
/// </summary>
|
||||||
|
public class ClusterDto : MapPointBaseDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// DTO кустов
|
/// ИД месторождения, необязательный
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class ClusterDto : MapPointBaseDto
|
[Required]
|
||||||
{
|
[Range(1, int.MaxValue, ErrorMessage = "Id месторождения не может быть меньше 1")]
|
||||||
/// <summary>
|
public int IdDeposit { get; set; }
|
||||||
/// ИД месторождения, необязательный
|
|
||||||
/// </summary>
|
|
||||||
[Required]
|
|
||||||
[Range(1, int.MaxValue, ErrorMessage = "Id месторождения не может быть меньше 1")]
|
|
||||||
public int IdDeposit { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// DTO месторождения
|
|
||||||
/// </summary>
|
|
||||||
public DepositBaseDto? Deposit { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Список скважин куста
|
|
||||||
/// </summary>
|
|
||||||
public IEnumerable<WellDto> Wells { get; set; } = Enumerable.Empty<WellDto>();
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// DTO кустов
|
/// DTO месторождения
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class ClusterBranchDto : MapPointBaseDto
|
public DepositBaseDto? Deposit { get; set; }
|
||||||
{
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Список скважин куста
|
/// Список скважин куста
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public IEnumerable<WellMapInfoWithTelemetryStat> Wells { get; set; } = Enumerable.Empty<WellMapInfoWithTelemetryStat>();
|
public IEnumerable<WellDto> Wells { get; set; } = Enumerable.Empty<WellDto>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// DTO кустов
|
||||||
|
/// </summary>
|
||||||
|
public class ClusterBranchDto : MapPointBaseDto
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Список скважин куста
|
||||||
|
/// </summary>
|
||||||
|
public IEnumerable<WellMapInfoWithTelemetryStat> Wells { get; set; } = Enumerable.Empty<WellMapInfoWithTelemetryStat>();
|
||||||
}
|
}
|
||||||
|
@ -1,22 +1,21 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Статистика механической скорости проходки (МСП) по кусту
|
||||||
|
/// </summary>
|
||||||
|
public class ClusterRopStatDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Статистика механической скорости проходки (МСП) по кусту
|
/// Макс. механическая скорость проходки по кусту
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class ClusterRopStatDto
|
[Required]
|
||||||
{
|
public double RopMax { get; set; }
|
||||||
/// <summary>
|
|
||||||
/// Макс. механическая скорость проходки по кусту
|
|
||||||
/// </summary>
|
|
||||||
[Required]
|
|
||||||
public double RopMax { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Средняя механическая скорость проходки по кусту
|
/// Средняя механическая скорость проходки по кусту
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public double RopAverage { get; set; }
|
public double RopAverage { get; set; }
|
||||||
}
|
|
||||||
}
|
}
|
@ -1,33 +1,32 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// DTO компании
|
||||||
|
/// </summary>
|
||||||
|
public class CompanyDto : IId
|
||||||
{
|
{
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// DTO компании
|
/// Название
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class CompanyDto : IId
|
[Required]
|
||||||
{
|
[StringLength(50, MinimumLength = 1, ErrorMessage = "Допустимое имя компании от 1 до 50 символов")]
|
||||||
/// <inheritdoc/>
|
public string Caption { get; set; } = null!;
|
||||||
public int Id { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Название
|
/// ИД типа компании
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
[StringLength(50, MinimumLength = 1, ErrorMessage = "Допустимое имя компании от 1 до 50 символов")]
|
public int IdCompanyType { get; set; }
|
||||||
public string Caption { get; set; } = null!;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// ИД типа компании
|
/// Название типа компании
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[StringLength(255, MinimumLength = 1, ErrorMessage = "Допустимое имя типа компании от 1 до 255 символов")]
|
||||||
public int IdCompanyType { get; set; }
|
public string? CompanyTypeCaption { get; set; } = null!;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Название типа компании
|
|
||||||
/// </summary>
|
|
||||||
[StringLength(255, MinimumLength = 1, ErrorMessage = "Допустимое имя типа компании от 1 до 255 символов")]
|
|
||||||
public string? CompanyTypeCaption { get; set; } = null!;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,33 +1,32 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// DTO тип компании
|
||||||
|
/// </summary>
|
||||||
|
public class CompanyTypeDto : IId
|
||||||
{
|
{
|
||||||
|
/// <inheritdoc/>
|
||||||
|
[Required]
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// DTO тип компании
|
/// Название типа компании
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class CompanyTypeDto : IId
|
[Required]
|
||||||
{
|
public string Caption { get; set; } = null!;
|
||||||
/// <inheritdoc/>
|
|
||||||
[Required]
|
|
||||||
public int Id { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Название типа компании
|
/// Порядок
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public string Caption { get; set; } = null!;
|
public int Order { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Порядок
|
/// Является ли контактом
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public int Order { get; set; }
|
public bool IsContact { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Является ли контактом
|
|
||||||
/// </summary>
|
|
||||||
[Required]
|
|
||||||
public bool IsContact { get; set; }
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,136 +1,135 @@
|
|||||||
using System;
|
using System;
|
||||||
using AsbCloudApp.Data.WellOperation;
|
using AsbCloudApp.Data.WellOperation;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// dto для хранения данных статистики сауб
|
||||||
|
/// </summary>
|
||||||
|
public class DataSaubStatDto:IId
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// dto для хранения данных статистики сауб
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class DataSaubStatDto:IId
|
public int Id { get; set; }
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
public int Id { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Дата и время начала
|
/// Дата и время начала
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public DateTimeOffset DateStart { get; set; }
|
public DateTimeOffset DateStart { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Дата и время окончания
|
/// Дата и время окончания
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public DateTimeOffset DateEnd { get; set; }
|
public DateTimeOffset DateEnd { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Глубина забоя по стволу начальная
|
/// Глубина забоя по стволу начальная
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public double DepthStart { get; set; }
|
public double DepthStart { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Глубина забоя по стволу конечная
|
/// Глубина забоя по стволу конечная
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public double DepthEnd { get; set; }
|
public double DepthEnd { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Скорость бурения
|
/// Скорость бурения
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public double Speed { get; set; }
|
public double Speed { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Ограничение скорости блока
|
/// Ограничение скорости блока
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public double? BlockSpeedSp { get; set; }
|
public double? BlockSpeedSp { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Давление
|
/// Давление
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public double Pressure { get; set; }
|
public double Pressure { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Давление холостого хода
|
/// Давление холостого хода
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public double? PressureIdle { get; set; }
|
public double? PressureIdle { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Ограничение фактического давления
|
/// Ограничение фактического давления
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public double? PressureSp { get; set; }
|
public double? PressureSp { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Фактическая нагрузка
|
/// Фактическая нагрузка
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public double AxialLoad { get; set; }
|
public double AxialLoad { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Ограничение факт. нагрузки
|
/// Ограничение факт. нагрузки
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public double? AxialLoadSp { get; set; }
|
public double? AxialLoadSp { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Максимально допустимая нагрузка
|
/// Максимально допустимая нагрузка
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public double? AxialLoadLimitMax { get; set; }
|
public double? AxialLoadLimitMax { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Фактический момент
|
/// Фактический момент
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public double RotorTorque { get; set; }
|
public double RotorTorque { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Ограничение факт. момента
|
/// Ограничение факт. момента
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public double? RotorTorqueSp { get; set; }
|
public double? RotorTorqueSp { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Максимально допустимый момент
|
/// Максимально допустимый момент
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public double? RotorTorqueLimitMax { get; set; }
|
public double? RotorTorqueLimitMax { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Работа при достижении ограничения
|
/// Работа при достижении ограничения
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public short? IdFeedRegulator { get; set; }
|
public short? IdFeedRegulator { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Фактическая скорость оборотов ВСП
|
/// Фактическая скорость оборотов ВСП
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public double RotorSpeed { get; set; }
|
public double RotorSpeed { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Название автоопределённой операции
|
/// Название автоопределённой операции
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int IdCategory { get; set; }
|
public int IdCategory { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Флаги подсистем
|
/// Флаги подсистем
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int EnabledSubsystems { get; set; }
|
public int EnabledSubsystems { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Наличие или отсутствие осцилляции
|
/// Наличие или отсутствие осцилляции
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool HasOscillation { get; set; }
|
public bool HasOscillation { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Фактический расход
|
/// Фактический расход
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public double Flow { get; set; }
|
public double Flow { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Ключ телеметрии
|
/// Ключ телеметрии
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int IdTelemetry { get; set; }
|
public int IdTelemetry { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Телеметрия
|
/// Телеметрия
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public TelemetryDto Telemetry { get; set; } = null!;
|
public TelemetryDto Telemetry { get; set; } = null!;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Категория автоопределенной операции
|
/// Категория автоопределенной операции
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public WellOperationCategoryDto OperationCategory { get; set; } = null!;
|
public WellOperationCategoryDto OperationCategory { get; set; } = null!;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,23 +1,22 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Диапазон дат
|
||||||
|
/// </summary>
|
||||||
|
public class DatesRangeDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Диапазон дат
|
/// Дата начала диапазона
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class DatesRangeDto
|
[Required]
|
||||||
{
|
public DateTimeOffset From { get; set; }
|
||||||
/// <summary>
|
|
||||||
/// Дата начала диапазона
|
|
||||||
/// </summary>
|
|
||||||
[Required]
|
|
||||||
public DateTimeOffset From { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Дата окончания диапазона
|
/// Дата окончания диапазона
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public DateTimeOffset To { get; set; }
|
public DateTimeOffset To { get; set; }
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -2,39 +2,38 @@ using System.Collections.Generic;
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
{
|
|
||||||
|
|
||||||
#nullable enable
|
#nullable enable
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// DTO Месторождения
|
/// DTO Месторождения
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class DepositBaseDto : MapPointBaseDto
|
public class DepositBaseDto : MapPointBaseDto
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// DTO Месторождения с кустами
|
/// DTO Месторождения с кустами
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class DepositDto : MapPointBaseDto
|
public class DepositDto : MapPointBaseDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Кусты месторождения
|
/// Кусты месторождения
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public IEnumerable<ClusterDto> Clusters { get; set; } = Enumerable.Empty<ClusterDto>();
|
public IEnumerable<ClusterDto> Clusters { get; set; } = Enumerable.Empty<ClusterDto>();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// DTO Месторождения с кустами
|
/// DTO Месторождения с кустами
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class DepositBranchDto : MapPointBaseDto
|
public class DepositBranchDto : MapPointBaseDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Кусты месторождения
|
/// Кусты месторождения
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public IEnumerable<ClusterBranchDto> Clusters { get; set; } = Enumerable.Empty<ClusterBranchDto>();
|
public IEnumerable<ClusterBranchDto> Clusters { get; set; } = Enumerable.Empty<ClusterBranchDto>();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,42 +1,41 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data.DetectedOperation
|
namespace AsbCloudApp.Data.DetectedOperation;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Статистика по операциям бурильщика
|
||||||
|
/// </summary>
|
||||||
|
public class DetectedOperationDrillersStatDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Статистика по операциям бурильщика
|
/// Бурильщик
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class DetectedOperationDrillersStatDto
|
public DrillerDto? Driller { get; set; }
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Бурильщик
|
|
||||||
/// </summary>
|
|
||||||
public DrillerDto? Driller { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Количество операции
|
/// Количество операции
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public int Count { get; set; }
|
public int Count { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Среднее по ключевому показателю
|
/// Среднее по ключевому показателю
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public double AverageValue { get; set; }
|
public double AverageValue { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Среднее целевого показателя
|
/// Среднее целевого показателя
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public double? AverageTargetValue { get; set; }
|
public double? AverageTargetValue { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Коэффициент эффективности, %
|
/// Коэффициент эффективности, %
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public double? Efficiency { get; set; }
|
public double? Efficiency { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Коэффициент потерь
|
/// Коэффициент потерь
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public double? Loss { get; set; }
|
public double? Loss { get; set; }
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -2,23 +2,22 @@ using System.Collections.Generic;
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data.DetectedOperation
|
namespace AsbCloudApp.Data.DetectedOperation;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Автоматически определяемая операция
|
||||||
|
/// </summary>
|
||||||
|
public class DetectedOperationListDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Автоматически определяемая операция
|
/// Список всех операций
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class DetectedOperationListDto
|
[Required]
|
||||||
{
|
public IEnumerable<DetectedOperationWithDrillerDto> Operations { get; set; } = Enumerable.Empty<DetectedOperationWithDrillerDto>();
|
||||||
/// <summary>
|
|
||||||
/// Список всех операций
|
|
||||||
/// </summary>
|
|
||||||
[Required]
|
|
||||||
public IEnumerable<DetectedOperationWithDrillerDto> Operations { get; set; } = Enumerable.Empty<DetectedOperationWithDrillerDto>();
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Статистика по бурильщикам
|
/// Статистика по бурильщикам
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public IEnumerable<DetectedOperationDrillersStatDto> Stats { get; set; } = Enumerable.Empty<DetectedOperationDrillersStatDto>();
|
public IEnumerable<DetectedOperationDrillersStatDto> Stats { get; set; } = Enumerable.Empty<DetectedOperationDrillersStatDto>();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,69 +1,68 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data.DetectedOperation
|
namespace AsbCloudApp.Data.DetectedOperation;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Статистика по операциям например за период.
|
||||||
|
/// </summary>
|
||||||
|
public class DetectedOperationStatDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Статистика по операциям например за период.
|
/// Id названия/описания операции
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class DetectedOperationStatDto
|
[Required]
|
||||||
{
|
public int IdCategory { get; set; }
|
||||||
/// <summary>
|
|
||||||
/// Id названия/описания операции
|
|
||||||
/// </summary>
|
|
||||||
[Required]
|
|
||||||
public int IdCategory { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Название операции
|
/// Название операции
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string Category { get; set; } = string.Empty;
|
public string Category { get; set; } = string.Empty;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Количество операций
|
/// Количество операций
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public int Count { get; set; }
|
public int Count { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Среднее по ключевому показателю
|
/// Среднее по ключевому показателю
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public double ValueAverage { get; set; }
|
public double ValueAverage { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Мин по ключевому показателю
|
/// Мин по ключевому показателю
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public double ValueMin { get; set; }
|
public double ValueMin { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Макс по ключевому показателю
|
/// Макс по ключевому показателю
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public double ValueMax { get; set; }
|
public double ValueMax { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Суммарное время операций, мин
|
/// Суммарное время операций, мин
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public double MinutesTotal { get; set; }
|
public double MinutesTotal { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Мин продолжительность операции, мин
|
/// Мин продолжительность операции, мин
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public double MinutesMin { get; set; }
|
public double MinutesMin { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Макс продолжительность операции, мин
|
/// Макс продолжительность операции, мин
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public double MinutesMax { get; set; }
|
public double MinutesMax { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Средняя продолжительность операции, мин
|
/// Средняя продолжительность операции, мин
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public double MinutesAverage { get; set; }
|
public double MinutesAverage { get; set; }
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,18 +1,17 @@
|
|||||||
namespace AsbCloudApp.Data.DetectedOperation
|
namespace AsbCloudApp.Data.DetectedOperation;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Автоматически определяемая операция
|
||||||
|
/// </summary>
|
||||||
|
public class DetectedOperationWithDrillerDto : DetectedOperationDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Автоматически определяемая операция
|
/// Бурильщик
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class DetectedOperationWithDrillerDto : DetectedOperationDto
|
public DrillerDto? Driller { get; set; }
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Бурильщик
|
|
||||||
/// </summary>
|
|
||||||
public DrillerDto? Driller { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Целевые/нормативные показатели
|
/// Целевые/нормативные показатели
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public OperationValueDto? OperationValue { get; set; }
|
public OperationValueDto? OperationValue { get; set; }
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,52 +1,51 @@
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// DTO параметров бурения
|
||||||
|
/// </summary>
|
||||||
|
public class DrillParamsDto : IId, IWellRelated
|
||||||
{
|
{
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public int IdWell { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// DTO параметров бурения
|
/// Глубина интервала
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class DrillParamsDto : IId, IWellRelated
|
public MinMaxDto<double> Depth { get; set; } = null!;
|
||||||
{
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public int Id { get; set; }
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <summary>
|
||||||
public int IdWell { get; set; }
|
/// id well section type.
|
||||||
|
/// </summary>
|
||||||
|
public int IdWellSectionType { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Глубина интервала
|
/// axial load
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public MinMaxDto<double> Depth { get; set; } = null!;
|
public MinMaxExtendedViewDto AxialLoad { get; set; } = null!;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// id well section type.
|
/// pressure
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int IdWellSectionType { get; set; }
|
public MinMaxExtendedViewDto Pressure { get; set; } = null!;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// axial load
|
/// rotor torque
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public MinMaxExtendedViewDto AxialLoad { get; set; } = null!;
|
public MinMaxExtendedViewDto RotorTorque { get; set; } = null!;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// pressure
|
/// rotor speed
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public MinMaxExtendedViewDto Pressure { get; set; } = null!;
|
public MinMaxExtendedViewDto RotorSpeed { get; set; } = null!;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// rotor torque
|
/// flow
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public MinMaxExtendedViewDto RotorTorque { get; set; } = null!;
|
public MinMaxExtendedViewDto Flow { get; set; } = null!;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// rotor speed
|
|
||||||
/// </summary>
|
|
||||||
public MinMaxExtendedViewDto RotorSpeed { get; set; } = null!;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// flow
|
|
||||||
/// </summary>
|
|
||||||
public MinMaxExtendedViewDto Flow { get; set; } = null!;
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -1,26 +1,25 @@
|
|||||||
using AsbCloudApp.Data.SAUB;
|
using AsbCloudApp.Data.SAUB;
|
||||||
using System;
|
using System;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data.DrillTestReport
|
namespace AsbCloudApp.Data.DrillTestReport;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Информация о drill test, выгружаемая в отчете
|
||||||
|
/// </summary>
|
||||||
|
public class DrillTestReportDataDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Информация о drill test, выгружаемая в отчете
|
/// Данные для отчета
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class DrillTestReportDataDto
|
public DrillTestDto Data { get; set; } = null!;
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Данные для отчета
|
|
||||||
/// </summary>
|
|
||||||
public DrillTestDto Data { get; set; } = null!;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Заголовок отчета
|
/// Заголовок отчета
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string Caption { get; set; } = null!;
|
public string Caption { get; set; } = null!;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Дата отчета
|
/// Дата отчета
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public DateTimeOffset Date { get; set; } = DateTimeOffset.Now;
|
public DateTimeOffset Date { get; set; } = DateTimeOffset.Now;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,29 +1,28 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data.DrillTestReport
|
namespace AsbCloudApp.Data.DrillTestReport;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Базовая информация о drill_test отчёте
|
||||||
|
/// </summary>
|
||||||
|
public class DrillTestReportInfoDto : ReportInfoDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Базовая информация о drill_test отчёте
|
/// Идентификатор отчета
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class DrillTestReportInfoDto : ReportInfoDto
|
[Required]
|
||||||
{
|
public int Id { get; set; }
|
||||||
/// <summary>
|
|
||||||
/// Идентификатор отчета
|
|
||||||
/// </summary>
|
|
||||||
[Required]
|
|
||||||
public int Id { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Проходка
|
/// Проходка
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public float DrillDepth { get; set; }
|
public float DrillDepth { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Дата и время
|
/// Дата и время
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public DateTimeOffset DateTime { get; set; }
|
public DateTimeOffset DateTime { get; set; }
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,33 +1,32 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Описание данных для бурильщика
|
||||||
|
/// </summary>
|
||||||
|
public class DrillerDto : IId
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Описание данных для бурильщика
|
/// Идентификатор в БД
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class DrillerDto : IId
|
[Required]
|
||||||
{
|
public int Id { get; set; }
|
||||||
/// <summary>
|
|
||||||
/// Идентификатор в БД
|
|
||||||
/// </summary>
|
|
||||||
[Required]
|
|
||||||
public int Id { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Имя
|
/// Имя
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public string Name { get; set; } = null!;
|
public string Name { get; set; } = null!;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Фамилия
|
/// Фамилия
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public string Surname { get; set; } = null!;
|
public string Surname { get; set; } = null!;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Отчество
|
/// Отчество
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string? Patronymic { get; set; }
|
public string? Patronymic { get; set; }
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -3,60 +3,59 @@ using System.ComponentModel.DataAnnotations;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using AsbCloudApp.Data.User;
|
using AsbCloudApp.Data.User;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Часть программы бурения
|
||||||
|
/// </summary>
|
||||||
|
public class DrillingProgramPartDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Часть программы бурения
|
/// Название
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class DrillingProgramPartDto
|
[Required]
|
||||||
{
|
public string Name { get; set; } = string.Empty;
|
||||||
/// <summary>
|
|
||||||
/// Название
|
|
||||||
/// </summary>
|
|
||||||
[Required]
|
|
||||||
public string Name { get; set; } = string.Empty;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// ИД категории файла
|
/// ИД категории файла
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public int IdFileCategory { get; set; }
|
public int IdFileCategory { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 0 - NoFile
|
/// 0 - NoFile
|
||||||
/// 1 - approving
|
/// 1 - approving
|
||||||
/// 2 - completely approved
|
/// 2 - completely approved
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public int IdState { get; set; }
|
public int IdState { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Публикаторы. Могут загружать файл этой категории
|
/// Публикаторы. Могут загружать файл этой категории
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public IEnumerable<UserDto> Publishers { get; set; } = Enumerable.Empty<UserDto>();
|
public IEnumerable<UserDto> Publishers { get; set; } = Enumerable.Empty<UserDto>();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Согласованты. Могут согласовывать загруженные файлы этой категории
|
/// Согласованты. Могут согласовывать загруженные файлы этой категории
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public IEnumerable<UserDto> Approvers { get; set; } = Enumerable.Empty<UserDto>();
|
public IEnumerable<UserDto> Approvers { get; set; } = Enumerable.Empty<UserDto>();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Разрешение для текущего пользователя согласовывать документ
|
/// Разрешение для текущего пользователя согласовывать документ
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public bool PermissionToApprove { get; set; }
|
public bool PermissionToApprove { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Разрешение для текущего пользователя загружать документ
|
/// Разрешение для текущего пользователя загружать документ
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public bool PermissionToUpload { get; set; }
|
public bool PermissionToUpload { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Ссылка на документ.
|
/// Ссылка на документ.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public FileInfoDto? File { get; set; }
|
public FileInfoDto? File { get; set; }
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -2,60 +2,59 @@ using System.Collections.Generic;
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// DTO состояния формирования программы бурения
|
||||||
|
/// </summary>
|
||||||
|
public class DrillingProgramStateDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// DTO состояния формирования программы бурения
|
/// 0 - не инициировано
|
||||||
|
/// 1 - загрузка и согласование
|
||||||
|
/// 2 - формируется (несколько минут)
|
||||||
|
/// 3 - готова
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class DrillingProgramStateDto
|
[Required]
|
||||||
{
|
public int IdState { get; set; }
|
||||||
/// <summary>
|
|
||||||
/// 0 - не инициировано
|
|
||||||
/// 1 - загрузка и согласование
|
|
||||||
/// 2 - формируется (несколько минут)
|
|
||||||
/// 3 - готова
|
|
||||||
/// </summary>
|
|
||||||
[Required]
|
|
||||||
public int IdState { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Ошибка при формировании
|
|
||||||
/// </summary>
|
|
||||||
public DrillingProgramCreateError? Error { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Файл сформированной программы бурения
|
|
||||||
/// </summary>
|
|
||||||
public FileInfoDto? Program { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Разрешение редактировать части программы бурения
|
|
||||||
/// </summary>
|
|
||||||
[Required]
|
|
||||||
public bool PermissionToEdit { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Список частей программы бурения
|
|
||||||
/// </summary>
|
|
||||||
[Required]
|
|
||||||
public IEnumerable<DrillingProgramPartDto> Parts { get; set; } = Enumerable.Empty<DrillingProgramPartDto>();
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// DTO ошибки при создании программы бурения
|
/// Ошибка при формировании
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class DrillingProgramCreateError
|
public DrillingProgramCreateError? Error { get; set; }
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Текст ошибки для отображения пользователю
|
|
||||||
/// </summary>
|
|
||||||
[Required]
|
|
||||||
public string Message { get; set; } = string.Empty;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Текст ошибки для разработчика
|
/// Файл сформированной программы бурения
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
public FileInfoDto? Program { get; set; }
|
||||||
public string Exception { get; set; } = string.Empty;
|
|
||||||
}
|
/// <summary>
|
||||||
|
/// Разрешение редактировать части программы бурения
|
||||||
|
/// </summary>
|
||||||
|
[Required]
|
||||||
|
public bool PermissionToEdit { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Список частей программы бурения
|
||||||
|
/// </summary>
|
||||||
|
[Required]
|
||||||
|
public IEnumerable<DrillingProgramPartDto> Parts { get; set; } = Enumerable.Empty<DrillingProgramPartDto>();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// DTO ошибки при создании программы бурения
|
||||||
|
/// </summary>
|
||||||
|
public class DrillingProgramCreateError
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Текст ошибки для отображения пользователю
|
||||||
|
/// </summary>
|
||||||
|
[Required]
|
||||||
|
public string Message { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Текст ошибки для разработчика
|
||||||
|
/// </summary>
|
||||||
|
[Required]
|
||||||
|
public string Exception { get; set; } = string.Empty;
|
||||||
}
|
}
|
||||||
|
@ -1,73 +1,72 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// DTO для faq-вопроса
|
||||||
|
/// </summary>
|
||||||
|
public class FaqDto : IId
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// DTO для faq-вопроса
|
/// ключ вопроса
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class FaqDto : IId
|
[Required]
|
||||||
{
|
public int Id { get; set; }
|
||||||
/// <summary>
|
|
||||||
/// ключ вопроса
|
|
||||||
/// </summary>
|
|
||||||
[Required]
|
|
||||||
public int Id { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// ключ автора вопроса
|
/// ключ автора вопроса
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int? IdAuthorQuestion { get; set; }
|
public int? IdAuthorQuestion { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// автор ответа
|
/// автор ответа
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int? IdAuthorAnswer { get; set; }
|
public int? IdAuthorAnswer { get; set; }
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// дата создания вопроса
|
/// дата создания вопроса
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public DateTimeOffset? DateCreatedQuestion { get; set; }
|
public DateTimeOffset? DateCreatedQuestion { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// текст вопроса
|
/// текст вопроса
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public string Question { get; set; } = null!;
|
public string Question { get; set; } = null!;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// текст ответа
|
/// текст ответа
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string? Answer { get; set; }
|
public string? Answer { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// статус вопроса
|
/// статус вопроса
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public int State { get; set; } = 0;
|
public int State { get; set; } = 0;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Счетчик повторений вопроса
|
/// Счетчик повторений вопроса
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public int CounterQuestion { get; set; } = 1;
|
public int CounterQuestion { get; set; } = 1;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Частый вопрос
|
/// Частый вопрос
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public bool IsFrequently { get; set; } = false;
|
public bool IsFrequently { get; set; } = false;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Автор вопроса
|
/// Автор вопроса
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public string AurhorQuestionName { get; set; } = string.Empty;
|
public string AurhorQuestionName { get; set; } = string.Empty;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Автор ответа
|
/// Автор ответа
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string? AurhorAnswerName { get; set; }
|
public string? AurhorAnswerName { get; set; }
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,25 +1,24 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// DTO категории файла
|
||||||
|
/// </summary>
|
||||||
|
public class FileCategoryDto : IId
|
||||||
{
|
{
|
||||||
|
/// <inheritdoc/>
|
||||||
|
[Required]
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// DTO категории файла
|
/// полное название
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class FileCategoryDto : IId
|
[Required]
|
||||||
{
|
public string Name { get; set; } = null!;
|
||||||
/// <inheritdoc/>
|
|
||||||
[Required]
|
|
||||||
public int Id { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// полное название
|
/// сокращенное название
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
public string ShortName { get; set; } = string.Empty;
|
||||||
public string Name { get; set; } = null!;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// сокращенное название
|
|
||||||
/// </summary>
|
|
||||||
public string ShortName { get; set; } = string.Empty;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -4,68 +4,67 @@ using System.ComponentModel.DataAnnotations;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using AsbCloudApp.Data.User;
|
using AsbCloudApp.Data.User;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// DTO информации о файле. Используется для загрузки файла.
|
||||||
|
/// </summary>
|
||||||
|
public class FileInfoDto : IId, IWellRelated
|
||||||
{
|
{
|
||||||
|
/// <inheritdoc/>
|
||||||
|
[Required]
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
[Required]
|
||||||
|
[Range(1, int.MaxValue, ErrorMessage = "Id скважины не может быть меньше 1")]
|
||||||
|
public int IdWell { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// DTO информации о файле. Используется для загрузки файла.
|
/// id категории файла
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class FileInfoDto : IId, IWellRelated
|
[Required]
|
||||||
{
|
[Range(1, int.MaxValue, ErrorMessage = "Id категории файла не может быть меньше 1")]
|
||||||
/// <inheritdoc/>
|
public int IdCategory { get; set; }
|
||||||
[Required]
|
|
||||||
public int Id { get; set; }
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <summary>
|
||||||
[Required]
|
/// Id автора
|
||||||
[Range(1, int.MaxValue, ErrorMessage = "Id скважины не может быть меньше 1")]
|
/// </summary>
|
||||||
public int IdWell { get; set; }
|
public int? IdAuthor { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// id категории файла
|
/// имя файла
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
[Range(1, int.MaxValue, ErrorMessage = "Id категории файла не может быть меньше 1")]
|
[StringLength(260, MinimumLength = 1, ErrorMessage = "Допустимое имя компании от 1 до 260 символов")]
|
||||||
public int IdCategory { get; set; }
|
public string Name { get; set; } = null!;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Id автора
|
/// дата загрузки
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int? IdAuthor { get; set; }
|
[Required]
|
||||||
|
public DateTimeOffset UploadDate { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// имя файла
|
/// размер в байтах
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
[StringLength(260, MinimumLength = 1, ErrorMessage = "Допустимое имя компании от 1 до 260 символов")]
|
public long Size { get; set; }
|
||||||
public string Name { get; set; } = null!;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// дата загрузки
|
/// Помечен как удаленный
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public DateTimeOffset UploadDate { get; set; }
|
public bool IsDeleted { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// размер в байтах
|
/// DTO автора
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
public UserDto? Author { get; set; }
|
||||||
public long Size { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Помечен как удаленный
|
/// список отметок файла
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public bool IsDeleted { get; set; }
|
public IEnumerable<FileMarkDto> FileMarks { get; set; } = Enumerable.Empty<FileMarkDto>();
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// DTO автора
|
|
||||||
/// </summary>
|
|
||||||
public UserDto? Author { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// список отметок файла
|
|
||||||
/// </summary>
|
|
||||||
[Required]
|
|
||||||
public IEnumerable<FileMarkDto> FileMarks { get; set; } = Enumerable.Empty<FileMarkDto>();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -2,55 +2,54 @@ using System;
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using AsbCloudApp.Data.User;
|
using AsbCloudApp.Data.User;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Отметка для файла
|
||||||
|
/// </summary>
|
||||||
|
public class FileMarkDto: IId
|
||||||
{
|
{
|
||||||
|
/// <inheritdoc/>
|
||||||
|
[Required]
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Отметка для файла
|
/// id файла
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class FileMarkDto: IId
|
[Required]
|
||||||
{
|
[Range(1, int.MaxValue, ErrorMessage = "Id файла не может быть меньше 1")]
|
||||||
/// <inheritdoc/>
|
public int IdFile { get; set; }
|
||||||
[Required]
|
|
||||||
public int Id { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// id файла
|
/// 0 - отклонен
|
||||||
/// </summary>
|
/// 1 - согласован
|
||||||
[Required]
|
/// </summary>
|
||||||
[Range(1, int.MaxValue, ErrorMessage = "Id файла не может быть меньше 1")]
|
[Required]
|
||||||
public int IdFile { get; set; }
|
[Range(0, int.MaxValue, ErrorMessage = "Id категории действия с файлом не может быть меньше 1")]
|
||||||
|
public int IdMarkType { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 0 - отклонен
|
/// дата/время добавления.
|
||||||
/// 1 - согласован
|
/// Необязательно указывать в запросе на создание.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
[Range(0, int.MaxValue, ErrorMessage = "Id категории действия с файлом не может быть меньше 1")]
|
public DateTimeOffset DateCreated { get; set; }
|
||||||
public int IdMarkType { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// дата/время добавления.
|
/// Полезный комментарий
|
||||||
/// Необязательно указывать в запросе на создание.
|
/// </summary>
|
||||||
/// </summary>
|
[StringLength(4096, MinimumLength = 1, ErrorMessage = "Допустимое имя компании от 1 до 4096 символов")]
|
||||||
[Required]
|
public string? Comment { get; set; }
|
||||||
public DateTimeOffset DateCreated { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Полезный комментарий
|
/// признак удаления отметки
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[StringLength(4096, MinimumLength = 1, ErrorMessage = "Допустимое имя компании от 1 до 4096 символов")]
|
[Required]
|
||||||
public string? Comment { get; set; }
|
public bool IsDeleted { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// признак удаления отметки
|
/// Пользователь создающий отметку.
|
||||||
/// </summary>
|
/// Необязательно указывать в запросе на создание.
|
||||||
[Required]
|
/// </summary>
|
||||||
public bool IsDeleted { get; set; }
|
public UserDto? User { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Пользователь создающий отметку.
|
|
||||||
/// Необязательно указывать в запросе на создание.
|
|
||||||
/// </summary>
|
|
||||||
public UserDto? User { get; set; }
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -1,14 +1,13 @@
|
|||||||
namespace AsbCloudApp.Data.GTR
|
namespace AsbCloudApp.Data.GTR;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Класс позволяющий хранить значение неопределенного типа.
|
||||||
|
/// Все возможные типы должны быть описаны в JsonValueJsonConverter.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="Value"></param>
|
||||||
|
public record JsonValue(object Value)
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <inheritdoc/>
|
||||||
/// Класс позволяющий хранить значение неопределенного типа.
|
public override string ToString()
|
||||||
/// Все возможные типы должны быть описаны в JsonValueJsonConverter.
|
=> Value.ToString() ?? string.Empty;
|
||||||
/// </summary>
|
|
||||||
/// <param name="Value"></param>
|
|
||||||
public record JsonValue(object Value)
|
|
||||||
{
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override string ToString()
|
|
||||||
=> Value.ToString() ?? string.Empty;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,35 +1,34 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data.GTR
|
namespace AsbCloudApp.Data.GTR;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Запись WITS
|
||||||
|
/// </summary>
|
||||||
|
public class WitsItemRecordDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Запись WITS
|
/// Record Id
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class WitsItemRecordDto
|
[Required]
|
||||||
{
|
public int IdRecord { get; set; }
|
||||||
/// <summary>
|
|
||||||
/// Record Id
|
|
||||||
/// </summary>
|
|
||||||
[Required]
|
|
||||||
public int IdRecord { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Item Id
|
/// Item Id
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public int IdItem { get; set; }
|
public int IdItem { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Дата создания записи
|
/// Дата создания записи
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public DateTime Date { get; set; }
|
public DateTime Date { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Значение
|
/// Значение
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public JsonValue Value { get; set; } = default!;
|
public JsonValue Value { get; set; } = default!;
|
||||||
}
|
|
||||||
}
|
}
|
@ -2,29 +2,28 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data.GTR
|
namespace AsbCloudApp.Data.GTR;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Запись WITS
|
||||||
|
/// </summary>
|
||||||
|
public class WitsRecordDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Запись WITS
|
/// Id записи
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class WitsRecordDto
|
[Required]
|
||||||
{
|
public int Id { get; set; }
|
||||||
/// <summary>
|
|
||||||
/// Id записи
|
|
||||||
/// </summary>
|
|
||||||
[Required]
|
|
||||||
public int Id { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Дата создания записи
|
/// Дата создания записи
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public DateTime Date { get; set; }
|
public DateTime Date { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Параметры. Ключ - id_item. ValueContainer содержит значение.
|
/// Параметры. Ключ - id_item. ValueContainer содержит значение.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public Dictionary<int, JsonValue> Items { get; set; } = new();
|
public Dictionary<int, JsonValue> Items { get; set; } = new();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,13 +1,12 @@
|
|||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Интерфейс данных с Id
|
||||||
|
/// </summary>
|
||||||
|
public interface IId
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Интерфейс данных с Id
|
/// Идентификатор БД
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public interface IId
|
public int Id { get; set; }
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Идентификатор БД
|
|
||||||
/// </summary>
|
|
||||||
public int Id { get; set; }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,23 +1,22 @@
|
|||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// точка на карте
|
||||||
|
/// </summary>
|
||||||
|
public interface IMapPoint
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// точка на карте
|
/// Широта
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public interface IMapPoint
|
double? Latitude { get; set; }
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Широта
|
|
||||||
/// </summary>
|
|
||||||
double? Latitude { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Широта
|
/// Широта
|
||||||
/// </summary>
|
/// </summary>
|
||||||
double? Longitude { get; set; }
|
double? Longitude { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Часовой пояс
|
/// Часовой пояс
|
||||||
/// </summary>
|
/// </summary>
|
||||||
SimpleTimezoneDto Timezone { get; set; }
|
SimpleTimezoneDto Timezone { get; set; }
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,26 +1,25 @@
|
|||||||
using System;
|
using System;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Telemetry related dto
|
||||||
|
/// </summary>
|
||||||
|
public interface ITelemetryRelated
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Telemetry related dto
|
/// ИД телеметрии
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public interface ITelemetryRelated
|
int IdTelemetry { get; set; }
|
||||||
{
|
}
|
||||||
/// <summary>
|
|
||||||
/// ИД телеметрии
|
/// <summary>
|
||||||
/// </summary>
|
/// Интерфейс записи данных телеметрии
|
||||||
int IdTelemetry { get; set; }
|
/// </summary>
|
||||||
}
|
public interface ITelemetryData : ITelemetryRelated
|
||||||
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Интерфейс записи данных телеметрии
|
/// Отметка времени для этой записи
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public interface ITelemetryData : ITelemetryRelated
|
DateTime DateTime { get; set; }
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Отметка времени для этой записи
|
|
||||||
/// </summary>
|
|
||||||
DateTime DateTime { get; set; }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,13 +1,12 @@
|
|||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Well related DTO
|
||||||
|
/// </summary>
|
||||||
|
public interface IWellRelated
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Well related DTO
|
/// Well id in db
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public interface IWellRelated
|
int IdWell { get; set; }
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Well id in db
|
|
||||||
/// </summary>
|
|
||||||
int IdWell { get; set; }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,26 +1,25 @@
|
|||||||
using System;
|
using System;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// хранение дополнительной информации о записи
|
||||||
|
/// запись формируется на сервере автоматически
|
||||||
|
/// </summary>
|
||||||
|
public class ItemInfoDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// хранение дополнительной информации о записи
|
/// пользователь, внесший изменения (запись формируется на сервере автоматически)
|
||||||
/// запись формируется на сервере автоматически
|
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class ItemInfoDto
|
public int? IdUser { get; set; }
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// пользователь, внесший изменения (запись формируется на сервере автоматически)
|
|
||||||
/// </summary>
|
|
||||||
public int? IdUser { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// имя пользователя, внесшего изменения (запись формируется на сервере автоматически)
|
/// имя пользователя, внесшего изменения (запись формируется на сервере автоматически)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string? UserName { get; set; }
|
public string? UserName { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// дата последнего обновления (запись формируется на сервере автоматически)
|
/// дата последнего обновления (запись формируется на сервере автоматически)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public DateTimeOffset? LastUpdateDate { get; set; }
|
public DateTimeOffset? LastUpdateDate { get; set; }
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,56 +1,55 @@
|
|||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Состояние фоновой задачи
|
||||||
|
/// </summary>
|
||||||
|
public enum JobState
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Состояние фоновой задачи
|
/// Ожидает в очереди на выполнение
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public enum JobState
|
Waiting,
|
||||||
{
|
/// <summary>
|
||||||
/// <summary>
|
/// выполняется
|
||||||
/// Ожидает в очереди на выполнение
|
/// </summary>
|
||||||
/// </summary>
|
Working,
|
||||||
Waiting,
|
/// <summary>
|
||||||
/// <summary>
|
/// успешно выполнена
|
||||||
/// выполняется
|
/// </summary>
|
||||||
/// </summary>
|
Done,
|
||||||
Working,
|
/// <summary>
|
||||||
/// <summary>
|
/// завершена с ошибкой
|
||||||
/// успешно выполнена
|
/// </summary>
|
||||||
/// </summary>
|
Fail
|
||||||
Done,
|
};
|
||||||
/// <summary>
|
|
||||||
/// завершена с ошибкой
|
/// <summary>
|
||||||
/// </summary>
|
/// работа фоновой задачи
|
||||||
Fail
|
/// </summary>
|
||||||
};
|
public class JobDto
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// идентификатор
|
||||||
|
/// </summary>
|
||||||
|
[Required]
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// работа фоновой задачи
|
/// Состояние
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class JobDto
|
[Required]
|
||||||
{
|
public JobState State { get; set; }
|
||||||
/// <summary>
|
|
||||||
/// идентификатор
|
|
||||||
/// </summary>
|
|
||||||
[Required]
|
|
||||||
public int Id { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Состояние
|
/// результат выполнения
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
public Hashtable? Results { get; set; }
|
||||||
public JobState State { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// результат выполнения
|
/// Исключение, если возникла ошибка
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public Hashtable? Results { get; set; }
|
public string? Error { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Исключение, если возникла ошибка
|
|
||||||
/// </summary>
|
|
||||||
public string? Error { get; set; }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,45 +1,44 @@
|
|||||||
using System;
|
using System;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Статистика по ограничивающим параметрам
|
||||||
|
/// </summary>
|
||||||
|
public class LimitingParameterDataDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Статистика по ограничивающим параметрам
|
/// Идентификатор скважины
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class LimitingParameterDataDto
|
public int IdWell { get; set; }
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Идентификатор скважины
|
|
||||||
/// </summary>
|
|
||||||
public int IdWell { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Идентификатор телеметрии
|
/// Идентификатор телеметрии
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int IdTelemetry { get; set; }
|
public int IdTelemetry { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Дата начала ограничения
|
/// Дата начала ограничения
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public DateTimeOffset DateStart { get; set; }
|
public DateTimeOffset DateStart { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Дата окончания ограничения
|
/// Дата окончания ограничения
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public DateTimeOffset DateEnd { get; set; }
|
public DateTimeOffset DateEnd { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Глубина начала ограничения
|
/// Глубина начала ограничения
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float DepthStart { get; set; }
|
public float DepthStart { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Глубина окончания ограничения
|
/// Глубина окончания ограничения
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float DepthEnd { get; set; }
|
public float DepthEnd { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Идентификатор ограничения
|
/// Идентификатор ограничения
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public short IdFeedRegulator { get; set; }
|
public short IdFeedRegulator { get; set; }
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,71 +1,70 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Статистика по ограничивающим параметрам
|
||||||
|
/// </summary>
|
||||||
|
public class LimitingParameterDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Статистика по ограничивающим параметрам
|
/// Нет ограничения
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class LimitingParameterDto
|
public const int NoLimit = 0;
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Нет ограничения
|
|
||||||
/// </summary>
|
|
||||||
public const int NoLimit = 0;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// МСП
|
/// МСП
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public const int RopPlan = 1;
|
public const int RopPlan = 1;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Давление
|
/// Давление
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public const int Pressure = 2;
|
public const int Pressure = 2;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Осевая нагрузка
|
/// Осевая нагрузка
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public const int AxialLoad = 3;
|
public const int AxialLoad = 3;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Момент
|
/// Момент
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public const int RotorTorque = 4;
|
public const int RotorTorque = 4;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Идентификатор скважины
|
/// Идентификатор скважины
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public int IdWell { get; set; }
|
public int IdWell { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Время бурения
|
/// Время бурения
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public float TotalMinutes { get; set; }
|
public float TotalMinutes { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Глубина бурения
|
/// Глубина бурения
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public float Depth { get; set; }
|
public float Depth { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Идентификатор критерия бурения
|
/// Идентификатор критерия бурения
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public short IdFeedRegulator { get; set; }
|
public short IdFeedRegulator { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Наименование критерия бурения
|
/// Наименование критерия бурения
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public string NameFeedRegulator { get; set; } = string.Empty;
|
public string NameFeedRegulator { get; set; } = string.Empty;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Количество включений
|
/// Количество включений
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public int NumberInclusions { get; set; }
|
public int NumberInclusions { get; set; }
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,30 +1,29 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Точка на карте с названием
|
||||||
|
/// </summary>
|
||||||
|
public class MapPointBaseDto : IMapPoint, IId
|
||||||
{
|
{
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Точка на карте с названием
|
/// Название
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class MapPointBaseDto : IMapPoint, IId
|
[StringLength(50, MinimumLength = 1, ErrorMessage = "Допустимая длина названия от 1 до 50 символов")]
|
||||||
{
|
public string Caption { get; set; } = null!;
|
||||||
/// <inheritdoc/>
|
|
||||||
public int Id { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <inheritdoc/>
|
||||||
/// Название
|
[Range(-90, 90, ErrorMessage = "Допустимые значения широты от -90 до 90")]
|
||||||
/// </summary>
|
public double? Latitude { get; set; }
|
||||||
[StringLength(50, MinimumLength = 1, ErrorMessage = "Допустимая длина названия от 1 до 50 символов")]
|
|
||||||
public string Caption { get; set; } = null!;
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
[Range(-90, 90, ErrorMessage = "Допустимые значения широты от -90 до 90")]
|
[Range(-180, 180, ErrorMessage = "Допустимые значения долготы от -180 до 180")]
|
||||||
public double? Latitude { get; set; }
|
public double? Longitude { get; set; }
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
[Range(-180, 180, ErrorMessage = "Допустимые значения долготы от -180 до 180")]
|
public SimpleTimezoneDto Timezone { get; set; } = null!;
|
||||||
public double? Longitude { get; set; }
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public SimpleTimezoneDto Timezone { get; set; } = null!;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -2,46 +2,45 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// инфо о результатах замера
|
||||||
|
/// </summary>
|
||||||
|
public class MeasureDto : IId, IWellRelated
|
||||||
{
|
{
|
||||||
|
/// <inheritdoc/>
|
||||||
|
[Required]
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
[Required]
|
||||||
|
[Range(1, int.MaxValue, ErrorMessage = "Id скважины не может быть меньше 1")]
|
||||||
|
public int IdWell { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// инфо о результатах замера
|
/// Id категории замера
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class MeasureDto : IId, IWellRelated
|
[Required]
|
||||||
{
|
[Range(1, int.MaxValue, ErrorMessage = "Id категории не может быть меньше 1")]
|
||||||
/// <inheritdoc/>
|
public int IdCategory { get; set; }
|
||||||
[Required]
|
|
||||||
public int Id { get; set; }
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <summary>
|
||||||
[Required]
|
/// название категории замера
|
||||||
[Range(1, int.MaxValue, ErrorMessage = "Id скважины не может быть меньше 1")]
|
/// </summary>
|
||||||
public int IdWell { get; set; }
|
[Required]
|
||||||
|
[StringLength(120, MinimumLength = 1, ErrorMessage = "Название категории не может быть больше 120 символов")]
|
||||||
|
public string CategoryName { get; set; } = string.Empty;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Id категории замера
|
/// отметка времени замера
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
[Range(1, int.MaxValue, ErrorMessage = "Id категории не может быть меньше 1")]
|
public DateTimeOffset Timestamp { get; set; }
|
||||||
public int IdCategory { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// название категории замера
|
/// данные замера
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
[StringLength(120, MinimumLength = 1, ErrorMessage = "Название категории не может быть больше 120 символов")]
|
public Dictionary<string, object> Data { get; set; } = new();
|
||||||
public string CategoryName { get; set; } = string.Empty;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// отметка времени замера
|
|
||||||
/// </summary>
|
|
||||||
[Required]
|
|
||||||
public DateTimeOffset Timestamp { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// данные замера
|
|
||||||
/// </summary>
|
|
||||||
[Required]
|
|
||||||
public Dictionary<string, object> Data { get; set; } = new();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,47 +1,46 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Сообщение для frontend
|
||||||
|
/// </summary>
|
||||||
|
public class MessageDto : IId
|
||||||
{
|
{
|
||||||
|
/// <inheritdoc/>
|
||||||
|
[Required]
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Сообщение для frontend
|
/// дата появления события
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class MessageDto : IId
|
[Required]
|
||||||
{
|
public DateTimeOffset DateTime { get; set; }
|
||||||
/// <inheritdoc/>
|
|
||||||
[Required]
|
|
||||||
public int Id { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// дата появления события
|
/// категория события
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public DateTimeOffset DateTime { get; set; }
|
[Range(1, int.MaxValue, ErrorMessage = "Id категории не может быть ниже 1")]
|
||||||
|
public int CategoryId { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// категория события
|
/// глубина забоя, при котором событие возникло
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
[Range(1, int.MaxValue, ErrorMessage = "Id категории не может быть ниже 1")]
|
[Range(-1, int.MaxValue, ErrorMessage = "Id скважины не может быть ниже 1")]
|
||||||
public int CategoryId { get; set; }
|
public double WellDepth { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// глубина забоя, при котором событие возникло
|
/// пользователь панели оператора
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
public string? User { get; set; }
|
||||||
[Range(-1, int.MaxValue, ErrorMessage = "Id скважины не может быть ниже 1")]
|
|
||||||
public double WellDepth { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// пользователь панели оператора
|
/// текст сообщения
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string? User { get; set; }
|
[Required]
|
||||||
|
[StringLength(400, MinimumLength = 1, ErrorMessage = "Допустимая длина текста сообщения от 1 до 400 символов")]
|
||||||
/// <summary>
|
public string Message { get; set; } = string.Empty;
|
||||||
/// текст сообщения
|
|
||||||
/// </summary>
|
|
||||||
[Required]
|
|
||||||
[StringLength(400, MinimumLength = 1, ErrorMessage = "Допустимая длина текста сообщения от 1 до 400 символов")]
|
|
||||||
public string Message { get; set; } = string.Empty;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,18 +1,17 @@
|
|||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Минимальное и максимальное значение
|
||||||
|
/// </summary>
|
||||||
|
public class MinMaxDto<T>
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Минимальное и максимальное значение
|
/// Минимальное значение
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class MinMaxDto<T>
|
public T? Min { get; set; }
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Минимальное значение
|
|
||||||
/// </summary>
|
|
||||||
public T? Min { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Максимальное значение
|
/// Максимальное значение
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public T? Max { get; set; }
|
public T? Max { get; set; }
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,23 +1,22 @@
|
|||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Расширение для класса MinMaxDto
|
||||||
|
/// </summary>
|
||||||
|
public class MinMaxExtendedViewDto : MinMaxDto<double>
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Расширение для класса MinMaxDto
|
/// Среднее значение
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class MinMaxExtendedViewDto : MinMaxDto<double>
|
public double Avg { get; set; }
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Среднее значение
|
|
||||||
/// </summary>
|
|
||||||
public double Avg { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Является максимальным
|
/// Является максимальным
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool IsMax { get; set; }
|
public bool IsMax { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Является минимальным
|
/// Является минимальным
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool IsMin { get; set; }
|
public bool IsMin { get; set; }
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,53 +1,52 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Описание целевых/нормативных показателей операций
|
||||||
|
/// </summary>
|
||||||
|
public class OperationValueDto : IId, IWellRelated
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Описание целевых/нормативных показателей операций
|
/// Идентификатор в БД
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class OperationValueDto : IId, IWellRelated
|
[Required]
|
||||||
{
|
public int Id { get; set; }
|
||||||
/// <summary>
|
|
||||||
/// Идентификатор в БД
|
|
||||||
/// </summary>
|
|
||||||
[Required]
|
|
||||||
public int Id { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Идентификатор скважины
|
/// Идентификатор скважины
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public int IdWell { get; set; }
|
public int IdWell { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Идентификатор категории операции
|
/// Идентификатор категории операции
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public int IdOperationCategory { get; set; }
|
public int IdOperationCategory { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Целевой показатель
|
/// Целевой показатель
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public double TargetValue { get; set; }
|
public double TargetValue { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Нормативный показатель
|
/// Нормативный показатель
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public double StandardValue { get; set; }
|
public double StandardValue { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Стартовая глубина
|
/// Стартовая глубина
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public double DepthStart { get; set; }
|
public double DepthStart { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Конечная глубина
|
/// Конечная глубина
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public double DepthEnd { get; set; }
|
public double DepthEnd { get; set; }
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,40 +1,39 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Контейнер для поддержки постраничного просмотра таблиц
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T"></typeparam>
|
||||||
|
public class PaginationContainer<T>
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Контейнер для поддержки постраничного просмотра таблиц
|
/// конструктор
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <typeparam name="T"></typeparam>
|
public PaginationContainer()
|
||||||
public class PaginationContainer<T>
|
|
||||||
{
|
{
|
||||||
/// <summary>
|
Items = Enumerable.Empty<T>();
|
||||||
/// конструктор
|
|
||||||
/// </summary>
|
|
||||||
public PaginationContainer()
|
|
||||||
{
|
|
||||||
Items = Enumerable.Empty<T>();
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Кол-во записей пропущенных с начала таблицы в запросе от api
|
|
||||||
/// </summary>
|
|
||||||
public int Skip { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Кол-во записей в запросе от api
|
|
||||||
/// </summary>
|
|
||||||
public int Take { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Кол-во записей всего в таблице
|
|
||||||
/// </summary>
|
|
||||||
public int Count { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Данные
|
|
||||||
/// </summary>
|
|
||||||
public IEnumerable<T> Items { get; set; }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Кол-во записей пропущенных с начала таблицы в запросе от api
|
||||||
|
/// </summary>
|
||||||
|
public int Skip { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Кол-во записей в запросе от api
|
||||||
|
/// </summary>
|
||||||
|
public int Take { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Кол-во записей всего в таблице
|
||||||
|
/// </summary>
|
||||||
|
public int Count { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Данные
|
||||||
|
/// </summary>
|
||||||
|
public IEnumerable<T> Items { get; set; }
|
||||||
}
|
}
|
||||||
|
@ -1,28 +1,27 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Разрешение для группы пользователей сделать что-либо через web-api. <br/>
|
||||||
|
/// применяется как возможность доступа к Endpoint. <br/>
|
||||||
|
/// </summary>
|
||||||
|
public class PermissionDto : IId
|
||||||
{
|
{
|
||||||
|
/// <inheritdoc/>
|
||||||
|
[Required]
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Разрешение для группы пользователей сделать что-либо через web-api. <br/>
|
/// Название
|
||||||
/// применяется как возможность доступа к Endpoint. <br/>
|
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class PermissionDto : IId
|
[Required]
|
||||||
{
|
[StringLength(50, MinimumLength = 1, ErrorMessage = "Допустимая длина названия разрешения от 1 до 50 символов")]
|
||||||
/// <inheritdoc/>
|
public string Name { get; set; } = string.Empty;
|
||||||
[Required]
|
|
||||||
public int Id { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Название
|
/// Описание
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[StringLength(1024, MinimumLength = 1, ErrorMessage = "Допустимая длина описания от 1 до 1024 символов")]
|
||||||
[StringLength(50, MinimumLength = 1, ErrorMessage = "Допустимая длина названия разрешения от 1 до 50 символов")]
|
public string? Description { get; set; }
|
||||||
public string Name { get; set; } = string.Empty;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Описание
|
|
||||||
/// </summary>
|
|
||||||
[StringLength(1024, MinimumLength = 1, ErrorMessage = "Допустимая длина описания от 1 до 1024 символов")]
|
|
||||||
public string? Description { get; set; }
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -1,29 +1,28 @@
|
|||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// DTO объединяющее плановые и фактические значения
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T"></typeparam>
|
||||||
|
public class PlanFactDto<T> : PlanFactBase<T, T>
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// DTO объединяющее плановые и фактические значения
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T"></typeparam>
|
||||||
|
/// <typeparam name="V"></typeparam>
|
||||||
|
public class PlanFactBase<T, V>
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// DTO объединяющее плановые и фактические значения
|
/// Плановое значение
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <typeparam name="T"></typeparam>
|
public T? Plan { get; set; }
|
||||||
public class PlanFactDto<T> : PlanFactBase<T, T>
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// DTO объединяющее плановые и фактические значения
|
/// Фактическое значение
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <typeparam name="T"></typeparam>
|
public V? Fact { get; set; }
|
||||||
/// <typeparam name="V"></typeparam>
|
|
||||||
public class PlanFactBase<T, V>
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Плановое значение
|
|
||||||
/// </summary>
|
|
||||||
public T? Plan { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Фактическое значение
|
|
||||||
/// </summary>
|
|
||||||
public V? Fact { get; set; }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,23 +1,22 @@
|
|||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Lines container for Time Vs Depth chart
|
||||||
|
/// </summary>
|
||||||
|
public class PlanFactPredictBase<T>
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Lines container for Time Vs Depth chart
|
/// плановое значение
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class PlanFactPredictBase<T>
|
public T? Plan { get; set; }
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// плановое значение
|
|
||||||
/// </summary>
|
|
||||||
public T? Plan { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// фактическое значение
|
/// фактическое значение
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public T? Fact { get; set; }
|
public T? Fact { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// предсказанное значение
|
/// предсказанное значение
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public T? Predict { get; set; }
|
public T? Predict { get; set; }
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -2,85 +2,84 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Плановое значение и максимально допустимое ограничение
|
||||||
|
/// </summary>
|
||||||
|
public class PlanLimitDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Плановое значение и максимально допустимое ограничение
|
/// План
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class PlanLimitDto
|
[Required]
|
||||||
|
public double Plan { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Максимальное ограничение
|
||||||
|
/// </summary>
|
||||||
|
[Required]
|
||||||
|
public double LimitMax { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Валидация
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="commonRange">Общий диапазон для плана и ограничения</param>
|
||||||
|
/// <param name="paramName"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public virtual IEnumerable<ValidationResult> Validate((double GE, double LE) commonRange, string paramName)
|
||||||
|
=> Validate(commonRange, commonRange, paramName);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Валидация
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="planRange"></param>
|
||||||
|
/// <param name="limitMaxRange"></param>
|
||||||
|
/// <param name="paramName">Название параметра для которого задается план и ограничение</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public virtual IEnumerable<ValidationResult> Validate((double GE, double LE) planRange, (double GE, double LE) limitMaxRange, string paramName)
|
||||||
{
|
{
|
||||||
/// <summary>
|
if (Plan < planRange.GE || Plan > planRange.LE)
|
||||||
/// План
|
yield return new ValidationResult($"{paramName} плановое значение должно быть в диапазоне [{planRange.GE}; {planRange.LE}].");
|
||||||
/// </summary>
|
|
||||||
[Required]
|
|
||||||
public double Plan { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
if (Plan < planRange.GE || Plan > planRange.LE)
|
||||||
/// Максимальное ограничение
|
yield return new ValidationResult($"{paramName} ограничивающее значение должно быть в диапазоне [{limitMaxRange.GE}; {limitMaxRange.LE}].");
|
||||||
/// </summary>
|
|
||||||
[Required]
|
|
||||||
public double LimitMax { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Валидация
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="commonRange">Общий диапазон для плана и ограничения</param>
|
|
||||||
/// <param name="paramName"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public virtual IEnumerable<ValidationResult> Validate((double GE, double LE) commonRange, string paramName)
|
|
||||||
=> Validate(commonRange, commonRange, paramName);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Валидация
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="planRange"></param>
|
|
||||||
/// <param name="limitMaxRange"></param>
|
|
||||||
/// <param name="paramName">Название параметра для которого задается план и ограничение</param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public virtual IEnumerable<ValidationResult> Validate((double GE, double LE) planRange, (double GE, double LE) limitMaxRange, string paramName)
|
|
||||||
{
|
|
||||||
if (Plan < planRange.GE || Plan > planRange.LE)
|
|
||||||
yield return new ValidationResult($"{paramName} плановое значение должно быть в диапазоне [{planRange.GE}; {planRange.LE}].");
|
|
||||||
|
|
||||||
if (Plan < planRange.GE || Plan > planRange.LE)
|
|
||||||
yield return new ValidationResult($"{paramName} ограничивающее значение должно быть в диапазоне [{limitMaxRange.GE}; {limitMaxRange.LE}].");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Реализация RangeAttribute для PlanLimitDto
|
||||||
|
/// </summary>
|
||||||
|
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter,
|
||||||
|
AllowMultiple = false)]
|
||||||
|
public class RangePlanLimitAttribute : ValidationAttribute
|
||||||
|
{
|
||||||
|
private readonly double minimum;
|
||||||
|
private readonly double maximum;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Реализация RangeAttribute для PlanLimitDto
|
/// Реализация RangeAttribute для PlanLimitDto
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter,
|
/// <param name="minimum"></param>
|
||||||
AllowMultiple = false)]
|
/// <param name="maximum"></param>
|
||||||
public class RangePlanLimitAttribute : ValidationAttribute
|
public RangePlanLimitAttribute(double minimum, double maximum)
|
||||||
{
|
{
|
||||||
private readonly double minimum;
|
this.minimum = minimum;
|
||||||
private readonly double maximum;
|
this.maximum = maximum;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <inheritdoc/>
|
||||||
/// Реализация RangeAttribute для PlanLimitDto
|
public override bool IsValid(object? value)
|
||||||
/// </summary>
|
{
|
||||||
/// <param name="minimum"></param>
|
try
|
||||||
/// <param name="maximum"></param>
|
|
||||||
public RangePlanLimitAttribute(double minimum, double maximum)
|
|
||||||
{
|
{
|
||||||
this.minimum = minimum;
|
if(value is PlanLimitDto dto)
|
||||||
this.maximum = maximum;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override bool IsValid(object? value)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
{
|
||||||
if(value is PlanLimitDto dto)
|
var isPlanValid = dto.Plan <= maximum && dto.Plan >= minimum;
|
||||||
{
|
var isLimitMaxValid = dto.LimitMax <= maximum && dto.LimitMax >= minimum;
|
||||||
var isPlanValid = dto.Plan <= maximum && dto.Plan >= minimum;
|
return isPlanValid && isLimitMaxValid;
|
||||||
var isLimitMaxValid = dto.LimitMax <= maximum && dto.LimitMax >= minimum;
|
}
|
||||||
return isPlanValid && isLimitMaxValid;
|
}catch{}
|
||||||
}
|
return false;
|
||||||
}catch{}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,18 +1,17 @@
|
|||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Справочная информация об отчете
|
||||||
|
/// </summary>
|
||||||
|
public class ReportInfoDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Справочная информация об отчете
|
/// Название файла
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class ReportInfoDto
|
public string FileName { get; set; } = null!;
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Название файла
|
|
||||||
/// </summary>
|
|
||||||
public string FileName { get; set; } = null!;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Размер файла
|
/// Размер файла
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int FileSize { get; set; } = 0;
|
public int FileSize { get; set; } = 0;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,54 +1,53 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// DTO формирования рапорта
|
||||||
|
/// </summary>
|
||||||
|
public class ReportPropertiesDto : IId, IWellRelated
|
||||||
{
|
{
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
[Range(1, int.MaxValue, ErrorMessage = "Id скважины не может быть ниже 1")]
|
||||||
|
public int IdWell { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// DTO формирования рапорта
|
/// название
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class ReportPropertiesDto : IId, IWellRelated
|
[StringLength(260, MinimumLength = 1, ErrorMessage = "Допустимая длина имени файла от 1 до 260 символов")]
|
||||||
{
|
public string Name { get; set; } = null!;
|
||||||
/// <inheritdoc/>
|
|
||||||
public int Id { get; set; }
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <summary>
|
||||||
[Range(1, int.MaxValue, ErrorMessage = "Id скважины не может быть ниже 1")]
|
/// <see cref="FileInfoDto"/>
|
||||||
public int IdWell { get; set; }
|
/// </summary>
|
||||||
|
public FileInfoDto File { get; set; } = null!;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// название
|
/// Дата формирования
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[StringLength(260, MinimumLength = 1, ErrorMessage = "Допустимая длина имени файла от 1 до 260 символов")]
|
public DateTimeOffset Date { get; set; }
|
||||||
public string Name { get; set; } = null!;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// <see cref="FileInfoDto"/>
|
/// Дата начала рапорта
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public FileInfoDto File { get; set; } = null!;
|
public DateTimeOffset Begin { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Дата формирования
|
/// Дата окончания рапорта
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public DateTimeOffset Date { get; set; }
|
public DateTimeOffset End { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Дата начала рапорта
|
/// шаг между точками диаграммы
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public DateTimeOffset Begin { get; set; }
|
public int Step { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Дата окончания рапорта
|
/// формат файла
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public DateTimeOffset End { get; set; }
|
public string Format { get; set; } = string.Empty;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// шаг между точками диаграммы
|
|
||||||
/// </summary>
|
|
||||||
public int Step { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// формат файла
|
|
||||||
/// </summary>
|
|
||||||
public string Format { get; set; } = string.Empty;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,70 +1,69 @@
|
|||||||
using System;
|
using System;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// DTO журнала запросов
|
||||||
|
/// </summary>
|
||||||
|
public class RequestLogDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// DTO журнала запросов
|
/// логин пользователя
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class RequestLogDto
|
public string UserLogin { get; set; } = string.Empty;
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// логин пользователя
|
|
||||||
/// </summary>
|
|
||||||
public string UserLogin { get; set; } = string.Empty;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Id пользователя
|
/// Id пользователя
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int UserId { get; set; }
|
public int UserId { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// IP адрес пользователя
|
/// IP адрес пользователя
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string? UserIp { get; set; }
|
public string? UserIp { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// метод запроса (GET, POST,..)
|
/// метод запроса (GET, POST,..)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string RequestMethod { get; set; } = null!;
|
public string RequestMethod { get; set; } = null!;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// url
|
/// url
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string? RequestPath { get; set; }
|
public string? RequestPath { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Referer
|
/// Referer
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string Referer { get; set; } = string.Empty;
|
public string Referer { get; set; } = string.Empty;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// продолжительность выполнения
|
/// продолжительность выполнения
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public long ElapsedMilliseconds { get; set; }
|
public long ElapsedMilliseconds { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// http status [200 - Ok, ...]
|
/// http status [200 - Ok, ...]
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int Status { get; set; }
|
public int Status { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// метка времени запроса
|
/// метка времени запроса
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public DateTime Date { get; set; }
|
public DateTime Date { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// сообщение об ошибке, если она произошла
|
/// сообщение об ошибке, если она произошла
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string? ExceptionMessage { get; set; } = null!;
|
public string? ExceptionMessage { get; set; } = null!;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// стек вызовов
|
/// стек вызовов
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string? ExceptionStack { get; set; } = null!;
|
public string? ExceptionStack { get; set; } = null!;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Размер body
|
/// Размер body
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public long? RequestContentLength { get; set; }
|
public long? RequestContentLength { get; set; }
|
||||||
}
|
|
||||||
}
|
}
|
@ -2,58 +2,57 @@ using System;
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using AsbCloudApp.Data.User;
|
using AsbCloudApp.Data.User;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// DTO статистики запросов по пользователю
|
||||||
|
/// </summary>
|
||||||
|
public class RequestLogUserDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// DTO статистики запросов по пользователю
|
/// Id пользователя
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class RequestLogUserDto
|
[Required]
|
||||||
{
|
public int UserId { get; set; }
|
||||||
/// <summary>
|
|
||||||
/// Id пользователя
|
|
||||||
/// </summary>
|
|
||||||
[Required]
|
|
||||||
public int UserId { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// логин
|
/// логин
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public string Login { get; set; } = string.Empty;
|
public string Login { get; set; } = string.Empty;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// IP адрес пользователя
|
/// IP адрес пользователя
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string? Ip { get; set; }
|
public string? Ip { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// время выполнения запроса
|
/// время выполнения запроса
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public long ElapsedMs { get; set; }
|
public long ElapsedMs { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// метка времени последнего запроса
|
/// метка времени последнего запроса
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public DateTime LastDate { get; set; }
|
public DateTime LastDate { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// кол-во запросов
|
/// кол-во запросов
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public long Requests { get; set; }
|
public long Requests { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// кол-во ошибок
|
/// кол-во ошибок
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public long Errors { get; set; }
|
public long Errors { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// DTO пользователя
|
/// DTO пользователя
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public UserDto User { get; set; } = null!;
|
public UserDto User { get; set; } = null!;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -3,35 +3,34 @@ using System.Collections.Generic;
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data.SAUB
|
namespace AsbCloudApp.Data.SAUB;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// DTO для получения записи drill_test из панели
|
||||||
|
/// </summary>
|
||||||
|
public class DrillTestBaseDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// DTO для получения записи drill_test из панели
|
/// Идентификатор drill test
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class DrillTestBaseDto
|
[Required]
|
||||||
{
|
public int Id { get; set; }
|
||||||
/// <summary>
|
|
||||||
/// Идентификатор drill test
|
|
||||||
/// </summary>
|
|
||||||
[Required]
|
|
||||||
public int Id { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Время начала drill test
|
/// Время начала drill test
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public DateTimeOffset TimeStampStart { get; set; }
|
public DateTimeOffset TimeStampStart { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Глубина начала drill test
|
/// Глубина начала drill test
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public float DepthStart { get; set; }
|
public float DepthStart { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Параметры теста
|
/// Параметры теста
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public IEnumerable<DrillTestParamsDto> Params { get; set; } = Enumerable.Empty<DrillTestParamsDto>();
|
public IEnumerable<DrillTestParamsDto> Params { get; set; } = Enumerable.Empty<DrillTestParamsDto>();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,15 +1,14 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data.SAUB
|
namespace AsbCloudApp.Data.SAUB;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// DTO для отображения записи drill_test
|
||||||
|
/// </summary>
|
||||||
|
public class DrillTestDto : DrillTestBaseDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// DTO для отображения записи drill_test
|
/// Связанная с drill_test телеметрия
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class DrillTestDto : DrillTestBaseDto
|
public TelemetryDto? Telemetry { get; set; }
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Связанная с drill_test телеметрия
|
|
||||||
/// </summary>
|
|
||||||
public TelemetryDto? Telemetry { get; set; }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,41 +1,40 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data.SAUB
|
namespace AsbCloudApp.Data.SAUB;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Параметры Drill Test
|
||||||
|
/// </summary>
|
||||||
|
public class DrillTestParamsDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Параметры Drill Test
|
/// Шаг
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class DrillTestParamsDto
|
[Required]
|
||||||
{
|
public int Step { get; set; }
|
||||||
/// <summary>
|
|
||||||
/// Шаг
|
|
||||||
/// </summary>
|
|
||||||
[Required]
|
|
||||||
public int Step { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Нагрузка
|
/// Нагрузка
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float? Workload { get; set; }
|
public float? Workload { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Заданная скорость
|
/// Заданная скорость
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float? Speed { get; set; }
|
public float? Speed { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Скорость проходки
|
/// Скорость проходки
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float? DepthSpeed { get; set; }
|
public float? DepthSpeed { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Время бурения шага, сек
|
/// Время бурения шага, сек
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float? TimeDrillStep { get; set; }
|
public float? TimeDrillStep { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Глубина бурения шага
|
/// Глубина бурения шага
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float? DepthDrillStep { get; set; }
|
public float? DepthDrillStep { get; set; }
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,48 +1,47 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data.SAUB
|
namespace AsbCloudApp.Data.SAUB;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Описание шаблона события панели оператора
|
||||||
|
/// </summary>
|
||||||
|
public class EventDto : IId
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Описание шаблона события панели оператора
|
/// id события
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class EventDto : IId
|
[Required]
|
||||||
{
|
|
||||||
/// <summary>
|
public int Id { get; set; }
|
||||||
/// id события
|
|
||||||
/// </summary>
|
|
||||||
[Required]
|
|
||||||
|
|
||||||
public int Id { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// шаблон текста сообщения
|
/// шаблон текста сообщения
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public string Message { get; set; } = string.Empty;
|
public string Message { get; set; } = string.Empty;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// id категории события
|
/// id категории события
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
[Range(0, int.MaxValue, ErrorMessage = "Id категории события не может быть отрицательным")]
|
[Range(0, int.MaxValue, ErrorMessage = "Id категории события не может быть отрицательным")]
|
||||||
public int IdCategory { get; set; }
|
public int IdCategory { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// переменная сервера обмена информацией с полевым оборудованием
|
/// переменная сервера обмена информацией с полевым оборудованием
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string Tag { get; set; } = string.Empty;
|
public string Tag { get; set; } = string.Empty;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// тип определения наступления события
|
/// тип определения наступления события
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
[Range(0, int.MaxValue, ErrorMessage = "Id типа события не может быть отрицательным")]
|
[Range(0, int.MaxValue, ErrorMessage = "Id типа события не может быть отрицательным")]
|
||||||
public int EventType { get; set; }
|
public int EventType { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// флаг, следует ли воспроизводить звук при наступлении события
|
/// флаг, следует ли воспроизводить звук при наступлении события
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public int IdSound { get; set; }
|
public int IdSound { get; set; }
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,43 +1,42 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data.SAUB
|
namespace AsbCloudApp.Data.SAUB;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// DTO рекомендации уставок передаваемых на панель оператора
|
||||||
|
/// </summary>
|
||||||
|
public class SetpointInfoDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// DTO рекомендации уставок передаваемых на панель оператора
|
/// отображаемое название уставки
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class SetpointInfoDto
|
public string DisplayName { get; set; } = string.Empty;
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// отображаемое название уставки
|
|
||||||
/// </summary>
|
|
||||||
public string DisplayName { get; set; } = string.Empty;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// настоящее название уставки (имя переменной в панели оператора)
|
/// настоящее название уставки (имя переменной в панели оператора)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public string Name { get; set; } = null!;
|
public string Name { get; set; } = null!;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// единицы измерения
|
/// единицы измерения
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string? Units { get; set; }
|
public string? Units { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// комментарий
|
/// комментарий
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string? Comment { get; set; }
|
public string? Comment { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// макс. значение
|
/// макс. значение
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public double Max { get; set; } = double.MaxValue;
|
public double Max { get; set; } = double.MaxValue;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// мин значение
|
/// мин значение
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public double Min { get; set; } = double.MinValue;
|
public double Min { get; set; } = double.MinValue;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -3,64 +3,63 @@ using System.Collections.Generic;
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using AsbCloudApp.Data.User;
|
using AsbCloudApp.Data.User;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data.SAUB
|
namespace AsbCloudApp.Data.SAUB;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// DTO запроса для предложения по изменению уставок на панели оператора
|
||||||
|
/// </summary>
|
||||||
|
public class SetpointsRequestDto : IId, IWellRelated
|
||||||
{
|
{
|
||||||
|
/// <inheritdoc/>
|
||||||
|
[Required]
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
[Required]
|
||||||
|
public int IdWell { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// DTO запроса для предложения по изменению уставок на панели оператора
|
/// Id автора запроса
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class SetpointsRequestDto : IId, IWellRelated
|
[Required]
|
||||||
{
|
public int IdAuthor { get; set; }
|
||||||
/// <inheritdoc/>
|
|
||||||
[Required]
|
|
||||||
public int Id { get; set; }
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <summary>
|
||||||
[Required]
|
/// текущее состояние запроса 0: неизвестно, 1:ожидает отправки, 2: отправлено, 3: принято оператором, 4: отклонено оператором, 5: устарело
|
||||||
public int IdWell { get; set; }
|
/// </summary>
|
||||||
|
[Required]
|
||||||
|
public int IdState { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Id автора запроса
|
/// отметка времени создания запроса
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
public DateTimeOffset UploadDate { get; set; } = DateTimeOffset.Now;
|
||||||
public int IdAuthor { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// текущее состояние запроса 0: неизвестно, 1:ожидает отправки, 2: отправлено, 3: принято оператором, 4: отклонено оператором, 5: устарело
|
/// время в секундах актуальности этого запроса
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public int IdState { get; set; }
|
[Range(10 * 60, 4 * 60 * 60)]
|
||||||
|
public int ObsolescenceSec { get; set; } = 10 * 60;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// отметка времени создания запроса
|
/// набор уставок: {"название переменной панели"; "рекомендуемое значение"}
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public DateTimeOffset UploadDate { get; set; } = DateTimeOffset.Now;
|
[Required]
|
||||||
|
public Dictionary<string, double> Setpoints { get; set; } = new();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// время в секундах актуальности этого запроса
|
/// Комментарий для оператора панели
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
public string? Comment { get; set; }
|
||||||
[Range(10 * 60, 4 * 60 * 60)]
|
|
||||||
public int ObsolescenceSec { get; set; } = 10 * 60;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// набор уставок: {"название переменной панели"; "рекомендуемое значение"}
|
/// DTO скважины
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
public WellDto? Well { get; set; }
|
||||||
public Dictionary<string, double> Setpoints { get; set; } = new();
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Комментарий для оператора панели
|
/// DTO автора
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string? Comment { get; set; }
|
public UserDto? Author { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// DTO скважины
|
|
||||||
/// </summary>
|
|
||||||
public WellDto? Well { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// DTO автора
|
|
||||||
/// </summary>
|
|
||||||
public UserDto? Author { get; set; }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,236 +1,235 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data.SAUB
|
namespace AsbCloudApp.Data.SAUB;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Сообщение получаемое по телеметрии и отправляемое в frontend
|
||||||
|
/// </summary>
|
||||||
|
public class TelemetryDataSaubDto : ITelemetryData
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Сообщение получаемое по телеметрии и отправляемое в frontend
|
/// метка времени данных
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class TelemetryDataSaubDto : ITelemetryData
|
[Required]
|
||||||
{
|
public DateTime DateTime { get; set; }
|
||||||
/// <summary>
|
|
||||||
/// метка времени данных
|
/// <summary>
|
||||||
/// </summary>
|
/// Пользователь САУБ
|
||||||
[Required]
|
/// </summary>
|
||||||
public DateTime DateTime { get; set; }
|
public int? IdUser { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Пользователь САУБ
|
|
||||||
/// </summary>
|
|
||||||
public int? IdUser { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Режим работы САУБ:
|
/// Режим работы САУБ:
|
||||||
/// 0 - "РУЧНОЙ"
|
/// 0 - "РУЧНОЙ"
|
||||||
/// 1 - "БУРЕНИЕ В РОТОРЕ"
|
/// 1 - "БУРЕНИЕ В РОТОРЕ"
|
||||||
/// 2 - "ПРОРАБОТКА"
|
/// 2 - "ПРОРАБОТКА"
|
||||||
/// 3 - "БУРЕНИЕ В СЛАЙДЕ"
|
/// 3 - "БУРЕНИЕ В СЛАЙДЕ"
|
||||||
/// 4 - "СПУСК СПО"
|
/// 4 - "СПУСК СПО"
|
||||||
/// 5 - "ПОДЪЕМ СПО"
|
/// 5 - "ПОДЪЕМ СПО"
|
||||||
/// 6 - "ПОДЪЕМ С ПРОРАБОТКОЙ"
|
/// 6 - "ПОДЪЕМ С ПРОРАБОТКОЙ"
|
||||||
/// 10 - "БЛОКИРОВКА"
|
/// 10 - "БЛОКИРОВКА"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public short Mode { get; set; }
|
public short Mode { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// telemetry id
|
/// telemetry id
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int IdTelemetry { get; set; }
|
public int IdTelemetry { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// telemetry user
|
/// telemetry user
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string? User { get; set; }
|
public string? User { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Глубина забоя, м
|
/// Глубина забоя, м
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float WellDepth { get; set; }
|
public float WellDepth { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Глубина долота, м
|
/// Глубина долота, м
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float BitDepth { get; set; }
|
public float BitDepth { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Талевый блок. Положение, м
|
/// Талевый блок. Положение, м
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float BlockPosition { get; set; }
|
public float BlockPosition { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Талевый блок. Мин положение, м
|
/// Талевый блок. Мин положение, м
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float? BlockPositionMin { get; set; }
|
public float? BlockPositionMin { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Талевый блок. Макс положение, м
|
/// Талевый блок. Макс положение, м
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float? BlockPositionMax { get; set; }
|
public float? BlockPositionMax { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Талевый блок. Скорость, м/час
|
/// Талевый блок. Скорость, м/час
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float? BlockSpeed { get; set; }
|
public float? BlockSpeed { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Талевый блок. Задание скорости, м/час
|
/// Талевый блок. Задание скорости, м/час
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float? BlockSpeedSp { get; set; }
|
public float? BlockSpeedSp { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Талевый блок. Задание скорости для роторного бурения, м/час
|
/// Талевый блок. Задание скорости для роторного бурения, м/час
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float? BlockSpeedSpRotor { get; set; }
|
public float? BlockSpeedSpRotor { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Талевый блок. Задание скорости для режима слайда, м/час
|
/// Талевый блок. Задание скорости для режима слайда, м/час
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float? BlockSpeedSpSlide { get; set; }
|
public float? BlockSpeedSpSlide { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Талевый блок. Задание скорости для проработки, м/час
|
/// Талевый блок. Задание скорости для проработки, м/час
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float? BlockSpeedSpDevelop { get; set; }
|
public float? BlockSpeedSpDevelop { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Давление, атм
|
/// Давление, атм
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float Pressure { get; set; }
|
public float Pressure { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Давление при холостом ходе, атм
|
/// Давление при холостом ходе, атм
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float? PressureIdle { get; set; }
|
public float? PressureIdle { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// действующее задание давления, атм
|
/// действующее задание давления, атм
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float? PressureSp { get; set; }
|
public float? PressureSp { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// задание давления для роторного режима, атм
|
/// задание давления для роторного режима, атм
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float? PressureSpRotor { get; set; }
|
public float? PressureSpRotor { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// задание давления для режима слайда, атм
|
/// задание давления для режима слайда, атм
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float? PressureSpSlide { get; set; }
|
public float? PressureSpSlide { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// задание давления для проработки, атм
|
/// задание давления для проработки, атм
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float? PressureSpDevelop { get; set; }
|
public float? PressureSpDevelop { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// ограничение макс перепада давления, атм
|
/// ограничение макс перепада давления, атм
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float? PressureDeltaLimitMax { get; set; }
|
public float? PressureDeltaLimitMax { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// осевая нагрузка, т
|
/// осевая нагрузка, т
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float AxialLoad { get; set; }
|
public float AxialLoad { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// задание осевой нагрузки, т
|
/// задание осевой нагрузки, т
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float? AxialLoadSp { get; set; }
|
public float? AxialLoadSp { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// ограничение макс. осевой нагрузки, т
|
/// ограничение макс. осевой нагрузки, т
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float? AxialLoadLimitMax { get; set; }
|
public float? AxialLoadLimitMax { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Вес на крюке, т
|
/// Вес на крюке, т
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float HookWeight { get; set; }
|
public float HookWeight { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Вес на крюке на х.х., т
|
/// Вес на крюке на х.х., т
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float? HookWeightIdle { get; set; }
|
public float? HookWeightIdle { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// ограничение мин веса на крюке, т
|
/// ограничение мин веса на крюке, т
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float? HookWeightLimitMin { get; set; }
|
public float? HookWeightLimitMin { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// ограничение макс веса на крюке, т
|
/// ограничение макс веса на крюке, т
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float? HookWeightLimitMax { get; set; }
|
public float? HookWeightLimitMax { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// момент ротора, кН*м
|
/// момент ротора, кН*м
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float RotorTorque { get; set; }
|
public float RotorTorque { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// момент ротора на х.х., кН*м
|
/// момент ротора на х.х., кН*м
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float? RotorTorqueIdle { get; set; }
|
public float? RotorTorqueIdle { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// задание момента ротора, кН*м
|
/// задание момента ротора, кН*м
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float? RotorTorqueSp { get; set; }
|
public float? RotorTorqueSp { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// ограничение момента ротора, кН*м
|
/// ограничение момента ротора, кН*м
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float? RotorTorqueLimitMax { get; set; }
|
public float? RotorTorqueLimitMax { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// скорость ротора, об/мин
|
/// скорость ротора, об/мин
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float RotorSpeed { get; set; }
|
public float RotorSpeed { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// расход, л/с
|
/// расход, л/с
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float? Flow { get; set; }
|
public float? Flow { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// расход на х.х., л/с
|
/// расход на х.х., л/с
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float? FlowIdle { get; set; }
|
public float? FlowIdle { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// ограничение макс расхода, л/с
|
/// ограничение макс расхода, л/с
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float? FlowDeltaLimitMax { get; set; }
|
public float? FlowDeltaLimitMax { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// id текущего критерия бурения
|
/// id текущего критерия бурения
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public short? IdFeedRegulator { get; set; }
|
public short? IdFeedRegulator { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Текущее состояние работы MSE
|
/// Текущее состояние работы MSE
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public short? MseState { get; set; }
|
public short? MseState { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// MSE
|
/// MSE
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float? Mse { get; set; }
|
public float? Mse { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Расход. Буровой насос 1
|
/// Расход. Буровой насос 1
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float? Pump0Flow { get; set; }
|
public float? Pump0Flow { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Расход. Буровой насос 2
|
/// Расход. Буровой насос 2
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float? Pump1Flow { get; set; }
|
public float? Pump1Flow { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Расход. Буровой насос 3
|
/// Расход. Буровой насос 3
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float? Pump2Flow { get; set; }
|
public float? Pump2Flow { get; set; }
|
||||||
}
|
|
||||||
}
|
}
|
@ -1,115 +1,114 @@
|
|||||||
using System;
|
using System;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data.SAUB
|
namespace AsbCloudApp.Data.SAUB;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Статистика телеметрии САУБ (усредненные значения) по интервалам глубины
|
||||||
|
/// </summary>
|
||||||
|
public class TelemetryDataSaubStatDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Статистика телеметрии САУБ (усредненные значения) по интервалам глубины
|
/// Кол-во записей в интервале
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class TelemetryDataSaubStatDto
|
public int Count { get; set; }
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Кол-во записей в интервале
|
|
||||||
/// </summary>
|
|
||||||
public int Count { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Дата начала интервала
|
/// Дата начала интервала
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public DateTime DateMin { get; set; }
|
public DateTime DateMin { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Дата окончания интервала
|
/// Дата окончания интервала
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public DateTime DateMax { get; set; }
|
public DateTime DateMax { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Глубина начала интервала
|
/// Глубина начала интервала
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float WellDepthMin { get; set; }
|
public float WellDepthMin { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Глубина окончания интервала
|
/// Глубина окончания интервала
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float WellDepthMax { get; set; }
|
public float WellDepthMax { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Давление
|
/// Давление
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float Pressure { get; set; }
|
public float Pressure { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// действующее задание давления
|
/// действующее задание давления
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float PressureSp { get; set; }
|
public float PressureSp { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// действующее задание перепада давления
|
/// действующее задание перепада давления
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float PressureSpDelta { get; set; }
|
public float PressureSpDelta { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Давление при холостом ходе.
|
/// Давление при холостом ходе.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float PressureIdle { get; set; }
|
public float PressureIdle { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// ограничение макс перепада давления
|
/// ограничение макс перепада давления
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float PressureDeltaLimitMax { get; set; }
|
public float PressureDeltaLimitMax { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Перепад давления
|
/// Перепад давления
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float PressureDelta { get; set; }
|
public float PressureDelta { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// осевая нагрузка
|
/// осевая нагрузка
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float AxialLoad { get; set; }
|
public float AxialLoad { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// задание осевой нагрузки
|
/// задание осевой нагрузки
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float AxialLoadSp { get; set; }
|
public float AxialLoadSp { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// ограничение макс. осевой нагрузки
|
/// ограничение макс. осевой нагрузки
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float AxialLoadLimitMax { get; set; }
|
public float AxialLoadLimitMax { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// момент ротора
|
/// момент ротора
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float RotorTorque { get; set; }
|
public float RotorTorque { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// задание момента ротора
|
/// задание момента ротора
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float RotorTorqueSp { get; set; }
|
public float RotorTorqueSp { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// момент ротора на х.х.
|
/// момент ротора на х.х.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float RotorTorqueLimitMax { get; set; }
|
public float RotorTorqueLimitMax { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Талевый блок. Скорость
|
/// Талевый блок. Скорость
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float BlockSpeed { get; set; }
|
public float BlockSpeed { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Талевый блок. Задание скорости
|
/// Талевый блок. Задание скорости
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float BlockSpeedSp { get; set; }
|
public float BlockSpeedSp { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Режим САУБ
|
/// Режим САУБ
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public short IdMode { get; set; }
|
public short IdMode { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Текущий критерий бурения
|
/// Текущий критерий бурения
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public short? IdFeedRegulator { get; set; }
|
public short? IdFeedRegulator { get; set; }
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,84 +1,83 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data.SAUB
|
namespace AsbCloudApp.Data.SAUB;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// телеметрия спин мастер
|
||||||
|
/// </summary>
|
||||||
|
public class TelemetryDataSpinDto : ITelemetryData
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// телеметрия спин мастер
|
/// Идентификатор телеметрии
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class TelemetryDataSpinDto : ITelemetryData
|
public int IdTelemetry { get; set; }
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Идентификатор телеметрии
|
|
||||||
/// </summary>
|
|
||||||
public int IdTelemetry { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Дата
|
/// Дата
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public DateTime DateTime { get; set; }
|
public DateTime DateTime { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Ограничение числа оборотов вправо
|
/// Ограничение числа оборотов вправо
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float? RevolsRightLimit { get; set; }
|
public float? RevolsRightLimit { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Ограничение числа оборотов влево
|
/// Ограничение числа оборотов влево
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float? RevolsLeftLimit { get; set; }
|
public float? RevolsLeftLimit { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Заданная скорость вращения вправо
|
/// Заданная скорость вращения вправо
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float? SpeedRightSp { get; set; }
|
public float? SpeedRightSp { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Заданная скорость вращения влево
|
/// Заданная скорость вращения влево
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float? SpeedLeftSp { get; set; }
|
public float? SpeedLeftSp { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Суммарное количество оборотов вправо
|
/// Суммарное количество оборотов вправо
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float? RevolsRightTotal { get; set; }
|
public float? RevolsRightTotal { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Суммарное количество оборотов влево
|
/// Суммарное количество оборотов влево
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float? RevolsLeftTotal { get; set; }
|
public float? RevolsLeftTotal { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Нулевая позиция осцилляции
|
/// Нулевая позиция осцилляции
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float? PositionZero { get; set; }
|
public float? PositionZero { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Крайний правый угол осцилляции
|
/// Крайний правый угол осцилляции
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public float? PositionRight { get; set; }
|
public float? PositionRight { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Выбранный режим управления
|
/// Выбранный режим управления
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public short? Mode { get; set; }
|
public short? Mode { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Переменная этапа
|
/// Переменная этапа
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public short? State { get; set; }
|
public short? State { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Осцилляция включена
|
/// Осцилляция включена
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public bool IsOscillating => State != 0 & State != 6 & State != 7;
|
public bool IsOscillating => State != 0 & State != 6 & State != 7;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Демпфирование включено
|
/// Демпфирование включено
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public bool IsDampening => State == 7 && (Mode & 2) > 0;
|
public bool IsDampening => State == 7 && (Mode & 2) > 0;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,30 +1,29 @@
|
|||||||
using System;
|
using System;
|
||||||
|
|
||||||
namespace AsbCloudInfrastructure.Services.SAUB
|
namespace AsbCloudInfrastructure.Services.SAUB;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Статистика данных телеметрии
|
||||||
|
/// </summary>
|
||||||
|
public class TelemetryDataStatDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Статистика данных телеметрии
|
/// ID в БД
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class TelemetryDataStatDto
|
public int IdTelemetry { get; set; }
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// ID в БД
|
|
||||||
/// </summary>
|
|
||||||
public int IdTelemetry { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// дата получения первых данных
|
/// дата получения первых данных
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public DateTimeOffset DateFirst { get; set; }
|
public DateTimeOffset DateFirst { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// дата получения последних полученных данных
|
/// дата получения последних полученных данных
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public DateTimeOffset DateLast { get; set; }
|
public DateTimeOffset DateLast { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// смещение часового пояса
|
/// смещение часового пояса
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public double TimezoneOffsetHours { get; set; }
|
public double TimezoneOffsetHours { get; set; }
|
||||||
}
|
|
||||||
}
|
}
|
@ -1,65 +1,64 @@
|
|||||||
using System;
|
using System;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data.SAUB
|
namespace AsbCloudApp.Data.SAUB;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// общая информация о панели оператора
|
||||||
|
/// </summary>
|
||||||
|
public class TelemetryInfoDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// общая информация о панели оператора
|
/// дата начала бурения (заполнения данных на панели)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class TelemetryInfoDto
|
public DateTime DrillingStartDate { get; set; }
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// дата начала бурения (заполнения данных на панели)
|
|
||||||
/// </summary>
|
|
||||||
public DateTime DrillingStartDate { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// идентификатор временной зоны
|
/// идентификатор временной зоны
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string? TimeZoneId { get; set; }
|
public string? TimeZoneId { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// смещение в часах относительно UTC
|
/// смещение в часах относительно UTC
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public double TimeZoneOffsetTotalHours { get; set; }
|
public double TimeZoneOffsetTotalHours { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// название скважины
|
/// название скважины
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string Well { get; set; } = string.Empty;
|
public string Well { get; set; } = string.Empty;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// название куста
|
/// название куста
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string Cluster { get; set; } = string.Empty;
|
public string Cluster { get; set; } = string.Empty;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// название месторождения
|
/// название месторождения
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string Deposit { get; set; } = string.Empty;
|
public string Deposit { get; set; } = string.Empty;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// название заказчика
|
/// название заказчика
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string? Customer { get; set; }
|
public string? Customer { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// версия ПО панели оператора
|
/// версия ПО панели оператора
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string? HmiVersion { get; set; }
|
public string? HmiVersion { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// версия ПО ПЛК САУБ
|
/// версия ПО ПЛК САУБ
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string? SaubPlcVersion { get; set; }
|
public string? SaubPlcVersion { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// версия ПО ПЛК Спин мастер
|
/// версия ПО ПЛК Спин мастер
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string? SpinPlcVersion { get; set; }
|
public string? SpinPlcVersion { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// комментарий
|
/// комментарий
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string? Comment { get; set; }
|
public string? Comment { get; set; }
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,55 +1,54 @@
|
|||||||
using System;
|
using System;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data.SAUB
|
namespace AsbCloudApp.Data.SAUB;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Сообщение получаемое от телеметрии с буровой
|
||||||
|
/// </summary>
|
||||||
|
public class TelemetryMessageDto : IId
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Сообщение получаемое от телеметрии с буровой
|
/// Id сообщения в базе панели оператора
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class TelemetryMessageDto : IId
|
public int Id { get; set; }
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Id сообщения в базе панели оператора
|
|
||||||
/// </summary>
|
|
||||||
public int Id { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// отметка времени
|
/// отметка времени
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public DateTimeOffset Date { get; set; }
|
public DateTimeOffset Date { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// глубина забоя
|
/// глубина забоя
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public double WellDepth { get; set; }
|
public double WellDepth { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Id события которое генерировало это сообщение
|
/// Id события которое генерировало это сообщение
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int IdEvent { get; set; }
|
public int IdEvent { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// идентификатор пользователя телеметрии
|
/// идентификатор пользователя телеметрии
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int? IdTelemetryUser { get; set; }
|
public int? IdTelemetryUser { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// аргумент №0 для подстановки в шаблон сообщения
|
/// аргумент №0 для подстановки в шаблон сообщения
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string? Arg0 { get; set; }
|
public string? Arg0 { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// аргумент №1 для подстановки в шаблон сообщения
|
/// аргумент №1 для подстановки в шаблон сообщения
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string? Arg1 { get; set; }
|
public string? Arg1 { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// аргумент №2 для подстановки в шаблон сообщения
|
/// аргумент №2 для подстановки в шаблон сообщения
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string? Arg2 { get; set; }
|
public string? Arg2 { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// аргумент №3 для подстановки в шаблон сообщения
|
/// аргумент №3 для подстановки в шаблон сообщения
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string? Arg3 { get; set; }
|
public string? Arg3 { get; set; }
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,52 +1,51 @@
|
|||||||
namespace AsbCloudApp.Data.SAUB
|
namespace AsbCloudApp.Data.SAUB;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Пользователь панели оператора
|
||||||
|
/// </summary>
|
||||||
|
public class TelemetryUserDto : IId
|
||||||
{
|
{
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Пользователь панели оператора
|
/// Имя
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class TelemetryUserDto : IId
|
public string? Name { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Фамилия
|
||||||
|
/// </summary>
|
||||||
|
public string Surname { get; set; } = null!;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Отчество
|
||||||
|
/// </summary>
|
||||||
|
public string? Patronymic { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Уровень доступа
|
||||||
|
/// </summary>
|
||||||
|
public int? Level { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Собрать отображаемое имя пользователя
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
public string MakeDisplayName()
|
||||||
{
|
{
|
||||||
/// <inheritdoc/>
|
if (!string.IsNullOrEmpty(Surname))
|
||||||
public int Id { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Имя
|
|
||||||
/// </summary>
|
|
||||||
public string? Name { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Фамилия
|
|
||||||
/// </summary>
|
|
||||||
public string Surname { get; set; } = null!;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Отчество
|
|
||||||
/// </summary>
|
|
||||||
public string? Patronymic { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Уровень доступа
|
|
||||||
/// </summary>
|
|
||||||
public int? Level { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Собрать отображаемое имя пользователя
|
|
||||||
/// </summary>
|
|
||||||
/// <returns></returns>
|
|
||||||
public string MakeDisplayName()
|
|
||||||
{
|
{
|
||||||
if (!string.IsNullOrEmpty(Surname))
|
var s = Surname;
|
||||||
|
if (!string.IsNullOrEmpty(Name))
|
||||||
{
|
{
|
||||||
var s = Surname;
|
s += $"{Name[0]}.";
|
||||||
if (!string.IsNullOrEmpty(Name))
|
if (!string.IsNullOrEmpty(Patronymic))
|
||||||
{
|
s += $" {Patronymic[0]}.";
|
||||||
s += $"{Name[0]}.";
|
|
||||||
if (!string.IsNullOrEmpty(Patronymic))
|
|
||||||
s += $" {Patronymic[0]}.";
|
|
||||||
}
|
|
||||||
return s;
|
|
||||||
}
|
}
|
||||||
else
|
return s;
|
||||||
return $"User #{Id}";
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
return $"User #{Id}";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,47 +1,46 @@
|
|||||||
using System;
|
using System;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data.SAUB
|
namespace AsbCloudApp.Data.SAUB;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// DTO телеметрии наработки талевого каната от панели бурильщика
|
||||||
|
/// </summary>
|
||||||
|
public class TelemetryWirelineRunOutBaseDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// DTO телеметрии наработки талевого каната от панели бурильщика
|
/// отметка времени
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class TelemetryWirelineRunOutBaseDto
|
public DateTimeOffset DateTime { get; set; }
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// отметка времени
|
|
||||||
/// </summary>
|
|
||||||
public DateTimeOffset DateTime { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Наработка талевого каната с момента перетяжки каната, т*км
|
|
||||||
/// </summary>
|
|
||||||
public float Hauling { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Наработка талевого каната до сигнализации о необходимости перетяжки, т*км
|
|
||||||
/// </summary>
|
|
||||||
public float HaulingWarnSp { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Наработка талевого каната с момента замены каната, т*км
|
|
||||||
/// </summary>
|
|
||||||
public float Replace { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Наработка талевого каната до сигнализации о необходимости замены, т*км
|
|
||||||
/// </summary>
|
|
||||||
public float ReplaceWarnSp { get; set; }
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// DTO телеметрии наработки талевого каната
|
/// Наработка талевого каната с момента перетяжки каната, т*км
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class TelemetryWirelineRunOutDto : TelemetryWirelineRunOutBaseDto
|
public float Hauling { get; set; }
|
||||||
{
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Информация по скважине
|
/// Наработка талевого каната до сигнализации о необходимости перетяжки, т*км
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public WellInfoDto WellInfo { get; set; } = null!;
|
public float HaulingWarnSp { get; set; }
|
||||||
}
|
|
||||||
|
/// <summary>
|
||||||
|
/// Наработка талевого каната с момента замены каната, т*км
|
||||||
|
/// </summary>
|
||||||
|
public float Replace { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Наработка талевого каната до сигнализации о необходимости замены, т*км
|
||||||
|
/// </summary>
|
||||||
|
public float ReplaceWarnSp { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// DTO телеметрии наработки талевого каната
|
||||||
|
/// </summary>
|
||||||
|
public class TelemetryWirelineRunOutDto : TelemetryWirelineRunOutBaseDto
|
||||||
|
{
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Информация по скважине
|
||||||
|
/// </summary>
|
||||||
|
public WellInfoDto WellInfo { get; set; } = null!;
|
||||||
}
|
}
|
||||||
|
@ -2,61 +2,60 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Описание данных графика работ
|
||||||
|
/// </summary>
|
||||||
|
public class ScheduleDto : IId, IWellRelated, IValidatableObject
|
||||||
{
|
{
|
||||||
|
/// <inheritdoc/>
|
||||||
|
[Required]
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
[Required]
|
||||||
|
public int IdWell { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Описание данных графика работ
|
/// Идентификатор бурильщика
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class ScheduleDto : IId, IWellRelated, IValidatableObject
|
[Required]
|
||||||
|
public int IdDriller { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Начало смены
|
||||||
|
/// </summary>
|
||||||
|
[Required]
|
||||||
|
public TimeDto ShiftStart { get; set; } = null!;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Конец смены
|
||||||
|
/// </summary>
|
||||||
|
[Required]
|
||||||
|
public TimeDto ShiftEnd { get; set; } = null!;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Начало бурения
|
||||||
|
/// </summary>
|
||||||
|
[Required]
|
||||||
|
public DateTimeOffset DrillStart { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Конец бурения
|
||||||
|
/// </summary>
|
||||||
|
[Required]
|
||||||
|
public DateTimeOffset DrillEnd { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Бурильщик
|
||||||
|
/// </summary>
|
||||||
|
public DrillerDto? Driller { get; set; }
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
|
||||||
{
|
{
|
||||||
/// <inheritdoc/>
|
if(DrillStart >= DrillEnd)
|
||||||
[Required]
|
yield return new ValidationResult($"DrillStart > DrillEnd");
|
||||||
public int Id { get; set; }
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
[Required]
|
|
||||||
public int IdWell { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Идентификатор бурильщика
|
|
||||||
/// </summary>
|
|
||||||
[Required]
|
|
||||||
public int IdDriller { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Начало смены
|
|
||||||
/// </summary>
|
|
||||||
[Required]
|
|
||||||
public TimeDto ShiftStart { get; set; } = null!;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Конец смены
|
|
||||||
/// </summary>
|
|
||||||
[Required]
|
|
||||||
public TimeDto ShiftEnd { get; set; } = null!;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Начало бурения
|
|
||||||
/// </summary>
|
|
||||||
[Required]
|
|
||||||
public DateTimeOffset DrillStart { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Конец бурения
|
|
||||||
/// </summary>
|
|
||||||
[Required]
|
|
||||||
public DateTimeOffset DrillEnd { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Бурильщик
|
|
||||||
/// </summary>
|
|
||||||
public DrillerDto? Driller { get; set; }
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
|
|
||||||
{
|
|
||||||
if(DrillStart >= DrillEnd)
|
|
||||||
yield return new ValidationResult($"DrillStart > DrillEnd");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,51 +1,50 @@
|
|||||||
using System;
|
using System;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// временная зона
|
||||||
|
/// </summary>
|
||||||
|
public class SimpleTimezoneDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// временная зона
|
/// смещение в часах относительно UTC
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class SimpleTimezoneDto
|
public double Hours { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// идентификатор часовой зоны
|
||||||
|
/// </summary>
|
||||||
|
public string? TimezoneId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// запрет на переопределение
|
||||||
|
/// </summary>
|
||||||
|
public bool IsOverride { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Смещение часового пояса
|
||||||
|
/// </summary>
|
||||||
|
public TimeSpan Offset => TimeSpan.FromHours(Hours);
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public override bool Equals(object? obj)
|
||||||
{
|
{
|
||||||
/// <summary>
|
if (obj is SimpleTimezoneDto tTimeZone
|
||||||
/// смещение в часах относительно UTC
|
&& tTimeZone.Hours == Hours
|
||||||
/// </summary>
|
&& tTimeZone.TimezoneId == TimezoneId
|
||||||
public double Hours { get; set; }
|
&& tTimeZone.IsOverride == IsOverride)
|
||||||
|
return true;
|
||||||
/// <summary>
|
return false;
|
||||||
/// идентификатор часовой зоны
|
|
||||||
/// </summary>
|
|
||||||
public string? TimezoneId { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// запрет на переопределение
|
|
||||||
/// </summary>
|
|
||||||
public bool IsOverride { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Смещение часового пояса
|
|
||||||
/// </summary>
|
|
||||||
public TimeSpan Offset => TimeSpan.FromHours(Hours);
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override bool Equals(object? obj)
|
|
||||||
{
|
|
||||||
if (obj is SimpleTimezoneDto tTimeZone
|
|
||||||
&& tTimeZone.Hours == Hours
|
|
||||||
&& tTimeZone.TimezoneId == TimezoneId
|
|
||||||
&& tTimeZone.IsOverride == IsOverride)
|
|
||||||
return true;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override int GetHashCode()
|
|
||||||
=> Hours.GetHashCode()
|
|
||||||
| TimezoneId?.GetHashCode()??-1
|
|
||||||
| IsOverride.GetHashCode();
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override string ToString()
|
|
||||||
=> $"{TimezoneId} (UTC+{Hours:00.##})";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public override int GetHashCode()
|
||||||
|
=> Hours.GetHashCode()
|
||||||
|
| TimezoneId?.GetHashCode()??-1
|
||||||
|
| IsOverride.GetHashCode();
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public override string ToString()
|
||||||
|
=> $"{TimezoneId} (UTC+{Hours:00.##})";
|
||||||
}
|
}
|
@ -4,41 +4,40 @@ using System.Linq;
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// DTO, описывающая аналитику удержания в клиньях
|
||||||
|
/// </summary>
|
||||||
|
public class SlipsStatDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// DTO, описывающая аналитику удержания в клиньях
|
/// ФИО бурильщика
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class SlipsStatDto
|
public string DrillerName { get; set; } = null!;
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// ФИО бурильщика
|
|
||||||
/// </summary>
|
|
||||||
public string DrillerName { get; set; } = null!;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Количество скважин
|
/// Количество скважин
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int WellCount { get; set; }
|
public int WellCount { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Название секции
|
/// Название секции
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string SectionCaption { get; set; } = null!;
|
public string SectionCaption { get; set; } = null!;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Количество удержаний в клиньях, шт.
|
/// Количество удержаний в клиньях, шт.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int SlipsCount { get; set; }
|
public int SlipsCount { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Время удержания в клиньях, мин.
|
/// Время удержания в клиньях, мин.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public double SlipsTimeInMinutes { get; set; }
|
public double SlipsTimeInMinutes { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Проходка, м.
|
/// Проходка, м.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public double SectionDepth { get; set; }
|
public double SectionDepth { get; set; }
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -2,27 +2,26 @@ using System.Collections.Generic;
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// DTO статистики скважин куста
|
||||||
|
/// </summary>
|
||||||
|
public class StatClusterDto : IId
|
||||||
{
|
{
|
||||||
|
/// <inheritdoc/>
|
||||||
|
[Required]
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// DTO статистики скважин куста
|
/// название куста
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class StatClusterDto : IId
|
[Required]
|
||||||
{
|
public string Caption { get; set; } = string.Empty;
|
||||||
/// <inheritdoc/>
|
|
||||||
[Required]
|
|
||||||
public int Id { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// название куста
|
/// список статистик скважин куста
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public string Caption { get; set; } = string.Empty;
|
public IEnumerable<StatWellDto> StatsWells { get; set; } = Enumerable.Empty<StatWellDto>();
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// список статистик скважин куста
|
|
||||||
/// </summary>
|
|
||||||
[Required]
|
|
||||||
public IEnumerable<StatWellDto> StatsWells { get; set; } = Enumerable.Empty<StatWellDto>();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,69 +1,68 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// DTO статистики операций
|
||||||
|
/// </summary>
|
||||||
|
public class StatOperationsDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// DTO статистики операций
|
/// Дата и время начала
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class StatOperationsDto
|
public DateTimeOffset? Start { get; set; }
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Дата и время начала
|
|
||||||
/// </summary>
|
|
||||||
public DateTimeOffset? Start { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Дата и время окончания
|
/// Дата и время окончания
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public DateTimeOffset? End { get; set; }
|
public DateTimeOffset? End { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Глубина, м
|
/// Глубина, м
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public double WellDepthStart { get; set; }
|
public double WellDepthStart { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Глубина, м
|
/// Глубина, м
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public double WellDepthEnd { get; set; }
|
public double WellDepthEnd { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Рейсовая скорость, м/час
|
/// Рейсовая скорость, м/час
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public double RouteSpeed { get; set; }
|
public double RouteSpeed { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Механическая скорость проходки, м/час
|
/// Механическая скорость проходки, м/час
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public double Rop { get; set; }
|
public double Rop { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Скорость подъема КНБК
|
/// Скорость подъема КНБК
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public double BhaUpSpeed { get; set; }
|
public double BhaUpSpeed { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Скорость спуска КНБК
|
/// Скорость спуска КНБК
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public double BhaDownSpeed { get; set; }
|
public double BhaDownSpeed { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Скорость спуска обсадной колонны
|
/// Скорость спуска обсадной колонны
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public double CasingDownSpeed { get; set; }
|
public double CasingDownSpeed { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Непроизводительное время
|
/// Непроизводительное время
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public double NonProductiveHours { get; set; }
|
public double NonProductiveHours { get; set; }
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,20 +1,19 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// План-факт статистики по операциям за секцию скважины
|
|
||||||
/// </summary>
|
|
||||||
public class StatSectionDto : PlanFactDto<StatOperationsDto>, IId
|
|
||||||
{
|
|
||||||
/// <inheritdoc/>
|
|
||||||
[Required]
|
|
||||||
public int Id { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// название секции
|
/// План-факт статистики по операциям за секцию скважины
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
public class StatSectionDto : PlanFactDto<StatOperationsDto>, IId
|
||||||
public string Caption { get; set; } = string.Empty;
|
{
|
||||||
}
|
/// <inheritdoc/>
|
||||||
|
[Required]
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// название секции
|
||||||
|
/// </summary>
|
||||||
|
[Required]
|
||||||
|
public string Caption { get; set; } = string.Empty;
|
||||||
}
|
}
|
||||||
|
@ -3,73 +3,72 @@ using System.Collections.Generic;
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// DTO статистики по операциям за скважину
|
||||||
|
/// </summary>
|
||||||
|
public class StatWellDto : IId
|
||||||
{
|
{
|
||||||
|
/// <inheritdoc/>
|
||||||
|
[Required]
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// DTO статистики по операциям за скважину
|
/// название
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class StatWellDto : IId
|
[Required]
|
||||||
{
|
public string Caption { get; set; } = string.Empty;
|
||||||
/// <inheritdoc/>
|
|
||||||
[Required]
|
|
||||||
public int Id { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// название
|
/// тип скважины
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public string Caption { get; set; } = string.Empty;
|
public string WellType { get; set; } = string.Empty;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// тип скважины
|
/// ИД состояния скважины
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public string WellType { get; set; } = string.Empty;
|
public int IdState { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// ИД состояния скважины
|
/// текст состояния скважины
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public int IdState { get; set; }
|
public string State { get; set; } = string.Empty;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// текст состояния скважины
|
/// дата прихода последней телеметрии
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public string State { get; set; } = string.Empty;
|
public DateTimeOffset LastTelemetryDate { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// дата прихода последней телеметрии
|
/// Статистика по секциям
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public DateTimeOffset LastTelemetryDate { get; set; }
|
public IEnumerable<StatSectionDto> Sections { get; set; } = Enumerable.Empty<StatSectionDto>();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Статистика по секциям
|
/// статистика за всю скважину
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public IEnumerable<StatSectionDto> Sections { get; set; } = Enumerable.Empty<StatSectionDto>();
|
public PlanFactDto<StatOperationsDto> Total { get; set; } = new();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// статистика за всю скважину
|
/// компании участвующие в строительстве скважины
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public PlanFactDto<StatOperationsDto> Total { get; set; } = new();
|
public IEnumerable<CompanyDto> Companies { get; set; } = Enumerable.Empty<CompanyDto>();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// компании участвующие в строительстве скважины
|
/// Отставание от ГГД, дни
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
public double? TvdLagDays { get; set; }
|
||||||
public IEnumerable<CompanyDto> Companies { get; set; } = Enumerable.Empty<CompanyDto>();
|
|
||||||
|
/// <summary>
|
||||||
/// <summary>
|
/// Кол-во дней бурения по ГГД
|
||||||
/// Отставание от ГГД, дни
|
/// </summary>
|
||||||
/// </summary>
|
public double? TvdDrillingDays { get; set; }
|
||||||
public double? TvdLagDays { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Кол-во дней бурения по ГГД
|
|
||||||
/// </summary>
|
|
||||||
public double? TvdDrillingDays { get; set; }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,26 +1,25 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data.Subsystems
|
namespace AsbCloudApp.Data.Subsystems;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Описание параметров подсистемы
|
||||||
|
/// </summary>
|
||||||
|
public class SubsystemDto : IId
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Описание параметров подсистемы
|
/// Идентификатор подсистемы
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class SubsystemDto : IId
|
[Required]
|
||||||
{
|
public int Id { get; set; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Идентификатор подсистемы
|
/// Наименование подсистемы
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public int Id { get; set; }
|
public string Name { get; set; } = null!;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Наименование подсистемы
|
/// Детальное описание подсистемы
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public string Name { get; set; } = null!;
|
public string Description { get; set; } = string.Empty;
|
||||||
/// <summary>
|
|
||||||
/// Детальное описание подсистемы
|
|
||||||
/// </summary>
|
|
||||||
[Required]
|
|
||||||
public string Description { get; set; } = string.Empty;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,52 +1,51 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data.Subsystems
|
namespace AsbCloudApp.Data.Subsystems;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Статистика подсистемы
|
||||||
|
/// </summary>
|
||||||
|
public class SubsystemStatDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Статистика подсистемы
|
/// Идентификатор подсистемы
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class SubsystemStatDto
|
[Required]
|
||||||
{
|
public int IdSubsystem { get; set; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Идентификатор подсистемы
|
/// Название подсистемы
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public int IdSubsystem { get; set; }
|
public string SubsystemName { get; set; } = null!;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Название подсистемы
|
/// наработка подсистемы
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public string SubsystemName { get; set; } = null!;
|
public double UsedTimeHours { get; set; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// наработка подсистемы
|
/// коэффициент использования
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public double UsedTimeHours { get; set; }
|
public double KUsage { get; set; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// коэффициент использования
|
/// сумма изменения глубин при включеной подсистеме
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public double KUsage { get; set; }
|
public double SumDepthInterval { get; set; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// сумма изменения глубин при включеной подсистеме
|
/// сумма проходок автоопределенных операций выполняемых подсистемой
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public double SumDepthInterval { get; set; }
|
public double SumOperationDepthInterval { get; set; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// сумма проходок автоопределенных операций выполняемых подсистемой
|
/// сумма продолжительности автоопределенных операций выполняемых подсистемой
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public double SumOperationDepthInterval { get; set; }
|
public double SumOperationDurationHours { get; set; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// сумма продолжительности автоопределенных операций выполняемых подсистемой
|
/// количество включений подсистемы
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public double SumOperationDurationHours { get; set; }
|
public int OperationCount { get; set; }
|
||||||
/// <summary>
|
|
||||||
/// количество включений подсистемы
|
|
||||||
/// </summary>
|
|
||||||
[Required]
|
|
||||||
public int OperationCount { get; set; }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,44 +1,43 @@
|
|||||||
using AsbCloudApp.Data.SAUB;
|
using AsbCloudApp.Data.SAUB;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// DTO телеметрии панели
|
||||||
|
/// </summary>
|
||||||
|
public class TelemetryBaseDto : IId
|
||||||
|
{
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// уникальный идентификатор телеметрии по которому панель оператора присылает данные
|
||||||
|
/// </summary>
|
||||||
|
public string RemoteUid { get; set; } = null!;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// информация о бурении, панели оператора и контроллерах
|
||||||
|
/// </summary>
|
||||||
|
public TelemetryInfoDto? Info { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Смещение часового пояса от UTC
|
||||||
|
/// </summary>
|
||||||
|
public SimpleTimezoneDto? TimeZone { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// DTO телеметрии панели с скважиной
|
||||||
|
/// </summary>
|
||||||
|
public class TelemetryDto : TelemetryBaseDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// DTO телеметрии панели
|
/// ИД скважины
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class TelemetryBaseDto : IId
|
public int? IdWell { get; set; }
|
||||||
{
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public int Id { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// уникальный идентификатор телеметрии по которому панель оператора присылает данные
|
|
||||||
/// </summary>
|
|
||||||
public string RemoteUid { get; set; } = null!;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// информация о бурении, панели оператора и контроллерах
|
|
||||||
/// </summary>
|
|
||||||
public TelemetryInfoDto? Info { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Смещение часового пояса от UTC
|
|
||||||
/// </summary>
|
|
||||||
public SimpleTimezoneDto? TimeZone { get; set; }
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// DTO телеметрии панели с скважиной
|
/// DTO скважины
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class TelemetryDto : TelemetryBaseDto
|
public WellInfoDto? Well { get; set; }
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// ИД скважины
|
|
||||||
/// </summary>
|
|
||||||
public int? IdWell { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// DTO скважины
|
|
||||||
/// </summary>
|
|
||||||
public WellInfoDto? Well { get; set; }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,159 +1,158 @@
|
|||||||
using System;
|
using System;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// DTO времени
|
||||||
|
/// </summary>
|
||||||
|
public class TimeDto : IComparable<TimeDto>
|
||||||
{
|
{
|
||||||
|
private int hour = 0;
|
||||||
|
private int minute = 0;
|
||||||
|
private int second = 0;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// DTO времени
|
/// час
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class TimeDto : IComparable<TimeDto>
|
public int Hour
|
||||||
{
|
{
|
||||||
private int hour = 0;
|
get => hour;
|
||||||
private int minute = 0;
|
set
|
||||||
private int second = 0;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// час
|
|
||||||
/// </summary>
|
|
||||||
public int Hour
|
|
||||||
{
|
{
|
||||||
get => hour;
|
if (value > 23 || value < 0)
|
||||||
set
|
throw new ArgumentOutOfRangeException(nameof(Hour), "hour should be in [0; 23]");
|
||||||
{
|
hour = value;
|
||||||
if (value > 23 || value < 0)
|
}
|
||||||
throw new ArgumentOutOfRangeException(nameof(Hour), "hour should be in [0; 23]");
|
}
|
||||||
hour = value;
|
|
||||||
}
|
/// <summary>
|
||||||
|
/// минута
|
||||||
|
/// </summary>
|
||||||
|
public int Minute
|
||||||
|
{
|
||||||
|
get => minute;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (value > 59 || value < 0)
|
||||||
|
throw new ArgumentOutOfRangeException(nameof(minute), "minute should be in [0; 59]");
|
||||||
|
minute = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// секунда
|
||||||
|
/// </summary>
|
||||||
|
public int Second
|
||||||
|
{
|
||||||
|
get => second;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (value > 59 || value < 0)
|
||||||
|
throw new ArgumentOutOfRangeException(nameof(second), "second should be in [0; 59]");
|
||||||
|
second = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Кол-во секунд с начала суток
|
||||||
|
/// </summary>
|
||||||
|
public int TotalSeconds => (Hour * 60 + minute) * 60 + second;
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public TimeDto()
|
||||||
|
{ }
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public TimeDto(int hour = 0, int minute = 0, int second = 0)
|
||||||
|
{
|
||||||
|
this.hour = hour;
|
||||||
|
this.minute = minute;
|
||||||
|
this.second = second;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public TimeDto(TimeOnly time)
|
||||||
|
{
|
||||||
|
hour = time.Hour;
|
||||||
|
minute = time.Minute;
|
||||||
|
second = time.Second;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public TimeDto(DateTime fullDate)
|
||||||
|
{
|
||||||
|
hour = fullDate.Hour;
|
||||||
|
minute = fullDate.Minute;
|
||||||
|
second = fullDate.Second;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public TimeDto(DateTimeOffset fullDate)
|
||||||
|
{
|
||||||
|
hour = fullDate.Hour;
|
||||||
|
minute = fullDate.Minute;
|
||||||
|
second = fullDate.Second;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Makes System.TimeOnly
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>System.TimeOnly</returns>
|
||||||
|
public TimeOnly MakeTimeOnly() => new(Hour, Minute, Second);
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public override string ToString()
|
||||||
|
{
|
||||||
|
var str = $"{Hour:00}:{Minute:00}:{Second:00}";
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public static bool operator ==(TimeDto a, TimeDto b) => a?.TotalSeconds == b?.TotalSeconds;
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public static bool operator !=(TimeDto a, TimeDto b) => !(a == b);
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public static bool operator <=(TimeDto a, TimeDto b) => a.TotalSeconds <= b.TotalSeconds;
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public static bool operator >=(TimeDto a, TimeDto b) => a.TotalSeconds >= b.TotalSeconds;
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public static bool operator <(TimeDto a, TimeDto b) => a.TotalSeconds < b.TotalSeconds;
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public static bool operator >(TimeDto a, TimeDto b) => a.TotalSeconds > b.TotalSeconds;
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public int CompareTo(TimeDto? other)
|
||||||
|
=> TotalSeconds - other?.TotalSeconds??0;
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public override bool Equals(object? obj)
|
||||||
|
{
|
||||||
|
if (ReferenceEquals(this, obj))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
if (obj is null)
|
||||||
/// минута
|
|
||||||
/// </summary>
|
|
||||||
public int Minute
|
|
||||||
{
|
{
|
||||||
get => minute;
|
|
||||||
set
|
|
||||||
{
|
|
||||||
if (value > 59 || value < 0)
|
|
||||||
throw new ArgumentOutOfRangeException(nameof(minute), "minute should be in [0; 59]");
|
|
||||||
minute = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// секунда
|
|
||||||
/// </summary>
|
|
||||||
public int Second
|
|
||||||
{
|
|
||||||
get => second;
|
|
||||||
set
|
|
||||||
{
|
|
||||||
if (value > 59 || value < 0)
|
|
||||||
throw new ArgumentOutOfRangeException(nameof(second), "second should be in [0; 59]");
|
|
||||||
second = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Кол-во секунд с начала суток
|
|
||||||
/// </summary>
|
|
||||||
public int TotalSeconds => (Hour * 60 + minute) * 60 + second;
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public TimeDto()
|
|
||||||
{ }
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public TimeDto(int hour = 0, int minute = 0, int second = 0)
|
|
||||||
{
|
|
||||||
this.hour = hour;
|
|
||||||
this.minute = minute;
|
|
||||||
this.second = second;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public TimeDto(TimeOnly time)
|
|
||||||
{
|
|
||||||
hour = time.Hour;
|
|
||||||
minute = time.Minute;
|
|
||||||
second = time.Second;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public TimeDto(DateTime fullDate)
|
|
||||||
{
|
|
||||||
hour = fullDate.Hour;
|
|
||||||
minute = fullDate.Minute;
|
|
||||||
second = fullDate.Second;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public TimeDto(DateTimeOffset fullDate)
|
|
||||||
{
|
|
||||||
hour = fullDate.Hour;
|
|
||||||
minute = fullDate.Minute;
|
|
||||||
second = fullDate.Second;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Makes System.TimeOnly
|
|
||||||
/// </summary>
|
|
||||||
/// <returns>System.TimeOnly</returns>
|
|
||||||
public TimeOnly MakeTimeOnly() => new(Hour, Minute, Second);
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override string ToString()
|
|
||||||
{
|
|
||||||
var str = $"{Hour:00}:{Minute:00}:{Second:00}";
|
|
||||||
return str;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public static bool operator ==(TimeDto a, TimeDto b) => a?.TotalSeconds == b?.TotalSeconds;
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public static bool operator !=(TimeDto a, TimeDto b) => !(a == b);
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public static bool operator <=(TimeDto a, TimeDto b) => a.TotalSeconds <= b.TotalSeconds;
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public static bool operator >=(TimeDto a, TimeDto b) => a.TotalSeconds >= b.TotalSeconds;
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public static bool operator <(TimeDto a, TimeDto b) => a.TotalSeconds < b.TotalSeconds;
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public static bool operator >(TimeDto a, TimeDto b) => a.TotalSeconds > b.TotalSeconds;
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public int CompareTo(TimeDto? other)
|
|
||||||
=> TotalSeconds - other?.TotalSeconds??0;
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public override bool Equals(object? obj)
|
|
||||||
{
|
|
||||||
if (ReferenceEquals(this, obj))
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (obj is null)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (obj is TimeDto objTime)
|
|
||||||
{
|
|
||||||
return objTime == this;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc/>
|
if (obj is TimeDto objTime)
|
||||||
public override int GetHashCode()
|
|
||||||
{
|
{
|
||||||
return base.GetHashCode();
|
return objTime == this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public override int GetHashCode()
|
||||||
|
{
|
||||||
|
return base.GetHashCode();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,30 +1,29 @@
|
|||||||
namespace AsbCloudApp.Data.Trajectory
|
namespace AsbCloudApp.Data.Trajectory;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Визуализация траектории 3D
|
||||||
|
/// </summary>
|
||||||
|
public class TrajectoryCartesianDto
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Координаты по оси X, в сторону востока (м)
|
||||||
|
/// </summary>
|
||||||
|
public double X { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Визуализация траектории 3D
|
/// Координаты по оси Y, в высоту (м)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class TrajectoryCartesianDto
|
public double Y { get; set; }
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Координаты по оси X, в сторону востока (м)
|
|
||||||
/// </summary>
|
|
||||||
public double X { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Координаты по оси Y, в высоту (м)
|
|
||||||
/// </summary>
|
|
||||||
public double Y { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Координаты по оси Z, в сторону юга (м)
|
|
||||||
/// </summary>
|
|
||||||
public double Z { get; set; }
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Визуализация фактической траектории 3D
|
/// Координаты по оси Z, в сторону юга (м)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class TrajectoryCartesianFactDto : TrajectoryCartesianDto { }
|
public double Z { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Визуализация фактической траектории 3D
|
||||||
|
/// </summary>
|
||||||
|
public class TrajectoryCartesianFactDto : TrajectoryCartesianDto { }
|
||||||
|
@ -1,18 +1,17 @@
|
|||||||
namespace AsbCloudApp.Data.Trajectory
|
namespace AsbCloudApp.Data.Trajectory;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Визуализация траектории 3D для построения радиуса цели
|
||||||
|
/// </summary>
|
||||||
|
public class TrajectoryCartesianPlanDto : TrajectoryCartesianFactDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Визуализация траектории 3D для построения радиуса цели
|
/// радиус цели
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class TrajectoryCartesianPlanDto : TrajectoryCartesianFactDto
|
public double? Radius { get; set; }
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// радиус цели
|
|
||||||
/// </summary>
|
|
||||||
public double? Radius { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// комментарий
|
/// комментарий
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string? Comment { get; set; }
|
public string? Comment { get; set; }
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -3,60 +3,59 @@ using System.Collections.Generic;
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data.Trajectory
|
namespace AsbCloudApp.Data.Trajectory;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Базовая географическая траектория
|
||||||
|
/// </summary>
|
||||||
|
public abstract class TrajectoryGeoDto : IId, IValidatableObject
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Базовая географическая траектория
|
/// ИД строки с координатами
|
||||||
|
/// </summary>
|
||||||
|
public int Id { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Id скважины
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public abstract class TrajectoryGeoDto : IId, IValidatableObject
|
public int IdWell { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Глубина по стволу
|
||||||
|
/// </summary>
|
||||||
|
public double WellboreDepth { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Угол зенитный
|
||||||
|
/// </summary>
|
||||||
|
public double ZenithAngle { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Азимут Географ.
|
||||||
|
/// </summary>
|
||||||
|
public double AzimuthGeo { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Азимут Магнитный
|
||||||
|
/// </summary>
|
||||||
|
public double? AzimuthMagnetic { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Глубина вертикальная
|
||||||
|
/// </summary>
|
||||||
|
public double? VerticalDepth { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Дата загрузки
|
||||||
|
/// </summary>
|
||||||
|
public DateTimeOffset UpdateDate { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ИД пользователя
|
||||||
|
/// </summary>
|
||||||
|
public int IdUser { get; set; }
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
|
||||||
{
|
{
|
||||||
/// <summary>
|
return Enumerable.Empty<ValidationResult>();
|
||||||
/// ИД строки с координатами
|
|
||||||
/// </summary>
|
|
||||||
public int Id { get; set; }
|
|
||||||
/// <summary>
|
|
||||||
/// Id скважины
|
|
||||||
/// </summary>
|
|
||||||
public int IdWell { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Глубина по стволу
|
|
||||||
/// </summary>
|
|
||||||
public double WellboreDepth { get; set; }
|
|
||||||
/// <summary>
|
|
||||||
/// Угол зенитный
|
|
||||||
/// </summary>
|
|
||||||
public double ZenithAngle { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Азимут Географ.
|
|
||||||
/// </summary>
|
|
||||||
public double AzimuthGeo { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Азимут Магнитный
|
|
||||||
/// </summary>
|
|
||||||
public double? AzimuthMagnetic { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Глубина вертикальная
|
|
||||||
/// </summary>
|
|
||||||
public double? VerticalDepth { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Дата загрузки
|
|
||||||
/// </summary>
|
|
||||||
public DateTimeOffset UpdateDate { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// ИД пользователя
|
|
||||||
/// </summary>
|
|
||||||
public int IdUser { get; set; }
|
|
||||||
|
|
||||||
/// <inheritdoc />
|
|
||||||
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
|
|
||||||
{
|
|
||||||
return Enumerable.Empty<ValidationResult>();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,21 +1,20 @@
|
|||||||
using System;
|
using System;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data.Trajectory
|
namespace AsbCloudApp.Data.Trajectory;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Формирование данных по плановой географической траектории
|
||||||
|
/// </summary>
|
||||||
|
public class TrajectoryGeoPlanDto : TrajectoryGeoDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Формирование данных по плановой географической траектории
|
/// Радиус цели
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class TrajectoryGeoPlanDto : TrajectoryGeoDto
|
public double? Radius { get; set; }
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Радиус цели
|
|
||||||
/// </summary>
|
|
||||||
public double? Radius { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Комментарии
|
/// Комментарии
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string? Comment { get; set; }
|
public string? Comment { get; set; }
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,25 +1,24 @@
|
|||||||
namespace AsbCloudApp.Data.Trajectory
|
namespace AsbCloudApp.Data.Trajectory;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// DTO объединяющее плановые и фактические значения траекторий
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T"></typeparam>
|
||||||
|
/// <typeparam name="V"></typeparam>
|
||||||
|
public class TrajectoryPlanFactDto<T, V>
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// DTO объединяющее плановые и фактические значения траекторий
|
/// Плановое значение
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <typeparam name="T"></typeparam>
|
public T? Plan { get; set; }
|
||||||
/// <typeparam name="V"></typeparam>
|
|
||||||
public class TrajectoryPlanFactDto<T, V>
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Плановое значение
|
|
||||||
/// </summary>
|
|
||||||
public T? Plan { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Фактическое значение
|
/// Фактическое значение
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public V? FactManual { get; set; }
|
public V? FactManual { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Фактическое ннб-значение
|
/// Фактическое ннб-значение
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public V? FactNnb { get; set; }
|
public V? FactNnb { get; set; }
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,96 +1,95 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data.User
|
namespace AsbCloudApp.Data.User;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// DTO пользователя платформы
|
||||||
|
/// </summary>
|
||||||
|
public class UserDto : IId
|
||||||
{
|
{
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// DTO пользователя платформы
|
/// логин
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class UserDto : IId
|
[Required(ErrorMessage = "Логин не должен быть пустым")]
|
||||||
|
[StringLength(50, MinimumLength = 3, ErrorMessage = "Допустимая длина логина от 3 до 50 символов")]
|
||||||
|
public string Login { get; set; } = null!;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Имя
|
||||||
|
/// </summary>
|
||||||
|
[StringLength(50, MinimumLength = 0, ErrorMessage = "Допустимая длина имени от 1 до 50 символов")]
|
||||||
|
public string? Name { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Фамилия
|
||||||
|
/// </summary>
|
||||||
|
[StringLength(50, MinimumLength = 0, ErrorMessage = "Допустимая длина фамилии от 1 до 50 символов")]
|
||||||
|
public string? Surname { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Отчество
|
||||||
|
/// </summary>
|
||||||
|
[StringLength(50, MinimumLength = 0, ErrorMessage = "Допустимая длина отчества от 1 до 50 символов")]
|
||||||
|
public string? Patronymic { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Email
|
||||||
|
/// </summary>
|
||||||
|
[Required]
|
||||||
|
[StringLength(260, MinimumLength = 3, ErrorMessage = "Допустимая длина email от 3 до 260 символов")]
|
||||||
|
public string Email { get; set; } = null!;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Phone
|
||||||
|
/// </summary>
|
||||||
|
[StringLength(50, MinimumLength = 1, ErrorMessage = "Допустимая длина телефона от 1 до 50 символов")]
|
||||||
|
public string? Phone { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Должность
|
||||||
|
/// </summary>
|
||||||
|
[StringLength(100, MinimumLength = 1, ErrorMessage = "Допустимая длина должности от 1 до 100 символов")]
|
||||||
|
public string? Position { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Id компании
|
||||||
|
/// </summary>
|
||||||
|
[Required]
|
||||||
|
public int IdCompany { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Id состояния пользователя
|
||||||
|
/// 0 - не активен,
|
||||||
|
/// 1 - активен,
|
||||||
|
/// 2 - заблокирован
|
||||||
|
/// </summary>
|
||||||
|
public short IdState { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// DTO компании
|
||||||
|
/// </summary>
|
||||||
|
public CompanyDto? Company { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Получение отображаемого имени
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
public string MakeDisplayName()
|
||||||
{
|
{
|
||||||
/// <inheritdoc/>
|
if (string.IsNullOrEmpty(Surname))
|
||||||
public int Id { get; set; }
|
return Login;
|
||||||
|
|
||||||
/// <summary>
|
var s = Surname;
|
||||||
/// логин
|
if (!string.IsNullOrEmpty(Name))
|
||||||
/// </summary>
|
|
||||||
[Required(ErrorMessage = "Логин не должен быть пустым")]
|
|
||||||
[StringLength(50, MinimumLength = 3, ErrorMessage = "Допустимая длина логина от 3 до 50 символов")]
|
|
||||||
public string Login { get; set; } = null!;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Имя
|
|
||||||
/// </summary>
|
|
||||||
[StringLength(50, MinimumLength = 0, ErrorMessage = "Допустимая длина имени от 1 до 50 символов")]
|
|
||||||
public string? Name { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Фамилия
|
|
||||||
/// </summary>
|
|
||||||
[StringLength(50, MinimumLength = 0, ErrorMessage = "Допустимая длина фамилии от 1 до 50 символов")]
|
|
||||||
public string? Surname { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Отчество
|
|
||||||
/// </summary>
|
|
||||||
[StringLength(50, MinimumLength = 0, ErrorMessage = "Допустимая длина отчества от 1 до 50 символов")]
|
|
||||||
public string? Patronymic { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Email
|
|
||||||
/// </summary>
|
|
||||||
[Required]
|
|
||||||
[StringLength(260, MinimumLength = 3, ErrorMessage = "Допустимая длина email от 3 до 260 символов")]
|
|
||||||
public string Email { get; set; } = null!;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Phone
|
|
||||||
/// </summary>
|
|
||||||
[StringLength(50, MinimumLength = 1, ErrorMessage = "Допустимая длина телефона от 1 до 50 символов")]
|
|
||||||
public string? Phone { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Должность
|
|
||||||
/// </summary>
|
|
||||||
[StringLength(100, MinimumLength = 1, ErrorMessage = "Допустимая длина должности от 1 до 100 символов")]
|
|
||||||
public string? Position { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Id компании
|
|
||||||
/// </summary>
|
|
||||||
[Required]
|
|
||||||
public int IdCompany { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Id состояния пользователя
|
|
||||||
/// 0 - не активен,
|
|
||||||
/// 1 - активен,
|
|
||||||
/// 2 - заблокирован
|
|
||||||
/// </summary>
|
|
||||||
public short IdState { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// DTO компании
|
|
||||||
/// </summary>
|
|
||||||
public CompanyDto? Company { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Получение отображаемого имени
|
|
||||||
/// </summary>
|
|
||||||
/// <returns></returns>
|
|
||||||
public string MakeDisplayName()
|
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(Surname))
|
s += $"{Name[0]}.";
|
||||||
return Login;
|
if (!string.IsNullOrEmpty(Patronymic))
|
||||||
|
s += $" {Patronymic[0]}.";
|
||||||
var s = Surname;
|
|
||||||
if (!string.IsNullOrEmpty(Name))
|
|
||||||
{
|
|
||||||
s += $"{Name[0]}.";
|
|
||||||
if (!string.IsNullOrEmpty(Patronymic))
|
|
||||||
s += $" {Patronymic[0]}.";
|
|
||||||
}
|
|
||||||
|
|
||||||
return s;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return s;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,14 +1,13 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data.User
|
namespace AsbCloudApp.Data.User;
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public class UserExtendedDto : UserDto
|
||||||
{
|
{
|
||||||
/// <inheritdoc/>
|
/// <summary>
|
||||||
public class UserExtendedDto : UserDto
|
/// Роли пользователя
|
||||||
{
|
/// </summary>
|
||||||
/// <summary>
|
public IEnumerable<string> RoleNames { get; set; } = Enumerable.Empty<string>();
|
||||||
/// Роли пользователя
|
|
||||||
/// </summary>
|
|
||||||
public IEnumerable<string> RoleNames { get; set; } = Enumerable.Empty<string>();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,15 +1,14 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data.User
|
namespace AsbCloudApp.Data.User;
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public class UserRegistrationDto : UserDto
|
||||||
{
|
{
|
||||||
/// <inheritdoc/>
|
/// <summary>
|
||||||
public class UserRegistrationDto : UserDto
|
/// пароль, используется только при регистрации.
|
||||||
{
|
/// </summary>
|
||||||
/// <summary>
|
[Required(ErrorMessage = "Пароль не должен быть пустым")]
|
||||||
/// пароль, используется только при регистрации.
|
[StringLength(50, MinimumLength = 3, ErrorMessage = "Допустимая длина пароля от 3 до 50 символов")]
|
||||||
/// </summary>
|
public string Password { get; set; } = null!;
|
||||||
[Required(ErrorMessage = "Пароль не должен быть пустым")]
|
|
||||||
[StringLength(50, MinimumLength = 3, ErrorMessage = "Допустимая длина пароля от 3 до 50 символов")]
|
|
||||||
public string Password { get; set; } = null!;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -2,36 +2,35 @@ using System.Collections.Generic;
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data.User
|
namespace AsbCloudApp.Data.User;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Роль пользователя платформы
|
||||||
|
/// </summary>
|
||||||
|
public class UserRoleDto : IId
|
||||||
{
|
{
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Роль пользователя платформы
|
/// название
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class UserRoleDto : IId
|
[Required]
|
||||||
{
|
[StringLength(50, MinimumLength = 1, ErrorMessage = "Допустимая длина названия роли от 1 до 50 символов")]
|
||||||
/// <inheritdoc/>
|
public string Caption { get; set; } = null!;
|
||||||
public int Id { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// название
|
/// id типа роли
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
public int IdType { get; set; }
|
||||||
[StringLength(50, MinimumLength = 1, ErrorMessage = "Допустимая длина названия роли от 1 до 50 символов")]
|
|
||||||
public string Caption { get; set; } = null!;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// id типа роли
|
/// список разрешений
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int IdType { get; set; }
|
public IEnumerable<PermissionDto> Permissions { get; set; } = Enumerable.Empty<PermissionDto>();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// список разрешений
|
/// Включенные роли
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public IEnumerable<PermissionDto> Permissions { get; set; } = Enumerable.Empty<PermissionDto>();
|
public virtual IEnumerable<UserRoleDto> Roles { get; set; } = Enumerable.Empty<UserRoleDto>();
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Включенные роли
|
|
||||||
/// </summary>
|
|
||||||
public virtual IEnumerable<UserRoleDto> Roles { get; set; } = Enumerable.Empty<UserRoleDto>();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,19 +1,18 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data.User
|
namespace AsbCloudApp.Data.User;
|
||||||
{
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public class UserTokenDto : UserExtendedDto
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// все разрешения пользователя
|
|
||||||
/// </summary>
|
|
||||||
public IEnumerable<PermissionDto> Permissions { get; set; } = Enumerable.Empty<PermissionDto>();
|
|
||||||
|
|
||||||
/// <summary>
|
/// <inheritdoc/>
|
||||||
/// bearer token (для работы с web-api)
|
public class UserTokenDto : UserExtendedDto
|
||||||
/// </summary>
|
{
|
||||||
public string Token { get; set; } = null!;
|
/// <summary>
|
||||||
}
|
/// все разрешения пользователя
|
||||||
|
/// </summary>
|
||||||
|
public IEnumerable<PermissionDto> Permissions { get; set; } = Enumerable.Empty<PermissionDto>();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// bearer token (для работы с web-api)
|
||||||
|
/// </summary>
|
||||||
|
public string Token { get; set; } = null!;
|
||||||
}
|
}
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,298 +1,297 @@
|
|||||||
namespace AsbCloudApp.Data.WITS
|
namespace AsbCloudApp.Data.WITS;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Record name: Резистивиметр MCR
|
||||||
|
/// Description: SibReciver. Резистивиметр MCR
|
||||||
|
/// Description2:
|
||||||
|
/// </summary>
|
||||||
|
|
||||||
|
public class Record50Dto : RecordBaseDto
|
||||||
{
|
{
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Record name: Резистивиметр MCR
|
/// RecordId = 50,
|
||||||
/// Description: SibReciver. Резистивиметр MCR
|
/// ItemId = 8,
|
||||||
/// Description2:
|
/// LongMnemonic = "DEPTBITM",
|
||||||
|
/// ShortMnemonic = "DBTM",
|
||||||
|
/// Description = "SibReceiver custom. Положение долота",
|
||||||
|
/// Description2 = "",
|
||||||
|
/// FPSUnits = "----",
|
||||||
|
/// MetricUnits = "---",
|
||||||
|
/// Length = 4,
|
||||||
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public class Record50Dto : RecordBaseDto
|
public float? Deptbitm { get; set; }
|
||||||
{
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 50,
|
/// RecordId = 50,
|
||||||
/// ItemId = 8,
|
/// ItemId = 10,
|
||||||
/// LongMnemonic = "DEPTBITM",
|
/// LongMnemonic = "DEPTMEAS_MCRSTAT",
|
||||||
/// ShortMnemonic = "DBTM",
|
/// ShortMnemonic = "DEPTMEAS_MCRSTAT",
|
||||||
/// Description = "SibReceiver custom. Положение долота",
|
/// Description = "SibReceiver custom",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "----",
|
/// FPSUnits = "----",
|
||||||
/// MetricUnits = "---",
|
/// MetricUnits = "---",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? Deptbitm { get; set; }
|
public float? DeptmeasMcrstat { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 50,
|
/// RecordId = 50,
|
||||||
/// ItemId = 10,
|
/// ItemId = 11,
|
||||||
/// LongMnemonic = "DEPTMEAS_MCRSTAT",
|
/// LongMnemonic = "MCRSTAT",
|
||||||
/// ShortMnemonic = "DEPTMEAS_MCRSTAT",
|
/// ShortMnemonic = "MCRSTAT",
|
||||||
/// Description = "SibReceiver custom",
|
/// Description = "SibReceiver custom",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "----",
|
/// FPSUnits = "----",
|
||||||
/// MetricUnits = "---",
|
/// MetricUnits = "---",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? DeptmeasMcrstat { get; set; }
|
public float? Mcrstat { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 50,
|
/// RecordId = 50,
|
||||||
/// ItemId = 11,
|
/// ItemId = 12,
|
||||||
/// LongMnemonic = "MCRSTAT",
|
/// LongMnemonic = "DEPTMEAS_SLVL_mc",
|
||||||
/// ShortMnemonic = "MCRSTAT",
|
/// ShortMnemonic = "DEPTMEAS_SLVL_mc",
|
||||||
/// Description = "SibReceiver custom",
|
/// Description = "SibReceiver custom",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "----",
|
/// FPSUnits = "----",
|
||||||
/// MetricUnits = "---",
|
/// MetricUnits = "---",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? Mcrstat { get; set; }
|
public float? DeptmeasSlvlMc { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 50,
|
/// RecordId = 50,
|
||||||
/// ItemId = 12,
|
/// ItemId = 13,
|
||||||
/// LongMnemonic = "DEPTMEAS_SLVL_mc",
|
/// LongMnemonic = "SLVL_mc",
|
||||||
/// ShortMnemonic = "DEPTMEAS_SLVL_mc",
|
/// ShortMnemonic = "SLVL_mc",
|
||||||
/// Description = "SibReceiver custom",
|
/// Description = "SibReceiver custom",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "----",
|
/// FPSUnits = "----",
|
||||||
/// MetricUnits = "---",
|
/// MetricUnits = "---",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? DeptmeasSlvlMc { get; set; }
|
public float? SlvlMc { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 50,
|
/// RecordId = 50,
|
||||||
/// ItemId = 13,
|
/// ItemId = 14,
|
||||||
/// LongMnemonic = "SLVL_mc",
|
/// LongMnemonic = "DEPTMEAS_GDP_mc",
|
||||||
/// ShortMnemonic = "SLVL_mc",
|
/// ShortMnemonic = "DEPTMEAS_GDP_mc",
|
||||||
/// Description = "SibReceiver custom",
|
/// Description = "SibReceiver custom",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "----",
|
/// FPSUnits = "----",
|
||||||
/// MetricUnits = "---",
|
/// MetricUnits = "---",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? SlvlMc { get; set; }
|
public float? DeptmeasGdpMc { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 50,
|
/// RecordId = 50,
|
||||||
/// ItemId = 14,
|
/// ItemId = 15,
|
||||||
/// LongMnemonic = "DEPTMEAS_GDP_mc",
|
/// LongMnemonic = "GDP_mc",
|
||||||
/// ShortMnemonic = "DEPTMEAS_GDP_mc",
|
/// ShortMnemonic = "GDP_mc",
|
||||||
/// Description = "SibReceiver custom",
|
/// Description = "SibReceiver custom",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "----",
|
/// FPSUnits = "----",
|
||||||
/// MetricUnits = "---",
|
/// MetricUnits = "---",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? DeptmeasGdpMc { get; set; }
|
public float? GdpMc { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 50,
|
/// RecordId = 50,
|
||||||
/// ItemId = 15,
|
/// ItemId = 16,
|
||||||
/// LongMnemonic = "GDP_mc",
|
/// LongMnemonic = "DEPTMEAS_RA33F2_mc",
|
||||||
/// ShortMnemonic = "GDP_mc",
|
/// ShortMnemonic = "DEPTMEAS_RA33F2_mc",
|
||||||
/// Description = "SibReceiver custom",
|
/// Description = "SibReceiver custom",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "----",
|
/// FPSUnits = "----",
|
||||||
/// MetricUnits = "---",
|
/// MetricUnits = "---",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? GdpMc { get; set; }
|
public float? DeptmeasRa33f2Mc { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 50,
|
/// RecordId = 50,
|
||||||
/// ItemId = 16,
|
/// ItemId = 17,
|
||||||
/// LongMnemonic = "DEPTMEAS_RA33F2_mc",
|
/// LongMnemonic = "RA33F2_mc",
|
||||||
/// ShortMnemonic = "DEPTMEAS_RA33F2_mc",
|
/// ShortMnemonic = "RA33F2_mc",
|
||||||
/// Description = "SibReceiver custom",
|
/// Description = "SibReceiver custom",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "----",
|
/// FPSUnits = "----",
|
||||||
/// MetricUnits = "---",
|
/// MetricUnits = "---",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? DeptmeasRa33f2Mc { get; set; }
|
public float? Ra33f2Mc { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 50,
|
/// RecordId = 50,
|
||||||
/// ItemId = 17,
|
/// ItemId = 18,
|
||||||
/// LongMnemonic = "RA33F2_mc",
|
/// LongMnemonic = "DEPTMEAS_RP33F2_mc",
|
||||||
/// ShortMnemonic = "RA33F2_mc",
|
/// ShortMnemonic = "DEPTMEAS_RP33F2_mc",
|
||||||
/// Description = "SibReceiver custom",
|
/// Description = "SibReceiver custom",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "----",
|
/// FPSUnits = "----",
|
||||||
/// MetricUnits = "---",
|
/// MetricUnits = "---",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? Ra33f2Mc { get; set; }
|
public float? DeptmeasRp33f2Mc { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 50,
|
/// RecordId = 50,
|
||||||
/// ItemId = 18,
|
/// ItemId = 19,
|
||||||
/// LongMnemonic = "DEPTMEAS_RP33F2_mc",
|
/// LongMnemonic = "RP33F2_mc",
|
||||||
/// ShortMnemonic = "DEPTMEAS_RP33F2_mc",
|
/// ShortMnemonic = "RP33F2_mc",
|
||||||
/// Description = "SibReceiver custom",
|
/// Description = "SibReceiver custom",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "----",
|
/// FPSUnits = "----",
|
||||||
/// MetricUnits = "---",
|
/// MetricUnits = "---",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? DeptmeasRp33f2Mc { get; set; }
|
public float? Rp33f2Mc { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 50,
|
/// RecordId = 50,
|
||||||
/// ItemId = 19,
|
/// ItemId = 20,
|
||||||
/// LongMnemonic = "RP33F2_mc",
|
/// LongMnemonic = "DEPTMEAS_RA33F4_mc",
|
||||||
/// ShortMnemonic = "RP33F2_mc",
|
/// ShortMnemonic = "DEPTMEAS_RA33F4_mc",
|
||||||
/// Description = "SibReceiver custom",
|
/// Description = "SibReceiver custom",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "----",
|
/// FPSUnits = "----",
|
||||||
/// MetricUnits = "---",
|
/// MetricUnits = "---",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? Rp33f2Mc { get; set; }
|
public float? DeptmeasRa33f4Mc { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 50,
|
/// RecordId = 50,
|
||||||
/// ItemId = 20,
|
/// ItemId = 21,
|
||||||
/// LongMnemonic = "DEPTMEAS_RA33F4_mc",
|
/// LongMnemonic = "RA33F4_mc",
|
||||||
/// ShortMnemonic = "DEPTMEAS_RA33F4_mc",
|
/// ShortMnemonic = "RA33F4_mc",
|
||||||
/// Description = "SibReceiver custom",
|
/// Description = "SibReceiver custom",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "----",
|
/// FPSUnits = "----",
|
||||||
/// MetricUnits = "---",
|
/// MetricUnits = "---",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? DeptmeasRa33f4Mc { get; set; }
|
public float? Ra33f4Mc { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 50,
|
/// RecordId = 50,
|
||||||
/// ItemId = 21,
|
/// ItemId = 22,
|
||||||
/// LongMnemonic = "RA33F4_mc",
|
/// LongMnemonic = "DEPTMEAS_RP33F4_mc",
|
||||||
/// ShortMnemonic = "RA33F4_mc",
|
/// ShortMnemonic = "DEPTMEAS_RP33F4_mc",
|
||||||
/// Description = "SibReceiver custom",
|
/// Description = "SibReceiver custom",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "----",
|
/// FPSUnits = "----",
|
||||||
/// MetricUnits = "---",
|
/// MetricUnits = "---",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? Ra33f4Mc { get; set; }
|
public float? DeptmeasRp33f4Mc { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 50,
|
/// RecordId = 50,
|
||||||
/// ItemId = 22,
|
/// ItemId = 23,
|
||||||
/// LongMnemonic = "DEPTMEAS_RP33F4_mc",
|
/// LongMnemonic = "RP33F4_mc",
|
||||||
/// ShortMnemonic = "DEPTMEAS_RP33F4_mc",
|
/// ShortMnemonic = "RP33F4_mc",
|
||||||
/// Description = "SibReceiver custom",
|
/// Description = "SibReceiver custom",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "----",
|
/// FPSUnits = "----",
|
||||||
/// MetricUnits = "---",
|
/// MetricUnits = "---",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? DeptmeasRp33f4Mc { get; set; }
|
public float? Rp33f4Mc { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 50,
|
/// RecordId = 50,
|
||||||
/// ItemId = 23,
|
/// ItemId = 46,
|
||||||
/// LongMnemonic = "RP33F4_mc",
|
/// LongMnemonic = "DEPTMEAS_RA33_mc",
|
||||||
/// ShortMnemonic = "RP33F4_mc",
|
/// ShortMnemonic = "DEPTMEAS_RA33_mc",
|
||||||
/// Description = "SibReceiver custom",
|
/// Description = "SibReceiver custom",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "----",
|
/// FPSUnits = "----",
|
||||||
/// MetricUnits = "---",
|
/// MetricUnits = "---",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? Rp33f4Mc { get; set; }
|
public float? DeptmeasRa33Mc { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 50,
|
/// RecordId = 50,
|
||||||
/// ItemId = 46,
|
/// ItemId = 47,
|
||||||
/// LongMnemonic = "DEPTMEAS_RA33_mc",
|
/// LongMnemonic = "RA33_mc",
|
||||||
/// ShortMnemonic = "DEPTMEAS_RA33_mc",
|
/// ShortMnemonic = "RA33_mc",
|
||||||
/// Description = "SibReceiver custom",
|
/// Description = "SibReceiver custom",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "----",
|
/// FPSUnits = "----",
|
||||||
/// MetricUnits = "---",
|
/// MetricUnits = "---",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? DeptmeasRa33Mc { get; set; }
|
public float? Ra33Mc { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 50,
|
/// RecordId = 50,
|
||||||
/// ItemId = 47,
|
/// ItemId = 28,
|
||||||
/// LongMnemonic = "RA33_mc",
|
/// LongMnemonic = "DEPTMEAS_RP33_mc",
|
||||||
/// ShortMnemonic = "RA33_mc",
|
/// ShortMnemonic = "DEPTMEAS_RP33_mc",
|
||||||
/// Description = "SibReceiver custom",
|
/// Description = "SibReceiver custom",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "----",
|
/// FPSUnits = "----",
|
||||||
/// MetricUnits = "---",
|
/// MetricUnits = "---",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? Ra33Mc { get; set; }
|
public float? DeptmeasRp33Mc { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 50,
|
/// RecordId = 50,
|
||||||
/// ItemId = 28,
|
/// ItemId = 29,
|
||||||
/// LongMnemonic = "DEPTMEAS_RP33_mc",
|
/// LongMnemonic = "RP33_mc",
|
||||||
/// ShortMnemonic = "DEPTMEAS_RP33_mc",
|
/// ShortMnemonic = "RP33_mc",
|
||||||
/// Description = "SibReceiver custom",
|
/// Description = "SibReceiver custom",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "----",
|
/// FPSUnits = "----",
|
||||||
/// MetricUnits = "---",
|
/// MetricUnits = "---",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? DeptmeasRp33Mc { get; set; }
|
public float? Rp33Mc { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// RecordId = 50,
|
|
||||||
/// ItemId = 29,
|
|
||||||
/// LongMnemonic = "RP33_mc",
|
|
||||||
/// ShortMnemonic = "RP33_mc",
|
|
||||||
/// Description = "SibReceiver custom",
|
|
||||||
/// Description2 = "",
|
|
||||||
/// FPSUnits = "----",
|
|
||||||
/// MetricUnits = "---",
|
|
||||||
/// Length = 4,
|
|
||||||
/// ValueType = "F"
|
|
||||||
/// </summary>
|
|
||||||
|
|
||||||
public float? Rp33Mc { get; set; }
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,163 +1,162 @@
|
|||||||
namespace AsbCloudApp.Data.WITS
|
namespace AsbCloudApp.Data.WITS;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Record name: Передача полных
|
||||||
|
/// Description: SibReciver. Передача полных
|
||||||
|
/// Description2:
|
||||||
|
/// </summary>
|
||||||
|
|
||||||
|
public class Record60Dto : RecordBaseDto
|
||||||
{
|
{
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Record name: Передача полных
|
/// RecordId = 60,
|
||||||
/// Description: SibReciver. Передача полных
|
/// ItemId = 99,
|
||||||
/// Description2:
|
/// LongMnemonic = "DEPTBITM",
|
||||||
|
/// ShortMnemonic = "DBTM",
|
||||||
|
/// Description = "SibReceiver custom. Положение долота",
|
||||||
|
/// Description2 = "",
|
||||||
|
/// FPSUnits = "----",
|
||||||
|
/// MetricUnits = "---",
|
||||||
|
/// Length = 4,
|
||||||
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public class Record60Dto : RecordBaseDto
|
public float? Deptbitm { get; set; }
|
||||||
{
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 60,
|
/// RecordId = 60,
|
||||||
/// ItemId = 99,
|
/// ItemId = 10,
|
||||||
/// LongMnemonic = "DEPTBITM",
|
/// LongMnemonic = "DEPTMEAS",
|
||||||
/// ShortMnemonic = "DBTM",
|
/// ShortMnemonic = "DMEA",
|
||||||
/// Description = "SibReceiver custom. Положение долота",
|
/// Description = "SibReceiver custom. Точка Замера",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "----",
|
/// FPSUnits = "----",
|
||||||
/// MetricUnits = "---",
|
/// MetricUnits = "---",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? Deptbitm { get; set; }
|
public float? Deptmeas { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 60,
|
/// RecordId = 60,
|
||||||
/// ItemId = 10,
|
/// ItemId = 11,
|
||||||
/// LongMnemonic = "DEPTMEAS",
|
/// LongMnemonic = "Gtot",
|
||||||
/// ShortMnemonic = "DMEA",
|
/// ShortMnemonic = "Gtot",
|
||||||
/// Description = "SibReceiver custom. Точка Замера",
|
/// Description = "SibReceiver custom",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "----",
|
/// FPSUnits = "----",
|
||||||
/// MetricUnits = "---",
|
/// MetricUnits = "---",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? Deptmeas { get; set; }
|
public float? Gtot { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 60,
|
/// RecordId = 60,
|
||||||
/// ItemId = 11,
|
/// ItemId = 12,
|
||||||
/// LongMnemonic = "Gtot",
|
/// LongMnemonic = "Gx",
|
||||||
/// ShortMnemonic = "Gtot",
|
/// ShortMnemonic = "Gx",
|
||||||
/// Description = "SibReceiver custom",
|
/// Description = "SibReceiver custom",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "----",
|
/// FPSUnits = "----",
|
||||||
/// MetricUnits = "---",
|
/// MetricUnits = "---",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? Gtot { get; set; }
|
public float? Gx { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 60,
|
/// RecordId = 60,
|
||||||
/// ItemId = 12,
|
/// ItemId = 13,
|
||||||
/// LongMnemonic = "Gx",
|
/// LongMnemonic = "Gy",
|
||||||
/// ShortMnemonic = "Gx",
|
/// ShortMnemonic = "Gy",
|
||||||
/// Description = "SibReceiver custom",
|
/// Description = "SibReceiver custom",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "----",
|
/// FPSUnits = "----",
|
||||||
/// MetricUnits = "---",
|
/// MetricUnits = "---",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? Gx { get; set; }
|
public float? Gy { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 60,
|
/// RecordId = 60,
|
||||||
/// ItemId = 13,
|
/// ItemId = 14,
|
||||||
/// LongMnemonic = "Gy",
|
/// LongMnemonic = "Gz",
|
||||||
/// ShortMnemonic = "Gy",
|
/// ShortMnemonic = "Gz",
|
||||||
/// Description = "SibReceiver custom",
|
/// Description = "SibReceiver custom",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "----",
|
/// FPSUnits = "----",
|
||||||
/// MetricUnits = "---",
|
/// MetricUnits = "---",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? Gy { get; set; }
|
public float? Gz { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 60,
|
/// RecordId = 60,
|
||||||
/// ItemId = 14,
|
/// ItemId = 15,
|
||||||
/// LongMnemonic = "Gz",
|
/// LongMnemonic = "Btot",
|
||||||
/// ShortMnemonic = "Gz",
|
/// ShortMnemonic = "Btot",
|
||||||
/// Description = "SibReceiver custom",
|
/// Description = "SibReceiver custom",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "----",
|
/// FPSUnits = "----",
|
||||||
/// MetricUnits = "---",
|
/// MetricUnits = "---",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? Gz { get; set; }
|
public float? Btot { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 60,
|
/// RecordId = 60,
|
||||||
/// ItemId = 15,
|
/// ItemId = 16,
|
||||||
/// LongMnemonic = "Btot",
|
/// LongMnemonic = "Bx",
|
||||||
/// ShortMnemonic = "Btot",
|
/// ShortMnemonic = "Bx",
|
||||||
/// Description = "SibReceiver custom",
|
/// Description = "SibReceiver custom",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "----",
|
/// FPSUnits = "----",
|
||||||
/// MetricUnits = "---",
|
/// MetricUnits = "---",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? Btot { get; set; }
|
public float? Bx { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 60,
|
/// RecordId = 60,
|
||||||
/// ItemId = 16,
|
/// ItemId = 17,
|
||||||
/// LongMnemonic = "Bx",
|
/// LongMnemonic = "By",
|
||||||
/// ShortMnemonic = "Bx",
|
/// ShortMnemonic = "By",
|
||||||
/// Description = "SibReceiver custom",
|
/// Description = "SibReceiver custom",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "----",
|
/// FPSUnits = "----",
|
||||||
/// MetricUnits = "---",
|
/// MetricUnits = "---",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? Bx { get; set; }
|
public float? By { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 60,
|
/// RecordId = 60,
|
||||||
/// ItemId = 17,
|
/// ItemId = 18,
|
||||||
/// LongMnemonic = "By",
|
/// LongMnemonic = "Bz",
|
||||||
/// ShortMnemonic = "By",
|
/// ShortMnemonic = "Bz",
|
||||||
/// Description = "SibReceiver custom",
|
/// Description = "SibReceiver custom",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "----",
|
/// FPSUnits = "----",
|
||||||
/// MetricUnits = "---",
|
/// MetricUnits = "---",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? By { get; set; }
|
public float? Bz { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// RecordId = 60,
|
|
||||||
/// ItemId = 18,
|
|
||||||
/// LongMnemonic = "Bz",
|
|
||||||
/// ShortMnemonic = "Bz",
|
|
||||||
/// Description = "SibReceiver custom",
|
|
||||||
/// Description2 = "",
|
|
||||||
/// FPSUnits = "----",
|
|
||||||
/// MetricUnits = "---",
|
|
||||||
/// Length = 4,
|
|
||||||
/// ValueType = "F"
|
|
||||||
/// </summary>
|
|
||||||
|
|
||||||
public float? Bz { get; set; }
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,178 +1,177 @@
|
|||||||
namespace AsbCloudApp.Data.WITS
|
namespace AsbCloudApp.Data.WITS;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Record name: Резистивиметр Corvet
|
||||||
|
/// Description: SibReciver. Резистивиметр Corvet
|
||||||
|
/// Description2:
|
||||||
|
/// </summary>
|
||||||
|
|
||||||
|
public class Record61Dto : RecordBaseDto
|
||||||
{
|
{
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Record name: Резистивиметр Corvet
|
/// RecordId = 61,
|
||||||
/// Description: SibReciver. Резистивиметр Corvet
|
/// ItemId = 99,
|
||||||
/// Description2:
|
/// LongMnemonic = "DEPTBITM",
|
||||||
|
/// ShortMnemonic = "DBTM",
|
||||||
|
/// Description = "SibReceiver custom. Положение долота",
|
||||||
|
/// Description2 = "",
|
||||||
|
/// FPSUnits = "----",
|
||||||
|
/// MetricUnits = "---",
|
||||||
|
/// Length = 4,
|
||||||
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public class Record61Dto : RecordBaseDto
|
public float? Deptbitm { get; set; }
|
||||||
{
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 61,
|
/// RecordId = 61,
|
||||||
/// ItemId = 99,
|
/// ItemId = 10,
|
||||||
/// LongMnemonic = "DEPTBITM",
|
/// LongMnemonic = "DEPTMEAS",
|
||||||
/// ShortMnemonic = "DBTM",
|
/// ShortMnemonic = "DMEA",
|
||||||
/// Description = "SibReceiver custom. Положение долота",
|
/// Description = "SibReceiver custom. Точка Замера",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "----",
|
/// FPSUnits = "----",
|
||||||
/// MetricUnits = "---",
|
/// MetricUnits = "---",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? Deptbitm { get; set; }
|
public float? Deptmeas { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 61,
|
/// RecordId = 61,
|
||||||
/// ItemId = 10,
|
/// ItemId = 11,
|
||||||
/// LongMnemonic = "DEPTMEAS",
|
/// LongMnemonic = "PHL1F1",
|
||||||
/// ShortMnemonic = "DMEA",
|
/// ShortMnemonic = "PHL1F1",
|
||||||
/// Description = "SibReceiver custom. Точка Замера",
|
/// Description = "SibReceiver custom",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "----",
|
/// FPSUnits = "----",
|
||||||
/// MetricUnits = "---",
|
/// MetricUnits = "---",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? Deptmeas { get; set; }
|
public float? Phl1f1 { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 61,
|
/// RecordId = 61,
|
||||||
/// ItemId = 11,
|
/// ItemId = 12,
|
||||||
/// LongMnemonic = "PHL1F1",
|
/// LongMnemonic = "PHL1F2",
|
||||||
/// ShortMnemonic = "PHL1F1",
|
/// ShortMnemonic = "PHL1F2",
|
||||||
/// Description = "SibReceiver custom",
|
/// Description = "SibReceiver custom",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "----",
|
/// FPSUnits = "----",
|
||||||
/// MetricUnits = "---",
|
/// MetricUnits = "---",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? Phl1f1 { get; set; }
|
public float? Phl1f2 { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 61,
|
/// RecordId = 61,
|
||||||
/// ItemId = 12,
|
/// ItemId = 13,
|
||||||
/// LongMnemonic = "PHL1F2",
|
/// LongMnemonic = "PHL2F1",
|
||||||
/// ShortMnemonic = "PHL1F2",
|
/// ShortMnemonic = "PHL2F1",
|
||||||
/// Description = "SibReceiver custom",
|
/// Description = "SibReceiver custom",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "----",
|
/// FPSUnits = "----",
|
||||||
/// MetricUnits = "---",
|
/// MetricUnits = "---",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? Phl1f2 { get; set; }
|
public float? Phl2f1 { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 61,
|
/// RecordId = 61,
|
||||||
/// ItemId = 13,
|
/// ItemId = 14,
|
||||||
/// LongMnemonic = "PHL2F1",
|
/// LongMnemonic = "PHL2F2",
|
||||||
/// ShortMnemonic = "PHL2F1",
|
/// ShortMnemonic = "PHL2F2",
|
||||||
/// Description = "SibReceiver custom",
|
/// Description = "SibReceiver custom",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "----",
|
/// FPSUnits = "----",
|
||||||
/// MetricUnits = "---",
|
/// MetricUnits = "---",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? Phl2f1 { get; set; }
|
public float? Phl2f2 { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 61,
|
/// RecordId = 61,
|
||||||
/// ItemId = 14,
|
/// ItemId = 15,
|
||||||
/// LongMnemonic = "PHL2F2",
|
/// LongMnemonic = "ATT06H",
|
||||||
/// ShortMnemonic = "PHL2F2",
|
/// ShortMnemonic = "ATT06H",
|
||||||
/// Description = "SibReceiver custom",
|
/// Description = "SibReceiver custom",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "----",
|
/// FPSUnits = "----",
|
||||||
/// MetricUnits = "---",
|
/// MetricUnits = "---",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? Phl2f2 { get; set; }
|
public float? Att06h { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 61,
|
/// RecordId = 61,
|
||||||
/// ItemId = 15,
|
/// ItemId = 16,
|
||||||
/// LongMnemonic = "ATT06H",
|
/// LongMnemonic = "ATT06L",
|
||||||
/// ShortMnemonic = "ATT06H",
|
/// ShortMnemonic = "ATT06L",
|
||||||
/// Description = "SibReceiver custom",
|
/// Description = "SibReceiver custom",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "----",
|
/// FPSUnits = "----",
|
||||||
/// MetricUnits = "---",
|
/// MetricUnits = "---",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? Att06h { get; set; }
|
public float? Att06l { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 61,
|
/// RecordId = 61,
|
||||||
/// ItemId = 16,
|
/// ItemId = 17,
|
||||||
/// LongMnemonic = "ATT06L",
|
/// LongMnemonic = "ATT10H",
|
||||||
/// ShortMnemonic = "ATT06L",
|
/// ShortMnemonic = "ATT10H",
|
||||||
/// Description = "SibReceiver custom",
|
/// Description = "SibReceiver custom",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "----",
|
/// FPSUnits = "----",
|
||||||
/// MetricUnits = "---",
|
/// MetricUnits = "---",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? Att06l { get; set; }
|
public float? Att10h { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 61,
|
/// RecordId = 61,
|
||||||
/// ItemId = 17,
|
/// ItemId = 18,
|
||||||
/// LongMnemonic = "ATT10H",
|
/// LongMnemonic = "ATT10L",
|
||||||
/// ShortMnemonic = "ATT10H",
|
/// ShortMnemonic = "ATT10L",
|
||||||
/// Description = "SibReceiver custom",
|
/// Description = "SibReceiver custom",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "----",
|
/// FPSUnits = "----",
|
||||||
/// MetricUnits = "---",
|
/// MetricUnits = "---",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? Att10h { get; set; }
|
public float? Att10l { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 61,
|
/// RecordId = 61,
|
||||||
/// ItemId = 18,
|
/// ItemId = 19,
|
||||||
/// LongMnemonic = "ATT10L",
|
/// LongMnemonic = "Status",
|
||||||
/// ShortMnemonic = "ATT10L",
|
/// ShortMnemonic = "Status",
|
||||||
/// Description = "SibReceiver custom",
|
/// Description = "SibReceiver custom",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "----",
|
/// FPSUnits = "----",
|
||||||
/// MetricUnits = "---",
|
/// MetricUnits = "---",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? Att10l { get; set; }
|
public float? Status { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// RecordId = 61,
|
|
||||||
/// ItemId = 19,
|
|
||||||
/// LongMnemonic = "Status",
|
|
||||||
/// ShortMnemonic = "Status",
|
|
||||||
/// Description = "SibReceiver custom",
|
|
||||||
/// Description2 = "",
|
|
||||||
/// FPSUnits = "----",
|
|
||||||
/// MetricUnits = "---",
|
|
||||||
/// Length = 4,
|
|
||||||
/// ValueType = "F"
|
|
||||||
/// </summary>
|
|
||||||
|
|
||||||
public float? Status { get; set; }
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,298 +1,297 @@
|
|||||||
namespace AsbCloudApp.Data.WITS
|
namespace AsbCloudApp.Data.WITS;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Record name: Survey/Directional
|
||||||
|
/// Description: Directional/Survey data
|
||||||
|
/// Description2:
|
||||||
|
/// </summary>
|
||||||
|
|
||||||
|
public class Record7Dto : RecordBaseDto
|
||||||
{
|
{
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Record name: Survey/Directional
|
/// RecordId = 7,
|
||||||
/// Description: Directional/Survey data
|
/// ItemId = 8,
|
||||||
/// Description2:
|
/// LongMnemonic = "DEPTSVYM",
|
||||||
|
/// ShortMnemonic = "DSVM",
|
||||||
|
/// Description = "Depth Svy/reading (meas)",
|
||||||
|
/// Description2 = "",
|
||||||
|
/// FPSUnits = "F",
|
||||||
|
/// MetricUnits = "M",
|
||||||
|
/// Length = 4,
|
||||||
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public class Record7Dto : RecordBaseDto
|
public float? Deptsvym { get; set; }
|
||||||
{
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 7,
|
/// RecordId = 7,
|
||||||
/// ItemId = 8,
|
/// ItemId = 9,
|
||||||
/// LongMnemonic = "DEPTSVYM",
|
/// LongMnemonic = "DEPTSVYV",
|
||||||
/// ShortMnemonic = "DSVM",
|
/// ShortMnemonic = "DSVV",
|
||||||
/// Description = "Depth Svy/reading (meas)",
|
/// Description = "Depth Svy/reading (vert)",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "F",
|
/// FPSUnits = "F",
|
||||||
/// MetricUnits = "M",
|
/// MetricUnits = "M",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? Deptsvym { get; set; }
|
public float? Deptsvyv { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 7,
|
/// RecordId = 7,
|
||||||
/// ItemId = 9,
|
/// ItemId = 10,
|
||||||
/// LongMnemonic = "DEPTSVYV",
|
/// LongMnemonic = "PASSNUM",
|
||||||
/// ShortMnemonic = "DSVV",
|
/// ShortMnemonic = "PASS",
|
||||||
/// Description = "Depth Svy/reading (vert)",
|
/// Description = "Pass Number",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "F",
|
/// FPSUnits = "----",
|
||||||
/// MetricUnits = "M",
|
/// MetricUnits = "----",
|
||||||
/// Length = 4,
|
/// Length = 2,
|
||||||
/// ValueType = "F"
|
/// ValueType = "S"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? Deptsvyv { get; set; }
|
public short? Passnum { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 7,
|
/// RecordId = 7,
|
||||||
/// ItemId = 10,
|
/// ItemId = 11,
|
||||||
/// LongMnemonic = "PASSNUM",
|
/// LongMnemonic = "DEPTMEAS",
|
||||||
/// ShortMnemonic = "PASS",
|
/// ShortMnemonic = "DMEA",
|
||||||
/// Description = "Pass Number",
|
/// Description = "Depth Hole (meas)",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "----",
|
/// FPSUnits = "F",
|
||||||
/// MetricUnits = "----",
|
/// MetricUnits = "M",
|
||||||
/// Length = 2,
|
/// Length = 4,
|
||||||
/// ValueType = "S"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public short? Passnum { get; set; }
|
public float? Deptmeas { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 7,
|
/// RecordId = 7,
|
||||||
/// ItemId = 11,
|
/// ItemId = 12,
|
||||||
/// LongMnemonic = "DEPTMEAS",
|
/// LongMnemonic = "SVYTYPE",
|
||||||
/// ShortMnemonic = "DMEA",
|
/// ShortMnemonic = "STYP",
|
||||||
/// Description = "Depth Hole (meas)",
|
/// Description = "Svy Type",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "F",
|
/// FPSUnits = "----",
|
||||||
/// MetricUnits = "M",
|
/// MetricUnits = "----",
|
||||||
/// Length = 4,
|
/// Length = 8,
|
||||||
/// ValueType = "F"
|
/// ValueType = "A"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? Deptmeas { get; set; }
|
public string Svytype { get; set; } = string.Empty;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 7,
|
/// RecordId = 7,
|
||||||
/// ItemId = 12,
|
/// ItemId = 13,
|
||||||
/// LongMnemonic = "SVYTYPE",
|
/// LongMnemonic = "SVYINC",
|
||||||
/// ShortMnemonic = "STYP",
|
/// ShortMnemonic = "SINC",
|
||||||
/// Description = "Svy Type",
|
/// Description = "Svy Inclination",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "----",
|
/// FPSUnits = "DEG",
|
||||||
/// MetricUnits = "----",
|
/// MetricUnits = "DEG",
|
||||||
/// Length = 8,
|
/// Length = 4,
|
||||||
/// ValueType = "A"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public string Svytype { get; set; } = string.Empty;
|
public float? Svyinc { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 7,
|
/// RecordId = 7,
|
||||||
/// ItemId = 13,
|
/// ItemId = 14,
|
||||||
/// LongMnemonic = "SVYINC",
|
/// LongMnemonic = "SVYAZU",
|
||||||
/// ShortMnemonic = "SINC",
|
/// ShortMnemonic = "SAZU",
|
||||||
/// Description = "Svy Inclination",
|
/// Description = "Svy Azimuth (uncorrected)",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "DEG",
|
/// FPSUnits = "DEG",
|
||||||
/// MetricUnits = "DEG",
|
/// MetricUnits = "DEG",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? Svyinc { get; set; }
|
public float? Svyazu { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 7,
|
/// RecordId = 7,
|
||||||
/// ItemId = 14,
|
/// ItemId = 15,
|
||||||
/// LongMnemonic = "SVYAZU",
|
/// LongMnemonic = "SVYAZC",
|
||||||
/// ShortMnemonic = "SAZU",
|
/// ShortMnemonic = "SAZC",
|
||||||
/// Description = "Svy Azimuth (uncorrected)",
|
/// Description = "Svy Azimuth (corrected)",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "DEG",
|
/// FPSUnits = "DEG",
|
||||||
/// MetricUnits = "DEG",
|
/// MetricUnits = "DEG",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? Svyazu { get; set; }
|
public float? Svyazc { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 7,
|
/// RecordId = 7,
|
||||||
/// ItemId = 15,
|
/// ItemId = 16,
|
||||||
/// LongMnemonic = "SVYAZC",
|
/// LongMnemonic = "SVYMTF",
|
||||||
/// ShortMnemonic = "SAZC",
|
/// ShortMnemonic = "SMTF",
|
||||||
/// Description = "Svy Azimuth (corrected)",
|
/// Description = "Svy Magnetic Toolface",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "DEG",
|
/// FPSUnits = "DEG",
|
||||||
/// MetricUnits = "DEG",
|
/// MetricUnits = "DEG",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? Svyazc { get; set; }
|
public float? Svymtf { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 7,
|
/// RecordId = 7,
|
||||||
/// ItemId = 16,
|
/// ItemId = 17,
|
||||||
/// LongMnemonic = "SVYMTF",
|
/// LongMnemonic = "SVYGTF",
|
||||||
/// ShortMnemonic = "SMTF",
|
/// ShortMnemonic = "SGTF",
|
||||||
/// Description = "Svy Magnetic Toolface",
|
/// Description = "Svy Gravity Toolface",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "DEG",
|
/// FPSUnits = "DEG",
|
||||||
/// MetricUnits = "DEG",
|
/// MetricUnits = "DEG",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? Svymtf { get; set; }
|
public float? Svygtf { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 7,
|
/// RecordId = 7,
|
||||||
/// ItemId = 17,
|
/// ItemId = 18,
|
||||||
/// LongMnemonic = "SVYGTF",
|
/// LongMnemonic = "SVYNS",
|
||||||
/// ShortMnemonic = "SGTF",
|
/// ShortMnemonic = "SNS",
|
||||||
/// Description = "Svy Gravity Toolface",
|
/// Description = "Svy North-South Position",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "DEG",
|
/// FPSUnits = "F",
|
||||||
/// MetricUnits = "DEG",
|
/// MetricUnits = "M",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? Svygtf { get; set; }
|
public float? Svyns { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 7,
|
/// RecordId = 7,
|
||||||
/// ItemId = 18,
|
/// ItemId = 19,
|
||||||
/// LongMnemonic = "SVYNS",
|
/// LongMnemonic = "SVYEW",
|
||||||
/// ShortMnemonic = "SNS",
|
/// ShortMnemonic = "SEW",
|
||||||
/// Description = "Svy North-South Position",
|
/// Description = "Svy East-West Position",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "F",
|
/// FPSUnits = "F",
|
||||||
/// MetricUnits = "M",
|
/// MetricUnits = "M",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? Svyns { get; set; }
|
public float? Svyew { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 7,
|
/// RecordId = 7,
|
||||||
/// ItemId = 19,
|
/// ItemId = 20,
|
||||||
/// LongMnemonic = "SVYEW",
|
/// LongMnemonic = "SVYDLS",
|
||||||
/// ShortMnemonic = "SEW",
|
/// ShortMnemonic = "SDLS",
|
||||||
/// Description = "Svy East-West Position",
|
/// Description = "Svy Dog Leg Severity",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "F",
|
/// FPSUnits = "DGHF",
|
||||||
/// MetricUnits = "M",
|
/// MetricUnits = "DGHM",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? Svyew { get; set; }
|
public float? Svydls { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 7,
|
/// RecordId = 7,
|
||||||
/// ItemId = 20,
|
/// ItemId = 21,
|
||||||
/// LongMnemonic = "SVYDLS",
|
/// LongMnemonic = "SVYWALK",
|
||||||
/// ShortMnemonic = "SDLS",
|
/// ShortMnemonic = "SWLK",
|
||||||
/// Description = "Svy Dog Leg Severity",
|
/// Description = "Svy Rate of Walk",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "DGHF",
|
/// FPSUnits = "DGHF",
|
||||||
/// MetricUnits = "DGHM",
|
/// MetricUnits = "DGHM",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? Svydls { get; set; }
|
public float? Svywalk { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 7,
|
/// RecordId = 7,
|
||||||
/// ItemId = 21,
|
/// ItemId = 22,
|
||||||
/// LongMnemonic = "SVYWALK",
|
/// LongMnemonic = "SPARE1",
|
||||||
/// ShortMnemonic = "SWLK",
|
/// ShortMnemonic = "SPR1",
|
||||||
/// Description = "Svy Rate of Walk",
|
/// Description = "SPARE 1",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "DGHF",
|
/// FPSUnits = "----",
|
||||||
/// MetricUnits = "DGHM",
|
/// MetricUnits = "----",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? Svywalk { get; set; }
|
public float? Spare1 { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 7,
|
/// RecordId = 7,
|
||||||
/// ItemId = 22,
|
/// ItemId = 23,
|
||||||
/// LongMnemonic = "SPARE1",
|
/// LongMnemonic = "SPARE2",
|
||||||
/// ShortMnemonic = "SPR1",
|
/// ShortMnemonic = "SPR2",
|
||||||
/// Description = "SPARE 1",
|
/// Description = "SPARE 2",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "----",
|
/// FPSUnits = "----",
|
||||||
/// MetricUnits = "----",
|
/// MetricUnits = "----",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? Spare1 { get; set; }
|
public float? Spare2 { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 7,
|
/// RecordId = 7,
|
||||||
/// ItemId = 23,
|
/// ItemId = 24,
|
||||||
/// LongMnemonic = "SPARE2",
|
/// LongMnemonic = "SPARE3",
|
||||||
/// ShortMnemonic = "SPR2",
|
/// ShortMnemonic = "SPR3",
|
||||||
/// Description = "SPARE 2",
|
/// Description = "SPARE 3",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "----",
|
/// FPSUnits = "----",
|
||||||
/// MetricUnits = "----",
|
/// MetricUnits = "----",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? Spare2 { get; set; }
|
public float? Spare3 { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 7,
|
/// RecordId = 7,
|
||||||
/// ItemId = 24,
|
/// ItemId = 25,
|
||||||
/// LongMnemonic = "SPARE3",
|
/// LongMnemonic = "SPARE4",
|
||||||
/// ShortMnemonic = "SPR3",
|
/// ShortMnemonic = "SPR4",
|
||||||
/// Description = "SPARE 3",
|
/// Description = "SPARE 4",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "----",
|
/// FPSUnits = "----",
|
||||||
/// MetricUnits = "----",
|
/// MetricUnits = "----",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? Spare3 { get; set; }
|
public float? Spare4 { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 7,
|
/// RecordId = 7,
|
||||||
/// ItemId = 25,
|
/// ItemId = 26,
|
||||||
/// LongMnemonic = "SPARE4",
|
/// LongMnemonic = "SPARE5",
|
||||||
/// ShortMnemonic = "SPR4",
|
/// ShortMnemonic = "SPR5",
|
||||||
/// Description = "SPARE 4",
|
/// Description = "SPARE 5",
|
||||||
/// Description2 = "",
|
/// Description2 = "",
|
||||||
/// FPSUnits = "----",
|
/// FPSUnits = "----",
|
||||||
/// MetricUnits = "----",
|
/// MetricUnits = "---",
|
||||||
/// Length = 4,
|
/// Length = 4,
|
||||||
/// ValueType = "F"
|
/// ValueType = "F"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
||||||
public float? Spare4 { get; set; }
|
public float? Spare5 { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// RecordId = 7,
|
|
||||||
/// ItemId = 26,
|
|
||||||
/// LongMnemonic = "SPARE5",
|
|
||||||
/// ShortMnemonic = "SPR5",
|
|
||||||
/// Description = "SPARE 5",
|
|
||||||
/// Description2 = "",
|
|
||||||
/// FPSUnits = "----",
|
|
||||||
/// MetricUnits = "---",
|
|
||||||
/// Length = 4,
|
|
||||||
/// ValueType = "F"
|
|
||||||
/// </summary>
|
|
||||||
|
|
||||||
public float? Spare5 { get; set; }
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,133 +1,132 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data.WITS
|
namespace AsbCloudApp.Data.WITS;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// This is base class for all WITS-0 records
|
||||||
|
/// </summary>
|
||||||
|
public abstract class RecordBaseDto : IId, ITelemetryData
|
||||||
{
|
{
|
||||||
|
/// <inheritdoc/>
|
||||||
|
[Required]
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public int IdTelemetry { get; set; }
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
[Required]
|
||||||
|
public DateTime DateTime { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// This is base class for all WITS-0 records
|
/// отметка времени
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public abstract class RecordBaseDto : IId, ITelemetryData
|
[Required]
|
||||||
{
|
public int TimeStamp { get; set; }
|
||||||
/// <inheritdoc/>
|
|
||||||
[Required]
|
|
||||||
public int Id { get; set; }
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <summary>
|
||||||
public int IdTelemetry { get; set; }
|
/// RecordId = 1,
|
||||||
|
/// ItemId = 1,
|
||||||
|
/// LongMnemonic = "WELLID",
|
||||||
|
/// ShortMnemonic = "WID",
|
||||||
|
/// Description = "Well Identifier",
|
||||||
|
/// Description2 = "Number/name assigned to the well by the operator for identification purposes. This item is common to all records. This includes a four-character code identifying the SENDER.",
|
||||||
|
/// FPSUnits = "----",
|
||||||
|
/// MetricUnits = "----",
|
||||||
|
/// Length = 16,
|
||||||
|
/// ValueType = "A"
|
||||||
|
/// </summary>
|
||||||
|
[Required]
|
||||||
|
public string Wellid { get; set; } = string.Empty;
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <summary>
|
||||||
[Required]
|
/// RecordId = 1,
|
||||||
public DateTime DateTime { get; set; }
|
/// ItemId = 2,
|
||||||
|
/// LongMnemonic = "STKNUM",
|
||||||
|
/// ShortMnemonic = "SKNO",
|
||||||
|
/// Description = "Sidetrack/Hole Sect No.",
|
||||||
|
/// Description2 = "Measured depth of the hole at the time the record is generated.",
|
||||||
|
/// FPSUnits = "----",
|
||||||
|
/// MetricUnits = "----",
|
||||||
|
/// Length = 2,
|
||||||
|
/// ValueType = "S"
|
||||||
|
/// </summary>
|
||||||
|
|
||||||
/// <summary>
|
public short? Stknum { get; set; }
|
||||||
/// отметка времени
|
|
||||||
/// </summary>
|
|
||||||
[Required]
|
|
||||||
public int TimeStamp { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// RecordId = 1,
|
/// RecordId = 1,
|
||||||
/// ItemId = 1,
|
/// ItemId = 3,
|
||||||
/// LongMnemonic = "WELLID",
|
/// LongMnemonic = "RECID",
|
||||||
/// ShortMnemonic = "WID",
|
/// ShortMnemonic = "RID",
|
||||||
/// Description = "Well Identifier",
|
/// Description = "Record Identifier",
|
||||||
/// Description2 = "Number/name assigned to the well by the operator for identification purposes. This item is common to all records. This includes a four-character code identifying the SENDER.",
|
/// Description2 = "Number of the sidetrack being drilled at the time the computer generated the record. Prior to having a sidetrack, this number is always 0. The sidetrack number indexes at the time drilling new formation commences (not while drilling the cement plug). This item is common to all records.",
|
||||||
/// FPSUnits = "----",
|
/// FPSUnits = "----",
|
||||||
/// MetricUnits = "----",
|
/// MetricUnits = "----",
|
||||||
/// Length = 16,
|
/// Length = 2,
|
||||||
/// ValueType = "A"
|
/// ValueType = "S"
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
|
||||||
public string Wellid { get; set; } = string.Empty;
|
|
||||||
|
|
||||||
/// <summary>
|
public short? Recid { get; set; }
|
||||||
/// RecordId = 1,
|
|
||||||
/// ItemId = 2,
|
|
||||||
/// LongMnemonic = "STKNUM",
|
|
||||||
/// ShortMnemonic = "SKNO",
|
|
||||||
/// Description = "Sidetrack/Hole Sect No.",
|
|
||||||
/// Description2 = "Measured depth of the hole at the time the record is generated.",
|
|
||||||
/// FPSUnits = "----",
|
|
||||||
/// MetricUnits = "----",
|
|
||||||
/// Length = 2,
|
|
||||||
/// ValueType = "S"
|
|
||||||
/// </summary>
|
|
||||||
|
|
||||||
public short? Stknum { get; set; }
|
/// <summary>
|
||||||
|
/// RecordId = 1,
|
||||||
|
/// ItemId = 4,
|
||||||
|
/// LongMnemonic = "SEQID",
|
||||||
|
/// ShortMnemonic = "SQID",
|
||||||
|
/// Description = "Sequence Identifier",
|
||||||
|
/// Description2 = "Logical data record type identifier. This item is common to all records and, for current Pre-Defined Records, contains a value between 1 and 25, according to the record type. Types 26 through 49 inclusive are reserved for future expansion of the Pre-Defined records. Types 50 through 80 inclusive are open for Custom user definition. NOTE that the Logical Record Type for a record is this number plus 150, thus WITS Record 1 is Logical Record Type 151, WITS Record 2 is Logical Record Type 152, etc.",
|
||||||
|
/// FPSUnits = "----",
|
||||||
|
/// MetricUnits = "----",
|
||||||
|
/// Length = 4,
|
||||||
|
/// ValueType = "L"
|
||||||
|
/// </summary>
|
||||||
|
|
||||||
/// <summary>
|
public int? Seqid { get; set; }
|
||||||
/// RecordId = 1,
|
|
||||||
/// ItemId = 3,
|
|
||||||
/// LongMnemonic = "RECID",
|
|
||||||
/// ShortMnemonic = "RID",
|
|
||||||
/// Description = "Record Identifier",
|
|
||||||
/// Description2 = "Number of the sidetrack being drilled at the time the computer generated the record. Prior to having a sidetrack, this number is always 0. The sidetrack number indexes at the time drilling new formation commences (not while drilling the cement plug). This item is common to all records.",
|
|
||||||
/// FPSUnits = "----",
|
|
||||||
/// MetricUnits = "----",
|
|
||||||
/// Length = 2,
|
|
||||||
/// ValueType = "S"
|
|
||||||
/// </summary>
|
|
||||||
|
|
||||||
public short? Recid { get; set; }
|
/// <summary>
|
||||||
|
/// RecordId = 1,
|
||||||
|
/// ItemId = 5,
|
||||||
|
/// LongMnemonic = "DATE",
|
||||||
|
/// ShortMnemonic = "DATE",
|
||||||
|
/// Description = "Date",
|
||||||
|
/// Description2 = "Indicates the number of times this record has been generated (it is not reset to zero for a sidetrack). The computer should automatically increase the number by one each time it creates a new record. This item is common to all records. The sequence identifier in each individual record type keeps track of the count for that particular record only. Thus there is a sequence identifier for each record type used.",
|
||||||
|
/// FPSUnits = "----",
|
||||||
|
/// MetricUnits = "----",
|
||||||
|
/// Length = 4,
|
||||||
|
/// ValueType = "L"
|
||||||
|
/// </summary>
|
||||||
|
|
||||||
/// <summary>
|
public int? Date_ { get; set; }
|
||||||
/// RecordId = 1,
|
|
||||||
/// ItemId = 4,
|
|
||||||
/// LongMnemonic = "SEQID",
|
|
||||||
/// ShortMnemonic = "SQID",
|
|
||||||
/// Description = "Sequence Identifier",
|
|
||||||
/// Description2 = "Logical data record type identifier. This item is common to all records and, for current Pre-Defined Records, contains a value between 1 and 25, according to the record type. Types 26 through 49 inclusive are reserved for future expansion of the Pre-Defined records. Types 50 through 80 inclusive are open for Custom user definition. NOTE that the Logical Record Type for a record is this number plus 150, thus WITS Record 1 is Logical Record Type 151, WITS Record 2 is Logical Record Type 152, etc.",
|
|
||||||
/// FPSUnits = "----",
|
|
||||||
/// MetricUnits = "----",
|
|
||||||
/// Length = 4,
|
|
||||||
/// ValueType = "L"
|
|
||||||
/// </summary>
|
|
||||||
|
|
||||||
public int? Seqid { get; set; }
|
/// <summary>
|
||||||
|
/// RecordId = 1,
|
||||||
|
/// ItemId = 6,
|
||||||
|
/// LongMnemonic = "TIME",
|
||||||
|
/// ShortMnemonic = "TIME",
|
||||||
|
/// Description = "Time",
|
||||||
|
/// Description2 = "Indicates the date the computer generated this record. The date is reported as a 6 digit integer in a YYMMDD type format. e.g. 910404 would represent April 4, 1991. It is common to all records. Note that, like Time below, Universal Coordinated Time (Greenwich Mean Time) is used as the common reference. Note also that though this number should never decrease, there is no guarantee of this fact.",
|
||||||
|
/// FPSUnits = "----",
|
||||||
|
/// MetricUnits = "----",
|
||||||
|
/// Length = 4,
|
||||||
|
/// ValueType = "L"
|
||||||
|
/// </summary>
|
||||||
|
|
||||||
/// <summary>
|
public int? Time { get; set; }
|
||||||
/// RecordId = 1,
|
|
||||||
/// ItemId = 5,
|
|
||||||
/// LongMnemonic = "DATE",
|
|
||||||
/// ShortMnemonic = "DATE",
|
|
||||||
/// Description = "Date",
|
|
||||||
/// Description2 = "Indicates the number of times this record has been generated (it is not reset to zero for a sidetrack). The computer should automatically increase the number by one each time it creates a new record. This item is common to all records. The sequence identifier in each individual record type keeps track of the count for that particular record only. Thus there is a sequence identifier for each record type used.",
|
|
||||||
/// FPSUnits = "----",
|
|
||||||
/// MetricUnits = "----",
|
|
||||||
/// Length = 4,
|
|
||||||
/// ValueType = "L"
|
|
||||||
/// </summary>
|
|
||||||
|
|
||||||
public int? Date_ { get; set; }
|
/// <summary>
|
||||||
|
/// RecordId = 1,
|
||||||
|
/// ItemId = 7,
|
||||||
|
/// LongMnemonic = "ACTCOD",
|
||||||
|
/// ShortMnemonic = "ACTC",
|
||||||
|
/// Description = "Activity Code",
|
||||||
|
/// Description2 = "Indicates the time of day (24 hour clock), when the computer generated the record, eg. 225015 would represent 10:50:15 pm. This item is common to all records. Note that, like Date above, Universal Coordinated Time (Greenwich Mean Time) is used as the common reference.",
|
||||||
|
/// FPSUnits = "----",
|
||||||
|
/// MetricUnits = "----",
|
||||||
|
/// Length = 2,
|
||||||
|
/// ValueType = "S"
|
||||||
|
/// </summary>
|
||||||
|
|
||||||
/// <summary>
|
public short? Actcod { get; set; }
|
||||||
/// RecordId = 1,
|
|
||||||
/// ItemId = 6,
|
|
||||||
/// LongMnemonic = "TIME",
|
|
||||||
/// ShortMnemonic = "TIME",
|
|
||||||
/// Description = "Time",
|
|
||||||
/// Description2 = "Indicates the date the computer generated this record. The date is reported as a 6 digit integer in a YYMMDD type format. e.g. 910404 would represent April 4, 1991. It is common to all records. Note that, like Time below, Universal Coordinated Time (Greenwich Mean Time) is used as the common reference. Note also that though this number should never decrease, there is no guarantee of this fact.",
|
|
||||||
/// FPSUnits = "----",
|
|
||||||
/// MetricUnits = "----",
|
|
||||||
/// Length = 4,
|
|
||||||
/// ValueType = "L"
|
|
||||||
/// </summary>
|
|
||||||
|
|
||||||
public int? Time { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// RecordId = 1,
|
|
||||||
/// ItemId = 7,
|
|
||||||
/// LongMnemonic = "ACTCOD",
|
|
||||||
/// ShortMnemonic = "ACTC",
|
|
||||||
/// Description = "Activity Code",
|
|
||||||
/// Description2 = "Indicates the time of day (24 hour clock), when the computer generated the record, eg. 225015 would represent 10:50:15 pm. This item is common to all records. Note that, like Date above, Universal Coordinated Time (Greenwich Mean Time) is used as the common reference.",
|
|
||||||
/// FPSUnits = "----",
|
|
||||||
/// MetricUnits = "----",
|
|
||||||
/// Length = 2,
|
|
||||||
/// ValueType = "S"
|
|
||||||
/// </summary>
|
|
||||||
|
|
||||||
public short? Actcod { get; set; }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -2,30 +2,28 @@ using System.Collections.Generic;
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Дела скважины
|
||||||
|
/// </summary>
|
||||||
|
public class WellCaseDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Дела скважины
|
/// Скважина
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class WellCaseDto
|
[Required]
|
||||||
{
|
public int IdWell { get; set; }
|
||||||
/// <summary>
|
|
||||||
/// Скважина
|
|
||||||
/// </summary>
|
|
||||||
[Required]
|
|
||||||
public int IdWell { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Разрешение для текущего пользователя добавлять ответственных
|
/// Разрешение для текущего пользователя добавлять ответственных
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public bool PermissionToSetPubliher { get; set; } = true;
|
public bool PermissionToSetPubliher { get; set; } = true;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Документ дела скважины
|
|
||||||
/// </summary>
|
|
||||||
[Required]
|
|
||||||
public IEnumerable<WellFinalDocumentDto> WellFinalDocuments { get; set; } = Enumerable.Empty<WellFinalDocumentDto>();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Документ дела скважины
|
||||||
|
/// </summary>
|
||||||
|
[Required]
|
||||||
|
public IEnumerable<WellFinalDocumentDto> WellFinalDocuments { get; set; } = Enumerable.Empty<WellFinalDocumentDto>();
|
||||||
}
|
}
|
||||||
|
@ -1,26 +1,25 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// DTO элемент композитной скважины
|
||||||
|
/// </summary>
|
||||||
|
public class WellCompositeDto : IWellRelated
|
||||||
{
|
{
|
||||||
|
/// <inheritdoc/>
|
||||||
|
[Required]
|
||||||
|
public int IdWell { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// DTO элемент композитной скважины
|
/// id скважины входящей в композитную для этой
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class WellCompositeDto : IWellRelated
|
[Required]
|
||||||
{
|
public int IdWellSrc { get; set; }
|
||||||
/// <inheritdoc/>
|
|
||||||
[Required]
|
|
||||||
public int IdWell { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// id скважины входящей в композитную для этой
|
/// id секции скважины входящей в композитную для этой
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Required]
|
[Required]
|
||||||
public int IdWellSrc { get; set; }
|
public int IdWellSectionType { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// id секции скважины входящей в композитную для этой
|
|
||||||
/// </summary>
|
|
||||||
[Required]
|
|
||||||
public int IdWellSectionType { get; set; }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -5,22 +5,21 @@ using System.Linq;
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Хранение операций по композитной скважине
|
||||||
|
/// и по скважинам, на основе которых была рассчитана композитная скважина
|
||||||
|
/// </summary>
|
||||||
|
public class WellCompositeOperationDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Хранение операций по композитной скважине
|
/// Список операций композитной скважины
|
||||||
/// и по скважинам, на основе которых была рассчитана композитная скважина
|
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class WellCompositeOperationDto
|
public IEnumerable<WellOperationDto> WellOperationsComposite { get; set; } = null!;
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Список операций композитной скважины
|
|
||||||
/// </summary>
|
|
||||||
public IEnumerable<WellOperationDto> WellOperationsComposite { get; set; } = null!;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Список операций, на основе которых были рассчитаны операции по композитной скважине
|
/// Список операций, на основе которых были рассчитаны операции по композитной скважине
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public IEnumerable<WellCompositeOperationSourceDto> WellCompositeSourceOperations { get; set; } = null!;
|
public IEnumerable<WellCompositeOperationSourceDto> WellCompositeSourceOperations { get; set; } = null!;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,21 +1,20 @@
|
|||||||
using AsbCloudApp.Data.WellOperation;
|
using AsbCloudApp.Data.WellOperation;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Операции по скважине, по которой рассчитывается композитная скважина
|
||||||
|
/// </summary>
|
||||||
|
public class WellCompositeOperationSourceDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Операции по скважине, по которой рассчитывается композитная скважина
|
/// Скважина
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class WellCompositeOperationSourceDto
|
public WellDto Well { get; set; } = null!;
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Скважина
|
|
||||||
/// </summary>
|
|
||||||
public WellDto Well { get; set; } = null!;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Операции по скважине
|
/// Операции по скважине
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public IEnumerable<WellOperationDto> Operations { get; set; } = null!;
|
public IEnumerable<WellOperationDto> Operations { get; set; } = null!;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -3,90 +3,89 @@ using System.Collections.Generic;
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// базовая информация о скважине
|
||||||
|
/// </summary>
|
||||||
|
public class WellWithTimezoneDto : WellInfoDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <inheritdoc/>
|
||||||
/// базовая информация о скважине
|
[Required]
|
||||||
/// </summary>
|
public SimpleTimezoneDto Timezone { get; set; } = null!;
|
||||||
public class WellWithTimezoneDto : WellInfoDto
|
|
||||||
{
|
|
||||||
/// <inheritdoc/>
|
|
||||||
[Required]
|
|
||||||
public SimpleTimezoneDto Timezone { get; set; } = null!;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 0 - неизвестно,
|
|
||||||
/// 1 - в работе,
|
|
||||||
/// 2 - завершена
|
|
||||||
/// </summary>
|
|
||||||
[Required]
|
|
||||||
public int IdState { get; set; }
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Скважина
|
/// 0 - неизвестно,
|
||||||
|
/// 1 - в работе,
|
||||||
|
/// 2 - завершена
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class WellDto : WellInfoDto, IMapPoint, IId
|
[Required]
|
||||||
{
|
public int IdState { get; set; }
|
||||||
/// <inheritdoc/>
|
}
|
||||||
[Range(-90, 90, ErrorMessage = "Допустимые значения широты от -90 до 90")]
|
|
||||||
public double? Latitude { get; set; }
|
/// <summary>
|
||||||
|
/// Скважина
|
||||||
/// <inheritdoc/>
|
/// </summary>
|
||||||
[Range(-180, 180, ErrorMessage = "Допустимые значения долготы от -180 до 180")]
|
public class WellDto : WellInfoDto, IMapPoint, IId
|
||||||
public double? Longitude { get; set; }
|
{
|
||||||
|
/// <inheritdoc/>
|
||||||
/// <inheritdoc/>
|
[Range(-90, 90, ErrorMessage = "Допустимые значения широты от -90 до 90")]
|
||||||
[Required]
|
public double? Latitude { get; set; }
|
||||||
public SimpleTimezoneDto Timezone { get; set; } = null!;
|
|
||||||
|
/// <inheritdoc/>
|
||||||
/// <summary>
|
[Range(-180, 180, ErrorMessage = "Допустимые значения долготы от -180 до 180")]
|
||||||
/// Название типа скважины
|
public double? Longitude { get; set; }
|
||||||
/// </summary>
|
|
||||||
public string? WellType { get; set; }
|
/// <inheritdoc/>
|
||||||
|
[Required]
|
||||||
/// <summary>
|
public SimpleTimezoneDto Timezone { get; set; } = null!;
|
||||||
/// ID типа скважины
|
|
||||||
/// </summary>
|
/// <summary>
|
||||||
[Range(1, 2, ErrorMessage = "Тип скважины указан неправильно.")]
|
/// Название типа скважины
|
||||||
public int IdWellType { get; set; }
|
/// </summary>
|
||||||
|
public string? WellType { get; set; }
|
||||||
/// <summary>
|
|
||||||
/// ID куста
|
/// <summary>
|
||||||
/// </summary>
|
/// ID типа скважины
|
||||||
public int IdCluster { get; set; }
|
/// </summary>
|
||||||
|
[Range(1, 2, ErrorMessage = "Тип скважины указан неправильно.")]
|
||||||
/// <summary>
|
public int IdWellType { get; set; }
|
||||||
/// 0 - неизвестно,
|
|
||||||
/// 1 - в работе,
|
/// <summary>
|
||||||
/// 2 - завершена
|
/// ID куста
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Range(0, 2, ErrorMessage = "Текущее состояние работы скважины указано неправильно.")]
|
public int IdCluster { get; set; }
|
||||||
public int IdState { get; set; }
|
|
||||||
|
/// <summary>
|
||||||
/// <summary>
|
/// 0 - неизвестно,
|
||||||
/// Дата/время первой операции
|
/// 1 - в работе,
|
||||||
/// </summary>
|
/// 2 - завершена
|
||||||
public DateTimeOffset? StartDate { get; set; }
|
/// </summary>
|
||||||
|
[Range(0, 2, ErrorMessage = "Текущее состояние работы скважины указано неправильно.")]
|
||||||
/// <summary>
|
public int IdState { get; set; }
|
||||||
/// Дата/время кода приходили данные последний раз
|
|
||||||
/// </summary>
|
/// <summary>
|
||||||
public DateTimeOffset LastTelemetryDate { get; set; }
|
/// Дата/время первой операции
|
||||||
|
/// </summary>
|
||||||
/// <summary>
|
public DateTimeOffset? StartDate { get; set; }
|
||||||
/// ID телеметрии
|
|
||||||
/// </summary>
|
/// <summary>
|
||||||
public int? IdTelemetry { get; set; }
|
/// Дата/время кода приходили данные последний раз
|
||||||
|
/// </summary>
|
||||||
/// <summary>
|
public DateTimeOffset LastTelemetryDate { get; set; }
|
||||||
/// Объект телеметрии (инфо от панели оператора)
|
|
||||||
/// </summary>
|
/// <summary>
|
||||||
public TelemetryBaseDto? Telemetry { get; set; }
|
/// ID телеметрии
|
||||||
|
/// </summary>
|
||||||
/// <summary>
|
public int? IdTelemetry { get; set; }
|
||||||
/// Компании участвующие в работах на скважине
|
|
||||||
/// </summary>
|
/// <summary>
|
||||||
public IEnumerable<CompanyDto> Companies { get; set; } = Enumerable.Empty<CompanyDto>();
|
/// Объект телеметрии (инфо от панели оператора)
|
||||||
}
|
/// </summary>
|
||||||
|
public TelemetryBaseDto? Telemetry { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Компании участвующие в работах на скважине
|
||||||
|
/// </summary>
|
||||||
|
public IEnumerable<CompanyDto> Companies { get; set; } = Enumerable.Empty<CompanyDto>();
|
||||||
}
|
}
|
||||||
|
@ -1,23 +1,22 @@
|
|||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// DTO Дело скважины
|
||||||
|
/// </summary>
|
||||||
|
public class WellFinalDocumentDBDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// DTO Дело скважины
|
/// Идентификатор скважины
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class WellFinalDocumentDBDto
|
public int IdWell { get; set; }
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Идентификатор скважины
|
|
||||||
/// </summary>
|
|
||||||
public int IdWell { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Идентификатор ответственного
|
/// Идентификатор ответственного
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int IdUser { get; set; }
|
public int IdUser { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Идентификатор категории файла
|
/// Идентификатор категории файла
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int IdCategory { get; set; }
|
public int IdCategory { get; set; }
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user