修正接口故障时程序报错的问题

This commit is contained in:
xiongyi
2025-11-18 10:17:39 +08:00
parent 3a746eddb7
commit b40bc9e067
4 changed files with 157 additions and 82 deletions

View File

@ -24,6 +24,10 @@ class TaskService:
def process_not_pour_info(self):
"""处理未浇筑信息"""
artifact_list = self.api_client.get_not_pour_info()
# 如果API调用失败返回空列表而不是抛出异常
if artifact_list is None:
return [], [], [], self.half_volume
if not artifact_list:
return [], [], [], self.half_volume
@ -37,8 +41,12 @@ class TaskService:
# 处理当前任务
current_task = self._process_current_task(artifact_list[0])
# 如果获取任务信息失败,则返回空结果
if current_task is None:
return [], [], [], self.half_volume
# 根据F块情况处理任务
# 根据F块情况处理任务
task_result = self._handle_tasks_by_f_blocks(
f_block_count, f_positions, current_task,
f_blocks, total_f_volume, artifact_list
@ -69,6 +77,11 @@ class TaskService:
def _process_current_task(self, latest_artifact):
"""处理当前任务信息"""
task_data = self.api_client.get_task_info(latest_artifact["BetonTaskID"])
# 如果API调用失败返回None
if task_data is None:
return None
return {
"beton_task_id": latest_artifact["BetonTaskID"],
"beton_volume": latest_artifact["BetonVolume"],
@ -252,27 +265,31 @@ class TaskService:
if second_task:
task_data_second = self.api_client.get_task_info(second_task["BetonTaskID"])
send_list.append({
"beton_task_id": second_task["BetonTaskID"],
"beton_volume": volumes[0],
"artifact_id": second_task["ArtifactActionID"],
"block_number": second_task["BlockNumber"],
"beton_grade": task_data_second["BetonGrade"],
"mix_id": task_data_second["MixID"],
"time": self.artifact_timestamps.get(second_task["ArtifactActionID"], datetime.now())
})
# 如果获取任务信息失败,跳过该任务
if task_data_second is not None:
send_list.append({
"beton_task_id": second_task["BetonTaskID"],
"beton_volume": volumes[0],
"artifact_id": second_task["ArtifactActionID"],
"block_number": second_task["BlockNumber"],
"beton_grade": task_data_second["BetonGrade"],
"mix_id": task_data_second["MixID"],
"time": self.artifact_timestamps.get(second_task["ArtifactActionID"], datetime.now())
})
if third_task:
task_data_third = self.api_client.get_task_info(third_task["BetonTaskID"])
send_list.append({
"beton_task_id": third_task["BetonTaskID"],
"beton_volume": volumes[1],
"artifact_id": third_task["ArtifactActionID"],
"block_number": third_task["BlockNumber"],
"beton_grade": task_data_third["BetonGrade"],
"mix_id": task_data_third["MixID"],
"time": self.artifact_timestamps.get(third_task["ArtifactActionID"], datetime.now())
})
# 如果获取任务信息失败,跳过该任务
if task_data_third is not None:
send_list.append({
"beton_task_id": third_task["BetonTaskID"],
"beton_volume": volumes[1],
"artifact_id": third_task["ArtifactActionID"],
"block_number": third_task["BlockNumber"],
"beton_grade": task_data_third["BetonGrade"],
"mix_id": task_data_third["MixID"],
"time": self.artifact_timestamps.get(third_task["ArtifactActionID"], datetime.now())
})
def _append_additional_tasks_for_single_f(self, send_list, artifact_list, f_positions):
"""为单个F块情况添加额外任务"""
@ -281,30 +298,34 @@ class TaskService:
if second_task:
task_data_second = self.api_client.get_task_info(second_task["BetonTaskID"])
volume = (third_task["BetonVolume"] if third_task else 0) if f_positions != [2] else (
second_task["BetonVolume"] + self.half_volume[1])
send_list.append({
"beton_task_id": second_task["BetonTaskID"],
"beton_volume": volume,
"artifact_id": second_task["ArtifactActionID"],
"block_number": second_task["BlockNumber"],
"beton_grade": task_data_second["BetonGrade"],
"mix_id": task_data_second["MixID"],
"time": self.artifact_timestamps.get(second_task["ArtifactActionID"], datetime.now())
})
# 如果获取任务信息失败,跳过该任务
if task_data_second is not None:
volume = (third_task["BetonVolume"] if third_task else 0) if f_positions != [2] else (
second_task["BetonVolume"] + self.half_volume[1])
send_list.append({
"beton_task_id": second_task["BetonTaskID"],
"beton_volume": volume,
"artifact_id": second_task["ArtifactActionID"],
"block_number": second_task["BlockNumber"],
"beton_grade": task_data_second["BetonGrade"],
"mix_id": task_data_second["MixID"],
"time": self.artifact_timestamps.get(second_task["ArtifactActionID"], datetime.now())
})
if third_task:
task_data_third = self.api_client.get_task_info(third_task["BetonTaskID"])
volume = third_task["BetonVolume"] if f_positions in [[1], [0]] else 0
send_list.append({
"beton_task_id": third_task["BetonTaskID"],
"beton_volume": volume,
"artifact_id": third_task["ArtifactActionID"],
"block_number": third_task["BlockNumber"],
"beton_grade": task_data_third["BetonGrade"],
"mix_id": task_data_third["MixID"],
"time": self.artifact_timestamps.get(third_task["ArtifactActionID"], datetime.now())
})
# 如果获取任务信息失败,跳过该任务
if task_data_third is not None:
volume = third_task["BetonVolume"] if f_positions in [[1], [0]] else 0
send_list.append({
"beton_task_id": third_task["BetonTaskID"],
"beton_volume": volume,
"artifact_id": third_task["ArtifactActionID"],
"block_number": third_task["BlockNumber"],
"beton_grade": task_data_third["BetonGrade"],
"mix_id": task_data_third["MixID"],
"time": self.artifact_timestamps.get(third_task["ArtifactActionID"], datetime.now())
})
def _update_artifact_timestamps(self, send_list):
"""更新artifact时间戳"""
@ -431,4 +452,3 @@ class TaskService:
except Exception as e:
print(f"发送状态更新到另一台电脑时出错: {e}")
print(f"原计划更新自定义数据表状态: ERP ID={erp_id}, 状态={status}")