From bacd7e84ab363e849a46ea6252518dcf05f4403d Mon Sep 17 00:00:00 2001 From: zhu-mengmeng <15588200382@163.com> Date: Mon, 16 Jun 2025 11:55:19 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9B=B4=E6=96=B0=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=BA=93=E8=A1=A8=E5=90=8D=EF=BC=8C=E7=BB=9F=E4=B8=80=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E5=89=8D=E7=BC=80=20'wsbz=5F'=20=E4=BB=A5=E6=8F=90?= =?UTF-8?q?=E9=AB=98=E5=8F=AF=E8=AF=BB=E6=80=A7=E5=92=8C=E4=B8=80=E8=87=B4?= =?UTF-8?q?=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dao/inspection_dao.py | 28 ++++---- dao/login_dao.py | 139 +++++++++++++++++++++++++++------------- dao/pallet_type_dao.py | 24 +++---- db/jtDB.db | Bin 49152 -> 53248 bytes widgets/login_widget.py | 2 +- 5 files changed, 120 insertions(+), 73 deletions(-) diff --git a/dao/inspection_dao.py b/dao/inspection_dao.py index cf01c0c..a32b4e0 100644 --- a/dao/inspection_dao.py +++ b/dao/inspection_dao.py @@ -29,7 +29,7 @@ class InspectionDAO: sql = """ SELECT id, position, name, display_name, enabled, required, data_type, min_value, max_value, enum_values, unit, sort_order - FROM inspection_config + FROM wsbz_inspection_config WHERE is_deleted = FALSE ORDER BY sort_order, position """ @@ -38,7 +38,7 @@ class InspectionDAO: sql = """ SELECT id, position, name, display_name, enabled, required, data_type, min_value, max_value, enum_values, unit, sort_order - FROM inspection_config + FROM wsbz_inspection_config WHERE is_deleted = FALSE AND enabled = TRUE ORDER BY sort_order, position """ @@ -91,7 +91,7 @@ class InspectionDAO: sql = """ SELECT id, position, name, display_name, enabled, required, data_type, min_value, max_value, enum_values, unit, sort_order - FROM inspection_config + FROM wsbz_inspection_config WHERE position = ? AND is_deleted = FALSE """ params = (position,) @@ -203,7 +203,7 @@ class InspectionDAO: current_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S') sql = """ - UPDATE inspection_config + UPDATE wsbz_inspection_config SET enabled = ?, update_time = ?, update_by = ? WHERE position = ? AND is_deleted = FALSE """ @@ -240,7 +240,7 @@ class InspectionDAO: tray_id = item.get('tray_id', '') # 检查是否已存在该工程号和位置的记录 check_sql = """ - SELECT id FROM inspection_data + SELECT id FROM wsbz_inspection_data WHERE order_id = ? AND position = ? AND is_deleted = FALSE """ check_params = (order_id, position) @@ -251,7 +251,7 @@ class InspectionDAO: if existing: # 更新已有记录 update_sql = """ - UPDATE inspection_data + UPDATE wsbz_inspection_data SET config_id = ?, value = ?, status = ?, remark = ?, update_time = ?, update_by = ?, tray_id = ? WHERE id = ? @@ -264,7 +264,7 @@ class InspectionDAO: else: # 插入新记录 insert_sql = """ - INSERT INTO inspection_data ( + INSERT INTO wsbz_inspection_data ( order_id, position, config_id, value, status, remark, create_time, create_by, is_deleted, tray_id ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, FALSE, ?) @@ -291,7 +291,7 @@ class InspectionDAO: # 先获取所有没有贴标的工程号 sql_orders = """ SELECT DISTINCT d.order_id - FROM inspection_data d + FROM wsbz_inspection_data d WHERE d.is_deleted = FALSE AND d.tray_id = ? AND d.position = 11 AND COALESCE(d.value,'') = '' """ @@ -310,8 +310,8 @@ class InspectionDAO: sql = f""" SELECT d.id, d.order_id, d.position, d.config_id, d.value, d.status, d.remark, c.name, c.display_name, c.data_type, c.unit - FROM inspection_data d - LEFT JOIN inspection_config c ON d.config_id = c.id + FROM wsbz_inspection_data d + LEFT JOIN wsbz_inspection_config c ON d.config_id = c.id WHERE d.is_deleted = FALSE AND d.tray_id = ? AND d.order_id IN ({placeholders}) ORDER BY d.create_time, d.order_id, d.position @@ -355,8 +355,8 @@ class InspectionDAO: sql = """ SELECT d.id, d.position, d.config_id, d.value, d.status, d.remark, c.name, c.display_name, c.data_type, c.unit - FROM inspection_data d - LEFT JOIN inspection_config c ON d.config_id = c.id + FROM wsbz_inspection_data d + LEFT JOIN wsbz_inspection_config c ON d.config_id = c.id WHERE d.order_id = ? AND d.is_deleted = FALSE AND d.tray_id = ? ORDER BY d.create_time, d.order_id, d.position """ @@ -405,7 +405,7 @@ class InspectionDAO: COALESCE(weight, 0) as weight, COALESCE(net_weight, 0) as net_weight, STRFTIME('%Y-%m-%d %H:%M:%S', pack_time) as pack_time - FROM inspection_pack_data + FROM wsbz_inspection_pack_data WHERE tray_id = ? AND is_deleted = FALSE ORDER BY pack_time DESC @@ -449,7 +449,7 @@ class InspectionDAO: """ try: sql = """ - UPDATE inspection_data + UPDATE wsbz_inspection_data SET is_deleted = TRUE WHERE order_id = ? AND tray_id = ? """ diff --git a/dao/login_dao.py b/dao/login_dao.py index 12f2e75..86ce37a 100644 --- a/dao/login_dao.py +++ b/dao/login_dao.py @@ -1,52 +1,99 @@ from db.pgsql import PostgreSQL from db.system_config_dao import SystemConfigDAO +import logging +class LoginDAO: + """用户登录数据访问对象""" + + def __init__(self): + """初始化数据访问对象""" + self.db = PostgreSQL() + + def __del__(self): + """析构函数,确保数据库连接关闭""" + if hasattr(self, 'db'): + # 如果连接还打开着,确保关闭 + try: + self.db.disconnect() + except: + pass + + def check_user_login(self, user_id: str, password: str) -> bool: + """检查用户登录凭证 + + Args: + user_id: 用户ID + password: 用户密码 + + Returns: + bool: 登录是否成功 + """ + try: + self.db.connect() + sql = "SELECT 1 FROM sys_user WHERE user_id=%s AND password=md5(%s)" + result = self.db.execute_query(sql, (user_id, password)) + return bool(len(result) > 0) + except Exception as e: + logging.error(f"检查用户登录失败: {str(e)}") + return False + finally: + self.db.disconnect() + + def get_user_info(self, user_id: str): + """获取用户信息 + + Args: + user_id: 用户ID + + Returns: + tuple: (用户名, 公司名, 公司ID, 职位ID) 或 (None, None, None, None) + """ + try: + self.db.connect() + sql = """ + SELECT user_id, nick_name AS user_name, position_id, + f_getname('GETCORPEXP', '', '', org_id) AS corp_name, + org_id AS corp_id, default_org_id + FROM sys_user + WHERE user_id = %s + """ + result = self.db.execute_query(sql, (user_id,)) + if result: + user_name = result[0]['user_name'] + corp_name = result[0]['corp_name'] + corp_id = result[0]['corp_id'] + position_id = result[0]['position_id'] + default_org_id = result[0]['default_org_id'] + + # 如果有默认账套ID,使用默认账套ID替代登录账套ID + if default_org_id: + corp_id = default_org_id + # 查询默认账套的名称 + corp_name_sql = """ + SELECT corp_exp + FROM sys_org + WHERE org_id = %s + """ + corp_result = self.db.execute_query(corp_name_sql, (corp_id,)) + if corp_result: + corp_name = corp_result[0]['corp_exp'] + + # 将用户的当前账套ID保存到内存中 + SystemConfigDAO.save_user_selected_corp(user_id, corp_id) + + return user_name, corp_name, corp_id, position_id + return None, None, None, None + except Exception as e: + logging.error(f"获取用户信息失败: {str(e)}") + return None, None, None, None + finally: + self.db.disconnect() + +# 为保持向后兼容,添加全局函数 def check_user_login(user_id: str, password: str) -> bool: - db = PostgreSQL() - try: - db.connect() - sql = "SELECT 1 FROM sys_user WHERE user_id=%s AND password=md5(%s)" - result = db.execute_query(sql, (user_id, password)) - return bool(len(result) > 0) - finally: - db.disconnect() + dao = LoginDAO() + return dao.check_user_login(user_id, password) def get_user_info(user_id: str): - db = PostgreSQL() - try: - db.connect() - sql = """ - SELECT user_id, nick_name AS user_name, position_id, - f_getname('GETCORPEXP', '', '', org_id) AS corp_name, - org_id AS corp_id, default_org_id - FROM sys_user - WHERE user_id = %s - """ - result = db.execute_query(sql, (user_id,)) - if result: - user_name = result[0]['user_name'] - corp_name = result[0]['corp_name'] - corp_id = result[0]['corp_id'] - position_id = result[0]['position_id'] - default_org_id = result[0]['default_org_id'] - - # 如果有默认账套ID,使用默认账套ID替代登录账套ID - if default_org_id: - corp_id = default_org_id - # 查询默认账套的名称 - corp_name_sql = """ - SELECT corp_exp - FROM sys_org - WHERE org_id = %s - """ - corp_result = db.execute_query(corp_name_sql, (corp_id,)) - if corp_result: - corp_name = corp_result[0]['corp_exp'] - - # 将用户的当前账套ID保存到内存中 - SystemConfigDAO.save_user_selected_corp(user_id, corp_id) - - return user_name, corp_name, corp_id, position_id - return None, None, None, None - finally: - db.disconnect() \ No newline at end of file + dao = LoginDAO() + return dao.get_user_info(user_id) \ No newline at end of file diff --git a/dao/pallet_type_dao.py b/dao/pallet_type_dao.py index 7d1562c..ac03425 100644 --- a/dao/pallet_type_dao.py +++ b/dao/pallet_type_dao.py @@ -27,7 +27,7 @@ class PalletTypeDAO: if include_disabled: sql = """ SELECT id, type_name, operation_type, description, enabled, sort_order - FROM pallet_types + FROM wsbz_pallet_types WHERE is_deleted = FALSE ORDER BY sort_order """ @@ -35,7 +35,7 @@ class PalletTypeDAO: else: sql = """ SELECT id, type_name, operation_type, description, enabled, sort_order - FROM pallet_types + FROM wsbz_pallet_types WHERE is_deleted = FALSE AND enabled = TRUE ORDER BY sort_order """ @@ -73,8 +73,8 @@ class PalletTypeDAO: try: sql = """ SELECT DISTINCT sort_order - FROM pallet_archives t1 - LEFT JOIN pallet_types t2 ON t1.type_id = t2.id + FROM wsbz_pallet_archives t1 + LEFT JOIN wsbz_pallet_types t2 ON t1.type_id = t2.id WHERE pallet_id = ? AND t1.is_deleted = FALSE """ params = (pallet_id,) @@ -100,7 +100,7 @@ class PalletTypeDAO: if include_disabled: sql = """ SELECT id, type_name, operation_type, description, enabled, sort_order - FROM pallet_types + FROM wsbz_pallet_types WHERE operation_type = ? AND is_deleted = FALSE ORDER BY sort_order """ @@ -108,7 +108,7 @@ class PalletTypeDAO: else: sql = """ SELECT id, type_name, operation_type, description, enabled, sort_order - FROM pallet_types + FROM wsbz_pallet_types WHERE operation_type = ? AND is_deleted = FALSE AND enabled = TRUE ORDER BY sort_order """ @@ -145,7 +145,7 @@ class PalletTypeDAO: try: sql = """ SELECT id, type_name, operation_type, description, enabled, sort_order - FROM pallet_types + FROM wsbz_pallet_types WHERE id = ? AND is_deleted = FALSE """ params = (pallet_type_id,) @@ -178,7 +178,7 @@ class PalletTypeDAO: try: sql = """ SELECT id, type_name, operation_type, description, enabled, sort_order - FROM pallet_types + FROM wsbz_pallet_types WHERE type_name = ? AND is_deleted = FALSE """ params = (pallet_type, ) @@ -203,7 +203,7 @@ class PalletTypeDAO: current_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S') sql = """ - INSERT INTO pallet_types ( + INSERT INTO wsbz_pallet_types ( type_name, operation_type, description, enabled, sort_order, create_time, create_by, update_time, update_by, is_deleted ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) @@ -272,7 +272,7 @@ class PalletTypeDAO: # 构建SQL sql = f""" - UPDATE pallet_types + UPDATE wsbz_pallet_types SET {', '.join(update_fields)} WHERE id = ? """ @@ -297,7 +297,7 @@ class PalletTypeDAO: current_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S') sql = """ - UPDATE pallet_types + UPDATE wsbz_pallet_types SET is_deleted = TRUE, update_time = ?, update_by = ? WHERE id = ? """ @@ -324,7 +324,7 @@ class PalletTypeDAO: current_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S') sql = """ - UPDATE pallet_types + UPDATE wsbz_pallet_types SET enabled = ?, update_time = ?, update_by = ? WHERE id = ? AND is_deleted = FALSE """ diff --git a/db/jtDB.db b/db/jtDB.db index 247974b4998dd48f7d44e3b1585cdce73a10fabe..e16eb71d8066d5380f9a75e82da2244baeca1d90 100644 GIT binary patch delta 1170 zcmZo@U~X8zJV9FU83O|YFA&3k_(UCJ-DeDXWu2@bApx*BFP|iPKf4o)KjRth(+o`@ zu_kv;c5!WO#unGfp3H_~O6A2#Rq+LhIXS5%@rgyr8JT6N#Y&SqnSYA3GO)9Y+uJjC z@|Pqg<)nfYPW&Lk3S}sR2HNbb4W5Xn=&DJoF5+WjMBi!=iL0;p0z=fm;X8gCxbEr zLl}cHe=D~q*B=f});7k=EJol|10oEW*u-7sLE#$)w-XwqAnTc%sueV$oe`l3 zl7K5_at?BJ3~^Nmadh%=Re*#dNP&`q2A2X5O#a8IxA`O=AERnZ3IQZ z-@%>&8##F{iK!x&h)hL{w~3`=}yAv~JwApt}% S*-w__3t|B#63xlC`BeeXgoy9} delta 455 zcmZozz}(QlJV9FU0RsaA4-mtE;6xo``3DSoW!=0$Ax?&~41C%A*ZCwlSMy$DyTEXk zrHR>ovY>!Je@i|)ySS+-V<%%tVp2}(WJM+sFy>|A1JRp59F=6^YI5LY7uVKiY%!nM zW5{2Sn3I!Q5}#O