From 021dbd83bcd770f0e21e9b129e11ba6c1aff4065 Mon Sep 17 00:00:00 2001 From: wangxu <1318272526@qq.com> Date: Fri, 26 Dec 2025 15:25:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=AF=BC=E5=87=BA=E6=8C=87?= =?UTF-8?q?=E5=AE=9A=E6=97=A5=E6=9C=9F=E5=90=88=E5=B9=B6=E5=90=8E=E7=9A=84?= =?UTF-8?q?=E8=B7=AF=E5=8F=A3=E5=BB=B6=E8=AF=AF=E6=95=B0=E6=8D=AE=E5=88=97?= =?UTF-8?q?=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/cross_eva_views.py | 5 +++ app/cross_evaluate_worker.py | 84 ++++++++++++++++++++++++++++++++++++ 2 files changed, 89 insertions(+) diff --git a/app/cross_eva_views.py b/app/cross_eva_views.py index 6e85982..80321ef 100644 --- a/app/cross_eva_views.py +++ b/app/cross_eva_views.py @@ -91,6 +91,11 @@ def explode_cross_problem_detail_api(): return explode_cross_problem_detail(dict(request.args)) +@app.route('/api/explode_cross_info_merge', methods=['GET']) +def explode_cross_info_merge_api(): + return explode_cross_problem_detail_merge(dict(request.args)) + + from app.user_views import * from app.views_task import * from app.views_workstation import * diff --git a/app/cross_evaluate_worker.py b/app/cross_evaluate_worker.py index 3367a8c..7d0227d 100644 --- a/app/cross_evaluate_worker.py +++ b/app/cross_evaluate_worker.py @@ -498,3 +498,87 @@ def explode_cross_problem_detail(params): return json.dumps(clean_dict_nan(res, '-'), ensure_ascii=False) +def explode_cross_problem_detail_merge(params): + nodeid = check_param(params, 'nodeid') + if not nodeid: + return json.dumps(make_common_res(2, '缺少城市信息, 请刷新后重试')) + area_id = check_param(params, 'area_id') + if not area_id: + return json.dumps(make_common_res(3, '缺少辖区信息, 请刷新后重试')) + time_range = check_param(params, 'time_range') + if not time_range: + return json.dumps(make_common_res(4, '缺少时间范围信息, 请刷新后重试')) + start_date = check_param(params, 'start_date') + if not start_date: + return json.dumps(make_common_res(5, '缺少开始时间, 请选择开始时间')) + end_date = check_param(params, 'end_date') + if not end_date: + return json.dumps(make_common_res(6, '缺少结束时间, 请选择结束时间')) + excel = check_param(params, 'excel') + if not excel: + excel = 0 + excel = int(excel) + + routing_crosses = db_tmnet.query_routing_crosses(nodeid, area_id) + routing_crosses_dict = {item['crossid']: item for item in routing_crosses} + cross_roads_dir_dict = gen_crossids_roads_dir_dict_by_mysql([item['crossid'] for item in routing_crosses], nodeid) + for crossid in routing_crosses_dict.keys(): + routing_crosses_dict[crossid]['roads_dir_dict'] = cross_roads_dir_dict[crossid] + + tp_start = 't' + str(int(str(time_range.split('-')[0]).split(':')[0]) * 100 + int(str(time_range.split('-')[0]).split(':')[1])) + tp_end = int(str(time_range.split('-')[1]).split(':')[0]) * 100 + int(str(time_range.split('-')[1]).split(':')[1]) + + date_list = generate_date_range(start_date, end_date) + all_cross_data = [] + for crossid in routing_crosses_dict.keys(): + days_data = db_cross.query_cross_delay_info(crossid, nodeid, date_list, tp_start) + avg_delay = gen_avg_cross_delay_pb(days_data, '1,2,3,4,5,6,7') + cross_info = { + 'cross_id': crossid, + 'cross_name': routing_crosses_dict[crossid]['name'], + 'weekday': '-', + 'time_range': time_range, + 'day': str(start_date) + '-' + str(end_date), + 'service_level': calc_service_level(avg_delay.delay_info.delay_time, avg_delay.delay_info.stop_times) if avg_delay and avg_delay.delay_info.car_num >= 10 else '-', + 'stop_times': round(avg_delay.delay_info.stop_times, 2) if avg_delay and avg_delay.delay_info.car_num >= 10 else '-', + 'high_park_percent': avg_delay.delay_info.high_park_percent if avg_delay and avg_delay.delay_info.car_num >= 10 else '-', + 'park_time': avg_delay.delay_info.park_time if avg_delay and avg_delay.delay_info.car_num >= 10 else '-', + 'delay_time': avg_delay.delay_info.delay_time if avg_delay and avg_delay.delay_info.car_num >= 10 else '-', + 'speed': round(avg_delay.delay_info.speed / 100, 2) if avg_delay and avg_delay.delay_info.car_num >= 10 else '-', + 'move_speed': round(avg_delay.delay_info.move_speed / 100, 2) if avg_delay and avg_delay.delay_info.car_num >= 10 else '-', + 'relative_flow_rate': 0, + 'flow': avg_delay.delay_info.car_num if avg_delay else 0, + 'jam_index': round(avg_delay.delay_info.jam_index, 2) if avg_delay and avg_delay.delay_info.car_num >= 10 else '-', + 'imbalance_index': round(avg_delay.delay_info.imbalance_index, 2) if avg_delay and avg_delay.delay_info.car_num >= 10 else '-', + 'service_level_color': 0, + 'stop_times_color': 0, + 'high_park_percent_color': 0, + 'park_time_color': 0, + 'delay_time_color': 0, + 'speed_color': 0, + 'move_speed_color': 0, + 'relative_flow_rate_color': 0, + 'flow_color': 0, + 'jam_index_color': 0, + 'imbalance_index_color': 0, + 'stop_times_rate': 0, + 'high_park_percent_rate': 0, + 'park_time_rate': 0, + 'delay_time_rate': 0, + 'speed_rate': 0, + 'move_speed_rate': 0, + 'relative_flow_rate_rate': 0, + 'flow_rate': 0, + 'jam_index_rate': 0, + 'imbalance_index_rate': 0, + } + all_cross_data.append(cross_info) + if excel == 1: + return export_excel(all_cross_data) + res = make_common_res(0, 'ok') + res['data'] = all_cross_data + return json.dumps(clean_dict_nan(res, '-'), ensure_ascii=False) + + + +