# -*- coding: utf-8 -*- # @Author: Owl # @Date: 2025/10/10 14:33 # @Description: import json from app.common_worker import * from app.eva_common import * # 查询可用路口列表 def query_cross_list(params): nodeid = check_param(params, 'nodeid') if not nodeid: return json.dumps(make_common_res(1, '缺少nodeid, 请刷新后重试')) area_id = check_param(params, 'area_id') if not area_id: return json.dumps(make_common_res(2, '缺少area_id, 请刷新后重试')) userid = check_param(params, 'userid') if not userid: return json.dumps(make_common_res(3, '缺少userid, 请刷新后重试')) area_list = db_user.query_user_areas(userid) if not area_list or len(area_list) < 1: return json.dumps(make_common_res(4, '用户信息异常')) area_list = [int(row['area_id']) for row in area_list] if int(area_id) not in area_list: return json.dumps(make_common_res(5, '用户信息异常')) # 查询路口列表 cross_list = db_tmnet.query_cross_list_sql(nodeid, area_id) res = make_common_res(0, 'ok') res['data'] = cross_list return json.dumps(res, ensure_ascii=False) # 查询路口可用时段 def query_cross_usable_date(params): crossid = check_param(params, 'crossid') if not crossid: return json.dumps(make_common_res(1, '缺少crossid, 请刷新后重试')) nodeid = check_param(params, 'nodeid') if not nodeid: return json.dumps(make_common_res(2, '缺少nodeid, 请刷新后重试')) area_id = check_param(params, 'area_id') if not area_id: return json.dumps(make_common_res(3, '缺少area_id, 请刷新后重试')) userid = check_param(params, 'userid') if not userid: return json.dumps(make_common_res(4, '缺少userid, 请刷新后重试')) area_list = db_user.query_user_areas(userid) if not area_list or len(area_list) < 1: return json.dumps(make_common_res(5, '用户信息异常')) area_list = [int(row['area_id']) for row in area_list] if int(area_id) not in area_list: return json.dumps(make_common_res(6, '用户信息异常')) row_list = db_cross.query_cross_usable_date_sql(crossid, nodeid) date_list = [row['day'] for row in row_list] res = make_common_res(0, 'ok') res['data'] = date_list return json.dumps(res, ensure_ascii=False) # 获取路口延迟信息 def query_cross_delay_info(params): crossid = check_param(params, 'crossid') if not crossid: return json.dumps(make_common_res(1, '缺少crossid, 请刷新后重试')) nodeid = check_param(params, 'nodeid') if not nodeid: return json.dumps(make_common_res(2, '缺少nodeid, 请刷新后重试')) area_id = check_param(params, 'area_id') if not area_id: return json.dumps(make_common_res(3, '缺少area_id, 请刷新后重试')) userid = check_param(params, 'userid') if not userid: return json.dumps(make_common_res(4, '缺少userid, 请刷新后重试')) area_list = db_user.query_user_areas(userid) if not area_list or len(area_list) < 1: return json.dumps(make_common_res(5, '用户信息异常')) area_list = [int(row['area_id']) for row in area_list] if int(area_id) not in area_list: return json.dumps(make_common_res(6, '用户信息异常')) date_list = check_param(params, 'date_list') if not date_list or len(date_list) < 1: return json.dumps(make_common_res(7, '缺少日期参数,请最少选择一天作为查询日期')) query_type = check_param(params, 'query_type') if not query_type: query_type = 0 time_range = check_param(params, 'time_range') if not time_range: return json.dumps(make_common_res(8, '缺少时段范围,请选择时段范围')) 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 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, tp_end) avg_cross_delay_info = gen_avg_cross_delay_pb(cross_delay_data_list) if not avg_cross_delay_info: return json.dumps(make_common_res(9, '当前所选日期范围内该评测时段无可用数据')) cross_inroads = db_tmnet.query_cross_inroads(crossid, nodeid) inroad_static_info_dict = {item['roadid']: item for item in cross_inroads} # 路口静态信息及台账信息 cross_static_info, cross_ledger_info_dict = query_cross_ledger_info(crossid, nodeid, area_id, userid) roads_dir_dict = gen_road_dir_dict(cross_ledger_info_dict) # 路口指标数据概览 overview_res = gen_overview_index(avg_cross_delay_info, inroad_static_info_dict, nodeid, date_list, roads_dir_dict) # 路段及流向数据概览 road_flow_delay_infos = gen_road_delay_index(avg_cross_delay_info, roads_dir_dict) # 路段进出口方向分流比 road_flow_turn_rate = gen_flow_turn_rate_index(avg_cross_delay_info, roads_dir_dict) res = make_common_res(0, 'ok') res['data'] = { 'overview': overview_res, 'road_flow_delay_infos': road_flow_delay_infos, 'road_flow_turn_rate': road_flow_turn_rate, 'cross_static_info': cross_static_info, 'ledger_info': cross_ledger_info_dict } return json.dumps(res, ensure_ascii=False)