From f01708c69f0f2a7f658eacc8f352b0cea5d52db1 Mon Sep 17 00:00:00 2001 From: Olga Nemt Date: Tue, 6 Jun 2023 14:43:09 +0500 Subject: [PATCH 1/6] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF=D0=BE=20=D1=81=D0=B5=D1=82?= =?UTF-8?q?=D0=B5=D1=82=D0=B2=D0=BE=D0=BC=D1=83=20=D0=B3=D1=80=D0=B0=D1=84?= =?UTF-8?q?=D0=B8=D0=BA=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ScheduleReportService.cs | 185 ++++++++++++++++++ .../ScheduleReportTemplate.xlsx | Bin 15314 -> 34867 bytes AsbCloudWebApi/appsettings.json | 6 +- 3 files changed, 188 insertions(+), 3 deletions(-) diff --git a/AsbCloudInfrastructure/Services/WellOperationService/ScheduleReportService.cs b/AsbCloudInfrastructure/Services/WellOperationService/ScheduleReportService.cs index b22ce6ff..40e69dd8 100644 --- a/AsbCloudInfrastructure/Services/WellOperationService/ScheduleReportService.cs +++ b/AsbCloudInfrastructure/Services/WellOperationService/ScheduleReportService.cs @@ -18,9 +18,19 @@ namespace AsbCloudInfrastructure.Services.WellOperationService private readonly IOperationsStatService operationsStatService; private readonly IWellService wellService; const string sheetNameSchedule = "Сетевой график"; + const string sheetNameSchedulePlan = "План"; + const string sheetNameScheduleFact = "Факт"; + const string sheetNameSchedulePrediction = "Прогноз"; const string sheetNameTvd = "ГГД"; const int maxChartsToWrap = 88; + private enum sheduleMode + { + plan, + fact, + predict + }; + public ScheduleReportService(IOperationsStatService operationsStatService, IWellService wellService) { this.operationsStatService = operationsStatService; @@ -47,6 +57,176 @@ namespace AsbCloudInfrastructure.Services.WellOperationService } private static void FillScheduleSheetToWorkbook(XLWorkbook workbook, IEnumerable> tvd, WellDto well) + { + FillScheduleSheet(workbook, tvd, well); + + var tvdList = tvd.ToList(); + var plans = tvd + .Where(t => t.Plan is not null) + .Select(t => t.Plan!) + .OrderBy(t => t.DateStart) + .ToList(); + FillCurrentScheduleSheetToWorkbook(workbook, plans, well, sheduleMode.plan); + + var facts = tvd + .Where(t => t.Fact is not null) + .Select(t => t.Fact!) + .OrderBy(t => t.DateStart) + .ToList(); + FillCurrentScheduleSheetToWorkbook(workbook, facts, well, sheduleMode.fact); + + var predictions = tvd + .Where(t => t.Predict is not null) + .Select(t => t.Predict!) + .OrderBy(t => t.DateStart) + .ToList(); + FillCurrentScheduleSheetToWorkbook(workbook, predictions, well, sheduleMode.predict); + + } + + private static void FillCurrentScheduleSheetToWorkbook(XLWorkbook workbook, List tvdList, WellDto well, sheduleMode mode) + { + var sheetName = GetSheetName(mode); + var sheet = workbook.Worksheets.FirstOrDefault(ws => ws.Name == sheetName); + if (sheet is null) + return; + + const int headerRowsCount = 6; + const int rowTitle = 3; + + const int columnRowNumber = 2; + const int columnCaption = 3; + const int columnWellDepthStart = 4; + const int columnWellDepthEnd = 5; + const int columnDeltaWellDepthPerDay = 6; + const int columnDuration = 7; + const int columnDateStart = 8; + const int columnDateEnd = 9; + const int columnGuilty = 10; + const int columnNpt = 11; + + var subTitle = $"на строительство скважины №{well.Caption}, куст: {well.Cluster}, м/р: {well.Deposit}"; + sheet.Row(rowTitle).Cell(3).Value = subTitle; + + DateTime lastFactDate = default; + var lastFactI = 0; + + int i = 0; + for (; i < tvdList.Count; i++) + { + var tvdItem = tvdList[i]; + if (tvdItem is null) + continue; + + if (i == 86) + { + ; + } + + var row = sheet.Row(1 + i + headerRowsCount); + + SetCell(row, columnRowNumber, $"{1 + i}"); + SetCell(row, columnCaption, $"{tvdItem.CategoryName} {tvdItem.CategoryInfo}".Trim()); + + SetCell(row, columnWellDepthStart, tvdItem.DepthStart); + + SetCell(row, columnWellDepthEnd, tvdItem.DepthEnd); + + SetCell(row, columnDeltaWellDepthPerDay, null); + if (mode == sheduleMode.fact) + { + var fact = tvdItem; + if (lastFactDate == default) + lastFactDate = fact.DateStart; + + if (i > 0 && fact.DateStart.DayOfYear != lastFactDate.DayOfYear) + { + var daylyOperations = tvdList + .Where(t => t.DateStart >= lastFactDate && t.DateStart < fact.DateStart); + if (daylyOperations.Any()) + { + var depthDayStart = daylyOperations.Min(o => o.DepthStart); + var depthDayEnd = daylyOperations.Max(o => o.DepthEnd); + var delta = depthDayEnd - depthDayStart; + SetCell(sheet.Row(1 + lastFactI + headerRowsCount), columnDeltaWellDepthPerDay, delta); + lastFactDate = fact.DateStart; + } + } + lastFactI = i; + } + + SetCell(row, columnDuration, tvdItem.DurationHours); + + SetCell(row, columnDateStart, tvdItem.DateStart); + + SetCell(row, columnDateEnd, tvdItem.DateStart.AddHours(tvdItem.DurationHours)); + + if (mode == sheduleMode.fact && WellOperationCategory.NonProductiveTimeSubIds.Contains(tvdItem.IdCategory)) + { + SetCell(row, columnGuilty, tvdItem.Comment); + SetCell(row, columnNpt, tvdItem.DurationHours); + row.Row(columnRowNumber, columnNpt).Style.Fill.BackgroundColor = XLColor.Red; + } + else + { + SetCell(row, columnGuilty, null); + SetCell(row, columnNpt, null); + } + } + + var rowNumSummary = 1 + i + headerRowsCount; + var rowNumStart = 1 + headerRowsCount; + var rowNumEnd = i + headerRowsCount; + + string MakeRangeFunction(string funcName, int column) + => $"={funcName}({GetColunmLetter(column)}{rowNumStart}:{GetColunmLetter(column)}{rowNumEnd})"; + + IXLCell AddRangeFormula(IXLRow row, string funcName, int column) + { + var cell = row.Cell(column); + cell.FormulaA1 = MakeRangeFunction(funcName, column); + return cell; + } + + var rowSummary = sheet.Row(rowNumSummary); + rowSummary.Style.Font.Bold = true; + rowSummary.Cell(columnCaption).Value = "Итого:"; + + AddRangeFormula(rowSummary, "sum", columnDeltaWellDepthPerDay); + AddRangeFormula(rowSummary, "sum", columnDuration); + var cell = AddRangeFormula(rowSummary, "max", columnDateEnd); + SetDateTime(cell); + SetDateTime(cell); + AddRangeFormula(rowSummary, "sum", columnNpt); + SetBorder(rowSummary.Cells(true).Style); + + var rowSummary2 = sheet.Row(rowNumSummary + 1); + rowSummary2.DataType = XLDataType.Number; + rowSummary2.Style.NumberFormat.Format = "0,00"; + rowSummary2.Cell(columnCaption).Value = "в сутках:"; + rowSummary2.Cell(columnDuration).FormulaA1 = $"={GetColunmLetter(columnDuration)}{rowNumSummary}/24"; + SetNumber(rowSummary2.Cell(columnDuration)); + rowSummary2.Cell(columnNpt).FormulaA1 = $"={GetColunmLetter(columnNpt)}{rowNumSummary}/24"; + SetNumber(rowSummary2.Cell(columnNpt)); + SetBorder(rowSummary2.Cells(true).Style); + } + + private static string GetSheetName(sheduleMode mode) + { + switch (mode) + { + case sheduleMode.plan: + return sheetNameSchedulePlan; + case sheduleMode.fact: + return sheetNameScheduleFact; + case sheduleMode.predict: + return sheetNameSchedulePrediction; + default: + return sheetNameSchedule; + } + } + + private static void FillScheduleSheet(XLWorkbook workbook, IEnumerable> tvd, WellDto well) { var sheet = workbook.Worksheets.FirstOrDefault(ws => ws.Name == sheetNameSchedule); if (sheet is null) @@ -98,6 +278,11 @@ namespace AsbCloudInfrastructure.Services.WellOperationService var row = sheet.Row(1 + i + headerRowsCount); + if (i == 86) + { + ; + } + SetCell(row, columnRowNumber, $"{1 + i}"); SetCell(row, columnCaption, $"{operation.CategoryName} {operation.CategoryInfo}".Trim()); diff --git a/AsbCloudInfrastructure/Services/WellOperationService/ScheduleReportTemplate.xlsx b/AsbCloudInfrastructure/Services/WellOperationService/ScheduleReportTemplate.xlsx index 5f86498dd420ebc9340bb76f47ab7781d9ac3d0c..53b8ce5bda34d60c142121f1551ae82d2f49f8c1 100644 GIT binary patch literal 34867 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 S1{Mq!4Cn89bmY4~NB;*%V8b8) diff --git a/AsbCloudWebApi/appsettings.json b/AsbCloudWebApi/appsettings.json index 629f10c8..ac0acc5b 100644 --- a/AsbCloudWebApi/appsettings.json +++ b/AsbCloudWebApi/appsettings.json @@ -7,10 +7,10 @@ } }, "ConnectionStrings": { - "DefaultConnection": "Host=localhost;Database=postgres;Username=postgres;Password=q;Persist Security Info=True", - "DebugConnection": "Host=localhost;Database=postgres;Username=postgres;Password=q;Persist Security Info=True;Include Error Detail=True", + "DefaultConnection": "Host=localhost;Database=postgres3;Username=postgres;Password=q;Persist Security Info=True", + "DebugConnection": "Host=localhost;Database=postgres3;Username=postgres;Password=q;Persist Security Info=True;Include Error Detail=True", "ServerConnection": "Host=192.168.1.70;Database=postgres;Username=postgres;Password=q;Persist Security Info=True", - "LocalConnection": "Host=localhost;Database=postgres;Username=postgres;Password=q;Persist Security Info=True" + "LocalConnection": "Host=localhost;Database=postgres3;Username=postgres;Password=q;Persist Security Info=True" }, "AllowedHosts": "*", //"userLimits": { From 100b51a372701bd0afa00849071b07d031a14c47 Mon Sep 17 00:00:00 2001 From: Olga Nemt Date: Tue, 6 Jun 2023 14:43:42 +0500 Subject: [PATCH 2/6] =?UTF-8?q?Revert=20"=D0=98=D1=81=D0=BF=D1=80=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF=D0=BE=20=D1=81?= =?UTF-8?q?=D0=B5=D1=82=D0=B5=D1=82=D0=B2=D0=BE=D0=BC=D1=83=20=D0=B3=D1=80?= =?UTF-8?q?=D0=B0=D1=84=D0=B8=D0=BA=D1=83"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit f01708c69f0f2a7f658eacc8f352b0cea5d52db1. --- .../ScheduleReportService.cs | 185 ------------------ .../ScheduleReportTemplate.xlsx | Bin 34867 -> 15314 bytes AsbCloudWebApi/appsettings.json | 6 +- 3 files changed, 3 insertions(+), 188 deletions(-) diff --git a/AsbCloudInfrastructure/Services/WellOperationService/ScheduleReportService.cs b/AsbCloudInfrastructure/Services/WellOperationService/ScheduleReportService.cs index 40e69dd8..b22ce6ff 100644 --- a/AsbCloudInfrastructure/Services/WellOperationService/ScheduleReportService.cs +++ b/AsbCloudInfrastructure/Services/WellOperationService/ScheduleReportService.cs @@ -18,19 +18,9 @@ namespace AsbCloudInfrastructure.Services.WellOperationService private readonly IOperationsStatService operationsStatService; private readonly IWellService wellService; const string sheetNameSchedule = "Сетевой график"; - const string sheetNameSchedulePlan = "План"; - const string sheetNameScheduleFact = "Факт"; - const string sheetNameSchedulePrediction = "Прогноз"; const string sheetNameTvd = "ГГД"; const int maxChartsToWrap = 88; - private enum sheduleMode - { - plan, - fact, - predict - }; - public ScheduleReportService(IOperationsStatService operationsStatService, IWellService wellService) { this.operationsStatService = operationsStatService; @@ -57,176 +47,6 @@ namespace AsbCloudInfrastructure.Services.WellOperationService } private static void FillScheduleSheetToWorkbook(XLWorkbook workbook, IEnumerable> tvd, WellDto well) - { - FillScheduleSheet(workbook, tvd, well); - - var tvdList = tvd.ToList(); - var plans = tvd - .Where(t => t.Plan is not null) - .Select(t => t.Plan!) - .OrderBy(t => t.DateStart) - .ToList(); - FillCurrentScheduleSheetToWorkbook(workbook, plans, well, sheduleMode.plan); - - var facts = tvd - .Where(t => t.Fact is not null) - .Select(t => t.Fact!) - .OrderBy(t => t.DateStart) - .ToList(); - FillCurrentScheduleSheetToWorkbook(workbook, facts, well, sheduleMode.fact); - - var predictions = tvd - .Where(t => t.Predict is not null) - .Select(t => t.Predict!) - .OrderBy(t => t.DateStart) - .ToList(); - FillCurrentScheduleSheetToWorkbook(workbook, predictions, well, sheduleMode.predict); - - } - - private static void FillCurrentScheduleSheetToWorkbook(XLWorkbook workbook, List tvdList, WellDto well, sheduleMode mode) - { - var sheetName = GetSheetName(mode); - var sheet = workbook.Worksheets.FirstOrDefault(ws => ws.Name == sheetName); - if (sheet is null) - return; - - const int headerRowsCount = 6; - const int rowTitle = 3; - - const int columnRowNumber = 2; - const int columnCaption = 3; - const int columnWellDepthStart = 4; - const int columnWellDepthEnd = 5; - const int columnDeltaWellDepthPerDay = 6; - const int columnDuration = 7; - const int columnDateStart = 8; - const int columnDateEnd = 9; - const int columnGuilty = 10; - const int columnNpt = 11; - - var subTitle = $"на строительство скважины №{well.Caption}, куст: {well.Cluster}, м/р: {well.Deposit}"; - sheet.Row(rowTitle).Cell(3).Value = subTitle; - - DateTime lastFactDate = default; - var lastFactI = 0; - - int i = 0; - for (; i < tvdList.Count; i++) - { - var tvdItem = tvdList[i]; - if (tvdItem is null) - continue; - - if (i == 86) - { - ; - } - - var row = sheet.Row(1 + i + headerRowsCount); - - SetCell(row, columnRowNumber, $"{1 + i}"); - SetCell(row, columnCaption, $"{tvdItem.CategoryName} {tvdItem.CategoryInfo}".Trim()); - - SetCell(row, columnWellDepthStart, tvdItem.DepthStart); - - SetCell(row, columnWellDepthEnd, tvdItem.DepthEnd); - - SetCell(row, columnDeltaWellDepthPerDay, null); - if (mode == sheduleMode.fact) - { - var fact = tvdItem; - if (lastFactDate == default) - lastFactDate = fact.DateStart; - - if (i > 0 && fact.DateStart.DayOfYear != lastFactDate.DayOfYear) - { - var daylyOperations = tvdList - .Where(t => t.DateStart >= lastFactDate && t.DateStart < fact.DateStart); - if (daylyOperations.Any()) - { - var depthDayStart = daylyOperations.Min(o => o.DepthStart); - var depthDayEnd = daylyOperations.Max(o => o.DepthEnd); - var delta = depthDayEnd - depthDayStart; - SetCell(sheet.Row(1 + lastFactI + headerRowsCount), columnDeltaWellDepthPerDay, delta); - lastFactDate = fact.DateStart; - } - } - lastFactI = i; - } - - SetCell(row, columnDuration, tvdItem.DurationHours); - - SetCell(row, columnDateStart, tvdItem.DateStart); - - SetCell(row, columnDateEnd, tvdItem.DateStart.AddHours(tvdItem.DurationHours)); - - if (mode == sheduleMode.fact && WellOperationCategory.NonProductiveTimeSubIds.Contains(tvdItem.IdCategory)) - { - SetCell(row, columnGuilty, tvdItem.Comment); - SetCell(row, columnNpt, tvdItem.DurationHours); - row.Row(columnRowNumber, columnNpt).Style.Fill.BackgroundColor = XLColor.Red; - } - else - { - SetCell(row, columnGuilty, null); - SetCell(row, columnNpt, null); - } - } - - var rowNumSummary = 1 + i + headerRowsCount; - var rowNumStart = 1 + headerRowsCount; - var rowNumEnd = i + headerRowsCount; - - string MakeRangeFunction(string funcName, int column) - => $"={funcName}({GetColunmLetter(column)}{rowNumStart}:{GetColunmLetter(column)}{rowNumEnd})"; - - IXLCell AddRangeFormula(IXLRow row, string funcName, int column) - { - var cell = row.Cell(column); - cell.FormulaA1 = MakeRangeFunction(funcName, column); - return cell; - } - - var rowSummary = sheet.Row(rowNumSummary); - rowSummary.Style.Font.Bold = true; - rowSummary.Cell(columnCaption).Value = "Итого:"; - - AddRangeFormula(rowSummary, "sum", columnDeltaWellDepthPerDay); - AddRangeFormula(rowSummary, "sum", columnDuration); - var cell = AddRangeFormula(rowSummary, "max", columnDateEnd); - SetDateTime(cell); - SetDateTime(cell); - AddRangeFormula(rowSummary, "sum", columnNpt); - SetBorder(rowSummary.Cells(true).Style); - - var rowSummary2 = sheet.Row(rowNumSummary + 1); - rowSummary2.DataType = XLDataType.Number; - rowSummary2.Style.NumberFormat.Format = "0,00"; - rowSummary2.Cell(columnCaption).Value = "в сутках:"; - rowSummary2.Cell(columnDuration).FormulaA1 = $"={GetColunmLetter(columnDuration)}{rowNumSummary}/24"; - SetNumber(rowSummary2.Cell(columnDuration)); - rowSummary2.Cell(columnNpt).FormulaA1 = $"={GetColunmLetter(columnNpt)}{rowNumSummary}/24"; - SetNumber(rowSummary2.Cell(columnNpt)); - SetBorder(rowSummary2.Cells(true).Style); - } - - private static string GetSheetName(sheduleMode mode) - { - switch (mode) - { - case sheduleMode.plan: - return sheetNameSchedulePlan; - case sheduleMode.fact: - return sheetNameScheduleFact; - case sheduleMode.predict: - return sheetNameSchedulePrediction; - default: - return sheetNameSchedule; - } - } - - private static void FillScheduleSheet(XLWorkbook workbook, IEnumerable> tvd, WellDto well) { var sheet = workbook.Worksheets.FirstOrDefault(ws => ws.Name == sheetNameSchedule); if (sheet is null) @@ -278,11 +98,6 @@ namespace AsbCloudInfrastructure.Services.WellOperationService var row = sheet.Row(1 + i + headerRowsCount); - if (i == 86) - { - ; - } - SetCell(row, columnRowNumber, $"{1 + i}"); SetCell(row, columnCaption, $"{operation.CategoryName} {operation.CategoryInfo}".Trim()); diff --git a/AsbCloudInfrastructure/Services/WellOperationService/ScheduleReportTemplate.xlsx b/AsbCloudInfrastructure/Services/WellOperationService/ScheduleReportTemplate.xlsx index 53b8ce5bda34d60c142121f1551ae82d2f49f8c1..5f86498dd420ebc9340bb76f47ab7781d9ac3d0c 100644 GIT binary patch delta 9692 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 S1{Mq!4Cn89bmY4~NB;*%V8b8) literal 34867 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 Date: Tue, 6 Jun 2023 14:43:58 +0500 Subject: [PATCH 3/6] =?UTF-8?q?Revert=20"Revert=20"=D0=98=D1=81=D0=BF?= =?UTF-8?q?=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF=D0=BE?= =?UTF-8?q?=20=D1=81=D0=B5=D1=82=D0=B5=D1=82=D0=B2=D0=BE=D0=BC=D1=83=20?= =?UTF-8?q?=D0=B3=D1=80=D0=B0=D1=84=D0=B8=D0=BA=D1=83""?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 100b51a372701bd0afa00849071b07d031a14c47. --- .../ScheduleReportService.cs | 185 ++++++++++++++++++ .../ScheduleReportTemplate.xlsx | Bin 15314 -> 34867 bytes AsbCloudWebApi/appsettings.json | 6 +- 3 files changed, 188 insertions(+), 3 deletions(-) diff --git a/AsbCloudInfrastructure/Services/WellOperationService/ScheduleReportService.cs b/AsbCloudInfrastructure/Services/WellOperationService/ScheduleReportService.cs index b22ce6ff..40e69dd8 100644 --- a/AsbCloudInfrastructure/Services/WellOperationService/ScheduleReportService.cs +++ b/AsbCloudInfrastructure/Services/WellOperationService/ScheduleReportService.cs @@ -18,9 +18,19 @@ namespace AsbCloudInfrastructure.Services.WellOperationService private readonly IOperationsStatService operationsStatService; private readonly IWellService wellService; const string sheetNameSchedule = "Сетевой график"; + const string sheetNameSchedulePlan = "План"; + const string sheetNameScheduleFact = "Факт"; + const string sheetNameSchedulePrediction = "Прогноз"; const string sheetNameTvd = "ГГД"; const int maxChartsToWrap = 88; + private enum sheduleMode + { + plan, + fact, + predict + }; + public ScheduleReportService(IOperationsStatService operationsStatService, IWellService wellService) { this.operationsStatService = operationsStatService; @@ -47,6 +57,176 @@ namespace AsbCloudInfrastructure.Services.WellOperationService } private static void FillScheduleSheetToWorkbook(XLWorkbook workbook, IEnumerable> tvd, WellDto well) + { + FillScheduleSheet(workbook, tvd, well); + + var tvdList = tvd.ToList(); + var plans = tvd + .Where(t => t.Plan is not null) + .Select(t => t.Plan!) + .OrderBy(t => t.DateStart) + .ToList(); + FillCurrentScheduleSheetToWorkbook(workbook, plans, well, sheduleMode.plan); + + var facts = tvd + .Where(t => t.Fact is not null) + .Select(t => t.Fact!) + .OrderBy(t => t.DateStart) + .ToList(); + FillCurrentScheduleSheetToWorkbook(workbook, facts, well, sheduleMode.fact); + + var predictions = tvd + .Where(t => t.Predict is not null) + .Select(t => t.Predict!) + .OrderBy(t => t.DateStart) + .ToList(); + FillCurrentScheduleSheetToWorkbook(workbook, predictions, well, sheduleMode.predict); + + } + + private static void FillCurrentScheduleSheetToWorkbook(XLWorkbook workbook, List tvdList, WellDto well, sheduleMode mode) + { + var sheetName = GetSheetName(mode); + var sheet = workbook.Worksheets.FirstOrDefault(ws => ws.Name == sheetName); + if (sheet is null) + return; + + const int headerRowsCount = 6; + const int rowTitle = 3; + + const int columnRowNumber = 2; + const int columnCaption = 3; + const int columnWellDepthStart = 4; + const int columnWellDepthEnd = 5; + const int columnDeltaWellDepthPerDay = 6; + const int columnDuration = 7; + const int columnDateStart = 8; + const int columnDateEnd = 9; + const int columnGuilty = 10; + const int columnNpt = 11; + + var subTitle = $"на строительство скважины №{well.Caption}, куст: {well.Cluster}, м/р: {well.Deposit}"; + sheet.Row(rowTitle).Cell(3).Value = subTitle; + + DateTime lastFactDate = default; + var lastFactI = 0; + + int i = 0; + for (; i < tvdList.Count; i++) + { + var tvdItem = tvdList[i]; + if (tvdItem is null) + continue; + + if (i == 86) + { + ; + } + + var row = sheet.Row(1 + i + headerRowsCount); + + SetCell(row, columnRowNumber, $"{1 + i}"); + SetCell(row, columnCaption, $"{tvdItem.CategoryName} {tvdItem.CategoryInfo}".Trim()); + + SetCell(row, columnWellDepthStart, tvdItem.DepthStart); + + SetCell(row, columnWellDepthEnd, tvdItem.DepthEnd); + + SetCell(row, columnDeltaWellDepthPerDay, null); + if (mode == sheduleMode.fact) + { + var fact = tvdItem; + if (lastFactDate == default) + lastFactDate = fact.DateStart; + + if (i > 0 && fact.DateStart.DayOfYear != lastFactDate.DayOfYear) + { + var daylyOperations = tvdList + .Where(t => t.DateStart >= lastFactDate && t.DateStart < fact.DateStart); + if (daylyOperations.Any()) + { + var depthDayStart = daylyOperations.Min(o => o.DepthStart); + var depthDayEnd = daylyOperations.Max(o => o.DepthEnd); + var delta = depthDayEnd - depthDayStart; + SetCell(sheet.Row(1 + lastFactI + headerRowsCount), columnDeltaWellDepthPerDay, delta); + lastFactDate = fact.DateStart; + } + } + lastFactI = i; + } + + SetCell(row, columnDuration, tvdItem.DurationHours); + + SetCell(row, columnDateStart, tvdItem.DateStart); + + SetCell(row, columnDateEnd, tvdItem.DateStart.AddHours(tvdItem.DurationHours)); + + if (mode == sheduleMode.fact && WellOperationCategory.NonProductiveTimeSubIds.Contains(tvdItem.IdCategory)) + { + SetCell(row, columnGuilty, tvdItem.Comment); + SetCell(row, columnNpt, tvdItem.DurationHours); + row.Row(columnRowNumber, columnNpt).Style.Fill.BackgroundColor = XLColor.Red; + } + else + { + SetCell(row, columnGuilty, null); + SetCell(row, columnNpt, null); + } + } + + var rowNumSummary = 1 + i + headerRowsCount; + var rowNumStart = 1 + headerRowsCount; + var rowNumEnd = i + headerRowsCount; + + string MakeRangeFunction(string funcName, int column) + => $"={funcName}({GetColunmLetter(column)}{rowNumStart}:{GetColunmLetter(column)}{rowNumEnd})"; + + IXLCell AddRangeFormula(IXLRow row, string funcName, int column) + { + var cell = row.Cell(column); + cell.FormulaA1 = MakeRangeFunction(funcName, column); + return cell; + } + + var rowSummary = sheet.Row(rowNumSummary); + rowSummary.Style.Font.Bold = true; + rowSummary.Cell(columnCaption).Value = "Итого:"; + + AddRangeFormula(rowSummary, "sum", columnDeltaWellDepthPerDay); + AddRangeFormula(rowSummary, "sum", columnDuration); + var cell = AddRangeFormula(rowSummary, "max", columnDateEnd); + SetDateTime(cell); + SetDateTime(cell); + AddRangeFormula(rowSummary, "sum", columnNpt); + SetBorder(rowSummary.Cells(true).Style); + + var rowSummary2 = sheet.Row(rowNumSummary + 1); + rowSummary2.DataType = XLDataType.Number; + rowSummary2.Style.NumberFormat.Format = "0,00"; + rowSummary2.Cell(columnCaption).Value = "в сутках:"; + rowSummary2.Cell(columnDuration).FormulaA1 = $"={GetColunmLetter(columnDuration)}{rowNumSummary}/24"; + SetNumber(rowSummary2.Cell(columnDuration)); + rowSummary2.Cell(columnNpt).FormulaA1 = $"={GetColunmLetter(columnNpt)}{rowNumSummary}/24"; + SetNumber(rowSummary2.Cell(columnNpt)); + SetBorder(rowSummary2.Cells(true).Style); + } + + private static string GetSheetName(sheduleMode mode) + { + switch (mode) + { + case sheduleMode.plan: + return sheetNameSchedulePlan; + case sheduleMode.fact: + return sheetNameScheduleFact; + case sheduleMode.predict: + return sheetNameSchedulePrediction; + default: + return sheetNameSchedule; + } + } + + private static void FillScheduleSheet(XLWorkbook workbook, IEnumerable> tvd, WellDto well) { var sheet = workbook.Worksheets.FirstOrDefault(ws => ws.Name == sheetNameSchedule); if (sheet is null) @@ -98,6 +278,11 @@ namespace AsbCloudInfrastructure.Services.WellOperationService var row = sheet.Row(1 + i + headerRowsCount); + if (i == 86) + { + ; + } + SetCell(row, columnRowNumber, $"{1 + i}"); SetCell(row, columnCaption, $"{operation.CategoryName} {operation.CategoryInfo}".Trim()); diff --git a/AsbCloudInfrastructure/Services/WellOperationService/ScheduleReportTemplate.xlsx b/AsbCloudInfrastructure/Services/WellOperationService/ScheduleReportTemplate.xlsx index 5f86498dd420ebc9340bb76f47ab7781d9ac3d0c..53b8ce5bda34d60c142121f1551ae82d2f49f8c1 100644 GIT binary patch literal 34867 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 S1{Mq!4Cn89bmY4~NB;*%V8b8) diff --git a/AsbCloudWebApi/appsettings.json b/AsbCloudWebApi/appsettings.json index 629f10c8..ac0acc5b 100644 --- a/AsbCloudWebApi/appsettings.json +++ b/AsbCloudWebApi/appsettings.json @@ -7,10 +7,10 @@ } }, "ConnectionStrings": { - "DefaultConnection": "Host=localhost;Database=postgres;Username=postgres;Password=q;Persist Security Info=True", - "DebugConnection": "Host=localhost;Database=postgres;Username=postgres;Password=q;Persist Security Info=True;Include Error Detail=True", + "DefaultConnection": "Host=localhost;Database=postgres3;Username=postgres;Password=q;Persist Security Info=True", + "DebugConnection": "Host=localhost;Database=postgres3;Username=postgres;Password=q;Persist Security Info=True;Include Error Detail=True", "ServerConnection": "Host=192.168.1.70;Database=postgres;Username=postgres;Password=q;Persist Security Info=True", - "LocalConnection": "Host=localhost;Database=postgres;Username=postgres;Password=q;Persist Security Info=True" + "LocalConnection": "Host=localhost;Database=postgres3;Username=postgres;Password=q;Persist Security Info=True" }, "AllowedHosts": "*", //"userLimits": { From 4bc299dd7766a6714c854dede7190666d86a3b45 Mon Sep 17 00:00:00 2001 From: Olga Nemt Date: Wed, 7 Jun 2023 12:45:44 +0500 Subject: [PATCH 4/6] =?UTF-8?q?=D0=A1=D0=BE=D1=80=D1=82=D0=B8=D1=80=D0=BE?= =?UTF-8?q?=D0=B2=D0=BA=D0=B0=20=D0=BE=D0=BF=D0=B5=D1=80=D0=B0=D1=86=D0=B8?= =?UTF-8?q?=D0=B9=20=D0=B2=20=D1=81=D0=B5=D1=82=D0=B5=D0=B2=D0=BE=D0=B9?= =?UTF-8?q?=D0=BC=20=D0=B3=D1=80=D0=B0=D1=84=D0=B8=D0=BA=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ScheduleReportService.cs | 133 +----------------- .../ScheduleReportTemplate.xlsx | Bin 34867 -> 34647 bytes 2 files changed, 7 insertions(+), 126 deletions(-) diff --git a/AsbCloudInfrastructure/Services/WellOperationService/ScheduleReportService.cs b/AsbCloudInfrastructure/Services/WellOperationService/ScheduleReportService.cs index 40e69dd8..a850fa54 100644 --- a/AsbCloudInfrastructure/Services/WellOperationService/ScheduleReportService.cs +++ b/AsbCloudInfrastructure/Services/WellOperationService/ScheduleReportService.cs @@ -24,13 +24,6 @@ namespace AsbCloudInfrastructure.Services.WellOperationService const string sheetNameTvd = "ГГД"; const int maxChartsToWrap = 88; - private enum sheduleMode - { - plan, - fact, - predict - }; - public ScheduleReportService(IOperationsStatService operationsStatService, IWellService wellService) { this.operationsStatService = operationsStatService; @@ -66,50 +59,39 @@ namespace AsbCloudInfrastructure.Services.WellOperationService .Select(t => t.Plan!) .OrderBy(t => t.DateStart) .ToList(); - FillCurrentScheduleSheetToWorkbook(workbook, plans, well, sheduleMode.plan); + FillCurrentScheduleSheetToWorkbook(workbook, plans, sheetNameSchedulePlan); var facts = tvd .Where(t => t.Fact is not null) .Select(t => t.Fact!) .OrderBy(t => t.DateStart) .ToList(); - FillCurrentScheduleSheetToWorkbook(workbook, facts, well, sheduleMode.fact); + FillCurrentScheduleSheetToWorkbook(workbook, facts, sheetNameScheduleFact); var predictions = tvd .Where(t => t.Predict is not null) .Select(t => t.Predict!) .OrderBy(t => t.DateStart) .ToList(); - FillCurrentScheduleSheetToWorkbook(workbook, predictions, well, sheduleMode.predict); + FillCurrentScheduleSheetToWorkbook(workbook, predictions, sheetNameSchedulePrediction); } - private static void FillCurrentScheduleSheetToWorkbook(XLWorkbook workbook, List tvdList, WellDto well, sheduleMode mode) + private static void FillCurrentScheduleSheetToWorkbook(XLWorkbook workbook, List tvdList, string sheetName) { - var sheetName = GetSheetName(mode); var sheet = workbook.Worksheets.FirstOrDefault(ws => ws.Name == sheetName); if (sheet is null) return; const int headerRowsCount = 6; - const int rowTitle = 3; const int columnRowNumber = 2; const int columnCaption = 3; const int columnWellDepthStart = 4; const int columnWellDepthEnd = 5; - const int columnDeltaWellDepthPerDay = 6; - const int columnDuration = 7; - const int columnDateStart = 8; - const int columnDateEnd = 9; - const int columnGuilty = 10; - const int columnNpt = 11; - - var subTitle = $"на строительство скважины №{well.Caption}, куст: {well.Cluster}, м/р: {well.Deposit}"; - sheet.Row(rowTitle).Cell(3).Value = subTitle; - - DateTime lastFactDate = default; - var lastFactI = 0; + const int columnDuration = 6; + const int columnDateStart = 7; + const int columnDateEnd = 8; int i = 0; for (; i < tvdList.Count; i++) @@ -118,111 +100,15 @@ namespace AsbCloudInfrastructure.Services.WellOperationService if (tvdItem is null) continue; - if (i == 86) - { - ; - } - var row = sheet.Row(1 + i + headerRowsCount); SetCell(row, columnRowNumber, $"{1 + i}"); SetCell(row, columnCaption, $"{tvdItem.CategoryName} {tvdItem.CategoryInfo}".Trim()); - SetCell(row, columnWellDepthStart, tvdItem.DepthStart); - SetCell(row, columnWellDepthEnd, tvdItem.DepthEnd); - - SetCell(row, columnDeltaWellDepthPerDay, null); - if (mode == sheduleMode.fact) - { - var fact = tvdItem; - if (lastFactDate == default) - lastFactDate = fact.DateStart; - - if (i > 0 && fact.DateStart.DayOfYear != lastFactDate.DayOfYear) - { - var daylyOperations = tvdList - .Where(t => t.DateStart >= lastFactDate && t.DateStart < fact.DateStart); - if (daylyOperations.Any()) - { - var depthDayStart = daylyOperations.Min(o => o.DepthStart); - var depthDayEnd = daylyOperations.Max(o => o.DepthEnd); - var delta = depthDayEnd - depthDayStart; - SetCell(sheet.Row(1 + lastFactI + headerRowsCount), columnDeltaWellDepthPerDay, delta); - lastFactDate = fact.DateStart; - } - } - lastFactI = i; - } - SetCell(row, columnDuration, tvdItem.DurationHours); - SetCell(row, columnDateStart, tvdItem.DateStart); - SetCell(row, columnDateEnd, tvdItem.DateStart.AddHours(tvdItem.DurationHours)); - - if (mode == sheduleMode.fact && WellOperationCategory.NonProductiveTimeSubIds.Contains(tvdItem.IdCategory)) - { - SetCell(row, columnGuilty, tvdItem.Comment); - SetCell(row, columnNpt, tvdItem.DurationHours); - row.Row(columnRowNumber, columnNpt).Style.Fill.BackgroundColor = XLColor.Red; - } - else - { - SetCell(row, columnGuilty, null); - SetCell(row, columnNpt, null); - } - } - - var rowNumSummary = 1 + i + headerRowsCount; - var rowNumStart = 1 + headerRowsCount; - var rowNumEnd = i + headerRowsCount; - - string MakeRangeFunction(string funcName, int column) - => $"={funcName}({GetColunmLetter(column)}{rowNumStart}:{GetColunmLetter(column)}{rowNumEnd})"; - - IXLCell AddRangeFormula(IXLRow row, string funcName, int column) - { - var cell = row.Cell(column); - cell.FormulaA1 = MakeRangeFunction(funcName, column); - return cell; - } - - var rowSummary = sheet.Row(rowNumSummary); - rowSummary.Style.Font.Bold = true; - rowSummary.Cell(columnCaption).Value = "Итого:"; - - AddRangeFormula(rowSummary, "sum", columnDeltaWellDepthPerDay); - AddRangeFormula(rowSummary, "sum", columnDuration); - var cell = AddRangeFormula(rowSummary, "max", columnDateEnd); - SetDateTime(cell); - SetDateTime(cell); - AddRangeFormula(rowSummary, "sum", columnNpt); - SetBorder(rowSummary.Cells(true).Style); - - var rowSummary2 = sheet.Row(rowNumSummary + 1); - rowSummary2.DataType = XLDataType.Number; - rowSummary2.Style.NumberFormat.Format = "0,00"; - rowSummary2.Cell(columnCaption).Value = "в сутках:"; - rowSummary2.Cell(columnDuration).FormulaA1 = $"={GetColunmLetter(columnDuration)}{rowNumSummary}/24"; - SetNumber(rowSummary2.Cell(columnDuration)); - rowSummary2.Cell(columnNpt).FormulaA1 = $"={GetColunmLetter(columnNpt)}{rowNumSummary}/24"; - SetNumber(rowSummary2.Cell(columnNpt)); - SetBorder(rowSummary2.Cells(true).Style); - } - - private static string GetSheetName(sheduleMode mode) - { - switch (mode) - { - case sheduleMode.plan: - return sheetNameSchedulePlan; - case sheduleMode.fact: - return sheetNameScheduleFact; - case sheduleMode.predict: - return sheetNameSchedulePrediction; - default: - return sheetNameSchedule; } } @@ -278,11 +164,6 @@ namespace AsbCloudInfrastructure.Services.WellOperationService var row = sheet.Row(1 + i + headerRowsCount); - if (i == 86) - { - ; - } - SetCell(row, columnRowNumber, $"{1 + i}"); SetCell(row, columnCaption, $"{operation.CategoryName} {operation.CategoryInfo}".Trim()); diff --git a/AsbCloudInfrastructure/Services/WellOperationService/ScheduleReportTemplate.xlsx b/AsbCloudInfrastructure/Services/WellOperationService/ScheduleReportTemplate.xlsx index 53b8ce5bda34d60c142121f1551ae82d2f49f8c1..06926243bb55e8cea10183465be94d1e346f4a24 100644 GIT binary patch delta 18017 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 z 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 delta 17298 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�PY>vDRHnN z=Q96TyqyZX6OOrHLuG%@O+^^kdt7#OeBHrgf=PoN`4Ihzh_t4_5Zk_1+v5BThQFZ%nIRA6AF#cgTM_M?n)cN0h}~1><5lJTF4*j^ zsRA0+Xjthu_9uy6ZMS%f$2Nmp-nHXAsk*hNLgz#M{fmXjJrd}52`+2g;~&vl%FX)u zQ^&t{FNiip?xCNiL75`um5`@5fp#WQ987x{{MVjcb|PlSzfy^B#;yl^T$9W-B7;d}LQi-kAEO;xx;1^})`JQbCNeibXhrQC~CmI434J7;GRFJvP|bqIc)n zC-xob#9gx57ykOm`(Cp*-QuL?`v932;}UDOy(>sQ@Oh1_>zg}IROFeS>z*otoBGzQ zQ~dHM@M&IOnbO&BN1g`+TzLZ=+`5VXY{Rd1?m6$Ir?R^=xi`eEcXYfvQ}*(T+b$hV zmEE$t6rN*$$u7Rw^&}u}_VcI5n=S{btuj4m66!v^EBCrjca+c0{edD$oR=L*<$0C& zylaERg>R+mpEZw4Uq7e%)iVg=`<$N=d-Gj8WOp~AAKogR+fQDvMAulJ!~wy`FSi<_ z7w+|ZlxWe+{K5)Z4@g)PzuM@<|Mf6{HpYQJe2Tljy6fVFOw!=deuF}a?3IaE_81XC zvl4g3)i8Oz(pL^|KUjD4R9!k3FcVW=6OXxplM6!{4|M$=Y3S(%ZPppww9Gat3tm|j zg_f?t%i>?resKt}l1uxyj9T~bCny@wtH7&eZY$^x1D&TsEBn++^yUH<~Gvn zXx5%1I#ench@n1wd`0w=OI7n?eKDeb)=VqgwmCF$d&&1r=eoB=Pv%@yZFJIfzgc(c zQiq|`={daxYb(f!ozQoCN}le`(h*1v!7a`Ix^2>HyqD;&iFnz$#^&vI zgwtjfqJn$EBi;^ZHa<0Q+3ciM)C04^sv1|@R%;yrd~L`Lv$JE*bgXws`d8*UhWM&#e0Y z6MZBBU4No>uXtnNfUC5TCW*hr`0B3fr!#dreef@-NkRnwXeMlqpKriLf?4S3KOIW{m8V0`dX_s|Mu)6QEbR#^f z6xzxP0(|dHj5PNh57i2J@a5R))T>9AR)4ywMeqMG+N!X&Qy;y55(0RXL@yq3c=KTE zLif6Xtv_~um%y;FmD!rN?aZ}V4?Zi-Z!ms(zA0+r-o*{sYb>L8UEJet7IW*7uF87( zvx}Za$=4?1710thZou6is~TPewQ~n+WNHIBdzMm$6@U2$q?cd8)Yaw@T5}eW0~#=s znBPP5qPUay2b)^b1Cq@iNYCo%8_IZz+%hZmVmCtXcARvudGS<7|XYX4r~h&w@laRP}#Vqi`dH=I!{()!xE^Idq3G(~z@%$Z^ z{Bu0-Lct@~jsJA|cO0 Date: Wed, 7 Jun 2023 12:47:44 +0500 Subject: [PATCH 5/6] =?UTF-8?q?=D0=9C=D0=B8=D0=BD=D0=B8-=D0=BF=D1=80=D0=B0?= =?UTF-8?q?=D0=B2=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WellOperationService/ScheduleReportService.cs | 8 ++++---- AsbCloudWebApi/appsettings.json | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/AsbCloudInfrastructure/Services/WellOperationService/ScheduleReportService.cs b/AsbCloudInfrastructure/Services/WellOperationService/ScheduleReportService.cs index a850fa54..1c8b6693 100644 --- a/AsbCloudInfrastructure/Services/WellOperationService/ScheduleReportService.cs +++ b/AsbCloudInfrastructure/Services/WellOperationService/ScheduleReportService.cs @@ -59,25 +59,25 @@ namespace AsbCloudInfrastructure.Services.WellOperationService .Select(t => t.Plan!) .OrderBy(t => t.DateStart) .ToList(); - FillCurrentScheduleSheetToWorkbook(workbook, plans, sheetNameSchedulePlan); + FillCurrentScheduleSheet(workbook, plans, sheetNameSchedulePlan); var facts = tvd .Where(t => t.Fact is not null) .Select(t => t.Fact!) .OrderBy(t => t.DateStart) .ToList(); - FillCurrentScheduleSheetToWorkbook(workbook, facts, sheetNameScheduleFact); + FillCurrentScheduleSheet(workbook, facts, sheetNameScheduleFact); var predictions = tvd .Where(t => t.Predict is not null) .Select(t => t.Predict!) .OrderBy(t => t.DateStart) .ToList(); - FillCurrentScheduleSheetToWorkbook(workbook, predictions, sheetNameSchedulePrediction); + FillCurrentScheduleSheet(workbook, predictions, sheetNameSchedulePrediction); } - private static void FillCurrentScheduleSheetToWorkbook(XLWorkbook workbook, List tvdList, string sheetName) + private static void FillCurrentScheduleSheet(XLWorkbook workbook, List tvdList, string sheetName) { var sheet = workbook.Worksheets.FirstOrDefault(ws => ws.Name == sheetName); if (sheet is null) diff --git a/AsbCloudWebApi/appsettings.json b/AsbCloudWebApi/appsettings.json index ac0acc5b..629f10c8 100644 --- a/AsbCloudWebApi/appsettings.json +++ b/AsbCloudWebApi/appsettings.json @@ -7,10 +7,10 @@ } }, "ConnectionStrings": { - "DefaultConnection": "Host=localhost;Database=postgres3;Username=postgres;Password=q;Persist Security Info=True", - "DebugConnection": "Host=localhost;Database=postgres3;Username=postgres;Password=q;Persist Security Info=True;Include Error Detail=True", + "DefaultConnection": "Host=localhost;Database=postgres;Username=postgres;Password=q;Persist Security Info=True", + "DebugConnection": "Host=localhost;Database=postgres;Username=postgres;Password=q;Persist Security Info=True;Include Error Detail=True", "ServerConnection": "Host=192.168.1.70;Database=postgres;Username=postgres;Password=q;Persist Security Info=True", - "LocalConnection": "Host=localhost;Database=postgres3;Username=postgres;Password=q;Persist Security Info=True" + "LocalConnection": "Host=localhost;Database=postgres;Username=postgres;Password=q;Persist Security Info=True" }, "AllowedHosts": "*", //"userLimits": { From d845f4c5927bd95db0b6ae1c2183771c0eebfce1 Mon Sep 17 00:00:00 2001 From: ngfrolov Date: Wed, 7 Jun 2023 14:04:11 +0500 Subject: [PATCH 6/6] =?UTF-8?q?ScheduleReportService=20=D0=BC=D0=B5=D0=BB?= =?UTF-8?q?=D0=BA=D0=B8=D0=B5=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B4=D0=B5=D0=BB?= =?UTF-8?q?=D0=BA=D0=B8.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ScheduleReportService.cs | 27 ++++++------------ .../ScheduleReportTemplate.xlsx | Bin 34647 -> 19974 bytes 2 files changed, 9 insertions(+), 18 deletions(-) diff --git a/AsbCloudInfrastructure/Services/WellOperationService/ScheduleReportService.cs b/AsbCloudInfrastructure/Services/WellOperationService/ScheduleReportService.cs index 1c8b6693..e847179d 100644 --- a/AsbCloudInfrastructure/Services/WellOperationService/ScheduleReportService.cs +++ b/AsbCloudInfrastructure/Services/WellOperationService/ScheduleReportService.cs @@ -12,7 +12,6 @@ using System.Threading.Tasks; namespace AsbCloudInfrastructure.Services.WellOperationService { - public class ScheduleReportService : IScheduleReportService { private readonly IOperationsStatService operationsStatService; @@ -57,27 +56,23 @@ namespace AsbCloudInfrastructure.Services.WellOperationService var plans = tvd .Where(t => t.Plan is not null) .Select(t => t.Plan!) - .OrderBy(t => t.DateStart) - .ToList(); + .OrderBy(t => t.DateStart); FillCurrentScheduleSheet(workbook, plans, sheetNameSchedulePlan); var facts = tvd .Where(t => t.Fact is not null) .Select(t => t.Fact!) - .OrderBy(t => t.DateStart) - .ToList(); + .OrderBy(t => t.DateStart); FillCurrentScheduleSheet(workbook, facts, sheetNameScheduleFact); var predictions = tvd .Where(t => t.Predict is not null) .Select(t => t.Predict!) - .OrderBy(t => t.DateStart) - .ToList(); + .OrderBy(t => t.DateStart); FillCurrentScheduleSheet(workbook, predictions, sheetNameSchedulePrediction); - } - private static void FillCurrentScheduleSheet(XLWorkbook workbook, List tvdList, string sheetName) + private static void FillCurrentScheduleSheet(XLWorkbook workbook, IEnumerable tvdList, string sheetName) { var sheet = workbook.Worksheets.FirstOrDefault(ws => ws.Name == sheetName); if (sheet is null) @@ -93,22 +88,18 @@ namespace AsbCloudInfrastructure.Services.WellOperationService const int columnDateStart = 7; const int columnDateEnd = 8; - int i = 0; - for (; i < tvdList.Count; i++) + int i = 1; + foreach (var tvdItem in tvdList) { - var tvdItem = tvdList[i]; - if (tvdItem is null) - continue; - - var row = sheet.Row(1 + i + headerRowsCount); - - SetCell(row, columnRowNumber, $"{1 + i}"); + var row = sheet.Row(i + headerRowsCount); + SetCell(row, columnRowNumber, $"{i}"); SetCell(row, columnCaption, $"{tvdItem.CategoryName} {tvdItem.CategoryInfo}".Trim()); SetCell(row, columnWellDepthStart, tvdItem.DepthStart); SetCell(row, columnWellDepthEnd, tvdItem.DepthEnd); SetCell(row, columnDuration, tvdItem.DurationHours); SetCell(row, columnDateStart, tvdItem.DateStart); SetCell(row, columnDateEnd, tvdItem.DateStart.AddHours(tvdItem.DurationHours)); + i++; } } diff --git a/AsbCloudInfrastructure/Services/WellOperationService/ScheduleReportTemplate.xlsx b/AsbCloudInfrastructure/Services/WellOperationService/ScheduleReportTemplate.xlsx index 06926243bb55e8cea10183465be94d1e346f4a24..7dc25b916381d4bb7e33f0e4a991b4e36d6524ee 100644 GIT binary patch delta 13770 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 c;N#H0PVS!phW#&>XDKjq7!BO1%pF literal 34647 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