增加excel导出
Signed-off-by: yinzijian <yinzijian@haomozhixing.onaliyun.com>
This commit is contained in:
parent
2903d39b0a
commit
48291896a6
|
|
@ -269,7 +269,7 @@ def find_job_info(key, value_list):
|
|||
return result
|
||||
|
||||
|
||||
def query_compare_data_export_excel(road_flow_delay_infos):
|
||||
def query_compare_data_export_excel(compared_inroad_delay_infos, cross_name,compare_date_list,date_list,time_range):
|
||||
wb = Workbook()
|
||||
sheet1 = wb.active
|
||||
sheet1.title = "调度计划表" # 给第一个 sheet 命名
|
||||
|
|
@ -285,32 +285,27 @@ def query_compare_data_export_excel(road_flow_delay_infos):
|
|||
{"range": "H1:I1", "value": "转向停车次数"},
|
||||
{"range": "H2", "value": "左转"},
|
||||
{"range": "I2", "value": "直行"},
|
||||
{"range": "J1", "value": "多次停车率"},
|
||||
# {"range": "K1:L1", "value": "转向多次停车率", "width": 20},
|
||||
# {"range": "M1", "value": "行程时间(s)"},
|
||||
# {"range": "N1:O1", "value": "延误时间(s)", "width": 20},
|
||||
# {"range": "P1:Q1", "value": "转向延误时间(s)"},
|
||||
# {"range": "L2", "value": "左转"},
|
||||
# {"range": "M2", "value": "直行"},
|
||||
# {"range": "N1:N2", "value": "平均速度(km/h)", "width": 20},
|
||||
# {"range": "O1:P1", "value": "转向平均速度(km/h)"},
|
||||
# {"range": "O2", "value": "左转"},
|
||||
# {"range": "P2", "value": "直行"},
|
||||
# {"range": "Q1:Q2", "value": "不停车速度(km/h)", "width": 20},
|
||||
# {"range": "R1:S1", "value": "转向不停车速度"},
|
||||
# {"range": "R2", "value": "左转"},
|
||||
# {"range": "S2", "value": "直行"},
|
||||
# {"range": "T1:T2", "value": "进口道流量占比","width": 20},
|
||||
# {"range": "U1:W1", "value": "分流转向占比"},
|
||||
# {"range": "U2", "value": "左转"},
|
||||
# {"range": "V2", "value": "直行"},
|
||||
# {"range": "W2", "value": "右转"},
|
||||
# {"range": "X1:X2", "value": "出口道流量占比","width": 20},
|
||||
# {"range": "Y1:AA1", "value": "汇入转向占比"},
|
||||
# {"range": "Y2", "value": "左转"},
|
||||
# {"range": "Z2", "value": "直行"},
|
||||
# {"range": "AA2", "value": "右转"},
|
||||
# {"range": "AB1:AB2", "value": "转向失衡系数","width": 20},
|
||||
{"range": "J1:J2", "value": "多次停车率", "width": 20},
|
||||
{"range": "K1:L1", "value": "转向多次停车率"},
|
||||
{"range": "K2", "value": "左转", "width": 10},
|
||||
{"range": "L2", "value": "直行", "width": 10},
|
||||
# {"range": "M1:M2", "value": "行程时间(s)", "width": 20},
|
||||
# {"range": "N1:O1", "value": "转向行程时间(s)"},
|
||||
# {"range": "N2", "value": "左转", "width": 10},
|
||||
# {"range": "O2", "value": "直行", "width": 10},
|
||||
{"range": "M1:M2", "value": "延误时间(s)", "width": 20},
|
||||
{"range": "N1:O1", "value": "转向延误时间(s)"},
|
||||
{"range": "N2", "value": "左转", "width": 10},
|
||||
{"range": "O2", "value": "直行", "width": 10},
|
||||
{"range": "P1:P2", "value": "平均速度(Km/h)", "width": 20},
|
||||
{"range": "Q1:R1", "value": "转向平均速度(Km/h)"},
|
||||
{"range": "Q2", "value": "左转", "width": 10},
|
||||
{"range": "R2", "value": "直行", "width": 10},
|
||||
{"range": "S1:S2", "value": "不停车速度(Km/h)", "width": 20},
|
||||
{"range": "T1:U1", "value": "转向不停车速度(KM/h)"},
|
||||
{"range": "T2", "value": "左转", "width": 15},
|
||||
{"range": "U2", "value": "直行", "width": 15},
|
||||
{"range": "V1:V2", "value": "转向失衡系数", "width": 20},
|
||||
]
|
||||
|
||||
for item_head in table_head:
|
||||
|
|
@ -321,73 +316,89 @@ def query_compare_data_export_excel(road_flow_delay_infos):
|
|||
if item_head.get('width'):
|
||||
sheet1.column_dimensions[cell[:-1]].width = item_head['width']
|
||||
|
||||
wb.save("test.xlsx")
|
||||
exit(0)
|
||||
src_dir_map = {}
|
||||
for road, item_delay_infos in road_flow_delay_infos.items():
|
||||
src_dir = item_delay_infos['src_dir']
|
||||
if src_dir not in src_dir_map:
|
||||
src_dir_map[src_dir] = []
|
||||
src_dir_map[src_dir].append(srcDir_toStr(item_delay_infos['src_dir']))
|
||||
src_dir_map[src_dir].append(item_delay_infos['service_level'])
|
||||
src_dir_map[src_dir].append(
|
||||
item_delay_infos['flow_delays'][1]['service_level'] if 1 in item_delay_infos['flow_delays'] else '-')
|
||||
src_dir_map[src_dir].append(
|
||||
item_delay_infos['flow_delays'][0]['service_level'] if 0 in item_delay_infos['flow_delays'] else '-')
|
||||
src_dir_map[src_dir].append(item_delay_infos['stop_times'])
|
||||
src_dir_map[src_dir].append(
|
||||
item_delay_infos['flow_delays'][1]['stop_times'] if 1 in item_delay_infos['flow_delays'] else '-')
|
||||
src_dir_map[src_dir].append(
|
||||
item_delay_infos['flow_delays'][0]['stop_times'] if 0 in item_delay_infos['flow_delays'] else '-')
|
||||
src_dir_map[src_dir].append(item_delay_infos['high_park_percent'])
|
||||
src_dir_map[src_dir].append(
|
||||
item_delay_infos['flow_delays'][1]['high_park_percent'] if 1 in item_delay_infos['flow_delays'] else '-')
|
||||
src_dir_map[src_dir].append(
|
||||
item_delay_infos['flow_delays'][0]['high_park_percent'] if 0 in item_delay_infos['flow_delays'] else '-')
|
||||
src_dir_map[src_dir].append(item_delay_infos['delay_time'])
|
||||
src_dir_map[src_dir].append(
|
||||
item_delay_infos['flow_delays'][1]['delay_time'] if 1 in item_delay_infos['flow_delays'] else '-')
|
||||
src_dir_map[src_dir].append(
|
||||
item_delay_infos['flow_delays'][0]['delay_time'] if 0 in item_delay_infos['flow_delays'] else '-')
|
||||
src_dir_map[src_dir].append(item_delay_infos['speed'])
|
||||
src_dir_map[src_dir].append(
|
||||
item_delay_infos['flow_delays'][1]['speed'] if 1 in item_delay_infos['flow_delays'] else '-')
|
||||
src_dir_map[src_dir].append(
|
||||
item_delay_infos['flow_delays'][0]['speed'] if 0 in item_delay_infos['flow_delays'] else '-')
|
||||
src_dir_map[src_dir].append(item_delay_infos['move_speed'])
|
||||
src_dir_map[src_dir].append(
|
||||
item_delay_infos['flow_delays'][1]['move_speed'] if 1 in item_delay_infos['flow_delays'] else '-')
|
||||
src_dir_map[src_dir].append(
|
||||
item_delay_infos['flow_delays'][0]['move_speed'] if 0 in item_delay_infos['flow_delays'] else '-')
|
||||
src_dir_map[src_dir].append(
|
||||
road_flow_turn_rate[road]['in_flow_rate'] if road in road_flow_turn_rate and road_flow_turn_rate[road][
|
||||
'in_flow_rate'] else '-')
|
||||
src_dir_map[src_dir].append(
|
||||
road_flow_turn_rate[road]['l_rate'] if road in road_flow_turn_rate and road_flow_turn_rate[road][
|
||||
'l_rate'] else '-')
|
||||
src_dir_map[src_dir].append(
|
||||
road_flow_turn_rate[road]['s_rate'] if road in road_flow_turn_rate and road_flow_turn_rate[road][
|
||||
's_rate'] else '-')
|
||||
src_dir_map[src_dir].append(
|
||||
road_flow_turn_rate[road]['r_rate'] if road in road_flow_turn_rate and road_flow_turn_rate[road][
|
||||
'r_rate'] else '-')
|
||||
src_dir_map[src_dir].append(
|
||||
road_flow_turn_rate[road]['out_flow_rate'] if road in road_flow_turn_rate and road_flow_turn_rate[road][
|
||||
'out_flow_rate'] else '-')
|
||||
src_dir_map[src_dir].append(
|
||||
road_flow_turn_rate[road]['out_l_rate'] if road in road_flow_turn_rate and road_flow_turn_rate[road][
|
||||
'out_l_rate'] else '-')
|
||||
src_dir_map[src_dir].append(
|
||||
road_flow_turn_rate[road]['out_s_rate'] if road in road_flow_turn_rate and road_flow_turn_rate[road][
|
||||
'out_s_rate'] else '-')
|
||||
src_dir_map[src_dir].append(
|
||||
road_flow_turn_rate[road]['out_r_rate'] if road in road_flow_turn_rate and road_flow_turn_rate[road][
|
||||
'out_r_rate'] else '-')
|
||||
src_dir_map[src_dir].append(item_delay_infos['imbalance_index'])
|
||||
src_dir_data = list(src_dir_map.values())
|
||||
for item_src_dir_data in src_dir_data:
|
||||
sheet1.append(item_src_dir_data)
|
||||
in_road_num = len(compared_inroad_delay_infos)
|
||||
sheet1.merge_cells(f"A3:A{in_road_num * 3 + 2}")
|
||||
sheet1["A3"] = cross_name
|
||||
sheet1["A3"].alignment = Alignment(horizontal='center', vertical='center', wrap_text=True)
|
||||
index = 3
|
||||
for road, road_value in compared_inroad_delay_infos.items():
|
||||
start_row = index
|
||||
middle_row = index + 1
|
||||
end_row = index + 2
|
||||
sheet1.merge_cells(f"B{start_row}:B{end_row}")
|
||||
sheet1[f"B{index}"] = srcDir_toStr(road_value['src_dir'])
|
||||
sheet1[f"B{index}"].alignment = Alignment(horizontal='center', vertical='center')
|
||||
index = end_row + 1
|
||||
sheet1[f"C{start_row}"] = "优化前"
|
||||
sheet1[f"D{start_row}"] = road_value['dir_data']['comp_data']['service_level']
|
||||
sheet1[f"E{start_row}"] = road_value['dir_data']['flow_delay_datas'][1]['comp_data']['service_level'] if road_value['dir_data']['flow_delay_datas'].get(1) else ''
|
||||
sheet1[f"F{start_row}"] = road_value['dir_data']['flow_delay_datas'][0]['comp_data']['service_level'] if road_value['dir_data']['flow_delay_datas'].get(0) else ''
|
||||
sheet1[f"G{start_row}"] = road_value['dir_data']['comp_data']['stop_times']
|
||||
sheet1[f"H{start_row}"] = road_value['dir_data']['flow_delay_datas'][1]['comp_data']['stop_times'] if road_value['dir_data']['flow_delay_datas'].get(1) else ''
|
||||
sheet1[f"I{start_row}"] = road_value['dir_data']['flow_delay_datas'][0]['comp_data']['stop_times'] if road_value['dir_data']['flow_delay_datas'].get(0) else ''
|
||||
sheet1[f"J{start_row}"] = road_value['dir_data']['comp_data']['high_park_percent']
|
||||
sheet1[f"K{start_row}"] = road_value['dir_data']['flow_delay_datas'][1]['comp_data']['high_park_percent'] if road_value['dir_data']['flow_delay_datas'].get(1) else ''
|
||||
sheet1[f"L{start_row}"] = road_value['dir_data']['flow_delay_datas'][0]['comp_data']['high_park_percent'] if road_value['dir_data']['flow_delay_datas'].get(0) else ''
|
||||
sheet1[f"M{start_row}"] = road_value['dir_data']['comp_data']['delay_time']
|
||||
sheet1[f"M{start_row}"] = road_value['dir_data']['flow_delay_datas'][1]['comp_data']['delay_time'] if road_value['dir_data']['flow_delay_datas'].get(1) else ''
|
||||
sheet1[f"N{start_row}"] = road_value['dir_data']['flow_delay_datas'][0]['comp_data']['delay_time'] if road_value['dir_data']['flow_delay_datas'].get(0) else ''
|
||||
sheet1[f"P{start_row}"] = road_value['dir_data']['comp_data']['speed']
|
||||
sheet1[f"Q{start_row}"] = road_value['dir_data']['flow_delay_datas'][1]['comp_data']['speed'] if road_value['dir_data']['flow_delay_datas'].get(1) else ''
|
||||
sheet1[f"R{start_row}"] = road_value['dir_data']['flow_delay_datas'][0]['comp_data']['speed'] if road_value['dir_data']['flow_delay_datas'].get(0) else ''
|
||||
sheet1[f"S{start_row}"] = road_value['dir_data']['comp_data']['move_speed']
|
||||
sheet1[f"T{start_row}"] = road_value['dir_data']['flow_delay_datas'][1]['comp_data']['move_speed'] if road_value['dir_data']['flow_delay_datas'].get(1) else ''
|
||||
sheet1[f"U{start_row}"] = road_value['dir_data']['flow_delay_datas'][0]['comp_data']['move_speed'] if road_value['dir_data']['flow_delay_datas'].get(0) else ''
|
||||
sheet1[f"V{start_row}"] = road_value['dir_data']['comp_data']['imbalance_index']
|
||||
|
||||
sheet1[f"C{middle_row}"] = "优化后"
|
||||
sheet1[f"D{middle_row}"] = road_value['dir_data']['item_data']['service_level']
|
||||
sheet1[f"E{middle_row}"] = road_value['dir_data']['flow_delay_datas'][1]['item_data']['service_level'] if road_value['dir_data']['flow_delay_datas'].get(1) else ''
|
||||
sheet1[f"F{middle_row}"] = road_value['dir_data']['flow_delay_datas'][0]['item_data']['service_level'] if road_value['dir_data']['flow_delay_datas'].get(0) else ''
|
||||
sheet1[f"G{middle_row}"] = road_value['dir_data']['item_data']['stop_times']
|
||||
sheet1[f"H{middle_row}"] = road_value['dir_data']['flow_delay_datas'][1]['item_data']['stop_times'] if road_value['dir_data']['flow_delay_datas'].get(1) else ''
|
||||
sheet1[f"I{middle_row}"] = road_value['dir_data']['flow_delay_datas'][0]['item_data']['stop_times'] if road_value['dir_data']['flow_delay_datas'].get(0) else ''
|
||||
sheet1[f"J{middle_row}"] = road_value['dir_data']['item_data']['high_park_percent']
|
||||
sheet1[f"K{middle_row}"] = road_value['dir_data']['flow_delay_datas'][1]['item_data']['high_park_percent'] if road_value['dir_data']['flow_delay_datas'].get(1) else ''
|
||||
sheet1[f"L{middle_row}"] = road_value['dir_data']['flow_delay_datas'][0]['item_data']['high_park_percent'] if road_value['dir_data']['flow_delay_datas'].get(0) else ''
|
||||
sheet1[f"M{middle_row}"] = road_value['dir_data']['item_data']['delay_time']
|
||||
sheet1[f"N{middle_row}"] = road_value['dir_data']['flow_delay_datas'][1]['item_data']['delay_time'] if road_value['dir_data']['flow_delay_datas'].get(1) else ''
|
||||
sheet1[f"O{middle_row}"] = road_value['dir_data']['flow_delay_datas'][0]['item_data']['delay_time'] if road_value['dir_data']['flow_delay_datas'].get(0) else ''
|
||||
sheet1[f"P{middle_row}"] = road_value['dir_data']['item_data']['speed']
|
||||
sheet1[f"Q{middle_row}"] = road_value['dir_data']['flow_delay_datas'][1]['item_data']['speed'] if road_value['dir_data']['flow_delay_datas'].get(1) else ''
|
||||
sheet1[f"R{middle_row}"] = road_value['dir_data']['flow_delay_datas'][0]['item_data']['speed'] if road_value['dir_data']['flow_delay_datas'].get(0) else ''
|
||||
sheet1[f"S{middle_row}"] = road_value['dir_data']['item_data']['move_speed']
|
||||
sheet1[f"T{middle_row}"] = road_value['dir_data']['flow_delay_datas'][1]['item_data']['move_speed'] if road_value['dir_data']['flow_delay_datas'].get(1) else ''
|
||||
sheet1[f"U{middle_row}"] = road_value['dir_data']['flow_delay_datas'][0]['item_data']['move_speed'] if road_value['dir_data']['flow_delay_datas'].get(0) else ''
|
||||
sheet1[f"V{middle_row}"] = road_value['dir_data']['item_data']['imbalance_index']
|
||||
|
||||
sheet1[f"C{end_row}"] = "变化量"
|
||||
sheet1[f"D{end_row}"] = road_value['dir_data']['diff_data']['service_level']
|
||||
sheet1[f"E{end_row}"] = road_value['dir_data']['flow_delay_datas'][1]['diff_data']['service_level'] if road_value['dir_data']['flow_delay_datas'].get(1) else ''
|
||||
sheet1[f"F{end_row}"] = road_value['dir_data']['flow_delay_datas'][0]['diff_data']['service_level'] if road_value['dir_data']['flow_delay_datas'].get(0) else ''
|
||||
sheet1[f"G{end_row}"] = road_value['dir_data']['diff_data']['stop_times']
|
||||
sheet1[f"H{end_row}"] = road_value['dir_data']['flow_delay_datas'][1]['diff_data']['stop_times'] if road_value['dir_data']['flow_delay_datas'].get(1) else ''
|
||||
sheet1[f"I{end_row}"] = road_value['dir_data']['flow_delay_datas'][0]['diff_data']['stop_times'] if road_value['dir_data']['flow_delay_datas'].get(0) else ''
|
||||
sheet1[f"J{end_row}"] = road_value['dir_data']['diff_data']['high_park_percent']
|
||||
sheet1[f"K{end_row}"] = road_value['dir_data']['flow_delay_datas'][1]['diff_data']['high_park_percent'] if road_value['dir_data']['flow_delay_datas'].get(1) else ''
|
||||
sheet1[f"L{end_row}"] = road_value['dir_data']['flow_delay_datas'][0]['diff_data']['high_park_percent'] if road_value['dir_data']['flow_delay_datas'].get(0) else ''
|
||||
sheet1[f"M{end_row}"] = road_value['dir_data']['diff_data']['delay_time']
|
||||
sheet1[f"N{end_row}"] = road_value['dir_data']['flow_delay_datas'][1]['diff_data']['delay_time'] if road_value['dir_data']['flow_delay_datas'].get(1) else ''
|
||||
sheet1[f"O{end_row}"] = road_value['dir_data']['flow_delay_datas'][0]['diff_data']['delay_time'] if road_value['dir_data']['flow_delay_datas'].get(0) else ''
|
||||
sheet1[f"P{end_row}"] = road_value['dir_data']['diff_data']['speed']
|
||||
sheet1[f"Q{end_row}"] = road_value['dir_data']['flow_delay_datas'][1]['diff_data']['speed'] if road_value['dir_data']['flow_delay_datas'].get(1) else ''
|
||||
sheet1[f"R{end_row}"] = road_value['dir_data']['flow_delay_datas'][0]['diff_data']['speed'] if road_value['dir_data']['flow_delay_datas'].get(0) else ''
|
||||
sheet1[f"S{end_row}"] = road_value['dir_data']['diff_data']['move_speed']
|
||||
sheet1[f"T{end_row}"] = road_value['dir_data']['flow_delay_datas'][1]['diff_data']['move_speed'] if road_value['dir_data']['flow_delay_datas'].get(1) else ''
|
||||
sheet1[f"U{end_row}"] = road_value['dir_data']['flow_delay_datas'][0]['diff_data']['move_speed'] if road_value['dir_data']['flow_delay_datas'].get(0) else ''
|
||||
sheet1[f"V{end_row}"] = road_value['dir_data']['diff_data']['imbalance_index']
|
||||
|
||||
center_alignment = Alignment(horizontal='center', vertical='center')
|
||||
for row in sheet1.iter_rows(min_row=1, max_row=sheet1.max_row,
|
||||
min_col=1, max_col=sheet1.max_column):
|
||||
for cell in row:
|
||||
if cell.value is not None:
|
||||
cell.alignment = center_alignment
|
||||
file_name = f"【{cross_name}】{compare_date_list[0]}-{compare_date_list[-1]} vs {date_list[0]}-{date_list[-1]} {time_range} 进口道及转向运行指标.xlsx"
|
||||
file_stream = io.BytesIO()
|
||||
wb.save(file_stream)
|
||||
file_stream.seek(0) # 将指针移到文件开头
|
||||
|
|
@ -395,4 +406,4 @@ def query_compare_data_export_excel(road_flow_delay_infos):
|
|||
file_stream,
|
||||
mimetype='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
|
||||
as_attachment=True,
|
||||
download_name=f"路口诊断指标.xlsx")
|
||||
download_name=file_name)
|
||||
|
|
|
|||
|
|
@ -88,8 +88,8 @@ def query_compare_data(params):
|
|||
'road_flow_delay_infos': compared_inroad_delay_infos
|
||||
}
|
||||
|
||||
# if export == 1:
|
||||
# return query_compare_data_export_excel(compared_inroad_delay_infos)
|
||||
if export == 1:
|
||||
return query_compare_data_export_excel(compared_inroad_delay_infos, cross_static_info['name'],compare_date_list,date_list,time_range)
|
||||
|
||||
return json.dumps(res, ensure_ascii=False)
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue