Пример #1
0
        public void CopyMandantenDetailsData(ErfassungsPeriod closedPeriod)
        {
            mandantDetailsService.CreateCopy(closedPeriod);

            MandantDetails mandantDetails = mandantDetailsService.GetEntitiesBy(closedPeriod).Single();

            switch (closedPeriod.NetzErfassungsmodus)
            {
            case NetzErfassungsmodus.Summarisch:
                mandantDetails.NetzLaenge = netzSummarischDetailService.GetEntitiesBy(closedPeriod).Sum(nsd => nsd.Fahrbahnlaenge);
                break;

            case NetzErfassungsmodus.Tabellarisch:
                mandantDetails.NetzLaenge = strassenabschnittService.GetEntitiesBy(closedPeriod).Sum(sa => (decimal?)sa.Laenge) ?? 0;
                break;

            case NetzErfassungsmodus.Gis:
                mandantDetails.NetzLaenge = strassenabschnittGISService.GetEntitiesBy(closedPeriod).Sum(sa => (decimal?)sa.Laenge) ?? 0;
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
            //NetzLaenge's unit is km
            mandantDetails.NetzLaenge /= 1000m;

            transactionScopeProvider.Update(mandantDetails);
        }
Пример #2
0
        public BenchmarkingData CalculateBenchmarkingDataForSummarischeModus(ErfassungsPeriod closedPeriod, MandantDetails mandantDetails)
        {
            var netzSummarischDetails            = netzSummarischDetailService.GetEntitiesBy(closedPeriod, mandantDetails.Mandant).Fetch(nsd => nsd.NetzSummarisch).ToList();
            var realisierteMassnahmeSummarsichen = realisierteMassnahmeSummarsichService.GetEntitiesBy(closedPeriod, mandantDetails.Mandant).ToList();

            BenchmarkingData benchmarkingData = CalculateInventarBenchmarkingData(closedPeriod, mandantDetails, netzSummarischDetails, nsd => nsd.Fahrbahnlaenge);

            CalculateZustandsBenchmarkingData(benchmarkingData, netzSummarischDetails.ToList(), nsd => nsd.NetzSummarisch.MittleresErhebungsJahr, za => za.MittlererZustand);

            CalculateRealisierteMassnahmenBenchmarkingData(closedPeriod, benchmarkingData, mandantDetails, realisierteMassnahmeSummarsichen.ToList(), netzSummarischDetails);
            return(benchmarkingData);
        }
        private void CalculatePosForSummarischeModus(ErfassungsPeriod erfassungsPeriod, JahresInterval jahresInterval)
        {
            var netzSummarischDetailList = netzSummarischDetailService.GetEntitiesBy(erfassungsPeriod).Fetch(nsd => nsd.Belastungskategorie).ToList();

            var diagramPo = new RealisiertenMassnahmenWertverlustZustandsindexProJahrGrafischeDiagramPo()
            {
                JahrVon               = jahresInterval.JahrVon,
                JahrBis               = jahresInterval.JahrBis,
                WertVerlust           = netzSummarischDetailList.Sum(d => (GetWiederbeschaffungswert(d, wiederbeschaffungswertKatalogService.GetWiederbeschaffungswertKatalogModel(d.Belastungskategorie, erfassungsPeriod)) * wiederbeschaffungswertKatalogService.GetWiederbeschaffungswertKatalogModel(d.Belastungskategorie, erfassungsPeriod).AlterungsbeiwertII / 100) / 1000m),
                MittlererZustandindex = netzSummarischDetailList.Average(d => d.MittlererZustand),
                RealisierteMassnahmen = (transactionScopeProvider.Queryable <RealisierteMassnahmeSummarsich>().Where(r => r.ErfassungsPeriod == erfassungsPeriod).Sum(s => s.KostenFahrbahn) ?? 0) / 1000m
            };

            EnsureJahrInPoLists(jahresInterval);
            diagramPos[jahresInterval.JahrBis].Add(diagramPo);
            CalculateTablePos(jahresInterval, diagramPo);
        }
Пример #4
0
        private void CopySummarischeModusData(ErfassungsPeriod closedPeriod)
        {
            var currentNetzSummarisch = netzSummarischService.GetCurrentNetzSummarisch();

            var currentNetzSummarischDetails  = netzSummarischDetailService.GetEntites();
            var previousNetzSummarischDetails = netzSummarischDetailService.GetEntitiesBy(closedPeriod);

            foreach (var previous in previousNetzSummarischDetails.ToList())
            {
                var current = currentNetzSummarischDetails.Single(nsd => nsd.Belastungskategorie == previous.Belastungskategorie);

                current.Fahrbahnflaeche = previous.Fahrbahnflaeche;
                current.Fahrbahnlaenge  = previous.Fahrbahnlaenge;

                transactionScopeProvider.Update(current);
            }

            transactionScopeProvider.Update(currentNetzSummarisch);
        }
Пример #5
0
        protected override List<WiederbeschaffungswertUndWertverlustProBelastungskategoriePo> GetPresentationObjectListForSummarisch(WiederbeschaffungswertUndWertverlustProBelastungskategorieParameter parameter)
        {
            var erfassungsPeriod = GetErfassungsPeriod(parameter.ErfassungsPeriodId);
            var netzSummarischDetailList = netzSummarischDetailService.GetEntitiesBy(erfassungsPeriod).ToList();

            var pos = new List<WiederbeschaffungswertUndWertverlustProBelastungskategoriePo>();
            foreach (var belastungskategorie in belastungskategorieService.AlleBelastungskategorie)
            {
                var netzSummarischDetail = netzSummarischDetailList.Single(sa => sa.Belastungskategorie.Id == belastungskategorie.Id);
                var wieder = wiederbeschaffungswertKatalogService.GetWiederbeschaffungswertKatalogModel(belastungskategorie, erfassungsPeriod);

                var wiederbeschaffungswert = netzSummarischDetail.Fahrbahnflaeche * wieder.GesamtflaecheFahrbahn;

                var zustandqueryable = zustandindexService.GetEntitiesBy(erfassungsPeriod);
                var zustandabschnitten = filtererFactory.CreateFilterer<Zustandsabschnitt>(parameter).Filter(zustandqueryable).Fetch(za => za.Strassenabschnitt).ThenFetch(za => za.Belastungskategorie).ToList().Cast<ZustandsabschnittBase>().ToList();

                var po = new WiederbeschaffungswertUndWertverlustProBelastungskategoriePo
                {
                    BelastungskategorieTyp = belastungskategorie.Typ,
                    BelastungskategorieBezeichnung = LocalizationService.GetLocalizedBelastungskategorieTyp(belastungskategorie.Typ),

                    GesamtFlaeche = netzSummarischDetail.Fahrbahnflaeche,
                    FlaecheFahrbahn = netzSummarischDetail.Fahrbahnflaeche,

                    Wiederbeschaffungswert = wiederbeschaffungswert,

                    AlterungsbeiwertI = wieder.AlterungsbeiwertI,
                    AlterungsbeiwertII = wieder.AlterungsbeiwertII,

                    WertlustI = wiederbeschaffungswert * wieder.AlterungsbeiwertI / 100,
                    WertlustII = wiederbeschaffungswert * wieder.AlterungsbeiwertII / 100,

                    MittlererZustandindex = netzSummarischDetail.MittlererZustand,
                };

                pos.Add(po);
            }

            return pos;
        }
        protected override List <WiederbeschaffungswertUndWertverlustGrafischePo> GetPresentationObjectListForSummarisch(WiederbeschaffungswertUndWertverlustGrafischeParameter parameter)
        {
            ErfassungsPeriod erfassungsPeriod = GetErfassungsPeriod(parameter.ErfassungsPeriodId);

            List <NetzSummarischDetail> netzSummarischDetailes = netzSummarischDetailService.GetEntitiesBy(erfassungsPeriod).ToList();

            var pos = new List <WiederbeschaffungswertUndWertverlustGrafischePo>();

            foreach (var belastungskategorie in belastungskategorieService.AlleBelastungskategorie)
            {
                var wieder = wiederbeschaffungswertKatalogService.GetWiederbeschaffungswertKatalogModel(belastungskategorie, erfassungsPeriod);

                var     netzSummarischDetail   = netzSummarischDetailes.Single(nsd => nsd.Belastungskategorie.Id == belastungskategorie.Id);
                decimal wiederbeschaffungswert = netzSummarischDetail.Fahrbahnflaeche * wieder.FlaecheFahrbahn;

                pos.Add(CreateWiederbeschaffungswertUndWertverlustGrafischePo(belastungskategorie, reportLocalizationService.Wiederbeschaffungswert, wiederbeschaffungswert));
                pos.Add(CreateWiederbeschaffungswertUndWertverlustGrafischePo(belastungskategorie, reportLocalizationService.WertverlustsI, wiederbeschaffungswert * wieder.AlterungsbeiwertI));
                pos.Add(CreateWiederbeschaffungswertUndWertverlustGrafischePo(belastungskategorie, reportLocalizationService.WertverlustsII, wiederbeschaffungswert * wieder.AlterungsbeiwertII));
            }

            return(pos);
        }
        private void CalculatePos(Parameter parameter)
        {
            int jahrVon = GetJahr(parameter.JahrIdVon);
            int jahrBis = GetJahr(parameter.JahrIdBis);

            var kenngroessenFruehererJahreList = kenngroessenFruehererJahreService.GetKenngroessenFruehererJahren(jahrVon, jahrBis);
            var erfassungsPeriodList           = ErfassungsPeriodService.GetErfassungsPeriods(jahrVon, jahrBis);

            //If there is a Filter for not supported Field, Skip year
            if (parameter.Eigentuemer == null)
            {
                for (int i = 0; i < kenngroessenFruehererJahreList.Count; i++)
                {
                    var kenngroessenFruehererJahre = kenngroessenFruehererJahreList[i];

                    int erfassungsJahrVon = kenngroessenFruehererJahre.Jahr;
                    int erfassungsJahrBis;

                    if (kenngroessenFruehererJahre == kenngroessenFruehererJahreList.Last())
                    {
                        erfassungsJahrBis = erfassungsPeriodList.Any() ? erfassungsPeriodList.First().Erfassungsjahr.Year - 1 : erfassungsJahrVon;
                    }
                    else
                    {
                        erfassungsJahrBis = kenngroessenFruehererJahreList[i + 1].Jahr - 1;
                    }

                    CalculatePosForKenngroessenFruehererJahre(ErfassungsPeriodService.GetCurrentErfassungsPeriod(), kenngroessenFruehererJahre, new JahresInterval(erfassungsJahrVon, erfassungsJahrBis));
                }
            }

            for (int i = 0; i < erfassungsPeriodList.Count; i++)
            {
                var erfassungsPeriod = erfassungsPeriodList[i];
                var jahresInterval   = jahresIntervalService.CalculateFromErfassungsPeriodList(erfassungsPeriod, erfassungsPeriodList);

                switch (erfassungsPeriod.NetzErfassungsmodus)
                {
                case NetzErfassungsmodus.Summarisch:
                    //If there is a Filter for not supported Field, Skip year
                    if (parameter.Eigentuemer != null)
                    {
                        continue;
                    }

                    var netzSummarischDetailList = netzSummarischDetailService.GetEntitiesBy(erfassungsPeriod).Fetch(nsd => nsd.Belastungskategorie).ToList();
                    CalculatePosForSummarischeModus(erfassungsPeriod, netzSummarischDetailList, jahresInterval);
                    break;

                case NetzErfassungsmodus.Tabellarisch:
                    var strassenabschnittList = transactionScopeProvider.Queryable <Strassenabschnitt>().Where(sa => sa.ErfassungsPeriod == erfassungsPeriod);
                    CalculatePosForStrassenModus(erfassungsPeriod, strassenabschnittList, parameter, jahresInterval);
                    break;

                case NetzErfassungsmodus.Gis:
                    var strassenabschnittGisList = transactionScopeProvider.Queryable <StrassenabschnittGIS>().Where(sa => sa.ErfassungsPeriod == erfassungsPeriod);
                    CalculatePosForStrassenModus(erfassungsPeriod, strassenabschnittGisList, parameter, jahresInterval);
                    break;

                default:
                    throw new ArgumentOutOfRangeException("NetzErfassungsmodus");
                }
            }
        }
Пример #8
0
        protected override List <MengeProBelastungskategoriePo> GetPresentationObjectListForSummarisch(MengeProBelastungskategorieParameter parameter)
        {
            var netzSummarischDetails = netzSummarischDetailService.GetEntitiesBy(GetErfassungsPeriod(parameter.ErfassungsPeriodId)).Fetch(nsd => nsd.Belastungskategorie);

            return(netzSummarischDetails.Select(CreatePo).OrderBy(m => m.BelastungskategorieReihenfolge).ToList());
        }