Files
Feeding_control_system/temp.py
2025-11-13 16:50:50 +08:00

432 lines
23 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.

def get_all_not_pour_info(app_id): # 添加这一行声明
global task_before, half_volume, artifact_timestamps
headers = {"AppID": app_id}
response = requests.get(NOT_POUR_INFO_URL, headers=headers)
if response.status_code == 200:
data = response.json()
if data.get("Code") == 200:
artifact_list = data["Data"]
send_list = []
tasks = []
if not artifact_list:
return tasks
if task_before is not None:
# 这里可以处理上一条任务的逻辑
print(f"上一条任务: {task_before}")
# 记录F块位置
f_positions = get_f_block_positions(artifact_list)
# 统计F块数量和总方量
f_blocks = [artifact for artifact in artifact_list if artifact.get("BlockNumber") == "F"]
f_block_count = len(f_blocks)
total_f_volume = sum(artifact["BetonVolume"] for artifact in f_blocks)
# 处理最上面一条
latest_artifact = artifact_list[0]
beton_task_id = latest_artifact["BetonTaskID"]
beton_volume = latest_artifact["BetonVolume"]
artifact_id = latest_artifact["ArtifactActionID"]
block_number = latest_artifact.get("BlockNumber", "")
task_before = {
"beton_task_id": latest_artifact["BetonTaskID"],
"beton_volume": latest_artifact["BetonVolume"],
"artifact_id": latest_artifact["ArtifactActionID"],
"block_number": latest_artifact.get("BlockNumber", "")
}
task_data = get_task_info(app_id, beton_task_id)
if f_block_count == 1 and f_positions == [2]:
f_volume = f_blocks.get("BetonVolume")
half_volume[0] = round(total_f_volume / 2, 2)
half_volume[1] = f_volume - half_volume[0]
# 如果有多个F块先派当前任务再创建补方任务
if f_block_count > 2:
adjusted_volume = total_f_volume - half_volume[0]
tasks.append({
"beton_task_id": beton_task_id,
"beton_volume": adjusted_volume,
"artifact_id": artifact_id,
"block_number": block_number,
})
send_list.append({
"beton_task_id": beton_task_id,
"beton_volume": adjusted_volume,
"artifact_id": artifact_id,
"block_number": block_number,
"beton_grade": task_data["BetonGrade"],
"mix_id": task_data["MixID"],
"time": artifact_timestamps.get(artifact_id, datetime.now())
})
dispatch_list_second = artifact_list[1]
task_data_second = get_task_info(app_id, dispatch_list_second["BetonTaskID"])
dispatch_list_third = artifact_list[2]
task_data_third = get_task_info(app_id, dispatch_list_third["BetonTaskID"])
send_list.append({
"beton_task_id": dispatch_list_second["BetonTaskID"],
"beton_volume": 0,
"artifact_id": dispatch_list_second["ArtifactActionID"],
"block_number": dispatch_list_second["BlockNumber"],
"beton_grade": task_data_second["BetonGrade"],
"mix_id": task_data_second["MixID"],
"time": artifact_timestamps.get(dispatch_list_second["ArtifactActionID"], datetime.now())
})
send_list.append({
"beton_task_id": dispatch_list_third["BetonTaskID"],
"beton_volume": 0,
"artifact_id": dispatch_list_third["ArtifactActionID"],
"block_number": dispatch_list_third["BlockNumber"],
"beton_grade": task_data_third["BetonGrade"],
"mix_id": task_data_third["MixID"],
"time": artifact_timestamps.get(dispatch_list_third["ArtifactActionID"], datetime.now())
})
# 更新新出现的 artifact_id 的时间戳
current_artifact_ids = {item["artifact_id"] for item in send_list}
for artifact_id in current_artifact_ids:
if artifact_id not in artifact_timestamps:
artifact_timestamps[artifact_id] = datetime.now()
return tasks, artifact_list, send_list, half_volume
elif f_block_count == 2 and f_positions == [0, 1] and task_before.block_number == "F":
adjusted_volume = 0
tasks.append({
"beton_task_id": beton_task_id,
"beton_volume": adjusted_volume,
"artifact_id": artifact_id,
"block_number": "补方",
})
send_list.append({
"beton_task_id": beton_task_id,
"beton_volume": adjusted_volume,
"artifact_id": artifact_id,
"block_number": block_number,
"beton_grade": task_data["BetonGrade"],
"mix_id": task_data["MixID"],
"time": artifact_timestamps.get(artifact_id, datetime.now())
})
dispatch_list_second = artifact_list[1]
task_data_second = get_task_info(app_id, dispatch_list_second["BetonTaskID"])
dispatch_list_third = artifact_list[2]
task_data_third = get_task_info(app_id, dispatch_list_third["BetonTaskID"])
send_list.append({
"beton_task_id": dispatch_list_second["BetonTaskID"],
"beton_volume": adjusted_volume,
"artifact_id": dispatch_list_second["ArtifactActionID"],
"block_number": dispatch_list_second["BlockNumber"],
"beton_grade": task_data_second["BetonGrade"],
"mix_id": task_data_second["MixID"],
"time": artifact_timestamps.get(dispatch_list_second["ArtifactActionID"], datetime.now())
})
send_list.append({
"beton_task_id": dispatch_list_third["BetonTaskID"],
"beton_volume": dispatch_list_third["BetonVolume"],
"artifact_id": dispatch_list_third["ArtifactActionID"],
"block_number": dispatch_list_third["BlockNumber"],
"beton_grade": task_data_third["BetonGrade"],
"mix_id": task_data_third["MixID"],
"time": artifact_timestamps.get(dispatch_list_third["ArtifactActionID"], datetime.now())
})
# 更新新出现的 artifact_id 的时间戳
current_artifact_ids = {item["artifact_id"] for item in send_list}
for artifact_id in current_artifact_ids:
if artifact_id not in artifact_timestamps:
artifact_timestamps[artifact_id] = datetime.now()
return tasks, artifact_list, send_list, half_volume
elif f_block_count == 2 and f_positions == [1, 2]:
adjusted_volume = total_f_volume - half_volume[0]
tasks.append({
"beton_task_id": beton_task_id,
"beton_volume": beton_volume,
"artifact_id": artifact_id,
"block_number": block_number,
})
send_list.append({
"beton_task_id": beton_task_id,
"beton_volume": beton_volume,
"artifact_id": artifact_id,
"block_number": block_number,
"beton_grade": task_data["BetonGrade"],
"mix_id": task_data["MixID"],
"time": artifact_timestamps.get(artifact_id, datetime.now())
})
dispatch_list_second = artifact_list[1]
task_data_second = get_task_info(app_id, dispatch_list_second["BetonTaskID"])
dispatch_list_third = artifact_list[2]
task_data_third = get_task_info(app_id, dispatch_list_third["BetonTaskID"])
send_list.append({
"beton_task_id": dispatch_list_second["BetonTaskID"],
"beton_volume": adjusted_volume,
"artifact_id": dispatch_list_second["ArtifactActionID"],
"block_number": dispatch_list_second["BlockNumber"],
"beton_grade": task_data_second["BetonGrade"],
"mix_id": task_data_second["MixID"],
"time": artifact_timestamps.get(dispatch_list_second["ArtifactActionID"], datetime.now())
})
send_list.append({
"beton_task_id": dispatch_list_third["BetonTaskID"],
"beton_volume": 0,
"artifact_id": dispatch_list_third["ArtifactActionID"],
"block_number": dispatch_list_third["BlockNumber"],
"beton_grade": task_data_third["BetonGrade"],
"mix_id": task_data_third["MixID"],
"time": artifact_timestamps.get(dispatch_list_third["ArtifactActionID"], datetime.now())
})
# 更新新出现的 artifact_id 的时间戳
current_artifact_ids = {item["artifact_id"] for item in send_list}
for artifact_id in current_artifact_ids:
if artifact_id not in artifact_timestamps:
artifact_timestamps[artifact_id] = datetime.now()
return tasks, artifact_list, send_list, half_volume
elif f_block_count == 2 and f_positions == [0, 1] and task_before.block_number != "F":
adjusted_volume = total_f_volume - half_volume[0]
tasks.append({
"beton_task_id": beton_task_id,
"beton_volume": adjusted_volume,
"artifact_id": artifact_id,
"block_number": block_number,
})
send_list.append({
"beton_task_id": beton_task_id,
"beton_volume": adjusted_volume,
"artifact_id": artifact_id,
"block_number": block_number,
"beton_grade": task_data["BetonGrade"],
"mix_id": task_data["MixID"],
"time": artifact_timestamps.get(artifact_id, datetime.now())
})
dispatch_list_second = artifact_list[1]
task_data_second = get_task_info(app_id, dispatch_list_second["BetonTaskID"])
dispatch_list_third = artifact_list[2]
task_data_third = get_task_info(app_id, dispatch_list_third["BetonTaskID"])
send_list.append({
"beton_task_id": dispatch_list_second["BetonTaskID"],
"beton_volume": 0,
"artifact_id": dispatch_list_second["ArtifactActionID"],
"block_number": dispatch_list_second["BlockNumber"],
"beton_grade": task_data_second["BetonGrade"],
"mix_id": task_data_second["MixID"],
"time": artifact_timestamps.get(dispatch_list_second["ArtifactActionID"], datetime.now())
})
send_list.append({
"beton_task_id": dispatch_list_third["BetonTaskID"],
"beton_volume": dispatch_list_third["BetonVolume"],
"artifact_id": dispatch_list_third["ArtifactActionID"],
"block_number": dispatch_list_third["BlockNumber"],
"beton_grade": task_data_third["BetonGrade"],
"mix_id": task_data_third["MixID"],
"time": artifact_timestamps.get(dispatch_list_third["ArtifactActionID"], datetime.now())
})
# 更新新出现的 artifact_id 的时间戳
current_artifact_ids = {item["artifact_id"] for item in send_list}
for artifact_id in current_artifact_ids:
if artifact_id not in artifact_timestamps:
artifact_timestamps[artifact_id] = datetime.now()
return tasks, artifact_list, send_list, half_volume
elif f_block_count == 1 and f_positions == [2]:
adjusted_volume = beton_volume + half_volume[0]
tasks.append({
"beton_task_id": beton_task_id,
"beton_volume": adjusted_volume,
"artifact_id": artifact_id,
"block_number": block_number,
})
send_list.append({
"beton_task_id": beton_task_id,
"beton_volume": adjusted_volume,
"artifact_id": artifact_id,
"block_number": block_number,
"beton_grade": task_data["BetonGrade"],
"mix_id": task_data["MixID"],
"time": artifact_timestamps.get(artifact_id, datetime.now())
})
dispatch_list_second = artifact_list[1]
task_data_second = get_task_info(app_id, dispatch_list_second["BetonTaskID"])
dispatch_list_third = artifact_list[2]
task_data_third = get_task_info(app_id, dispatch_list_third["BetonTaskID"])
send_list.append({
"beton_task_id": dispatch_list_second["BetonTaskID"],
"beton_volume": beton_volume + half_volume[1],
"artifact_id": dispatch_list_second["ArtifactActionID"],
"block_number": dispatch_list_second["BlockNumber"],
"beton_grade": task_data_second["BetonGrade"],
"mix_id": task_data_second["MixID"],
"time": artifact_timestamps.get(dispatch_list_second["ArtifactActionID"], datetime.now())
})
send_list.append({
"beton_task_id": dispatch_list_third["BetonTaskID"],
"beton_volume": dispatch_list_third["BetonVolume"],
"artifact_id": dispatch_list_third["ArtifactActionID"],
"block_number": dispatch_list_third["BlockNumber"],
"beton_grade": task_data_third["BetonGrade"],
"mix_id": task_data_third["MixID"],
"time": artifact_timestamps.get(dispatch_list_third["ArtifactActionID"], datetime.now())
})
# 更新新出现的 artifact_id 的时间戳
current_artifact_ids = {item["artifact_id"] for item in send_list}
for artifact_id in current_artifact_ids:
if artifact_id not in artifact_timestamps:
artifact_timestamps[artifact_id] = datetime.now()
return tasks, artifact_list, send_list, half_volume
elif f_block_count == 1 and f_positions == [1]:
adjusted_volume = beton_volume + half_volume[1]
tasks.append({
"beton_task_id": beton_task_id,
"beton_volume": adjusted_volume,
"artifact_id": artifact_id,
"block_number": block_number,
})
send_list.append({
"beton_task_id": beton_task_id,
"beton_volume": adjusted_volume,
"artifact_id": artifact_id,
"block_number": block_number,
"beton_grade": task_data["BetonGrade"],
"mix_id": task_data["MixID"],
"time": artifact_timestamps.get(artifact_id, datetime.now())
})
dispatch_list_second = artifact_list[1]
task_data_second = get_task_info(app_id, dispatch_list_second["BetonTaskID"])
dispatch_list_third = artifact_list[2]
task_data_third = get_task_info(app_id, dispatch_list_third["BetonTaskID"])
send_list.append({
"beton_task_id": dispatch_list_second["BetonTaskID"],
"beton_volume": dispatch_list_third["BetonVolume"],
"artifact_id": dispatch_list_second["ArtifactActionID"],
"block_number": dispatch_list_second["BlockNumber"],
"beton_grade": task_data_second["BetonGrade"],
"mix_id": task_data_second["MixID"],
"time": artifact_timestamps.get(dispatch_list_second["ArtifactActionID"], datetime.now())
})
send_list.append({
"beton_task_id": dispatch_list_third["BetonTaskID"],
"beton_volume": dispatch_list_third["BetonVolume"],
"artifact_id": dispatch_list_third["ArtifactActionID"],
"block_number": dispatch_list_third["BlockNumber"],
"beton_grade": task_data_third["BetonGrade"],
"mix_id": task_data_third["MixID"],
"time": artifact_timestamps.get(dispatch_list_third["ArtifactActionID"], datetime.now())
})
# 更新新出现的 artifact_id 的时间戳
current_artifact_ids = {item["artifact_id"] for item in send_list}
for artifact_id in current_artifact_ids:
if artifact_id not in artifact_timestamps:
artifact_timestamps[artifact_id] = datetime.now()
return tasks, artifact_list, send_list, half_volume
elif f_block_count == 1 and f_positions == [0]:
adjusted_volume = 0
tasks.append({
"beton_task_id": beton_task_id,
"beton_volume": adjusted_volume,
"artifact_id": artifact_id,
"block_number": "补方",
})
send_list.append({
"beton_task_id": beton_task_id,
"beton_volume": adjusted_volume,
"artifact_id": artifact_id,
"block_number": block_number,
"beton_grade": task_data["BetonGrade"],
"mix_id": task_data["MixID"],
"time": artifact_timestamps.get(artifact_id, datetime.now())
})
dispatch_list_second = artifact_list[1]
task_data_second = get_task_info(app_id, dispatch_list_second["BetonTaskID"])
dispatch_list_third = artifact_list[2]
task_data_third = get_task_info(app_id, dispatch_list_third["BetonTaskID"])
send_list.append({
"beton_task_id": dispatch_list_second["BetonTaskID"],
"beton_volume": dispatch_list_third["BetonVolume"],
"artifact_id": dispatch_list_second["ArtifactActionID"],
"block_number": dispatch_list_second["BlockNumber"],
"beton_grade": task_data_second["BetonGrade"],
"mix_id": task_data_second["MixID"],
"time": artifact_timestamps.get(dispatch_list_second["ArtifactActionID"], datetime.now())
})
send_list.append({
"beton_task_id": dispatch_list_third["BetonTaskID"],
"beton_volume": dispatch_list_third["BetonVolume"],
"artifact_id": dispatch_list_third["ArtifactActionID"],
"block_number": dispatch_list_third["BlockNumber"],
"beton_grade": task_data_third["BetonGrade"],
"mix_id": task_data_third["MixID"],
"time": artifact_timestamps.get(dispatch_list_third["ArtifactActionID"], datetime.now())
})
# 更新新出现的 artifact_id 的时间戳
current_artifact_ids = {item["artifact_id"] for item in send_list}
for artifact_id in current_artifact_ids:
if artifact_id not in artifact_timestamps:
artifact_timestamps[artifact_id] = datetime.now()
return tasks, artifact_list, send_list, half_volume
elif f_block_count == 0:
adjusted_volume = beton_volume
tasks.append({
"beton_task_id": beton_task_id,
"beton_volume": adjusted_volume,
"artifact_id": artifact_id,
"block_number": block_number,
})
send_list.append({
"beton_task_id": beton_task_id,
"beton_volume": adjusted_volume,
"artifact_id": artifact_id,
"block_number": block_number,
"beton_grade": task_data["BetonGrade"],
"mix_id": task_data["MixID"],
"time": artifact_timestamps.get(artifact_id, datetime.now())
})
dispatch_list_second = artifact_list[1]
task_data_second = get_task_info(app_id, dispatch_list_second["BetonTaskID"])
dispatch_list_third = artifact_list[2]
task_data_third = get_task_info(app_id, dispatch_list_third["BetonTaskID"])
send_list.append({
"beton_task_id": dispatch_list_second["BetonTaskID"],
"beton_volume": dispatch_list_third["BetonVolume"],
"artifact_id": dispatch_list_second["ArtifactActionID"],
"block_number": dispatch_list_second["BlockNumber"],
"beton_grade": task_data_second["BetonGrade"],
"mix_id": task_data_second["MixID"],
"time": artifact_timestamps.get(dispatch_list_second["ArtifactActionID"], datetime.now())
})
send_list.append({
"beton_task_id": dispatch_list_third["BetonTaskID"],
"beton_volume": dispatch_list_third["BetonVolume"],
"artifact_id": dispatch_list_third["ArtifactActionID"],
"block_number": dispatch_list_third["BlockNumber"],
"beton_grade": task_data_third["BetonGrade"],
"mix_id": task_data_third["MixID"],
"time": artifact_timestamps.get(dispatch_list_third["ArtifactActionID"], datetime.now())
})
# 更新新出现的 artifact_id 的时间戳
current_artifact_ids = {item["artifact_id"] for item in send_list}
for artifact_id in current_artifact_ids:
if artifact_id not in artifact_timestamps:
artifact_timestamps[artifact_id] = datetime.now()
return tasks, artifact_list, send_list, half_volume
else:
print("报警")
raise Exception("获取未浇筑信息失败")
{
"ArtifactID": "QR1B32000153AD",
"ArtifactActionID": 346482967298140,
"ArtifactIDVice1": "Q00001AD",
"ProduceRingNumber": 1,
"MouldCode": "SHR2B3-9",
"SkeletonID": "QR1B2000048A",
"RingTypeCode": "R22",
"SizeSpecification": "6900*1500",
"BuriedDepth": "中埋",
"BlockNumber": "F",
"HoleRingMarking": "",
"GroutingPipeMarking": "",
"PolypropyleneFiberMarking": "",
"BetonVolume": 0.6,
"BetonTaskID": "20251020-01"
},