feat: 添加托盘档案保存功能,支持包装号和层数的记录与更新,优化加载对话框的交互逻辑

This commit is contained in:
zhu-mengmeng 2025-06-22 02:21:01 +08:00
parent f5c813e7a4
commit 5f127c6c4f
4 changed files with 101 additions and 4 deletions

View File

@ -444,4 +444,58 @@ class PalletTypeDAO:
return pallet_types
except Exception as e:
logging.error(f"获取托盘类型失败: {str(e)}")
return {}
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

Binary file not shown.

View File

@ -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
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)

View File

@ -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