forked from ddrilling/AsbCloudServer
изменение моделей Dto
внесение корректировок в сервис DailyReport Убраны лишние комментарии и лишний код : -из классов создающих блоки отчета -из метода MakerExcel Добавлен блок Dimensionless
This commit is contained in:
parent
c6f089421a
commit
e16df1f705
@ -1,5 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
namespace AsbCloudApp.Data.DailyReportModel
|
namespace AsbCloudApp.Data.DailyReport
|
||||||
{
|
{
|
||||||
public class DailyReportBhaDto
|
public class DailyReportBhaDto
|
||||||
{
|
{
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
namespace AsbCloudApp.Data.DailyReportModel
|
namespace AsbCloudApp.Data.DailyReport
|
||||||
{
|
{
|
||||||
public class DailyReportDimensionlessDto
|
public class DailyReportDimensionlessDto
|
||||||
{
|
{
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
namespace AsbCloudApp.Data.DailyReportModel
|
namespace AsbCloudApp.Data.DailyReport
|
||||||
{
|
{
|
||||||
|
|
||||||
public class DailyReportHeadDto
|
public class DailyReportHeadDto
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data.DailyReportModel
|
namespace AsbCloudApp.Data.DailyReport
|
||||||
{
|
{
|
||||||
public class DailyReportSaubDto
|
public class DailyReportSaubDto
|
||||||
{
|
{
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
namespace AsbCloudApp.Data.DailyReportModel
|
namespace AsbCloudApp.Data.DailyReport
|
||||||
{
|
{
|
||||||
public class DailyReportSignDto
|
public class DailyReportSignDto
|
||||||
{
|
{
|
||||||
|
@ -1,216 +1,23 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using AsbCloudApp.Data.DailyReport;
|
||||||
|
|
||||||
|
|
||||||
namespace AsbCloudApp.Data
|
namespace AsbCloudApp.Data
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Параметры для формирования суточного рапорта
|
/// Блоки для формирования суточного рапорта
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class DailyReportDto
|
public class DailyReportDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
|
||||||
/// название скважины
|
|
||||||
/// </summary>
|
|
||||||
public string WellName { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
public DailyReportHeadDto HeadDto { get; set; }
|
||||||
/// название куста
|
public DailyReportBhaDto BhaDto { get; set; }
|
||||||
/// </summary>
|
public DailyReportDimensionlessDto DimensionlessDto { get; set; }
|
||||||
public string ClusterName { get; set; }
|
public DailyReportTimeBalanceDto TimeBalanceDto { get; set; }
|
||||||
|
public DailyReportSaubDto SaubDto { get; set; }
|
||||||
|
public DailyReportSignDto SignDto { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// заказчик
|
|
||||||
/// </summary>
|
|
||||||
public string Customer { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// подрядчик
|
|
||||||
/// </summary>
|
|
||||||
public string Contractor { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// дата рапорта
|
|
||||||
/// </summary>
|
|
||||||
public DateTime ReportDate { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// глубина забоя на дату начала интервала
|
|
||||||
/// </summary>
|
|
||||||
public double? WellDepthIntervalStartDate { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// глубина забоя на дату окончания интервала
|
|
||||||
/// </summary>
|
|
||||||
public double? WellDepthIntervalFinishDate { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Глубина забоя по стволу на окончание отчетного периода
|
|
||||||
/// </summary>
|
|
||||||
public double? BottomholeDepth { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Глубина забоя по вертикали на дату окончания отчетного периода
|
|
||||||
/// </summary>
|
|
||||||
public double? VerticalDepth { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Зенитный угол на дату окончания отчетного периода
|
|
||||||
/// </summary>
|
|
||||||
public double? ZenithAngle { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Азимутальный угол на дату окончания отчетного периода
|
|
||||||
/// </summary>
|
|
||||||
public double? AzimuthAngle { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// ФИО бурильщиков
|
|
||||||
/// </summary>
|
|
||||||
public string FirstDriller { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// ФИО бурильщиков
|
|
||||||
/// </summary>
|
|
||||||
public string SecondDriller { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Время работы АПД
|
|
||||||
/// </summary>
|
|
||||||
public double? WorkTimeSAUB { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Время работы спин мастер
|
|
||||||
/// </summary>
|
|
||||||
public double? WorkTimeSpinMaster { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Время работы torqueMaster
|
|
||||||
/// </summary>
|
|
||||||
public double? WorkTimeTorkMaster { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// количество метров пробуренных с включенным АПД
|
|
||||||
/// </summary>
|
|
||||||
public double? PenetrationSAUB { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// количество метров пробуренных с включенным Спин мастер
|
|
||||||
/// </summary>
|
|
||||||
public double? PenetrationSpinMaster { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// количество метров пробуренных с включенным torqueMaster
|
|
||||||
/// </summary>
|
|
||||||
public double? PenetrationTorkMaster { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Количество запусков МСЕ
|
|
||||||
/// </summary>
|
|
||||||
public int CountLaunchesMSE { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// КНБК описание
|
|
||||||
/// </summary>
|
|
||||||
public string BHADescription { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Нормативное время на одну операцию по подготовке ствола скважины к наращиванию
|
|
||||||
/// </summary>
|
|
||||||
public double? StandardTimeBarrelPreparation { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Нормативное время на одну операцию по наращиванию
|
|
||||||
/// </summary>
|
|
||||||
public double? StandardTimeExtension { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Фактическое время проработок при подготовке ствола скважины к наращиванию.
|
|
||||||
/// </summary>
|
|
||||||
public double? ActualTimeBarrelPreparation { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Фактическое время наращиваний
|
|
||||||
/// </summary>
|
|
||||||
public double? ActualTimeExtension { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Режимы бурения в роторе
|
|
||||||
/// </summary>
|
|
||||||
public IEnumerable<string> RotorDrillingModes { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// режимы бурения в слайде
|
|
||||||
/// </summary>
|
|
||||||
public IEnumerable<string> SlideDrillingModes { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Количество метров пробуренных в роторе за отчетный период
|
|
||||||
/// </summary>
|
|
||||||
public double? PenetrationInRotor { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Количество часов бурения в роторе за отчетный период
|
|
||||||
/// </summary>
|
|
||||||
public double? NumberDrillingHours { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// средний диф перепад в роторе за отчетный период
|
|
||||||
/// </summary>
|
|
||||||
public double? AVGDiffDropRotor { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// количество метров пробуренных в слайде за отчетный период
|
|
||||||
/// </summary>
|
|
||||||
public double? PenetrationInSlide { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// время бурения в роторе за отчетный период
|
|
||||||
/// </summary>
|
|
||||||
public double? DrillingTimeInRotor { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// средний диф. перепад в слайде за отчетный период
|
|
||||||
/// </summary>
|
|
||||||
public double? AVGDiffPressureSlide { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Плановая МСП за секцию
|
|
||||||
/// </summary>
|
|
||||||
public double? SectionROPPlan { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Общее время бурения за секцию
|
|
||||||
/// </summary>
|
|
||||||
public double? SectionDrillingTimeTotal { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Общая проходка за секцию
|
|
||||||
/// </summary>
|
|
||||||
public double? SectionPenetrationTotal { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Количество наращиваний за отчетный период
|
|
||||||
/// </summary>
|
|
||||||
public int ExtensionsCount { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Отклонение относительно ГГД
|
|
||||||
/// </summary>
|
|
||||||
public double? DeviationFromTVD { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// указываются все причины, которые влияют на снижение МСП.
|
|
||||||
/// </summary>
|
|
||||||
public string DeclinesReasonsROP { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// ФИО Мастера буровой
|
|
||||||
/// </summary>
|
|
||||||
public string DrillingMaster { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// ФИО супервайзера
|
|
||||||
/// </summary>
|
|
||||||
public string Supervisor { get; set; }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
namespace AsbCloudApp.Data.DailyReportModel
|
namespace AsbCloudDb.Model.DailyReportDB
|
||||||
{
|
{
|
||||||
public class DailyReportBha
|
public class DailyReportBha
|
||||||
{
|
{
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
using AsbCloudApp.Data.DailyReportModel;
|
|
||||||
namespace AsbCloudDb.Model.DailyReportDB
|
namespace AsbCloudDb.Model.DailyReportDB
|
||||||
{
|
{
|
||||||
#nullable disable
|
#nullable disable
|
||||||
@ -15,7 +15,7 @@ namespace AsbCloudDb.Model.DailyReportDB
|
|||||||
public DateTimeOffset StartDate { get; set; }
|
public DateTimeOffset StartDate { get; set; }
|
||||||
|
|
||||||
[Column("blockHead", TypeName = "jsonb"), Comment("1 блок параметров для отчёта")]
|
[Column("blockHead", TypeName = "jsonb"), Comment("1 блок параметров для отчёта")]
|
||||||
public DailyReportHead BlockHead { get; set; }
|
public DailyReportInfo BlockHead { get; set; }
|
||||||
|
|
||||||
[Column("blockBha", TypeName = "jsonb"), Comment("2 блок параметров для отчёта")]
|
[Column("blockBha", TypeName = "jsonb"), Comment("2 блок параметров для отчёта")]
|
||||||
public DailyReportBha BlockBha { get; set; }
|
public DailyReportBha BlockBha { get; set; }
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
namespace AsbCloudApp.Data.DailyReportModel
|
namespace AsbCloudDb.Model.DailyReportDB
|
||||||
{
|
{
|
||||||
public class DailyReportDimensionless
|
public class DailyReportDimensionless
|
||||||
{
|
{
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
namespace AsbCloudApp.Data.DailyReportModel
|
namespace AsbCloudDb.Model.DailyReportDB
|
||||||
{
|
{
|
||||||
public class DailyReportHead
|
public class DailyReportHead
|
||||||
{
|
{
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace AsbCloudApp.Data.DailyReportModel
|
namespace AsbCloudDb.Model.DailyReportDB
|
||||||
{
|
{
|
||||||
public class DailyReportSaub
|
public class DailyReportSaub
|
||||||
{
|
{
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
namespace AsbCloudApp.Data.DailyReportModel
|
namespace AsbCloudDb.Model.DailyReportDB
|
||||||
{
|
{
|
||||||
public class DailyReportSign
|
public class DailyReportSign
|
||||||
{
|
{
|
||||||
|
103
AsbCloudDb/Model/DailyReportDB/DailyReportTimeBalance.cs
Normal file
103
AsbCloudDb/Model/DailyReportDB/DailyReportTimeBalance.cs
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
using System;
|
||||||
|
namespace AsbCloudDb.Model.DailyReportDB
|
||||||
|
{
|
||||||
|
public class DailyReportTimeBalance
|
||||||
|
{
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Бурение
|
||||||
|
/// </summary>
|
||||||
|
public string Drilling { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Промывка
|
||||||
|
/// </summary>
|
||||||
|
public string Flushing { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Наращивание
|
||||||
|
/// </summary>
|
||||||
|
public string Building { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Проработка
|
||||||
|
/// </summary>
|
||||||
|
public string Elaboration { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Расширка
|
||||||
|
/// </summary>
|
||||||
|
public string Extension { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Ремонт
|
||||||
|
/// </summary>
|
||||||
|
public string Repair { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// КНБК
|
||||||
|
/// </summary>
|
||||||
|
public string Knbk { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// СПО
|
||||||
|
/// </summary>
|
||||||
|
public string Spo { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ПЗР
|
||||||
|
/// </summary>
|
||||||
|
public string Pzr { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ПВО
|
||||||
|
/// </summary>
|
||||||
|
public string Pvo { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ПГР
|
||||||
|
/// </summary>
|
||||||
|
public string Pgr { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ГИС
|
||||||
|
/// </summary>
|
||||||
|
public string Gis { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ОЗЦ
|
||||||
|
/// </summary>
|
||||||
|
public string Ozc { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Тех. работы
|
||||||
|
/// </summary>
|
||||||
|
public string EngineeringWorks { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Снятие замера
|
||||||
|
/// </summary>
|
||||||
|
public string TakingMeasure { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Цементирование
|
||||||
|
/// </summary>
|
||||||
|
public string Cementing { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Простой
|
||||||
|
/// </summary>
|
||||||
|
public string Simple { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// НПВ
|
||||||
|
/// </summary>
|
||||||
|
public string Npv { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,215 +1,18 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using AsbCloudDb.Model.DailyReportDB;
|
||||||
|
|
||||||
namespace AsbCloudDb.Model
|
namespace AsbCloudDb.Model
|
||||||
{
|
{
|
||||||
#nullable disable
|
#nullable disable
|
||||||
public class DailyReportInfo
|
public class DailyReportInfo
|
||||||
{
|
{
|
||||||
/// <summary>
|
public DailyReportHead HeadInfo { get; set; }
|
||||||
/// название скважины
|
public DailyReportBha BhaDto { get; set; }
|
||||||
/// </summary>
|
public DailyReportDimensionless DimensionlessInfo { get; set; }
|
||||||
public string WellName { get; set; }
|
public DailyReportTimeBalance TimeBalanceInfo { get; set; }
|
||||||
|
public DailyReportSaub SaubInfo { get; set; }
|
||||||
/// <summary>
|
public DailyReportSign SignInfo { get; set; }
|
||||||
/// название куста
|
|
||||||
/// </summary>
|
|
||||||
public string ClusterName { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// заказчик
|
|
||||||
/// </summary>
|
|
||||||
public string Customer { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// подрядчик
|
|
||||||
/// </summary>
|
|
||||||
public string Contractor { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// дата рапорта
|
|
||||||
/// </summary>
|
|
||||||
public DateTimeOffset ReportDate { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// глубина забоя на дату начала интервала
|
|
||||||
/// </summary>
|
|
||||||
public double? WellDepthIntervalStartDate { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// глубина забоя на дату окончания интервала
|
|
||||||
/// </summary>
|
|
||||||
public double? WellDepthIntervalFinishDate { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Глубина забоя по стволу на окончание отчетного периода
|
|
||||||
/// </summary>
|
|
||||||
public double? BottomholeDepth { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Глубина забоя по вертикали на дату окончания отчетного периода
|
|
||||||
/// </summary>
|
|
||||||
public double? VerticalDepth { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Зенитный угол на дату окончания отчетного периода
|
|
||||||
/// </summary>
|
|
||||||
public double? ZenithAngle { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Азимутальный угол на дату окончания отчетного периода
|
|
||||||
/// </summary>
|
|
||||||
public double? AzimuthAngle { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// ФИО бурильщиков
|
|
||||||
/// </summary>
|
|
||||||
public string FirstDriller { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// ФИО бурильщиков
|
|
||||||
/// </summary>
|
|
||||||
public string SecondDriller { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Время работы АПД
|
|
||||||
/// </summary>
|
|
||||||
public double? WorkTimeSAUB { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Время работы спин мастер
|
|
||||||
/// </summary>
|
|
||||||
public double? WorkTimeSpinMaster { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Время работы torqueMaster
|
|
||||||
/// </summary>
|
|
||||||
public double? WorkTimeTorkMaster { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// количество метров пробуренных с включенным АПД
|
|
||||||
/// </summary>
|
|
||||||
public double? PenetrationSAUB { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// количество метров пробуренных с включенным Спин мастер
|
|
||||||
/// </summary>
|
|
||||||
public double? PenetrationSpinMaster { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// количество метров пробуренных с включенным torqueMaster
|
|
||||||
/// </summary>
|
|
||||||
public double? PenetrationTorkMaster { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Количество запусков МСЕ
|
|
||||||
/// </summary>
|
|
||||||
public int CountLaunchesMSE { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// КНБК описание
|
|
||||||
/// </summary>
|
|
||||||
public string BHADescription { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Нормативное время на одну операцию по подготовке ствола скважины к наращиванию
|
|
||||||
/// </summary>
|
|
||||||
public double? StandardTimeBarrelPreparation { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Нормативное время на одну операцию по наращиванию
|
|
||||||
/// </summary>
|
|
||||||
public double? StandardTimeExtension { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Фактическое время проработок при подготовке ствола скважины к наращиванию.
|
|
||||||
/// </summary>
|
|
||||||
public double? ActualTimeBarrelPreparation { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Фактическое время наращиваний
|
|
||||||
/// </summary>
|
|
||||||
public double? ActualTimeExtension { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Режимы бурения в роторе
|
|
||||||
/// </summary>
|
|
||||||
public IEnumerable<string> RotorDrillingModes { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// режимы бурения в слайде
|
|
||||||
/// </summary>
|
|
||||||
public IEnumerable<string> SlideDrillingModes { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Количество метров пробуренных в роторе за отчетный период
|
|
||||||
/// </summary>
|
|
||||||
public double? PenetrationInRotor { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Количество часов бурения в роторе за отчетный период
|
|
||||||
/// </summary>
|
|
||||||
public double? NumberDrillingHours { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// средний диф перепад в роторе за отчетный период
|
|
||||||
/// </summary>
|
|
||||||
public double? AVGDiffDropRotor { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// количество метров пробуренных в слайде за отчетный период
|
|
||||||
/// </summary>
|
|
||||||
public double? PenetrationInSlide { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// время бурения в роторе за отчетный период
|
|
||||||
/// </summary>
|
|
||||||
public double? DrillingTimeInRotor { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// средний диф перепад в слайде за отчетный период
|
|
||||||
/// </summary>
|
|
||||||
public double? AVGDiffPressureSlide { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Плановая МСП за секцию
|
|
||||||
/// </summary>
|
|
||||||
public double? SectionROPPlan { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Общее время бурения за секцию
|
|
||||||
/// </summary>
|
|
||||||
public double? SectionDrillingTimeTotal { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Общая проходка за секцию
|
|
||||||
/// </summary>
|
|
||||||
public double? SectionPenetrationTotal { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Количество наращиваний за отчетный период
|
|
||||||
/// </summary>
|
|
||||||
public int ExtensionsCount { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Отклонение относительно ГГД
|
|
||||||
/// </summary>
|
|
||||||
public double? DeviationFromTVD { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// указываются все причины, которые влияют на снижение МСП.
|
|
||||||
/// </summary>
|
|
||||||
public string DeclinesReasonsROP { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// ФИО Мастера буровой
|
|
||||||
/// </summary>
|
|
||||||
public string DrillingMaster { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// ФИО супервайзера
|
|
||||||
/// </summary>
|
|
||||||
public string Supervisor { get; set; }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,95 +1,7 @@
|
|||||||
using AsbCloudApp.Data.DailyReportModel;
|
using ClosedXML.Excel;
|
||||||
using AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks;
|
|
||||||
using ClosedXML.Excel;
|
|
||||||
using System.Linq;
|
|
||||||
|
|
||||||
namespace AsbCloudInfrastructure.Services.DailyReport
|
namespace AsbCloudInfrastructure.Services.DailyReport
|
||||||
{
|
{
|
||||||
internal class BlockHeader : BlockAbstract
|
|
||||||
{
|
|
||||||
private readonly DailyReportHeadDto blockDto;
|
|
||||||
|
|
||||||
public CellAddress AddressTitle { get; }
|
|
||||||
public CellAddress AddressCustomer { get; }
|
|
||||||
public CellAddress AddressDriller { get; }
|
|
||||||
public CellAddress AddressPeriod { get; }
|
|
||||||
public CellAddress AddressExampleData1 { get; }
|
|
||||||
public CellAddress[] AddressesExampleDataArray { get; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Значение нижняя правая ячейка блока
|
|
||||||
/// </summary>
|
|
||||||
public override CellAddress AddressBlockBegin { get; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Значение нижняя правая ячейка блока
|
|
||||||
/// </summary>
|
|
||||||
public override CellAddress AddressBlockEnd { get; }
|
|
||||||
|
|
||||||
public BlockHeader(CellAddress addressBlockBegin, DailyReportHeadDto blockDto)
|
|
||||||
{
|
|
||||||
AddressBlockBegin = addressBlockBegin.Copy();
|
|
||||||
|
|
||||||
this.blockDto = blockDto;
|
|
||||||
AddressTitle = addressBlockBegin + (0, 0);
|
|
||||||
AddressCustomer = addressBlockBegin + (1,0);
|
|
||||||
AddressDriller = addressBlockBegin + (2, 0);
|
|
||||||
AddressPeriod = addressBlockBegin + (3, 0);
|
|
||||||
AddressExampleData1 = addressBlockBegin + (5, 0);
|
|
||||||
|
|
||||||
AddressesExampleDataArray = new CellAddress[5];
|
|
||||||
for (int i = 0; i < 5; i++)
|
|
||||||
AddressesExampleDataArray[i] = addressBlockBegin + (6 + i, 0);
|
|
||||||
|
|
||||||
AddressBlockEnd = AddressesExampleDataArray.Last();
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void Draw(IXLWorksheet sheet)
|
|
||||||
{
|
|
||||||
// значение в одну ячейку
|
|
||||||
sheet.Cell(AddressTitle)
|
|
||||||
._SetValue($"Суточная сводка бурения скважины: {blockDto.WellName}, куст: {blockDto.ClusterName}")
|
|
||||||
.Style.SetH1();
|
|
||||||
|
|
||||||
// значение в несколько ячеек с объединением
|
|
||||||
sheet._Range(AddressCustomer, AddressCustomer + (0,7))
|
|
||||||
._SetValue($"Заказчик: {blockDto.Customer}");
|
|
||||||
|
|
||||||
sheet.Cell(AddressDriller)
|
|
||||||
._SetValue($"Подрядчик: {blockDto.Contractor}");
|
|
||||||
|
|
||||||
sheet._Range(AddressExampleData1, AddressExampleData1 + (0, 4))
|
|
||||||
._SetValue(blockDto.BottomholeDepth); // для примера с будущей формулой
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
internal class BlockWithFormula : BlockAbstract
|
|
||||||
{
|
|
||||||
private readonly HeadBlock blockHeader;
|
|
||||||
|
|
||||||
public override CellAddress AddressBlockBegin { get; }
|
|
||||||
|
|
||||||
public override CellAddress AddressBlockEnd { get; }
|
|
||||||
|
|
||||||
public CellAddress AddressFomulaExample { get; set; }
|
|
||||||
|
|
||||||
public BlockWithFormula(CellAddress addressBlockBegin, HeadBlock blockHeader)
|
|
||||||
{
|
|
||||||
AddressFomulaExample = addressBlockBegin + (0, 0);
|
|
||||||
AddressBlockBegin = addressBlockBegin.Copy();
|
|
||||||
AddressBlockEnd = addressBlockBegin + (1, 0);
|
|
||||||
this.blockHeader = blockHeader;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void Draw(IXLWorksheet sheet)
|
|
||||||
{
|
|
||||||
// var formula = string.Format("{0}/5", blockHeader.AddressExampleData1.ToString());
|
|
||||||
|
|
||||||
// sheet.Cell(AddressFomulaExample)
|
|
||||||
// .SetFormulaA1(formula);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
abstract class BlockAbstract
|
abstract class BlockAbstract
|
||||||
{
|
{
|
||||||
public abstract CellAddress AddressBlockBegin { get; }
|
public abstract CellAddress AddressBlockBegin { get; }
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
using AsbCloudApp.Data.DailyReportModel;
|
using AsbCloudApp.Data.DailyReport;
|
||||||
using ClosedXML.Excel;
|
using ClosedXML.Excel;
|
||||||
|
|
||||||
namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
|
namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
|
||||||
@ -10,24 +10,14 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
|
|||||||
private readonly DailyReportBhaDto blockDto;
|
private readonly DailyReportBhaDto blockDto;
|
||||||
|
|
||||||
public CellAddress AddressBhaDescription { get; }
|
public CellAddress AddressBhaDescription { get; }
|
||||||
|
|
||||||
public CellAddress AddressOperationTitle { get; }
|
public CellAddress AddressOperationTitle { get; }
|
||||||
public CellAddress AddressDurationTitle { get; }
|
public CellAddress AddressDurationTitle { get; }
|
||||||
public CellAddress AddressTotalTitle { get; }
|
public CellAddress AddressTotalTitle { get; }
|
||||||
|
|
||||||
public CellAddress[] AddressOperationData { get; }
|
public CellAddress[] AddressOperationData { get; }
|
||||||
public CellAddress[] AddressDurationDataStart { get; }
|
public CellAddress[] AddressDurationDataStart { get; }
|
||||||
public CellAddress[] AddressDurationDataFinish { get; }
|
public CellAddress[] AddressDurationDataFinish { get; }
|
||||||
public CellAddress[] AddressTotaData { get; }
|
public CellAddress[] AddressTotaData { get; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Значение нижняя правая ячейка блока
|
|
||||||
/// </summary>
|
|
||||||
public override CellAddress AddressBlockBegin { get; }
|
public override CellAddress AddressBlockBegin { get; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Значение нижняя правая ячейка блока
|
|
||||||
/// </summary>
|
|
||||||
public override CellAddress AddressBlockEnd { get; }
|
public override CellAddress AddressBlockEnd { get; }
|
||||||
|
|
||||||
public BhaBlock(CellAddress addressBlockBegin, DailyReportBhaDto blockDto)
|
public BhaBlock(CellAddress addressBlockBegin, DailyReportBhaDto blockDto)
|
||||||
@ -40,36 +30,29 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
|
|||||||
AddressDurationTitle = addressBlockBegin + (3, 5);
|
AddressDurationTitle = addressBlockBegin + (3, 5);
|
||||||
AddressTotalTitle = addressBlockBegin + (3, 7);
|
AddressTotalTitle = addressBlockBegin + (3, 7);
|
||||||
AddressOperationData = new CellAddress[5];
|
AddressOperationData = new CellAddress[5];
|
||||||
|
|
||||||
AddressOperationData[0] = addressBlockBegin + (4, 0);
|
AddressOperationData[0] = addressBlockBegin + (4, 0);
|
||||||
AddressOperationData[1] = addressBlockBegin + (5, 0);
|
AddressOperationData[1] = addressBlockBegin + (5, 0);
|
||||||
AddressOperationData[2] = addressBlockBegin + (6, 0);
|
AddressOperationData[2] = addressBlockBegin + (6, 0);
|
||||||
AddressOperationData[3] = addressBlockBegin + (7, 0);
|
AddressOperationData[3] = addressBlockBegin + (7, 0);
|
||||||
AddressOperationData[4] = addressBlockBegin + (8, 0);
|
AddressOperationData[4] = addressBlockBegin + (8, 0);
|
||||||
|
|
||||||
AddressDurationDataStart = new CellAddress[5];
|
AddressDurationDataStart = new CellAddress[5];
|
||||||
AddressDurationDataStart[0] = addressBlockBegin + (4, 5);
|
AddressDurationDataStart[0] = addressBlockBegin + (4, 5);
|
||||||
AddressDurationDataStart[1] = addressBlockBegin + (5, 5);
|
AddressDurationDataStart[1] = addressBlockBegin + (5, 5);
|
||||||
AddressDurationDataStart[2] = addressBlockBegin + (6, 5);
|
AddressDurationDataStart[2] = addressBlockBegin + (6, 5);
|
||||||
AddressDurationDataStart[3] = addressBlockBegin + (7, 5);
|
AddressDurationDataStart[3] = addressBlockBegin + (7, 5);
|
||||||
AddressDurationDataStart[4] = addressBlockBegin + (8, 5);
|
AddressDurationDataStart[4] = addressBlockBegin + (8, 5);
|
||||||
|
|
||||||
AddressDurationDataFinish = new CellAddress[5];
|
AddressDurationDataFinish = new CellAddress[5];
|
||||||
AddressDurationDataFinish[0] = addressBlockBegin + (4, 6);
|
AddressDurationDataFinish[0] = addressBlockBegin + (4, 6);
|
||||||
AddressDurationDataFinish[1] = addressBlockBegin + (5, 6);
|
AddressDurationDataFinish[1] = addressBlockBegin + (5, 6);
|
||||||
AddressDurationDataFinish[2] = addressBlockBegin + (6, 6);
|
AddressDurationDataFinish[2] = addressBlockBegin + (6, 6);
|
||||||
AddressDurationDataFinish[3] = addressBlockBegin + (7, 6);
|
AddressDurationDataFinish[3] = addressBlockBegin + (7, 6);
|
||||||
AddressDurationDataFinish[4] = addressBlockBegin + (8, 6);
|
AddressDurationDataFinish[4] = addressBlockBegin + (8, 6);
|
||||||
|
|
||||||
AddressTotaData = new CellAddress[5];
|
AddressTotaData = new CellAddress[5];
|
||||||
AddressTotaData[0] = addressBlockBegin + (4, 7);
|
AddressTotaData[0] = addressBlockBegin + (4, 7);
|
||||||
AddressTotaData[1] = addressBlockBegin + (5, 7);
|
AddressTotaData[1] = addressBlockBegin + (5, 7);
|
||||||
AddressTotaData[2] = addressBlockBegin + (6, 7);
|
AddressTotaData[2] = addressBlockBegin + (6, 7);
|
||||||
AddressTotaData[3] = addressBlockBegin + (7, 7);
|
AddressTotaData[3] = addressBlockBegin + (7, 7);
|
||||||
AddressTotaData[4] = addressBlockBegin + (8, 7);
|
AddressTotaData[4] = addressBlockBegin + (8, 7);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
AddressBlockEnd = AddressTotaData[4];
|
AddressBlockEnd = AddressTotaData[4];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -83,15 +66,12 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
|
|||||||
|
|
||||||
sheet._Range(AddressBhaDescription, AddressBhaDescription + (0, 7))
|
sheet._Range(AddressBhaDescription, AddressBhaDescription + (0, 7))
|
||||||
._SetValue($"{blockDto.BHADescription}");
|
._SetValue($"{blockDto.BHADescription}");
|
||||||
|
|
||||||
|
|
||||||
sheet._Range(AddressOperationTitle, AddressOperationTitle + (0, 4))
|
sheet._Range(AddressOperationTitle, AddressOperationTitle + (0, 4))
|
||||||
._SetValue("Выполняемые операции в отчетный период, комментарии:");
|
._SetValue("Выполняемые операции в отчетный период, комментарии:");
|
||||||
sheet._Range(AddressDurationTitle, AddressDurationTitle + (0, 1))
|
sheet._Range(AddressDurationTitle, AddressDurationTitle + (0, 1))
|
||||||
._SetValue("Продолжительность, ч. ");
|
._SetValue("Продолжительность, ч. ");
|
||||||
sheet.Cell(AddressTotalTitle)
|
sheet.Cell(AddressTotalTitle)
|
||||||
._SetValue("Итого");
|
._SetValue("Итого");
|
||||||
|
|
||||||
sheet._Range(AddressOperationData[0], AddressOperationData[0] + (0, 4))
|
sheet._Range(AddressOperationData[0], AddressOperationData[0] + (0, 4))
|
||||||
._SetValue("Бурение с наращиваниями в инт. 2195-2763м.");
|
._SetValue("Бурение с наращиваниями в инт. 2195-2763м.");
|
||||||
sheet.Cell(AddressDurationDataStart[0])
|
sheet.Cell(AddressDurationDataStart[0])
|
||||||
@ -100,7 +80,6 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
|
|||||||
._SetValue($"{blockDto.ExtensionDrillingOneFinish}");
|
._SetValue($"{blockDto.ExtensionDrillingOneFinish}");
|
||||||
sheet.Cell(AddressTotaData[0])
|
sheet.Cell(AddressTotaData[0])
|
||||||
.SetFormulaA1($"{FormulaBhaBlock(AddressDurationDataStart[0], AddressDurationDataFinish[0])}");
|
.SetFormulaA1($"{FormulaBhaBlock(AddressDurationDataStart[0], AddressDurationDataFinish[0])}");
|
||||||
|
|
||||||
sheet._Range(AddressOperationData[1], AddressOperationData[1] + (0, 4))
|
sheet._Range(AddressOperationData[1], AddressOperationData[1] + (0, 4))
|
||||||
._SetValue("Промывка.");
|
._SetValue("Промывка.");
|
||||||
sheet.Cell(AddressDurationDataStart[1])
|
sheet.Cell(AddressDurationDataStart[1])
|
||||||
@ -109,7 +88,6 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
|
|||||||
._SetValue($"{blockDto.SluiceBegin}");
|
._SetValue($"{blockDto.SluiceBegin}");
|
||||||
sheet.Cell(AddressTotaData[1])
|
sheet.Cell(AddressTotaData[1])
|
||||||
.SetFormulaA1($"{FormulaBhaBlock(AddressDurationDataStart[1], AddressDurationDataFinish[1])}");
|
.SetFormulaA1($"{FormulaBhaBlock(AddressDurationDataStart[1], AddressDurationDataFinish[1])}");
|
||||||
|
|
||||||
sheet._Range(AddressOperationData[2], AddressOperationData[2] + (0, 4))
|
sheet._Range(AddressOperationData[2], AddressOperationData[2] + (0, 4))
|
||||||
._SetValue("Подъем КНБК в инт. 2763-2442м.");
|
._SetValue("Подъем КНБК в инт. 2763-2442м.");
|
||||||
sheet.Cell(AddressDurationDataStart[2])
|
sheet.Cell(AddressDurationDataStart[2])
|
||||||
@ -118,7 +96,6 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
|
|||||||
._SetValue($"{blockDto.ClimbFinish}");
|
._SetValue($"{blockDto.ClimbFinish}");
|
||||||
sheet.Cell(AddressTotaData[2])
|
sheet.Cell(AddressTotaData[2])
|
||||||
.SetFormulaA1($"{FormulaBhaBlock(AddressDurationDataStart[2], AddressDurationDataFinish[2])}");
|
.SetFormulaA1($"{FormulaBhaBlock(AddressDurationDataStart[2], AddressDurationDataFinish[2])}");
|
||||||
|
|
||||||
sheet._Range(AddressOperationData[3], AddressOperationData[3] + (0, 4))
|
sheet._Range(AddressOperationData[3], AddressOperationData[3] + (0, 4))
|
||||||
._SetValue("Спуск КНБК в инт. 2442-2763м.");
|
._SetValue("Спуск КНБК в инт. 2442-2763м.");
|
||||||
sheet.Cell(AddressDurationDataStart[3])
|
sheet.Cell(AddressDurationDataStart[3])
|
||||||
@ -127,7 +104,6 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
|
|||||||
._SetValue($"{blockDto.DescentFinish}");
|
._SetValue($"{blockDto.DescentFinish}");
|
||||||
sheet.Cell(AddressTotaData[3])
|
sheet.Cell(AddressTotaData[3])
|
||||||
.SetFormulaA1($"{FormulaBhaBlock(AddressDurationDataStart[3], AddressDurationDataFinish[3])}");
|
.SetFormulaA1($"{FormulaBhaBlock(AddressDurationDataStart[3], AddressDurationDataFinish[3])}");
|
||||||
|
|
||||||
sheet._Range(AddressOperationData[4], AddressOperationData[4] + (0, 4))
|
sheet._Range(AddressOperationData[4], AddressOperationData[4] + (0, 4))
|
||||||
._SetValue("Бурение с наращиваниями в инт. 2763-2850м.");
|
._SetValue("Бурение с наращиваниями в инт. 2763-2850м.");
|
||||||
sheet.Cell(AddressDurationDataStart[4])
|
sheet.Cell(AddressDurationDataStart[4])
|
||||||
@ -136,8 +112,6 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
|
|||||||
._SetValue($"{blockDto.ExtensionDrillingTwoFinish}");
|
._SetValue($"{blockDto.ExtensionDrillingTwoFinish}");
|
||||||
sheet.Cell(AddressTotaData[4])
|
sheet.Cell(AddressTotaData[4])
|
||||||
.SetFormulaA1($"{FormulaBhaBlock(AddressDurationDataStart[4], AddressDurationDataFinish[4])}");
|
.SetFormulaA1($"{FormulaBhaBlock(AddressDurationDataStart[4], AddressDurationDataFinish[4])}");
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
using AsbCloudApp.Data.DailyReportModel;
|
using AsbCloudApp.Data.DailyReport;
|
||||||
using ClosedXML.Excel;
|
using ClosedXML.Excel;
|
||||||
|
|
||||||
namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
|
namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
|
||||||
@ -9,50 +9,106 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
|
|||||||
{
|
{
|
||||||
private readonly DailyReportDimensionlessDto blockDto;
|
private readonly DailyReportDimensionlessDto blockDto;
|
||||||
|
|
||||||
public CellAddress AddressBhaDescription { get; }
|
private readonly SaubBlock saubBlock;
|
||||||
|
public CellAddress AddressDimensionTitle { get; }
|
||||||
|
public CellAddress AddressPreparationTitle { get; }
|
||||||
public CellAddress[] AddressPeriodTableDataArray { get; }
|
public CellAddress AddressExtensionTitle { get; }
|
||||||
|
public CellAddress AddressPreparationDescription { get; }
|
||||||
/// <summary>
|
public CellAddress AddressExtensionDescription { get; }
|
||||||
/// Значение нижняя правая ячейка блока
|
public CellAddress[] AddressPreparationHead { get; }
|
||||||
/// </summary>
|
public CellAddress[] AddressPreparationValue { get; }
|
||||||
|
public CellAddress[] AddressExtensionHead { get; }
|
||||||
|
public CellAddress[] AddressExtensionValue { get; }
|
||||||
|
public CellAddress AddressBlockFormula { get; }
|
||||||
public override CellAddress AddressBlockBegin { get; }
|
public override CellAddress AddressBlockBegin { get; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Значение нижняя правая ячейка блока
|
|
||||||
/// </summary>
|
|
||||||
public override CellAddress AddressBlockEnd { get; }
|
public override CellAddress AddressBlockEnd { get; }
|
||||||
|
|
||||||
public DimensionlessBlock(CellAddress addressBlockBegin, DailyReportDimensionlessDto blockDto)
|
public DimensionlessBlock(CellAddress addressBlockBegin, DailyReportDimensionlessDto blockDto)
|
||||||
{
|
{
|
||||||
AddressBlockBegin = addressBlockBegin.Copy();
|
AddressBlockBegin = addressBlockBegin.Copy();
|
||||||
this.blockDto = blockDto;
|
this.blockDto = blockDto;
|
||||||
AddressBhaDescription = addressBlockBegin + (0, 0);
|
AddressDimensionTitle = addressBlockBegin + (2, 3);
|
||||||
|
AddressPreparationTitle = addressBlockBegin + (3, 1);
|
||||||
|
AddressExtensionTitle = addressBlockBegin + (3, 4);
|
||||||
|
AddressPreparationHead = new CellAddress[4];
|
||||||
|
AddressPreparationHead[0] = addressBlockBegin + (4, 1);
|
||||||
|
AddressPreparationHead[1] = addressBlockBegin + (5, 1);
|
||||||
|
AddressPreparationHead[2] = addressBlockBegin + (6, 1);
|
||||||
|
AddressPreparationHead[3] = addressBlockBegin + (7, 1);
|
||||||
|
AddressPreparationValue = new CellAddress[4];
|
||||||
|
AddressPreparationValue[0] = addressBlockBegin + (4, 3);
|
||||||
|
AddressPreparationValue[1] = addressBlockBegin + (5, 3);
|
||||||
|
AddressPreparationValue[2] = addressBlockBegin + (6, 3);
|
||||||
|
AddressPreparationValue[3] = addressBlockBegin + (7, 3);
|
||||||
|
AddressPreparationDescription = addressBlockBegin + (8, 1);
|
||||||
|
AddressExtensionHead = new CellAddress[4];
|
||||||
|
AddressExtensionHead[0] = addressBlockBegin + (4, 4);
|
||||||
|
AddressExtensionHead[1] = addressBlockBegin + (5, 4);
|
||||||
|
AddressExtensionHead[2] = addressBlockBegin + (6, 4);
|
||||||
|
AddressExtensionHead[3] = addressBlockBegin + (7, 4);
|
||||||
|
AddressExtensionValue = new CellAddress[4];
|
||||||
|
AddressExtensionValue[0] = addressBlockBegin + (4, 6);
|
||||||
|
AddressExtensionValue[1] = addressBlockBegin + (5, 6);
|
||||||
|
AddressExtensionValue[2] = addressBlockBegin + (6, 6);
|
||||||
|
AddressExtensionValue[3] = addressBlockBegin + (7, 6);
|
||||||
|
AddressExtensionDescription = addressBlockBegin + (8, 4);
|
||||||
|
AddressBlockEnd = addressBlockBegin + (9,0);
|
||||||
|
}
|
||||||
|
|
||||||
//AddressExampleData1 = addressBlockBegin + (5, 0);
|
private string FormulaBlockPlan(CellAddress cellTarget)
|
||||||
|
{
|
||||||
|
return $"={cellTarget}/60*{saubBlock.AddressBhaWithFormula}";
|
||||||
|
}
|
||||||
|
|
||||||
|
private string FormulaBlockExcess(CellAddress cellFact, CellAddress cellPlan)
|
||||||
|
{
|
||||||
//AddressBlockEnd = AddressesExampleDataArray.Last();
|
return $"={cellFact}-{cellPlan}";
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Draw(IXLWorksheet sheet)
|
public override void Draw(IXLWorksheet sheet)
|
||||||
{
|
{
|
||||||
|
|
||||||
// sheet.Range(AddressBhaDescription, AddressBhaDescription + (0, 7))
|
sheet._Range(AddressDimensionTitle, AddressDimensionTitle + (0, 1))
|
||||||
// ._SetValue($"{blockDto.BHADescription}");
|
._SetValue("БЕЗМЕТРАЖНЫЕ РАБОТЫ");
|
||||||
|
sheet._Range(AddressPreparationTitle, AddressPreparationTitle + (0, 2))
|
||||||
|
._SetValue("Подготовка ствола скв. к наращиванию");
|
||||||
|
sheet._Range(AddressExtensionTitle, AddressExtensionTitle + (0, 2))
|
||||||
|
._SetValue("Наращивание");
|
||||||
|
sheet._Range(AddressPreparationHead[0], AddressPreparationHead[0] + (0, 1))
|
||||||
|
._SetValue("Норматив на одну операцию, (мин):");
|
||||||
|
sheet.Cell(AddressPreparationValue[0])
|
||||||
|
._SetValue($"{blockDto.StandardTimeBarrelPreparation}");
|
||||||
|
sheet._Range(AddressPreparationHead[1], AddressPreparationHead[1] + (0, 1))
|
||||||
// sheet._Range(AddressExampleData1, AddressExampleData1 + (0, 4))
|
._SetValue("Проработка при бур, план (ч):");
|
||||||
// ._SetValue(blockDto.BottomholeDepth); // для примера с будущей формулой
|
sheet.Cell(AddressPreparationValue[1])
|
||||||
|
.SetFormulaA1($"{FormulaBlockPlan(AddressPreparationValue[0])}");
|
||||||
|
sheet._Range(AddressPreparationHead[2], AddressPreparationHead[2] + (0, 1))
|
||||||
|
._SetValue("Проработка при бур, факт (ч):");
|
||||||
|
sheet.Cell(AddressPreparationValue[2])
|
||||||
|
._SetValue($"{blockDto.StandardTimeExtension}");
|
||||||
|
sheet._Range(AddressPreparationHead[3], AddressPreparationHead[3] + (0, 1))
|
||||||
|
._SetValue("Превышение плановых норм, (ч):");
|
||||||
|
sheet.Cell(AddressPreparationValue[3])
|
||||||
|
.SetFormulaA1($"{FormulaBlockExcess(AddressPreparationValue[2], AddressPreparationValue[1])}");
|
||||||
|
sheet._Range(AddressExtensionHead[0], AddressExtensionHead[0] + (0, 1))
|
||||||
|
._SetValue("Норматив на одну операцию, (мин):");
|
||||||
|
sheet.Cell(AddressExtensionValue[0])
|
||||||
|
._SetValue($"{blockDto.StandardTimeExtension}");
|
||||||
|
sheet._Range(AddressExtensionHead[1], AddressExtensionHead[1] + (0, 1))
|
||||||
|
._SetValue("Наращивание, план (ч):");
|
||||||
|
sheet.Cell(AddressExtensionValue[1])
|
||||||
|
.SetFormulaA1($"{FormulaBlockPlan(AddressExtensionValue[0])}");
|
||||||
|
sheet._Range(AddressExtensionHead[2], AddressExtensionHead[2] + (0, 1))
|
||||||
|
._SetValue("Наращивание, факт (ч):");
|
||||||
|
sheet.Cell(AddressExtensionValue[2])
|
||||||
|
._SetValue($"{blockDto.ActualTimeExtension}");
|
||||||
|
sheet._Range(AddressExtensionHead[3], AddressExtensionHead[3] + (0, 1))
|
||||||
|
._SetValue("Превышение плановых норм, (ч):");
|
||||||
|
sheet.Cell(AddressExtensionValue[3])
|
||||||
|
.SetFormulaA1($"{FormulaBlockExcess(AddressExtensionValue[2], AddressExtensionValue[1])}");
|
||||||
|
sheet._Range(AddressPreparationDescription, AddressPreparationDescription + (1, 2))
|
||||||
|
._SetValue("Подготовка ствола скв. к наращиванию");
|
||||||
|
sheet._Range(AddressExtensionDescription, AddressExtensionDescription + (1, 2))
|
||||||
|
._SetValue("Наращивание");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
using AsbCloudApp.Data.DailyReportModel;
|
using AsbCloudApp.Data.DailyReport;
|
||||||
using AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks;
|
|
||||||
using ClosedXML.Excel;
|
using ClosedXML.Excel;
|
||||||
using System.Linq;
|
|
||||||
|
|
||||||
namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
|
namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
|
||||||
{
|
{
|
||||||
@ -20,39 +18,21 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
|
|||||||
public CellAddress AddressDrillerOne { get; }
|
public CellAddress AddressDrillerOne { get; }
|
||||||
public CellAddress AddressDrillerTwoTitle { get; }
|
public CellAddress AddressDrillerTwoTitle { get; }
|
||||||
public CellAddress AddressDrillerTwo { get; }
|
public CellAddress AddressDrillerTwo { get; }
|
||||||
|
|
||||||
public CellAddress AddressWorkSaubTitle { get; }
|
public CellAddress AddressWorkSaubTitle { get; }
|
||||||
public CellAddress AddressWatchTitle { get; }
|
public CellAddress AddressWatchTitle { get; }
|
||||||
public CellAddress AddressMetreTitle { get; }
|
public CellAddress AddressMetreTitle { get; }
|
||||||
|
|
||||||
public CellAddress[] AddressWorkSaubData { get; }
|
public CellAddress[] AddressWorkSaubData { get; }
|
||||||
public CellAddress[] AddressWatchData { get; }
|
public CellAddress[] AddressWatchData { get; }
|
||||||
public CellAddress[] AddressMetreData { get; }
|
public CellAddress[] AddressMetreData { get; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public CellAddress[] AddressPeriodTableHeadArray { get; }
|
public CellAddress[] AddressPeriodTableHeadArray { get; }
|
||||||
public CellAddress[] AddressPeriodTableDataArray { get; }
|
public CellAddress[] AddressPeriodTableDataArray { get; }
|
||||||
|
|
||||||
public CellAddress[] AddressTrajectoryTableHeadArray { get; }
|
public CellAddress[] AddressTrajectoryTableHeadArray { get; }
|
||||||
public CellAddress[] AddressTrajectoryTableDataArray { get; }
|
public CellAddress[] AddressTrajectoryTableDataArray { get; }
|
||||||
/// <summary>
|
|
||||||
/// Значение нижняя правая ячейка блока
|
|
||||||
/// </summary>
|
|
||||||
public override CellAddress AddressBlockBegin { get; }
|
public override CellAddress AddressBlockBegin { get; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Значение нижняя правая ячейка блока
|
|
||||||
/// </summary>
|
|
||||||
public override CellAddress AddressBlockEnd { get; }
|
public override CellAddress AddressBlockEnd { get; }
|
||||||
public void WriteRowToArray(CellAddress[] cellsArray, CellAddress startCells)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
public HeadBlock(CellAddress addressBlockBegin, DailyReportHeadDto blockDto)
|
public HeadBlock(CellAddress addressBlockBegin, DailyReportHeadDto blockDto)
|
||||||
{
|
{
|
||||||
AddressBlockBegin = addressBlockBegin.Copy();
|
AddressBlockBegin = addressBlockBegin.Copy();
|
||||||
|
|
||||||
this.blockDto = blockDto;
|
this.blockDto = blockDto;
|
||||||
AddressTitle = addressBlockBegin + (0, 0);
|
AddressTitle = addressBlockBegin + (0, 0);
|
||||||
AddressCustomer = addressBlockBegin + (1, 0);
|
AddressCustomer = addressBlockBegin + (1, 0);
|
||||||
@ -87,24 +67,20 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
|
|||||||
AddressWorkSaubTitle = addressBlockBegin + (15, 0);
|
AddressWorkSaubTitle = addressBlockBegin + (15, 0);
|
||||||
AddressWatchTitle = addressBlockBegin + (15, 3);
|
AddressWatchTitle = addressBlockBegin + (15, 3);
|
||||||
AddressMetreTitle = addressBlockBegin + (15, 4);
|
AddressMetreTitle = addressBlockBegin + (15, 4);
|
||||||
|
|
||||||
AddressWorkSaubData = new CellAddress[4];
|
AddressWorkSaubData = new CellAddress[4];
|
||||||
AddressWorkSaubData[0] = addressBlockBegin + (16, 0);
|
AddressWorkSaubData[0] = addressBlockBegin + (16, 0);
|
||||||
AddressWorkSaubData[1] = addressBlockBegin + (17, 0);
|
AddressWorkSaubData[1] = addressBlockBegin + (17, 0);
|
||||||
AddressWorkSaubData[2] = addressBlockBegin + (18, 0);
|
AddressWorkSaubData[2] = addressBlockBegin + (18, 0);
|
||||||
AddressWorkSaubData[3] = addressBlockBegin + (19, 0);
|
AddressWorkSaubData[3] = addressBlockBegin + (19, 0);
|
||||||
|
|
||||||
AddressWatchData = new CellAddress[4];
|
AddressWatchData = new CellAddress[4];
|
||||||
AddressWatchData[0] = addressBlockBegin + (16, 3);
|
AddressWatchData[0] = addressBlockBegin + (16, 3);
|
||||||
AddressWatchData[1] = addressBlockBegin + (17, 3);
|
AddressWatchData[1] = addressBlockBegin + (17, 3);
|
||||||
AddressWatchData[2] = addressBlockBegin + (18, 3);
|
AddressWatchData[2] = addressBlockBegin + (18, 3);
|
||||||
AddressWatchData[3] = addressBlockBegin + (19, 3);
|
AddressWatchData[3] = addressBlockBegin + (19, 3);
|
||||||
|
|
||||||
AddressMetreData = new CellAddress[4];
|
AddressMetreData = new CellAddress[4];
|
||||||
AddressMetreData[0] = addressBlockBegin + (16, 4);
|
AddressMetreData[0] = addressBlockBegin + (16, 4);
|
||||||
AddressMetreData[1] = addressBlockBegin + (17, 4);
|
AddressMetreData[1] = addressBlockBegin + (17, 4);
|
||||||
AddressMetreData[2] = addressBlockBegin + (18, 4);
|
AddressMetreData[2] = addressBlockBegin + (18, 4);
|
||||||
|
|
||||||
AddressBlockEnd = AddressWatchData[3]+(0,1);
|
AddressBlockEnd = AddressWatchData[3]+(0,1);
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -115,21 +91,16 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
|
|||||||
sheet._Range(AddressTitle, AddressTitle + (0, 7))
|
sheet._Range(AddressTitle, AddressTitle + (0, 7))
|
||||||
._SetValue($"Суточная сводка бурения скважины: {blockDto.WellName}, куст: {blockDto.ClusterName}")
|
._SetValue($"Суточная сводка бурения скважины: {blockDto.WellName}, куст: {blockDto.ClusterName}")
|
||||||
.Style.SetH1();
|
.Style.SetH1();
|
||||||
|
|
||||||
sheet._Range(AddressCustomer, AddressCustomer + (0, 7))
|
sheet._Range(AddressCustomer, AddressCustomer + (0, 7))
|
||||||
._SetValue($"Заказчик: {blockDto.Customer}")
|
._SetValue($"Заказчик: {blockDto.Customer}")
|
||||||
.Style.SetH1();
|
.Style.SetH1();
|
||||||
|
|
||||||
sheet._Range(AddressDriller, AddressDriller + (0, 7))
|
sheet._Range(AddressDriller, AddressDriller + (0, 7))
|
||||||
._SetValue($"Подрядчик: {blockDto.Contractor}")
|
._SetValue($"Подрядчик: {blockDto.Contractor}")
|
||||||
.Style.SetH1();
|
.Style.SetH1();
|
||||||
|
|
||||||
sheet._Range(AddressPeriod, AddressPeriod + (0, 3))
|
sheet._Range(AddressPeriod, AddressPeriod + (0, 3))
|
||||||
._SetValue("Отчетный период");
|
._SetValue("Отчетный период");
|
||||||
|
|
||||||
sheet._Range(AddressSlaughter, AddressSlaughter + (0, 3))
|
sheet._Range(AddressSlaughter, AddressSlaughter + (0, 3))
|
||||||
._SetValue("Забой за отчетный период, м");
|
._SetValue("Забой за отчетный период, м");
|
||||||
|
|
||||||
sheet._Range(AddressPeriodTableHeadArray[0], AddressPeriodTableHeadArray[0] + (0, 1))
|
sheet._Range(AddressPeriodTableHeadArray[0], AddressPeriodTableHeadArray[0] + (0, 1))
|
||||||
._SetValue("От (дата, время)");
|
._SetValue("От (дата, время)");
|
||||||
sheet._Range(AddressPeriodTableHeadArray[1], AddressPeriodTableHeadArray[1] + (0, 1))
|
sheet._Range(AddressPeriodTableHeadArray[1], AddressPeriodTableHeadArray[1] + (0, 1))
|
||||||
@ -138,19 +109,17 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
|
|||||||
._SetValue("От");
|
._SetValue("От");
|
||||||
sheet._Range(AddressPeriodTableHeadArray[3], AddressPeriodTableHeadArray[3] + (0, 1))
|
sheet._Range(AddressPeriodTableHeadArray[3], AddressPeriodTableHeadArray[3] + (0, 1))
|
||||||
._SetValue("До");
|
._SetValue("До");
|
||||||
|
|
||||||
sheet._Range(AddressPeriodTableDataArray[0], AddressPeriodTableDataArray[0] + (0, 1))
|
sheet._Range(AddressPeriodTableDataArray[0], AddressPeriodTableDataArray[0] + (0, 1))
|
||||||
._SetValue($"{blockDto.ReportDate}");
|
._SetValue($"{blockDto.ReportDate}");
|
||||||
sheet._Range(AddressPeriodTableDataArray[1], AddressPeriodTableDataArray[1] + (0, 1))
|
sheet._Range(AddressPeriodTableDataArray[1], AddressPeriodTableDataArray[1] + (0, 1));
|
||||||
._SetValue("До (дата, время)");
|
sheet.Cell(AddressPeriodTableDataArray[1])
|
||||||
|
.SetFormulaA1($"={AddressPeriodTableDataArray[0].ToString()}-1");
|
||||||
sheet._Range(AddressPeriodTableDataArray[2], AddressPeriodTableDataArray[2] + (0, 1))
|
sheet._Range(AddressPeriodTableDataArray[2], AddressPeriodTableDataArray[2] + (0, 1))
|
||||||
._SetValue($"{blockDto.WellDepthIntervalStartDate}");
|
._SetValue($"{blockDto.WellDepthIntervalStartDate}");
|
||||||
sheet._Range(AddressPeriodTableDataArray[3], AddressPeriodTableDataArray[3] + (0, 1))
|
sheet._Range(AddressPeriodTableDataArray[3], AddressPeriodTableDataArray[3] + (0, 1))
|
||||||
._SetValue($"{blockDto.WellDepthIntervalFinishDate}");
|
._SetValue($"{blockDto.WellDepthIntervalFinishDate}");
|
||||||
|
|
||||||
sheet._Range(AddressTrajectoryTableTitle, AddressTrajectoryTableTitle + (0, 7))
|
sheet._Range(AddressTrajectoryTableTitle, AddressTrajectoryTableTitle + (0, 7))
|
||||||
._SetValue("Данные по траектории скважины на конец суток");
|
._SetValue("Данные по траектории скважины на конец суток");
|
||||||
|
|
||||||
sheet._Range(AddressTrajectoryTableHeadArray[0], AddressTrajectoryTableHeadArray[0] + (0, 1))
|
sheet._Range(AddressTrajectoryTableHeadArray[0], AddressTrajectoryTableHeadArray[0] + (0, 1))
|
||||||
._SetValue("Глубина по стволу");
|
._SetValue("Глубина по стволу");
|
||||||
sheet._Range(AddressTrajectoryTableHeadArray[1], AddressTrajectoryTableHeadArray[1] + (0, 1))
|
sheet._Range(AddressTrajectoryTableHeadArray[1], AddressTrajectoryTableHeadArray[1] + (0, 1))
|
||||||
@ -159,7 +128,6 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
|
|||||||
._SetValue("Зенитный угол");
|
._SetValue("Зенитный угол");
|
||||||
sheet._Range(AddressTrajectoryTableHeadArray[3], AddressTrajectoryTableHeadArray[3] + (0, 1))
|
sheet._Range(AddressTrajectoryTableHeadArray[3], AddressTrajectoryTableHeadArray[3] + (0, 1))
|
||||||
._SetValue("Азимут");
|
._SetValue("Азимут");
|
||||||
|
|
||||||
sheet._Range(AddressTrajectoryTableDataArray[0], AddressTrajectoryTableDataArray[0] + (0, 1))
|
sheet._Range(AddressTrajectoryTableDataArray[0], AddressTrajectoryTableDataArray[0] + (0, 1))
|
||||||
._SetValue($"{blockDto.BottomholeDepth}");
|
._SetValue($"{blockDto.BottomholeDepth}");
|
||||||
sheet._Range(AddressTrajectoryTableDataArray[1], AddressTrajectoryTableDataArray[1] + (0, 1))
|
sheet._Range(AddressTrajectoryTableDataArray[1], AddressTrajectoryTableDataArray[1] + (0, 1))
|
||||||
@ -168,7 +136,6 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
|
|||||||
._SetValue($"{blockDto.ZenithAngle}");
|
._SetValue($"{blockDto.ZenithAngle}");
|
||||||
sheet._Range(AddressTrajectoryTableDataArray[3], AddressTrajectoryTableDataArray[3] + (0, 1))
|
sheet._Range(AddressTrajectoryTableDataArray[3], AddressTrajectoryTableDataArray[3] + (0, 1))
|
||||||
._SetValue($"{blockDto.AzimuthAngle}");
|
._SetValue($"{blockDto.AzimuthAngle}");
|
||||||
|
|
||||||
sheet._Range(AddressDrillerOneTitle, AddressDrillerOneTitle + (0, 1))
|
sheet._Range(AddressDrillerOneTitle, AddressDrillerOneTitle + (0, 1))
|
||||||
._SetValue("Бурильщик 1 смена");
|
._SetValue("Бурильщик 1 смена");
|
||||||
sheet._Range(AddressDrillerOne, AddressDrillerOne + (0, 1))
|
sheet._Range(AddressDrillerOne, AddressDrillerOne + (0, 1))
|
||||||
@ -177,40 +144,34 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
|
|||||||
._SetValue("Бурильщик 2 смена");
|
._SetValue("Бурильщик 2 смена");
|
||||||
sheet._Range(AddressDrillerTwo, AddressDrillerTwo + (0, 1))
|
sheet._Range(AddressDrillerTwo, AddressDrillerTwo + (0, 1))
|
||||||
._SetValue($"{blockDto.SecondDriller}");
|
._SetValue($"{blockDto.SecondDriller}");
|
||||||
|
|
||||||
sheet._Range(AddressWorkSaubTitle, AddressWorkSaubTitle + (0, 2))
|
sheet._Range(AddressWorkSaubTitle, AddressWorkSaubTitle + (0, 2))
|
||||||
._SetValue("Работа модулей САУБ:");
|
._SetValue("Работа модулей САУБ:");
|
||||||
sheet.Cell(AddressWatchTitle)
|
sheet.Cell(AddressWatchTitle)
|
||||||
._SetValue("Часов:");
|
._SetValue("Часов:");
|
||||||
sheet.Cell(AddressMetreTitle)
|
sheet.Cell(AddressMetreTitle)
|
||||||
._SetValue("Метров:");
|
._SetValue("Метров:");
|
||||||
|
|
||||||
sheet._Range(AddressWorkSaubData[0], AddressWorkSaubData[0] + (0, 2))
|
sheet._Range(AddressWorkSaubData[0], AddressWorkSaubData[0] + (0, 2))
|
||||||
._SetValue("АПД (автоматическая подача долота), ч/м:");
|
._SetValue("АПД (автоматическая подача долота), ч/м:");
|
||||||
sheet.Cell(AddressWatchData[0])
|
sheet.Cell(AddressWatchData[0])
|
||||||
._SetValue($"{blockDto.WorkTimeSAUB}");
|
._SetValue($"{blockDto.WorkTimeSAUB}");
|
||||||
sheet.Cell(AddressMetreData[0])
|
sheet.Cell(AddressMetreData[0])
|
||||||
._SetValue($"{blockDto.PenetrationSAUB}");
|
._SetValue($"{blockDto.PenetrationSAUB}");
|
||||||
|
|
||||||
sheet._Range(AddressWorkSaubData[1], AddressWorkSaubData[1] + (0, 2))
|
sheet._Range(AddressWorkSaubData[1], AddressWorkSaubData[1] + (0, 2))
|
||||||
._SetValue("Спин Мастер (осцилляция),ч/м:");
|
._SetValue("Спин Мастер (осцилляция),ч/м:");
|
||||||
sheet.Cell(AddressWatchData[1])
|
sheet.Cell(AddressWatchData[1])
|
||||||
._SetValue($"{blockDto.WorkTimeSpinMaster}");
|
._SetValue($"{blockDto.WorkTimeSpinMaster}");
|
||||||
sheet.Cell(AddressMetreData[1])
|
sheet.Cell(AddressMetreData[1])
|
||||||
._SetValue($"{blockDto.PenetrationTorkMaster}");
|
._SetValue($"{blockDto.PenetrationTorkMaster}");
|
||||||
|
|
||||||
sheet._Range(AddressWorkSaubData[2], AddressWorkSaubData[2] + (0, 2))
|
sheet._Range(AddressWorkSaubData[2], AddressWorkSaubData[2] + (0, 2))
|
||||||
._SetValue("Торк Мастер (демпфирование), ч/:");
|
._SetValue("Торк Мастер (демпфирование), ч/:");
|
||||||
sheet.Cell(AddressWatchData[2])
|
sheet.Cell(AddressWatchData[2])
|
||||||
._SetValue($"{blockDto.WorkTimeTorkMaster}");
|
._SetValue($"{blockDto.WorkTimeTorkMaster}");
|
||||||
sheet.Cell(AddressMetreData[2])
|
sheet.Cell(AddressMetreData[2])
|
||||||
._SetValue($"{blockDto.PenetrationTorkMaster}");
|
._SetValue($"{blockDto.PenetrationTorkMaster}");
|
||||||
|
|
||||||
sheet._Range(AddressWorkSaubData[3], AddressWorkSaubData[3] + (0, 2))
|
sheet._Range(AddressWorkSaubData[3], AddressWorkSaubData[3] + (0, 2))
|
||||||
._SetValue("МСЕ, колличество запусков, раз:");
|
._SetValue("МСЕ, колличество запусков, раз:");
|
||||||
sheet._Range(AddressWatchData[3], AddressWatchData[3] + (0, 1))
|
sheet._Range(AddressWatchData[3], AddressWatchData[3] + (0, 1))
|
||||||
._SetValue($"{blockDto.CountLaunchesMSE}");
|
._SetValue($"{blockDto.CountLaunchesMSE}");
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
using AsbCloudApp.Data.DailyReportModel;
|
using AsbCloudApp.Data.DailyReport;
|
||||||
using ClosedXML.Excel;
|
using ClosedXML.Excel;
|
||||||
|
|
||||||
namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
|
namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
|
||||||
@ -9,7 +9,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
|
|||||||
{
|
{
|
||||||
private readonly DailyReportSaubDto blockDto;
|
private readonly DailyReportSaubDto blockDto;
|
||||||
|
|
||||||
public CellAddress AddressBhaDescription { get; }
|
public CellAddress AddressBhaWithFormula { get; }
|
||||||
|
|
||||||
|
|
||||||
public CellAddress[] AddressPeriodTableDataArray { get; }
|
public CellAddress[] AddressPeriodTableDataArray { get; }
|
||||||
@ -28,7 +28,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
|
|||||||
{
|
{
|
||||||
AddressBlockBegin = addressBlockBegin.Copy();
|
AddressBlockBegin = addressBlockBegin.Copy();
|
||||||
this.blockDto = blockDto;
|
this.blockDto = blockDto;
|
||||||
AddressBhaDescription = addressBlockBegin + (0, 0);
|
AddressBhaWithFormula = addressBlockBegin + (0, 0);
|
||||||
|
|
||||||
//AddressExampleData1 = addressBlockBegin + (5, 0);
|
//AddressExampleData1 = addressBlockBegin + (5, 0);
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
using AsbCloudApp.Data.DailyReportModel;
|
using AsbCloudApp.Data.DailyReport;
|
||||||
using ClosedXML.Excel;
|
using ClosedXML.Excel;
|
||||||
|
|
||||||
namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
|
namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
|
||||||
@ -14,15 +14,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
|
|||||||
public CellAddress AddressSupervisorHead { get; }
|
public CellAddress AddressSupervisorHead { get; }
|
||||||
public CellAddress AddressSupervisor { get; }
|
public CellAddress AddressSupervisor { get; }
|
||||||
public CellAddress[] AddressPeriodTableDataArray { get; }
|
public CellAddress[] AddressPeriodTableDataArray { get; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Значение нижняя правая ячейка блока
|
|
||||||
/// </summary>
|
|
||||||
public override CellAddress AddressBlockBegin { get; }
|
public override CellAddress AddressBlockBegin { get; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Значение нижняя правая ячейка блока
|
|
||||||
/// </summary>
|
|
||||||
public override CellAddress AddressBlockEnd { get; }
|
public override CellAddress AddressBlockEnd { get; }
|
||||||
|
|
||||||
public SignBlock(CellAddress addressBlockBegin, DailyReportSignDto blockDto)
|
public SignBlock(CellAddress addressBlockBegin, DailyReportSignDto blockDto)
|
||||||
@ -38,7 +30,6 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
|
|||||||
|
|
||||||
public override void Draw(IXLWorksheet sheet)
|
public override void Draw(IXLWorksheet sheet)
|
||||||
{
|
{
|
||||||
|
|
||||||
sheet.Range(AddressDrillMasterHead, AddressDrillMasterHead + (0, 2))
|
sheet.Range(AddressDrillMasterHead, AddressDrillMasterHead + (0, 2))
|
||||||
._SetValue("Мастер буровой ");
|
._SetValue("Мастер буровой ");
|
||||||
sheet.Range(AddressDrillMaster, AddressDrillMaster + (0, 2))
|
sheet.Range(AddressDrillMaster, AddressDrillMaster + (0, 2))
|
||||||
@ -47,7 +38,6 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
|
|||||||
._SetValue("Супервайзер ");
|
._SetValue("Супервайзер ");
|
||||||
sheet.Range(AddressSupervisor, AddressSupervisor + (0, 2))
|
sheet.Range(AddressSupervisor, AddressSupervisor + (0, 2))
|
||||||
._SetValue($"{blockDto.Supervisor}");
|
._SetValue($"{blockDto.Supervisor}");
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,55 +17,38 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
|
|||||||
public CellAddress AddressElaboration { get; set; }
|
public CellAddress AddressElaboration { get; set; }
|
||||||
public CellAddress AddressExtension { get; set; }
|
public CellAddress AddressExtension { get; set; }
|
||||||
public CellAddress AddressRepair { get; set; }
|
public CellAddress AddressRepair { get; set; }
|
||||||
|
|
||||||
public CellAddress AddressDrillingValue { get; set; }
|
public CellAddress AddressDrillingValue { get; set; }
|
||||||
public CellAddress AddressFlushingValue { get; set; }
|
public CellAddress AddressFlushingValue { get; set; }
|
||||||
public CellAddress AddressBuildingValue { get; set; }
|
public CellAddress AddressBuildingValue { get; set; }
|
||||||
public CellAddress AddressElaborationValue { get; set; }
|
public CellAddress AddressElaborationValue { get; set; }
|
||||||
public CellAddress AddressExtensionValue { get; set; }
|
public CellAddress AddressExtensionValue { get; set; }
|
||||||
public CellAddress AddressRepairValue { get; set; }
|
public CellAddress AddressRepairValue { get; set; }
|
||||||
|
|
||||||
public CellAddress AddressKnbk { get; set; }
|
public CellAddress AddressKnbk { get; set; }
|
||||||
public CellAddress AddressSpo { get; set; }
|
public CellAddress AddressSpo { get; set; }
|
||||||
public CellAddress AddressPzr { get; set; }
|
public CellAddress AddressPzr { get; set; }
|
||||||
public CellAddress AddressPvo { get; set; }
|
public CellAddress AddressPvo { get; set; }
|
||||||
public CellAddress AddressPgr { get; set; }
|
public CellAddress AddressPgr { get; set; }
|
||||||
public CellAddress AddressGis { get; set; }
|
public CellAddress AddressGis { get; set; }
|
||||||
|
|
||||||
public CellAddress AddressKnbkValue { get; set; }
|
public CellAddress AddressKnbkValue { get; set; }
|
||||||
public CellAddress AddressSpoValue { get; set; }
|
public CellAddress AddressSpoValue { get; set; }
|
||||||
public CellAddress AddressPzrValue { get; set; }
|
public CellAddress AddressPzrValue { get; set; }
|
||||||
public CellAddress AddressPvoValue { get; set; }
|
public CellAddress AddressPvoValue { get; set; }
|
||||||
public CellAddress AddressPgrValue { get; set; }
|
public CellAddress AddressPgrValue { get; set; }
|
||||||
public CellAddress AddressGisValue { get; set; }
|
public CellAddress AddressGisValue { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public CellAddress AddressOzc { get; set; }
|
public CellAddress AddressOzc { get; set; }
|
||||||
public CellAddress AddressEngineeringWorks { get; set; }
|
public CellAddress AddressEngineeringWorks { get; set; }
|
||||||
public CellAddress AddressTakingMeasure { get; set; }
|
public CellAddress AddressTakingMeasure { get; set; }
|
||||||
public CellAddress AddressCementing { get; set; }
|
public CellAddress AddressCementing { get; set; }
|
||||||
public CellAddress AddressSimple { get; set; }
|
public CellAddress AddressSimple { get; set; }
|
||||||
public CellAddress AddressNpv { get; set; }
|
public CellAddress AddressNpv { get; set; }
|
||||||
|
|
||||||
public CellAddress AddressOzcValue { get; set; }
|
public CellAddress AddressOzcValue { get; set; }
|
||||||
public CellAddress AddressEngineeringWorksValue { get; set; }
|
public CellAddress AddressEngineeringWorksValue { get; set; }
|
||||||
public CellAddress AddressTakingMeasureValue { get; set; }
|
public CellAddress AddressTakingMeasureValue { get; set; }
|
||||||
public CellAddress AddressCementingValue { get; set; }
|
public CellAddress AddressCementingValue { get; set; }
|
||||||
public CellAddress AddressSimpleValue { get; set; }
|
public CellAddress AddressSimpleValue { get; set; }
|
||||||
public CellAddress AddressNpvValue { get; set; }
|
public CellAddress AddressNpvValue { get; set; }
|
||||||
|
|
||||||
|
|
||||||
public CellAddress[] AddressPeriodTableDataArray { get; }
|
public CellAddress[] AddressPeriodTableDataArray { get; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Значение нижняя правая ячейка блока
|
|
||||||
/// </summary>
|
|
||||||
public override CellAddress AddressBlockBegin { get; }
|
public override CellAddress AddressBlockBegin { get; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Значение нижняя правая ячейка блока
|
|
||||||
/// </summary>
|
|
||||||
public override CellAddress AddressBlockEnd { get; }
|
public override CellAddress AddressBlockEnd { get; }
|
||||||
|
|
||||||
public TimeBalanceBlock(CellAddress addressBlockBegin, DailyReportTimeBalanceDto blockDto)
|
public TimeBalanceBlock(CellAddress addressBlockBegin, DailyReportTimeBalanceDto blockDto)
|
||||||
@ -73,49 +56,42 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
|
|||||||
AddressBlockBegin = addressBlockBegin.Copy();
|
AddressBlockBegin = addressBlockBegin.Copy();
|
||||||
this.blockDto = blockDto;
|
this.blockDto = blockDto;
|
||||||
AddressTitle = addressBlockBegin + (3, 0);
|
AddressTitle = addressBlockBegin + (3, 0);
|
||||||
|
|
||||||
AddressDrilling = addressBlockBegin + (4, 1);
|
AddressDrilling = addressBlockBegin + (4, 1);
|
||||||
AddressFlushing = addressBlockBegin + (5, 1);
|
AddressFlushing = addressBlockBegin + (5, 1);
|
||||||
AddressBuilding = addressBlockBegin + (6, 1);
|
AddressBuilding = addressBlockBegin + (6, 1);
|
||||||
AddressElaboration = addressBlockBegin + (7, 1);
|
AddressElaboration = addressBlockBegin + (7, 1);
|
||||||
AddressExtension = addressBlockBegin + (8, 1);
|
AddressExtension = addressBlockBegin + (8, 1);
|
||||||
AddressRepair = addressBlockBegin + (9, 1);
|
AddressRepair = addressBlockBegin + (9, 1);
|
||||||
|
|
||||||
AddressDrillingValue = addressBlockBegin + (4, 2);
|
AddressDrillingValue = addressBlockBegin + (4, 2);
|
||||||
AddressFlushingValue = addressBlockBegin + (5, 2);
|
AddressFlushingValue = addressBlockBegin + (5, 2);
|
||||||
AddressBuildingValue = addressBlockBegin + (6, 2);
|
AddressBuildingValue = addressBlockBegin + (6, 2);
|
||||||
AddressElaborationValue = addressBlockBegin + (7, 2);
|
AddressElaborationValue = addressBlockBegin + (7, 2);
|
||||||
AddressExtensionValue = addressBlockBegin + (8, 2);
|
AddressExtensionValue = addressBlockBegin + (8, 2);
|
||||||
AddressRepairValue = addressBlockBegin + (9, 2);
|
AddressRepairValue = addressBlockBegin + (9, 2);
|
||||||
|
|
||||||
AddressKnbk = addressBlockBegin + (4, 3);
|
AddressKnbk = addressBlockBegin + (4, 3);
|
||||||
AddressSpo = addressBlockBegin + (5, 3);
|
AddressSpo = addressBlockBegin + (5, 3);
|
||||||
AddressPzr = addressBlockBegin + (6, 3);
|
AddressPzr = addressBlockBegin + (6, 3);
|
||||||
AddressPvo = addressBlockBegin + (7, 3);
|
AddressPvo = addressBlockBegin + (7, 3);
|
||||||
AddressPgr = addressBlockBegin + (8, 3);
|
AddressPgr = addressBlockBegin + (8, 3);
|
||||||
AddressGis = addressBlockBegin + (9, 3);
|
AddressGis = addressBlockBegin + (9, 3);
|
||||||
|
|
||||||
AddressKnbkValue = addressBlockBegin + (4, 4);
|
AddressKnbkValue = addressBlockBegin + (4, 4);
|
||||||
AddressSpoValue = addressBlockBegin + (5, 4);
|
AddressSpoValue = addressBlockBegin + (5, 4);
|
||||||
AddressPzrValue = addressBlockBegin + (6, 4);
|
AddressPzrValue = addressBlockBegin + (6, 4);
|
||||||
AddressPvoValue = addressBlockBegin + (7, 4);
|
AddressPvoValue = addressBlockBegin + (7, 4);
|
||||||
AddressPgrValue = addressBlockBegin + (8, 4);
|
AddressPgrValue = addressBlockBegin + (8, 4);
|
||||||
AddressGisValue = addressBlockBegin + (9, 4);
|
AddressGisValue = addressBlockBegin + (9, 4);
|
||||||
|
|
||||||
AddressOzc = addressBlockBegin + (4, 5);
|
AddressOzc = addressBlockBegin + (4, 5);
|
||||||
AddressEngineeringWorks = addressBlockBegin + (5, 5);
|
AddressEngineeringWorks = addressBlockBegin + (5, 5);
|
||||||
AddressTakingMeasure = addressBlockBegin + (6, 5);
|
AddressTakingMeasure = addressBlockBegin + (6, 5);
|
||||||
AddressCementing = addressBlockBegin + (7, 5);
|
AddressCementing = addressBlockBegin + (7, 5);
|
||||||
AddressSimple = addressBlockBegin + (8, 5);
|
AddressSimple = addressBlockBegin + (8, 5);
|
||||||
AddressNpv = addressBlockBegin + (9, 5);
|
AddressNpv = addressBlockBegin + (9, 5);
|
||||||
|
|
||||||
AddressOzcValue = addressBlockBegin + (4, 6);
|
AddressOzcValue = addressBlockBegin + (4, 6);
|
||||||
AddressEngineeringWorksValue = addressBlockBegin + (5, 6);
|
AddressEngineeringWorksValue = addressBlockBegin + (5, 6);
|
||||||
AddressTakingMeasureValue = addressBlockBegin + (6, 6);
|
AddressTakingMeasureValue = addressBlockBegin + (6, 6);
|
||||||
AddressCementingValue = addressBlockBegin + (7, 6);
|
AddressCementingValue = addressBlockBegin + (7, 6);
|
||||||
AddressSimpleValue = addressBlockBegin + (8, 6);
|
AddressSimpleValue = addressBlockBegin + (8, 6);
|
||||||
AddressNpvValue = addressBlockBegin + (9, 6);
|
AddressNpvValue = addressBlockBegin + (9, 6);
|
||||||
|
|
||||||
AddressBlockEnd = AddressNpvValue;
|
AddressBlockEnd = AddressNpvValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -124,7 +100,6 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
|
|||||||
|
|
||||||
sheet._Range(AddressTitle, AddressTitle + (0, 1))
|
sheet._Range(AddressTitle, AddressTitle + (0, 1))
|
||||||
._SetValue("БАЛАНС ВРЕМЕНИ");
|
._SetValue("БАЛАНС ВРЕМЕНИ");
|
||||||
|
|
||||||
sheet.Cell(AddressDrilling)
|
sheet.Cell(AddressDrilling)
|
||||||
._SetValue("Бурение");
|
._SetValue("Бурение");
|
||||||
sheet.Cell(AddressFlushing)
|
sheet.Cell(AddressFlushing)
|
||||||
@ -149,7 +124,6 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
|
|||||||
._SetValue($"{blockDto.Extension}");
|
._SetValue($"{blockDto.Extension}");
|
||||||
sheet.Cell(AddressRepairValue)
|
sheet.Cell(AddressRepairValue)
|
||||||
._SetValue($"{blockDto.Repair}");
|
._SetValue($"{blockDto.Repair}");
|
||||||
|
|
||||||
sheet.Cell(AddressKnbk)
|
sheet.Cell(AddressKnbk)
|
||||||
._SetValue("КНБК");
|
._SetValue("КНБК");
|
||||||
sheet.Cell(AddressSpo)
|
sheet.Cell(AddressSpo)
|
||||||
@ -174,7 +148,6 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
|
|||||||
._SetValue($"{blockDto.Pgr}");
|
._SetValue($"{blockDto.Pgr}");
|
||||||
sheet.Cell(AddressGisValue)
|
sheet.Cell(AddressGisValue)
|
||||||
._SetValue($"{blockDto.Gis}");
|
._SetValue($"{blockDto.Gis}");
|
||||||
|
|
||||||
sheet.Cell(AddressOzc)
|
sheet.Cell(AddressOzc)
|
||||||
._SetValue("ОЗЦ");
|
._SetValue("ОЗЦ");
|
||||||
sheet.Cell(AddressEngineeringWorks)
|
sheet.Cell(AddressEngineeringWorks)
|
||||||
@ -199,16 +172,6 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
|
|||||||
._SetValue($"{blockDto.Simple}");
|
._SetValue($"{blockDto.Simple}");
|
||||||
sheet.Cell(AddressNpvValue)
|
sheet.Cell(AddressNpvValue)
|
||||||
._SetValue($"{blockDto.Npv}");
|
._SetValue($"{blockDto.Npv}");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -9,7 +9,7 @@ using AsbCloudApp.Data;
|
|||||||
using AsbCloudApp.Services;
|
using AsbCloudApp.Services;
|
||||||
using AsbCloudDb.Model;
|
using AsbCloudDb.Model;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using AsbCloudApp.Data.DailyReportModel;
|
|
||||||
using AsbCloudApp.Data.DailyReport;
|
using AsbCloudApp.Data.DailyReport;
|
||||||
|
|
||||||
namespace AsbCloudInfrastructure.Services.DailyReport
|
namespace AsbCloudInfrastructure.Services.DailyReport
|
||||||
@ -62,7 +62,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport
|
|||||||
public async Task<int> AddAsync(int idWell, DailyReportDto dto, CancellationToken token = default)
|
public async Task<int> AddAsync(int idWell, DailyReportDto dto, CancellationToken token = default)
|
||||||
{
|
{
|
||||||
var offsetHours = wellService.GetTimezone(idWell).Hours;
|
var offsetHours = wellService.GetTimezone(idWell).Hours;
|
||||||
var reportDateOffset = dto.ReportDate.ToUtcDateTimeOffset(offsetHours);
|
var reportDateOffset = dto.HeadDto.ReportDate.ToUtcDateTimeOffset(offsetHours);
|
||||||
var info = Convert(dto, offsetHours);
|
var info = Convert(dto, offsetHours);
|
||||||
var entity = new AsbCloudDb.Model.DailyReport
|
var entity = new AsbCloudDb.Model.DailyReport
|
||||||
{
|
{
|
||||||
@ -101,7 +101,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport
|
|||||||
if (dailyReportDto is null)
|
if (dailyReportDto is null)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
var memoryStream = dailyReportMaker.MakeReport(dailyReportDto);
|
var memoryStream = dailyReportMaker.MakeReportFromBlocks(dailyReportDto);
|
||||||
return memoryStream;
|
return memoryStream;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -127,12 +127,16 @@ namespace AsbCloudInfrastructure.Services.DailyReport
|
|||||||
{
|
{
|
||||||
var well = await wellService.GetAsync(idWell, token);
|
var well = await wellService.GetAsync(idWell, token);
|
||||||
var offsetHours = wellService.GetTimezone(idWell).Hours;
|
var offsetHours = wellService.GetTimezone(idWell).Hours;
|
||||||
var dto = new DailyReportDto()
|
var headDto = new DailyReportHeadDto()
|
||||||
{
|
{
|
||||||
ReportDate = date,
|
ReportDate = date,
|
||||||
WellName = well.Caption,
|
WellName = well.Caption,
|
||||||
ClusterName = well.Cluster,
|
ClusterName = well.Cluster,
|
||||||
};
|
};
|
||||||
|
var dto = new DailyReportDto()
|
||||||
|
{
|
||||||
|
HeadDto = headDto
|
||||||
|
};
|
||||||
DailyReportDto result = dto;
|
DailyReportDto result = dto;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@ -140,7 +144,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport
|
|||||||
private static DailyReportDto Convert(AsbCloudDb.Model.DailyReport entity, double offsetHours)
|
private static DailyReportDto Convert(AsbCloudDb.Model.DailyReport entity, double offsetHours)
|
||||||
{
|
{
|
||||||
var dto = entity.Info.Adapt<DailyReportDto>();
|
var dto = entity.Info.Adapt<DailyReportDto>();
|
||||||
dto.ReportDate = entity.StartDate
|
dto.HeadDto.ReportDate = entity.StartDate
|
||||||
.ToRemoteDateTime(offsetHours);
|
.ToRemoteDateTime(offsetHours);
|
||||||
return dto;
|
return dto;
|
||||||
}
|
}
|
||||||
@ -148,83 +152,11 @@ namespace AsbCloudInfrastructure.Services.DailyReport
|
|||||||
private static DailyReportInfo Convert(DailyReportDto dto, double offsetHours)
|
private static DailyReportInfo Convert(DailyReportDto dto, double offsetHours)
|
||||||
{
|
{
|
||||||
var entity = dto.Adapt<DailyReportInfo>();
|
var entity = dto.Adapt<DailyReportInfo>();
|
||||||
entity.ReportDate = dto.ReportDate
|
entity.HeadInfo.ReportDate = dto.HeadDto.ReportDate
|
||||||
.ToUtcDateTimeOffset(offsetHours)
|
.ToUtcDateTimeOffset(offsetHours)
|
||||||
.Date;
|
.Date;
|
||||||
return entity;
|
return entity;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// черновик реализации "по блокам"
|
|
||||||
|
|
||||||
public async Task<Stream?> MakeReportFromBlocksAsync(int idWell, DateTime date, CancellationToken token = default)
|
|
||||||
{
|
|
||||||
var dailyReportDto = await GetAsync(idWell, date, token);
|
|
||||||
if (dailyReportDto is null)
|
|
||||||
return null;
|
|
||||||
var block1 = new DailyReportHeadDto()
|
|
||||||
{
|
|
||||||
WellName = dailyReportDto.WellName,
|
|
||||||
ClusterName = dailyReportDto.ClusterName,
|
|
||||||
Customer = dailyReportDto.Customer,
|
|
||||||
Contractor = dailyReportDto.Contractor,
|
|
||||||
ReportDate = dailyReportDto.ReportDate,
|
|
||||||
WellDepthIntervalStartDate = dailyReportDto.WellDepthIntervalStartDate,
|
|
||||||
WellDepthIntervalFinishDate = dailyReportDto.WellDepthIntervalFinishDate,
|
|
||||||
BottomholeDepth = dailyReportDto.BottomholeDepth,
|
|
||||||
VerticalDepth = dailyReportDto.VerticalDepth,
|
|
||||||
ZenithAngle = dailyReportDto.ZenithAngle,
|
|
||||||
AzimuthAngle = dailyReportDto.AzimuthAngle,
|
|
||||||
FirstDriller = dailyReportDto.FirstDriller,
|
|
||||||
SecondDriller = dailyReportDto.SecondDriller,
|
|
||||||
WorkTimeSAUB = dailyReportDto.WorkTimeSAUB,
|
|
||||||
WorkTimeSpinMaster = dailyReportDto.WorkTimeSpinMaster,
|
|
||||||
WorkTimeTorkMaster = dailyReportDto.WorkTimeTorkMaster,
|
|
||||||
PenetrationSAUB = dailyReportDto.PenetrationSAUB,
|
|
||||||
PenetrationSpinMaster = dailyReportDto.PenetrationSpinMaster,
|
|
||||||
PenetrationTorkMaster = dailyReportDto.PenetrationTorkMaster,
|
|
||||||
CountLaunchesMSE = dailyReportDto.CountLaunchesMSE
|
|
||||||
};
|
|
||||||
var block2 = new DailyReportBhaDto()
|
|
||||||
{
|
|
||||||
BHADescription = dailyReportDto.BHADescription
|
|
||||||
};
|
|
||||||
var block3 = new DailyReportTimeBalanceDto();
|
|
||||||
|
|
||||||
var block4 = new DailyReportDimensionlessDto()
|
|
||||||
{
|
|
||||||
ActualTimeBarrelPreparation = dailyReportDto.ActualTimeBarrelPreparation,
|
|
||||||
ActualTimeExtension = dailyReportDto.ActualTimeExtension,
|
|
||||||
StandardTimeBarrelPreparation = dailyReportDto.StandardTimeBarrelPreparation,
|
|
||||||
StandardTimeExtension = dailyReportDto.StandardTimeExtension
|
|
||||||
};
|
|
||||||
var block5 = new DailyReportSaubDto()
|
|
||||||
{
|
|
||||||
AVGDiffDropRotor = dailyReportDto.AVGDiffDropRotor,
|
|
||||||
AVGDiffPressureSlide = dailyReportDto.AVGDiffPressureSlide,
|
|
||||||
DeclinesReasonsROP = dailyReportDto.DeclinesReasonsROP,
|
|
||||||
DeviationFromTVD = dailyReportDto.DeviationFromTVD,
|
|
||||||
DrillingTimeInRotor = dailyReportDto.DrillingTimeInRotor,
|
|
||||||
NumberDrillingHours = dailyReportDto.NumberDrillingHours,
|
|
||||||
ExtensionsCount = dailyReportDto.ExtensionsCount,
|
|
||||||
PenetrationInRotor = dailyReportDto.PenetrationInRotor,
|
|
||||||
PenetrationInSlide = dailyReportDto.PenetrationInSlide,
|
|
||||||
RotorDrillingModes = dailyReportDto.RotorDrillingModes,
|
|
||||||
SectionDrillingTimeTotal = dailyReportDto.SectionDrillingTimeTotal,
|
|
||||||
SectionPenetrationTotal = dailyReportDto.SectionPenetrationTotal,
|
|
||||||
SectionROPPlan = dailyReportDto.SectionROPPlan,
|
|
||||||
SlideDrillingModes = dailyReportDto.SlideDrillingModes
|
|
||||||
|
|
||||||
};
|
|
||||||
var block6 = new DailyReportSignDto()
|
|
||||||
{
|
|
||||||
DrillingMaster = dailyReportDto.DrillingMaster,
|
|
||||||
Supervisor = dailyReportDto.Supervisor
|
|
||||||
};
|
|
||||||
|
|
||||||
var memoryStream = dailyReportMaker.MakeReportFromBlocks(block1, block2, block3, block4, block5, block6);
|
|
||||||
return memoryStream;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
#nullable disable
|
#nullable disable
|
||||||
}
|
}
|
||||||
|
@ -115,8 +115,8 @@ namespace AsbCloudWebApi.Tests.ServicesTests
|
|||||||
public async Task GetDriller_by_workTime_shift1()
|
public async Task GetDriller_by_workTime_shift1()
|
||||||
{
|
{
|
||||||
var dto = MakeScheduleDto();
|
var dto = MakeScheduleDto();
|
||||||
dto.ShiftStart = new TimeOnly(8, 00);
|
dto.ShiftStart = new TimeDto(8, 00);
|
||||||
dto.ShiftEnd = new TimeOnly(20, 00);
|
dto.ShiftEnd = new TimeDto(20, 00);
|
||||||
var id = await scheduleService.InsertAsync(dto, CancellationToken.None);
|
var id = await scheduleService.InsertAsync(dto, CancellationToken.None);
|
||||||
var drillerWorkTime = new DateTime(
|
var drillerWorkTime = new DateTime(
|
||||||
dto.DrillStart.Year,
|
dto.DrillStart.Year,
|
||||||
@ -131,8 +131,8 @@ namespace AsbCloudWebApi.Tests.ServicesTests
|
|||||||
public async Task GetDriller_by_workTime_shift2()
|
public async Task GetDriller_by_workTime_shift2()
|
||||||
{
|
{
|
||||||
var dto = MakeScheduleDto();
|
var dto = MakeScheduleDto();
|
||||||
dto.ShiftStart = new TimeOnly(20, 00);
|
dto.ShiftStart = new TimeDto(20, 00);
|
||||||
dto.ShiftEnd = new TimeOnly(8, 00);
|
dto.ShiftEnd = new TimeDto(8, 00);
|
||||||
var id = await scheduleService.InsertAsync(dto, CancellationToken.None);
|
var id = await scheduleService.InsertAsync(dto, CancellationToken.None);
|
||||||
var drillerWorkTime = new DateTime(
|
var drillerWorkTime = new DateTime(
|
||||||
dto.DrillStart.Year,
|
dto.DrillStart.Year,
|
||||||
|
@ -1,13 +1,8 @@
|
|||||||
using AsbCloudApp.Data.DailyReport;
|
using AsbCloudApp.Data.DailyReport;
|
||||||
using AsbCloudApp.Data.DailyReportModel;
|
|
||||||
using AsbCloudInfrastructure.EfCache;
|
|
||||||
using AsbCloudInfrastructure.Services.DailyReport;
|
|
||||||
using ClosedXML.Excel;
|
using ClosedXML.Excel;
|
||||||
using System;
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
|
||||||
using System.Threading;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace ConsoleApp1
|
namespace ConsoleApp1
|
||||||
{
|
{
|
||||||
@ -19,15 +14,15 @@ namespace ConsoleApp1
|
|||||||
{
|
{
|
||||||
var block = new DailyReportHeadDto()
|
var block = new DailyReportHeadDto()
|
||||||
{
|
{
|
||||||
AzimuthAngle=12,
|
AzimuthAngle = 12,
|
||||||
WellName= "WellName",
|
WellName = "WellName",
|
||||||
ClusterName= "clusterName",
|
ClusterName = "clusterName",
|
||||||
Customer="customer",
|
Customer = "customer",
|
||||||
Contractor="Contractor",
|
Contractor = "Contractor",
|
||||||
ReportDate = DateTime.Now,
|
ReportDate = DateTime.Now,
|
||||||
WellDepthIntervalFinishDate= 27.5,
|
WellDepthIntervalFinishDate = 27.5,
|
||||||
WellDepthIntervalStartDate= 26.5,
|
WellDepthIntervalStartDate = 26.5,
|
||||||
BottomholeDepth= 66.6
|
BottomholeDepth = 66.6
|
||||||
};
|
};
|
||||||
var block2 = new DailyReportBhaDto()
|
var block2 = new DailyReportBhaDto()
|
||||||
{
|
{
|
||||||
@ -35,7 +30,7 @@ namespace ConsoleApp1
|
|||||||
};
|
};
|
||||||
var block3 = new DailyReportTimeBalanceDto();
|
var block3 = new DailyReportTimeBalanceDto();
|
||||||
|
|
||||||
//------------- example -----------------
|
/*
|
||||||
var service = new DailyReportMakerExcel();
|
var service = new DailyReportMakerExcel();
|
||||||
var stream = service.MakeReportFromBlocks(block, block2, block3,null, null, null);
|
var stream = service.MakeReportFromBlocks(block, block2, block3,null, null, null);
|
||||||
var filename = "____.xlsx";
|
var filename = "____.xlsx";
|
||||||
@ -45,7 +40,7 @@ namespace ConsoleApp1
|
|||||||
stream.CopyTo(fileStream);
|
stream.CopyTo(fileStream);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
//------------- end of example -----------------
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -60,482 +55,8 @@ namespace ConsoleApp1
|
|||||||
//ms.Close();
|
//ms.Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Stream MakeReportFromBlocks(DailyReportHeadDto blockHead, DailyReportSaubDto blockD)
|
|
||||||
{
|
|
||||||
using var workbook = new XLWorkbook();
|
|
||||||
FillSheet6blocks(workbook, blockHead, blockD);
|
|
||||||
MemoryStream memoryStream = new MemoryStream();
|
|
||||||
workbook.SaveAs(memoryStream, new SaveOptions { });
|
|
||||||
memoryStream.Seek(0, SeekOrigin.Begin);
|
|
||||||
return memoryStream;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static String converteCellCoordinate(int row, bool isCaps, int column)
|
|
||||||
{
|
|
||||||
var c = (Char)((isCaps ? 65 : 97) + (column - 1));
|
|
||||||
string convertColumn = c.ToString();
|
|
||||||
return $"{convertColumn}{row}";
|
|
||||||
}
|
|
||||||
|
|
||||||
private static string FormulaMechanicalSpeed((int row, int col) tuple)
|
|
||||||
{
|
|
||||||
return $"=IF({converteCellCoordinate(tuple.row,true,tuple.col-2)}>0," +
|
|
||||||
$"{converteCellCoordinate(tuple.row,true,tuple.col-4)}/{converteCellCoordinate(tuple.row,true,tuple.col-2)},0)";
|
|
||||||
}
|
|
||||||
|
|
||||||
private static string FormulaDrillingWatch((int row, int col) tuple)
|
|
||||||
{
|
|
||||||
return $"=IF({converteCellCoordinate(tuple.row - 8,true,tuple.col)}+" +
|
|
||||||
$"{converteCellCoordinate(tuple.row - 4,true,tuple.col)}";
|
|
||||||
}
|
|
||||||
|
|
||||||
private static string FormulaSinking((int row, int col) tuple)
|
|
||||||
{
|
|
||||||
return $"=IF(({converteCellCoordinate(tuple.row - 4,true,tuple.col)}+{converteCellCoordinate(tuple.row - 8,true,tuple.col)})" +
|
|
||||||
$"<>({converteCellCoordinate(tuple.row - 54,true,tuple.col + 6)}-{converteCellCoordinate(tuple.row - 54,true,tuple.col + 4)}),\"ОШИБКА\"" +
|
|
||||||
$",{converteCellCoordinate(tuple.row - 4,true,tuple.col)}+{converteCellCoordinate(tuple.row - 8,true,tuple.col)})";
|
|
||||||
|
|
||||||
//return $"=IF({converteCellCoordinate(tuple.row - 8,true,tuple.col)}+" +
|
|
||||||
// $"{converteCellCoordinate(tuple.row - 4,true,tuple.col)}";
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void FillSheet6blocks(XLWorkbook workbook, DailyReportHeadDto blockHead, DailyReportSaubDto blockD)
|
|
||||||
{
|
|
||||||
var sheet = workbook.Worksheets.Add(blockHead.ReportDate.ToString("dd.MM.yyyy"));
|
|
||||||
//sheet.Name = blockHead.ReportDate.ToString("dd.MM.yyyy");
|
|
||||||
|
|
||||||
var tuple = (row: 3, column: 3);
|
|
||||||
sheet.Style.Font.FontName = "TimesNewRoman";
|
|
||||||
sheet.Style.Font.FontSize = 10;
|
|
||||||
|
|
||||||
tuple = (AddBlockHead1(sheet, blockHead, (tuple.row, tuple.column)).row, AddBlockHead1(sheet, blockHead, (tuple.row, tuple.column)).column);
|
|
||||||
AddBlockBha(sheet, blockD, tuple);
|
|
||||||
//sheet.Columns().AdjustToContents(8,9);
|
|
||||||
//sheet.Rows().AdjustToContents(3,21);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
//
|
|
||||||
|
|
||||||
private static IXLStyle SetBorder(IXLStyle style)
|
|
||||||
{
|
|
||||||
style.Border.RightBorder = XLBorderStyleValues.Thin;
|
|
||||||
style.Border.LeftBorder = XLBorderStyleValues.Thin;
|
|
||||||
style.Border.TopBorder = XLBorderStyleValues.Thin;
|
|
||||||
style.Border.BottomBorder = XLBorderStyleValues.Thin;
|
|
||||||
style.Border.InsideBorder = XLBorderStyleValues.Thin;
|
|
||||||
return style;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static IXLCell SetDateTime(IXLCell cell)
|
|
||||||
{
|
|
||||||
cell.DataType = XLDataType.DateTime;
|
|
||||||
cell.Style.DateFormat.Format = "DD.MM.YYYY HH:MM:SS";
|
|
||||||
return cell;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static IXLCell SetNumber(IXLCell cell)
|
|
||||||
{
|
|
||||||
cell.DataType = XLDataType.Number;
|
|
||||||
cell.Style.NumberFormat.Format = "0.00";
|
|
||||||
return cell;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static IXLCell SetCell(IXLRow row, int colunm, object value, int maxChartsToWrap = 88)
|
|
||||||
{
|
|
||||||
var cell = row.Cell(colunm);
|
|
||||||
cell.Value = value;
|
|
||||||
|
|
||||||
SetBorder(cell.Style);
|
|
||||||
cell.Style.Alignment.WrapText = true;
|
|
||||||
|
|
||||||
|
|
||||||
if (value is string valueString && valueString.Length > maxChartsToWrap)
|
|
||||||
{
|
|
||||||
var baseHeight = row.Height;
|
|
||||||
row.Height = 0.82d * baseHeight * Math.Ceiling(1d + valueString.Length / maxChartsToWrap);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (value is DateTime)
|
|
||||||
{
|
|
||||||
SetDateTime(cell);
|
|
||||||
}
|
|
||||||
else if (value is IFormattable)
|
|
||||||
{
|
|
||||||
SetNumber(cell);
|
|
||||||
}
|
|
||||||
|
|
||||||
return cell;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static (int row, int column) AddBlockHead1(IXLWorksheet sheet, DailyReportHeadDto blockDto, (int row, int column) tupleStart)
|
|
||||||
{
|
|
||||||
|
|
||||||
var tuple = (row: tupleStart.row, column: tupleStart.column);
|
|
||||||
sheet.Cell(tuple.row, tuple.column).Value =
|
|
||||||
$"Суточная сводка бурения скважины: {blockDto.WellName}, куст: {blockDto.ClusterName}";
|
|
||||||
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 7).Merge();
|
|
||||||
tuple.row += 1;
|
|
||||||
sheet.Cell(tuple.row, tuple.column).Value =
|
|
||||||
$"Заказчик: {blockDto.Customer}";
|
|
||||||
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 7).Merge();
|
|
||||||
tuple.row += 1;
|
|
||||||
sheet.Cell(tuple.row, tuple.column).Value =
|
|
||||||
$"Подрядчик: {blockDto.Contractor}";
|
|
||||||
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 7).Merge();
|
|
||||||
tuple.row += 2;
|
|
||||||
//7,3
|
|
||||||
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge();
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, "Отчетный период");
|
|
||||||
tuple.column += 4;
|
|
||||||
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge();
|
|
||||||
sheet.Cell(tuple.row, tuple.column+3).Style.Border.RightBorder = XLBorderStyleValues.Thin;
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, "Забой за отчетный период, м");
|
|
||||||
tuple.column = tupleStart.column;
|
|
||||||
tuple.row += 1;
|
|
||||||
//8,3
|
|
||||||
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge();
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, "От (дата, время)");
|
|
||||||
tuple.column += 2; //8,5
|
|
||||||
|
|
||||||
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge();
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, "До (дата, время)");
|
|
||||||
tuple.column += 2; //8,7
|
|
||||||
|
|
||||||
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge();
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, "От");
|
|
||||||
tuple.column += 2; //8,9
|
|
||||||
|
|
||||||
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge();
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, "До");
|
|
||||||
sheet.Cell(tuple.row, tuple.column+1).Style.Border.RightBorder = XLBorderStyleValues.Thin;
|
|
||||||
tuple.column = tupleStart.column;
|
|
||||||
tuple.row += 1; //9,3
|
|
||||||
|
|
||||||
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge();
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.ReportDate}");
|
|
||||||
tuple.column += 2;
|
|
||||||
|
|
||||||
//согласно формуле в шаблоне - ячейка С9
|
|
||||||
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge();
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, "");
|
|
||||||
sheet.Cell(tuple.row,tuple.column).FormulaA1 = $"={converteCellCoordinate(tuple.row, true, tuple.column - 2)}-1";
|
|
||||||
SetDateTime(sheet.Cell(tuple.row,tuple.column));
|
|
||||||
tuple.column += 2;
|
|
||||||
|
|
||||||
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge();
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.WellDepthIntervalStartDate}");
|
|
||||||
tuple.column += 2;
|
|
||||||
|
|
||||||
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge();
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.WellDepthIntervalFinishDate}");
|
|
||||||
tuple.column = tupleStart.column;
|
|
||||||
tuple.row += 2; //11,3
|
|
||||||
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 7).Merge().Style.Border.RightBorder = XLBorderStyleValues.Thin;
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, "Данные по траектории скважины на конец суток");
|
|
||||||
tuple.column = tupleStart.column;
|
|
||||||
tuple.row += 1;//12
|
|
||||||
|
|
||||||
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge();
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, "Глубина по стволу");
|
|
||||||
tuple.column += 2; //12,5
|
|
||||||
|
|
||||||
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge();
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, "Глубина по вертикали");
|
|
||||||
tuple.column += 2; //12,7
|
|
||||||
|
|
||||||
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge();
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, "Зенитный угол");
|
|
||||||
tuple.column += 2; //12,9
|
|
||||||
|
|
||||||
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge().Style.Border.RightBorder = XLBorderStyleValues.Thin;
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, "Азимут");
|
|
||||||
tuple.column = tupleStart.column;
|
|
||||||
tuple.row += 1; //13,3
|
|
||||||
|
|
||||||
|
|
||||||
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge();
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.BottomholeDepth}");
|
|
||||||
tuple.column += 2;
|
|
||||||
|
|
||||||
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge();
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.VerticalDepth}");
|
|
||||||
tuple.column += 2;
|
|
||||||
|
|
||||||
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge();
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.ZenithAngle}");
|
|
||||||
tuple.column += 2;
|
|
||||||
|
|
||||||
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge().Style.Border.RightBorder = XLBorderStyleValues.Thin;
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.AzimuthAngle}");
|
|
||||||
tuple.column = tupleStart.column;
|
|
||||||
tuple.row += 2; //15,3
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
sheet.Cell(tuple.row, tuple.column).Value = "Бурильщик 1 смена";
|
|
||||||
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge();
|
|
||||||
tuple.column += 2;
|
|
||||||
sheet.Cell(tuple.row, tuple.column).Value = $"{blockDto.FirstDriller}";
|
|
||||||
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge();
|
|
||||||
tuple.row += 1;
|
|
||||||
tuple.column = tupleStart.column;
|
|
||||||
sheet.Cell(tuple.row, tuple.column).Value = "Бурильщик 2 смена";
|
|
||||||
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge();
|
|
||||||
tuple.column += 2;
|
|
||||||
sheet.Cell(tuple.row, tuple.column).Value = $"{blockDto.SecondDriller}";
|
|
||||||
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge();
|
|
||||||
tuple.row += 2;
|
|
||||||
tuple.column = tupleStart.column;
|
|
||||||
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 2).Merge();
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column,"Работа модулей САУБ:");
|
|
||||||
tuple.column += 3;
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column,"Часов:");
|
|
||||||
tuple.column += 1;
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, "Метров:").Style.Border.RightBorder = XLBorderStyleValues.Thin;
|
|
||||||
tuple.row += 1;
|
|
||||||
tuple.column = tupleStart.column;
|
|
||||||
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 2).Merge();
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column,"АПД (автоматическая подача долота), ч/м:");
|
|
||||||
tuple.column += 3;
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column,$"{blockDto.WorkTimeSAUB}");
|
|
||||||
tuple.column += 1;
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.PenetrationSAUB}").Style.Border.RightBorder = XLBorderStyleValues.Thin;
|
|
||||||
tuple.row += 1;
|
|
||||||
tuple.column = tupleStart.column;
|
|
||||||
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 2).Merge();
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column,"Спин Мастер (осцилляция),ч/м:");
|
|
||||||
tuple.column += 3;
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column,$"{blockDto.WorkTimeSpinMaster}");
|
|
||||||
tuple.column += 1;
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.PenetrationSpinMaster}").Style.Border.RightBorder = XLBorderStyleValues.Thin;
|
|
||||||
tuple.row += 1;
|
|
||||||
tuple.column = tupleStart.column;
|
|
||||||
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 2).Merge();
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column,"Торк Мастер (демпфирование), ч/:");
|
|
||||||
tuple.column += 3;
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column,$"{blockDto.WorkTimeTorkMaster}");
|
|
||||||
tuple.column += 1;
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.PenetrationTorkMaster}").Style.Border.RightBorder = XLBorderStyleValues.Thin;
|
|
||||||
tuple.row += 1;
|
|
||||||
tuple.column = tupleStart.column;
|
|
||||||
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 2).Merge();
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column,"МСЕ, колличество запусков, раз:");
|
|
||||||
tuple.column += 3;
|
|
||||||
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge().Style.Border.RightBorder = XLBorderStyleValues.Thin;
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.CountLaunchesMSE}");
|
|
||||||
tuple.column+=2;
|
|
||||||
return tuple;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static (int row, int column) AddBlockBha(IXLWorksheet sheet, DailyReportSaubDto blockDto, (int row, int column) tupleStart)
|
|
||||||
{
|
|
||||||
tupleStart.row += 2;
|
|
||||||
tupleStart.column = 3;
|
|
||||||
var tuple = (row: tupleStart.row, column: tupleStart.column);
|
|
||||||
|
|
||||||
|
|
||||||
sheet.Range(tuple.row, tuple.column, tuple.row,tuple.column + 7).Merge()
|
|
||||||
.Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, $"Бурение в роторе : {blockDto.RotorDrillingModes}");
|
|
||||||
tuple.row+=1;
|
|
||||||
sheet.Range(tuple.row, tuple.column, tuple.row,tuple.column + 7).Merge()
|
|
||||||
.Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, $"Бурение в слайде : {blockDto.SlideDrillingModes}");
|
|
||||||
tuple.row+=2;
|
|
||||||
|
|
||||||
|
|
||||||
sheet.Range(tuple.row, tuple.column, tuple.row,tuple.column + 7).Merge()
|
|
||||||
.Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, "Бурение в роторе (за отчетный период) с использование САУБ-1");
|
|
||||||
tuple.row+=1;
|
|
||||||
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge();
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, "Проходка");
|
|
||||||
tuple.column+=2;
|
|
||||||
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge();
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, "Часы бурения");
|
|
||||||
tuple.column+=2;
|
|
||||||
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge();
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, "Мех. скорость");
|
|
||||||
tuple.column+=2;
|
|
||||||
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge();
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, "Среднее диф. Давление")
|
|
||||||
.Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
|
|
||||||
tuple.column=tupleStart.column;
|
|
||||||
tuple.row+=1;
|
|
||||||
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge();
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.PenetrationInRotor}");
|
|
||||||
tuple.column+=2;
|
|
||||||
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge();
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.NumberDrillingHours}");
|
|
||||||
tuple.column+=2;
|
|
||||||
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge();
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, "");
|
|
||||||
sheet.Cell(tuple.row,tuple.column).FormulaA1 = FormulaMechanicalSpeed(tuple);
|
|
||||||
tuple.column+=2;
|
|
||||||
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge();
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.AVGDiffDropRotor}")
|
|
||||||
.Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
|
|
||||||
tuple.column=tupleStart.column;
|
|
||||||
tuple.row+=2;
|
|
||||||
|
|
||||||
sheet.Range(tuple.row, tuple.column, tuple.row,tuple.column + 7).Merge()
|
|
||||||
.Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, "Бурение в слайде (за отчетный период) с использование САУБ-1");
|
|
||||||
tuple.row+=1;
|
|
||||||
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge();
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, "Проходка");
|
|
||||||
tuple.column+=2;
|
|
||||||
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge();
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, "Часы бурения");
|
|
||||||
tuple.column+=2;
|
|
||||||
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge();
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, "Мех. скорость");
|
|
||||||
tuple.column+=2;
|
|
||||||
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge()
|
|
||||||
.Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, "Среднее диф. Давление");
|
|
||||||
tuple.column=tupleStart.column;
|
|
||||||
tuple.row+=1;
|
|
||||||
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge();
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.PenetrationInSlide}");
|
|
||||||
tuple.column+=2;
|
|
||||||
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge();
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.DrillingTimeInRotor}");
|
|
||||||
tuple.column+=2;
|
|
||||||
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge();
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, "");
|
|
||||||
sheet.Cell(tuple.row,tuple.column).FormulaA1 = FormulaMechanicalSpeed(tuple);
|
|
||||||
tuple.column+=2;
|
|
||||||
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge()
|
|
||||||
.Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.AVGDiffPressureSlide}");
|
|
||||||
tuple.column=tupleStart.column;
|
|
||||||
tuple.row+=2;
|
|
||||||
|
|
||||||
sheet.Range(tuple.row, tuple.column, tuple.row,tuple.column + 5).Merge();
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, "Итого за отчетный период, использование САУБ-1");
|
|
||||||
tuple.column+=6;
|
|
||||||
sheet.Range(tuple.row,tuple.column, tuple.row + 1,tuple.column + 1).Merge()
|
|
||||||
.Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, "Плановая мех скорость");
|
|
||||||
tuple.column = tupleStart.column;
|
|
||||||
tuple.row += 1;
|
|
||||||
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge();
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, "Проходка");
|
|
||||||
tuple.column+=2;
|
|
||||||
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge();
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, "Часы бурения");
|
|
||||||
tuple.column+=2;
|
|
||||||
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge();
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, "Мех. скорость");
|
|
||||||
tuple.column=tupleStart.column;
|
|
||||||
tuple.row+=1;
|
|
||||||
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge();
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, "");
|
|
||||||
sheet.Cell(tuple.row,tuple.column).FormulaA1 = FormulaSinking(tuple);
|
|
||||||
tuple.column+=2;
|
|
||||||
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge();
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, "");
|
|
||||||
sheet.Cell(tuple.row,tuple.column).FormulaA1 = FormulaDrillingWatch(tuple);
|
|
||||||
tuple.column+=2;
|
|
||||||
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge();
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, "");
|
|
||||||
tuple.column+=2;
|
|
||||||
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 1).Merge()
|
|
||||||
.Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.SectionROPPlan}");
|
|
||||||
tuple.column=tupleStart.column;
|
|
||||||
tuple.row+=2;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge();
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, "Увеличение мех скорости за секцию %");
|
|
||||||
tuple.column+=4;
|
|
||||||
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge()
|
|
||||||
.Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, "");
|
|
||||||
tuple.column=tupleStart.column;
|
|
||||||
tuple.row+=1;
|
|
||||||
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge();
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, "Увеличение мех скорости за сутки %");
|
|
||||||
tuple.column+=4;
|
|
||||||
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge()
|
|
||||||
.Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, "");
|
|
||||||
tuple.column=tupleStart.column;
|
|
||||||
tuple.row+=1;
|
|
||||||
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge();
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, "Сокращение времени бурения за секцию, ч");
|
|
||||||
tuple.column+=4;
|
|
||||||
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge()
|
|
||||||
.Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, "");
|
|
||||||
tuple.column=tupleStart.column;
|
|
||||||
tuple.row+=1;
|
|
||||||
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge();
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, "Ротор / слайд, %");
|
|
||||||
tuple.column+=4;
|
|
||||||
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge()
|
|
||||||
.Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, "");
|
|
||||||
tuple.column=tupleStart.column;
|
|
||||||
tuple.row+=1;
|
|
||||||
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge();
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, "МСП за секцию м/ч.");
|
|
||||||
tuple.column+=4;
|
|
||||||
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge()
|
|
||||||
.Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, "");
|
|
||||||
tuple.column=tupleStart.column;
|
|
||||||
tuple.row+=1;
|
|
||||||
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge();
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, "Время бурения за секцию");
|
|
||||||
tuple.column+=4;
|
|
||||||
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge()
|
|
||||||
.Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.SectionDrillingTimeTotal}");
|
|
||||||
tuple.column=tupleStart.column;
|
|
||||||
tuple.row+=1;
|
|
||||||
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge();
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, "Проходка за секцию");
|
|
||||||
tuple.column+=4;
|
|
||||||
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge()
|
|
||||||
.Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.SectionPenetrationTotal}");
|
|
||||||
tuple.column=tupleStart.column;
|
|
||||||
tuple.row+=1;
|
|
||||||
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge();
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, "Кол- во наращиваний");
|
|
||||||
tuple.column+=4;
|
|
||||||
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge()
|
|
||||||
.Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.ExtensionsCount}");
|
|
||||||
tuple.column=tupleStart.column;
|
|
||||||
tuple.row+=1;
|
|
||||||
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge();
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, "Отклонение от ГГД +/-, сут");
|
|
||||||
tuple.column+=4;
|
|
||||||
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 3).Merge()
|
|
||||||
.Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, $"{blockDto.DeviationFromTVD}");
|
|
||||||
tuple.column=tupleStart.column;
|
|
||||||
tuple.row+=1;
|
|
||||||
sheet.Range(tuple.row,tuple.column, tuple.row,tuple.column + 7).Merge()
|
|
||||||
.Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
|
|
||||||
SetCell(sheet.Row(tuple.row),tuple.column, $"Примечание: {blockDto.DeclinesReasonsROP}");
|
|
||||||
tuple.column += 7;
|
|
||||||
return tuple;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
struct CellAddress
|
|
||||||
{
|
|
||||||
public int Col { get; set; }
|
|
||||||
public int Row { get; set; }
|
|
||||||
//public string GetExcelAddress()
|
|
||||||
//{
|
|
||||||
|
|
||||||
//}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user