Skip to content

Instantly share code, notes, and snippets.

@ShilGen
Last active June 30, 2023 13:09
Show Gist options
  • Save ShilGen/51d5250678ce3eeb70a16390f224b3a6 to your computer and use it in GitHub Desktop.
Save ShilGen/51d5250678ce3eeb70a16390f224b3a6 to your computer and use it in GitHub Desktop.
Фиксация текущих значений в Энергию на начало суток.
//входные параметры
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