feat:添加删除包装记录功能
This commit is contained in:
parent
f4b11085aa
commit
fe1df2e3e2
@ -1111,3 +1111,31 @@ class InspectionDAO:
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
logging.error(f"获取炉号信息失败: {str(e)}")
|
logging.error(f"获取炉号信息失败: {str(e)}")
|
||||||
return None
|
return None
|
||||||
|
def delete_package_record(self, order_id, gc_note, tray_id):
|
||||||
|
"""删除包装记录
|
||||||
|
|
||||||
|
Args:
|
||||||
|
order_id: 订单号
|
||||||
|
gc_note: 工程号
|
||||||
|
tray_id: 托盘号
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
bool: 删除是否成功
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
sql = """
|
||||||
|
DELETE FROM wsbz_inspection_pack_data
|
||||||
|
WHERE order_id = ? AND gc_note = ? AND tray_id = ?
|
||||||
|
"""
|
||||||
|
params = (order_id, gc_note, tray_id)
|
||||||
|
|
||||||
|
with SQLUtils('sqlite', database='db/jtDB.db') as db:
|
||||||
|
db.begin_transaction()
|
||||||
|
db.execute_update(sql, params)
|
||||||
|
db.commit_transaction()
|
||||||
|
|
||||||
|
logging.info(f"已删除包装记录: 订单号={order_id}, 工程号={gc_note}, 托盘号={tray_id}")
|
||||||
|
return True
|
||||||
|
except Exception as e:
|
||||||
|
logging.error(f"删除包装记录失败: {str(e)}")
|
||||||
|
return False
|
||||||
BIN
db/jtDB.db
BIN
db/jtDB.db
Binary file not shown.
@ -295,6 +295,7 @@ class MainWindow(MainWindowUI):
|
|||||||
self.stop_button.clicked.connect(self.handle_stop)
|
self.stop_button.clicked.connect(self.handle_stop)
|
||||||
self.delete_row_button.clicked.connect(self.handle_delete_row)
|
self.delete_row_button.clicked.connect(self.handle_delete_row)
|
||||||
|
|
||||||
|
|
||||||
# 连接托盘完成按钮事件
|
# 连接托盘完成按钮事件
|
||||||
self.tray_complete_button.clicked.connect(self.handle_tray_complete)
|
self.tray_complete_button.clicked.connect(self.handle_tray_complete)
|
||||||
|
|
||||||
@ -3756,7 +3757,33 @@ class MainWindow(MainWindowUI):
|
|||||||
self.process_layout.insertWidget(0, title_container)
|
self.process_layout.insertWidget(0, title_container)
|
||||||
|
|
||||||
def handle_delete_row(self):
|
def handle_delete_row(self):
|
||||||
"""处理删除按钮点击事件,删除选中的微丝产线表格行"""
|
"""处理删除按钮点击事件,智能判断删除微丝产线或包装记录表格行"""
|
||||||
|
try:
|
||||||
|
# 判断当前焦点在哪个表格
|
||||||
|
focused_widget = self.focusWidget()
|
||||||
|
|
||||||
|
if focused_widget == self.process_table or self.process_table.hasFocus():
|
||||||
|
# 删除微丝产线表格行
|
||||||
|
self._delete_process_table_rows()
|
||||||
|
elif focused_widget == self.record_table or self.record_table.hasFocus():
|
||||||
|
# 删除包装记录表格行
|
||||||
|
self._delete_package_table_rows()
|
||||||
|
else:
|
||||||
|
# 如果都没有焦点,检查哪个表格有选中行
|
||||||
|
if self.process_table.selectionModel().hasSelection():
|
||||||
|
self._delete_process_table_rows()
|
||||||
|
elif self.record_table.selectionModel().hasSelection():
|
||||||
|
self._delete_package_table_rows()
|
||||||
|
else:
|
||||||
|
QMessageBox.warning(self, "提示", "请先选择要删除的数据行")
|
||||||
|
return
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
logging.error(f"删除数据失败: {str(e)}")
|
||||||
|
QMessageBox.critical(self, "错误", f"删除数据失败: {str(e)}")
|
||||||
|
|
||||||
|
def _delete_process_table_rows(self):
|
||||||
|
"""删除微丝产线表格选中的行"""
|
||||||
try:
|
try:
|
||||||
# 获取当前选中的行
|
# 获取当前选中的行
|
||||||
selected_rows = self.process_table.selectionModel().selectedRows()
|
selected_rows = self.process_table.selectionModel().selectedRows()
|
||||||
@ -3766,14 +3793,14 @@ class MainWindow(MainWindowUI):
|
|||||||
if current_row >= 2: # 确保不是表头行
|
if current_row >= 2: # 确保不是表头行
|
||||||
selected_rows = [self.process_table.model().index(current_row, 0)]
|
selected_rows = [self.process_table.model().index(current_row, 0)]
|
||||||
else:
|
else:
|
||||||
QMessageBox.warning(self, "提示", "请先选择要删除的数据行")
|
QMessageBox.warning(self, "提示", "请先选择要删除的微丝产线数据行")
|
||||||
return
|
return
|
||||||
|
|
||||||
# 确认删除
|
# 确认删除
|
||||||
reply = QMessageBox.question(
|
reply = QMessageBox.question(
|
||||||
self,
|
self,
|
||||||
"确认删除",
|
"确认删除",
|
||||||
"确定要删除选中的数据吗?此操作不可恢复。",
|
"确定要删除选中的微丝产线数据吗?此操作不可恢复。",
|
||||||
QMessageBox.Yes | QMessageBox.No,
|
QMessageBox.Yes | QMessageBox.No,
|
||||||
QMessageBox.No
|
QMessageBox.No
|
||||||
)
|
)
|
||||||
@ -3810,17 +3837,112 @@ class MainWindow(MainWindowUI):
|
|||||||
|
|
||||||
# 从表格中删除行
|
# 从表格中删除行
|
||||||
self.process_table.removeRow(row)
|
self.process_table.removeRow(row)
|
||||||
logging.info(f"已从表格中删除第 {row} 行")
|
logging.info(f"已从微丝产线表格中删除第 {row} 行")
|
||||||
|
|
||||||
# 重新加载数据
|
# 重新加载数据
|
||||||
self._safe_load_data()
|
self._safe_load_data()
|
||||||
|
|
||||||
|
# 清除选中状态,防止误操作
|
||||||
|
self.process_table.clearSelection()
|
||||||
|
|
||||||
# 显示成功消息
|
# 显示成功消息
|
||||||
QMessageBox.information(self, "删除成功", "已成功删除选中的数据")
|
QMessageBox.information(self, "删除成功", "已成功删除选中的微丝产线数据")
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logging.error(f"删除数据失败: {str(e)}")
|
logging.error(f"删除微丝产线数据失败: {str(e)}")
|
||||||
QMessageBox.critical(self, "错误", f"删除数据失败: {str(e)}")
|
QMessageBox.critical(self, "错误", f"删除微丝产线数据失败: {str(e)}")
|
||||||
|
|
||||||
|
def _delete_package_table_rows(self):
|
||||||
|
"""删除包装记录表格选中的行"""
|
||||||
|
try:
|
||||||
|
# 获取当前选中的行
|
||||||
|
selected_rows = self.record_table.selectionModel().selectedRows()
|
||||||
|
if not selected_rows:
|
||||||
|
# 如果没有选中整行,则获取当前选中的单元格所在行
|
||||||
|
current_row = self.record_table.currentRow()
|
||||||
|
if current_row >= 0: # 包装记录表格没有表头行
|
||||||
|
selected_rows = [self.record_table.model().index(current_row, 0)]
|
||||||
|
else:
|
||||||
|
QMessageBox.warning(self, "提示", "请先选择要删除的包装记录行")
|
||||||
|
return
|
||||||
|
|
||||||
|
# 确认删除
|
||||||
|
reply = QMessageBox.question(
|
||||||
|
self,
|
||||||
|
"确认删除",
|
||||||
|
"确定要删除选中的包装记录吗?此操作不可恢复。",
|
||||||
|
QMessageBox.Yes | QMessageBox.No,
|
||||||
|
QMessageBox.No
|
||||||
|
)
|
||||||
|
|
||||||
|
if reply != QMessageBox.Yes:
|
||||||
|
return
|
||||||
|
|
||||||
|
# 从数据库中删除数据
|
||||||
|
from dao.inspection_dao import InspectionDAO
|
||||||
|
inspection_dao = InspectionDAO()
|
||||||
|
|
||||||
|
# 按行号降序排序,以便从后往前删除
|
||||||
|
rows_to_delete = sorted([index.row() for index in selected_rows], reverse=True)
|
||||||
|
|
||||||
|
for row in rows_to_delete:
|
||||||
|
if row < 0: # 跳过无效行
|
||||||
|
continue
|
||||||
|
|
||||||
|
# 获取订单号(第2列)
|
||||||
|
order_id_item = self.record_table.item(row, 1)
|
||||||
|
if not order_id_item:
|
||||||
|
logging.warning(f"第 {row} 行订单号为空,跳过删除")
|
||||||
|
continue
|
||||||
|
|
||||||
|
order_id = order_id_item.text().strip()
|
||||||
|
if not order_id:
|
||||||
|
logging.warning(f"第 {row} 行订单号为空,跳过删除")
|
||||||
|
continue
|
||||||
|
|
||||||
|
# 获取工程号(第3列)
|
||||||
|
gc_note_item = self.record_table.item(row, 2)
|
||||||
|
if not gc_note_item:
|
||||||
|
logging.warning(f"第 {row} 行工程号为空,跳过删除")
|
||||||
|
continue
|
||||||
|
|
||||||
|
gc_note = gc_note_item.text().strip()
|
||||||
|
if not gc_note:
|
||||||
|
logging.warning(f"第 {row} 行工程号为空,跳过删除")
|
||||||
|
continue
|
||||||
|
|
||||||
|
# 获取托盘号(第6列)
|
||||||
|
tray_id_item = self.record_table.item(row, 5)
|
||||||
|
if not tray_id_item:
|
||||||
|
logging.warning(f"第 {row} 行托盘号为空,跳过删除")
|
||||||
|
continue
|
||||||
|
|
||||||
|
tray_id = tray_id_item.text().strip()
|
||||||
|
if not tray_id:
|
||||||
|
logging.warning(f"第 {row} 行托盘号为空,跳过删除")
|
||||||
|
continue
|
||||||
|
|
||||||
|
# 从数据库中删除该包装记录
|
||||||
|
success = inspection_dao.delete_package_record(order_id, gc_note, tray_id)
|
||||||
|
if success:
|
||||||
|
logging.info(f"已从数据库中删除包装记录: 订单号={order_id}, 工程号={gc_note}, 托盘号={tray_id}")
|
||||||
|
else:
|
||||||
|
logging.warning(f"删除包装记录失败: 订单号={order_id}, 工程号={gc_note}, 托盘号={tray_id}")
|
||||||
|
continue
|
||||||
|
|
||||||
|
# 从表格中删除行
|
||||||
|
self.record_table.removeRow(row)
|
||||||
|
logging.info(f"已从包装记录表格中删除第 {row} 行")
|
||||||
|
|
||||||
|
# 重新加载包装记录
|
||||||
|
self.show_pack_item()
|
||||||
|
self.record_table.clearSelection()
|
||||||
|
# 显示成功消息
|
||||||
|
QMessageBox.information(self, "删除成功", "已成功删除选中的包装记录")
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
logging.error(f"删除包装记录失败: {str(e)}")
|
||||||
|
QMessageBox.critical(self, "错误", f"删除包装记录失败: {str(e)}")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user