2022-06-17 13:20:48 +05:00
|
|
|
|
using AsbCloudApp.Data.DailyReportModel;
|
|
|
|
|
using AsbCloudInfrastructure.EfCache;
|
2022-06-24 11:41:46 +05:00
|
|
|
|
using AsbCloudInfrastructure.Services.DailyReport;
|
2022-06-17 13:20:48 +05:00
|
|
|
|
using ClosedXML.Excel;
|
2022-05-05 10:06:15 +05:00
|
|
|
|
using System;
|
2022-06-17 13:20:48 +05:00
|
|
|
|
using System.IO;
|
2022-04-22 17:17:38 +05:00
|
|
|
|
using System.Linq;
|
2022-05-31 16:38:04 +05:00
|
|
|
|
using System.Threading;
|
|
|
|
|
using System.Threading.Tasks;
|
2021-10-26 17:22:32 +05:00
|
|
|
|
|
|
|
|
|
namespace ConsoleApp1
|
2021-04-02 17:28:07 +05:00
|
|
|
|
{
|
2022-06-15 14:57:37 +05:00
|
|
|
|
|
2021-04-02 17:28:07 +05:00
|
|
|
|
class Program
|
2021-10-03 20:08:17 +05:00
|
|
|
|
{
|
2022-06-01 12:18:10 +05:00
|
|
|
|
// use ServiceFactory to make services
|
2021-07-28 09:47:13 +05:00
|
|
|
|
static void Main(/*string[] args*/)
|
2021-11-17 10:52:03 +05:00
|
|
|
|
{
|
2022-06-17 13:20:48 +05:00
|
|
|
|
var block = new DailyReportHeadDto()
|
2022-05-06 16:35:16 +05:00
|
|
|
|
{
|
2022-06-17 13:20:48 +05:00
|
|
|
|
AzimuthAngle=12,
|
|
|
|
|
WellName= "WellName",
|
|
|
|
|
ClusterName= "clusterName",
|
|
|
|
|
Customer="customer",
|
|
|
|
|
Contractor="Contractor",
|
|
|
|
|
ReportDate = DateTime.Now,
|
|
|
|
|
WellDepthIntervalFinishDate= 27.5,
|
|
|
|
|
WellDepthIntervalStartDate= 26.5,
|
|
|
|
|
BottomholeDepth= 66.6
|
|
|
|
|
};
|
2022-06-24 11:41:46 +05:00
|
|
|
|
|
|
|
|
|
//------------- example -----------------
|
|
|
|
|
var service = new DailyReportMakerExcel();
|
|
|
|
|
var stream = service.MakeReportFromBlocks(block, null, null, null, null);
|
|
|
|
|
var filename = "____.xlsx";
|
|
|
|
|
if (File.Exists(filename))
|
|
|
|
|
File.Delete(filename);
|
|
|
|
|
using var fileStream = File.OpenWrite(filename);
|
|
|
|
|
stream.CopyTo(fileStream);
|
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
//------------- end of example -----------------
|
|
|
|
|
|
2022-06-22 23:26:04 +05:00
|
|
|
|
var block2 = new DailyReportBhaDto()
|
|
|
|
|
{
|
|
|
|
|
BHADescription="sadasdasdasdasdasdjlaskjdaksjdlasdlalskdklj"
|
|
|
|
|
};
|
2022-06-17 13:20:48 +05:00
|
|
|
|
|
2022-06-22 23:26:04 +05:00
|
|
|
|
var block3 = new DailyReportSaubDto();
|
|
|
|
|
|
|
|
|
|
var ms = MakeReportFromBlocks(block,block3);
|
2022-06-17 13:20:48 +05:00
|
|
|
|
//File.Create("", MakeReportFromBlocks(block));
|
|
|
|
|
using var file = new FileStream("file.xlsx", FileMode.Create, System.IO.FileAccess.Write);
|
|
|
|
|
byte[] bytes = new byte[ms.Length];
|
|
|
|
|
ms.Read(bytes, 0, (int)ms.Length);
|
|
|
|
|
file.Write(bytes, 0, bytes.Length);
|
|
|
|
|
ms.Close();
|
|
|
|
|
}
|
|
|
|
|
|
2022-06-22 23:26:04 +05:00
|
|
|
|
public static Stream MakeReportFromBlocks(DailyReportHeadDto blockHead, DailyReportSaubDto blockD)
|
2022-06-17 13:20:48 +05:00
|
|
|
|
{
|
|
|
|
|
using var workbook = new XLWorkbook();
|
2022-06-22 23:26:04 +05:00
|
|
|
|
FillSheet6blocks(workbook, blockHead, blockD);
|
2022-06-17 13:20:48 +05:00
|
|
|
|
MemoryStream memoryStream = new MemoryStream();
|
|
|
|
|
workbook.SaveAs(memoryStream, new SaveOptions { });
|
|
|
|
|
memoryStream.Seek(0, SeekOrigin.Begin);
|
|
|
|
|
return memoryStream;
|
2021-10-06 16:30:46 +05:00
|
|
|
|
}
|
2022-05-31 16:38:04 +05:00
|
|
|
|
|
2022-06-17 13:20:48 +05:00
|
|
|
|
private static String converteCellCoordinate(int row, bool isCaps, int column)
|
2022-05-31 16:38:04 +05:00
|
|
|
|
{
|
2022-06-17 13:20:48 +05:00
|
|
|
|
var c = (Char)((isCaps ? 65 : 97) + (column - 1));
|
|
|
|
|
string convertColumn = c.ToString();
|
|
|
|
|
return $"{convertColumn}{row}";
|
2022-05-31 16:38:04 +05:00
|
|
|
|
}
|
|
|
|
|
|
2022-06-22 23:26:04 +05:00
|
|
|
|
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)
|
2022-05-31 16:38:04 +05:00
|
|
|
|
{
|
2022-06-17 13:20:48 +05:00
|
|
|
|
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);
|
2022-06-22 23:26:04 +05:00
|
|
|
|
sheet.Style.Font.FontName = "TimesNewRoman";
|
|
|
|
|
sheet.Style.Font.FontSize = 10;
|
|
|
|
|
|
2022-06-17 13:20:48 +05:00
|
|
|
|
tuple = (AddBlockHead1(sheet, blockHead, (tuple.row, tuple.column)).row, AddBlockHead1(sheet, blockHead, (tuple.row, tuple.column)).column);
|
2022-06-22 23:26:04 +05:00
|
|
|
|
AddBlockBha(sheet, blockD, tuple);
|
|
|
|
|
//sheet.Columns().AdjustToContents(8,9);
|
|
|
|
|
//sheet.Rows().AdjustToContents(3,21);
|
|
|
|
|
|
|
|
|
|
|
2022-06-17 13:20:48 +05:00
|
|
|
|
}
|
|
|
|
|
//
|
|
|
|
|
|
2022-06-22 23:26:04 +05:00
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
|
2022-06-17 13:20:48 +05:00
|
|
|
|
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}";
|
2022-06-22 23:26:04 +05:00
|
|
|
|
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 7).Merge();
|
|
|
|
|
tuple.row += 1;
|
2022-06-17 13:20:48 +05:00
|
|
|
|
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();
|
2022-06-22 23:26:04 +05:00
|
|
|
|
SetCell(sheet.Row(tuple.row),tuple.column, "Отчетный период");
|
2022-06-17 13:20:48 +05:00
|
|
|
|
tuple.column += 4;
|
|
|
|
|
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 3).Merge();
|
2022-06-22 23:26:04 +05:00
|
|
|
|
sheet.Cell(tuple.row, tuple.column+3).Style.Border.RightBorder = XLBorderStyleValues.Thin;
|
|
|
|
|
SetCell(sheet.Row(tuple.row),tuple.column, "Забой за отчетный период, м");
|
2022-06-17 13:20:48 +05:00
|
|
|
|
tuple.column = tupleStart.column;
|
|
|
|
|
tuple.row += 1;
|
|
|
|
|
//8,3
|
|
|
|
|
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge();
|
2022-06-22 23:26:04 +05:00
|
|
|
|
SetCell(sheet.Row(tuple.row),tuple.column, "От (дата, время)");
|
2022-06-17 13:20:48 +05:00
|
|
|
|
tuple.column += 2; //8,5
|
2022-06-22 23:26:04 +05:00
|
|
|
|
|
2022-06-17 13:20:48 +05:00
|
|
|
|
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge();
|
2022-06-22 23:26:04 +05:00
|
|
|
|
SetCell(sheet.Row(tuple.row),tuple.column, "До (дата, время)");
|
2022-06-17 13:20:48 +05:00
|
|
|
|
tuple.column += 2; //8,7
|
2022-06-22 23:26:04 +05:00
|
|
|
|
|
2022-06-17 13:20:48 +05:00
|
|
|
|
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge();
|
2022-06-22 23:26:04 +05:00
|
|
|
|
SetCell(sheet.Row(tuple.row),tuple.column, "От");
|
2022-06-17 13:20:48 +05:00
|
|
|
|
tuple.column += 2; //8,9
|
2022-06-22 23:26:04 +05:00
|
|
|
|
|
2022-06-17 13:20:48 +05:00
|
|
|
|
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge();
|
2022-06-22 23:26:04 +05:00
|
|
|
|
SetCell(sheet.Row(tuple.row),tuple.column, "До");
|
|
|
|
|
sheet.Cell(tuple.row, tuple.column+1).Style.Border.RightBorder = XLBorderStyleValues.Thin;
|
2022-06-17 13:20:48 +05:00
|
|
|
|
tuple.column = tupleStart.column;
|
|
|
|
|
tuple.row += 1; //9,3
|
|
|
|
|
|
2022-06-22 23:26:04 +05:00
|
|
|
|
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
|
2022-06-17 13:20:48 +05:00
|
|
|
|
|
|
|
|
|
|
2022-06-22 23:26:04 +05:00
|
|
|
|
|
|
|
|
|
sheet.Cell(tuple.row, tuple.column).Value = "Бурильщик 1 смена";
|
|
|
|
|
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 1).Merge();
|
2022-06-17 13:20:48 +05:00
|
|
|
|
tuple.column += 2;
|
2022-06-22 23:26:04 +05:00
|
|
|
|
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();
|
2022-06-17 13:20:48 +05:00
|
|
|
|
tuple.column += 2;
|
2022-06-22 23:26:04 +05:00
|
|
|
|
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;
|
2022-06-17 13:20:48 +05:00
|
|
|
|
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 2).Merge();
|
2022-06-22 23:26:04 +05:00
|
|
|
|
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;
|
2022-06-17 13:20:48 +05:00
|
|
|
|
sheet.Range(tuple.row, tuple.column, tuple.row, tuple.column + 2).Merge();
|
2022-06-22 23:26:04 +05:00
|
|
|
|
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;
|
2022-06-17 13:20:48 +05:00
|
|
|
|
tuple.column = tupleStart.column;
|
2022-06-22 23:26:04 +05:00
|
|
|
|
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;
|
|
|
|
|
}
|
2022-06-17 13:20:48 +05:00
|
|
|
|
|
2022-06-22 23:26:04 +05:00
|
|
|
|
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;
|
2022-06-17 13:20:48 +05:00
|
|
|
|
|
|
|
|
|
|
2022-06-22 23:26:04 +05:00
|
|
|
|
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;
|
|
|
|
|
|
|
|
|
|
|
2022-06-17 13:20:48 +05:00
|
|
|
|
|
2022-06-22 23:26:04 +05:00
|
|
|
|
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;
|
2022-05-31 16:38:04 +05:00
|
|
|
|
}
|
2021-04-02 17:28:07 +05:00
|
|
|
|
}
|
2022-06-17 13:20:48 +05:00
|
|
|
|
struct CellAddress
|
|
|
|
|
{
|
|
|
|
|
public int Col { get; set; }
|
|
|
|
|
public int Row { get; set; }
|
|
|
|
|
//public string GetExcelAddress()
|
|
|
|
|
//{
|
|
|
|
|
|
|
|
|
|
//}
|
|
|
|
|
}
|
2021-04-02 17:28:07 +05:00
|
|
|
|
}
|