forked from ddrilling/AsbCloudServer
CS2-30 Создать контроллер куста и контроллер месторождения.
Разработана модель данных
This commit is contained in:
parent
54d917c17e
commit
11f5bd00f1
22
AsbCloudApp/Data/Analytics/WellDrillingStatDto.cs
Normal file
22
AsbCloudApp/Data/Analytics/WellDrillingStatDto.cs
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace AsbCloudApp.Data.Analytics
|
||||||
|
{
|
||||||
|
public class WellDrillingStatDto
|
||||||
|
{
|
||||||
|
public int Id { get; set; }
|
||||||
|
public WellDto Well { get; set; }
|
||||||
|
public DateTime PlanStart { get; set; }
|
||||||
|
public DateTime PlanEnd { get; set; }
|
||||||
|
public DateTime FactStart { get; set; }
|
||||||
|
public DateTime FactEnd { get; set; }
|
||||||
|
public double UnProductiveTimeDays { get; set; }
|
||||||
|
public double RateOfPenetrationPlan { get; set; }
|
||||||
|
public double RateOfPenetrationFact { get; set; }
|
||||||
|
public double RouteSpeedPlan { get; set; }
|
||||||
|
public double RouteSpeedFact { get; set; }
|
||||||
|
public IEnumerable<WellSectionDto> Sections { get; set; }
|
||||||
|
public IEnumerable<ContractorDto> Contractors { get; set; }
|
||||||
|
}
|
||||||
|
}
|
21
AsbCloudApp/Data/Analytics/WellSectionDto.cs
Normal file
21
AsbCloudApp/Data/Analytics/WellSectionDto.cs
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
namespace AsbCloudApp.Data.Analytics
|
||||||
|
{
|
||||||
|
public class WellSectionDto
|
||||||
|
{
|
||||||
|
public string SectionType { get; set; }
|
||||||
|
public double WellDepthPlan { get; set; }
|
||||||
|
public double WellDepthFact { get; set; }
|
||||||
|
public double BuildDaysPlan { get; set; }
|
||||||
|
public double BuildDaysFact { get; set; }
|
||||||
|
public double RateOfPenetrationPlan { get; set; }
|
||||||
|
public double RateOfPenetrationFact { get; set; }
|
||||||
|
public double RouteSpeedPlan { get; set; }
|
||||||
|
public double RouteSpeedFact { get; set; }
|
||||||
|
public double BhaUpSpeedPlan { get; set; }
|
||||||
|
public double BhaUpSpeedFact { get; set; }
|
||||||
|
public double BhaDownSpeedPlan { get; set; }
|
||||||
|
public double BhaDownSpeedFact { get; set; }
|
||||||
|
public double CasingDownSpeedPlan { get; set; }
|
||||||
|
public double CasingDownSpeedFact { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -1,7 +0,0 @@
|
|||||||
namespace AsbCloudApp.Data
|
|
||||||
{
|
|
||||||
public class ClusterAnalysisDto
|
|
||||||
{
|
|
||||||
public int Id { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
9
AsbCloudApp/Data/ContractorDto.cs
Normal file
9
AsbCloudApp/Data/ContractorDto.cs
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
namespace AsbCloudApp.Data
|
||||||
|
{
|
||||||
|
public class ContractorDto
|
||||||
|
{
|
||||||
|
public int Id { get; set; }
|
||||||
|
public string Name { get; set; }
|
||||||
|
public string Service { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -7,5 +7,7 @@
|
|||||||
public object LastData { get; set; }//DataSaubBaseDto
|
public object LastData { get; set; }//DataSaubBaseDto
|
||||||
public double Latitude { get; set; }
|
public double Latitude { get; set; }
|
||||||
public double Longitude { get; set; }
|
public double Longitude { get; set; }
|
||||||
|
|
||||||
|
public int WellType { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
using AsbCloudApp.Data;
|
using AsbCloudApp.Data;
|
||||||
|
using AsbCloudApp.Data.Analytics;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@ -13,6 +14,6 @@ namespace AsbCloudApp.Services
|
|||||||
IEnumerable<ClusterDto> GetClusters(int idCustomer, int depositId);
|
IEnumerable<ClusterDto> GetClusters(int idCustomer, int depositId);
|
||||||
IEnumerable<ClusterDto> GetClusters(int idCustomer);
|
IEnumerable<ClusterDto> GetClusters(int idCustomer);
|
||||||
IEnumerable<WellDto> GetWells(int idCustomer, int clusterId);
|
IEnumerable<WellDto> GetWells(int idCustomer, int clusterId);
|
||||||
IEnumerable<ClusterAnalysisDto> GetAnalysis(int idCustomer, int clusterId);
|
IEnumerable<WellDrillingStatDto> GetAnalysis(int idCustomer, int clusterId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
15
AsbCloudDb/Model/Analytics/SectionType.cs
Normal file
15
AsbCloudDb/Model/Analytics/SectionType.cs
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
namespace AsbCloudDb.Model.Analytics
|
||||||
|
{
|
||||||
|
public enum SectionType
|
||||||
|
{
|
||||||
|
MeanSeaLevel,
|
||||||
|
MudLine,
|
||||||
|
ConductorCasing,
|
||||||
|
SurfaceCasing,
|
||||||
|
InjectionCasing,
|
||||||
|
IntermediateCasing,
|
||||||
|
ProtectiveCasing,
|
||||||
|
ProductionCasing,
|
||||||
|
ProductionLiner,
|
||||||
|
}
|
||||||
|
}
|
55
AsbCloudDb/Model/Analytics/WellDrillingStat.cs
Normal file
55
AsbCloudDb/Model/Analytics/WellDrillingStat.cs
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
using System;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace AsbCloudDb.Model.Analytics
|
||||||
|
{
|
||||||
|
|
||||||
|
[Table("t_well_drilling_stat"), Comment("статистика бурения скважины")]
|
||||||
|
public class WellDrillingStat
|
||||||
|
{
|
||||||
|
[Key]
|
||||||
|
[Column("id")]
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
[Column("id_well")]
|
||||||
|
public int IdWell { get; set; }
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
|
[ForeignKey(nameof(IdWell))]
|
||||||
|
[InverseProperty(nameof(Model.Well.WellDrillingStat))]
|
||||||
|
public virtual Well Well { get; set; }
|
||||||
|
|
||||||
|
[Column("plan_start", TypeName = "timestamp with time zone")]
|
||||||
|
public DateTime PlanStart { get; set; }
|
||||||
|
|
||||||
|
[Column("plan_end", TypeName = "timestamp with time zone")]
|
||||||
|
public DateTime PlanEnd { get; set; }
|
||||||
|
|
||||||
|
[Column("fact_start", TypeName = "timestamp with time zone")]
|
||||||
|
public DateTime FactStart { get; set; }
|
||||||
|
|
||||||
|
[Column("fact_end", TypeName = "timestamp with time zone")]
|
||||||
|
public DateTime FactEnd { get; set; }
|
||||||
|
|
||||||
|
[Column("un_productive_time_days"), Comment("НПВ, сут")]
|
||||||
|
public double UnProductiveDays { get; set; }
|
||||||
|
|
||||||
|
[Column("rate_of_penetration_plan"), Comment("МСП план")]
|
||||||
|
public double RateOfPenetrationPlan { get; set; }
|
||||||
|
|
||||||
|
[Column("rate_of_penetration_fact"), Comment("МСП факт")]
|
||||||
|
public double RateOfPenetrationFact { get; set; }
|
||||||
|
|
||||||
|
[Column("route_speed_plan"), Comment("Рейсовая скорость план")]
|
||||||
|
public double RouteSpeedPlan { get; set; }
|
||||||
|
|
||||||
|
[Column("route_speed_fact"), Comment("Рейсовая скорость факт")]
|
||||||
|
public double RouteSpeedFact { get; set; }
|
||||||
|
}
|
||||||
|
}
|
76
AsbCloudDb/Model/Analytics/WellSection.cs
Normal file
76
AsbCloudDb/Model/Analytics/WellSection.cs
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
using System;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace AsbCloudDb.Model.Analytics
|
||||||
|
{
|
||||||
|
|
||||||
|
[Table("t_well_section"), Comment("секция скважины")]
|
||||||
|
public class WellSection
|
||||||
|
{
|
||||||
|
[Key]
|
||||||
|
[Column("id")]
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
[Column("id_well_section_type")]
|
||||||
|
public int IdWellSectionType { get; set; }
|
||||||
|
|
||||||
|
[Column("id_well")]
|
||||||
|
public int IdWell{ get; set; }
|
||||||
|
|
||||||
|
[Column("well_depth_plan"), Comment("глубина план")]
|
||||||
|
public double WellDepthPlan { get; set; }
|
||||||
|
|
||||||
|
[Column("well_depth_fact"), Comment("глубина факт")]
|
||||||
|
public double WellDepthFact { get; set; }
|
||||||
|
|
||||||
|
[Column("build_days_plan"), Comment("период план")]
|
||||||
|
public double BuildDaysPlan { get; set; }
|
||||||
|
|
||||||
|
[Column("build_days_fact"), Comment("период факт")]
|
||||||
|
public double BuildDaysFact { get; set; }
|
||||||
|
|
||||||
|
[Column("rate_of_penetration_plan"), Comment("Механическая скорость проходки план")]
|
||||||
|
public double RateOfPenetrationPlan { get; set; }
|
||||||
|
|
||||||
|
[Column("rate_of_penetration_fact"), Comment("Механическая скорость проходки факт")]
|
||||||
|
public double RateOfPenetrationFact { get; set; }
|
||||||
|
|
||||||
|
[Column("route_speed_plan"), Comment("Рейсовая скорость план")]
|
||||||
|
public double RouteSpeedPlan { get; set; }
|
||||||
|
|
||||||
|
[Column("route_speed_fact"), Comment("Рейсовая скорость факт")]
|
||||||
|
public double RouteSpeedFact { get; set; }
|
||||||
|
|
||||||
|
[Column("bha_down_speed_plan"), Comment("Скорость спуска КНБК план")]
|
||||||
|
public double BhaDownSpeedPlan { get; set; }
|
||||||
|
|
||||||
|
[Column("bha_down_speed_fact"), Comment("Скорость спуска КНБК факт")]
|
||||||
|
public double BhaDownSpeedFact { get; set; }
|
||||||
|
|
||||||
|
[Column("bha_up_speed_plan"), Comment("Скорость подъема КНБК план")]
|
||||||
|
public double BhaUpSpeedPlan { get; set; }
|
||||||
|
|
||||||
|
[Column("bha_up_speed_fact"), Comment("Скорость подъема КНБК факт")]
|
||||||
|
public double BhaUpSpeedFact { get; set; }
|
||||||
|
|
||||||
|
[Column("casing_down_speed_plan"), Comment("Скорость спуска ОК план")]
|
||||||
|
public double CasingDownSpeedPlan { get; set; }
|
||||||
|
|
||||||
|
[Column("casing_down_speed_fact"), Comment("Скорость спуска ОК факт")]
|
||||||
|
public double CasingDownSpeedFact { get; set; }
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
|
[ForeignKey(nameof(IdWell))]
|
||||||
|
[InverseProperty(nameof(Model.Well.SectionAnalysis))]
|
||||||
|
public virtual Well Well { get; set; }
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
|
[ForeignKey(nameof(IdWellSectionType))]
|
||||||
|
[InverseProperty(nameof(Analytics.WellSectionType.WellSections))]
|
||||||
|
public virtual WellSectionType WellSectionType { get; set; }
|
||||||
|
}
|
||||||
|
}
|
27
AsbCloudDb/Model/Analytics/WellSectionType.cs
Normal file
27
AsbCloudDb/Model/Analytics/WellSectionType.cs
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
using System;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace AsbCloudDb.Model.Analytics
|
||||||
|
{
|
||||||
|
|
||||||
|
[Table("t_well_section_type"), Comment("конструкция секции скважины")]
|
||||||
|
public class WellSectionType
|
||||||
|
{
|
||||||
|
[Key]
|
||||||
|
[Column("id")]
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
[Column("caption"), Comment("Название")]
|
||||||
|
[StringLength(255)]
|
||||||
|
public string Caption { get; set; }
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
|
[InverseProperty(nameof(Analytics.WellSection.WellSectionType))]
|
||||||
|
public virtual ICollection<WellSection> WellSections { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -1,4 +1,5 @@
|
|||||||
using Microsoft.EntityFrameworkCore;
|
using AsbCloudDb.Model.Analytics;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@ -14,7 +15,7 @@ namespace AsbCloudDb.Model
|
|||||||
{
|
{
|
||||||
//private readonly string connectionString;
|
//private readonly string connectionString;
|
||||||
public virtual DbSet<Cluster> Clusters { get; set; }
|
public virtual DbSet<Cluster> Clusters { get; set; }
|
||||||
public virtual DbSet<Customer> Customers { get; set; }
|
public virtual DbSet<Company> Companies { get; set; }
|
||||||
public virtual DbSet<DataSaubBase> DataSaubBases { get; set; }
|
public virtual DbSet<DataSaubBase> DataSaubBases { get; set; }
|
||||||
public virtual DbSet<Deposit> Deposits { get; set; }
|
public virtual DbSet<Deposit> Deposits { get; set; }
|
||||||
public virtual DbSet<Event> Events { get; set; }
|
public virtual DbSet<Event> Events { get; set; }
|
||||||
@ -26,7 +27,9 @@ namespace AsbCloudDb.Model
|
|||||||
public virtual DbSet<Well> Wells { get; set; }
|
public virtual DbSet<Well> Wells { get; set; }
|
||||||
public virtual DbSet<Report> Reports { get; set; }
|
public virtual DbSet<Report> Reports { get; set; }
|
||||||
public virtual DbSet<Operation> Operations { get; set; }
|
public virtual DbSet<Operation> Operations { get; set; }
|
||||||
public virtual DbSet<TelemetryAnalysis> TelemetryAnalysis { get; set; }
|
public virtual DbSet<TelemetryAnalysis> TelemetryAnalysis { get; set; }
|
||||||
|
public virtual DbSet<WellSection> SectionAnalysis { get; set; }
|
||||||
|
public virtual DbSet<WellDrillingStat> WellDrillingStats { get; set; }
|
||||||
|
|
||||||
//public AsbCloudDbContext(string connectionString = "Host=localhost;Database=postgres;Username=postgres;Password=q;Persist Security Info=True")
|
//public AsbCloudDbContext(string connectionString = "Host=localhost;Database=postgres;Username=postgres;Password=q;Persist Security Info=True")
|
||||||
//{
|
//{
|
||||||
@ -118,18 +121,27 @@ namespace AsbCloudDb.Model
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
modelBuilder.Entity<Customer>(entity =>
|
modelBuilder.Entity<CompanyType>(entity =>
|
||||||
{
|
{
|
||||||
entity.HasData(new List<Customer>{
|
entity.HasData(new List<CompanyType>{
|
||||||
new Customer{ Id = 1, Caption = "\"ООО\" АСБ", },
|
new CompanyType{ Id = 1, Caption = "Недрапользователь", },
|
||||||
|
new CompanyType{ Id = 2, Caption = "Буровой подрядчик", },
|
||||||
|
new CompanyType{ Id = 3, Caption = "Сервис автоматизации бурения", },
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity<Company>(entity =>
|
||||||
|
{
|
||||||
|
entity.HasData(new List<Company>{
|
||||||
|
new Company{ Id = 1, Caption = "\"ООО\" АСБ", IdCompanyType = 3},
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
modelBuilder.Entity<User>(entity =>
|
modelBuilder.Entity<User>(entity =>
|
||||||
{
|
{
|
||||||
entity.HasOne(d => d.Customer)
|
entity.HasOne(d => d.Company)
|
||||||
.WithMany(p => p.Users)
|
.WithMany(p => p.Users)
|
||||||
.HasForeignKey(d => d.IdCustomer)
|
.HasForeignKey(d => d.IdCompany)
|
||||||
.HasConstraintName("t_user_t_customer_id_fk");
|
.HasConstraintName("t_user_t_customer_id_fk");
|
||||||
|
|
||||||
entity.HasIndex(d => d.Login)
|
entity.HasIndex(d => d.Login)
|
||||||
@ -138,7 +150,7 @@ namespace AsbCloudDb.Model
|
|||||||
entity.HasData(new List<User>{
|
entity.HasData(new List<User>{
|
||||||
new User{
|
new User{
|
||||||
Id = 1,
|
Id = 1,
|
||||||
IdCustomer = 1,
|
IdCompany = 1,
|
||||||
IdRole = 1,
|
IdRole = 1,
|
||||||
Level = int.MaxValue,
|
Level = int.MaxValue,
|
||||||
Login = "dev",
|
Login = "dev",
|
||||||
@ -155,10 +167,9 @@ namespace AsbCloudDb.Model
|
|||||||
.HasForeignKey(d => d.IdCluster)
|
.HasForeignKey(d => d.IdCluster)
|
||||||
.HasConstraintName("t_well_t_cluster_id_fk");
|
.HasConstraintName("t_well_t_cluster_id_fk");
|
||||||
|
|
||||||
entity.HasOne(d => d.Customer)
|
// Todo: Setup relation table names (https://stackoverflow.com/questions/11769864/many-to-many-relationships-in-ef5-code-first-how-can-i-specify-table-name)
|
||||||
.WithMany(p => p.Wells)
|
entity.HasMany(d => d.Companies)
|
||||||
.HasForeignKey(d => d.IdCustomer)
|
.WithMany(p => p.Wells);
|
||||||
.HasConstraintName("t_well_t_customer_id_fk");
|
|
||||||
|
|
||||||
entity.HasOne(d => d.Telemetry)
|
entity.HasOne(d => d.Telemetry)
|
||||||
.WithOne(p => p.Well)
|
.WithOne(p => p.Well)
|
||||||
@ -233,7 +244,7 @@ namespace AsbCloudDb.Model
|
|||||||
public IQueryable<Well> GetWellsByCustomer(int idCustomer)
|
public IQueryable<Well> GetWellsByCustomer(int idCustomer)
|
||||||
{
|
{
|
||||||
return from well in Wells
|
return from well in Wells
|
||||||
.Include(w => w.Customer)
|
.Include(w => w.Companies)
|
||||||
.Include(w => w.Cluster)
|
.Include(w => w.Cluster)
|
||||||
.ThenInclude(c => c.Deposit)
|
.ThenInclude(c => c.Deposit)
|
||||||
where well.IdCustomer == idCustomer
|
where well.IdCustomer == idCustomer
|
||||||
@ -243,7 +254,7 @@ namespace AsbCloudDb.Model
|
|||||||
public IQueryable<User> GetUsersByLogin(string login)
|
public IQueryable<User> GetUsersByLogin(string login)
|
||||||
=> Users
|
=> Users
|
||||||
.Include(e => e.Role)
|
.Include(e => e.Role)
|
||||||
.Include(e => e.Customer)
|
.Include(e => e.Company)
|
||||||
.Where(e => e.Login == login);
|
.Where(e => e.Login == login);
|
||||||
|
|
||||||
public (DateTime From, DateTime To) GetDatesRange<TEntity>(int idTelemetry)
|
public (DateTime From, DateTime To) GetDatesRange<TEntity>(int idTelemetry)
|
||||||
|
41
AsbCloudDb/Model/Company.cs
Normal file
41
AsbCloudDb/Model/Company.cs
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace AsbCloudDb.Model
|
||||||
|
{
|
||||||
|
[Table("t_company")]
|
||||||
|
public partial class Company : IId
|
||||||
|
{
|
||||||
|
public Company()
|
||||||
|
{
|
||||||
|
Users = new HashSet<User>();
|
||||||
|
Wells = new HashSet<Well>();
|
||||||
|
}
|
||||||
|
|
||||||
|
[Key]
|
||||||
|
[Column("id")]
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
[Column("caption")]
|
||||||
|
[StringLength(255)]
|
||||||
|
public string Caption { get; set; }
|
||||||
|
|
||||||
|
[Column("id_company_type"), Comment("вид деятельности")]
|
||||||
|
[StringLength(255)]
|
||||||
|
public int IdCompanyType { get; set; }
|
||||||
|
|
||||||
|
[ForeignKey(nameof(IdCompanyType))]
|
||||||
|
[InverseProperty(nameof(Model.CompanyType.Companies))]
|
||||||
|
public virtual CompanyType CompanyType { get; set; }
|
||||||
|
|
||||||
|
[InverseProperty(nameof(User.Company))]
|
||||||
|
public virtual ICollection<User> Users { get; set; }
|
||||||
|
|
||||||
|
[InverseProperty(nameof(Well.Companies))]
|
||||||
|
public virtual ICollection<Well> Wells { get; set; }
|
||||||
|
}
|
||||||
|
}
|
24
AsbCloudDb/Model/CompanyType.cs
Normal file
24
AsbCloudDb/Model/CompanyType.cs
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace AsbCloudDb.Model
|
||||||
|
{
|
||||||
|
[Table("t_company_type")]
|
||||||
|
public partial class CompanyType
|
||||||
|
{
|
||||||
|
[Key]
|
||||||
|
[Column("id")]
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
[Column("caption")]
|
||||||
|
[StringLength(255)]
|
||||||
|
public string Caption { get; set; }
|
||||||
|
|
||||||
|
[InverseProperty(nameof(Company.CompanyType))]
|
||||||
|
public virtual ICollection<Company> Companies { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -1,31 +0,0 @@
|
|||||||
using System.Collections.Generic;
|
|
||||||
using System.ComponentModel.DataAnnotations;
|
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
|
||||||
|
|
||||||
#nullable disable
|
|
||||||
|
|
||||||
namespace AsbCloudDb.Model
|
|
||||||
{
|
|
||||||
[Table("t_customer")]
|
|
||||||
public partial class Customer : IId
|
|
||||||
{
|
|
||||||
public Customer()
|
|
||||||
{
|
|
||||||
Users = new HashSet<User>();
|
|
||||||
Wells = new HashSet<Well>();
|
|
||||||
}
|
|
||||||
|
|
||||||
[Key]
|
|
||||||
[Column("id")]
|
|
||||||
public int Id { get; set; }
|
|
||||||
[Column("caption")]
|
|
||||||
[StringLength(255)]
|
|
||||||
public string Caption { get; set; }
|
|
||||||
|
|
||||||
[InverseProperty(nameof(User.Customer))]
|
|
||||||
public virtual ICollection<User> Users { get; set; }
|
|
||||||
|
|
||||||
[InverseProperty(nameof(Well.Customer))]
|
|
||||||
public virtual ICollection<Well> Wells { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
@ -10,7 +10,7 @@ namespace AsbCloudDb.Model
|
|||||||
public interface IAsbCloudDbContext
|
public interface IAsbCloudDbContext
|
||||||
{
|
{
|
||||||
DbSet<Cluster> Clusters { get; set; }
|
DbSet<Cluster> Clusters { get; set; }
|
||||||
DbSet<Customer> Customers { get; set; }
|
DbSet<Company> Companies { get; set; }
|
||||||
DbSet<DataSaubBase> DataSaubBases { get; set; }
|
DbSet<DataSaubBase> DataSaubBases { get; set; }
|
||||||
DbSet<Deposit> Deposits { get; set; }
|
DbSet<Deposit> Deposits { get; set; }
|
||||||
DbSet<Event> Events { get; set; }
|
DbSet<Event> Events { get; set; }
|
||||||
|
@ -11,20 +11,29 @@ namespace AsbCloudDb.Model
|
|||||||
[Key]
|
[Key]
|
||||||
[Column("id")]
|
[Column("id")]
|
||||||
public int Id { get; set; }
|
public int Id { get; set; }
|
||||||
|
|
||||||
[Column("name"), Comment("Название отчета (файла)")]
|
[Column("name"), Comment("Название отчета (файла)")]
|
||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
|
|
||||||
[Column("id_well"), Comment("id скважины")]
|
[Column("id_well"), Comment("id скважины")]
|
||||||
public int WellId { get; set; }
|
public int IdWell { get; set; }
|
||||||
|
|
||||||
[Column("date", TypeName = "timestamp with time zone")]
|
[Column("date", TypeName = "timestamp with time zone")]
|
||||||
public DateTime Date { get; set; }
|
public DateTime Date { get; set; }
|
||||||
|
|
||||||
[Column("begin", TypeName = "timestamp with time zone")]
|
[Column("begin", TypeName = "timestamp with time zone")]
|
||||||
public DateTimeOffset Begin { get; set; }
|
public DateTimeOffset Begin { get; set; }
|
||||||
|
|
||||||
[Column("end"), Comment("timestamp with time zone")]
|
[Column("end"), Comment("timestamp with time zone")]
|
||||||
public DateTimeOffset End { get; set; }
|
public DateTimeOffset End { get; set; }
|
||||||
|
|
||||||
[Column("step"), Comment("размер шага в секундах")]
|
[Column("step"), Comment("размер шага в секундах")]
|
||||||
public int Step { get; set; }
|
public int Step { get; set; }
|
||||||
|
|
||||||
[Column("format"), Comment("Формат отчета")]
|
[Column("format"), Comment("Формат отчета")]
|
||||||
public int Format { get; set; }
|
public int Format { get; set; }
|
||||||
|
|
||||||
|
[ForeignKey(nameof(IdWell))]
|
||||||
|
public virtual Well Well { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,8 +13,8 @@ namespace AsbCloudDb.Model
|
|||||||
[Column("id")]
|
[Column("id")]
|
||||||
public int Id { get; set; }
|
public int Id { get; set; }
|
||||||
|
|
||||||
[Column("id_customer")]
|
[Column("id_company")]
|
||||||
public int? IdCustomer { get; set; }
|
public int? IdCompany { get; set; }
|
||||||
|
|
||||||
[Column("id_role")]
|
[Column("id_role")]
|
||||||
public int? IdRole { get; set; }
|
public int? IdRole { get; set; }
|
||||||
@ -46,9 +46,9 @@ namespace AsbCloudDb.Model
|
|||||||
[StringLength(255)]
|
[StringLength(255)]
|
||||||
public string Patronymic { get; set; }
|
public string Patronymic { get; set; }
|
||||||
|
|
||||||
[ForeignKey(nameof(IdCustomer))]
|
[ForeignKey(nameof(IdCompany))]
|
||||||
[InverseProperty(nameof(Model.Customer.Users))]
|
[InverseProperty(nameof(Model.Company.Users))]
|
||||||
public virtual Customer Customer { get; set; }
|
public virtual Company Company { get; set; }
|
||||||
|
|
||||||
[ForeignKey(nameof(IdRole))]
|
[ForeignKey(nameof(IdRole))]
|
||||||
[InverseProperty(nameof(Model.UserRole.Users))]
|
[InverseProperty(nameof(Model.UserRole.Users))]
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
using Microsoft.EntityFrameworkCore;
|
using AsbCloudDb.Model.Analytics;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
@ -30,10 +32,6 @@ namespace AsbCloudDb.Model
|
|||||||
[InverseProperty(nameof(Model.Cluster.Wells))]
|
[InverseProperty(nameof(Model.Cluster.Wells))]
|
||||||
public virtual Cluster Cluster { get; set; }
|
public virtual Cluster Cluster { get; set; }
|
||||||
|
|
||||||
[ForeignKey(nameof(IdCustomer))]
|
|
||||||
[InverseProperty(nameof(Model.Customer.Wells))]
|
|
||||||
public virtual Customer Customer { get; set; }
|
|
||||||
|
|
||||||
[ForeignKey(nameof(IdTelemetry))]
|
[ForeignKey(nameof(IdTelemetry))]
|
||||||
[InverseProperty(nameof(Model.Telemetry.Well))]
|
[InverseProperty(nameof(Model.Telemetry.Well))]
|
||||||
public virtual Telemetry Telemetry { get; set; }
|
public virtual Telemetry Telemetry { get; set; }
|
||||||
@ -43,5 +41,14 @@ namespace AsbCloudDb.Model
|
|||||||
|
|
||||||
[Column("longitude")]
|
[Column("longitude")]
|
||||||
public double Longitude { get; set; }
|
public double Longitude { get; set; }
|
||||||
|
|
||||||
|
[InverseProperty(nameof(Analytics.WellSection.Well))]
|
||||||
|
public virtual ICollection<WellSection> SectionAnalysis { get; set; }
|
||||||
|
|
||||||
|
[InverseProperty(nameof(Analytics.WellDrillingStat.Well))]
|
||||||
|
public virtual WellDrillingStat WellDrillingStat { get; set; }
|
||||||
|
|
||||||
|
[Column("companines"), Comment("участники (заказчик, подрядчики и субподрядчики)")]
|
||||||
|
public virtual ICollection<Company> Companies { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -29,7 +29,7 @@ namespace AsbSaubReport
|
|||||||
var well = context.Wells
|
var well = context.Wells
|
||||||
.Include(w=>w.Cluster)
|
.Include(w=>w.Cluster)
|
||||||
.ThenInclude(c=>c.Deposit)
|
.ThenInclude(c=>c.Deposit)
|
||||||
.Include(w=>w.Customer)
|
.Include(w=>w.Companies)
|
||||||
.Include(w => w.Telemetry)
|
.Include(w => w.Telemetry)
|
||||||
.FirstOrDefault(w => w.Id == wellId);
|
.FirstOrDefault(w => w.Id == wellId);
|
||||||
|
|
||||||
@ -50,7 +50,7 @@ namespace AsbSaubReport
|
|||||||
Deposit = well.Cluster.Deposit.Caption,
|
Deposit = well.Cluster.Deposit.Caption,
|
||||||
Cluster = well.Cluster.Caption,
|
Cluster = well.Cluster.Caption,
|
||||||
Well = well.Caption,
|
Well = well.Caption,
|
||||||
Customer = well.Customer.Caption,
|
Customer = well.Companies.First(c=>c.IdCompanyType == 1)?.Caption,
|
||||||
DrillingStartDate = well.Telemetry?.Info?.DrillingStartDate??default,
|
DrillingStartDate = well.Telemetry?.Info?.DrillingStartDate??default,
|
||||||
TimeZoneId = well.Telemetry?.Info?.TimeZoneId??default,
|
TimeZoneId = well.Telemetry?.Info?.TimeZoneId??default,
|
||||||
};
|
};
|
||||||
|
@ -45,7 +45,7 @@ namespace AsbCloudInfrastructure.Services
|
|||||||
{
|
{
|
||||||
Id = identity.User.Id,
|
Id = identity.User.Id,
|
||||||
Name = identity.User.Name,
|
Name = identity.User.Name,
|
||||||
CustomerName = identity.User.Customer.Caption,
|
CustomerName = identity.User.Company.Caption,
|
||||||
Level = identity.User.Level,
|
Level = identity.User.Level,
|
||||||
Login = identity.User.Login,
|
Login = identity.User.Login,
|
||||||
Patronymic = identity.User.Patronymic,
|
Patronymic = identity.User.Patronymic,
|
||||||
@ -81,7 +81,7 @@ namespace AsbCloudInfrastructure.Services
|
|||||||
|
|
||||||
var user = new User
|
var user = new User
|
||||||
{
|
{
|
||||||
IdCustomer = userDto.IdCustomer,
|
IdCompany = userDto.IdCustomer,
|
||||||
IdRole = userDto.IdRole,
|
IdRole = userDto.IdRole,
|
||||||
Name = userDto.Name,
|
Name = userDto.Name,
|
||||||
Surname = userDto.Surname,
|
Surname = userDto.Surname,
|
||||||
@ -159,7 +159,7 @@ namespace AsbCloudInfrastructure.Services
|
|||||||
{
|
{
|
||||||
new Claim(ClaimsIdentity.DefaultNameClaimType, user.Login),
|
new Claim(ClaimsIdentity.DefaultNameClaimType, user.Login),
|
||||||
new Claim(ClaimsIdentity.DefaultRoleClaimType, user.Role?.Caption??"GUEST"),
|
new Claim(ClaimsIdentity.DefaultRoleClaimType, user.Role?.Caption??"GUEST"),
|
||||||
new Claim(claimNameIdCustomer, user.IdCustomer.ToString()),
|
new Claim(claimNameIdCustomer, user.IdCompany.ToString()),
|
||||||
};
|
};
|
||||||
var claimsIdentity = new ClaimsIdentity(claims, "Token", ClaimsIdentity.DefaultNameClaimType, ClaimsIdentity.DefaultRoleClaimType);
|
var claimsIdentity = new ClaimsIdentity(claims, "Token", ClaimsIdentity.DefaultNameClaimType, ClaimsIdentity.DefaultRoleClaimType);
|
||||||
return (claimsIdentity, user);
|
return (claimsIdentity, user);
|
||||||
|
@ -50,7 +50,7 @@ namespace AsbCloudInfrastructure.Services
|
|||||||
var newReportProperties = new Report
|
var newReportProperties = new Report
|
||||||
{
|
{
|
||||||
Name = newReportName,
|
Name = newReportName,
|
||||||
WellId = wellId,
|
IdWell = wellId,
|
||||||
Date = DateTime.Now,
|
Date = DateTime.Now,
|
||||||
Begin = begin,
|
Begin = begin,
|
||||||
End = end,
|
End = end,
|
||||||
@ -81,7 +81,7 @@ namespace AsbCloudInfrastructure.Services
|
|||||||
Id = r.Id,
|
Id = r.Id,
|
||||||
Name = Path.GetFileName(r.Name),
|
Name = Path.GetFileName(r.Name),
|
||||||
FullName = r.Name,
|
FullName = r.Name,
|
||||||
WellId = r.WellId,
|
WellId = r.IdWell,
|
||||||
Date = r.Date,
|
Date = r.Date,
|
||||||
Begin = r.Begin,
|
Begin = r.Begin,
|
||||||
End = r.End,
|
End = r.End,
|
||||||
@ -120,7 +120,7 @@ namespace AsbCloudInfrastructure.Services
|
|||||||
private IEnumerable<Report> GetSuitableReportsFromDb(int wellId, DateTime begin, DateTime end, int stepSeconds, int format)
|
private IEnumerable<Report> GetSuitableReportsFromDb(int wellId, DateTime begin, DateTime end, int stepSeconds, int format)
|
||||||
{
|
{
|
||||||
var suitableReportsNames = (from r in db.Reports
|
var suitableReportsNames = (from r in db.Reports
|
||||||
where r.WellId == wellId
|
where r.IdWell == wellId
|
||||||
&& r.Begin >= begin
|
&& r.Begin >= begin
|
||||||
&& r.End <= end
|
&& r.End <= end
|
||||||
&& r.Step <= stepSeconds
|
&& r.Step <= stepSeconds
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
using AsbCloudApp.Data;
|
using AsbCloudApp.Data;
|
||||||
|
using AsbCloudApp.Data.Analytics;
|
||||||
using AsbCloudApp.Services;
|
using AsbCloudApp.Services;
|
||||||
using AsbCloudDb.Model;
|
using AsbCloudDb.Model;
|
||||||
|
using AsbCloudDb.Model.Analytics;
|
||||||
using AsbCloudInfrastructure.Services.Cache;
|
using AsbCloudInfrastructure.Services.Cache;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using System;
|
using System;
|
||||||
@ -94,7 +96,7 @@ namespace AsbCloudInfrastructure.Services
|
|||||||
return dtos;
|
return dtos;
|
||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerable<ClusterAnalysisDto> GetAnalysis(int idCustomer, int clusterId)
|
public IEnumerable<WellDrillingStatDto> GetAnalysis(int idCustomer, int clusterId)
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
throw new NotImplementedException();
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
using AsbCloudApp.Data;
|
using AsbCloudApp.Data;
|
||||||
|
using AsbCloudApp.Data.Analytics;
|
||||||
using AsbCloudApp.Services;
|
using AsbCloudApp.Services;
|
||||||
|
using AsbCloudDb.Model.Analytics;
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
@ -66,7 +68,7 @@ namespace AsbCloudWebApi.Controllers
|
|||||||
/// <param name="clusterId"></param>
|
/// <param name="clusterId"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpGet("{clusterId}/Analysis")]
|
[HttpGet("{clusterId}/Analysis")]
|
||||||
[ProducesResponseType(typeof(IEnumerable<ClusterAnalysisDto>), (int)System.Net.HttpStatusCode.OK)]
|
[ProducesResponseType(typeof(IEnumerable<WellDrillingStatDto>), (int)System.Net.HttpStatusCode.OK)]
|
||||||
public IActionResult GetAnalysis(int clusterId)
|
public IActionResult GetAnalysis(int clusterId)
|
||||||
{
|
{
|
||||||
int? idCustomer = User.GetCustomerId();
|
int? idCustomer = User.GetCustomerId();
|
||||||
|
@ -7,7 +7,7 @@ namespace AsbCloudWebApi
|
|||||||
{
|
{
|
||||||
public static int? GetCustomerId(this ClaimsPrincipal user)
|
public static int? GetCustomerId(this ClaimsPrincipal user)
|
||||||
{
|
{
|
||||||
var claimIdCustomer = user.FindFirst(nameof(User.IdCustomer));
|
var claimIdCustomer = user.FindFirst(nameof(User.IdCompany));
|
||||||
if (claimIdCustomer is null)
|
if (claimIdCustomer is null)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
|
@ -10,9 +10,9 @@ namespace DataTable
|
|||||||
{
|
{
|
||||||
class Program
|
class Program
|
||||||
{
|
{
|
||||||
static void Main(string[] args)
|
static void Main(/*string[] args*/)
|
||||||
{
|
{
|
||||||
var listDtos = new List<TestDto>(100);
|
//var listDtos = new List<TestDto>(100);
|
||||||
|
|
||||||
/* *** Size of TestDto calc ***
|
/* *** Size of TestDto calc ***
|
||||||
*
|
*
|
||||||
@ -52,40 +52,40 @@ namespace DataTable
|
|||||||
* listBinBytes: 4366 (by dangerous BinaryFormatter)
|
* listBinBytes: 4366 (by dangerous BinaryFormatter)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
for (int i = 0; i < 100; i++)
|
//for (int i = 0; i < 100; i++)
|
||||||
listDtos.Add(new TestDto{
|
// listDtos.Add(new TestDto{
|
||||||
Date = DateTime.Now.AddSeconds(i),
|
// Date = DateTime.Now.AddSeconds(i),
|
||||||
Mode = 1,
|
// Mode = 1,
|
||||||
WellDepth = i * Math.PI
|
// WellDepth = i * Math.PI
|
||||||
});
|
// });
|
||||||
|
|
||||||
var tMapper = new TableMapper<TestDto>();
|
//var tMapper = new TableMapper<TestDto>();
|
||||||
|
|
||||||
var tab = tMapper.MakeTable(listDtos);
|
//var tab = tMapper.MakeTable(listDtos);
|
||||||
|
|
||||||
var e = tMapper.AsEnumerable(tab);
|
//var e = tMapper.AsEnumerable(tab);
|
||||||
|
|
||||||
var tabJson = JsonSerializer.Serialize(tab);
|
//var tabJson = JsonSerializer.Serialize(tab);
|
||||||
var listJson = JsonSerializer.Serialize(listDtos);
|
//var listJson = JsonSerializer.Serialize(listDtos);
|
||||||
|
|
||||||
var tabJsonBytes = JsonSerializer.SerializeToUtf8Bytes(tab);
|
//var tabJsonBytes = JsonSerializer.SerializeToUtf8Bytes(tab);
|
||||||
var listJsonBytes = JsonSerializer.SerializeToUtf8Bytes(listDtos);
|
//var listJsonBytes = JsonSerializer.SerializeToUtf8Bytes(listDtos);
|
||||||
|
|
||||||
var formatter = new BinaryFormatter();
|
//var formatter = new BinaryFormatter();
|
||||||
var mem = new MemoryStream();
|
//var mem = new MemoryStream();
|
||||||
formatter.Serialize(mem, tab);
|
//formatter.Serialize(mem, tab);
|
||||||
var tabBinBytes = new byte[mem.Length];
|
//var tabBinBytes = new byte[mem.Length];
|
||||||
Array.Copy(mem.GetBuffer(), tabBinBytes, mem.Length);
|
//Array.Copy(mem.GetBuffer(), tabBinBytes, mem.Length);
|
||||||
|
|
||||||
mem = new MemoryStream();
|
//mem = new MemoryStream();
|
||||||
formatter.Serialize(mem, listDtos);
|
//formatter.Serialize(mem, listDtos);
|
||||||
var listBinBytes = new byte[mem.Length];
|
//var listBinBytes = new byte[mem.Length];
|
||||||
Array.Copy(mem.GetBuffer(), listBinBytes, mem.Length);
|
//Array.Copy(mem.GetBuffer(), listBinBytes, mem.Length);
|
||||||
|
|
||||||
Console.WriteLine($"tabJsonBytes:{tabJsonBytes.Length}");
|
//Console.WriteLine($"tabJsonBytes:{tabJsonBytes.Length}");
|
||||||
Console.WriteLine($"listJsonBytes:{listJsonBytes.Length}");
|
//Console.WriteLine($"listJsonBytes:{listJsonBytes.Length}");
|
||||||
Console.WriteLine($"tabBinBytes:{tabBinBytes.Length}");
|
//Console.WriteLine($"tabBinBytes:{tabBinBytes.Length}");
|
||||||
Console.WriteLine($"listBinBytes:{listBinBytes.Length}");
|
//Console.WriteLine($"listBinBytes:{listBinBytes.Length}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user