-
-
Save ShilGen/95b02489f5e5aadc436dbcd9cecc63fa 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
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