Files
Feeding_control_system/temp.py

432 lines
23 KiB
Python
Raw Permalink Normal View History

2025-11-12 14:01:26 +08:00
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,
2025-11-12 14:01:26 +08:00
"ArtifactIDVice1": "Q00001AD",
"ProduceRingNumber": 1,
"MouldCode": "SHR2B3-9",
"SkeletonID": "QR1B2000048A",
"RingTypeCode": "R22",
"SizeSpecification": "6900*1500",
"BuriedDepth": "中埋",
"BlockNumber": "F",
"HoleRingMarking": "",
"GroutingPipeMarking": "",
"PolypropyleneFiberMarking": "",
"BetonVolume": 0.6,
2025-11-12 14:01:26 +08:00
"BetonTaskID": "20251020-01"
},