jiateng_ws/utils/inspection_config_manager.py

155 lines
4.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import logging
from dao.inspection_dao import InspectionDAO
class InspectionConfigManager:
"""检验配置管理器,用于管理检验项目配置"""
_instance = None
@classmethod
def get_instance(cls):
"""获取单例实例"""
if cls._instance is None:
cls._instance = InspectionConfigManager()
return cls._instance
def __init__(self):
"""初始化检验配置管理器"""
self.dao = InspectionDAO()
self.configs = []
self.reload_configs()
def reload_configs(self):
"""重新加载检验配置"""
try:
self.configs = self.dao.get_all_inspection_configs(include_disabled=True)
logging.info(f"已加载{len(self.configs)}个检验项目配置")
return True
except Exception as e:
logging.error(f"加载检验配置失败: {str(e)}")
return False
def get_configs(self, include_disabled=False):
"""获取检验配置列表
Args:
include_disabled: 是否包含禁用的项目
Returns:
list: 检验配置列表
"""
if include_disabled:
return self.configs
else:
return [config for config in self.configs if config['enabled']]
def get_enabled_configs(self):
"""获取已启用的检验配置列表
Returns:
list: 已启用的检验配置列表
"""
return self.get_configs(include_disabled=False)
def get_enabled_count(self):
"""获取已启用的检验项目数量
Returns:
int: 已启用的检验项目数量
"""
return len(self.get_enabled_configs())
def get_config_by_position(self, position):
"""根据位置获取检验配置
Args:
position: 位置序号 (1-6)
Returns:
dict: 检验配置未找到则返回None
"""
for config in self.configs:
if config['position'] == position:
return config
return None
def toggle_config(self, position, enabled, username='system'):
"""启用或禁用检验配置
Args:
position: 位置序号 (1-6)
enabled: 是否启用
username: 操作用户
Returns:
bool: 操作是否成功
"""
result = self.dao.toggle_inspection_config(position, enabled, username)
if result:
self.reload_configs()
return result
def update_config(self, config_id, data, username='system'):
"""更新检验配置
Args:
config_id: 配置ID
data: 更新数据
username: 操作用户
Returns:
bool: 更新是否成功
"""
result = self.dao.update_inspection_config(config_id, data, username)
if result:
self.reload_configs()
return result
def get_inspection_headers(self):
"""获取检验表头用于UI显示
Returns:
list: 检验表头列表
"""
enabled_configs = self.get_enabled_configs()
headers = []
# 按位置排序
enabled_configs.sort(key=lambda x: x['position'])
for config in enabled_configs:
headers.append(config['display_name'])
return headers
def get_inspection_column_count(self):
"""获取检验列数量
Returns:
int: 检验列数量
"""
return len(self.get_enabled_configs())
def save_inspection_data(self, order_id, data, username='system'):
"""保存检验数据
Args:
order_id: 工程号
data: 检验数据列表
username: 操作用户
Returns:
bool: 保存是否成功
"""
return self.dao.save_inspection_data(order_id, data, username)
def get_inspection_data(self, order_id):
"""获取检验数据
Args:
order_id: 工程号
Returns:
list: 检验数据列表
"""
return self.dao.get_inspection_data_by_order(order_id)