In CreoMigrate (GUI-Applikation) können nun auch Teilenummern ohne Stückliste migriert werden. Hierfür wurde in Methode 'get_csv_files_of_asm' von 'controller.py' ein Aufruf der Methode 'extend_asm_bom' aus der Klasse 'SivasBOM' in 'manage_configs.py' ergänzt. Innerhalb der Methode wird die angegebene Teilenummer aus dem Eingabefeld in der GUI, d.h. die Hauptnummer in die Stücklistendaten aufgenommen - standardmäßig ist sie nicht enthalten. Als Oberbaugruppe dieser Nummer wird dabei die fiktive Baugruppe 'None' definiert. Durch diese Ergänzung in den Stücklistendaten wird eine Teilenummer ohne Stückliste also selbst zu einem Bestandteil der fiktiven Baugruppe 'None'. Somit wird also wie bisher nur mit Baugruppen gearbeitet, wodurch die Grundlogik zur Erstellung des Treeviews im Programm gleich bleibt. Lediglich die Vorgehensweise, wenn parent = 'None' gilt musste in den Treeview-Methoden angepasst werden. Im Zuge dessen wurde auch die Methode '_has_childs' der Treeview-Klasse in 'gui.py' angepasst, um sie effizienter zu machen. Konkret wird nun nicht mehr jedes mal durch das parent_children_mapping-dict gelooped werden, um herauszufinden, ob die angegebene Nummer enthalten ist. Da alle Nummern, die als Key in genanntem Dict vorliegen immer Kinder haben muss stattdessen nur geprüft werden, ob die Nummer als Key vorliegt.

This commit is contained in:
2025-04-20 17:40:52 +02:00
parent f01f08cda9
commit 2a601ec3c1
2 changed files with 26 additions and 26 deletions
+14 -13
View File
@@ -2,7 +2,7 @@ import os
from tkinter import messagebox
import update_database
from manage_configs import SivasBOM, RuleDesignerDatabaseConfig, MigrationStatus
from manage_configs import SivasBOM, SivasTeilestamm, RuleDesignerDatabaseConfig, MigrationStatus
"""
Contains the logic for the MVC of CreoMigrate Gui
@@ -115,26 +115,27 @@ class Controller(Observer):
orange[red] = True
return orange
def get_csv_files_of_asm(self, asm_id, load_local_asm_json, load_local_rd_dbase):
def get_csv_files_of_asm(self, asm_id, load_local_asm_json=False, load_local_rd_dbase=False):
""" Holt sich die Metadaten der Stücklistenpositionen als CSV"""
data_dir = self.get_env("data")
rd_dbase_filename = self.get_env("rd_dbase_filename")
asm_data = SivasBOM(data_dir, asm_id + '.json', load_local_asm_json)
sivas_bom = SivasBOM(data_dir, asm_id + '.json', load_local_asm_json)
sivas_bom.extend_asm_bom(asm_id, {"Parent": None, "Position": "10/0"}) # Ergänzt Stücklistendaten um eine fiktive Baugruppe "None", in der die Haupt-Teilenummer als Pos. 1 vorliegt. Dadurch können auch Teilenummern ohne Stückliste korrekt abgebildet werden
rd_data = RuleDesignerDatabaseConfig(data_dir, rd_dbase_filename, load_local_rd_dbase)
migration_status = MigrationStatus(asm_data.child_ids, rd_data.ids)
if not load_local_asm_json:
try:
update_database.get_sivas_teilestamm(migration_status.ids_pending, data_dir)
except:
self.message_error('Abfrage hat nicht funktioniert', 'sivas_db_error')
return
migration_status = MigrationStatus(sivas_bom.child_ids, rd_data.ids)
pending_ids = migration_status.ids_pending
self._model.set_red_ids(migration_status.ids_pending)
self._model.set_parent_children(asm_data.parent_children)
sivas_teilestamm = SivasTeilestamm(data_dir, asm_id + '.csv')
sivas_teilestamm.create_csvs(pending_ids)
self._model.set_red_ids(pending_ids)
self._model.set_parent_children(sivas_bom.parent_children)
self._model.set_asm_id(asm_id)
self._model.set_bom_properties(asm_data.all_bom_properties)
self._model.set_bom_properties(sivas_bom.all_bom_properties)
def set_model(self, model):
self._model = model