forked from ddrilling/AsbCloudServer
120 lines
6.8 KiB
C#
120 lines
6.8 KiB
C#
using AsbCloudApp.Data.DailyReport;
|
||
using ClosedXML.Excel;
|
||
|
||
namespace AsbCloudInfrastructure.Services.DailyReport.DailyReportBlocks
|
||
{
|
||
|
||
internal class DimensionlessBlock : BlockAbstract
|
||
{
|
||
private readonly NoDrillingDto blockDto;
|
||
|
||
public SaubBlock SaubBlock { get; set; }
|
||
|
||
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, NoDrillingDto blockDto)
|
||
{
|
||
AddressBlockBegin = addressBlockBegin.Copy();
|
||
this.blockDto = blockDto;
|
||
|
||
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);
|
||
}
|
||
|
||
private string FormulaBlockPlan(CellAddress cellTarget)
|
||
{
|
||
return $"={cellTarget}/60*{SaubBlock.AddressExtensionsCountValue}";
|
||
}
|
||
|
||
private string FormulaBlockExcess(CellAddress cellFact, CellAddress cellPlan)
|
||
{
|
||
return string.Format("={0}-{1}", cellFact.ToString(), cellPlan.ToString());
|
||
}
|
||
|
||
public override void Draw(IXLWorksheet sheet)
|
||
{
|
||
sheet.Range(AddressDimensionTitle.RowNumber, AddressDimensionTitle.ColumnNumber,
|
||
AddressDimensionTitle.RowNumber, AddressDimensionTitle.ColumnNumber + 1)
|
||
.Merge()
|
||
.Style.Alignment.SetWrapText(true);
|
||
sheet.Cell(AddressDimensionTitle.RowNumber, AddressDimensionTitle.ColumnNumber)._ValueNoBorder("БЕЗМЕТРАЖНЫЕ РАБОТЫ",true);
|
||
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])}").Style.SetAllBorders();
|
||
sheet._Range(AddressPreparationHead[2], AddressPreparationHead[2] + (0, 1))
|
||
._SetValue("Проработка при бур, факт (ч):");
|
||
sheet.Cell(AddressPreparationValue[2])
|
||
._SetValue($"{blockDto.ActualTimeBarrelPreparation}");
|
||
sheet._Range(AddressPreparationHead[3], AddressPreparationHead[3] + (0, 1))
|
||
._SetValue("Превышение плановых норм, (ч):");
|
||
sheet.Cell(AddressPreparationValue[3])
|
||
.SetFormulaA1($"{FormulaBlockExcess(AddressPreparationValue[2], AddressPreparationValue[1])}").Style.SetAllBorders();
|
||
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])}").Style.SetAllBorders();
|
||
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])}").Style.SetAllBorders();
|
||
sheet._Range(AddressPreparationDescription, AddressPreparationDescription + (1, 2))
|
||
._SetValue("Подготовка ствола скв. к наращиванию");
|
||
sheet._Range(AddressExtensionDescription, AddressExtensionDescription + (1, 2))
|
||
._SetValue("Наращивание");
|
||
}
|
||
}
|
||
|
||
}
|
||
|