调整
This commit is contained in:
parent
b5420880f7
commit
275ad1a720
@ -123,7 +123,7 @@
|
||||
}
|
||||
},
|
||||
"electricity": {
|
||||
"auto_start": false,
|
||||
"auto_start": true,
|
||||
"interval_minutes": 30
|
||||
}
|
||||
}
|
||||
BIN
db/jtDB.db
BIN
db/jtDB.db
Binary file not shown.
@ -2,7 +2,7 @@ from pymodbus.client import ModbusTcpClient
|
||||
import time
|
||||
client = ModbusTcpClient('localhost', port=5020)
|
||||
client.connect()
|
||||
client.write_registers(address=11, values=[25700])
|
||||
client.write_registers(address=11, values=[19200])
|
||||
# client.write_registers(address=3, values=[0])
|
||||
# time.sleep(2)
|
||||
# client.write_registers(address=0, values=[0])
|
||||
@ -13,7 +13,7 @@ client.write_registers(address=11, values=[25700])
|
||||
# 贴标完成
|
||||
# client.write_registers(address=24, values=[1])
|
||||
# client.write_registers(address=2, values=[0])
|
||||
client.write_registers(address=13, values=[1])
|
||||
client.write_registers(address=13, values=[0])
|
||||
# time.sleep(2)
|
||||
# client.write_registers(address=20, values=[0])
|
||||
# time.sleep(3)
|
||||
|
||||
@ -20,7 +20,7 @@ class MainWindowUI(QMainWindow):
|
||||
"炉号": "luno",
|
||||
"轴型": "zx_name",
|
||||
"标签": "template_name",
|
||||
"打印材质": "cz",
|
||||
"打印材质": "dycz",
|
||||
"底托类型": "spack_type",
|
||||
"强度范围": "qx",
|
||||
"强度": "qd",
|
||||
|
||||
@ -175,6 +175,73 @@ class ReportDialogUI(QDialog):
|
||||
|
||||
# 添加到主布局
|
||||
self.main_layout.addWidget(self.report_table)
|
||||
|
||||
# 创建汇总区域
|
||||
self.create_summary_section()
|
||||
|
||||
def create_summary_section(self):
|
||||
"""创建汇总区域"""
|
||||
# 汇总容器
|
||||
self.summary_frame = QFrame()
|
||||
self.summary_frame.setFrameShape(QFrame.StyledPanel)
|
||||
self.summary_frame.setStyleSheet("""
|
||||
QFrame {
|
||||
background-color: #f8f9fa;
|
||||
border: 1px solid #dee2e6;
|
||||
border-radius: 4px;
|
||||
}
|
||||
""")
|
||||
|
||||
self.summary_layout = QHBoxLayout(self.summary_frame)
|
||||
self.summary_layout.setContentsMargins(15, 10, 15, 10)
|
||||
self.summary_layout.setSpacing(20)
|
||||
|
||||
# 汇总标题
|
||||
self.summary_title = QLabel("汇总统计")
|
||||
self.summary_title.setFont(self.title_font)
|
||||
self.summary_title.setStyleSheet("color: #495057; font-weight: bold;")
|
||||
|
||||
# 总轴数
|
||||
self.total_axes_label = QLabel("总轴数:")
|
||||
self.total_axes_label.setFont(self.normal_font)
|
||||
self.total_axes_label.setStyleSheet("color: #495057; font-weight: bold;")
|
||||
self.total_axes_value = QLabel("0")
|
||||
self.total_axes_value.setFont(self.normal_font)
|
||||
self.total_axes_value.setStyleSheet("color: #007bff; font-weight: bold;")
|
||||
self.total_axes_value.setMinimumWidth(80)
|
||||
|
||||
# 总净重
|
||||
self.total_weight_label = QLabel("总净重:")
|
||||
self.total_weight_label.setFont(self.normal_font)
|
||||
self.total_weight_label.setStyleSheet("color: #495057; font-weight: bold;")
|
||||
self.total_weight_value = QLabel("0.00 ")
|
||||
self.total_weight_value.setFont(self.normal_font)
|
||||
self.total_weight_value.setStyleSheet("color: #28a745; font-weight: bold;")
|
||||
self.total_weight_value.setMinimumWidth(100)
|
||||
|
||||
# 记录数
|
||||
self.record_count_label = QLabel("记录数:")
|
||||
self.record_count_label.setFont(self.normal_font)
|
||||
self.record_count_label.setStyleSheet("color: #495057; font-weight: bold;")
|
||||
self.record_count_value = QLabel("0")
|
||||
self.record_count_value.setFont(self.normal_font)
|
||||
self.record_count_value.setStyleSheet("color: #6c757d; font-weight: bold;")
|
||||
self.record_count_value.setMinimumWidth(60)
|
||||
|
||||
# 添加到汇总布局
|
||||
self.summary_layout.addWidget(self.summary_title)
|
||||
self.summary_layout.addStretch()
|
||||
self.summary_layout.addWidget(self.total_axes_label)
|
||||
self.summary_layout.addWidget(self.total_axes_value)
|
||||
self.summary_layout.addSpacing(20)
|
||||
self.summary_layout.addWidget(self.total_weight_label)
|
||||
self.summary_layout.addWidget(self.total_weight_value)
|
||||
self.summary_layout.addSpacing(20)
|
||||
self.summary_layout.addWidget(self.record_count_label)
|
||||
self.summary_layout.addWidget(self.record_count_value)
|
||||
|
||||
# 添加到主布局
|
||||
self.main_layout.addWidget(self.summary_frame)
|
||||
|
||||
def create_button_section(self):
|
||||
"""创建按钮区域"""
|
||||
|
||||
@ -248,6 +248,8 @@ class MainWindow(MainWindowUI):
|
||||
# 加载库房和线材类型数据
|
||||
self.load_warehouse_data()
|
||||
self.load_wire_type_data()
|
||||
|
||||
self.gc_dycz = {}
|
||||
|
||||
logging.info("主窗口初始化时已启动Modbus监控系统")
|
||||
|
||||
@ -981,6 +983,7 @@ class MainWindow(MainWindowUI):
|
||||
# 保存工程号对应的强度数据
|
||||
self._order_strength_data[gc_note] = self._current_gc_qd
|
||||
self._current_gc_sc_gch = gc_info.get("sc_gch", "") # 保存sc_gch字段
|
||||
self.gc_dycz[gc_note] = gc_info.get("dycz","")
|
||||
# 先获取当前 info_table 已有的数据
|
||||
order_info = {}
|
||||
for field_name, label in self.info_values.items():
|
||||
@ -1010,6 +1013,8 @@ class MainWindow(MainWindowUI):
|
||||
order_info[order_info_key] = ""
|
||||
else:
|
||||
order_info[order_info_key] = ""
|
||||
elif field_name == "打印材质":
|
||||
order_info[order_info_key] = self.gc_dycz.pop(gc_note,"") or label.text()
|
||||
elif hasattr(label, 'text'):
|
||||
# 其他有text方法的控件
|
||||
order_info[order_info_key] = label.text()
|
||||
@ -1026,6 +1031,7 @@ class MainWindow(MainWindowUI):
|
||||
continue
|
||||
# 更新/补充 qd 字段
|
||||
order_info["qd"] = self._current_gc_qd
|
||||
|
||||
# 再调用 update_info_table
|
||||
self.update_info_table(order_info)
|
||||
self.add_new_inspection_row(gc_note, self._current_order_code)
|
||||
@ -1076,7 +1082,7 @@ class MainWindow(MainWindowUI):
|
||||
logging.info(f"已生成虚拟工程号并直接添加: {virtual_gc_note}")
|
||||
|
||||
# 确保完整加载所有检验数据,包括线径数据
|
||||
self._safe_load_data()
|
||||
# self._safe_load_data()
|
||||
|
||||
except Exception as e:
|
||||
logging.error(f"生成虚拟工程号失败: {str(e)}")
|
||||
@ -1101,10 +1107,10 @@ class MainWindow(MainWindowUI):
|
||||
enabled_configs = self.inspection_manager.get_enabled_configs()
|
||||
|
||||
# 断开单元格变更信号,避免加载过程中触发保存
|
||||
try:
|
||||
self.process_table.cellChanged.disconnect(self.handle_inspection_cell_changed)
|
||||
except:
|
||||
pass
|
||||
# try:
|
||||
# self.process_table.cellChanged.disconnect(self.handle_inspection_cell_changed)
|
||||
# except:
|
||||
# pass
|
||||
|
||||
# 计算新行的行索引(添加到末尾)
|
||||
data_start_row = self.process_table.rowCount()
|
||||
@ -1167,10 +1173,10 @@ class MainWindow(MainWindowUI):
|
||||
self.process_table.setItem(data_start_row, col_index, item)
|
||||
|
||||
# 设置表格为可编辑状态
|
||||
self.process_table.setEditTriggers(QTableWidget.DoubleClicked | QTableWidget.EditKeyPressed)
|
||||
# self.process_table.setEditTriggers(QTableWidget.DoubleClicked | QTableWidget.EditKeyPressed)
|
||||
|
||||
# 重新连接单元格内容变更信号
|
||||
self.process_table.cellChanged.connect(self.handle_inspection_cell_changed)
|
||||
# # 重新连接单元格内容变更信号
|
||||
# self.process_table.cellChanged.connect(self.handle_inspection_cell_changed)
|
||||
|
||||
# 选中新添加的行
|
||||
self.process_table.selectRow(data_start_row)
|
||||
@ -1590,14 +1596,14 @@ class MainWindow(MainWindowUI):
|
||||
unfinished_data = inspection_dao.get_inspection_data_unfinished(tray_id, package_id)
|
||||
|
||||
# 检查信号是否已连接,并断开单元格变更信号
|
||||
try:
|
||||
signal_was_connected = self.process_table.receivers(self.process_table.cellChanged) > 0
|
||||
if signal_was_connected:
|
||||
self.process_table.cellChanged.disconnect(self.handle_inspection_cell_changed)
|
||||
logging.debug("已断开单元格变更信号")
|
||||
except Exception as e:
|
||||
logging.debug(f"断开单元格变更信号失败: {str(e)}")
|
||||
signal_was_connected = False
|
||||
# try:
|
||||
# signal_was_connected = self.process_table.receivers(self.process_table.cellChanged) > 0
|
||||
# if signal_was_connected:
|
||||
# self.process_table.cellChanged.disconnect(self.handle_inspection_cell_changed)
|
||||
# logging.debug("已断开单元格变更信号")
|
||||
# except Exception as e:
|
||||
# logging.debug(f"断开单元格变更信号失败: {str(e)}")
|
||||
# signal_was_connected = False
|
||||
|
||||
# 清空表格现有数据行,只保留表头
|
||||
while self.process_table.rowCount() > 2:
|
||||
@ -1608,13 +1614,13 @@ class MainWindow(MainWindowUI):
|
||||
# 确保表格完全清空,只保留表头行
|
||||
self.process_table.setRowCount(2) # 只保留表头的两行
|
||||
|
||||
# 只有在之前信号已连接的情况下才重新连接
|
||||
if signal_was_connected:
|
||||
try:
|
||||
self.process_table.cellChanged.connect(self.handle_inspection_cell_changed)
|
||||
logging.debug("已重新连接单元格变更信号")
|
||||
except Exception as e:
|
||||
logging.warning(f"重新连接单元格变更信号失败: {str(e)}")
|
||||
# # 只有在之前信号已连接的情况下才重新连接
|
||||
# if signal_was_connected:
|
||||
# try:
|
||||
# self.process_table.cellChanged.connect(self.handle_inspection_cell_changed)
|
||||
# logging.debug("已重新连接单元格变更信号")
|
||||
# except Exception as e:
|
||||
# logging.warning(f"重新连接单元格变更信号失败: {str(e)}")
|
||||
|
||||
# 加载包装记录
|
||||
return
|
||||
@ -1770,13 +1776,13 @@ class MainWindow(MainWindowUI):
|
||||
# 设置表格为可编辑状态
|
||||
self.process_table.setEditTriggers(QTableWidget.DoubleClicked | QTableWidget.EditKeyPressed)
|
||||
|
||||
# 只有在之前信号已连接的情况下才重新连接
|
||||
if signal_was_connected:
|
||||
try:
|
||||
self.process_table.cellChanged.connect(self.handle_inspection_cell_changed)
|
||||
logging.debug("已重新连接单元格变更信号")
|
||||
except Exception as e:
|
||||
logging.warning(f"重新连接单元格变更信号失败: {str(e)}")
|
||||
# # 只有在之前信号已连接的情况下才重新连接
|
||||
# if signal_was_connected:
|
||||
# try:
|
||||
# self.process_table.cellChanged.connect(self.handle_inspection_cell_changed)
|
||||
# logging.debug("已重新连接单元格变更信号")
|
||||
# except Exception as e:
|
||||
# logging.warning(f"重新连接单元格变更信号失败: {str(e)}")
|
||||
|
||||
except Exception as e:
|
||||
logging.error(f"加载未完成的检验数据失败: {str(e)}")
|
||||
@ -2440,10 +2446,10 @@ class MainWindow(MainWindowUI):
|
||||
except Exception as e:
|
||||
logging.error(f"处理称重数据时发生错误: {str(e)}")
|
||||
# 确保重新连接信号
|
||||
try:
|
||||
self.process_table.cellChanged.connect(self.handle_inspection_cell_changed)
|
||||
except:
|
||||
pass
|
||||
# try:
|
||||
# # self.process_table.cellChanged.connect(self.handle_inspection_cell_changed)
|
||||
# except:
|
||||
# pass
|
||||
|
||||
def _check_weight_stability(self, original_weight_kg):
|
||||
"""
|
||||
@ -2682,11 +2688,11 @@ class MainWindow(MainWindowUI):
|
||||
modbus.close_client(client)
|
||||
logging.info("无轴重要求,已写入D10=1,通知PLC称重合格")
|
||||
|
||||
# 暂时断开信号连接,避免触发cellChanged信号
|
||||
try:
|
||||
self.process_table.cellChanged.disconnect(self.handle_inspection_cell_changed)
|
||||
except:
|
||||
pass
|
||||
# # 暂时断开信号连接,避免触发cellChanged信号
|
||||
# try:
|
||||
# self.process_table.cellChanged.disconnect(self.handle_inspection_cell_changed)
|
||||
# except:
|
||||
# pass
|
||||
|
||||
# 设置称重值单元格(显示千克)
|
||||
weight_item = QTableWidgetItem(str(weight_kg))
|
||||
@ -2809,7 +2815,7 @@ class MainWindow(MainWindowUI):
|
||||
info['mzl'] = weight_kg
|
||||
info['printsl'] = 1
|
||||
info['pono'] = info.get("pono") or order_info.get('ddmo')
|
||||
info["dycz"] = info.get("cz")
|
||||
info["dycz"] = self.gc_dycz.pop(gc_note,"") or info.get("cz")
|
||||
# info['qd'] = self._current_gc_qd
|
||||
# 找到对应工程的强度,并从字典中移除
|
||||
# info['qd'] = self._order_strength_data.pop(gc_note)
|
||||
@ -2853,8 +2859,8 @@ class MainWindow(MainWindowUI):
|
||||
|
||||
# 保存贴标数据到数据库
|
||||
self.save_inspection_data(self._current_order_code, gc_note, tray_id, 11, 11, str(axios_num), "pass")
|
||||
# 重新连接信号
|
||||
self.process_table.cellChanged.connect(self.handle_inspection_cell_changed)
|
||||
# # 重新连接信号
|
||||
# self.process_table.cellChanged.connect(self.handle_inspection_cell_changed)
|
||||
|
||||
# 清除当前处理行的跟踪,因为称重完成后需要等待贴标
|
||||
self._current_processing_row = None
|
||||
@ -2862,10 +2868,10 @@ class MainWindow(MainWindowUI):
|
||||
except Exception as e:
|
||||
logging.error(f"处理称重数据时发生错误: {str(e)}")
|
||||
# 确保重新连接信号
|
||||
try:
|
||||
self.process_table.cellChanged.connect(self.handle_inspection_cell_changed)
|
||||
except:
|
||||
pass
|
||||
# try:
|
||||
# self.process_table.cellChanged.connect(self.handle_inspection_cell_changed)
|
||||
# except:
|
||||
# pass
|
||||
finally:
|
||||
# 释放处理锁
|
||||
self._processing_weight_lock = False
|
||||
@ -2944,11 +2950,11 @@ class MainWindow(MainWindowUI):
|
||||
# 生成贴标号(托盘号+轴号),优先使用当前行的轴号
|
||||
axios_num = self.get_current_row_axios_num(data_row)
|
||||
|
||||
# 断开单元格变更信号,避免程序自动写入时触发
|
||||
try:
|
||||
self.process_table.cellChanged.disconnect(self.handle_inspection_cell_changed)
|
||||
except:
|
||||
pass
|
||||
# # 断开单元格变更信号,避免程序自动写入时触发
|
||||
# try:
|
||||
# self.process_table.cellChanged.disconnect(self.handle_inspection_cell_changed)
|
||||
# except:
|
||||
# pass
|
||||
|
||||
# 创建并设置贴标单元格
|
||||
label_item = QTableWidgetItem(str(axios_num))
|
||||
@ -3003,16 +3009,16 @@ class MainWindow(MainWindowUI):
|
||||
# 更新包装记录统计数据
|
||||
self.update_package_statistics()
|
||||
|
||||
# 重新连接单元格变更信号
|
||||
self.process_table.cellChanged.connect(self.handle_inspection_cell_changed)
|
||||
# # 重新连接单元格变更信号
|
||||
# self.process_table.cellChanged.connect(self.handle_inspection_cell_changed)
|
||||
|
||||
except Exception as e:
|
||||
logging.error(f"处理贴标完成信号失败: {str(e)}")
|
||||
# 确保信号重新连接
|
||||
try:
|
||||
self.process_table.cellChanged.connect(self.handle_inspection_cell_changed)
|
||||
except:
|
||||
pass
|
||||
# try:
|
||||
# self.process_table.cellChanged.connect(self.handle_inspection_cell_changed)
|
||||
# except:
|
||||
# pass
|
||||
|
||||
@Slot(bool, str)
|
||||
def handle_modbus_status_change(self, is_connected, message):
|
||||
@ -4017,11 +4023,11 @@ class MainWindow(MainWindowUI):
|
||||
self._last_processed_gc_note = order_id
|
||||
logging.info(f"记录最近处理线径数据的工程号: {order_id}")
|
||||
|
||||
# 暂时断开信号连接,避免触发cellChanged信号
|
||||
try:
|
||||
self.process_table.cellChanged.disconnect(self.handle_inspection_cell_changed)
|
||||
except:
|
||||
pass
|
||||
# # 暂时断开信号连接,避免触发cellChanged信号
|
||||
# try:
|
||||
# self.process_table.cellChanged.disconnect(self.handle_inspection_cell_changed)
|
||||
# except:
|
||||
# pass
|
||||
|
||||
# 格式化值并设置单元格
|
||||
formatted_value = str(value)
|
||||
@ -4056,10 +4062,10 @@ class MainWindow(MainWindowUI):
|
||||
# 不需要在这里主动触发数据重新加载,因为handle_inspection_cell_changed会处理
|
||||
|
||||
# 重新连接信号
|
||||
try:
|
||||
self.process_table.cellChanged.connect(self.handle_inspection_cell_changed)
|
||||
except Exception as e:
|
||||
logging.warning(f"重新连接cellChanged信号失败: {str(e)}")
|
||||
# try:
|
||||
# self.process_table.cellChanged.connect(self.handle_inspection_cell_changed)
|
||||
# except Exception as e:
|
||||
# logging.warning(f"重新连接cellChanged信号失败: {str(e)}")
|
||||
|
||||
logging.info(f"成功设置{data_type}值 {formatted_value} 到工程号 {order_id} 的行 {data_row}")
|
||||
|
||||
|
||||
@ -38,6 +38,10 @@ class ReportDialog(ReportDialogUI):
|
||||
self.material_edit.clear()
|
||||
self.spec_edit.clear()
|
||||
|
||||
# 清空表格和汇总信息
|
||||
self.report_table.setRowCount(0)
|
||||
self.update_summary([])
|
||||
|
||||
def on_query(self):
|
||||
"""查询按钮点击处理"""
|
||||
try:
|
||||
@ -87,6 +91,8 @@ class ReportDialog(ReportDialogUI):
|
||||
self.report_table.setRowCount(0)
|
||||
|
||||
if not data:
|
||||
# 如果没有数据,清空汇总信息
|
||||
self.update_summary([])
|
||||
return
|
||||
|
||||
# 添加数据行
|
||||
@ -100,6 +106,36 @@ class ReportDialog(ReportDialogUI):
|
||||
item = QTableWidgetItem(str(value))
|
||||
item.setTextAlignment(Qt.AlignCenter)
|
||||
self.report_table.setItem(row_idx, col_idx, item)
|
||||
|
||||
# 更新汇总信息
|
||||
self.update_summary(data)
|
||||
|
||||
def update_summary(self, data):
|
||||
"""更新汇总信息
|
||||
|
||||
Args:
|
||||
data: 包含报表数据的列表
|
||||
"""
|
||||
if not data:
|
||||
# 重置汇总信息
|
||||
self.total_axes_value.setText("0")
|
||||
self.total_weight_value.setText("0.00 kg")
|
||||
self.record_count_value.setText("0")
|
||||
return
|
||||
|
||||
# 计算总轴数
|
||||
total_axes = sum(row.get("轴数", 0) for row in data)
|
||||
|
||||
# 计算总净重
|
||||
total_weight = sum(float(row.get("净重", 0)) for row in data)
|
||||
|
||||
# 计算记录数
|
||||
record_count = len(data)
|
||||
|
||||
# 更新显示
|
||||
self.total_axes_value.setText(str(total_axes))
|
||||
self.total_weight_value.setText(f"{total_weight:.2f} kg")
|
||||
self.record_count_value.setText(str(record_count))
|
||||
|
||||
def on_export(self):
|
||||
"""导出按钮点击处理"""
|
||||
|
||||
Loading…
Reference in New Issue
Block a user