From 28851e5c444c12149f532d3cac2335d37fcb840b Mon Sep 17 00:00:00 2001 From: Olga Nemt Date: Tue, 28 May 2024 16:34:42 +0500 Subject: [PATCH] =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B8=20=D0=BF?= =?UTF-8?q?=D0=BE=20=D1=80=D0=B5=D0=B7=D1=83=D0=BB=D1=8C=D1=82=D0=B0=D1=82?= =?UTF-8?q?=D0=B0=D0=BC=20=D1=80=D0=B5=D0=B2=D1=8C=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProcessMapPlan/ProcessMapPlanBase.cs | 2 +- AsbCloudInfrastructure/DependencyInjection.cs | 7 +++++ .../Repository/ChangeLogRepositoryAbstract.cs | 19 +++++++++----- .../ProcessMapPlanBaseRepository.cs | 16 ++++++++---- .../Report/ProcessMapReportDrillingService.cs | 26 ++++++++----------- 5 files changed, 43 insertions(+), 27 deletions(-) diff --git a/AsbCloudDb/Model/ProcessMapPlan/ProcessMapPlanBase.cs b/AsbCloudDb/Model/ProcessMapPlan/ProcessMapPlanBase.cs index 47c45dd1..39fba936 100644 --- a/AsbCloudDb/Model/ProcessMapPlan/ProcessMapPlanBase.cs +++ b/AsbCloudDb/Model/ProcessMapPlan/ProcessMapPlanBase.cs @@ -24,7 +24,7 @@ public abstract class ProcessMapPlanBase : ChangeLogAbstract, IId, IWellRelated public virtual User Author { get; set; } = null!; [ForeignKey(nameof(IdEditor))] - public virtual User? Editor { get; set; } = null!; + public virtual User? Editor { get; set; } [ForeignKey(nameof(IdWellSectionType))] public virtual WellSectionType WellSectionType { get; set; } = null!; diff --git a/AsbCloudInfrastructure/DependencyInjection.cs b/AsbCloudInfrastructure/DependencyInjection.cs index 6b36d358..319b0bc2 100644 --- a/AsbCloudInfrastructure/DependencyInjection.cs +++ b/AsbCloudInfrastructure/DependencyInjection.cs @@ -16,6 +16,7 @@ using AsbCloudApp.Services.ProcessMaps.WellDrilling; using AsbCloudDb.Model; using AsbCloudDb.Model.DailyReports.Blocks.TimeBalance; using AsbCloudDb.Model.Manuals; +using AsbCloudDb.Model.ProcessMapPlan; using AsbCloudDb.Model.ProcessMaps; using AsbCloudDb.Model.Trajectory; using AsbCloudDb.Model.WellSections; @@ -62,6 +63,12 @@ namespace AsbCloudInfrastructure .ForType() .Ignore(source => source.Driller); +#pragma warning disable CS8603 // Possible null reference return. + TypeAdapterConfig.GlobalSettings.Default.Config + .ForType() + .Ignore(dst => dst.Author, dst => dst.Editor); +#pragma warning restore CS8603 // Possible null reference return. + TypeAdapterConfig.GlobalSettings.Default.Config .ForType() .MapWith((source) => source.DateTime); diff --git a/AsbCloudInfrastructure/Repository/ChangeLogRepositoryAbstract.cs b/AsbCloudInfrastructure/Repository/ChangeLogRepositoryAbstract.cs index cff7f61e..dddce26a 100644 --- a/AsbCloudInfrastructure/Repository/ChangeLogRepositoryAbstract.cs +++ b/AsbCloudInfrastructure/Repository/ChangeLogRepositoryAbstract.cs @@ -240,7 +240,7 @@ public abstract class ChangeLogRepositoryAbstract : ICh .ThenBy(e => e.Obsolete) .ThenBy(e => e.Id) .ToListAsync(token); - var dtos = entities.Select(e => Convert(e, offset)); + var dtos = entities.Select(e => ConvertChangeLogDto(e, offset)); return dtos; } @@ -256,7 +256,7 @@ public abstract class ChangeLogRepositoryAbstract : ICh .ToArrayAsync(token); TimeSpan offset = GetTimezoneOffset(request); - var dtos = entities.Select(e => e.Adapt()); + var dtos = entities.Select(e => Convert(e, offset)); return dtos; } @@ -275,14 +275,21 @@ public abstract class ChangeLogRepositoryAbstract : ICh return entity; } - protected virtual ChangeLogDto Convert(TEntity entity, TimeSpan offset) + protected virtual ChangeLogDto ConvertChangeLogDto(TEntity entity, TimeSpan offset) { - var dto = entity.Adapt>(); - dto.Creation = entity.Creation.ToOffset(offset); + var changeLogDto = entity.Adapt>(); + changeLogDto.Creation = entity.Creation.ToOffset(offset); if (entity.Obsolete.HasValue) - dto.Obsolete = entity.Obsolete.Value.ToOffset(offset); + changeLogDto.Obsolete = entity.Obsolete.Value.ToOffset(offset); + changeLogDto.Item = Convert(entity, offset); + return changeLogDto; + } + + protected virtual TDto Convert(TEntity entity, TimeSpan offset) + { + var dto = entity.Adapt(); return dto; } diff --git a/AsbCloudInfrastructure/Repository/ProcessMapPlanBaseRepository.cs b/AsbCloudInfrastructure/Repository/ProcessMapPlanBaseRepository.cs index a7807a62..5fa6a3b6 100644 --- a/AsbCloudInfrastructure/Repository/ProcessMapPlanBaseRepository.cs +++ b/AsbCloudInfrastructure/Repository/ProcessMapPlanBaseRepository.cs @@ -3,7 +3,6 @@ using AsbCloudApp.Requests; using AsbCloudApp.Services; using AsbCloudDb.Model; using AsbCloudDb.Model.ProcessMapPlan; -using Mapster; using Microsoft.EntityFrameworkCore; using System; using System.Linq; @@ -11,12 +10,12 @@ using System.Linq; namespace AsbCloudInfrastructure.Repository; public class ProcessMapPlanBaseRepository : ChangeLogRepositoryAbstract - where TDto : AsbCloudApp.Data.IId + where TDto : ProcessMapPlanBaseDto where TEntity : ProcessMapPlanBase { private readonly IWellService wellService; - public ProcessMapPlanBaseRepository(IAsbCloudDbContext context, IWellService wellService) + public ProcessMapPlanBaseRepository(IAsbCloudDbContext context, IWellService wellService) : base(context) { this.wellService = wellService; @@ -56,11 +55,18 @@ public class ProcessMapPlanBaseRepository : ChangeLogRepositoryAb return offset; } + protected override TDto Convert(TEntity entity, TimeSpan offset) + { + var dto = base.Convert(entity, offset); + dto.Section = entity.WellSectionType.Caption; + return dto; + } + protected override TEntity Convert(TDto dto) { var entity = base.Convert(dto); - entity.Author = null; - entity.Editor = null; + //entity.Author = null; + //entity.Editor = null; return entity; } } diff --git a/AsbCloudInfrastructure/Services/ProcessMaps/Report/ProcessMapReportDrillingService.cs b/AsbCloudInfrastructure/Services/ProcessMaps/Report/ProcessMapReportDrillingService.cs index f78d30dc..8a9b9008 100644 --- a/AsbCloudInfrastructure/Services/ProcessMaps/Report/ProcessMapReportDrillingService.cs +++ b/AsbCloudInfrastructure/Services/ProcessMaps/Report/ProcessMapReportDrillingService.cs @@ -48,13 +48,13 @@ public class ProcessMapReportDrillingService : IProcessMapReportDrillingService return Enumerable.Empty(); var requestProcessMapPlan = new ProcessMapPlanBaseRequestWithWell(idWell); - var processMapPlanWellDrillings = await processMapPlanBaseRepository.Get(requestProcessMapPlan, token); + var changeLogProcessMaps = await processMapPlanBaseRepository.GetChangeLog(requestProcessMapPlan, null, token); - if (!processMapPlanWellDrillings.Any()) + if (!changeLogProcessMaps.Any()) return Enumerable.Empty(); - var geDepth = processMapPlanWellDrillings.Min(p => p.DepthStart); - var leDepth = processMapPlanWellDrillings.Max(p => p.DepthEnd); + var geDepth = changeLogProcessMaps.Min(p => p.Item.DepthStart); + var leDepth = changeLogProcessMaps.Max(p => p.Item.DepthEnd); var requestWellOperationFact = new WellOperationRequest(new[] { idWell }) { @@ -86,7 +86,7 @@ public class ProcessMapReportDrillingService : IProcessMapReportDrillingService var result = CalcByIntervals( request, - processMapPlanWellDrillings, + changeLogProcessMaps, dataSaubStats, orderedWellOperations, wellOperationCategories, @@ -97,7 +97,7 @@ public class ProcessMapReportDrillingService : IProcessMapReportDrillingService private static IEnumerable CalcByIntervals( DataSaubStatRequest request, - IEnumerable processMapPlanWellDrillings, + IEnumerable> changeLogProcessMaps, Span dataSaubStats, IEnumerable wellOperations, IEnumerable wellOperationCategories, @@ -126,15 +126,11 @@ public class ProcessMapReportDrillingService : IProcessMapReportDrillingService } ProcessMapPlanDrillingDto? GetProcessMapPlan(int idWellSectionType, DataSaubStatDto data) - => processMapPlanWellDrillings - .Where(p => p.IdWellSectionType == idWellSectionType) - .Where(p => p.DepthStart <= data.DepthStart) - .Where(p => p.DepthEnd >= data.DepthStart) - .Where(p => IsModeMatchOperationCategory(p.IdMode, data.IdCategory)) - .Select(p => new ChangeLogDto() - { - Item = p, - }) + => changeLogProcessMaps + .Where(p => p.Item.IdWellSectionType == idWellSectionType) + .Where(p => p.Item.DepthStart <= data.DepthStart) + .Where(p => p.Item.DepthEnd >= data.DepthStart) + .Where(p => IsModeMatchOperationCategory(p.Item.IdMode, data.IdCategory)) .WhereActualAtMoment(data.DateStart) .Select(p => p.Item) .FirstOrDefault();