diff --git a/AsbCloudApp/Data/DailyReport/DailyReportBhaDto.cs b/AsbCloudApp/Data/DailyReport/DailyReportBhaDto.cs
index 1eef09ab..3347e01f 100644
--- a/AsbCloudApp/Data/DailyReport/DailyReportBhaDto.cs
+++ b/AsbCloudApp/Data/DailyReport/DailyReportBhaDto.cs
@@ -1,5 +1,5 @@
using System;
-namespace AsbCloudApp.Data.DailyReportModel
+namespace AsbCloudApp.Data.DailyReport
{
public class DailyReportBhaDto
{
diff --git a/AsbCloudApp/Data/DailyReport/DailyReportDimensionlessDto.cs b/AsbCloudApp/Data/DailyReport/DailyReportDimensionlessDto.cs
index 27766df6..39fae88d 100644
--- a/AsbCloudApp/Data/DailyReport/DailyReportDimensionlessDto.cs
+++ b/AsbCloudApp/Data/DailyReport/DailyReportDimensionlessDto.cs
@@ -1,5 +1,5 @@
using System;
-namespace AsbCloudApp.Data.DailyReportModel
+namespace AsbCloudApp.Data.DailyReport
{
public class DailyReportDimensionlessDto
{
diff --git a/AsbCloudApp/Data/DailyReport/DailyReportHeadDto.cs b/AsbCloudApp/Data/DailyReport/DailyReportHeadDto.cs
index 615859ca..db9d9d4d 100644
--- a/AsbCloudApp/Data/DailyReport/DailyReportHeadDto.cs
+++ b/AsbCloudApp/Data/DailyReport/DailyReportHeadDto.cs
@@ -1,5 +1,5 @@
using System;
-namespace AsbCloudApp.Data.DailyReportModel
+namespace AsbCloudApp.Data.DailyReport
{
public class DailyReportHeadDto
diff --git a/AsbCloudApp/Data/DailyReport/DailyReportSaubDto.cs b/AsbCloudApp/Data/DailyReport/DailyReportSaubDto.cs
index b9a2a032..c5ea8559 100644
--- a/AsbCloudApp/Data/DailyReport/DailyReportSaubDto.cs
+++ b/AsbCloudApp/Data/DailyReport/DailyReportSaubDto.cs
@@ -1,7 +1,7 @@
using System;
using System.Collections.Generic;
-namespace AsbCloudApp.Data.DailyReportModel
+namespace AsbCloudApp.Data.DailyReport
{
public class DailyReportSaubDto
{
diff --git a/AsbCloudApp/Data/DailyReport/DailyReportSignDto.cs b/AsbCloudApp/Data/DailyReport/DailyReportSignDto.cs
index 3c1bd223..974e939c 100644
--- a/AsbCloudApp/Data/DailyReport/DailyReportSignDto.cs
+++ b/AsbCloudApp/Data/DailyReport/DailyReportSignDto.cs
@@ -1,5 +1,5 @@
using System;
-namespace AsbCloudApp.Data.DailyReportModel
+namespace AsbCloudApp.Data.DailyReport
{
public class DailyReportSignDto
{
diff --git a/AsbCloudApp/Data/DailyReportDto.cs b/AsbCloudApp/Data/DailyReportDto.cs
index 2137e510..f9bf7e36 100644
--- a/AsbCloudApp/Data/DailyReportDto.cs
+++ b/AsbCloudApp/Data/DailyReportDto.cs
@@ -1,216 +1,23 @@
using System;
using System.Collections.Generic;
+using AsbCloudApp.Data.DailyReport;
+
namespace AsbCloudApp.Data
{
///
- /// Параметры для формирования суточного рапорта
+ /// Блоки для формирования суточного рапорта
///
public class DailyReportDto
{
- ///
- /// название скважины
- ///
- public string WellName { get; set; }
+
+ public DailyReportHeadDto HeadDto { get; set; }
+ public DailyReportBhaDto BhaDto { get; set; }
+ public DailyReportDimensionlessDto DimensionlessDto { get; set; }
+ public DailyReportTimeBalanceDto TimeBalanceDto { get; set; }
+ public DailyReportSaubDto SaubDto { get; set; }
+ public DailyReportSignDto SignDto { get; set; }
- ///
- /// название куста
- ///
- public string ClusterName { get; set; }
- ///
- /// заказчик
- ///
- public string Customer { get; set; }
-
- ///
- /// подрядчик
- ///
- public string Contractor { get; set; }
-
- ///
- /// дата рапорта
- ///
- public DateTime ReportDate { get; set; }
-
- ///
- /// глубина забоя на дату начала интервала
- ///
- public double? WellDepthIntervalStartDate { get; set; }
-
- ///
- /// глубина забоя на дату окончания интервала
- ///
- public double? WellDepthIntervalFinishDate { get; set; }
-
- ///
- /// Глубина забоя по стволу на окончание отчетного периода
- ///
- public double? BottomholeDepth { get; set; }
-
- ///
- /// Глубина забоя по вертикали на дату окончания отчетного периода
- ///
- public double? VerticalDepth { get; set; }
-
- ///
- /// Зенитный угол на дату окончания отчетного периода
- ///
- public double? ZenithAngle { get; set; }
-
- ///
- /// Азимутальный угол на дату окончания отчетного периода
- ///
- public double? AzimuthAngle { get; set; }
-
- ///
- /// ФИО бурильщиков
- ///
- public string FirstDriller { get; set; }
-
- ///
- /// ФИО бурильщиков
- ///
- public string SecondDriller { get; set; }
-
- ///
- /// Время работы АПД
- ///
- public double? WorkTimeSAUB { get; set; }
-
- ///
- /// Время работы спин мастер
- ///
- public double? WorkTimeSpinMaster { get; set; }
-
- ///
- /// Время работы torqueMaster
- ///
- public double? WorkTimeTorkMaster { get; set; }
-
- ///
- /// количество метров пробуренных с включенным АПД
- ///
- public double? PenetrationSAUB { get; set; }
-
- ///
- /// количество метров пробуренных с включенным Спин мастер
- ///
- public double? PenetrationSpinMaster { get; set; }
-
- ///
- /// количество метров пробуренных с включенным torqueMaster
- ///
- public double? PenetrationTorkMaster { get; set; }
-
- ///
- /// Количество запусков МСЕ
- ///
- public int CountLaunchesMSE { get; set; }
-
- ///
- /// КНБК описание
- ///
- public string BHADescription { get; set; }
-
- ///
- /// Нормативное время на одну операцию по подготовке ствола скважины к наращиванию
- ///
- public double? StandardTimeBarrelPreparation { get; set; }
-
- ///
- /// Нормативное время на одну операцию по наращиванию
- ///
- public double? StandardTimeExtension { get; set; }
-
- ///
- /// Фактическое время проработок при подготовке ствола скважины к наращиванию.
- ///
- public double? ActualTimeBarrelPreparation { get; set; }
-
- ///
- /// Фактическое время наращиваний
- ///
- public double? ActualTimeExtension { get; set; }
-
- ///
- /// Режимы бурения в роторе
- ///
- public IEnumerable RotorDrillingModes { get; set; }
-
- ///
- /// режимы бурения в слайде
- ///
- public IEnumerable SlideDrillingModes { get; set; }
-
- ///
- /// Количество метров пробуренных в роторе за отчетный период
- ///
- public double? PenetrationInRotor { get; set; }
-
- ///
- /// Количество часов бурения в роторе за отчетный период
- ///
- public double? NumberDrillingHours { get; set; }
-
- ///
- /// средний диф перепад в роторе за отчетный период
- ///
- public double? AVGDiffDropRotor { get; set; }
-
- ///
- /// количество метров пробуренных в слайде за отчетный период
- ///
- public double? PenetrationInSlide { get; set; }
-
- ///
- /// время бурения в роторе за отчетный период
- ///
- public double? DrillingTimeInRotor { get; set; }
-
- ///
- /// средний диф. перепад в слайде за отчетный период
- ///
- public double? AVGDiffPressureSlide { get; set; }
-
- ///
- /// Плановая МСП за секцию
- ///
- public double? SectionROPPlan { get; set; }
-
- ///
- /// Общее время бурения за секцию
- ///
- public double? SectionDrillingTimeTotal { get; set; }
-
- ///
- /// Общая проходка за секцию
- ///
- public double? SectionPenetrationTotal { get; set; }
-
- ///
- /// Количество наращиваний за отчетный период
- ///
- public int ExtensionsCount { get; set; }
-
- ///
- /// Отклонение относительно ГГД
- ///
- public double? DeviationFromTVD { get; set; }
-
- ///
- /// указываются все причины, которые влияют на снижение МСП.
- ///
- public string DeclinesReasonsROP { get; set; }
-
- ///
- /// ФИО Мастера буровой
- ///
- public string DrillingMaster { get; set; }
-
- ///
- /// ФИО супервайзера
- ///
- public string Supervisor { get; set; }
}
}
diff --git a/AsbCloudDb/Model/DailyReportDB/DailyReportBha.cs b/AsbCloudDb/Model/DailyReportDB/DailyReportBha.cs
index 142ed009..8adc9512 100644
--- a/AsbCloudDb/Model/DailyReportDB/DailyReportBha.cs
+++ b/AsbCloudDb/Model/DailyReportDB/DailyReportBha.cs
@@ -1,5 +1,5 @@
using System;
-namespace AsbCloudApp.Data.DailyReportModel
+namespace AsbCloudDb.Model.DailyReportDB
{
public class DailyReportBha
{
diff --git a/AsbCloudDb/Model/DailyReportDB/DailyReportDb.cs b/AsbCloudDb/Model/DailyReportDB/DailyReportDb.cs
index 874fc154..a4e16ec3 100644
--- a/AsbCloudDb/Model/DailyReportDB/DailyReportDb.cs
+++ b/AsbCloudDb/Model/DailyReportDB/DailyReportDb.cs
@@ -1,7 +1,7 @@
using System;
using Microsoft.EntityFrameworkCore;
using System.ComponentModel.DataAnnotations.Schema;
-using AsbCloudApp.Data.DailyReportModel;
+
namespace AsbCloudDb.Model.DailyReportDB
{
#nullable disable
@@ -15,7 +15,7 @@ namespace AsbCloudDb.Model.DailyReportDB
public DateTimeOffset StartDate { get; set; }
[Column("blockHead", TypeName = "jsonb"), Comment("1 блок параметров для отчёта")]
- public DailyReportHead BlockHead { get; set; }
+ public DailyReportInfo BlockHead { get; set; }
[Column("blockBha", TypeName = "jsonb"), Comment("2 блок параметров для отчёта")]
public DailyReportBha BlockBha { get; set; }
diff --git a/AsbCloudDb/Model/DailyReportDB/DailyReportDimensionless.cs b/AsbCloudDb/Model/DailyReportDB/DailyReportDimensionless.cs
index 7ca1697d..42b84e62 100644
--- a/AsbCloudDb/Model/DailyReportDB/DailyReportDimensionless.cs
+++ b/AsbCloudDb/Model/DailyReportDB/DailyReportDimensionless.cs
@@ -1,5 +1,5 @@
using System;
-namespace AsbCloudApp.Data.DailyReportModel
+namespace AsbCloudDb.Model.DailyReportDB
{
public class DailyReportDimensionless
{
diff --git a/AsbCloudDb/Model/DailyReportDB/DailyReportHead.cs b/AsbCloudDb/Model/DailyReportDB/DailyReportHead.cs
index e49a9a0f..3e2120c8 100644
--- a/AsbCloudDb/Model/DailyReportDB/DailyReportHead.cs
+++ b/AsbCloudDb/Model/DailyReportDB/DailyReportHead.cs
@@ -1,5 +1,5 @@
using System;
-namespace AsbCloudApp.Data.DailyReportModel
+namespace AsbCloudDb.Model.DailyReportDB
{
public class DailyReportHead
{
diff --git a/AsbCloudDb/Model/DailyReportDB/DailyReportSaub.cs b/AsbCloudDb/Model/DailyReportDB/DailyReportSaub.cs
index 1d45aa14..77ea88f0 100644
--- a/AsbCloudDb/Model/DailyReportDB/DailyReportSaub.cs
+++ b/AsbCloudDb/Model/DailyReportDB/DailyReportSaub.cs
@@ -1,7 +1,7 @@
using System;
using System.Collections.Generic;
-namespace AsbCloudApp.Data.DailyReportModel
+namespace AsbCloudDb.Model.DailyReportDB
{
public class DailyReportSaub
{
diff --git a/AsbCloudDb/Model/DailyReportDB/DailyReportSign.cs b/AsbCloudDb/Model/DailyReportDB/DailyReportSign.cs
index 31d951b0..99373e2f 100644
--- a/AsbCloudDb/Model/DailyReportDB/DailyReportSign.cs
+++ b/AsbCloudDb/Model/DailyReportDB/DailyReportSign.cs
@@ -1,5 +1,5 @@
using System;
-namespace AsbCloudApp.Data.DailyReportModel
+namespace AsbCloudDb.Model.DailyReportDB
{
public class DailyReportSign
{
diff --git a/AsbCloudDb/Model/DailyReportDB/DailyReportTimeBalance.cs b/AsbCloudDb/Model/DailyReportDB/DailyReportTimeBalance.cs
new file mode 100644
index 00000000..21b7a7ee
--- /dev/null
+++ b/AsbCloudDb/Model/DailyReportDB/DailyReportTimeBalance.cs
@@ -0,0 +1,103 @@
+using System;
+namespace AsbCloudDb.Model.DailyReportDB
+{
+ public class DailyReportTimeBalance
+ {
+
+ ///
+ /// Бурение
+ ///
+ public string Drilling { get; set; }
+
+ ///
+ /// Промывка
+ ///
+ public string Flushing { get; set; }
+
+ ///
+ /// Наращивание
+ ///
+ public string Building { get; set; }
+
+ ///
+ /// Проработка
+ ///
+ public string Elaboration { get; set; }
+
+ ///
+ /// Расширка
+ ///
+ public string Extension { get; set; }
+
+ ///
+ /// Ремонт
+ ///
+ public string Repair { get; set; }
+
+
+
+ ///
+ /// КНБК
+ ///
+ public string Knbk { get; set; }
+
+ ///
+ /// СПО
+ ///
+ public string Spo { get; set; }
+
+ ///
+ /// ПЗР
+ ///
+ public string Pzr { get; set; }
+
+ ///
+ /// ПВО
+ ///
+ public string Pvo { get; set; }
+
+ ///
+ /// ПГР
+ ///
+ public string Pgr { get; set; }
+
+ ///
+ /// ГИС
+ ///
+ public string Gis { get; set; }
+
+
+ ///
+ /// ОЗЦ
+ ///
+ public string Ozc { get; set; }
+
+ ///
+ /// Тех. работы
+ ///
+ public string EngineeringWorks { get; set; }
+
+ ///
+ /// Снятие замера
+ ///
+ public string TakingMeasure { get; set; }
+
+ ///
+ /// Цементирование
+ ///
+ public string Cementing { get; set; }
+
+ ///
+ /// Простой
+ ///
+ public string Simple { get; set; }
+
+ ///
+ /// НПВ
+ ///
+ public string Npv { get; set; }
+
+
+ }
+}
+
diff --git a/AsbCloudDb/Model/DailyReportInfo.cs b/AsbCloudDb/Model/DailyReportInfo.cs
index 5f611f29..40833d8d 100644
--- a/AsbCloudDb/Model/DailyReportInfo.cs
+++ b/AsbCloudDb/Model/DailyReportInfo.cs
@@ -1,215 +1,18 @@
using System;
using System.Collections.Generic;
+using AsbCloudDb.Model.DailyReportDB;
namespace AsbCloudDb.Model
{
#nullable disable
public class DailyReportInfo
{
- ///
- /// название скважины
- ///
- public string WellName { get; set; }
-
- ///
- /// название куста
- ///
- public string ClusterName { get; set; }
-
- ///
- /// заказчик
- ///
- public string Customer { get; set; }
-
- ///
- /// подрядчик
- ///
- public string Contractor { get; set; }
-
- ///
- /// дата рапорта
- ///
- public DateTimeOffset ReportDate { get; set; }
-
- ///
- /// глубина забоя на дату начала интервала
- ///
- public double? WellDepthIntervalStartDate { get; set; }
-
- ///
- /// глубина забоя на дату окончания интервала
- ///
- public double? WellDepthIntervalFinishDate { get; set; }
-
- ///
- /// Глубина забоя по стволу на окончание отчетного периода
- ///
- public double? BottomholeDepth { get; set; }
-
- ///
- /// Глубина забоя по вертикали на дату окончания отчетного периода
- ///
- public double? VerticalDepth { get; set; }
-
- ///
- /// Зенитный угол на дату окончания отчетного периода
- ///
- public double? ZenithAngle { get; set; }
-
- ///
- /// Азимутальный угол на дату окончания отчетного периода
- ///
- public double? AzimuthAngle { get; set; }
-
- ///
- /// ФИО бурильщиков
- ///
- public string FirstDriller { get; set; }
-
- ///
- /// ФИО бурильщиков
- ///
- public string SecondDriller { get; set; }
-
- ///
- /// Время работы АПД
- ///
- public double? WorkTimeSAUB { get; set; }
-
- ///
- /// Время работы спин мастер
- ///
- public double? WorkTimeSpinMaster { get; set; }
-
- ///
- /// Время работы torqueMaster
- ///
- public double? WorkTimeTorkMaster { get; set; }
-
- ///
- /// количество метров пробуренных с включенным АПД
- ///
- public double? PenetrationSAUB { get; set; }
-
- ///
- /// количество метров пробуренных с включенным Спин мастер
- ///
- public double? PenetrationSpinMaster { get; set; }
-
- ///
- /// количество метров пробуренных с включенным torqueMaster
- ///
- public double? PenetrationTorkMaster { get; set; }
-
- ///
- /// Количество запусков МСЕ
- ///
- public int CountLaunchesMSE { get; set; }
-
- ///
- /// КНБК описание
- ///
- public string BHADescription { get; set; }
-
- ///
- /// Нормативное время на одну операцию по подготовке ствола скважины к наращиванию
- ///
- public double? StandardTimeBarrelPreparation { get; set; }
-
- ///
- /// Нормативное время на одну операцию по наращиванию
- ///
- public double? StandardTimeExtension { get; set; }
-
- ///
- /// Фактическое время проработок при подготовке ствола скважины к наращиванию.
- ///
- public double? ActualTimeBarrelPreparation { get; set; }
-
- ///
- /// Фактическое время наращиваний
- ///
- public double? ActualTimeExtension { get; set; }
-
- ///
- /// Режимы бурения в роторе
- ///
- public IEnumerable RotorDrillingModes { get; set; }
-
- ///
- /// режимы бурения в слайде
- ///
- public IEnumerable SlideDrillingModes { get; set; }
-
- ///
- /// Количество метров пробуренных в роторе за отчетный период
- ///
- public double? PenetrationInRotor { get; set; }
-
- ///
- /// Количество часов бурения в роторе за отчетный период
- ///
- public double? NumberDrillingHours { get; set; }
-
- ///
- /// средний диф перепад в роторе за отчетный период
- ///
- public double? AVGDiffDropRotor { get; set; }
-
- ///
- /// количество метров пробуренных в слайде за отчетный период
- ///
- public double? PenetrationInSlide { get; set; }
-
- ///
- /// время бурения в роторе за отчетный период
- ///
- public double? DrillingTimeInRotor { get; set; }
-
- ///
- /// средний диф перепад в слайде за отчетный период
- ///
- public double? AVGDiffPressureSlide { get; set; }
-
- ///
- /// Плановая МСП за секцию
- ///
- public double? SectionROPPlan { get; set; }
-
- ///
- /// Общее время бурения за секцию
- ///
- public double? SectionDrillingTimeTotal { get; set; }
-
- ///
- /// Общая проходка за секцию
- ///
- public double? SectionPenetrationTotal { get; set; }
-
- ///
- /// Количество наращиваний за отчетный период
- ///
- public int ExtensionsCount { get; set; }
-
- ///
- /// Отклонение относительно ГГД
- ///
- public double? DeviationFromTVD { get; set; }
-
- ///
- /// указываются все причины, которые влияют на снижение МСП.
- ///
- public string DeclinesReasonsROP { get; set; }
-
- ///
- /// ФИО Мастера буровой
- ///
- public string DrillingMaster { get; set; }
-
- ///
- /// ФИО супервайзера
- ///
- public string Supervisor { get; set; }
+ public DailyReportHead HeadInfo { get; set; }
+ public DailyReportBha BhaDto { get; set; }
+ public DailyReportDimensionless DimensionlessInfo { get; set; }
+ public DailyReportTimeBalance TimeBalanceInfo { get; set; }
+ public DailyReportSaub SaubInfo { get; set; }
+ public DailyReportSign SignInfo { get; set; }
}
}
diff --git a/AsbCloudInfrastructure/Services/DailyReport/BlockAbstract.cs b/AsbCloudInfrastructure/Services/DailyReport/BlockAbstract.cs
index 2a8440c3..cebcb11f 100644
--- a/AsbCloudInfrastructure/Services/DailyReport/BlockAbstract.cs
+++ b/AsbCloudInfrastructure/Services/DailyReport/BlockAbstract.cs
@@ -1,95 +1,7 @@
-using AsbCloudApp.Data.DailyReportModel;
-using AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks;
-using ClosedXML.Excel;
-using System.Linq;
+using ClosedXML.Excel;
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; }
-
- ///
- /// Значение нижняя правая ячейка блока
- ///
- public override CellAddress AddressBlockBegin { get; }
-
- ///
- /// Значение нижняя правая ячейка блока
- ///
- 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
{
public abstract CellAddress AddressBlockBegin { get; }
diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/BhaBlock.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/BhaBlock.cs
index 36c1c935..7c536e04 100644
--- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/BhaBlock.cs
+++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/BhaBlock.cs
@@ -1,5 +1,5 @@
using System;
-using AsbCloudApp.Data.DailyReportModel;
+using AsbCloudApp.Data.DailyReport;
using ClosedXML.Excel;
namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
@@ -10,24 +10,14 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
private readonly DailyReportBhaDto blockDto;
public CellAddress AddressBhaDescription { get; }
-
public CellAddress AddressOperationTitle { get; }
public CellAddress AddressDurationTitle { get; }
public CellAddress AddressTotalTitle { get; }
-
public CellAddress[] AddressOperationData { get; }
public CellAddress[] AddressDurationDataStart { get; }
public CellAddress[] AddressDurationDataFinish { get; }
public CellAddress[] AddressTotaData { get; }
-
- ///
- /// Значение нижняя правая ячейка блока
- ///
public override CellAddress AddressBlockBegin { get; }
-
- ///
- /// Значение нижняя правая ячейка блока
- ///
public override CellAddress AddressBlockEnd { get; }
public BhaBlock(CellAddress addressBlockBegin, DailyReportBhaDto blockDto)
@@ -40,36 +30,29 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
AddressDurationTitle = addressBlockBegin + (3, 5);
AddressTotalTitle = addressBlockBegin + (3, 7);
AddressOperationData = new CellAddress[5];
-
AddressOperationData[0] = addressBlockBegin + (4, 0);
AddressOperationData[1] = addressBlockBegin + (5, 0);
AddressOperationData[2] = addressBlockBegin + (6, 0);
AddressOperationData[3] = addressBlockBegin + (7, 0);
AddressOperationData[4] = addressBlockBegin + (8, 0);
-
AddressDurationDataStart = new CellAddress[5];
AddressDurationDataStart[0] = addressBlockBegin + (4, 5);
AddressDurationDataStart[1] = addressBlockBegin + (5, 5);
AddressDurationDataStart[2] = addressBlockBegin + (6, 5);
AddressDurationDataStart[3] = addressBlockBegin + (7, 5);
AddressDurationDataStart[4] = addressBlockBegin + (8, 5);
-
AddressDurationDataFinish = new CellAddress[5];
AddressDurationDataFinish[0] = addressBlockBegin + (4, 6);
AddressDurationDataFinish[1] = addressBlockBegin + (5, 6);
AddressDurationDataFinish[2] = addressBlockBegin + (6, 6);
AddressDurationDataFinish[3] = addressBlockBegin + (7, 6);
AddressDurationDataFinish[4] = addressBlockBegin + (8, 6);
-
AddressTotaData = new CellAddress[5];
AddressTotaData[0] = addressBlockBegin + (4, 7);
AddressTotaData[1] = addressBlockBegin + (5, 7);
AddressTotaData[2] = addressBlockBegin + (6, 7);
AddressTotaData[3] = addressBlockBegin + (7, 7);
AddressTotaData[4] = addressBlockBegin + (8, 7);
-
-
-
AddressBlockEnd = AddressTotaData[4];
}
@@ -83,15 +66,12 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
sheet._Range(AddressBhaDescription, AddressBhaDescription + (0, 7))
._SetValue($"{blockDto.BHADescription}");
-
-
sheet._Range(AddressOperationTitle, AddressOperationTitle + (0, 4))
._SetValue("Выполняемые операции в отчетный период, комментарии:");
sheet._Range(AddressDurationTitle, AddressDurationTitle + (0, 1))
._SetValue("Продолжительность, ч. ");
sheet.Cell(AddressTotalTitle)
._SetValue("Итого");
-
sheet._Range(AddressOperationData[0], AddressOperationData[0] + (0, 4))
._SetValue("Бурение с наращиваниями в инт. 2195-2763м.");
sheet.Cell(AddressDurationDataStart[0])
@@ -100,7 +80,6 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
._SetValue($"{blockDto.ExtensionDrillingOneFinish}");
sheet.Cell(AddressTotaData[0])
.SetFormulaA1($"{FormulaBhaBlock(AddressDurationDataStart[0], AddressDurationDataFinish[0])}");
-
sheet._Range(AddressOperationData[1], AddressOperationData[1] + (0, 4))
._SetValue("Промывка.");
sheet.Cell(AddressDurationDataStart[1])
@@ -109,7 +88,6 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
._SetValue($"{blockDto.SluiceBegin}");
sheet.Cell(AddressTotaData[1])
.SetFormulaA1($"{FormulaBhaBlock(AddressDurationDataStart[1], AddressDurationDataFinish[1])}");
-
sheet._Range(AddressOperationData[2], AddressOperationData[2] + (0, 4))
._SetValue("Подъем КНБК в инт. 2763-2442м.");
sheet.Cell(AddressDurationDataStart[2])
@@ -118,7 +96,6 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
._SetValue($"{blockDto.ClimbFinish}");
sheet.Cell(AddressTotaData[2])
.SetFormulaA1($"{FormulaBhaBlock(AddressDurationDataStart[2], AddressDurationDataFinish[2])}");
-
sheet._Range(AddressOperationData[3], AddressOperationData[3] + (0, 4))
._SetValue("Спуск КНБК в инт. 2442-2763м.");
sheet.Cell(AddressDurationDataStart[3])
@@ -127,7 +104,6 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
._SetValue($"{blockDto.DescentFinish}");
sheet.Cell(AddressTotaData[3])
.SetFormulaA1($"{FormulaBhaBlock(AddressDurationDataStart[3], AddressDurationDataFinish[3])}");
-
sheet._Range(AddressOperationData[4], AddressOperationData[4] + (0, 4))
._SetValue("Бурение с наращиваниями в инт. 2763-2850м.");
sheet.Cell(AddressDurationDataStart[4])
@@ -136,8 +112,6 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
._SetValue($"{blockDto.ExtensionDrillingTwoFinish}");
sheet.Cell(AddressTotaData[4])
.SetFormulaA1($"{FormulaBhaBlock(AddressDurationDataStart[4], AddressDurationDataFinish[4])}");
-
-
}
}
}
diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/DimensionlessBlock.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/DimensionlessBlock.cs
index d72f977a..afe7053a 100644
--- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/DimensionlessBlock.cs
+++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/DimensionlessBlock.cs
@@ -1,5 +1,5 @@
using System;
-using AsbCloudApp.Data.DailyReportModel;
+using AsbCloudApp.Data.DailyReport;
using ClosedXML.Excel;
namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
@@ -9,50 +9,106 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
{
private readonly DailyReportDimensionlessDto blockDto;
- public CellAddress AddressBhaDescription { get; }
-
-
- public CellAddress[] AddressPeriodTableDataArray { get; }
-
- ///
- /// Значение нижняя правая ячейка блока
- ///
+ private readonly SaubBlock saubBlock;
+ public CellAddress AddressDimensionTitle { get; }
+ public CellAddress AddressPreparationTitle { get; }
+ public CellAddress AddressExtensionTitle { get; }
+ public CellAddress AddressPreparationDescription { get; }
+ public CellAddress AddressExtensionDescription { get; }
+ public CellAddress[] AddressPreparationHead { get; }
+ public CellAddress[] AddressPreparationValue { get; }
+ public CellAddress[] AddressExtensionHead { get; }
+ public CellAddress[] AddressExtensionValue { get; }
+ public CellAddress AddressBlockFormula { get; }
public override CellAddress AddressBlockBegin { get; }
-
- ///
- /// Значение нижняя правая ячейка блока
- ///
public override CellAddress AddressBlockEnd { get; }
-
public DimensionlessBlock(CellAddress addressBlockBegin, DailyReportDimensionlessDto blockDto)
{
AddressBlockBegin = addressBlockBegin.Copy();
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}";
+ }
-
-
- //AddressBlockEnd = AddressesExampleDataArray.Last();
+ private string FormulaBlockExcess(CellAddress cellFact, CellAddress cellPlan)
+ {
+ return $"={cellFact}-{cellPlan}";
}
public override void Draw(IXLWorksheet sheet)
{
- // sheet.Range(AddressBhaDescription, AddressBhaDescription + (0, 7))
- // ._SetValue($"{blockDto.BHADescription}");
-
-
-
-
-
-
-
-
-
- // sheet._Range(AddressExampleData1, AddressExampleData1 + (0, 4))
- // ._SetValue(blockDto.BottomholeDepth); // для примера с будущей формулой
+ sheet._Range(AddressDimensionTitle, AddressDimensionTitle + (0, 1))
+ ._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))
+ ._SetValue("Проработка при бур, план (ч):");
+ 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("Наращивание");
}
}
diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/HeadBlock.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/HeadBlock.cs
index 28c0c688..adce76aa 100644
--- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/HeadBlock.cs
+++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/HeadBlock.cs
@@ -1,7 +1,5 @@
-using AsbCloudApp.Data.DailyReportModel;
-using AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks;
+using AsbCloudApp.Data.DailyReport;
using ClosedXML.Excel;
-using System.Linq;
namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
{
@@ -20,39 +18,21 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
public CellAddress AddressDrillerOne { get; }
public CellAddress AddressDrillerTwoTitle { get; }
public CellAddress AddressDrillerTwo { get; }
-
public CellAddress AddressWorkSaubTitle { get; }
public CellAddress AddressWatchTitle { get; }
public CellAddress AddressMetreTitle { get; }
-
public CellAddress[] AddressWorkSaubData { get; }
public CellAddress[] AddressWatchData { get; }
public CellAddress[] AddressMetreData { get; }
-
-
-
public CellAddress[] AddressPeriodTableHeadArray { get; }
public CellAddress[] AddressPeriodTableDataArray { get; }
-
public CellAddress[] AddressTrajectoryTableHeadArray { get; }
public CellAddress[] AddressTrajectoryTableDataArray { get; }
- ///
- /// Значение нижняя правая ячейка блока
- ///
public override CellAddress AddressBlockBegin { get; }
-
- ///
- /// Значение нижняя правая ячейка блока
- ///
- public override CellAddress AddressBlockEnd { get; }
- public void WriteRowToArray(CellAddress[] cellsArray, CellAddress startCells)
- {
-
- }
+ public override CellAddress AddressBlockEnd { get; }
public HeadBlock(CellAddress addressBlockBegin, DailyReportHeadDto blockDto)
{
AddressBlockBegin = addressBlockBegin.Copy();
-
this.blockDto = blockDto;
AddressTitle = addressBlockBegin + (0, 0);
AddressCustomer = addressBlockBegin + (1, 0);
@@ -87,24 +67,20 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
AddressWorkSaubTitle = addressBlockBegin + (15, 0);
AddressWatchTitle = addressBlockBegin + (15, 3);
AddressMetreTitle = addressBlockBegin + (15, 4);
-
AddressWorkSaubData = new CellAddress[4];
AddressWorkSaubData[0] = addressBlockBegin + (16, 0);
AddressWorkSaubData[1] = addressBlockBegin + (17, 0);
AddressWorkSaubData[2] = addressBlockBegin + (18, 0);
AddressWorkSaubData[3] = addressBlockBegin + (19, 0);
-
AddressWatchData = new CellAddress[4];
AddressWatchData[0] = addressBlockBegin + (16, 3);
AddressWatchData[1] = addressBlockBegin + (17, 3);
AddressWatchData[2] = addressBlockBegin + (18, 3);
AddressWatchData[3] = addressBlockBegin + (19, 3);
-
AddressMetreData = new CellAddress[4];
AddressMetreData[0] = addressBlockBegin + (16, 4);
AddressMetreData[1] = addressBlockBegin + (17, 4);
AddressMetreData[2] = addressBlockBegin + (18, 4);
-
AddressBlockEnd = AddressWatchData[3]+(0,1);
}
@@ -114,22 +90,17 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
sheet._Range(AddressTitle, AddressTitle + (0, 7))
._SetValue($"Суточная сводка бурения скважины: {blockDto.WellName}, куст: {blockDto.ClusterName}")
- .Style.SetH1();
-
+ .Style.SetH1();
sheet._Range(AddressCustomer, AddressCustomer + (0, 7))
._SetValue($"Заказчик: {blockDto.Customer}")
.Style.SetH1();
-
sheet._Range(AddressDriller, AddressDriller + (0, 7))
._SetValue($"Подрядчик: {blockDto.Contractor}")
.Style.SetH1();
-
sheet._Range(AddressPeriod, AddressPeriod + (0, 3))
._SetValue("Отчетный период");
-
sheet._Range(AddressSlaughter, AddressSlaughter + (0, 3))
._SetValue("Забой за отчетный период, м");
-
sheet._Range(AddressPeriodTableHeadArray[0], AddressPeriodTableHeadArray[0] + (0, 1))
._SetValue("От (дата, время)");
sheet._Range(AddressPeriodTableHeadArray[1], AddressPeriodTableHeadArray[1] + (0, 1))
@@ -138,19 +109,17 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
._SetValue("От");
sheet._Range(AddressPeriodTableHeadArray[3], AddressPeriodTableHeadArray[3] + (0, 1))
._SetValue("До");
-
sheet._Range(AddressPeriodTableDataArray[0], AddressPeriodTableDataArray[0] + (0, 1))
._SetValue($"{blockDto.ReportDate}");
- sheet._Range(AddressPeriodTableDataArray[1], AddressPeriodTableDataArray[1] + (0, 1))
- ._SetValue("До (дата, время)");
+ sheet._Range(AddressPeriodTableDataArray[1], AddressPeriodTableDataArray[1] + (0, 1));
+ sheet.Cell(AddressPeriodTableDataArray[1])
+ .SetFormulaA1($"={AddressPeriodTableDataArray[0].ToString()}-1");
sheet._Range(AddressPeriodTableDataArray[2], AddressPeriodTableDataArray[2] + (0, 1))
._SetValue($"{blockDto.WellDepthIntervalStartDate}");
sheet._Range(AddressPeriodTableDataArray[3], AddressPeriodTableDataArray[3] + (0, 1))
._SetValue($"{blockDto.WellDepthIntervalFinishDate}");
-
sheet._Range(AddressTrajectoryTableTitle, AddressTrajectoryTableTitle + (0, 7))
._SetValue("Данные по траектории скважины на конец суток");
-
sheet._Range(AddressTrajectoryTableHeadArray[0], AddressTrajectoryTableHeadArray[0] + (0, 1))
._SetValue("Глубина по стволу");
sheet._Range(AddressTrajectoryTableHeadArray[1], AddressTrajectoryTableHeadArray[1] + (0, 1))
@@ -159,7 +128,6 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
._SetValue("Зенитный угол");
sheet._Range(AddressTrajectoryTableHeadArray[3], AddressTrajectoryTableHeadArray[3] + (0, 1))
._SetValue("Азимут");
-
sheet._Range(AddressTrajectoryTableDataArray[0], AddressTrajectoryTableDataArray[0] + (0, 1))
._SetValue($"{blockDto.BottomholeDepth}");
sheet._Range(AddressTrajectoryTableDataArray[1], AddressTrajectoryTableDataArray[1] + (0, 1))
@@ -168,7 +136,6 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
._SetValue($"{blockDto.ZenithAngle}");
sheet._Range(AddressTrajectoryTableDataArray[3], AddressTrajectoryTableDataArray[3] + (0, 1))
._SetValue($"{blockDto.AzimuthAngle}");
-
sheet._Range(AddressDrillerOneTitle, AddressDrillerOneTitle + (0, 1))
._SetValue("Бурильщик 1 смена");
sheet._Range(AddressDrillerOne, AddressDrillerOne + (0, 1))
@@ -177,40 +144,34 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
._SetValue("Бурильщик 2 смена");
sheet._Range(AddressDrillerTwo, AddressDrillerTwo + (0, 1))
._SetValue($"{blockDto.SecondDriller}");
-
sheet._Range(AddressWorkSaubTitle, AddressWorkSaubTitle + (0, 2))
._SetValue("Работа модулей САУБ:");
sheet.Cell(AddressWatchTitle)
._SetValue("Часов:");
sheet.Cell(AddressMetreTitle)
._SetValue("Метров:");
-
sheet._Range(AddressWorkSaubData[0], AddressWorkSaubData[0] + (0, 2))
._SetValue("АПД (автоматическая подача долота), ч/м:");
sheet.Cell(AddressWatchData[0])
._SetValue($"{blockDto.WorkTimeSAUB}");
sheet.Cell(AddressMetreData[0])
._SetValue($"{blockDto.PenetrationSAUB}");
-
sheet._Range(AddressWorkSaubData[1], AddressWorkSaubData[1] + (0, 2))
._SetValue("Спин Мастер (осцилляция),ч/м:");
sheet.Cell(AddressWatchData[1])
._SetValue($"{blockDto.WorkTimeSpinMaster}");
sheet.Cell(AddressMetreData[1])
._SetValue($"{blockDto.PenetrationTorkMaster}");
-
sheet._Range(AddressWorkSaubData[2], AddressWorkSaubData[2] + (0, 2))
._SetValue("Торк Мастер (демпфирование), ч/:");
sheet.Cell(AddressWatchData[2])
._SetValue($"{blockDto.WorkTimeTorkMaster}");
sheet.Cell(AddressMetreData[2])
._SetValue($"{blockDto.PenetrationTorkMaster}");
-
sheet._Range(AddressWorkSaubData[3], AddressWorkSaubData[3] + (0, 2))
._SetValue("МСЕ, колличество запусков, раз:");
sheet._Range(AddressWatchData[3], AddressWatchData[3] + (0, 1))
._SetValue($"{blockDto.CountLaunchesMSE}");
-
}
}
}
diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SaubBlock.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SaubBlock.cs
index 9e7508fe..ec3ae8ea 100644
--- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SaubBlock.cs
+++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SaubBlock.cs
@@ -1,5 +1,5 @@
using System;
-using AsbCloudApp.Data.DailyReportModel;
+using AsbCloudApp.Data.DailyReport;
using ClosedXML.Excel;
namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
@@ -9,7 +9,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
{
private readonly DailyReportSaubDto blockDto;
- public CellAddress AddressBhaDescription { get; }
+ public CellAddress AddressBhaWithFormula { get; }
public CellAddress[] AddressPeriodTableDataArray { get; }
@@ -28,7 +28,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
{
AddressBlockBegin = addressBlockBegin.Copy();
this.blockDto = blockDto;
- AddressBhaDescription = addressBlockBegin + (0, 0);
+ AddressBhaWithFormula = addressBlockBegin + (0, 0);
//AddressExampleData1 = addressBlockBegin + (5, 0);
diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SignBlock.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SignBlock.cs
index 5fb02b9b..7ed0347f 100644
--- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SignBlock.cs
+++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/SignBlock.cs
@@ -1,5 +1,5 @@
using System;
-using AsbCloudApp.Data.DailyReportModel;
+using AsbCloudApp.Data.DailyReport;
using ClosedXML.Excel;
namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
@@ -13,16 +13,8 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
public CellAddress AddressDrillMaster { get; }
public CellAddress AddressSupervisorHead { get; }
public CellAddress AddressSupervisor { get; }
- public CellAddress[] AddressPeriodTableDataArray { get; }
-
- ///
- /// Значение нижняя правая ячейка блока
- ///
- public override CellAddress AddressBlockBegin { get; }
-
- ///
- /// Значение нижняя правая ячейка блока
- ///
+ public CellAddress[] AddressPeriodTableDataArray { get; }
+ public override CellAddress AddressBlockBegin { get; }
public override CellAddress AddressBlockEnd { get; }
public SignBlock(CellAddress addressBlockBegin, DailyReportSignDto blockDto)
@@ -38,7 +30,6 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
public override void Draw(IXLWorksheet sheet)
{
-
sheet.Range(AddressDrillMasterHead, AddressDrillMasterHead + (0, 2))
._SetValue("Мастер буровой ");
sheet.Range(AddressDrillMaster, AddressDrillMaster + (0, 2))
@@ -47,7 +38,6 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
._SetValue("Супервайзер ");
sheet.Range(AddressSupervisor, AddressSupervisor + (0, 2))
._SetValue($"{blockDto.Supervisor}");
-
}
}
diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/TimeBalanceBlock.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/TimeBalanceBlock.cs
index 0a3bef43..788dc3ec 100644
--- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/TimeBalanceBlock.cs
+++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportBlocks/TimeBalanceBlock.cs
@@ -17,55 +17,38 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
public CellAddress AddressElaboration { get; set; }
public CellAddress AddressExtension { get; set; }
public CellAddress AddressRepair { get; set; }
-
public CellAddress AddressDrillingValue { get; set; }
public CellAddress AddressFlushingValue { get; set; }
public CellAddress AddressBuildingValue { get; set; }
public CellAddress AddressElaborationValue { get; set; }
public CellAddress AddressExtensionValue { get; set; }
public CellAddress AddressRepairValue { get; set; }
-
public CellAddress AddressKnbk { get; set; }
public CellAddress AddressSpo { get; set; }
public CellAddress AddressPzr { get; set; }
public CellAddress AddressPvo { get; set; }
public CellAddress AddressPgr { get; set; }
public CellAddress AddressGis { get; set; }
-
public CellAddress AddressKnbkValue { get; set; }
public CellAddress AddressSpoValue { get; set; }
public CellAddress AddressPzrValue { get; set; }
public CellAddress AddressPvoValue { get; set; }
public CellAddress AddressPgrValue { get; set; }
public CellAddress AddressGisValue { get; set; }
-
-
-
public CellAddress AddressOzc { get; set; }
public CellAddress AddressEngineeringWorks { get; set; }
public CellAddress AddressTakingMeasure { get; set; }
public CellAddress AddressCementing { get; set; }
public CellAddress AddressSimple { get; set; }
public CellAddress AddressNpv { get; set; }
-
public CellAddress AddressOzcValue { get; set; }
public CellAddress AddressEngineeringWorksValue { get; set; }
public CellAddress AddressTakingMeasureValue { get; set; }
public CellAddress AddressCementingValue { get; set; }
public CellAddress AddressSimpleValue { get; set; }
public CellAddress AddressNpvValue { get; set; }
-
-
public CellAddress[] AddressPeriodTableDataArray { get; }
-
- ///
- /// Значение нижняя правая ячейка блока
- ///
public override CellAddress AddressBlockBegin { get; }
-
- ///
- /// Значение нижняя правая ячейка блока
- ///
public override CellAddress AddressBlockEnd { get; }
public TimeBalanceBlock(CellAddress addressBlockBegin, DailyReportTimeBalanceDto blockDto)
@@ -73,49 +56,42 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
AddressBlockBegin = addressBlockBegin.Copy();
this.blockDto = blockDto;
AddressTitle = addressBlockBegin + (3, 0);
-
AddressDrilling = addressBlockBegin + (4, 1);
AddressFlushing = addressBlockBegin + (5, 1);
AddressBuilding = addressBlockBegin + (6, 1);
AddressElaboration = addressBlockBegin + (7, 1);
AddressExtension = addressBlockBegin + (8, 1);
AddressRepair = addressBlockBegin + (9, 1);
-
AddressDrillingValue = addressBlockBegin + (4, 2);
AddressFlushingValue = addressBlockBegin + (5, 2);
AddressBuildingValue = addressBlockBegin + (6, 2);
AddressElaborationValue = addressBlockBegin + (7, 2);
AddressExtensionValue = addressBlockBegin + (8, 2);
AddressRepairValue = addressBlockBegin + (9, 2);
-
AddressKnbk = addressBlockBegin + (4, 3);
AddressSpo = addressBlockBegin + (5, 3);
AddressPzr = addressBlockBegin + (6, 3);
AddressPvo = addressBlockBegin + (7, 3);
AddressPgr = addressBlockBegin + (8, 3);
AddressGis = addressBlockBegin + (9, 3);
-
AddressKnbkValue = addressBlockBegin + (4, 4);
AddressSpoValue = addressBlockBegin + (5, 4);
AddressPzrValue = addressBlockBegin + (6, 4);
AddressPvoValue = addressBlockBegin + (7, 4);
AddressPgrValue = addressBlockBegin + (8, 4);
AddressGisValue = addressBlockBegin + (9, 4);
-
AddressOzc = addressBlockBegin + (4, 5);
AddressEngineeringWorks = addressBlockBegin + (5, 5);
AddressTakingMeasure = addressBlockBegin + (6, 5);
AddressCementing = addressBlockBegin + (7, 5);
AddressSimple = addressBlockBegin + (8, 5);
AddressNpv = addressBlockBegin + (9, 5);
-
AddressOzcValue = addressBlockBegin + (4, 6);
AddressEngineeringWorksValue = addressBlockBegin + (5, 6);
AddressTakingMeasureValue = addressBlockBegin + (6, 6);
AddressCementingValue = addressBlockBegin + (7, 6);
AddressSimpleValue = addressBlockBegin + (8, 6);
AddressNpvValue = addressBlockBegin + (9, 6);
-
AddressBlockEnd = AddressNpvValue;
}
@@ -124,7 +100,6 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
sheet._Range(AddressTitle, AddressTitle + (0, 1))
._SetValue("БАЛАНС ВРЕМЕНИ");
-
sheet.Cell(AddressDrilling)
._SetValue("Бурение");
sheet.Cell(AddressFlushing)
@@ -149,7 +124,6 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
._SetValue($"{blockDto.Extension}");
sheet.Cell(AddressRepairValue)
._SetValue($"{blockDto.Repair}");
-
sheet.Cell(AddressKnbk)
._SetValue("КНБК");
sheet.Cell(AddressSpo)
@@ -174,7 +148,6 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
._SetValue($"{blockDto.Pgr}");
sheet.Cell(AddressGisValue)
._SetValue($"{blockDto.Gis}");
-
sheet.Cell(AddressOzc)
._SetValue("ОЗЦ");
sheet.Cell(AddressEngineeringWorks)
@@ -199,16 +172,6 @@ namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
._SetValue($"{blockDto.Simple}");
sheet.Cell(AddressNpvValue)
._SetValue($"{blockDto.Npv}");
-
-
-
-
-
-
-
-
-
-
}
}
diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportMakerExcel.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportMakerExcel.cs
index 0fabf266..e9276b05 100644
--- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportMakerExcel.cs
+++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportMakerExcel.cs
@@ -1,6 +1,5 @@
using AsbCloudApp.Data;
using AsbCloudApp.Data.DailyReport;
-using AsbCloudApp.Data.DailyReportModel;
using AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks;
using ClosedXML.Excel;
using System;
@@ -11,1029 +10,48 @@ namespace AsbCloudInfrastructure.Services.DailyReport
{
public class DailyReportMakerExcel
{
-
-
- // черновик реализации отчета "по блокам"
-
- public Stream MakeReportFromBlocks(DailyReportHeadDto blockHead, DailyReportBhaDto blockBha, DailyReportTimeBalanceDto blockBalance ,DailyReportDimensionlessDto blockDimensionless, DailyReportSaubDto blockSaub, DailyReportSignDto blockSign)
+ public Stream MakeReportFromBlocks(DailyReportDto dto)
{
using var workbook = new XLWorkbook();
- FillExampleBlocks(workbook, blockHead, blockBha, blockBalance);
- //FillSheet6blocks(workbook, blockHead, blockBha, blockDimensionless, blockSaub, blockSign);
+ FillExampleBlocks(workbook, dto);
MemoryStream memoryStream = new MemoryStream();
workbook.SaveAs(memoryStream, new SaveOptions { });
memoryStream.Seek(0, SeekOrigin.Begin);
return memoryStream;
}
- private void FillExampleBlocks(XLWorkbook workbook, DailyReportHeadDto blockHeadDto, DailyReportBhaDto blockBhaDto, DailyReportTimeBalanceDto timeBalanceDto)
+ private void FillExampleBlocks(XLWorkbook workbook, DailyReportDto dto)
{
- var sheet = workbook.Worksheets.Add(blockHeadDto.ReportDate.ToString("dd.MM.yyyy"));
+ var sheet = workbook.Worksheets.Add(dto.HeadDto.ReportDate.ToString("dd.MM.yyyy"));
var addressStart = new CellAddress(sheet, 1, 1);
- var blockHeader = new HeadBlock(addressStart, blockHeadDto);
+ var blockHeader = new HeadBlock(addressStart, dto.HeadDto);
addressStart = blockHeader.AddressBlockEnd + (1, 0);
- var blockBha = new BhaBlock(addressStart, blockBhaDto);
+ addressStart.ColumnNumber = 0;
+ var blockBha = new BhaBlock(addressStart, dto.BhaDto);
addressStart = blockBha.AddressBlockEnd + (1, 0);
- var timeBalance = new TimeBalanceBlock(addressStart, timeBalanceDto);
+ addressStart.ColumnNumber = 0;
+ var timeBalance = new TimeBalanceBlock(addressStart, dto.TimeBalanceDto);
+ addressStart = timeBalance.AddressBlockEnd + (1, 0);
+ addressStart.ColumnNumber = 0;
+ var blockDimensionless = new DimensionlessBlock(addressStart, dto.DimensionlessDto);
+ addressStart = blockDimensionless.AddressBlockEnd + (1, 0);
+ addressStart.ColumnNumber = 0;
+ var blockSign = new SignBlock(addressStart, dto.SignDto);
+ addressStart = blockSign.AddressBlockEnd + (1, 0);
+ addressStart.ColumnNumber = 0;
+
blockHeader.Draw(sheet);
blockBha.Draw(sheet);
timeBalance.Draw(sheet);
- //blockWithFormula.Draw(sheet);
- }
-
- private String converteCellCoordinate(int row, bool isCaps, int column)
- {
- var c = (Char)((isCaps ? 65 : 97) + (column - 1));
- string convertColumn = c.ToString();
- return $"{convertColumn}{row}";
- }
-
- private string FormulaBhaBlock((int row, int col) tuple)
- {
- return $"IF({converteCellCoordinate(tuple.row, true, tuple.col - 1)}>0,({converteCellCoordinate(tuple.row, true, tuple.col - 1)}-{converteCellCoordinate(tuple.row, true, tuple.col - 2)})*24, \"\")";
- }
-
- private 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 string FormulaDrillingWatch((int row, int col) tuple)
- {
- return $"=IF({converteCellCoordinate(tuple.row - 8, true, tuple.col)}+" +
- $"{converteCellCoordinate(tuple.row - 4, true, tuple.col)}";
- }
-
- private 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)})";
- }
-
- public void FillSheet6blocks(XLWorkbook workbook, DailyReportHeadDto blockHead, DailyReportBhaDto blockBha, DailyReportDimensionlessDto blockDimensionless, DailyReportSaubDto blockSaub, DailyReportSignDto blockSign)
- {
- var sheet = workbook.Worksheets.Add(blockHead.ReportDate.ToString("dd.MM.yyyy"));
- sheet.Style.Font.FontName = "TimesNewRoman";
- sheet.Style.Font.FontSize = 10;
- var tuple = (row: 3, column: 3);
- tuple = (AddBlockHead1(sheet, blockHead,(tuple.row,tuple.column)));
- tuple = AddBlockBha(sheet, blockBha, tuple);
- tuple = AddBlockTimeBalance(sheet, tuple);
- tuple = AddBlockDimensionless(sheet, blockDimensionless, tuple);
- tuple = AddBlockSaub(sheet, blockSaub, tuple);
- tuple = AddBlockSign(sheet, blockSign, tuple);
- }
-
- private (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 (int row, int column) AddBlockBha(IXLWorksheet sheet, DailyReportBhaDto blockDto, (int row, int column) tupleStart)
- {
- tupleStart.column = 3;
- tupleStart.row += 1;
- var tuple = (row: tupleStart.row, column: tupleStart.column);
+ blockDimensionless.Draw(sheet);
+ blockSign.Draw(sheet);
+
-
-
- sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 7).Merge().Style.Border.RightBorder = XLBorderStyleValues.Thin;
- SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.BHADescription}");
- tuple.row += 2;
-
- sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 4).Merge();
- SetCell(sheet.Row(tuple.row), tuple.column, "Выполняемые операции в отчетный период, комментарии:");
- tuple.column += 5;
-
- sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge();
- SetCell(sheet.Row(tuple.row), tuple.column, "Продолжительность, ч. ");
- tuple.column += 2;
- SetCell(sheet.Row(tuple.row), tuple.column, "Итого").Style.Border.RightBorder = XLBorderStyleValues.Thin;
- tuple.column = tupleStart.column;
- tuple.row += 1;
-
-
-
- sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 4).Merge();
- SetCell(sheet.Row(tuple.row), tuple.column, "Бурение с наращиваниями в инт. 2195-2763м.");
- tuple.column += 5;
-
- SetCell(sheet.Row(tuple.row), tuple.column, "17:00:00");
- tuple.column += 1;
-
- SetCell(sheet.Row(tuple.row), tuple.column, "17:30:00");
- tuple.column += 1;
- SetCell(sheet.Row(tuple.row), tuple.column, "");
- sheet.Cell(tuple.row, tuple.column)
- .FormulaR1C1 = FormulaBhaBlock(tuple);
- tuple.column = tupleStart.column;
- tuple.row += 1;
-
-
- sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 4).Merge();
- SetCell(sheet.Row(tuple.row), tuple.column, "Промывка.");
- tuple.column += 5;
-
- SetCell(sheet.Row(tuple.row), tuple.column, "17:00:00");
- tuple.column += 1;
-
- SetCell(sheet.Row(tuple.row), tuple.column, "17:30:00");
- tuple.column += 1;
- SetCell(sheet.Row(tuple.row), tuple.column, "");
- sheet.Cell(tuple.row, tuple.column)
- .FormulaR1C1 = FormulaBhaBlock(tuple);
- tuple.column = tupleStart.column;
- tuple.row += 1;
-
- sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 4).Merge();
- SetCell(sheet.Row(tuple.row), tuple.column, "Подъем КНБК в инт. 2763-2442м.");
- tuple.column += 5;
-
- SetCell(sheet.Row(tuple.row), tuple.column, "17:00:00");
- tuple.column += 1;
-
- SetCell(sheet.Row(tuple.row), tuple.column, "17:30:00");
- tuple.column += 1;
- SetCell(sheet.Row(tuple.row), tuple.column, "");
- sheet.Cell(tuple.row, tuple.column)
- .FormulaR1C1 = FormulaBhaBlock(tuple);
- tuple.column = tupleStart.column;
- tuple.row += 1;
-
- sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 4).Merge();
- SetCell(sheet.Row(tuple.row), tuple.column, "Спуск КНБК в инт. 2442-2763м.");
- tuple.column += 5;
-
- SetCell(sheet.Row(tuple.row), tuple.column, "17:00:00");
- tuple.column += 1;
-
- SetCell(sheet.Row(tuple.row), tuple.column, "17:30:00");
- tuple.column += 1;
- SetCell(sheet.Row(tuple.row), tuple.column, "");
- sheet.Cell(tuple.row, tuple.column)
- .FormulaR1C1 = FormulaBhaBlock(tuple);
- tuple.column = tupleStart.column;
- tuple.row += 1;
-
- sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 4).Merge();
- SetCell(sheet.Row(tuple.row), tuple.column, "Бурение с наращиваниями в инт. 2763-2850м.");
- tuple.column += 5;
-
- SetCell(sheet.Row(tuple.row), tuple.column, "17:00:00");
- tuple.column += 1;
-
- SetCell(sheet.Row(tuple.row), tuple.column, "17:30:00");
- tuple.column += 1;
- SetCell(sheet.Row(tuple.row), tuple.column, "");
- sheet.Cell(tuple.row, tuple.column)
- .FormulaR1C1 = FormulaBhaBlock(tuple);
-
- return tuple;
}
-
- private (int row, int column) AddBlockTimeBalance(IXLWorksheet sheet, (int row, int column) tupleStart)
- {
- tupleStart.column = 4;
- tupleStart.row += 2;
- var tuple = (row: tupleStart.row, column: tupleStart.column);
-
- sheet.Cell(tuple.row, tuple.column + 2).Value =
- "БАЛАНС ВРЕМЕНИ";
- sheet.Range(tuple.row, tuple.column + 2, tuple.row, tuple.column + 3).Merge();
- tuple.row += 1;
-
-
- SetCell(sheet.Row(tuple.row), tuple.column, "Бурение");
- tuple.column += 1;
- SetCell(sheet.Row(tuple.row), tuple.column, "");
- tuple.column += 1;
- SetCell(sheet.Row(tuple.row), tuple.column, "КНБК");
- tuple.column += 1;
- SetCell(sheet.Row(tuple.row), tuple.column, "");
- tuple.column += 1;
- SetCell(sheet.Row(tuple.row), tuple.column, "ОЗЦ");
- tuple.column += 1;
- SetCell(sheet.Row(tuple.row), tuple.column, "");
- tuple.column = tupleStart.column;
- tuple.row += 1;
-
- SetCell(sheet.Row(tuple.row), tuple.column, "Промывка");
- tuple.column += 1;
- SetCell(sheet.Row(tuple.row), tuple.column, "");
- tuple.column += 1;
- SetCell(sheet.Row(tuple.row), tuple.column, "СПО");
- tuple.column += 1;
- SetCell(sheet.Row(tuple.row), tuple.column, "");
- tuple.column += 1;
- SetCell(sheet.Row(tuple.row), tuple.column, "Тех. работы");
- tuple.column += 1;
- SetCell(sheet.Row(tuple.row), tuple.column, "");
- tuple.column = tupleStart.column;
- tuple.row += 1;
-
- SetCell(sheet.Row(tuple.row), tuple.column, "Наращивание");
- tuple.column += 1;
- SetCell(sheet.Row(tuple.row), tuple.column, "");
- tuple.column += 1;
- SetCell(sheet.Row(tuple.row), tuple.column, "ПЗР");
- tuple.column += 1;
- SetCell(sheet.Row(tuple.row), tuple.column, "");
- tuple.column += 1;
- SetCell(sheet.Row(tuple.row), tuple.column, "Снятие замера");
- tuple.column += 1;
- SetCell(sheet.Row(tuple.row), tuple.column, "");
- tuple.column = tupleStart.column;
- tuple.row += 1;
-
- SetCell(sheet.Row(tuple.row), tuple.column, "Расширка");
- tuple.column += 1;
- SetCell(sheet.Row(tuple.row), tuple.column, "");
- tuple.column += 1;
- SetCell(sheet.Row(tuple.row), tuple.column, "ПГР");
- tuple.column += 1;
- SetCell(sheet.Row(tuple.row), tuple.column, "");
- tuple.column += 1;
- SetCell(sheet.Row(tuple.row), tuple.column, "Простой");
- tuple.column += 1;
- SetCell(sheet.Row(tuple.row), tuple.column, "");
- tuple.column = tupleStart.column;
- tuple.row += 1;
-
- SetCell(sheet.Row(tuple.row), tuple.column, "Ремонт");
- tuple.column += 1;
- SetCell(sheet.Row(tuple.row), tuple.column, "");
- tuple.column += 1;
- SetCell(sheet.Row(tuple.row), tuple.column, "ГИС");
- tuple.column += 1;
- SetCell(sheet.Row(tuple.row), tuple.column, "");
- tuple.column += 1;
- SetCell(sheet.Row(tuple.row), tuple.column, "НПВ");
- tuple.column += 1;
- SetCell(sheet.Row(tuple.row), tuple.column, "");
- return tuple;
- }
-
- private (int row, int column) AddBlockDimensionless(IXLWorksheet sheet, DailyReportDimensionlessDto blockDto, (int row, int column) tupleStart)
- {
-
- tupleStart.column = 4;
- tupleStart.row += 2;
- var tuple = (row: tupleStart.row, column: tupleStart.column);
-
- sheet.Cell(tuple.row, tuple.column).Value =
- "БЕЗМЕТРАЖНЫЕ РАБОТЫ";
- sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 5).Merge();
- tuple.row += 1;
- 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 + 2).Merge().Style.Border.RightBorder = XLBorderStyleValues.Thin;
- SetCell(sheet.Row(tuple.row), tuple.column, "Наращивание");
- tuple.row += 1;
- tuple.column = tupleStart.column;
-
- sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge();
- SetCell(sheet.Row(tuple.row), tuple.column, "Норматив на одну операцию, (мин):");
- tuple.column += 2;
- SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.StandardTimeBarrelPreparation}");
- tuple.column += 1;
- sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge();
- SetCell(sheet.Row(tuple.row), tuple.column, "Норматив на одну операцию, (мин):");
- tuple.column += 2;
- SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.StandardTimeExtension}");
- 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;
- SetCell(sheet.Row(tuple.row), tuple.column, "");
- sheet.Cell(tuple.row, tuple.column).FormulaA1 = $"{converteCellCoordinate(tuple.row - 1, true, tuple.column)}/60*{converteCellCoordinate(tuple.row + 28, true, tuple.column + 1)}";
- tuple.column += 1;
- sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge();
- SetCell(sheet.Row(tuple.row), tuple.column, "Наращивание, план (ч):");
- tuple.column += 2;
- SetCell(sheet.Row(tuple.row), tuple.column, "");
- sheet.Cell(tuple.row, tuple.column).FormulaA1 = $"{converteCellCoordinate(tuple.row - 1, true, tuple.column)}/60*{converteCellCoordinate(tuple.row + 28, true, tuple.column - 2)}";
- 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;
- SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.ActualTimeBarrelPreparation}");
- tuple.column += 1;
- sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge();
- SetCell(sheet.Row(tuple.row), tuple.column, "Наращивание, факт (ч):");
- tuple.column += 2;
- SetCell(sheet.Row(tuple.row), tuple.column, $"{blockDto.ActualTimeExtension}");
- 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;
- SetCell(sheet.Row(tuple.row), tuple.column, "");
- sheet.Cell(tuple.row, tuple.column).FormulaA1 = $"{converteCellCoordinate(tuple.row - 1, true, tuple.column)}-{converteCellCoordinate(tuple.row - 2, true, tuple.column)}";
- tuple.column += 1;
- sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge();
- SetCell(sheet.Row(tuple.row), tuple.column, "Превышение плановых норм, (ч):");
- tuple.column += 2;
- SetCell(sheet.Row(tuple.row), tuple.column, "");
- sheet.Cell(tuple.row, tuple.column).FormulaA1 = $"{converteCellCoordinate(tuple.row - 1, true, tuple.column)}-{converteCellCoordinate(tuple.row - 2, true, tuple.column)}";
- tuple.column = tupleStart.column;
- tuple.row += 1;
- sheet.Range(tuple.row, tuple.column, tuple.row + 1, tuple.column + 2).Merge()
- .Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
- SetCell(sheet.Row(tuple.row), tuple.column, "Краткие причины: доп проработки при переходе из слайда в ротор, в середине свечи.");
- tuple.column += 3;
- sheet.Range(tuple.row, tuple.column, tuple.row + 1, tuple.column + 2).Merge()
- .Style.Border.OutsideBorder = XLBorderStyleValues.Thin;
- SetCell(sheet.Row(tuple.row), tuple.column, "Краткие причины: нехватка пальцев на обоих руках у первого помощника бурильщика.");
- tuple.column += 2;
- return tuple;
- }
- private (int row, int column) AddBlockSaub(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;
-
- }
-
- private (int row, int column) AddBlockSign(IXLWorksheet sheet, DailyReportSignDto blockDto, (int row, int column) tupleStart)
- {
- tupleStart.row += 2;
- tupleStart.column = 3;
- var tuple = (row: tupleStart.row, column: tupleStart.column);
- sheet.Cell(tuple.row,tuple.column).Value =
- "Мастер буровой ";
- sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge();
- sheet.Cell(tuple.row, tuple.column+5).Value =
- $"{blockDto.DrillingMaster}";
- sheet.Range(tuple.row, tuple.column + 5, tuple.row, tuple.column + 1).Merge();
- tuple.column = tupleStart.column;
- tuple.row += 2;
- sheet.Cell(tuple.row, tuple.column).Value =
- "Супервайзер ";
- sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge();
- sheet.Cell(tuple.row, tuple.column + 5).Value =
- $"{blockDto.Supervisor}";
- sheet.Range(tuple.row, tuple.column + 5, tuple.row, tuple.column + 1).Merge();
-
- return tuple;
-
- }
-
-
-
-
- // реализация "как есть"
-
- public Stream MakeReport(DailyReportDto dailyReportDto)
- {
- using var templateStream = System.Reflection.Assembly.GetExecutingAssembly()
- .GetManifestResourceStream("AsbCloudInfrastructure.Services.DailyReport.DailyReportTemplate.xlsx");
- using var workbook = new XLWorkbook(templateStream, XLEventTracking.Disabled);
- FillSheet(workbook, dailyReportDto);
-
- MemoryStream memoryStream = new MemoryStream();
- workbook.SaveAs(memoryStream, new SaveOptions { });
- memoryStream.Seek(0, SeekOrigin.Begin);
- return memoryStream;
- }
-
- public void FillSheet(XLWorkbook workbook, DailyReportDto reportParams)
- {
- var sheet = workbook.Worksheets.First();//.Add(reportParams.ReportDate.ToString("dd.MM.yyyy"));
- sheet.Name = reportParams.ReportDate.ToString("dd.MM.yyyy");
-
- var activeRow = 3;
- activeRow = AddBlockHead(sheet, activeRow, reportParams);
- activeRow = AddBlockSlaughtersReport(sheet, activeRow, reportParams);
- activeRow = AddBlockTrajectoryReport(sheet, activeRow, reportParams);
- activeRow = AddBlockDrillers(sheet, activeRow, reportParams);
- activeRow = AddBlockSAUB(sheet, activeRow, reportParams);
- activeRow = AddBlockBHA(sheet, activeRow, reportParams);
- activeRow = AddBlockBHADescription(sheet, activeRow, reportParams);
- activeRow = AddBlockOperations(sheet, activeRow, reportParams);
- activeRow = AddBlockTimeBalans(sheet, activeRow, reportParams);
- activeRow = AddBlockMeterlessWorks(sheet, activeRow, reportParams);
- activeRow = AddBlockDrillingModes(sheet, activeRow, reportParams);
- activeRow = AddBlockRotorDrilling(sheet, activeRow, reportParams);
- activeRow = AddBlockSlideDrilling(sheet, activeRow, reportParams);
- activeRow = AddBlockROPPlan(sheet, activeRow, reportParams);
- activeRow = AddBlockSummary(sheet, activeRow, reportParams);
- activeRow = AddBlockSubscribes(sheet, activeRow, reportParams);
- }
-
- private int AddBlockHead(IXLWorksheet sheet, int startRow, DailyReportDto reportDto)
- {
- sheet.Cell(startRow, 3).Value =
- $"Суточная сводка бурения скважины №{reportDto.WellName}, куст: {reportDto.ClusterName}";
- sheet.Cell(startRow + 1, 3).Value =
- $"Заказчик: {reportDto.Customer}";
- sheet.Cell(startRow + 2, 3).Value =
- $"Подрядчик: {reportDto.Contractor}";
-
-
- return startRow + 2;
- }
-
- private int AddBlockSlaughtersReport(IXLWorksheet sheet, int startRow, DailyReportDto reportDto)
- {
- sheet.Cell(startRow + 4, 3).Value =
- $"{reportDto.ReportDate}";
- sheet.Cell(startRow + 4, 5).Value =
- $"{reportDto.WellDepthIntervalStartDate}";
- sheet.Cell(startRow + 4, 6).Value =
- $"{reportDto.WellDepthIntervalFinishDate}";
-
- return startRow + 4;
- }
-
- private int AddBlockTrajectoryReport(IXLWorksheet sheet, int startRow, DailyReportDto reportDto)
- {
- sheet.Cell(startRow + 4, 3).Value =
- $"{reportDto.BottomholeDepth}";
- sheet.Cell(startRow + 4, 4).Value =
- $"{reportDto.VerticalDepth}";
- sheet.Cell(startRow + 4, 5).Value =
- $"{reportDto.ZenithAngle}";
- sheet.Cell(startRow + 4, 6).Value =
- $"{reportDto.AzimuthAngle}";
-
- return startRow + 4;
- }
-
- private int AddBlockDrillers(IXLWorksheet sheet, int startRow, DailyReportDto reportDto)
- {
- sheet.Cell(startRow + 2, 4).Value =
- $"{reportDto.FirstDriller}";
- sheet.Cell(startRow + 3, 4).Value =
- $"{reportDto.SecondDriller}";
-
- return startRow + 3;
- }
-
- private int AddBlockSAUB(IXLWorksheet sheet, int startRow, DailyReportDto reportDto)
- {
- sheet.Cell(startRow + 3, 6).Value =
- $"{reportDto.WorkTimeSAUB}";
- sheet.Cell(startRow + 4, 6).Value =
- $"{reportDto.WorkTimeSpinMaster}";
- sheet.Cell(startRow + 5, 6).Value =
- $"{reportDto.WorkTimeTorkMaster}";
- sheet.Cell(startRow + 3, 7).Value =
- $"{reportDto.PenetrationSAUB}";
- sheet.Cell(startRow + 4, 7).Value =
- $"{reportDto.PenetrationSpinMaster}";
- sheet.Cell(startRow + 5, 7).Value =
- $"{reportDto.PenetrationTorkMaster}";
- sheet.Cell(startRow + 6, 6).Value =
- $"{reportDto.CountLaunchesMSE}";
-
- return startRow + 6;
- }
-
- private int AddBlockBHA(IXLWorksheet sheet, int startRow, DailyReportDto reportDto)
- {
- sheet.Cell(startRow + 3, 6).Value =
- $"{reportDto.WorkTimeSAUB}";
- sheet.Cell(startRow + 4, 6).Value =
- $"{reportDto.WorkTimeSpinMaster}";
- sheet.Cell(startRow + 5, 6).Value =
- $"{reportDto.WorkTimeTorkMaster}";
- sheet.Cell(startRow + 3, 7).Value =
- $"{reportDto.PenetrationSAUB}";
- sheet.Cell(startRow + 4, 7).Value =
- $"{reportDto.PenetrationSpinMaster}";
- sheet.Cell(startRow + 5, 7).Value =
- $"{reportDto.PenetrationTorkMaster}";
- sheet.Cell(startRow + 6, 6).Value =
- $"{reportDto.CountLaunchesMSE}";
-
- return startRow + 6;
- }
-
- private int AddBlockBHADescription(IXLWorksheet sheet, int startRow, DailyReportDto reportDto)
- {
- sheet.Cell(startRow + 2, 3).Value =
- $"{reportDto.BHADescription}";
-
- return startRow + 6;
- }
-
- private int AddBlockOperations(IXLWorksheet sheet, int startRow, DailyReportDto reportDto)
- {
- return startRow + 7;
- }
-
- private int AddBlockTimeBalans(IXLWorksheet sheet, int startRow, DailyReportDto reportDto)
- {
- return startRow + 8;
- }
-
- private int AddBlockMeterlessWorks(IXLWorksheet sheet, int startRow, DailyReportDto reportDto)
- {
- sheet.Cell(startRow + 4, 6).Value =
- $"{reportDto.StandardTimeBarrelPreparation}";
- sheet.Cell(startRow + 4, 9).Value =
- $"{reportDto.StandardTimeExtension}";
- sheet.Cell(startRow + 6, 6).Value =
- $"{reportDto.ActualTimeBarrelPreparation}";
- sheet.Cell(startRow + 6, 9).Value =
- $"{reportDto.ActualTimeExtension}";
-
- return startRow + 9;
- }
-
- //
- private int AddBlockDrillingModes(IXLWorksheet sheet, int startRow, DailyReportDto reportDto)
- {
- sheet.Cell(startRow + 2, 6).Value =
- $"{string.Join(", ", reportDto.RotorDrillingModes)}";
- sheet.Cell(startRow + 3, 9).Value =
- $"{string.Join(", ", reportDto.SlideDrillingModes)}";
-
- return startRow + 3;
- }
-
- private int AddBlockRotorDrilling(IXLWorksheet sheet, int startRow, DailyReportDto reportDto)
- {
- sheet.Cell(startRow + 3, 3).Value =
- $"{reportDto.PenetrationInRotor}";
- sheet.Cell(startRow + 3, 5).Value =
- $"{reportDto.NumberDrillingHours}";
- sheet.Cell(startRow + 3, 9).Value =
- $"{reportDto.AVGDiffDropRotor}";
-
- return startRow + 3;
- }
-
- private int AddBlockSlideDrilling(IXLWorksheet sheet, int startRow, DailyReportDto reportDto)
- {
- sheet.Cell(startRow + 3, 3).Value =
- $"{reportDto.PenetrationInSlide}";
- sheet.Cell(startRow + 3, 5).Value =
- $"{reportDto.DrillingTimeInRotor}";
- sheet.Cell(startRow + 3, 9).Value =
- $"{reportDto.AVGDiffPressureSlide}";
-
- return startRow + 3;
- }
-
- private int AddBlockROPPlan(IXLWorksheet sheet, int startRow, DailyReportDto reportDto)
- {
- sheet.Cell(startRow + 3, 9).Value =
- $"{reportDto.SectionROPPlan}";
-
- return startRow + 3;
- }
-
- private int AddBlockSummary(IXLWorksheet sheet, int startRow, DailyReportDto reportDto)
- {
- sheet.Cell(startRow + 7, 7).Value =
- $"{reportDto.SectionDrillingTimeTotal}";
- sheet.Cell(startRow + 8, 7).Value =
- $"{reportDto.SectionPenetrationTotal}";
- sheet.Cell(startRow + 9, 7).Value =
- $"{reportDto.ExtensionsCount}";
- sheet.Cell(startRow + 10, 7).Value =
- $"{reportDto.DeviationFromTVD}";
- sheet.Cell(startRow + 11, 3).Value =
- $"{reportDto.DeclinesReasonsROP}";
-
- return startRow + 13;
- }
- //
- private int AddBlockSubscribes(IXLWorksheet sheet, int startRow, DailyReportDto reportDto)
- {
- sheet.Cell(startRow + 3, 9).Value =
- $"{reportDto.DrillingMaster}";
- sheet.Cell(startRow + 5, 9).Value =
- $"{reportDto.Supervisor}";
-
- return startRow + 5;
- }
-
- private static string GetColunmLetter(int columnNumber)
- {
- string letter = "";
-
- while (columnNumber > 0)
- {
- int modulo = (columnNumber - 1) % 26;
- letter = Convert.ToChar('A' + modulo) + letter;
- columnNumber = (columnNumber - modulo) / 26;
- }
-
- return letter;
- }
-
- 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;
- }
}
}
diff --git a/AsbCloudInfrastructure/Services/DailyReport/DailyReportService.cs b/AsbCloudInfrastructure/Services/DailyReport/DailyReportService.cs
index 0af2a8e5..b0a689f6 100644
--- a/AsbCloudInfrastructure/Services/DailyReport/DailyReportService.cs
+++ b/AsbCloudInfrastructure/Services/DailyReport/DailyReportService.cs
@@ -9,7 +9,7 @@ using AsbCloudApp.Data;
using AsbCloudApp.Services;
using AsbCloudDb.Model;
using System.Collections.Generic;
-using AsbCloudApp.Data.DailyReportModel;
+
using AsbCloudApp.Data.DailyReport;
namespace AsbCloudInfrastructure.Services.DailyReport
@@ -62,7 +62,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport
public async Task AddAsync(int idWell, DailyReportDto dto, CancellationToken token = default)
{
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 entity = new AsbCloudDb.Model.DailyReport
{
@@ -101,7 +101,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport
if (dailyReportDto is null)
return null;
- var memoryStream = dailyReportMaker.MakeReport(dailyReportDto);
+ var memoryStream = dailyReportMaker.MakeReportFromBlocks(dailyReportDto);
return memoryStream;
}
@@ -127,12 +127,16 @@ namespace AsbCloudInfrastructure.Services.DailyReport
{
var well = await wellService.GetAsync(idWell, token);
var offsetHours = wellService.GetTimezone(idWell).Hours;
- var dto = new DailyReportDto()
+ var headDto = new DailyReportHeadDto()
{
ReportDate = date,
WellName = well.Caption,
ClusterName = well.Cluster,
};
+ var dto = new DailyReportDto()
+ {
+ HeadDto = headDto
+ };
DailyReportDto result = dto;
return result;
}
@@ -140,7 +144,7 @@ namespace AsbCloudInfrastructure.Services.DailyReport
private static DailyReportDto Convert(AsbCloudDb.Model.DailyReport entity, double offsetHours)
{
var dto = entity.Info.Adapt();
- dto.ReportDate = entity.StartDate
+ dto.HeadDto.ReportDate = entity.StartDate
.ToRemoteDateTime(offsetHours);
return dto;
}
@@ -148,83 +152,11 @@ namespace AsbCloudInfrastructure.Services.DailyReport
private static DailyReportInfo Convert(DailyReportDto dto, double offsetHours)
{
var entity = dto.Adapt();
- entity.ReportDate = dto.ReportDate
+ entity.HeadInfo.ReportDate = dto.HeadDto.ReportDate
.ToUtcDateTimeOffset(offsetHours)
.Date;
return entity;
- }
-
-
- // черновик реализации "по блокам"
-
- public async Task 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
}
diff --git a/AsbCloudWebApi.Tests/ServicesTests/ScheduleServiceTest.cs b/AsbCloudWebApi.Tests/ServicesTests/ScheduleServiceTest.cs
index 5b9f64ba..9c707ef0 100644
--- a/AsbCloudWebApi.Tests/ServicesTests/ScheduleServiceTest.cs
+++ b/AsbCloudWebApi.Tests/ServicesTests/ScheduleServiceTest.cs
@@ -115,8 +115,8 @@ namespace AsbCloudWebApi.Tests.ServicesTests
public async Task GetDriller_by_workTime_shift1()
{
var dto = MakeScheduleDto();
- dto.ShiftStart = new TimeOnly(8, 00);
- dto.ShiftEnd = new TimeOnly(20, 00);
+ dto.ShiftStart = new TimeDto(8, 00);
+ dto.ShiftEnd = new TimeDto(20, 00);
var id = await scheduleService.InsertAsync(dto, CancellationToken.None);
var drillerWorkTime = new DateTime(
dto.DrillStart.Year,
@@ -131,8 +131,8 @@ namespace AsbCloudWebApi.Tests.ServicesTests
public async Task GetDriller_by_workTime_shift2()
{
var dto = MakeScheduleDto();
- dto.ShiftStart = new TimeOnly(20, 00);
- dto.ShiftEnd = new TimeOnly(8, 00);
+ dto.ShiftStart = new TimeDto(20, 00);
+ dto.ShiftEnd = new TimeDto(8, 00);
var id = await scheduleService.InsertAsync(dto, CancellationToken.None);
var drillerWorkTime = new DateTime(
dto.DrillStart.Year,
diff --git a/ConsoleApp1/Program.cs b/ConsoleApp1/Program.cs
index 549bfc7a..076a509d 100644
--- a/ConsoleApp1/Program.cs
+++ b/ConsoleApp1/Program.cs
@@ -1,13 +1,8 @@
using AsbCloudApp.Data.DailyReport;
-using AsbCloudApp.Data.DailyReportModel;
-using AsbCloudInfrastructure.EfCache;
-using AsbCloudInfrastructure.Services.DailyReport;
using ClosedXML.Excel;
using System;
using System.IO;
-using System.Linq;
-using System.Threading;
-using System.Threading.Tasks;
+
namespace ConsoleApp1
{
@@ -19,15 +14,15 @@ namespace ConsoleApp1
{
var block = new DailyReportHeadDto()
{
- AzimuthAngle=12,
- WellName= "WellName",
- ClusterName= "clusterName",
- Customer="customer",
- Contractor="Contractor",
+ AzimuthAngle = 12,
+ WellName = "WellName",
+ ClusterName = "clusterName",
+ Customer = "customer",
+ Contractor = "Contractor",
ReportDate = DateTime.Now,
- WellDepthIntervalFinishDate= 27.5,
- WellDepthIntervalStartDate= 26.5,
- BottomholeDepth= 66.6
+ WellDepthIntervalFinishDate = 27.5,
+ WellDepthIntervalStartDate = 26.5,
+ BottomholeDepth = 66.6
};
var block2 = new DailyReportBhaDto()
{
@@ -35,7 +30,7 @@ namespace ConsoleApp1
};
var block3 = new DailyReportTimeBalanceDto();
- //------------- example -----------------
+ /*
var service = new DailyReportMakerExcel();
var stream = service.MakeReportFromBlocks(block, block2, block3,null, null, null);
var filename = "____.xlsx";
@@ -45,11 +40,11 @@ namespace ConsoleApp1
stream.CopyTo(fileStream);
return;
- //------------- end of example -----------------
+ */
+
+
-
-
//var ms = MakeReportFromBlocks(block,block3);
////File.Create("", MakeReportFromBlocks(block));
@@ -60,482 +55,8 @@ namespace ConsoleApp1
//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()
- //{
-
- //}
}
}