From 7b4c761656efa87f2697be00172970c931c776ab Mon Sep 17 00:00:00 2001 From: mistangl Date: Wed, 28 Jun 2023 17:09:58 +0200 Subject: [PATCH] =?UTF-8?q?Mengenr=C3=BCst=20als=20Ergebnis=20raus?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/calc_site.py | 61 +++++++++++++++++++++++++++++++++++++++++++-- lib/rieter_ekalk.py | 8 +++++- 2 files changed, 66 insertions(+), 3 deletions(-) diff --git a/lib/calc_site.py b/lib/calc_site.py index 0d93965..7d8ac69 100644 --- a/lib/calc_site.py +++ b/lib/calc_site.py @@ -188,6 +188,55 @@ order_hardware = [ "Summe_vorOrt", "Summe_gesamt", ] +order_eas = [ +'bedienstation_1fach_Not_Aus', +'bedienstation_einfach_Zug_Wechseln', +'bedienstation_automatische_Umfahrung', +'bedienstation_zweifach_Wechs_BCD_10f', +'bedienstation_zweifach_Not_Aus_Reset', +'bedienst_dreifach', +'bedienst_vierfach', +'bedienst_sechsfach', +'EAs_Unterverteiler_direct', + +'Sensor_Traversenabfrage_optisch', +'Reflexionslichtschranke_RSM_DIRECT', +'Sensor induktiv Flyer+PM', +'Seilzugschalter', + +'Weiche', +'Weiche_nach_PM_bipolar', +'gemeinsame_Weichenrueckstellung', +'Dreifach_Weiche_DIRECT', +'Kreuzungsweiche', +'Stopper', +'Ventil_RA_3_2_abhebbar', +'Ventil_Doppelstreckenantrieb_5_2_abhebbar', +'Blitzleuchte_Stoerung', + +'Schnittstelle_Flyer_ElectroJet', +'Schnittstelle_Putzmaschine_Neuhauser', +'FEldbux_UV_EinAusgang', + +'Spulenumsetzstation', + +'RA_unidirektional', +'RA_unidirektional_abhebbar', +'RA_unidirektional_mit_gemeinsamer_Wendung', +'RA_unidirektional_ohne_SPS_Ansteuerung', +'RA_bidirektional', +'RA_bidirektional_abhebbar', +'RA_bidirektional_abhebbar_gemeinsWend', +'RA_bidirektional_ohne_SPS_Ansteuerung', +'RA_in_RSM_bidirektional', +'Doppelstreckenantrieb', +'Doppelstreckenantriebgemeinsame_Wendung', +'gemeinsame_Wendung', +'Frequenzumrichter', + +'Summe Komponenten', +'Summe Komponenten inkcl. Reserve', +] class cfg(): """ Liest die config-Datei ein, in der Stückpreise und Zeiteinheiten pro Bauteil wie in der rieter_ekalk Excel-Datei verwendet angegeben sind, und schreibt sie in ein Dictionary. @@ -281,6 +330,12 @@ def run_calc(infile, outfile, SivasConfig): Anzahl_EAS = infileCfg.getTypedDict("EAS") eas = rek.EA(Anzahl_EAS, mg) + dEas = eas.getSEAs(order_eas) + dEas['Summe Komponenten'] = [eas.gesamt_E(), eas.gesamt_A()] + dEas['Summe Komponenten inkcl. Reserve'] = [eas.gesamt_E_incl_reserve(), eas.gesamt_A_incl_reserve()] + + df_temp = pd.DataFrame.from_dict(data=dEas, orient='index', columns=['S.E', 'S.A']) + df_eas = pd.DataFrame(data=df_temp, index=order_eas) Anzahl_HW = infileCfg.getTypedDict("HW") @@ -310,7 +365,7 @@ def run_calc(infile, outfile, SivasConfig): dienstleistung["Summe_Dienstleistungen_Hardwareplanung"] = dl.stunden_diensleistung_hardwareplanung() dienstleistung["Summe_Dienstleistungen_Elektrowerkstatt"] = dl.stunden_elektrowerkstatt() dienstleistung["Summe_Dienstleistungen_in_LL"] = dl.summe_stunden_dienstleistung_in_landsberg() - df_temp = pd.DataFrame.from_dict(data=dienstleistung, orient='index', columns=['Aufwand']) + df_temp = pd.DataFrame.from_dict(data=dienstleistung, orient='index', columns=['Aufwand [h]']) df_dienst = pd.DataFrame(data=df_temp, index=order_dienstleistungen) Anzahl_Ergebnis = infileCfg.getTypedDict("Ergebnis") @@ -319,7 +374,7 @@ def run_calc(infile, outfile, SivasConfig): erg.calc(Anzahl_Ergebnis, hw, dl, emo) ergebnisse = erg.summary_costs(hw) - df_temp = pd.DataFrame.from_dict(data=ergebnisse, orient='index', columns=['Aufwand']) + df_temp = pd.DataFrame.from_dict(data=ergebnisse, orient='index', columns=['Aufwand [€]']) df_aufwand = pd.DataFrame(data=df_temp, index=order_ergebnisse) @@ -329,6 +384,8 @@ def run_calc(infile, outfile, SivasConfig): df_aufwand.to_excel(writer, sheet_name='Kostenaufstellung') df_hardware.to_excel(writer, sheet_name='Hardware') df_dienst.to_excel(writer, sheet_name='Dienstleistungen') + df_eas.to_excel(writer, sheet_name='EAs') + # TODO Mengengerüst, EMO, ev. Anschlussleistung und Ausgangsstrom if __name__ == '__main__': diff --git a/lib/rieter_ekalk.py b/lib/rieter_ekalk.py index 2e2a0e6..3641149 100644 --- a/lib/rieter_ekalk.py +++ b/lib/rieter_ekalk.py @@ -1109,7 +1109,13 @@ class EA(): return self.EAs[partname][1] def anzahl(self, partname, defaultv = 0): return self._Anzahl.get(partname, defaultv) - + def getSEAs(self, partnames:list): + res = dict() + for partname in partnames: + if partname not in self.EAs: + continue + res[partname] = [self.get_SE(partname), self.get_SA(partname)] + return res def get_SE(self, partname): num_of_e = self.getE(partname) zahl = self.anzahl(partname)