add(派单任务刷新)、modify(派单任务和管片任务详情界面)
This commit is contained in:
@ -26,6 +26,7 @@ from .widgets.segment_details_dialog import SegmentDetailsDialog
|
||||
from .widgets.dispatch_details_dialog import DispatchDetailsDialog
|
||||
|
||||
from busisness.models import ArtifactInfoModel
|
||||
from busisness.models import PDRecordModel
|
||||
|
||||
|
||||
class MainWindow(QWidget):
|
||||
@ -35,17 +36,12 @@ class MainWindow(QWidget):
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self.initWindow()
|
||||
# 保存管片任务信息的字典 task1: ArtifactInfoModel1.... (用于显示管片任务详情)
|
||||
self.artifact_dict = {}
|
||||
# 当前点击/选中的 管片任务详情对应的任务名(task1\task2\task3) (用于刷新选中的管片任务详情)
|
||||
self.current_selected_segment_detail_name = None
|
||||
self.init_business_attributes() # 初始化业务属性
|
||||
self.createSubWidgets() # 创建子部件
|
||||
self.initSubWidgets() # 初始化子部件
|
||||
self.setupLayout() # 设置布局
|
||||
self.connectSignalToSlot()
|
||||
|
||||
|
||||
|
||||
# 安装事件过滤器,处理计划方量的 QLineEdit的失去焦点事件
|
||||
self.installEventFilter(self)
|
||||
|
||||
@ -103,6 +99,16 @@ class MainWindow(QWidget):
|
||||
|
||||
self.update_background()
|
||||
|
||||
def init_business_attributes(self):
|
||||
# 保存管片任务信息的字典 task1: ArtifactInfoModel1.... (用于显示管片任务详情)
|
||||
self.artifact_dict = {}
|
||||
# 当前点击/选中的 管片任务详情对应的任务名(task1\task2\task3) (用于刷新选中的管片任务详情)
|
||||
self.current_selected_segment_detail_name = None
|
||||
|
||||
# 保存派单任务信息的字典 task1: PDRecordModel1.... (用于显示派单任务详情)
|
||||
self.dispatch_dict = {}
|
||||
# 当前点击/选中的 派单任务详情对应的任务名(task1\task2\task3) (用于刷新选中的派单任务详情)
|
||||
self.current_selected_dispatch_detail_name = None
|
||||
|
||||
def createSubWidgets(self):
|
||||
"""创建所有子部件实例"""
|
||||
@ -157,44 +163,54 @@ class MainWindow(QWidget):
|
||||
return "--:--"
|
||||
|
||||
def _init_segment_tasks(self):
|
||||
"""从数据库中读取管片任务数据并更新到UI"""
|
||||
"""初始化管片任务, 从数据库中读取管片任务数据并更新到UI"""
|
||||
try:
|
||||
from busisness.blls import ArtifactBll
|
||||
artifact_dal = ArtifactBll()
|
||||
artifacts = artifact_dal.get_artifact_task() # 获取管片任务数据
|
||||
|
||||
# 遍历数据并更新UI
|
||||
for i, artifact in enumerate(artifacts, 1):
|
||||
if artifact.MouldCode: # 更新模具号
|
||||
self.segment_task_widget.set_task_id(f"task{i}", artifact.MouldCode)
|
||||
if artifact.BetonVolume: # 更新方量
|
||||
self.segment_task_widget.set_task_volume(f"task{i}", artifact.BetonVolume)
|
||||
if artifact.BeginTime: # 更新时间 (管片任务的开始时间)
|
||||
# print("artifact.BeginTime: ", artifact.BeginTime)
|
||||
self.segment_task_widget.set_task_time(f"task{i}", self.convert_to_ampm(artifact.BeginTime))
|
||||
self.SetSegmentTaskDetails(f"task{i}", artifact) # 设置管片任务详情信息
|
||||
# 更新管片任务
|
||||
self.update_segment_tasks(artifacts)
|
||||
except Exception as e:
|
||||
print(f"更新管片任务数据失败: {e}")
|
||||
|
||||
def update_segment_tasks(self, artifact_list:List[ArtifactInfoModel]):
|
||||
# 更新管片任务相关的信息
|
||||
# 遍历数据并更新UI (包括左侧的管片任务 以及 管片任务详情)
|
||||
for index, artifact in enumerate(artifact_list, 1):
|
||||
if artifact.MouldCode: # 更新模具号
|
||||
self.segment_task_widget.set_task_id(f"task{index}", artifact.MouldCode)
|
||||
if artifact.BetonVolume: # 更新浇筑方量
|
||||
self.segment_task_widget.set_task_volume(f"task{index}", artifact.BetonVolume)
|
||||
if artifact.BeginTime: # 更新时间 (管片任务的开始时间)
|
||||
# print("artifact.BeginTime: ", artifact.BeginTime)
|
||||
self.segment_task_widget.set_task_time(f"task{index}", self.convert_to_ampm(artifact.BeginTime))
|
||||
self.SetSegmentTaskDetails(f"task{index}", artifact) # 设置管片任务详情信息
|
||||
|
||||
def _init_dispatch_tasks(self):
|
||||
"""从数据库中读取派单任务数据并更新到UI"""
|
||||
"""初始化派单任务, 从数据库中读取派单任务数据并更新到UI"""
|
||||
try:
|
||||
from busisness.blls import PDRecordBll
|
||||
pdrecord_dal = PDRecordBll()
|
||||
pdrecords = pdrecord_dal.get_PD_record() # 获取派单任务数据
|
||||
|
||||
# 遍历数据并更新UI
|
||||
for i, record in enumerate(pdrecords, 1):
|
||||
if record.MouldCode: # 更新模具号
|
||||
self.dispatch_task_widget.set_task_id(f"task{i}", record.MouldCode)
|
||||
if record.BetonVolume: # 更新方量
|
||||
self.dispatch_task_widget.set_task_volume(f"task{i}", record.BetonVolume)
|
||||
if record.CreateTime: # 更新时间 (派单任务的创建时间)
|
||||
self.dispatch_task_widget.set_task_time(f"task{i}", self.convert_to_ampm(record.CreateTime))
|
||||
|
||||
# 更新派单任务
|
||||
self.update_dispatch_tasks(pdrecords)
|
||||
except Exception as e:
|
||||
print(f"更新派单任务数据失败: {e}")
|
||||
|
||||
def update_dispatch_tasks(self, pdrecord_list:List[PDRecordModel]):
|
||||
# 更新派单任务相关的信息
|
||||
# 遍历数据并更新UI
|
||||
for index, record in enumerate(pdrecord_list, 1):
|
||||
if record.MouldCode: # 更新模具号
|
||||
self.dispatch_task_widget.set_task_id(f"task{index}", record.MouldCode)
|
||||
if record.BetonVolume: # 更新方量(派单方量[最终计算出来的派单方量])
|
||||
self.dispatch_task_widget.set_task_volume(f"task{index}", record.FBetonVolume)
|
||||
if record.CreateTime: # 更新时间 (派单任务的创建时间)
|
||||
self.dispatch_task_widget.set_task_time(f"task{index}", self.convert_to_ampm(record.CreateTime))
|
||||
self.SetPDRecordTaskDetails(f"task{index}", record)
|
||||
|
||||
def setupLayout(self):
|
||||
"""设置垂直布局,从上到下排列部件"""
|
||||
main_layout = QVBoxLayout(self) # 主布局:垂直布局
|
||||
@ -323,21 +339,28 @@ class MainWindow(QWidget):
|
||||
|
||||
def handleDispatchTaskDetails(self, dispatch_task_name:str):
|
||||
# 派单任务名 task1、task2、task3 (分别对应第一条派单任务、 第二条派单任务...)
|
||||
print("main_window: handleDispatchTaskDetails", dispatch_task_name)
|
||||
# print("main_window: handleDispatchTaskDetails", dispatch_task_name)
|
||||
|
||||
# 显示派单任务详情对话框
|
||||
dispatch_details_dialog = DispatchDetailsDialog(dispatch_task_name, self)
|
||||
|
||||
if not hasattr(self, "dispatch_details_dialog"):
|
||||
self.dispatch_details_dialog = DispatchDetailsDialog(dispatch_task_name, self)
|
||||
pd_record:PDRecordModel = self.dispatch_dict.get(dispatch_task_name)
|
||||
|
||||
# 这里可以设置对话框显示的内容 如 set_segment_id
|
||||
# dispatch_details_dialog.set_segment_id("9999999999")
|
||||
# 设置派单任务详情中的方量的值
|
||||
current_volume = self.dispatch_task_widget.get_task_volume(dispatch_task_name)
|
||||
dispatch_details_dialog.set_row_value(4, str(current_volume)) # 派单方量的值的行号为4,第五行
|
||||
# current_volume = self.dispatch_task_widget.get_task_volume(dispatch_task_name)
|
||||
# self.dispatch_details_dialog.set_row_value(4, str(current_volume)) # 派单方量的值的行号为4,第五行
|
||||
|
||||
# 更新派单任务详情按钮弹窗的显示
|
||||
self.updateDispatchTaskDetailsDialog(pd_record)
|
||||
|
||||
# 派单任务详情页面中确定修改了派单任务的方量
|
||||
# 备注:褚工说管片任务和派单任务中的方量都只有一位小数,料斗上的方量显示两位 2025/11/8
|
||||
dispatch_details_dialog.confirm_modify_volume.connect(self.handleModifyDispatchTaskVolume)
|
||||
dispatch_details_dialog.show()
|
||||
self.dispatch_details_dialog.confirm_modify_volume.connect(self.handleModifyDispatchTaskVolume)
|
||||
self.dispatch_details_dialog.show()
|
||||
# 更新选中的派单任务详情对应的任务名
|
||||
self.current_selected_dispatch_detail_name = dispatch_task_name
|
||||
|
||||
def handleModifyDispatchTaskVolume(self, dispatch_task_name:str, modifyed_volume:float):
|
||||
"""派单任务详情页面中, 修改了派单任务的方量"""
|
||||
@ -345,6 +368,33 @@ class MainWindow(QWidget):
|
||||
self.dispatch_task_widget.set_task_volume(dispatch_task_name, modifyed_volume)
|
||||
|
||||
# 其他操作,可能需要修改数据库的派单任务方量
|
||||
|
||||
def updateDispatchTaskDetailsDialog(self, pd_record:PDRecordModel):
|
||||
if pd_record and hasattr(self, "dispatch_details_dialog"):
|
||||
self.dispatch_details_dialog.set_segment_id(pd_record.ArtifactActionID) # 管片ID
|
||||
self.dispatch_details_dialog.set_row_value(0, pd_record.CreateTime.split('.')[0] if pd_record.CreateTime else None) # 创建时间 (去掉毫秒)
|
||||
self.dispatch_details_dialog.set_row_value(1, pd_record.OptTime.split('.')[0] if pd_record.OptTime else None) # 派单时间 (去掉毫秒)
|
||||
self.dispatch_details_dialog.set_row_value(2, pd_record.TaskID) # 任务编号
|
||||
self.dispatch_details_dialog.set_row_value(3, pd_record.ProduceMixID) # 生产配合比编号(配比编号)
|
||||
self.dispatch_details_dialog.set_row_value(4, pd_record.FBetonVolume) # 派单方量(最终计算出来的实际派单方量)
|
||||
|
||||
# 派单状态 (1计划中2已下发0未知),默认1
|
||||
status_mapping = {
|
||||
1: "计划中",
|
||||
2: "已下发",
|
||||
0: None # 未知
|
||||
}
|
||||
status_text = status_mapping.get(pd_record.Status)
|
||||
self.dispatch_details_dialog.set_row_value(5, status_text)
|
||||
|
||||
# 派单模式(1自动派单 2手动派单 0未知 )Mode: int = 0
|
||||
mode_mapping = {
|
||||
1: "自动派单",
|
||||
2: "手动派单",
|
||||
0: None # 未知
|
||||
}
|
||||
mode_text = mode_mapping.get(pd_record.Mode)
|
||||
self.dispatch_details_dialog.set_row_value(6, mode_text)
|
||||
|
||||
|
||||
# 更新 派单任务widget的坐标
|
||||
@ -426,8 +476,17 @@ class MainWindow(QWidget):
|
||||
# self.artifact_dict 管片信息的字典
|
||||
def SetSegmentTaskDetails(self, task_name:str, artifact_info:ArtifactInfoModel):
|
||||
self.artifact_dict[task_name] = artifact_info
|
||||
if task_name == self.current_selected_segment_detail_name:
|
||||
self.updateSegmentTaskDetailsDialog(artifact_info) # 刷新管片任务详情按钮弹窗
|
||||
if hasattr(self, "segment_details_dialog") and self.segment_details_dialog and self.segment_details_dialog.isVisible():
|
||||
if task_name == self.current_selected_segment_detail_name:
|
||||
self.updateSegmentTaskDetailsDialog(artifact_info) # 刷新管片任务详情按钮弹窗
|
||||
|
||||
# ======= 设置派单任务详情接口 ==========
|
||||
# self.dispatch_dict 派单信息的字典
|
||||
def SetPDRecordTaskDetails(self, task_name:str, pd_record:PDRecordModel):
|
||||
self.dispatch_dict[task_name] = pd_record
|
||||
if hasattr(self, "dispatch_details_dialog") and self.dispatch_details_dialog and self.dispatch_details_dialog.isVisible():
|
||||
if task_name == self.current_selected_dispatch_detail_name:
|
||||
self.updateDispatchTaskDetailsDialog(pd_record) # 刷新派单任务详情按钮弹窗
|
||||
|
||||
if __name__ == "__main__":
|
||||
import sys
|
||||
|
||||
Reference in New Issue
Block a user