Ejemplo n.º 1
0
        private static Dictionary <string, Dictionary <int, double> > GetDictForVerbrauch(
            [NotNull] MonthlyElectricityUsePerStandort perStandortElectricityMonthlyValuesByTarif,
            Verbrauchsart vba)
        {
            switch (vba)
            {
            case Verbrauchsart.ElectricityLocalnet:
                return(perStandortElectricityMonthlyValuesByTarif.ElectricityLocalNetMonthlyValuesByTarif);

            case Verbrauchsart.Gas:
                return(perStandortElectricityMonthlyValuesByTarif.GasMonthlyValuesByTarif);

            case Verbrauchsart.Fernwaerme:
                return(perStandortElectricityMonthlyValuesByTarif.FernwaermeMonthlyValuesByTarif);

            case Verbrauchsart.ElectricityNetz:

                return(perStandortElectricityMonthlyValuesByTarif.ElectricityNetzMonthlyValuesByTarif);

            case Verbrauchsart.Netzuebergabe:
                return(perStandortElectricityMonthlyValuesByTarif.ElectricityNetzübergabeMonthlyValuesByTarif);

            default:
                throw new ArgumentOutOfRangeException(nameof(vba), vba, null);
            }
        }
        protected override void RunActualProcess()
        {
            var dbRaw    = Services.SqlConnectionPreparer.GetDatabaseConnection(Stage.Raw, Constants.PresentSlice);
            var dbEnergy = Services.SqlConnectionPreparer.GetDatabaseConnection(Stage.ComplexEnergyData, Constants.PresentSlice);

            dbEnergy.RecreateTable <MonthlyElectricityUsePerStandort>();
            var localnetEntries = dbRaw.Fetch <Localnet>();

            localnetEntries.Sort(Comparison);
            var clds = new Dictionary <string, MonthlyElectricityUsePerStandort>();

            dbEnergy.BeginTransaction();
            foreach (var localnet in localnetEntries)
            {
                if (string.IsNullOrWhiteSpace(localnet.Objektstandort))
                {
                    continue;
                }

                var cleanedStandort = Helpers.CleanAdressString(localnet.Objektstandort);
                if (!clds.ContainsKey(cleanedStandort))
                {
                    var cld1 = new MonthlyElectricityUsePerStandort {
                        Standort        = localnet.Objektstandort,
                        CleanedStandort = cleanedStandort
                    };
                    clds.Add(cleanedStandort, cld1);
                }

                var cld = clds[cleanedStandort];
                ProcessVerrechnungstyp(localnet, cld);
                var totalSumFromMonthly = clds.Values.Select(x => x.YearlyElectricityUseNetz).Sum();
                if (Math.Abs(totalSumFromMonthly - _stromNetzSum) > 0.00001)
                {
                    throw new Exception("totalSumFromMonthly:" + totalSumFromMonthly + " stromNetzSum:" + _stromNetzSum);
                }
            }

            foreach (var cld in clds.Values)
            {
                cld.IntegrityCheck();
                dbEnergy.Save(cld);
            }

            dbEnergy.CompleteTransaction();
        }
        private void ProcessVerrechnungstyp([NotNull] Localnet localnet, [NotNull] MonthlyElectricityUsePerStandort meps)
        {
            var processed = false;

            switch (localnet.Verrechnungstyp)
            {
            case "Energie Tagesstrom (HT)":
                meps.AddLocalnetEntryForStandort(localnet, Verbrauchsart.ElectricityLocalnet);
                processed = true;
                break;

            case "Energie Nachtstrom (NT)":
                meps.AddLocalnetEntryForStandort(localnet, Verbrauchsart.ElectricityLocalnet);
                processed = true;
                break;

            case "Gutschrift Strom Energie":
                meps.AddLocalnetEntryForStandort(localnet, Verbrauchsart.ElectricityLocalnet);
                processed = true;
                break;

            case "Nachbelastung Strom Energie":
                meps.AddLocalnetEntryForStandort(localnet, Verbrauchsart.ElectricityLocalnet);
                processed = true;
                break;

            case "Rücklieferung Tagesstrom HT":
                meps.AddLocalnetEntryForStandort(localnet, Verbrauchsart.ElectricityLocalnet);
                processed = true;
                break;

            case "Rücklieferung Nachtstrom NT":
                meps.AddLocalnetEntryForStandort(localnet, Verbrauchsart.ElectricityLocalnet);
                processed = true;
                break;

            case "EVG Tagesstrom (HT)":
                meps.AddLocalnetEntryForStandort(localnet, Verbrauchsart.ElectricityLocalnet);
                processed = true;
                break;

            case "EVG Nachtstrom (NT)":
                meps.AddLocalnetEntryForStandort(localnet, Verbrauchsart.ElectricityLocalnet);
                processed = true;
                break;

            case "Gutschrift Erdgas":
                break;

            case "Kosten Erdgasbezug":
                break;

            case "Erdgasverbrauch":
                meps.AddLocalnetEntryForStandort(localnet, Verbrauchsart.Gas);
                processed = true;
                break;

            case "CO2-Abgabe":
                break;

            case "Grundpreis Erdgas":
                break;

            case "Grundgebühr Erdgas":
                break;

            case "Leistungsspitze":
                break;

            case "Arbeitspreis":
                meps.AddLocalnetEntryForStandort(localnet, Verbrauchsart.Fernwaerme);
                processed = true;
                break;

            case "Grundpreis Wärme (kW/Mt)":
                break;

            case "Grundpreis Wärme (Zähler/Mt)":
                break;

            case "Grundpreis 1 (kW/Mt)":
                break;

            case "Grundpreis 2 (kW/Mt)":
                break;

            case "Leistung":
                break;

            case "Blindenergie (HT)":
                break;

            case "Blindenergie (NT)":
                break;

            case "Grundpreis Strom":
                break;

            case "Netz Tagesstrom (HT)":
                if (localnet.BasisVerbrauch == null)
                {
                    throw new Exception("Basisverbrauch was null");
                }

                _stromNetzSum += localnet.BasisVerbrauch.Value;
                meps.AddLocalnetEntryForStandort(localnet, Verbrauchsart.ElectricityNetz);
                break;

            case "Netz Nachtstrom (NT)":
                if (localnet.BasisVerbrauch == null)
                {
                    throw new Exception("Basisverbrauch was null");
                }

                _stromNetzSum += localnet.BasisVerbrauch.Value;
                meps.AddLocalnetEntryForStandort(localnet, Verbrauchsart.ElectricityNetz);
                break;

            case "Messung und Abrechnung":
                break;

            case "Systemdienstleistungen Swissgrid (SDL)":
                break;

            case "Kostendeckende Einspeisevergütung KEV":
                break;

            case "Abgabe an Gemeinde":
                break;

            case "Gutschrift Strom Netznutzung":
                break;

            case "Bundesabgabe zum Schutz der Gewässer und Fische":
                break;

            case "Netz Rücklieferung Tagesstrom HT":
                break;

            case "Netz Rücklieferung Nachtstrom NT":
                break;

            case "Messung und Abrechung Netzübergabestelle":
                meps.AddLocalnetEntryForStandort(localnet, Verbrauchsart.Netzuebergabe);
                break;

            case "EVG Leistung":
                break;

            case "EVG Blindenergie (HT)":
                break;

            case "EVG Blindenergie (NT)":
                break;

            default:
                throw new Exception("unknown verrechnungstyp");
            }

            if (!processed && localnet.BasisVerbrauch > 0 && localnet.Vertragsart != "Netz")
            {
                Info("Verbrauch, but not processed for " + localnet.Verrechnungstyp);
            }
        }