Skip to content

Instantly share code, notes, and snippets.

@ShilGen
Created August 31, 2023 12:36
Show Gist options
  • Save ShilGen/60f593b79fafe84ad8dd25419cb5bcca to your computer and use it in GitHub Desktop.
Save ShilGen/60f593b79fafe84ad8dd25419cb5bcca to your computer and use it in GitHub Desktop.
Отчет по диагностике сбора данных
/*
Наименование ТУ
Серийный
Тип
Показания за последние сутки
Дата показаний
Время записи показаний в БД
Ошибка
Дата ошибки
Область видимости
Тип маршрута
Время счетчика
Время сервера
*/
var worksheet = WorkbookNonExcel.Worksheets.FirstOrDefault();
var col=CollectorService.OnlyInstance;
var mps=new HashSet<MeterPoint>();
if(ReportParams.cls.Any())
{
foreach(var cl in ReportParams.cls)
{
var meters=cl.GetAllChildrenOfClass(MeterPoint.GetClassInfo()).OfType<MeterPoint>().ToArray();
foreach(var meter in meters)
{
mps.Add(meter);
}
}
}
else
{
mps=MeterPoint.GetInstances().ToHashSet();
}
var par=new Parameter[1];
par[0]=TariffZoneBasedParameter.Instances.EnergyActiveForwardTotalFixDay;
int g=7;
var dInterval=new DayIntervalData{StartDt=DateTime.Now.AddDays(-g),EndDt=DateTime.Now};
var i=0;
using (PreloadManager.Current.RegisterCache(() => new MeterPointGetEnergyValueCache(mps,par,dInterval)))
{
foreach(var mp in mps)
{
i++;
worksheet.Cells[i,0].Value=mp.Caption;
var el=mp.AttributeElectricityMeter;
if(el!=null)
{
worksheet.Cells[i,1].Value=el.AttributeSerialNumber;
worksheet.Cells[i,2].Value=el.Class.Caption;
var data=mp.GetMeterPointFinalData(par[0],dInterval).ToArray();
if(data.Any())
{
var ld=data.OrderBy(x=>x.ValueDt).LastOrDefault();
worksheet.Cells[i,3].Value=ld.Value;
worksheet.Cells[i,4].Value=ld.ValueDt;
worksheet.Cells[i,5].Value=ld.RegisterDt;
}
var rts=el.AttributeRoutes.GetValues().ToArray();
if(rts.Any())
{
var r=rts.FirstOrDefault();
var dr=r as DirectRoute;
if(dr!=null) worksheet.Cells[i,9].Value="Прямой маршрут";
else
{
var ndr=r as NonDirectRoute;
if(ndr!=null)
{
worksheet.Cells[i,9].Value="УСПД";
if(ndr.AttributeChannelizingEquipment!=null) worksheet.Cells[i,9].Value=ndr.AttributeChannelizingEquipment.Class.Caption;
}
}
var d=rts.FirstOrDefault().DiagnosticGetState(DiagnosticStateData.LoggedEntityLastError,null);
var d1=d.FirstOrDefault();
if(d1!=null)
{
worksheet.Cells[i,6].Value=d1.Value.AsString;
worksheet.Cells[i,7].Value=d1.Dt;
}
}
var ils=el.AttributeIsolationLevels.LastOrDefault();
if(ils!=null) worksheet.Cells[i,8].Value=ils.AttributeCaption;
var gts=el.GetTimeStatus();
if(gts!=null)
{
var lsr=gts.LastSucceedReadInfo;
if(lsr!=null)
{
worksheet.Cells[i,10].SetValue(lsr.ServerDt.AddSeconds(lsr.DeltaValueSec));
worksheet.Cells[i,10].Style.NumberFormat="dd.mm.yyyy hh:mm";
worksheet.Cells[i,11].SetValue(lsr.ServerDt);
worksheet.Cells[i,11].Style.NumberFormat="dd.mm.yyyy hh:mm";
}
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment