diff --git a/app/cross_compare_report.py b/app/cross_compare_report.py index c4ca29f..60349b5 100644 --- a/app/cross_compare_report.py +++ b/app/cross_compare_report.py @@ -68,12 +68,12 @@ def gen_cross_compare_report(params): cut_images = check_param(params, 'cut_images') if not cut_images: cut_images = 0 - origin_phase_info = check_param(params, 'origin_phase_info') - if not origin_phase_info: - origin_phase_info = None - final_phase_info = check_param(params, 'final_phase_info') - if not final_phase_info: - final_phase_info = None + origin_phase_info_list = check_param(params, 'origin_phase_info_list') + if not origin_phase_info_list: + origin_phase_info_list = [] + final_phase_info_list = check_param(params, 'final_phase_info_list') + if not final_phase_info_list: + final_phase_info_list = [] date_list4screen = transition_date_list4screen(compare_date_list) all_date_set = set() @@ -120,7 +120,16 @@ def gen_cross_compare_report(params): 'download_url': g_cos_root + download_url } return json.dumps(res, ensure_ascii=False) - + # 必要数据获取 + 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, 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, weekdays) + if not avg_comp_cross_delay_info: + return json.dumps(make_common_res(10, '当前所选对比日期范围内该评测时段无可用数据')) + dir = os.path.dirname(os.path.abspath(__file__)) localfile_path = f'{dir}/../temp/{file_name}.lock' if os.path.exists(localfile_path): @@ -214,6 +223,22 @@ def gen_cross_compare_report(params): doc1.tpl_paragraph['part4']['part4_1'] = 1 if 'part4_2' in parts: doc1.tpl_paragraph['part4']['part4_2'] = 1 + for item in origin_phase_info_list: + item_table1 = PartDetail() + item_table1.item1 = item['time_range'] + item_table1.item2 = item['cycle'] + item_table1.table1 = [item_stage['stage_name'] for item_stage in item['stages']] + item_table1.table2 = [item_stage[k] for item_stage in item['stages'] for k in ('green', 'yellow', 'allred')] + doc1.tpl_data['part4_2'].table1.append(item_table1) + + for item in final_phase_info_list: + item_table2 = PartDetail() + item_table2.item1 = item['time_range'] + item_table2.item2 = item['cycle'] + item_table2.table1 = [item_stage['stage_name'] for item_stage in item['stages']] + item_table2.table2 = [item_stage[k] for item_stage in item['stages'] for k in ('green', 'yellow', 'allred')] + doc1.tpl_data['part4_2'].table2.append(item_table2) + if 'part5' in parts: doc1.tpl_paragraph['part5']['visible'] = 1 part5_data = gen_compare_report_part5_data(part1_data, compared_inroad_delay_infos) @@ -669,20 +694,53 @@ def query_cross_optimize_task_list(params): return json.dumps(make_common_res(6, '缺少crossid, 请刷新后重试')) records = db_task.query_cross_optimize_task_records(nodeid, area_id, crossid) + res = make_common_res(0, 'ok') + res['data'] = {} for item in records: + task_no = item['task_no'] + task_stage = item['task_stage'] + if not task_stage or len(task_stage) < 7 or int(task_stage[2]) < 2: + continue + if task_no not in res['data'].keys(): + res['data'][task_no] = { + 'task_no': task_no, + 'task_name': item['task_name'], + 'plan_begin_time': item['plan_begin_time'], + 'plan_end_time': item['plan_end_time'], + 'executor': item['executor'], + 'task_stage': item['task_stage'], + 'check_result_time': item['check_result_time'].strftime('%Y-%m-%d %H:%M:%S') if item['check_result_time'] else '', + 'phase_infos': [] + } + schedule_id = item['schedule_id'] + weekdays = item['weekdays'] + weekdays_str = item['weekdays_str'] + time_range = item['time_range'] origin_phase_detail = item['origin_phase_detail'] if origin_phase_detail: origin_phase_detail = json.loads(origin_phase_detail) + origin_phase_detail['schedule_id'] = schedule_id + origin_phase_detail['weekdays'] = weekdays + origin_phase_detail['weekdays_str'] = weekdays_str + origin_phase_detail['time_range'] = time_range optimize_phase_detail = item['optimize_phase_detail'] if optimize_phase_detail: optimize_phase_detail = json.loads(optimize_phase_detail) + optimize_phase_detail['schedule_id'] = schedule_id + optimize_phase_detail['weekdays'] = weekdays + optimize_phase_detail['weekdays_str'] = weekdays_str + optimize_phase_detail['time_range'] = time_range phase_tiny_adjust_detail = item['phase_tiny_adjust_detail'] if phase_tiny_adjust_detail: phase_tiny_adjust_detail = json.loads(phase_tiny_adjust_detail) - item['origin_phase_detail'] = origin_phase_detail - item['optimize_phase_detail'] = optimize_phase_detail - item['phase_tiny_adjust_detail'] = phase_tiny_adjust_detail - item['check_result_time'] = item['check_result_time'].strftime('%Y-%m-%d %H:%M:%S') if item['check_result_time'] else '' - res = make_common_res(0, 'ok') - res['data'] = records + phase_tiny_adjust_detail['schedule_id'] = schedule_id + phase_tiny_adjust_detail['weekdays'] = weekdays + phase_tiny_adjust_detail['weekdays_str'] = weekdays_str + phase_tiny_adjust_detail['time_range'] = time_range + + res['data'][task_no]['phase_infos'].append({ + 'origin_phase_detail': origin_phase_detail, + 'optimize_phase_detail': optimize_phase_detail, + 'phase_tiny_adjust_detail': phase_tiny_adjust_detail + }) return json.dumps(res, ensure_ascii=False) diff --git a/app/task_db_func.py b/app/task_db_func.py index 6f3fd49..8db4f30 100644 --- a/app/task_db_func.py +++ b/app/task_db_func.py @@ -1188,7 +1188,7 @@ class TaskDbHelper(TableDbHelperBase): def query_cross_optimize_task_records(self, nodeid, area_id, crossid): sql = """ - select t2.task_no, t1.task_name,t1.plan_begin_time, t1.plan_end_time, t1.executor, t2.task_stage,t2.stage1_info_ids, t3.origin_phase_detail, t3.optimize_phase_detail, t3.phase_tiny_adjust_detail, t2.stage3_issue_time, t2.check_result_time from + select t2.task_no, t1.task_name,t1.plan_begin_time, t1.plan_end_time, t1.executor, t2.task_stage,t2.stage1_info_ids, t3.origin_phase_detail, t3.optimize_phase_detail, t3.phase_tiny_adjust_detail, t2.stage3_issue_time, t2.check_result_time, t3.schedule_id, t3.weekdays, t3.weekdays_str, t3.time_range from (select * from task.task where nodeid = %s and area_id = %s and crossids = '%s' and task_type_class = 2 and record_state != 1) t1 inner join (select * from task.cross_optimize_task_additional_detail where crossid = '%s') t2 inner join (select * from task.cross_optimize_task_phase_info) t3