-
-
Save ShilGen/89f417549d430e0dae3856fff284ded6 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ПБК: Даты поверки приборов учёта абонента | |
// №пп | ТУ | ПУ | Класс точности | Дата последней поверки | Дата следующей поверки | |
var workSheet = WorkbookNonExcel.Worksheets.FirstOrDefault(); | |
var currentUser = RDClassesAndInstances.SecurityManager.CurrentUser; | |
var consumerUser = currentUser as ConsumerUser; | |
var consumer = consumerUser == null ? null : consumerUser.AttributeConsumer; | |
if (consumer == null) | |
throw new Exception("Пользователь не является абонентом"); | |
var meterPoints = consumer.AttributeMeterPoints.GetValues(); | |
if (!string.IsNullOrEmpty(ReportFileName)) | |
workSheet.Cells[0, 0].Value = ReportFileName; | |
workSheet.Cells[1, 0].Value = string.Format("Сформирован {0:dd.MM.yyyy HH:mm}", DateTime.UtcNow.AddHours(User.GetClassInfo().GetCurrentUserTimeZoneOffset())); | |
// размеры таблицы и т.п. | |
var tableColumnsCount = 6; | |
var tableStartRow = 7; | |
var meterPointIndex = 0; | |
workSheet.Cells[3, 0].Value = string.Format("Абонент: {0}", consumer.Caption); | |
var naturalPerson = consumer as NaturalPerson; | |
var legalEntity = consumer as LegalEntity; | |
var address = naturalPerson != null ? naturalPerson.AttributeRegistration : legalEntity != null ? legalEntity.AttributeAddress : string.Empty; | |
workSheet.Cells[4, 0].Value = string.Format("Адрес: {0}", address); | |
var now = DateTime.Now; | |
var afterThreeMonth = now.AddMonths(3); | |
var warningRanges = new List<string>(); // подсветка желтым, если дата следующей поверки предстоит менее чем через 3 месяца | |
var errorRanges = new List<string>(); // подсветка красным, если дата следующей поверки уже просрочена | |
var index = tableStartRow; | |
// построение таблицы | |
foreach (var meterPoint in meterPoints) | |
{ | |
workSheet.Cells[index, 0].Value = meterPointIndex + 1; | |
workSheet.Cells[index, 1].Value = meterPoint.AttributeDisplayedCaption; | |
var meter = meterPoint.AttributeElectricityMeter; | |
workSheet.Cells[index, 2].Value = (meter != null) ? meter.Caption : "-"; | |
workSheet.Cells[index, 3].Value = "-"; | |
workSheet.Cells[index, 4].Value = "-"; | |
if (meter != null) | |
{ | |
if (meter.AttributeAccuracyClass != null) | |
workSheet.Cells[index, 3].Value = meter.AttributeAccuracyClass.ToString(); | |
if (meter.AttributeLastCalibrationDate.HasValue) | |
workSheet.Cells[index, 4].Value = meter.AttributeLastCalibrationDate.Value.ToString("dd.MM.yyyy HH:mm"); | |
if (meter.AttributeNextCalibrationDate.HasValue) | |
{ | |
workSheet.Cells[index, 5].Value = meter.AttributeNextCalibrationDate.Value.ToString("dd.MM.yyyy HH:mm"); | |
if (meter.AttributeNextCalibrationDate.Value < now) | |
workSheet.Cells.GetSubrangeAbsolute(index, 5, index, 5).SetColor(255, 0, 0); | |
else if (meter.AttributeNextCalibrationDate.Value < afterThreeMonth) | |
workSheet.Cells.GetSubrangeAbsolute(index, 5, index, 5).SetColor(255, 255, 0); | |
} | |
} | |
index++; | |
meterPointIndex++; | |
} | |
workSheet.Cells.GetSubrangeAbsolute(tableStartRow, 0, index - 1, 5).SetBorder(); | |
#if !NETCORE | |
var startAutoFitRow = tableStartRow - 1; | |
var endAutoFitRow = tableStartRow + 5; | |
int columnCount = 6; | |
for (int i = 1; i < columnCount; i++) | |
workSheet.Columns[i].AutoFit(1, workSheet.Rows[startAutoFitRow], workSheet.Rows[endAutoFitRow]); | |
for (int j = startAutoFitRow; j <= endAutoFitRow; j++) | |
workSheet.Rows[j].AutoFit(); | |
#endif |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment