diff --git a/dao/pallet_type_dao.py b/dao/pallet_type_dao.py index e5f5b34..bc29b07 100644 --- a/dao/pallet_type_dao.py +++ b/dao/pallet_type_dao.py @@ -444,4 +444,58 @@ class PalletTypeDAO: return pallet_types except Exception as e: logging.error(f"获取托盘类型失败: {str(e)}") - return {} \ No newline at end of file + return {} + + def save_pallet_archives(self, pallet_code, tier, user_id, user_name): + """保存托盘档案 + + Args: + pallet_code: 包装号 + tier: 托盘料层数 + user_id: 用户ID + user_name: 用户名(已废弃,保留参数兼容性) + + Returns: + bool: 是否保存成功 + """ + try: + current_time = datetime.now() + + # 检查是否已存在相同的包装号记录 + sql = """ + SELECT id FROM wsbz_pallet_archives + WHERE pallet_code = ? AND is_deleted = FALSE + """ + self.db.cursor.execute(sql, (pallet_code,)) + existing_record = self.db.cursor.fetchone() + + if existing_record: + # 更新现有记录 + update_sql = """ + UPDATE wsbz_pallet_archives + SET tier = ?, + update_time = ?, + update_by = ? + WHERE id = ? + """ + params = (tier, current_time, user_id, existing_record[0]) + self.db.execute_update(update_sql, params) + logging.info(f"更新托盘档案记录:包装号={pallet_code}, 层数={tier}") + else: + # 插入新记录 + insert_sql = """ + INSERT INTO wsbz_pallet_archives ( + pallet_code, tier, create_time, create_by, + update_time, update_by, enabled, is_deleted + ) VALUES (?, ?, ?, ?, ?, ?, TRUE, FALSE) + """ + params = (pallet_code, tier, current_time, user_id, + current_time, user_id) + self.db.execute_update(insert_sql, params) + logging.info(f"创建新托盘档案记录:包装号={pallet_code}, 层数={tier}") + + return True + + except Exception as e: + logging.error(f"保存托盘档案失败: {str(e)}") + return False \ No newline at end of file diff --git a/db/jtDB.db b/db/jtDB.db index d5f56fa..96af15d 100644 Binary files a/db/jtDB.db and b/db/jtDB.db differ diff --git a/utils/pallet_type_manager.py b/utils/pallet_type_manager.py index d49d92d..811775e 100644 --- a/utils/pallet_type_manager.py +++ b/utils/pallet_type_manager.py @@ -1,5 +1,6 @@ import logging from dao.pallet_type_dao import PalletTypeDAO +from datetime import datetime class PalletTypeManager: """托盘类型管理器,用于管理托盘类型配置""" @@ -15,11 +16,12 @@ class PalletTypeManager: def __init__(self): """初始化托盘类型管理器""" + if PalletTypeManager._instance: + raise Exception("PalletTypeManager is a singleton class.") + PalletTypeManager._instance = self self.dao = PalletTypeDAO() self.pallet_types = [] - - def get_pallet_types_by_operation(self, operation_type, include_disabled=False): """根据操作类型获取托盘类型 @@ -232,4 +234,18 @@ class PalletTypeManager: if result: return result else: - return None \ No newline at end of file + return None + + def save_pallet_archives(self, pallet_code, tier, user_id, user_name): + """保存托盘档案 + + Args: + pallet_code: 包装号 + tier: 托盘料层数 + user_id: 用户ID + user_name: 用户名 + + Returns: + bool: 是否保存成功 + """ + return self.dao.save_pallet_archives(pallet_code, tier, user_id, user_name) \ No newline at end of file diff --git a/widgets/loading_dialog_widget.py b/widgets/loading_dialog_widget.py index 20eefeb..0f44bd4 100644 --- a/widgets/loading_dialog_widget.py +++ b/widgets/loading_dialog_widget.py @@ -154,6 +154,33 @@ class LoadingDialog(LoadingDialogUI): if not tier_value: QMessageBox.warning(self, "提示", "请输入托盘层数") return + + # 获取包装号 + pallet_code = self.tray_input.text().strip() + if not pallet_code: + QMessageBox.warning(self, "提示", "请输入包装号") + return + + try: + # 保存托盘档案信息 + from utils.pallet_type_manager import PalletTypeManager + pallet_manager = PalletTypeManager.get_instance() + success = pallet_manager.save_pallet_archives( + pallet_code=pallet_code, + tier=int(tier_value), + user_id=self.user_id, + user_name=self.user_name + ) + + if not success: + QMessageBox.warning(self, "提示", "保存托盘档案失败") + return + + logging.info(f"已保存托盘档案:包装号={pallet_code}, 层数={tier_value}") + except Exception as e: + logging.error(f"保存托盘档案时发生错误: {str(e)}") + QMessageBox.warning(self, "错误", f"保存托盘档案失败: {str(e)}") + return # 确保主窗口启动了监听 from widgets.main_window import MainWindow