From 549271b46249906a50fe3c34edcf61bc0c7de888 Mon Sep 17 00:00:00 2001 From: wangxu <1318272526@qq.com> Date: Mon, 3 Nov 2025 16:53:19 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E9=97=AE=E9=A2=98=E8=AF=8A?= =?UTF-8?q?=E6=96=AD=E8=81=94=E8=B0=83=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/eva_common.py | 49 ++++++++++++++++++++++++++++------------------- 1 file changed, 29 insertions(+), 20 deletions(-) diff --git a/app/eva_common.py b/app/eva_common.py index 10108db..694fba8 100644 --- a/app/eva_common.py +++ b/app/eva_common.py @@ -539,12 +539,17 @@ def gen_flow_turn_rate_index(avg_cross_delay_info, roads_dir_dict): l_rate, s_rate, r_rate = '-', '-', '-' out_l_rate, out_s_rate, out_r_rate = '-', '-', '-' in_flow_rate, out_flow_rate = '-', '-' + l_num, s_num, r_num = 0, 0, 0 + out_l_num, out_s_num, out_r_num = 0, 0, 0 if roadid != '-' and roadid in road_delay_dict.keys(): car_num = road_delay_dict[roadid].delay_info.car_num in_flow_rate = round(car_num / cross_sum_car_num, 2) if cross_out_sum_car_num != 0 else '-' l_rate = round(road_delay_dict[roadid].delay_info.turn_ratio_1 / car_num, 2) if car_num != 0 else '-' s_rate = round(road_delay_dict[roadid].delay_info.turn_ratio_0 / car_num, 2) if car_num != 0 else '-' r_rate = round(road_delay_dict[roadid].delay_info.turn_ratio_2 / car_num, 2) if car_num != 0 else '-' + l_num = road_delay_dict[roadid].delay_info.turn_ratio_1 + s_num = road_delay_dict[roadid].delay_info.turn_ratio_0 + r_num = road_delay_dict[roadid].delay_info.turn_ratio_2 out_road_id = roads_dir_dict[dir]['out'] if out_road_id != '-' and out_road_id in outroad_info_dict.keys(): out_car_num = outroad_info_dict[out_road_id].turn_info.car_num @@ -552,6 +557,7 @@ def gen_flow_turn_rate_index(avg_cross_delay_info, roads_dir_dict): out_l_rate = round(outroad_info_dict[out_road_id].turn_info.turn_ratio_1 / out_car_num, 2) if out_car_num != 0 else '-' out_s_rate = round(outroad_info_dict[out_road_id].turn_info.turn_ratio_0 / out_car_num, 2) if out_car_num != 0 else '-' out_r_rate = round(outroad_info_dict[out_road_id].turn_info.turn_ratio_2 / out_car_num, 2) if out_car_num != 0 else '-' + out_l_num, out_s_num, out_r_num = outroad_info_dict[out_road_id].turn_info.turn_ratio_1, outroad_info_dict[out_road_id].turn_info.turn_ratio_0, outroad_info_dict[out_road_id].turn_info.turn_ratio_2 road_flow_turn_rate[roadid] = { 'src_dir': dir, 'in_flow_rate': in_flow_rate, @@ -561,7 +567,13 @@ def gen_flow_turn_rate_index(avg_cross_delay_info, roads_dir_dict): 'r_rate': r_rate, 'out_l_rate': out_l_rate, 'out_s_rate': out_s_rate, - 'out_r_rate': out_r_rate + 'out_r_rate': out_r_rate, + 'l_num': l_num, + 's_num': s_num, + 'r_num': r_num, + 'out_l_num': out_l_num, + 'out_s_num': out_s_num, + 'out_r_num': out_r_num } tmp_dict = {v['src_dir']: k for k, v in road_flow_turn_rate.items()} sorted_tmp_dict = sort_dict_by_clockwise(tmp_dict) @@ -1022,10 +1034,12 @@ def gen_high_park_problems(road_delay_infos, roads_dir_dict, cross_phase): src_detail.append({ 'text': '车辆需要多次排队才能通过' }) - detail.append({ - 'src_dir': dir_str_dict[src_dir] + '进口', - 'child_detail': src_detail - }) + detail.append([ + { + 'src_dir': dir_str_dict[src_dir] + '进口', + 'child_detail': src_detail + } + ]) turn_type_str = '、'.join([int_turn_type2str[int(item.split(':')[0])] for item in err_src_dict[src_dir]]) src_suggestions.append( { @@ -1145,11 +1159,11 @@ def gen_cross_imbalance_problems(road_delay_infos, roads_dir_dict, cross_phase): { 'child_detail': [ { - 'src_dir': dir_str_dict[max_src] + '进口', + 'max_src_dir': dir_str_dict[max_src] + '进口', 'text': '的停车次数(' + str(round(max_stop_times_road.delay_info.stop_times, 2)) + ')与' }, { - 'src_dir': dir_str_dict[min_src] + '进口', + 'min_src_dir': dir_str_dict[min_src] + '进口', 'text': f"""的停车次数({str(round(max_stop_times_road.delay_info.stop_times, 2))})相差过大,两者之比为{int(round(max_stop_times_road.delay_info.stop_times, 2) / round(min_stop_times_road.delay_info.stop_times, 2) * 100)}%,分配的绿灯时长不匹配""" } ] @@ -1526,22 +1540,19 @@ def gen_inroad_num_problems(road_delay_infos, inroad_static_info_dict, roads_dir total_num = 1 for src_dir in err_src_dirs.keys(): err_road_dict = err_src_dirs[src_dir] - src_detail = [ - { - 'src_dir': dir_str_dict[src_dir] + '进口' - } - ] + src_detail = { + 'src_dir': dir_str_dict[src_dir] + '进口', + 'child_detail': [] + } for turn_type in err_road_dict: - src_detail.append({ - 'child_detail': [ + src_detail['child_detail'].append( { 'turn_type': turn_type['turn_type'], 'text': '分流转向比过大(' + str(int(round(turn_type['flow_rate'], 2) * 100)) + '%),但分配的转向车道占比不足(' + str(int(round(turn_type['lane_num_rate'], 2) * 100)) + '%),分配车道资源不匹配' } - ] - }) + ) detail.append( - src_detail + [src_detail] ) suggestions.append({ 'child_detail': [ @@ -1595,9 +1606,7 @@ def gen_in_out_lane_num_gap_problems(cross_ledger_info): for src_dir in err_src_dict.keys(): detail.append([ { - 'src_dir': dir_str_dict[src_dir] + '进口' - }, - { + 'src_dir': dir_str_dict[src_dir] + '进口', 'child_detail': [ { 'text': '进口道车道数(' + str(err_src_dict[src_dir]['in']) + ')比对向出口道车道数(' + str(err_src_dict[src_dir]['out']) + ')多,车辆冰岛减速可能会造成路口车辆积压'