432 lines
23 KiB
Python
432 lines
23 KiB
Python
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"
|
||
}, |