Beispiel #1
0
        private async Task <MeasurementBySite> GetMeasurementsBySiteIdAsync(int SiteId)
        {
            IEnumerable <string> pcsKeys = await GetKeys(SiteId, 1);

            IEnumerable <string> bmsKeys = await GetKeys(SiteId, 2);

            IEnumerable <string> pvKeys = await GetKeys(SiteId, 4);

            var actPws = await GetValues(pcsKeys, "actPwrKw");

            var socValues = await GetValues(bmsKeys, "bms_soc");

            var pvValues = await GetValues(pvKeys, "TotalActivePower");

            int cntOfPcs   = actPws.Count();
            int cntOfBms   = socValues.Count();
            int cntOfPv    = pvValues.Count();
            int cntOfEvent = await GetCountOfActiveEvents(new int[] { SiteId });

            MeasurementBySite measurement = new MeasurementBySite()
            {
                siteid            = SiteId,
                meanofsoc         = cntOfBms > 0 ? socValues.Average() : 0,
                sumofpvgeneration = cntOfPv > 0 ? pvValues.Sum() : 0,
                countofpcs        = cntOfPcs,
                countofevent      = cntOfEvent,
                countofbms        = cntOfBms,
                countofpv         = cntOfPv,
                sumofactivepower  = cntOfPcs > 0 ? actPws.Sum() : 0,
                sumofcharge       = actPws.Where(x => x < 0).Sum(),
                sumofdischarge    = actPws.Where(x => x > 0).Sum()
            };

            return(measurement);
        }
Beispiel #2
0
        public async Task <MeasurementByRcc> GetMeasurementByRccAsync(ResolveFieldContext context, int rcc)
        {
            if (context.ThrowIfInvalidAuthorization() == false)
            {
                return(null);
            }
            var rcckeys = context.GetSiteKeysByRcc();

            if (rcckeys.ContainsKey(rcc) == false)
            {
                context.Errors.Add(new GraphQL.ExecutionError("대상 RCC의 지역 사이트는 소유하지 않았습니다"));
                return(null);
            }
            MeasurementByRcc measurementByRcc = new MeasurementByRcc();
            List <double>    socs             = new List <double>();

            foreach (int siteid in rcckeys[rcc])
            {
                MeasurementBySite site = await GetMeasurementsBySiteIdAsync(siteid);

                socs.Add(site.meanofsoc);
                measurementByRcc.countofbms        += site.countofbms;
                measurementByRcc.countofpcs        += site.countofpcs;
                measurementByRcc.countofpv         += site.countofpv;
                measurementByRcc.countofevent      += site.countofevent;
                measurementByRcc.sumofactivepower  += site.sumofactivepower;
                measurementByRcc.sumofpvgeneration += site.sumofpvgeneration;
                measurementByRcc.sumofcharge       += site.sumofcharge;
                measurementByRcc.sumofdischarge    += site.sumofdischarge;
            }
            measurementByRcc.meanofsoc    = socs.Average();
            measurementByRcc.countofsites = rcckeys[rcc].Count;
            measurementByRcc.rcc          = rcc;
            return(measurementByRcc);
        }
Beispiel #3
0
        public async Task <IEnumerable <MeasurementBySite> > GetMeasurementByAllSitesAsync(ResolveFieldContext context)
        {
            if (context.ThrowIfInvalidAuthorization() == false)
            {
                return(null);
            }
            var siteKeys = context.GetAllSiteIds();
            List <MeasurementBySite> allsites = new List <MeasurementBySite>();

            foreach (int sizteId in siteKeys)
            {
                MeasurementBySite site = await GetMeasurementsBySiteIdAsync(sizteId);

                allsites.Add(site);
            }
            return(allsites);
        }