优化巡检页面查询逻辑
This commit is contained in:
parent
5e0fe98325
commit
9d53994f65
|
|
@ -44,6 +44,9 @@ def query_compare_data(params):
|
|||
time_range = check_param(params, 'time_range')
|
||||
if not time_range:
|
||||
return json.dumps(make_common_res(8, '缺少时段范围,请选择时段范围'))
|
||||
weekdays = check_param(params, 'weekdays')
|
||||
if not weekdays:
|
||||
weekdays = '1,2,3,4,5,6,7'
|
||||
export = 1 if check_param(params, 'export') and params['export'] == 1 else 0
|
||||
tp_start = 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])
|
||||
|
|
@ -54,11 +57,11 @@ def query_compare_data(params):
|
|||
elif query_type == 2:
|
||||
tp_start = 'h' + str(tp_start)
|
||||
cross_delay_data_list = db_cross.query_cross_delay_info(crossid, nodeid, date_list, tp_start)
|
||||
avg_cross_delay_info = gen_avg_cross_delay_pb(cross_delay_data_list)
|
||||
avg_cross_delay_info = gen_avg_cross_delay_pb(cross_delay_data_list, weekdays)
|
||||
if not avg_cross_delay_info:
|
||||
return json.dumps(make_common_res(9, '当前所选日期范围内该评测时段无可用数据'))
|
||||
comp_cross_delay_data_list = db_cross.query_cross_delay_info(crossid, nodeid, compare_date_list, tp_start)
|
||||
avg_comp_cross_delay_info = gen_avg_cross_delay_pb(comp_cross_delay_data_list)
|
||||
avg_comp_cross_delay_info = gen_avg_cross_delay_pb(comp_cross_delay_data_list, weekdays)
|
||||
if not avg_comp_cross_delay_info:
|
||||
return json.dumps(make_common_res(10, '当前所选对比日期范围内该评测时段无可用数据'))
|
||||
cross_inroads = db_tmnet.query_cross_inroads(crossid, nodeid)
|
||||
|
|
|
|||
|
|
@ -118,6 +118,9 @@ def query_cross_delay_info_controller(params):
|
|||
time_range = check_param(params, 'time_range')
|
||||
if not time_range:
|
||||
return json.dumps(make_common_res(8, '缺少时段范围,请选择时段范围'))
|
||||
weekdays = check_param(params, 'weekdays')
|
||||
if not weekdays:
|
||||
weekdays = '1,2,3,4,5,6,7'
|
||||
tp_start = 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])
|
||||
# if tp_end == 0:
|
||||
|
|
@ -127,7 +130,7 @@ def query_cross_delay_info_controller(params):
|
|||
elif query_type == 2:
|
||||
tp_start = 'h' + str(tp_start)
|
||||
cross_delay_data_list = db_cross.query_cross_delay_info(crossid, nodeid, date_list, tp_start)
|
||||
avg_cross_delay_info = gen_avg_cross_delay_pb(cross_delay_data_list)
|
||||
avg_cross_delay_info = gen_avg_cross_delay_pb(cross_delay_data_list, weekdays)
|
||||
if not avg_cross_delay_info:
|
||||
return json.dumps(make_common_res(9, '当前所选日期范围内该评测时段无可用数据'))
|
||||
cross_inroads = db_tmnet.query_cross_inroads(crossid, nodeid)
|
||||
|
|
@ -193,13 +196,16 @@ def query_cross_problems(params):
|
|||
time_range = check_param(params, 'time_range')
|
||||
if not time_range:
|
||||
return json.dumps(make_common_res(8, '缺少时段范围,请选择时段范围'))
|
||||
weekdays = check_param(params, 'weekdays')
|
||||
if not weekdays:
|
||||
weekdays = '1,2,3,4,5,6,7'
|
||||
tp_start = int(str(time_range.split('-')[0]).split(':')[0]) * 100 + int(str(time_range.split('-')[0]).split(':')[1])
|
||||
if query_type == 1:
|
||||
tp_start = 't' + str(tp_start)
|
||||
elif query_type == 2:
|
||||
tp_start = 'h' + str(tp_start)
|
||||
cross_delay_data_list = db_cross.query_cross_delay_info(crossid, nodeid, date_list, tp_start)
|
||||
avg_cross_delay_info = gen_avg_cross_delay_pb(cross_delay_data_list)
|
||||
avg_cross_delay_info = gen_avg_cross_delay_pb(cross_delay_data_list, weekdays)
|
||||
if not avg_cross_delay_info:
|
||||
return json.dumps(make_common_res(9, '当前所选日期范围内该评测时段无可用数据'))
|
||||
cross_inroads = db_tmnet.query_cross_inroads(crossid, nodeid)
|
||||
|
|
@ -215,7 +221,7 @@ def query_cross_problems(params):
|
|||
cross_phase, err = QueryCrossRunningPhase(int(nodeid), [crossid], [str(item) for item in date_list], time_range)
|
||||
if err or not cross_phase or cross_phase.code != 0:
|
||||
logging.warning("路口未录入配时方案")
|
||||
problems = gen_cross_problems(crossid, nodeid, area_id, time_range, str(tp_start).replace('h', '').replace('t', ''), date_list, avg_cross_delay_info, roads_dir_dict, inroad_static_info_dict, cross_phase, is_peak, cross_ledger_info)
|
||||
problems = gen_cross_problems(crossid, nodeid, area_id, time_range, str(tp_start).replace('h', '').replace('t', ''), date_list, avg_cross_delay_info, roads_dir_dict, inroad_static_info_dict, cross_phase, is_peak, cross_ledger_info, weekdays)
|
||||
res = make_common_res(0, 'ok')
|
||||
res['data'] = problems
|
||||
return json.dumps(res, ensure_ascii=False)
|
||||
|
|
@ -247,7 +253,10 @@ def query_cross_index_trend_controller(params):
|
|||
time_range = check_param(params, 'time_range')
|
||||
if not time_range:
|
||||
return json.dumps(make_common_res(8, '缺少时段范围,请选择时段范围'))
|
||||
query_type= check_param(params, 'query_type')
|
||||
weekdays = check_param(params, 'weekdays')
|
||||
if not weekdays:
|
||||
weekdays = '1,2,3,4,5,6,7'
|
||||
query_type = check_param(params, 'query_type')
|
||||
if not query_type:
|
||||
query_type = 0
|
||||
tp_start = int(str(time_range.split('-')[0]).split(':')[0]) * 100 + int(str(time_range.split('-')[0]).split(':')[1])
|
||||
|
|
@ -273,7 +282,7 @@ def query_cross_index_trend_controller(params):
|
|||
hours_data_list = []
|
||||
for tp in ('h0', 'h100', 'h200', 'h300', 'h400', 'h500', 'h600', 'h700', 'h800', 'h900', 'h1000', 'h1100', 'h1200', 'h1300', 'h1400', 'h1500', 'h1600', 'h1700', 'h1800', 'h1900', 'h2000', 'h2100', 'h2200', 'h2300'):
|
||||
hour_data = db_cross.query_cross_delay_info(crossid, nodeid, date_list, tp)
|
||||
hour_cross_delay_info = gen_avg_cross_delay_pb(hour_data)
|
||||
hour_cross_delay_info = gen_avg_cross_delay_pb(hour_data, weekdays)
|
||||
hour_tp_end = int(tp.replace('h', '')) + 100
|
||||
hours_data_list.append({
|
||||
'day': str(date_list[0]) + '-' + str(date_list[-1]),
|
||||
|
|
@ -294,7 +303,7 @@ def query_cross_index_trend_controller(params):
|
|||
ten_week_datas = []
|
||||
for week_dates in ten_weeks_date_list:
|
||||
weeks_data = db_cross.query_cross_delay_info(crossid, nodeid, week_dates, tp_start)
|
||||
week_cross_delay_info = gen_avg_cross_delay_pb(weeks_data)
|
||||
week_cross_delay_info = gen_avg_cross_delay_pb(weeks_data, weekdays)
|
||||
ten_week_datas.append({
|
||||
'day': week_dates[0] + '-' + week_dates[-1],
|
||||
'tp_start': tp_start,
|
||||
|
|
|
|||
|
|
@ -204,7 +204,7 @@ def query_cross_tp_data_trend(params):
|
|||
data_list = []
|
||||
for week_dates in date_list:
|
||||
week_data = db_cross.query_cross_delay_info(crossid, nodeid, week_dates, tp_start)
|
||||
week_cross_delay_info = gen_avg_cross_delay_pb(week_data)
|
||||
week_cross_delay_info = gen_avg_cross_delay_pb(week_data, weekdays)
|
||||
data_list.append({
|
||||
'day': week_dates[0] + '-' + week_dates[-1],
|
||||
'tp_start': tp_start,
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ int_cross_model2str = {
|
|||
}
|
||||
|
||||
|
||||
def gen_avg_cross_delay_pb(cross_delay_data_list):
|
||||
def gen_avg_cross_delay_pb(cross_delay_data_list, weekdays):
|
||||
"""
|
||||
路口评价指标数据聚合
|
||||
:param cross_delay_data_list:
|
||||
|
|
@ -55,6 +55,8 @@ def gen_avg_cross_delay_pb(cross_delay_data_list):
|
|||
"""
|
||||
cross_delay_pb_list = []
|
||||
for item in cross_delay_data_list:
|
||||
if str(datetime.strptime(str(item['day']), '%Y%m%d').weekday() + 1) not in weekdays:
|
||||
continue
|
||||
item_delay_pb = pb.xl_cross_delayinfo_t()
|
||||
item_delay_pb.ParseFromString(item['data'])
|
||||
cross_delay_pb_list.append(item_delay_pb)
|
||||
|
|
@ -1226,10 +1228,10 @@ def parse_data2pb(data_list):
|
|||
|
||||
|
||||
# 生成路口诊断问题
|
||||
def gen_cross_problems(crossid, nodeid, area_id, time_range, start_hm, date_list, avg_cross_delay_info, roads_dir_dict, inroad_static_info_dict, cross_phase, is_peak, cross_ledger_info):
|
||||
def gen_cross_problems(crossid, nodeid, area_id, time_range, start_hm, date_list, avg_cross_delay_info, roads_dir_dict, inroad_static_info_dict, cross_phase, is_peak, cross_ledger_info, weekdays):
|
||||
# 运行效率、均衡调控、配时方案、路口渠化
|
||||
operating_efficiency_problems = gen_operating_efficiency_problems(avg_cross_delay_info, roads_dir_dict, cross_phase, is_peak)
|
||||
balanced_control_problems = gen_balanced_control_problems(crossid, nodeid, date_list, avg_cross_delay_info, roads_dir_dict, inroad_static_info_dict, cross_phase)
|
||||
balanced_control_problems = gen_balanced_control_problems(crossid, nodeid, date_list, avg_cross_delay_info, roads_dir_dict, inroad_static_info_dict, cross_phase, weekdays)
|
||||
phase_problems = gen_phase_problems(nodeid, area_id, crossid, time_range, date_list, min(date_list), max(date_list), start_hm)
|
||||
cross_channelized_problems = gen_cross_channelized_problems(avg_cross_delay_info, roads_dir_dict, inroad_static_info_dict, cross_ledger_info, time_range)
|
||||
problems = {
|
||||
|
|
@ -1377,11 +1379,11 @@ def gen_high_stop_time_problems(avg_cross_delay_info, is_peak):
|
|||
|
||||
|
||||
# 均衡调控
|
||||
def gen_balanced_control_problems(crossid, nodeid, date_list, avg_cross_delay_info, roads_dir_dict, inroad_static_info_dict, cross_phase):
|
||||
def gen_balanced_control_problems(crossid, nodeid, date_list, avg_cross_delay_info, roads_dir_dict, inroad_static_info_dict, cross_phase, weekdays):
|
||||
road_delay_infos = avg_cross_delay_info.inroad_delay_infos
|
||||
cross_imbalance_detail, cross_imbalance_suggestions, cross_imbalance_total_num = gen_cross_imbalance_problems(road_delay_infos, roads_dir_dict, cross_phase)
|
||||
turn_imbalance_detail, turn_imbalance_suggestions, turn_imbalance_total_num = gen_turn_imbalance_problems(road_delay_infos, roads_dir_dict, inroad_static_info_dict, cross_phase)
|
||||
cross_tide_problems, cross_tide_suggestions, cross_tide_total_num = gen_cross_tide_problems(crossid, nodeid, date_list, roads_dir_dict)
|
||||
cross_tide_problems, cross_tide_suggestions, cross_tide_total_num = gen_cross_tide_problems(crossid, nodeid, date_list, roads_dir_dict, weekdays)
|
||||
balanced_control_problems = {
|
||||
'item': '均衡调控',
|
||||
'values': [],
|
||||
|
|
@ -1571,15 +1573,15 @@ def gen_turn_imbalance_problems(road_delay_infos, roads_dir_dict, inroad_static_
|
|||
|
||||
|
||||
# 均衡调控-路口潮汐问题诊断
|
||||
def gen_cross_tide_problems(crossid, nodeid, date_list, roads_dir_dict):
|
||||
def gen_cross_tide_problems(crossid, nodeid, date_list, roads_dir_dict, weekdays):
|
||||
detail = []
|
||||
suggestions, total_num = [], 0
|
||||
am_tp_start, am_tp_end = 't700', '900'
|
||||
pm_tp_start, pm_tp_end = 't1700', '1900'
|
||||
am_cross_delay_data_list = db_cross.query_cross_delay_info(crossid, nodeid, date_list, am_tp_start)
|
||||
pm_cross_delay_data_list = db_cross.query_cross_delay_info(crossid, nodeid, date_list, pm_tp_start)
|
||||
am_avg_cross_delay_info = gen_avg_cross_delay_pb(am_cross_delay_data_list)
|
||||
pm_avg_cross_delay_info = gen_avg_cross_delay_pb(pm_cross_delay_data_list)
|
||||
am_avg_cross_delay_info = gen_avg_cross_delay_pb(am_cross_delay_data_list, weekdays)
|
||||
pm_avg_cross_delay_info = gen_avg_cross_delay_pb(pm_cross_delay_data_list, weekdays)
|
||||
# 构建对向进口道对
|
||||
subtend_road_pair = gen_subtend_road_pair(roads_dir_dict)
|
||||
road_src_dict = {v['in']: k for k, v in roads_dir_dict.items()}
|
||||
|
|
|
|||
|
|
@ -54,10 +54,10 @@ g_redisinfo = {
|
|||
}
|
||||
|
||||
g_user_db = {
|
||||
'host': '82.157.173.20',
|
||||
'host': '120.53.125.169',
|
||||
'port': 3306,
|
||||
'user': 'root',
|
||||
'password': 'pmenJIn7EaK40oThn~~',
|
||||
'password': 'pmenJIn7EaK40oThn~~~',
|
||||
'db': 'user'
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -820,12 +820,13 @@ def gen_high_stop_times_problems(multi_park_crosses, routing_crosses, special_ti
|
|||
weekdays = parse_wd_bitmap(item.cross_delay.tp.weekday)
|
||||
weekdays_str = gen_week_str({'weekday': parse_wd_bitmap(item.cross_delay.tp.weekday)})
|
||||
tp_type = item.cross_delay.tp.type
|
||||
flow_num = len(item.target_flows)
|
||||
flow_num = 0
|
||||
dir_flow_dict = {}
|
||||
for flow in item.target_flows:
|
||||
inroadid = flow.inroadid
|
||||
if inroadid not in road_dir:
|
||||
continue
|
||||
flow_num += 1
|
||||
src_dir = road_dir[inroadid]
|
||||
if src_dir not in dir_flow_dict:
|
||||
dir_flow_dict[src_dir] = [int_turn_type2str[flow.turn_type]]
|
||||
|
|
|
|||
Loading…
Reference in New Issue