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 247974b..e16eb71 100644 Binary files a/db/jtDB.db and b/db/jtDB.db differ diff --git a/widgets/login_widget.py b/widgets/login_widget.py index 1a88fea..eda75bb 100644 --- a/widgets/login_widget.py +++ b/widgets/login_widget.py @@ -12,7 +12,7 @@ def check_user_login(user_id, password): try: # 始终使用SQLite数据源验证登录 db = SQLUtils(source_name='sqlite') - db.execute_query("SELECT id FROM user WHERE username = ? AND password = ? AND is_deleted = 0", (user_id, password)) + db.execute_query("SELECT id FROM wsbz_user WHERE username = ? AND password = ? AND is_deleted = 0", (user_id, password)) result = db.fetchone() db.close() return result is not None