Generierung der Export Daten. TOS Gruppenfolge aus der TOS Nummer impl.

This commit is contained in:
2024-03-15 14:07:59 +01:00
parent a785eecbc2
commit e3a7e79dad
3 changed files with 233 additions and 24 deletions
+2 -2
View File
@@ -1,6 +1,6 @@
[Zielpfade]
\\ssg.local\freigaben\SIVAS_CAD_EDM\Migration\02_Bedarfspool
\\ssg.local\freigaben\SIVAS_CAD_EDM\Schulung\Migration\02_Bedarfspool
Produktiv=\\ssg.local\freigaben\SIVAS_CAD_EDM\Migration\02_Bedarfspool
Schulung=\\ssg.local\freigaben\SIVAS_CAD_EDM\Schulung\Migration\02_Bedarfspool
[3D-Modelle]
BaugruppeSchweissbaugruppe=\\ssg.local\freigaben\Abteilungen\Entwicklung\CAD\Standards\SolidEdge\Template\DIN Metric\baugruppe.asm
+217 -10
View File
@@ -553,9 +553,9 @@ class CadItem(DataModel):
def message_info(self, title, key, questions='ok'):
return self._controller.message_info(title, key, questions)
def message_error(self, title, key, values=None):
def message_error(self, title, key, values={}):
return self._controller.message_error(title, key, values)
def message_question(self, title, key, values=None):
def message_question(self, title, key, values={}):
return self._controller.message_question(title, key, values)
def check_key_existence(self, key, missing):
@@ -666,7 +666,9 @@ class CadItem(DataModel):
return None
def check_content(self):
def check_content(self):
"""Überprüfe die Inhalte nach Längen, Zeichenketten und korrekten Kombinationen der Eingaben"""
content = self.get_content('bezeichnung1_sivas', 'bezeichnung1_neu')
if len(content) > 50:
self.message_error('Bezeichnung1 zu gross', 'bezeichnung_zu_gross')
@@ -686,6 +688,10 @@ class CadItem(DataModel):
self.message_error('Teilenummer ohne Rüstcode', 'teilenummer_ohne_ruestcode')
return False
if pdm_kategorie_neu == "<undefiniert>":
self.message_error('Kategorie nicht definiert', 'pdm_kategorie_definiert')
return False
# Fertigungsart
fertigungsart = self.get_content('fertigungsart_sivas', 'fertigungsart_neu')
arten = ["3D - 3D-drucken", "EX - extrudieren", "GI - gießen", "PR - verpressen", "SN - strangpressen", "SP - spritzgießen", "SW - schweißen"]
@@ -809,24 +815,225 @@ class CadItem(DataModel):
# return
# Farbe
farbe = self._model.get_gui_data("farbe_neu")
if werkstofftyp == '':
self.message_error('Werkstofftyp nicht eingetragen', 'werkstofftyp_not_exist')
farbe = self.get_gui_data("farbe_neu")
oberflaeche = self.get_gui_data("oberflaeche_neu")
if farbe == '' and (oberflaeche == "Masterbatch (Grundfarbe)" or \
oberflaeche == "eloxieren" or\
oberflaeche == "pulverbeschichten" or\
oberflaeche == "lackieren"):
self.message_error('Farbe nicht festgelegt', 'color_not_defined')
return False
# Überprüfung ob eine Ergänzung der Angaben zu Material in der Config Datei nötig wäre
aus_halbzeug = self._model.get_gui_data("aus_halbzeug_neu")
aus_halbzeug = self.get_gui_data("aus_halbzeug_neu")
if pdm_kategorie_neu == "Einzelteil" and aus_halbzeug == False:
mlist = self._controller.get_config().Materialien.get_all_materials()
material_sivas = self._model.get_gui_data("material_sivas")
material_sivas = self.get_gui_data("material_sivas")
if material_sivas not in mlist:
self._model.message_info('Materialinformation', 'material_infos')
self.message_info('Materialinformation', 'material_infos')
return True
def create_migration_file(self, data):
"""erzeugt Verzeichnis und Datei"""
model3d_neu = self.get_gui_data("model3d_neu")
datenbank = self.get_gui_data("datenbank")
path = os.path.dirname(model3d_neu)
filename = os.path.basename(model3d_neu)
# IF Datenbank == "Produktiv":
# New_path = \\ssg.local\freigaben\SIVAS_CAD_EDM\Migration\02_Bedarfspool\
# ELSE:
# New_path = \\ssg.local\freigaben\SIVAS_CAD_EDM\Schulung\Migration\02_Bedarfspool
zielpfad = self._config.Pfade.get('Zielpfade', datenbank )
username = os.environ.get("USERNAME")
userpfad = os.path.join(zielpfad, username)
# Wenn User, der migriert, noch keinen Ordner im Ziel besitzt,
# soll dieser automatisch beim Klick auf "Migrieren" angelegt werden.
if not os.path.exists(userpfad):
os.mkdir(userpfad)
def tos_to_dict(self, tosgruppe, num2refId, num2child):
tosstr = str(tosgruppe)
ret = dict()
keybefore = ''
for n in range(1, len(tosstr)+1):
if n == 1:
spaltenName = "TOS-Gruppe"
else:
spaltenName = keybefore
key = tosstr[0:n]
if key in num2refId:
parentKey = num2refId[key]
content = num2child[key]
ret[spaltenName] = content
else:
spaltenName = keybefore
ret[spaltenName] = num2child[key]
keybefore = parentKey
return ret
def create_migration_data(self):
pass
data = {
"Delete": "" ,
"Document Number": "-",
"Revision": "-",
"Project Name": "-",
"Teamcenter Item Type": "-",
"Part Type": "-",
"TC_ImportTime": "-",
"Last Saved Version": "-",
"Subject": "-",
"Category": "-",
"Keywords": "-",
}
all_data = self.get_all_gui_data()
# data_keys = [ "Author", "Teilenummer", "StartRevision",
# "Bezeichnung1", "Bezeichnung2", "Bezeichnung4", "KategorieNE",
# "BeschaffungsartNE", "TOS-Gruppe_ERP", "Dispogruppe",
# "Dispolaufgruppe", "WerkstofftypNE", "WerkstoffNE",
# "Oberflaechenbehandlung", "Farbe", "KalkulationsartNE",
# "RuestcodeAusw", "Fertigungsart", "Allgemeintoleranz",
# "HalbzeugInternAngabe", "Halbzeug", "HalbzeugOhneSaegeliste",
# "EinheitNE", "FOS-GruppeNE", "Hersteller", "HerstellerTeilenummer",
# "Serien-Status", "Kantennorm", "Oberflaechennorm", "Massnorm",
# "Tolerierungsnorm","Änderungsbeschreibung",
# "Freigabevermerk", "ZusaetzlicheInformationen"]
# Path
teilenummer = self.get_gui_data("teilenummer")
data["Teilenummer"] = teilenummer
# Bezeichnung um "- BG" ergänzen
pdm_kategorie_neu = self.get_gui_data("pdm_kategorie_neu")
bezeichnung1 = self.get_content('bezeichnung1_sivas', 'bezeichnung1_neu')
title = bezeichnung1
if pdm_kategorie_neu == "Baugruppe" or pdm_kategorie_neu == "Schweissbaugruppe":
title = bezeichnung1 + " - BG"
data["Title"] = title
# Bezeichnung 4
bezeichnung4 = ""
if pdm_kategorie_neu == "Baugruppe" or pdm_kategorie_neu == "Schweissbaugruppe":
bezeichnung4 = " - BG"
data["Bezeichnung4"] = bezeichnung4
# Author
username = os.environ.get("USERNAME")
data["Author"] = username
# Startrevision
startrevision = self.get_content('aenderungsindex_sivas', 'aenderungsindex_neu')
data["StartRevision"] = startrevision
# aus Halbzeug
aus_halbzeug = self.get_gui_data("aus_halbzeug_neu")
if aus_halbzeug:
data["Aus Halbzeug"] = "Ja"
else:
data["Aus Halbzeug"] = ""
# Fertigungsart
fertigungsart = self.get_content('fertigungsart_sivas', 'fertigungsart_neu')
trans = {
"3D - 3D-drucken":"3D-drucken",
"3D - 3D drucken":"3D-drucken",
"BI - biegen":"biegen",
"DR - drehen":"drehen",
"EX - extrudieren":"extrudieren",
"FR - fräsen":"fräsen",
"GI - gießen":"gießen",
"LW - laser- und wasserstrahlschneiden":"laser-/wasserstrahlschneiden",
"PR - verpressen":"verpressen",
"SA - sägen":"sägen",
"SN - strangpressen":"strangpressen",
"SP - spritzgießen":"spritzgießen",
"ST - stanzen":"stanzen",
"SW - schweißen":"schweißen",
}
data["Fertigungsart"] = trans[fertigungsart]
# FOS Gruppe
fos_gruppe = self.get_content('fosGruppe_sivas', 'fosGruppe_neu')
trans = {
"0 - Einzelteil":"Einzelteil",
"1 - Baugruppe":"Baugruppe",
}
data["Fertigungsart"] = trans[fos_gruppe]
# Mengeneinheit
mengeneinheit = self.get_content('mengeneinheit_sivas', 'mengeneinheit_neu')
trans = {
"L - Liter":"L",
"mm - Millimeter":"mm",
"Stck - Stück":"Stck",
"M - Meter":"m",
"m2 - Quadratmeter":"",
"dm³ - Kubikdezimeter":"dm³",
"m³ - Kubikmeter":"",
}
data["Mengeneinheit"] = trans[mengeneinheit]
# Halbzeug
halbzeug = self.get_content('halbzeug_sivas', 'halbzeug_neu')
trans = {
"WAHR":"Ja",
"FALSCH":"",
}
data["Halbzeug"] = trans[halbzeug]
# TOS-Gruppe
# Nr. Spaltenname in Impfdatei Wert in Impfdatei
# 3 TOS-Gruppe Schönenberger Produkt
# 33 TOS_Schoenenberger_Produkt ILS IntraLogistikSystem
# 330 TOS_ILS ILS 2.0
# 3303 TOS_ILS_2 Laufprofil 2.0
(num2refId, num2child) = self._controller.get_config().TOSGruppen.get_Id2TosGroup()
tosgruppe = self.get_content('tosgruppe_sivas', 'tosgruppe_neu')
newcolumns = self.tos_to_dict(tosgruppe, num2refId, num2child)
data.update(newcolumns)
# Dispogruppe
dispogruppe = self.get_content('dispogruppe_sivas', 'dispogruppe_neu')
trans = {
"10 - Fahrstrecke":"Fahrstrecke",
"20 - Förderer":"Förderer",
"30 - Gerüst":"Gerüst",
"40 - Betriebsmittel":"Betriebsmittel",
"50 - Automation":"Automation",
"60 - Kleinteile":"Kleinteil",
"70 - Rohmaterial":"Rohmaterial",
"80 - Sonstiges Intern":"Sonstiges Intern",
"90 - Baustelleneinrichtung":"Baustelleneinrichtung",
"100 - Sonderkonstruktionen":"Sonderkonstruktionen",
}
data["Dispogruppe"] = trans[dispogruppe]
# Dispolaufgruppe
dispolaufgruppe = self.get_content('dispolaufgruppe_sivas', 'dispolaufgruppe_neu')
trans = {
"10 - Omniflo":"Omniflo",
"20 - Intra Logistic System + Alt-HFS":"Intra Logistic System + alt-HFS",
"30 - Fremd-Transportsysteme + SSG-Anbauten":"Fremd-Transportsysteme + SSG-Anbauten",
"40 - Spinnereikomponenten":"Spinnereikomponente",
"45 - Automotiv":"Automotiv",
"50 - Nicht eindeutig, Sonder":"Nicht eindeutig, Sonder",
}
data["Dispolaufgruppe"] = trans[dispolaufgruppe]
# ZusaetzlicheInformationen
# Die Werte aus den Feldern Automatische Zusatzinformationen und
# Benutzerdefinierte Zusatzinformationen müssen vor dem Eintragen in
# die Impfdatei zusammengesetzt werden
zusatzinfos_auto_text = self.get_gui_data("zusatzinfos_auto_text")
zusatzinfos_bendef_text = self.get_gui_data("zusatzinfos_bendef_text")
data["ZusaetzlicheInformationen"] = zusatzinfos_auto_text + zusatzinfos_bendef_text
class CadItemRepository:
"""
+14 -12
View File
@@ -9,6 +9,7 @@ Contains the logic for the MVC of CreoMigrate Gui
"""
# Infos und Fehlermeldungen die ausgelöst werden können
messages = {
"pdm_kategorie_definiert": "PDM-Kategorie nicht definiert",
"rüstcode_infos": 'Bitte Rüstcode auswählen!',
"beschaffungsart_infos": ' Komponenten der Schweißbaugruppe müssen eigene Teilenummern erhalten, falls diese aktuell als Underline-Nummern in der Creo-Baugruppe vorliegen, aber keine eigenen Teilenummern in SIVAS besitzen!',
"mengeneinheit_infos":'Bitte prüfen, ob Mengeneinheit ≠ "M - Meter" korrekt ist!',
@@ -29,7 +30,7 @@ messages = {
"teilenummer_not_exist_infos":"Ersetzte Teilenummer '{teilenummer}' exisitert noch nicht in RuleDesigner. Migration trotzdem durchführen?",
"ersatzteilenummer_not_exist_infos":"Ersatz-Teilenummer '{teilenummer}' exisitert noch nicht in RuleDesigner. Migration trotzdem durchführen?",
"hersteller": "Hersteller nicht in RuleDesigner enthalten. Bitte nachpflegen!",
"werkstofftyp_not_exist":'Eingetragener Werkstofftyp existieert nicht. Bitte korrigeren!',
"werkstofftyp_not_exist":'Eingetragener Werkstofftyp existiert nicht. Bitte korrigeren!',
"werkstoff_not_exist":'Werkstoff falsch. Bitte korrigieren!',
"color_not_defined":'Teilenummer kann nicht ohne festgelegte Farbe migriert werden!',
"aenderungstext_too_long":'Änderungstext_weist zu viele Zeichen auf. Bitte auf 400 Zeichen verkürzen!',
@@ -214,7 +215,7 @@ class Controller(Observer):
def message_info(self, title, key, questions='ok'):
return messagebox.showinfo(title, messages[key])
def message_question(self, title, key, values):
def message_question(self, title, key, values={}):
text = messages[key]
if 'teilenummer' in values:
text = text.format(teilenummer=values['teilenummer'])
@@ -222,7 +223,7 @@ class Controller(Observer):
if 'default' in values and values['default'] == 'yes':
default = messagebox.YES
return messagebox.askquestion(title, text, type=messagebox.YESNO, default=default)
def message_error(self, title, key, values):
def message_error(self, title, key, values={}):
text = messages[key]
if 'Labels' in values:
text = text.format(Labels=values['Labels'])
@@ -273,17 +274,18 @@ class Controller(Observer):
# labels = ', '.join(missing)
# self.message_error('Fehlende Angaben', 'missing_data', {'Labels':labels})
# return
# invalid_chars = self._config.InvalidChars.get()
# (ok, wrongchars) = self._model.check_improper_chars(invalid_chars)
# if ok == False:
# for label,achars in wrongchars.items():
# chars = ''.join(achars)
# self.message_error('Unzulässige Zeichen', 'unzulaessige_zeichen', {'Zeichentyp': chars, 'Feldname':label})
# return
invalid_chars = self._config.InvalidChars.get()
(ok, wrongchars) = self._model.check_improper_chars(invalid_chars)
if ok == False:
for label,achars in wrongchars.items():
chars = ''.join(achars)
self.message_error('Unzulässige Zeichen', 'unzulaessige_zeichen', {'Zeichentyp': chars, 'Feldname':label})
return
ok = self._model.check_content()
if ok == True:
data = self._model.create_migration_data()
data = self._model.create_migration_data()
#self._model.create_migration_file(data)
def zuruecksetzen(self):
cid = self.get_current_item_id()
self._model.clear()