Alle Check Logiken Implementiert

This commit is contained in:
2024-03-14 14:24:37 +01:00
parent 8ec356df70
commit a785eecbc2
3 changed files with 177 additions and 71 deletions
+140 -65
View File
@@ -553,10 +553,11 @@ class CadItem(DataModel):
def message_info(self, title, key, questions='ok'): def message_info(self, title, key, questions='ok'):
return self._controller.message_info(title, key, questions) return self._controller.message_info(title, key, questions)
def message_error(self, title, key, values=None):
def message_error(self, title, key): return self._controller.message_error(title, key, values)
return self._controller.message_error(title, key) def message_question(self, title, key, values=None):
return self._controller.message_question(title, key, values)
def check_key_existence(self, key, missing): def check_key_existence(self, key, missing):
if not self.get_gui_data(key): if not self.get_gui_data(key):
missing.append(self.key2label[key]) missing.append(self.key2label[key])
@@ -664,94 +665,168 @@ class CadItem(DataModel):
return self.get_gui_data(key_sivas) return self.get_gui_data(key_sivas)
return None return None
# "asm_id",
# "teilenummer",
# "datenbank",
# "pdm_kategorie_neu",
# "neuaufbau",
# "aus_halbzeug_neu",
# "halbzeugnummer_neu",
# "halbzeuglaenge_neu",
# "halbzeugoberflaeche_neu",
# "halbzeugfarbe_neu",
# "lebenszyklus_status_neu",
# "model3d_neu",
# "bezeichnung1_sivas", "bezeichnung1_neu",
# "bezeichnung2_sivas",
# "halbzeugOhneSaege_sivas", "halbzeugOhneSaege_neu",
# "ruestcode_sivas", "ruestcode_neu",
# "fertigungsart_sivas", "fertigungsart_neu",
# "allgemeintoleranz_sivas", "allgemeintoleranz_neu",
# "fosGruppe_sivas", "fosGruppe_neu",
# "kalkulationsart_sivas", "kalkulationsart_neu",
# "beschaffungsart_sivas", "beschaffungsart_neu",
# "mengeneinheit_sivas", "mengeneinheit_neu",
# "halbzeug_sivas", "halbzeug_neu",
# "tosgruppe_sivas", "tosgruppe_neu",
# "dispogruppe_sivas", "dispogruppe_neu",
# "dispolaufgruppe_sivas","dispolaufgruppe_neu",
# "hersteller_sivas", "hersteller_neu",
# "ersatzfuer_sivas", "ersatzfuer_neu",
# "ersetztdurch_sivas", "ersetztdurch_neu",
# "herstteilenr_sivas", "herstteilenr_neu",
# "werkstoffdiskr_neu",
# "werkstofftyp_neu",
# "material_sivas", "material_neu",
# "oberflaeche_neu",
# "farbe_neu",
# "version_sivas",
# "aenderungsindex_sivas", "aenderungsindex_neu",
# "aenderungstext_sivas", "aenderungstext_neu",
# "freigabevermerk_sivas", "freigabevermerk_neu",
# "zusatzinfos_auto_text",
# "zusatzinfos_bendef_text",
def check_content(self): def check_content(self):
content = self.get_content('bezeichnung1_sivas', 'bezeichnung1_neu') content = self.get_content('bezeichnung1_sivas', 'bezeichnung1_neu')
if len(content) > 50: if len(content) > 50:
self.message_info('Bezeichnung1 zu gross', 'bezeichnung_zu_gross') self.message_error('Bezeichnung1 zu gross', 'bezeichnung_zu_gross')
return return False
# Rüstcode und Sögeliste # Rüstcode und Sögeliste
ruestcode = self.get_gui_data("ruestcode_sivas") ruestcode = self.get_gui_data("ruestcode_sivas")
halbzeugOhneSaege_neu = self.get_gui_data("halbzeugOhneSaege_neu") halbzeugOhneSaege_neu = self.get_gui_data("halbzeugOhneSaege_neu")
if ruestcode == "SRC Standard Rüstcode" and halbzeugOhneSaege_neu == "Sägeliste nicht benötigt": if ruestcode == "SRC Standard Rüstcode" and halbzeugOhneSaege_neu == "Sägeliste nicht benötigt":
self.message_info('Konflikt Rüstcode und Sägeliste', 'konflikt_ruestcode_saegeliste') self.message_error('Konflikt Rüstcode und Sägeliste', 'konflikt_ruestcode_saegeliste')
return return False
# Rüstcode und Kategorie # Rüstcode und Kategorie
content = self.get_content('ruestcode_sivas', 'ruestcode_neu') content = self.get_content('ruestcode_sivas', 'ruestcode_neu')
pdm_kategorie_neu = self.get_gui_data("pdm_kategorie_neu") pdm_kategorie_neu = self.get_gui_data("pdm_kategorie_neu")
if pdm_kategorie_neu != "Baugruppe" and ruestcode == "": if pdm_kategorie_neu != "Baugruppe" and ruestcode == "":
self.message_info('Teilenummer ohne Rüstcode', 'teilenummer_ohne_ruestcode') self.message_error('Teilenummer ohne Rüstcode', 'teilenummer_ohne_ruestcode')
return return False
# Fertigungsart # Fertigungsart
fertigungsart = self.get_content('fertigungsart_sivas', 'fertigungsart_neu') 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"] arten = ["3D - 3D-drucken", "EX - extrudieren", "GI - gießen", "PR - verpressen", "SN - strangpressen", "SP - spritzgießen", "SW - schweißen"]
if pdm_kategorie_neu == "Baugruppe" and fertigungsart == arten: if pdm_kategorie_neu == "Baugruppe" and fertigungsart == arten:
self.message_info('Fertigunsart falsch', 'fertigungsart') self.message_error('Fertigunsart falsch', 'fertigungsart')
return return False
farten = self._config.Fertigung.get_list_in_section("Fertigungsarten") farten = self._controller.get_config().Fertigung.get_list_in_section("Fertigungsarten")
if pdm_kategorie_neu == "Kauteil" and fertigungsart == farten: if pdm_kategorie_neu == "Kauteil" and fertigungsart == farten:
self.message_info('Fertigunsart falsch', 'fertigungsart') self.message_error('Fertigunsart falsch', 'fertigungsart')
return return False
if pdm_kategorie_neu == "Schweissbaugruppe" and fertigungsart != "SW - schweißen": if pdm_kategorie_neu == "Schweissbaugruppe" and fertigungsart != "SW - schweißen":
self.message_info('Fertigunsart falsch', 'fertigungsart') self.message_error('Fertigunsart falsch', 'fertigungsart')
return return False
# FOS - Gruppe # FOS - Gruppe
fos_gruppe = self.get_content('fosGruppe_sivas', 'fosGruppe_neu') fos_gruppe = self.get_content('fosGruppe_sivas', 'fosGruppe_neu')
if pdm_kategorie_neu == "Baugruppe" and fos_gruppe == "0 - Einzelteil": if pdm_kategorie_neu == "Baugruppe" and fos_gruppe == "0 - Einzelteil":
self.message_info('FOS Gruppe falsch', 'fos_gruppe') self.message_error('FOS Gruppe falsch', 'fos_gruppe')
return return False
if pdm_kategorie_neu == "Einzelteil" and fos_gruppe == "1 - Baugruppe": if pdm_kategorie_neu == "Einzelteil" and fos_gruppe == "1 - Baugruppe":
self.message_info('FOS Gruppe falsch', 'fos_gruppe') self.message_error('FOS Gruppe falsch', 'fos_gruppe')
return return False
if pdm_kategorie_neu == "SChweissbaugruppe" and fos_gruppe == "1 - Baugruppe": if pdm_kategorie_neu == "Schweissbaugruppe" and fos_gruppe == "1 - Baugruppe":
self.message_info('FOS Gruppe falsch', 'fos_gruppe') self.message_error('FOS Gruppe falsch', 'fos_gruppe')
return return False
# Kalkulationsart # Kalkulationsart
kalkulationsart = self.get_content('kalkulationsart_sivas', 'kalkulationsart_neu')
if pdm_kategorie_neu == "Kaufteil" and kalkulationsart == "Eigenbau":
self.message_error('Kalkulationsart falsch', 'kalkulations_art')
return False
if pdm_kategorie_neu == "Einzelteil" and kalkulationsart == "Kaufteil":
self.message_error('Kalkulationsart falsch', 'kalkulations_art')
return False
if pdm_kategorie_neu == "Schweissbaugruppe" and kalkulationsart == "Kaufteil":
self.message_error('Kalkulationsart falsch', 'kalkulations_art')
return False
# Beschaffungsart
beschaffungsart = self.get_content('beschaffungsart_sivas', 'beschaffungsart_neu')
if pdm_kategorie_neu == "Baugruppe" and beschaffungsart == "Kaufteil":
self.message_error('beschaffungsart falsch', 'beschaffungsart')
return False
if pdm_kategorie_neu == "Schweissbaugruppe" and beschaffungsart == "Kaufteil":
self.message_error('beschaffungsart falsch', 'beschaffungsart')
return False
if pdm_kategorie_neu == "Kaufteil" and beschaffungsart == "Eigenbau":
self.message_error('beschaffungsart falsch', 'beschaffungsart')
return False
# Mengeneinheit
mengeneinheit = self.get_content('mengeneinheit_sivas', 'mengeneinheit_neu')
ruestcode = self.get_content('ruestcode_sivas', 'ruestcode_neu')
if ruestcode == "SRC - Standard Rüstcode" and mengeneinheit != "Stck - Stück":
self.message_error('Mengeneinheit falsch', 'mengeneinheit')
return False
# Halbzeug
halbzeug = self.get_content('halbzeug_sivas', 'halbzeug_neu')
if ruestcode == "SRC - Standard Rüstcode" and halbzeug == 'WAHR':
self.message_error('Halbzeug falsch', 'teilenummer_halbzeug')
return False
if ruestcode == "Trümmerbaugruppe" and halbzeug == 'WAHR':
self.message_error('Halbzeug falsch', 'teilenummer_halbzeug')
return False
# TOS-Gruppe
tosgruppe = self.get_content('tosgruppe_sivas', 'tosgruppe_sivas')
(num2refId, num2child) = self._controller.get_config().TOSGruppen.get_Id2TosGroup()
# TODO wirklich als refernce-id oder als Gruppe?
if tosgruppe not in num2child.keys():
self.message_error('TOS Gruppe nicht vorhanden', 'tos_gruppe_not_exist')
return False
# Dispogruppe
dispogruppe = self.get_content('dispogruppe_sivas', 'dispogruppe_neu')
if dispogruppe == '':
self.message_error('Dispogruppe nicht angegeben', 'dispo_not_exist')
return False
# Dispolaufgruppe
dispolaufgruppe = self.get_content('dispolaufgruppe_sivas', 'dispolaufgruppe_sivas')
if dispolaufgruppe == '':
self.message_error('Dispolaufgruppe nicht angegeben', 'dispolauf_not_exist')
return False
# Ersatz für
ersatzfuer = self.get_content('ersatzfuer_sivas', 'ersatzfuer_neu')
Teilenummern = self._controller.get_config().get_ruledesigner_ids()
if ersatzfuer and ersatzfuer not in Teilenummern:
ret = self.message_question('Ersatz nicht in Teilenummer ', 'teilenummer_not_exist_infos', {'teilenummer':ersatzfuer, 'default':'no' } )
if ret == "no":
return False
# Ersetzt durch
ersatzdurch = self.get_content('ersetztdurch_sivas', 'ersetztdurch_neu')
Teilenummern = self._controller.get_config().get_ruledesigner_ids()
if ersatzdurch and ersatzdurch not in Teilenummern:
ret = self.message_question('Ersatz nicht in Teilenummer ', 'ersatzteilenummer_not_exist_infos', {'teilenummer':ersatzdurch, 'default':'no' } )
if ret == "no":
return False
# Hersteller
hersteller = self.get_content('hersteller_sivas', 'hersteller_neu')
alleHersteller = self._controller.get_config().Hersteller.get_all()
if hersteller and hersteller not in alleHersteller:
ret = self.message_error('Ersatz nicht in Teilenummer ', 'hersteller', {'hersteller':hersteller } )
if ret == "no":
return False
# # Werkstofftyp TODO
# werkstofftyp = self.get_content('werkstofftyp_neu', 'werkstofftyp_neu')
# if werkstofftyp == '':
# self.message_error('Werkstofftyp nicht eingetragen', 'werkstofftyp_not_exist')
# return
# # Material TODO
# werkstofftyp = self.get_content('werkstofftyp_neu', 'werkstofftyp_neu')
# if werkstofftyp == '':
# self.message_error('Werkstofftyp nicht eingetragen', 'werkstofftyp_not_exist')
# return
# Farbe
farbe = self._model.get_gui_data("farbe_neu")
if werkstofftyp == '':
self.message_error('Werkstofftyp nicht eingetragen', 'werkstofftyp_not_exist')
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")
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")
if material_sivas not in mlist:
self._model.message_info('Materialinformation', 'material_infos')
return True
def create_migration_data(self):
pass
class CadItemRepository: class CadItemRepository:
""" """
+18 -6
View File
@@ -26,9 +26,10 @@ messages = {
"tos_gruppe_not_exist":'TOS-Gruppe exisitert nicht. Bitte eingetragene Gruppennummer korrigieren oder ergänzen!', "tos_gruppe_not_exist":'TOS-Gruppe exisitert nicht. Bitte eingetragene Gruppennummer korrigieren oder ergänzen!',
"dispo_not_exist":'Datensatz kann nicht ohne Dispogruppe migriert werden. Bitte nachpflegen!', "dispo_not_exist":'Datensatz kann nicht ohne Dispogruppe migriert werden. Bitte nachpflegen!',
"dispolauf_not_exist":'Datensatz kann nicht ohne Dispolaufgruppe migriert werden. Bitte nachpflegen!', "dispolauf_not_exist":'Datensatz kann nicht ohne Dispolaufgruppe migriert werden. Bitte nachpflegen!',
"teilenummer_not_exist_infos":'Ersetzte Teilenummer {Ersetzte Teilenummer} exisitert noch nicht in RuleDesigner. Migration trotzdem durchführen?', "teilenummer_not_exist_infos":"Ersetzte Teilenummer '{teilenummer}' exisitert noch nicht in RuleDesigner. Migration trotzdem durchführen?",
"ersatzteilenummer_not_exist_infos":'Ersatz-Teilenummer {Ersatz-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?",
"werkstofftyp_not_exist":'Eingetragener Werkstofftyp exisitert nicht. Bitte korrigeren!', "hersteller": "Hersteller nicht in RuleDesigner enthalten. Bitte nachpflegen!",
"werkstofftyp_not_exist":'Eingetragener Werkstofftyp existieert nicht. Bitte korrigeren!',
"werkstoff_not_exist":'Werkstoff falsch. Bitte korrigieren!', "werkstoff_not_exist":'Werkstoff falsch. Bitte korrigieren!',
"color_not_defined":'Teilenummer kann nicht ohne festgelegte Farbe migriert werden!', "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!', "aenderungstext_too_long":'Änderungstext_weist zu viele Zeichen auf. Bitte auf 400 Zeichen verkürzen!',
@@ -85,6 +86,8 @@ class Controller(Observer):
def set_config(self, config): def set_config(self, config):
self._config = config self._config = config
def get_config(self):
return self._config
def get_csv_files_of_asm(self, asmid, uselocal): def get_csv_files_of_asm(self, asmid, uselocal):
@@ -211,7 +214,14 @@ class Controller(Observer):
def message_info(self, title, key, questions='ok'): def message_info(self, title, key, questions='ok'):
return messagebox.showinfo(title, messages[key]) return messagebox.showinfo(title, messages[key])
def message_question(self, title, key, values):
text = messages[key]
if 'teilenummer' in values:
text = text.format(teilenummer=values['teilenummer'])
default = messagebox.NO
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] text = messages[key]
if 'Labels' in values: if 'Labels' in values:
@@ -270,8 +280,10 @@ class Controller(Observer):
# chars = ''.join(achars) # chars = ''.join(achars)
# self.message_error('Unzulässige Zeichen', 'unzulaessige_zeichen', {'Zeichentyp': chars, 'Feldname':label}) # self.message_error('Unzulässige Zeichen', 'unzulaessige_zeichen', {'Zeichentyp': chars, 'Feldname':label})
# return # return
self._model.check_content() ok = self._model.check_content()
if ok == True:
data = self._model.create_migration_data()
def zuruecksetzen(self): def zuruecksetzen(self):
cid = self.get_current_item_id() cid = self.get_current_item_id()
self._model.clear() self._model.clear()
+19
View File
@@ -196,6 +196,25 @@ class TOSGroupsConfig(JsonBasedConfig):
for cId in childIds: for cId in childIds:
self.get_children_keys(tos_hierarchy, cId, result) self.get_children_keys(tos_hierarchy, cId, result)
def get_Id2TosGroup(self):
"hole alle ids zur jeweiligen Gruppe"
# lazy. nur einmal laden, wenn noch nicht geschehen
if not self.tos_hierarchy:
self.tos_hierarchy = super().load_json_from_file()
tos_hierarchy = self.tos_hierarchy
num2refId = dict()
num2child = dict()
allkwds = self.get_all_keywords()
for kw in allkwds.keys():
refids = tos_hierarchy[kw]["reference-ids"]
for cId in refids.keys():
num2refId[cId] = refids[cId]
children = tos_hierarchy[kw]["children"]
for cId in children.keys():
num2child[cId] = children[cId]
return (num2refId, num2child)
def get_all_keywords(self): def get_all_keywords(self):
"""hole alle TOS Keywords, welche in der config Datei definiert sind""" """hole alle TOS Keywords, welche in der config Datei definiert sind"""