Skip to content

Instantly share code, notes, and snippets.

@ShilGen
Created June 20, 2023 08:46
Show Gist options
  • Save ShilGen/95b02489f5e5aadc436dbcd9cecc63fa to your computer and use it in GitHub Desktop.
Save ShilGen/95b02489f5e5aadc436dbcd9cecc63fa to your computer and use it in GitHub Desktop.
using ObjStudioClasses;
using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Threading.Tasks;
using GemBox.Spreadsheet;
public class Script
{
public static object Execute()
{
var meters = MeterPoint.GetInstances();
var merqurias = meters.Where(x=> x.AttributeElectricityMeter != null && x.AttributeElectricityMeter.AttributeModel.Equals("Меркурий 200") /*&& x.AttributeElectricityMeter.AttributeSerialNumber == "222"*/);
var meterPoints = merqurias.OfType<MeterPoint>().Distinct().ToArray();
// тарифы по ТУ
var meterPointToAttributeTariff = meterPoints.Select(x => new Tuple<MeterPoint, Tariff>(x, x.AttributeTariff))
.Where(x => x.Item2 != null).ToDictionary(x => x.Item1, x => x.Item2);
// информация по тарифам
var tariffs = new Dictionary<Tariff, Tuple<string, Dictionary<TariffZoneBasedParameter, TariffZoneBasedParameter>>[]>();
Tariff tariff = null;
foreach (var meterPoint in meterPoints.Where(x => meterPointToAttributeTariff.TryGetValue(x, out tariff))
.Where(x => !tariffs.ContainsKey(tariff)))
{
tariffs.Add(tariff, tariff.AttributeOrderedTariffZones.GetValues()
.Select(x => new Tuple<string, Dictionary<TariffZoneBasedParameter, TariffZoneBasedParameter>>(
x.AttributeTariffZone.Caption,
x.AttributeTariffZone.RelationsTariffZoneBasedParameterAttributeTariffZone
.ToDictionary(y => y.AttributeClonedFrom))).ToArray());
}
foreach (var meterPoint in meterPoints)
{
meterPointToAttributeTariff.TryGetValue(meterPoint, out tariff);
Tuple<string, Dictionary<TariffZoneBasedParameter, TariffZoneBasedParameter>>[] tariffInfo = null;
//return tariffInfo;
if (tariff != null)
tariffs.TryGetValue(tariff, out tariffInfo);
//return tariffInfo;
//
//return tariffs.FirstOrDefault().Key.GetTariffZones().FirstOrDefault().TariffZone.RelationsTariffZoneBasedParameterAttributeTariffZone;
double value = 1200;
if (tariffInfo != null)
{
foreach (var zone in tariffInfo)
{
//return zone;
// получаем параметр по зоне
TariffZoneBasedParameter zoneParameter;
zone.Item2.TryGetValue(TariffZoneBasedParameter.Instances.EnergyActiveForwardTotal, out zoneParameter);
//if (i==200)
//return zoneParameter;
//выполняем запись параметра для тарифов
SetValue (value, zoneParameter, meterPoint);
value = 1300;
}
}
value = 1500;
SetValue (value, TariffZoneBasedParameter.Instances.EnergyActiveForwardTotal, meterPoint);
}
return 0;
}
private static void SetValue (double value, TariffZoneBasedParameter zoneParameter, MeterPoint meterPoint)
{
var item=new MeasuredValueWithDtData();
item.Value = value;
item.ValueDt = new DateTime (2022, 9, 15, 12, 0, 0);
var pv=new ParameterValuesData();
var mvvdd=new List<MeasuredValueWithDtData>();
mvvdd.Add(item);
pv.Parameter=zoneParameter;
pv.Values=mvvdd.ToArray();
var pvd=new List<ParameterValuesData>();
pvd.Add(pv);
meterPoint.TransmitData(pvd.ToArray());
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment