From 662e52593f51ff79de5147f7350890e3243b9c22 Mon Sep 17 00:00:00 2001 From: wangxu <1318272526@qq.com> Date: Thu, 26 Mar 2026 17:54:10 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=BB=E5=8A=A1=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E6=9F=A5=E8=AF=A2=E9=80=BB=E8=BE=91=EF=BC=8C=E6=8F=90?= =?UTF-8?q?=E9=AB=98=E6=8E=A5=E5=8F=A3=E5=93=8D=E5=BA=94=E6=95=88=E7=8E=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/task_db_func.py | 12 ++++++++++++ app/task_worker.py | 8 ++++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/app/task_db_func.py b/app/task_db_func.py index 1d6dc94..da27af6 100644 --- a/app/task_db_func.py +++ b/app/task_db_func.py @@ -358,6 +358,18 @@ class TaskDbHelper(TableDbHelperBase): """ % taskno 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__': # tt_5min = get_latest_5min_timestamp() diff --git a/app/task_worker.py b/app/task_worker.py index 55abf18..80689ee 100644 --- a/app/task_worker.py +++ b/app/task_worker.py @@ -183,6 +183,8 @@ def do_query_task_list(params): 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) 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: comment = task_info['comment'] if '_split_suffix_for_query_info' in comment: @@ -193,7 +195,7 @@ def do_query_task_list(params): task_info['comment'] = comment_list if task_info['task_type_class'] == 1: 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['approve_percent'] = 100 if task_info['task_state'] == 4 else ledger_task_add_info['approve_percent'] 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): - task_crosses_info = db_task.query_ledger_task_crosses_info(task_no) +def query_ledger_task_additional_info(task_no, nodeid, area_id, cross_name_info, 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_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_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_info_dict = {} this_week_entering_cross_num, this_week_approve_cross_num = 0, 0