Compare commits
5 Commits
6f2402dea4
...
896cf7a227
| Author | SHA1 | Date | |
|---|---|---|---|
| 896cf7a227 | |||
| 2e76c4d959 | |||
| e87c1b930c | |||
| 920c7bf0f3 | |||
| 740a1b2ac8 |
@@ -1,4 +1,5 @@
|
||||
@echo off
|
||||
IF "%1" == "-s" (set SIVAS_ID=%2) else (set /p SIVAS_ID=Enter Sivas ID or IDs:)
|
||||
CALL manage_interpreter.bat activate_interpreter
|
||||
python %CREMIG_LIB%\get_sivas_teilestamm.py %*
|
||||
python %CREMIG_LIB%\update_database.py --sivasid=%SIVAS_ID% -t
|
||||
CALL manage_interpreter.bat deactivate_interpreter
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
import argparse
|
||||
import os
|
||||
from manage_configs import MigrationStatus
|
||||
import update_database
|
||||
|
||||
class FetchSivasTeilestamm:
|
||||
def __init__(self, assembly_json_name, assembly_json_out_dir=os.environ.get('CREMIG_DATA'), csv_out_dir=os.environ.get('CREMIG_DATA')):
|
||||
self.migration = MigrationStatus(assembly_json_out_dir, str(assembly_json_name).replace('.json', "") + ".json")
|
||||
self.csv_out_dir = csv_out_dir
|
||||
|
||||
def get_unmigrated_teilstamm_csvs(self):
|
||||
"""Generiert CSV-Dateien für alle noch nicht migrierten Stücklistenteile der angegebenen Baugruppennummer"""
|
||||
unmigrated_ids = self.migration.get_unmigrated_ids()
|
||||
update_database.get_sivas_teilestamm(unmigrated_ids, self.csv_out_dir)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
parser = argparse.ArgumentParser(description='fetches data from sivas or ruledesigner fusion', prog='update_database')
|
||||
parser.add_argument('-s', '--sivasid', action='store', help='fetch teilestamm-data for all unmigrated parts in the bom of a given asm-id. Specifiy multiple ids as comma separated values without space, e.g. 200000089,200000090', metavar='id(s)')
|
||||
args = parser.parse_args()
|
||||
|
||||
out_dir = os.environ.get('CREMIG_DATA')
|
||||
|
||||
if args.sivasid:
|
||||
sivas_asm_id = args.sivasid.strip().replace(".json","")
|
||||
update_database.get_rd_dbase()
|
||||
sivas_teilestamm = FetchSivasTeilestamm(out_dir, sivas_asm_id)
|
||||
sivas_teilestamm.get_unmigrated_teilstamm_csvs()
|
||||
|
||||
else:
|
||||
parser.print_help()
|
||||
+19
-1
@@ -2,6 +2,8 @@ import os
|
||||
import json
|
||||
from configparser import ConfigParser
|
||||
import pandas as pd
|
||||
import update_database
|
||||
|
||||
|
||||
"""
|
||||
Diese Lib verwaltet alle Config dateien (als .cfg oder als .json) von CreoMigrate
|
||||
@@ -133,11 +135,15 @@ class RuleDesignerDatabaseConfig(CSVBasedConfig):
|
||||
|
||||
class MigrationStatus:
|
||||
def __init__(self, file_dir, assembly_json):
|
||||
self.file_dir = file_dir
|
||||
self.assembly_json = assembly_json.replace(".json", "")
|
||||
self.sivas_assembly_data = SivasAssemblyData(file_dir, assembly_json)
|
||||
self.ruledesigner_data = RuleDesignerDatabaseConfig(file_dir)
|
||||
|
||||
def get_migration_status(self):
|
||||
def get_migration_status(self) -> dict:
|
||||
"""Gibt zurück, ob die Teilenummern der Baugruppe bereits migriert wurden, oder nicht"""
|
||||
update_database.get_sivas_dbase(sivas_id=self.assembly_json, out_dir=self.file_dir)
|
||||
update_database.get_rd_dbase()
|
||||
sivas_assembly_ids = self.sivas_assembly_data.get_assembly_ids()
|
||||
ruledesigner_ids = self.ruledesigner_data.get_ruledesigner_ids()
|
||||
|
||||
@@ -146,6 +152,18 @@ class MigrationStatus:
|
||||
migration_status[sivas_assembly_id] = True if sivas_assembly_id in ruledesigner_ids else False
|
||||
return migration_status
|
||||
|
||||
def get_migrated_ids(self) -> list:
|
||||
"""Gibt alle Teilenummern aus der Baugruppenstückliste zurück, die bereits in RuleDesigner migriert wurden"""
|
||||
|
||||
migrated_ids = [assembly_id for assembly_id, migration_status in self.get_migration_status().items() if migration_status is True]
|
||||
return migrated_ids
|
||||
|
||||
def get_unmigrated_ids(self) -> list:
|
||||
"""Gibt alle Teilenummern aus der Baugruppenstückliste zurück, deren Migration in RuleDesigner noch aussteht"""
|
||||
|
||||
unmigrated_ids = [assembly_id for assembly_id, migration_status in self.get_migration_status().items() if migration_status is False]
|
||||
return unmigrated_ids
|
||||
|
||||
|
||||
class TOSGroupsConfig(JsonBasedConfig):
|
||||
"""Auslesen der Config Angaben zu den TOS Gruppen"""
|
||||
|
||||
+47
-4
@@ -39,7 +39,7 @@ def get_blacklist(outdir):
|
||||
fh.write('\n'.join(blacklist))
|
||||
print("done")
|
||||
|
||||
def get_rd_dbase(out_dir):
|
||||
def get_rd_dbase(out_dir=os.environ.get('CREMIG_DATA')):
|
||||
|
||||
rd_csv_source_dir = os.environ.get("RD_DATABASE_SOURCE")
|
||||
rd_csv_filename = os.environ.get("RD_DATABASE_NAME")
|
||||
@@ -59,9 +59,9 @@ def get_rd_dbase(out_dir):
|
||||
print(f"File with ruldesigner-partnumbers ${csv_source_path} doesn't exist. Check VPN connection and %RD_DATABASE_SOURCE% + %RD_DATABASE_NAME% in cremig_setenv.bat")
|
||||
sys.exit(0)
|
||||
|
||||
|
||||
def get_sivas_dbase(sivas_id, out_dir):
|
||||
sivas_exe_path = os.environ.get('SIVAS_DATABASE_QUERY')
|
||||
sivas_id = sivas_id.replace(".json", "")
|
||||
|
||||
if os.path.isfile(sivas_exe_path):
|
||||
|
||||
@@ -81,12 +81,50 @@ def get_sivas_dbase(sivas_id, out_dir):
|
||||
print(f"Can't execute SIVAS-database query. Check VPN connection and check the path of %SIVAS_DATABASE_QUERY% in cremig_setenv.bat")
|
||||
sys.exit(0)
|
||||
|
||||
def get_sivas_teilestamm(sivas_ids, out_dir):
|
||||
|
||||
sivas_teilestamm_exe = os.environ.get('SIVAS_TEILESTAMM')
|
||||
|
||||
if isinstance(sivas_ids, str):
|
||||
sivas_ids = list(set(sivas_ids.strip().split(",")))
|
||||
|
||||
ids_to_generate = []
|
||||
for id in sivas_ids:
|
||||
id = id.replace(" ", "")
|
||||
out_file = os.path.join(out_dir, id + ".csv")
|
||||
if not os.path.isfile(out_file):
|
||||
ids_to_generate.append(id)
|
||||
|
||||
if not id.isnumeric():
|
||||
print(f"Partnumber '{id}' contains invalid characters. Please check given partnumber. Multiple partnumbers have to be specified as comma separated values without space, e.g. 200000089,200000090")
|
||||
|
||||
|
||||
if os.path.isfile(sivas_teilestamm_exe):
|
||||
|
||||
if os.path.isdir(out_dir):
|
||||
|
||||
if len(ids_to_generate) == 0:
|
||||
print("CSV-file(s) already exist or given partnumber(s) are migrated.")
|
||||
return
|
||||
|
||||
else:
|
||||
print(f"Attempting to generate csv-file(s) for given partnumber(s)...")
|
||||
|
||||
ids_to_generate = ",".join(ids_to_generate)
|
||||
os.environ["SIVAS_EXCEL_EXPORT_DIR"] = out_dir
|
||||
subprocess.run(f"{sivas_teilestamm_exe} -teilenr={ids_to_generate} -open_target_dir=n")
|
||||
else:
|
||||
print(f"Output directory for .csv-file(s) ${out_dir} doesn't exist.")
|
||||
else:
|
||||
print(f"Can't execute SIVAS-database query. Check VPN connection or check the path of %SIVAS_DATABASE_QUERY% in cremig_setenv.bat")
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
parser = argparse.ArgumentParser(description='fetches data from sivas or ruledesigner fusion', prog='update_database')
|
||||
parser.add_argument('-s', '--sivasid', action='store', help='fetch data of this id from sivas fo local database folder', metavar='id')
|
||||
parser.add_argument('-r', '--rd', action='store_true', help='fetch list of existing parts from network drive')
|
||||
parser.add_argument('-b', '--blacklist', action='store_true', help='fetch list of not allowed parts from network drive')
|
||||
parser.add_argument('-t', '--teilestamm', action='store_true', help='fetch teilestamm-data for given partnumbers as csv')
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
@@ -96,10 +134,15 @@ if __name__ == '__main__':
|
||||
get_rd_dbase(out_dir)
|
||||
|
||||
elif args.sivasid:
|
||||
get_sivas_dbase(args.sivasid, out_dir)
|
||||
|
||||
if args.teilestamm:
|
||||
get_sivas_teilestamm(args.sivasid, out_dir)
|
||||
|
||||
else:
|
||||
get_sivas_dbase(args.sivasid, out_dir)
|
||||
|
||||
elif args.blacklist:
|
||||
get_blacklist(out_dir)
|
||||
|
||||
|
||||
else:
|
||||
parser.print_help()
|
||||
|
||||
Reference in New Issue
Block a user