-
-
Save ShilGen/51d5250678ce3eeb70a16390f224b3a6 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 css=ReportParams.Csenario; | |
var de=-ReportParams.depth; | |
// параметры отчета | |
var workSheet = WorkbookNonExcel.Worksheets.FirstOrDefault(); | |
var els=new HashSet<ElectricityMeter>(ElectricityMeter.GetInstances().ToArray()); | |
var shid=WebApplication.OnlyInstance.GetCollectorServiceShardsInfo(); | |
int i=0; | |
TariffZoneBasedParameter[] parameters=new TariffZoneBasedParameter[2]; | |
parameters[0]=TariffZoneBasedParameter.Instances.EnergyActiveForwardTotalFixDay; | |
parameters[1]=TariffZoneBasedParameter.Instances.EnergyActiveForwardTotal; // текущие | |
// получение выбранных ПУ в сценарии | |
var eqs = CollectorService.OnlyInstance. | |
GetEquipmentWithSupportedParametersForScenario(shid.FirstOrDefault().Id,css). | |
Select(x => x.Equipment as ElectricityMeter). | |
AsEnumerable(); | |
AddLogInfo("Выбран сценарий сбора: " + css.Caption); | |
foreach(var eq in eqs) | |
{ | |
if(eq!=null) | |
{ | |
var eql = eq as ElectricityMeter; | |
if (eql != null ) | |
{ | |
var sn="-"; | |
sn = eql.AttributeSerialNumber; | |
workSheet.Cells[i, 0].Value = sn; | |
ElectricityMeter elem=null; | |
var ele=els.Where(qwe=>qwe.AttributeSerialNumber==sn); | |
if(ele.Count()==0) ele=els.Where(qwe=>qwe.AttributeSerialNumber=="0"+sn); | |
if(ele.Count()==0) ele=els.Where(qwe=>"0"+qwe.AttributeSerialNumber==sn); | |
if(ele.Count()==0) workSheet.Cells[i,1].Value="Не найден"; | |
if(ele.Count()>1) ele=ele.Where(qwe=>qwe.AttributeMeterPointPlacement!=null); | |
if(ele.Count()>1) workSheet.Cells[i,1].Value="Много"; | |
if(ele.Count()==1) | |
{ | |
var el=ele.FirstOrDefault(); | |
var dInterval=new DayIntervalData{StartDt=DateTime.Now.AddDays(de),EndDt=DateTime.Now}; | |
var dd1=el.ReceiveData(parameters[0],dInterval).ToArray(); | |
if(!dd1.Any()) | |
{ | |
workSheet.Cells[i,1].Value="нет зафиксированных"; //SG add 20.06 | |
var dd2= el.ReceiveData(parameters[1],dInterval); // получаем текущие | |
foreach(var dd in dd2) | |
{ | |
var dat=dd.ValueDt; | |
workSheet.Cells[i,2].Value= dd.ValueDt;//.ToString("dd.MM.yyyy HH:mm:ss"); //SG add 20.06 | |
workSheet.Cells[i,3].Value= dd.Value;//.ToString("dd.MM.yyyy HH:mm:ss"); //SG add 20.06 | |
if(dat.Value.Hour==0 && dat.Value.Minute==0 && dat.Value.Second==0) | |
{ | |
var vcs=new ValueCustomStatus[1]; | |
vcs[0]=MeasuredValueStatus.Instances.Reconfiguring; | |
var item3=new MeasuredValueWithDtData(); | |
item3.Value=dd.Value; | |
item3.ValueDt=dat.Value; | |
var mvvdd3=new List<MeasuredValueWithDtData>(); | |
mvvdd3.Add(item3); | |
var pv3=new ParameterValuesData(); | |
pv3.Parameter=parameters[0]; | |
pv3.Values=mvvdd3.ToArray(); | |
var pvd3=new List<ParameterValuesData>(); | |
pvd3.Add(pv3); | |
el.TransmitData(pvd3.ToArray()); | |
} | |
else | |
{ | |
workSheet.Cells[i,1].Value="есть зафиксированные"; | |
} //SG add 20.06 | |
} // end of foreach(var dd in dd2) | |
} // if(!dd1.Any()) | |
} // if(ele.Count()==1) | |
i++; | |
} | |
} | |
} | |
AddLogInfo("Количество опрашиваемых ПУ: " + i); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment