Berechnung des Zusatzaufwand für Taschen eingepflegt, Deckblattklasse angelegt
This commit is contained in:
+169
-19
@@ -1,5 +1,6 @@
|
||||
import json
|
||||
import math
|
||||
from typing import Counter
|
||||
import unittest
|
||||
|
||||
from numpy import array
|
||||
@@ -34,7 +35,7 @@ class Gefaellestrecke():
|
||||
|
||||
class Bereich():
|
||||
def __init__(self,bezeichnung, kreisel:list[Kreisel], gefaellestrecken:list[Gefaellestrecke],anzahl_eckraeder=0, anzahl_etagenfoerderer=0, anzahl_bt_mt_entladung=0,
|
||||
anzahl_bt_beladung=0, anzahl_mt_beladung=0, anzahl_zufuehrung_klinkenf=0, laenge_zufuehrung_klinkenf=0):
|
||||
anzahl_bt_beladung=0, anzahl_mt_beladung=0, anzahl_zufuehrung_klinkenf=0, laenge_zufuehrung_klinkenf=0):
|
||||
self._bezeichnung = bezeichnung
|
||||
#für jede instanz der kreiselklasse in der Liste 'kreisel' muss ein Materialpreis und Montagestunden berechnet werden
|
||||
#Äquivalent dazu Gefällestrecken, ETF, So-Förderer und Umbügeln berechnen
|
||||
@@ -46,6 +47,23 @@ class Bereich():
|
||||
|
||||
# Montagestunden
|
||||
# =D3*( Tabellen!C30 + E3*Tabellen!D30 + F3*E3*Tabellen!E30 + G3*Tabellen!F30 + H3*Tabellen!H30 + I3*Tabellen!I30 + J3*Tabellen!R30 + F3*Tabellen!G30)
|
||||
self.bauteile = {
|
||||
"Antriebsstation": 0,
|
||||
"Spannstation": 0,
|
||||
"Rampe": 0,
|
||||
"Weiche": 0,
|
||||
"Separator_LP": 0,
|
||||
"Separator_SP": 0,
|
||||
"Ausschleuselement": 0,
|
||||
"BTMT_Entladung": 0,
|
||||
"BT_Beladung": 0,
|
||||
"MT_Beladung": 0,
|
||||
"Etagenfoerderer": 0,
|
||||
"Sonst_Foerderer": 0,
|
||||
"Inkrementalgeber": 0,
|
||||
"Scanner": 0,
|
||||
}
|
||||
self.bauteile["Antriebsstation"] += anzahl_eckraeder
|
||||
|
||||
# BaaN => Montagezeit und Herstellkosten einzelner Baugruppen
|
||||
b = BaaN()
|
||||
@@ -53,6 +71,13 @@ class Bereich():
|
||||
kreisel_hk_mech_el_summe = 0
|
||||
kreisel_mont_mech_el_summe = 0
|
||||
for k in kreisel:
|
||||
self.bauteile["Antriebsstation"] += k.anzahl
|
||||
self.bauteile["Spannstation"] += k.anzahl
|
||||
self.bauteile["Rampe"] += k.anzahl_rampen
|
||||
self.bauteile["Weiche"] += k.anzahl_weichen
|
||||
self.bauteile["Separator_LP"] += k.anzahl_separatoren
|
||||
self.bauteile["Scanner"] += k.anzahl_scanner
|
||||
|
||||
pin = 0
|
||||
if(k.pin == True): pin = 1
|
||||
kreisel_hk_mech_el = k.anzahl * (b.herstellkosten_mech_el("ANTRIEBSSTATION_800_ILS_20_(mit_Motor)") + b.herstellkosten_mech_el("SPANNSTATION_800_ILS_20") +\
|
||||
@@ -84,6 +109,14 @@ class Bereich():
|
||||
gefaelle_mont_mech_el_summe = 0
|
||||
self._gefaellestrecken = {}
|
||||
for g in gefaellestrecken:
|
||||
self.bauteile["Separator_SP"] += g.anzahl_separatoren
|
||||
#TODO: Ausschleuselement 30° wird hier nicht addiert?
|
||||
if(g.ausschleuselement_30_grad == False):
|
||||
self.bauteile["Ausschleuselement"] += g.anzahl
|
||||
|
||||
|
||||
|
||||
|
||||
hkAE = b.herstellkosten_mech_el("AE_ILS_20_(SMC)")
|
||||
montAE = b.montagestunden_mech_el("AE_ILS_20_(SMC)")
|
||||
hkEE = b.herstellkosten_mech_el("EE")
|
||||
@@ -124,7 +157,8 @@ class Bereich():
|
||||
# Klinkenförderer: Antrieb = 920, E-Material = 200, proMeter = 160, MontageAntrieb = 3(h), MontageMeter = 1(h)
|
||||
self._zufuehrung_cpc = {"hk_summe": round(anzahl_zufuehrung_klinkenf * (920 + laenge_zufuehrung_klinkenf),2), "mont_summe": round((anzahl_zufuehrung_klinkenf * (3 + laenge_zufuehrung_klinkenf * 1))/60,2)}
|
||||
|
||||
|
||||
def getBauteile(self):
|
||||
return self.bauteile
|
||||
|
||||
def getResult(self):
|
||||
res = {
|
||||
@@ -139,6 +173,33 @@ class Bereich():
|
||||
}
|
||||
return res
|
||||
|
||||
def getSummenBereich(self):
|
||||
hk_sum = 0
|
||||
mont_sum = 0
|
||||
|
||||
hk_sum += self._kreisel.get("_GESAMT_", {}).get("hk_summe", 0)
|
||||
hk_sum += self._gefaellestrecken.get("_GESAMT_", {}).get("hk_summe", 0)
|
||||
hk_sum += self._eckraeder.get("hk_summe", 0)
|
||||
hk_sum += self._etagenfoerderer.get("hk_summe", 0)
|
||||
#TODO: So Förderer
|
||||
hk_sum += self._btmt_entladung.get("hk_summe", 0)
|
||||
hk_sum += self._bt_beladung.get("hk_summe", 0)
|
||||
hk_sum += self._mt_beladung.get("hk_summe", 0)
|
||||
hk_sum += self._zufuehrung_cpc.get("hk_summe", 0)
|
||||
|
||||
mont_sum += self._kreisel.get("_GESAMT_", {}).get("mont_summe", 0)
|
||||
mont_sum += self._gefaellestrecken.get("_GESAMT_", {}).get("mont_summe", 0)
|
||||
mont_sum += self._eckraeder.get("mont_summe", 0)
|
||||
mont_sum += self._etagenfoerderer.get("mont_summe", 0)
|
||||
#TODO: So Förderer
|
||||
mont_sum += self._btmt_entladung.get("mont_summe", 0)
|
||||
mont_sum += self._bt_beladung.get("mont_summe", 0)
|
||||
mont_sum += self._mt_beladung.get("mont_summe", 0)
|
||||
mont_sum += self._zufuehrung_cpc.get("mont_summe", 0)
|
||||
|
||||
return {"Materialkosten": round(hk_sum, 2), "Montagezeit": round(mont_sum, 2)} #Ohne Aufschläge, reine HK Kosten bzw Montagezeiten
|
||||
|
||||
|
||||
def tojson(self, input:dict):
|
||||
return json.dumps(input, sort_keys=False, indent=4)
|
||||
|
||||
@@ -148,6 +209,76 @@ class Bereich():
|
||||
with open("Bereichszusammenfassung.json", "w") as file:
|
||||
file.write(json)
|
||||
|
||||
class Taschen():
|
||||
def __init__(self, baugruppensummen:type[dict]):
|
||||
#Zusatzbauteile die für Taschentransport erforderlich sind
|
||||
|
||||
self._Zusatzbauteile = {
|
||||
#"Bezeichnung":[Einzelpreis, Montagedauer(h)], Teilenummer
|
||||
"Fuehrung_an_AE": [22.0, 0.1], #829514073
|
||||
"Halter_Gegenleiste_an_AE": [0.6, 0.02], #829514071
|
||||
"Aluwinkel_40x20": [2.6, 0.02], #931011103
|
||||
"Halter_Gegenleiste_an_EE": [2.6, 0.02], #829514070
|
||||
"Alu_4kt_20x20": [4.7, 0.1], #931601003
|
||||
|
||||
"Rollenandruckleiste_Sep_LP": [45.0, 0.05], #829534007
|
||||
"Abhebeleiste_Sep_LP": [89.0, 0.5], #829534008
|
||||
"Zwangsfuehrung_Sep_SP": [34.0, 0.1], #829514072
|
||||
#Schrägkreisel und Noppenband wird nicht übernommen, da nicht mehr verwendet
|
||||
}
|
||||
self._Summen = {
|
||||
#"Bezeichnung":[Summe Preis, Summe Montagedauer]
|
||||
"Fuehrung_an_AE": [0, 0], #829514073
|
||||
"Halter_Gegenleiste_an_AE": [0, 0], #829514071
|
||||
"Aluwinkel_40x20": [0, 0], #931011103
|
||||
"Halter_Gegenleiste_an_EE": [0, 0], #829514070
|
||||
"Alu_4kt_20x20": [0, 0], #931601003
|
||||
|
||||
"Rollenandruckleiste_Sep_LP": [0, 0], #829534007
|
||||
"Abhebeleiste_Sep_LP": [0, 0], #829534008
|
||||
"Zwangsfuehrung_Sep_SP": [0, 0], #829514072
|
||||
}
|
||||
|
||||
#Gesamtanzahl von AE, Sep_LP, Sep_SP und Scanner auslesen
|
||||
|
||||
|
||||
summe_ausschleuselement = baugruppensummen.get("Ausschleuselement", 0)
|
||||
summe_sepLP_scanner = baugruppensummen.get("Separator_LP", 0) + baugruppensummen.get("Scanner", 0)
|
||||
summe_sepSP = baugruppensummen.get("Separator_SP", 0)
|
||||
self._Summen["Fuehrung_an_AE"] = [round(self._Zusatzbauteile.get("Fuehrung_an_AE", [])[0] * summe_ausschleuselement,2),
|
||||
round(self._Zusatzbauteile.get("Fuehrung_an_AE", [])[1] * summe_ausschleuselement,2)]
|
||||
self._Summen["Halter_Gegenleiste_an_AE"] = [round(self._Zusatzbauteile.get("Halter_Gegenleiste_an_AE", [])[0] * summe_ausschleuselement,2),
|
||||
round(self._Zusatzbauteile.get("Halter_Gegenleiste_an_AE", [])[1] * summe_ausschleuselement,2)]
|
||||
self._Summen["Aluwinkel_40x20"] = [round(self._Zusatzbauteile.get("Aluwinkel_40x20", [])[0] * summe_ausschleuselement,2),
|
||||
round(self._Zusatzbauteile.get("Aluwinkel_40x20", [])[1] * summe_ausschleuselement,2)]
|
||||
self._Summen["Halter_Gegenleiste_an_EE"] = [round(self._Zusatzbauteile.get("Halter_Gegenleiste_an_EE", [])[0] * summe_ausschleuselement,2),
|
||||
round(self._Zusatzbauteile.get("Halter_Gegenleiste_an_EE", [])[1] * summe_ausschleuselement,2)]
|
||||
self._Summen["Alu_4kt_20x20"] = [round(self._Zusatzbauteile.get("Alu_4kt_20x20", [])[0] * summe_ausschleuselement, 2),
|
||||
round(self._Zusatzbauteile.get("Alu_4kt_20x20", [])[1] * summe_ausschleuselement, 2)]
|
||||
|
||||
self._Summen["Rollenandruckleiste_Sep_LP"] = [round(self._Zusatzbauteile.get("Rollenandruckleiste_Sep_LP", [])[0] * summe_sepLP_scanner * 0.2,2), #TODO: warum mit 0.2 multipliziert?
|
||||
round(self._Zusatzbauteile.get("Rollenandruckleiste_Sep_LP", [])[1] * summe_sepLP_scanner * 0.2,2)]
|
||||
self._Summen["Abhebeleiste_Sep_LP"] = [round(self._Zusatzbauteile.get("Abhebeleiste_Sep_LP", [])[0] * summe_sepLP_scanner * 0.2,2),
|
||||
round(self._Zusatzbauteile.get("Abhebeleiste_Sep_LP", [])[1] * summe_sepLP_scanner * 0.2,2)]
|
||||
self._Summen["Zwangsfuehrung_Sep_SP"] = [round(self._Zusatzbauteile.get("Zwangsfuehrung_Sep_SP", [])[0] * summe_sepSP * 0.5, 2),
|
||||
round(self._Zusatzbauteile.get("Zwangsfuehrung_Sep_SP", [])[1] * summe_sepSP * 0.5, 2)]
|
||||
|
||||
print(self._Summen)
|
||||
|
||||
|
||||
class Deckblatt():
|
||||
def __init__(self, bereiche:type[list[Bereich]], taschentransport=False):
|
||||
#zusatzbauteile/Aufwand wenn Taschen im System laufen
|
||||
if(taschentransport):
|
||||
i=0
|
||||
#Summe aller Baugruppen über alle Bereiche
|
||||
self._Baugruppensummen = {}
|
||||
for b in bereiche:
|
||||
t = b.getBauteile()
|
||||
t_count = Counter(t)
|
||||
bgr_summen_count = Counter(self._Baugruppensummen)
|
||||
sum_dict = t_count + bgr_summen_count
|
||||
self._Baugruppensummen = dict(sum_dict)
|
||||
|
||||
|
||||
class BaaN():
|
||||
@@ -177,6 +308,26 @@ class BaaN():
|
||||
"Inkrementalgeber":[0,0,430,180],
|
||||
}
|
||||
|
||||
self._Taschen = {
|
||||
#zusatzaufwand, wenn Taschen im System laufen
|
||||
# [Preis, Montagezeit]
|
||||
"829514073_Führg_an_AE": [22.0,1],
|
||||
"829514071_Halter_Gegenl_an_AE": [0.6, 0.02],
|
||||
"931011103_Alu_Winkel_40x20": [2.6, 0.02],
|
||||
"829514070_Halter_Gegenl_an_EE": [2.6, 0.02],
|
||||
"931601003_Alu_4_kt_20x20": [4.7, 0.1],
|
||||
"829534007_Andr_Rollenl_Sep_LP": [45, 0.05],
|
||||
"829534008_Abh_Leiste_vor_Sep_LP": [89, 0.5],
|
||||
"829514072_Zwangsführg_an_Sep_SP": [34, 0.1],
|
||||
"829514068_Verb_Schrägkr_Mitte": [6.8, 0.02],
|
||||
"829514069_Verb_Schrägkr_Ende": [11.4, 0.02],
|
||||
"829514061_Rampe": [57, 0.1],
|
||||
"829416031_Stauprofil": [14.5, 0.05],
|
||||
"LP_oben_abschneiden": [1, 0], #Arbeitsgang
|
||||
#"829514075_Abstands_Band_Nop": [2.15, 0.01], #nicht mehr verwendet
|
||||
#"Aufpreis_Band_noppen": [0.6, 0] #nicht mehr verwendet
|
||||
}
|
||||
|
||||
def herstellkosten_mech(self, artikelbezeichnung):
|
||||
l = self._Kosten.get(artikelbezeichnung, [0,0,0,0])
|
||||
return l[0]
|
||||
@@ -202,32 +353,31 @@ class BaaN():
|
||||
return l[1] + l[3]
|
||||
|
||||
class TestObjects(unittest.TestCase):
|
||||
def test(self):
|
||||
self.assertEqual(1,1)
|
||||
def test(self):
|
||||
baan = BaaN()
|
||||
self.assertEqual(baan.herstellkosten_mech("ES_ELEMENT_30_F_SF_ILS"), 240)
|
||||
self.assertEqual(baan.montagestunden_mech("ES_ELEMENT_30_F_SF_ILS"), 180)
|
||||
self.assertEqual(baan.herstellkosten_el("ES_ELEMENT_30_F_SF_ILS"), 45.7)
|
||||
self.assertEqual(baan.montagestunden_el("ES_ELEMENT_30_F_SF_ILS"), 0)
|
||||
|
||||
|
||||
zufuehrung_puffer = Kreisel("Zufuehrung Richtung Puffer",2, 30, 4,4,4)
|
||||
verbindung = Kreisel("Verbindung",3,4,0,0,0)
|
||||
einschleusung_puffer = Kreisel("Einschleusung Puffer",6, 10, 0,2,1,True,2)
|
||||
abzug_puffer = Kreisel("Abzug Puffer",6,10,1,2,2)
|
||||
abzug_gesamt = Kreisel("Abzug Gesamt",2,33.5,5,3,0)
|
||||
kreisel = []
|
||||
kreisel.append(Kreisel("Zufuehrung Richtung Puffer",2, 30, 4,4,4))
|
||||
kreisel.append(Kreisel("Verbindung",3,4,0,0,0))
|
||||
kreisel.append(Kreisel("Einschleusung Puffer",6, 10, 0,2,1,True,2))
|
||||
kreisel.append(Kreisel("Abzug Puffer",6,10,1,2,2))
|
||||
kreisel.append(Kreisel("Abzug Gesamt",2,33.5,5,3,0))
|
||||
|
||||
umschleusung_puffer = Gefaellestrecke("Umschleusung",6, 10,2,0)
|
||||
gefaellestrecken = []
|
||||
gefaellestrecken.append(Gefaellestrecke("Umschleusung",6, 10,2,0))
|
||||
gefaellestrecken.append(Gefaellestrecke("Puffer", 72, 21,2,0))
|
||||
|
||||
puffer = Bereich("Puffer",[zufuehrung_puffer, verbindung, einschleusung_puffer, abzug_puffer, abzug_gesamt], [umschleusung_puffer],12, 6)
|
||||
puffer = Bereich("Puffer",kreisel, gefaellestrecken,12, 6)
|
||||
puffer.resToFile()
|
||||
#minuten in stunden umrechnen
|
||||
#self.assertEqual(puffer._kreisel["mont_summe"]/60, 294)
|
||||
#self.assertEqual(puffer._gefaellestrecken["mont_summe"]/60, 45.5)
|
||||
#self.assertEqual(round(puffer._kreisel["hk_summe"], 1), 36501.6)
|
||||
#self.assertEqual(round(puffer._gefaellestrecken["hk_summe"], 1), 6166.2)
|
||||
#self.assertEqual(round(puffer._etagenfoerderer["hk_summe"], 1), 16914)
|
||||
#self.assertEqual(round(puffer._etagenfoerderer["mont_summe"]/60, 1), 84.0)
|
||||
|
||||
dblatt = Deckblatt([puffer, puffer])
|
||||
taschen = Taschen(dblatt._Baugruppensummen)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user