优化任务列表查询逻辑,提高接口响应效率
This commit is contained in:
parent
8a326e7a58
commit
662e52593f
|
|
@ -358,6 +358,18 @@ class TaskDbHelper(TableDbHelperBase):
|
||||||
""" % taskno
|
""" % taskno
|
||||||
return self.do_select(sql)
|
return self.do_select(sql)
|
||||||
|
|
||||||
|
def query_all_ledger_task_crosses_info(self, nodeid, area_id):
|
||||||
|
sql = """
|
||||||
|
select * from ledger_task_detail where nodeid = %s and area_id = %s
|
||||||
|
""" % (nodeid, area_id)
|
||||||
|
res = self.do_select(sql)
|
||||||
|
task_cross_dict = {}
|
||||||
|
for row in res:
|
||||||
|
if row['task_no'] not in task_cross_dict.keys():
|
||||||
|
task_cross_dict[row['task_no']] = [row]
|
||||||
|
else:
|
||||||
|
task_cross_dict[row['task_no']].append(row)
|
||||||
|
return task_cross_dict
|
||||||
#
|
#
|
||||||
# if __name__ == '__main__':
|
# if __name__ == '__main__':
|
||||||
# tt_5min = get_latest_5min_timestamp()
|
# tt_5min = get_latest_5min_timestamp()
|
||||||
|
|
|
||||||
|
|
@ -183,6 +183,8 @@ def do_query_task_list(params):
|
||||||
res_list = all_task_list
|
res_list = all_task_list
|
||||||
# task_list = db_task.query_task_list(task_name,task_type,data_type, task_class,plan_begin_time,plan_end_time,publish_time,task_state,executor,task_src, nodeid)
|
# task_list = db_task.query_task_list(task_name,task_type,data_type, task_class,plan_begin_time,plan_end_time,publish_time,task_state,executor,task_src, nodeid)
|
||||||
filtered_list = [d for d in res_list if d['arteryids'] != -1]
|
filtered_list = [d for d in res_list if d['arteryids'] != -1]
|
||||||
|
cross_name_info = db_tmnet.query_cross_list4task(nodeid, area_id)
|
||||||
|
task_crosses_info = db_task.query_all_ledger_task_crosses_info(nodeid, area_id)
|
||||||
for task_info in filtered_list:
|
for task_info in filtered_list:
|
||||||
comment = task_info['comment']
|
comment = task_info['comment']
|
||||||
if '_split_suffix_for_query_info' in comment:
|
if '_split_suffix_for_query_info' in comment:
|
||||||
|
|
@ -193,7 +195,7 @@ def do_query_task_list(params):
|
||||||
task_info['comment'] = comment_list
|
task_info['comment'] = comment_list
|
||||||
if task_info['task_type_class'] == 1:
|
if task_info['task_type_class'] == 1:
|
||||||
item_task_no = task_info['taskno']
|
item_task_no = task_info['taskno']
|
||||||
ledger_task_add_info = query_ledger_task_additional_info(item_task_no, nodeid, area_id)
|
ledger_task_add_info = query_ledger_task_additional_info(item_task_no, nodeid, area_id, cross_name_info, task_crosses_info[item_task_no])
|
||||||
task_info['entered_percent'] = 100 if task_info['task_state'] == 4 else ledger_task_add_info['entered_percent']
|
task_info['entered_percent'] = 100 if task_info['task_state'] == 4 else ledger_task_add_info['entered_percent']
|
||||||
task_info['approve_percent'] = 100 if task_info['task_state'] == 4 else ledger_task_add_info['approve_percent']
|
task_info['approve_percent'] = 100 if task_info['task_state'] == 4 else ledger_task_add_info['approve_percent']
|
||||||
sorted_list = sorted(filtered_list, key=sort_key)
|
sorted_list = sorted(filtered_list, key=sort_key)
|
||||||
|
|
@ -1098,14 +1100,12 @@ def get_undistributed_cross_list(params):
|
||||||
|
|
||||||
|
|
||||||
# 查询台账路口任务详情-> 路口详细列表、完成情况占比
|
# 查询台账路口任务详情-> 路口详细列表、完成情况占比
|
||||||
def query_ledger_task_additional_info(task_no, nodeid, area_id):
|
def query_ledger_task_additional_info(task_no, nodeid, area_id, cross_name_info, task_crosses_info):
|
||||||
task_crosses_info = db_task.query_ledger_task_crosses_info(task_no)
|
|
||||||
task_cross_num = len(task_crosses_info)
|
task_cross_num = len(task_crosses_info)
|
||||||
entered_cross_num = len([cross for cross in task_crosses_info if cross['ledger_status'] == 2 and cross['phase_status'] in (1, 3)])
|
entered_cross_num = len([cross for cross in task_crosses_info if cross['ledger_status'] == 2 and cross['phase_status'] in (1, 3)])
|
||||||
entered_percent = int(entered_cross_num * 100 / task_cross_num) if task_cross_num > 0 else 0
|
entered_percent = int(entered_cross_num * 100 / task_cross_num) if task_cross_num > 0 else 0
|
||||||
approve_cross_num = len([cross for cross in task_crosses_info if cross['submit_status'] == 2])
|
approve_cross_num = len([cross for cross in task_crosses_info if cross['submit_status'] == 2])
|
||||||
approve_percent = int(approve_cross_num * 100 / task_cross_num) if task_cross_num > 0 else 0
|
approve_percent = int(approve_cross_num * 100 / task_cross_num) if task_cross_num > 0 else 0
|
||||||
cross_name_info = db_tmnet.query_cross_list4task(nodeid, area_id)
|
|
||||||
cross_name_dict = {row['crossid']: row['name'] for row in cross_name_info}
|
cross_name_dict = {row['crossid']: row['name'] for row in cross_name_info}
|
||||||
cross_info_dict = {}
|
cross_info_dict = {}
|
||||||
this_week_entering_cross_num, this_week_approve_cross_num = 0, 0
|
this_week_entering_cross_num, this_week_approve_cross_num = 0, 0
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue