浏览代码

风险防控-小屏代码调整。

baoyubo 8 月之前
父节点
当前提交
93ce96da3b
共有 3 个文件被更改,包括 45 次插入21 次删除
  1. 3 5
      routers/api/riskManagement/risk_router.py
  2. 8 5
      routers/api/riskManagement/task.py
  3. 34 11
      utils/riskManagement_uitl.py

+ 3 - 5
routers/api/riskManagement/risk_router.py

@@ -888,11 +888,9 @@ async def get_inspection_task_list(
                 if task:
                     complete_area_code_list =[i.area_code for i in risk_task_children_task_id_get_risk_task_children_task_log_info(db,children_task_id)]
                     area_code_list = get_area_code_exclude_list(db,task.task_range,complete_area_code_list)
-                    if area_code and area_code in area_code_list:
-                        area_code_list = [area_code]
-                        # print(area_code_list)
-                    elif area_code and  area_code not in area_code_list:
-                        area_code_list = []
+                    if area_code:
+                        area_code_list = area_code_rang_get_area_children_list(db, children_task.task_range, area_code,
+                                                                               complete_area_code_list)
                     for area_code in area_code_list:
                         task_info = {
                             "id": new_guid(),

+ 8 - 5
routers/api/riskManagement/task.py

@@ -869,13 +869,16 @@ async def get_inspection_task_list(
                 task = inspection_task_id_get_inspection_task_info(db,children_task.task_id)
                 if task:
                     complete_area_code_list =[i.area_code for i in inspection_task_children_task_id_get_inspection_task_children_task_log_info(db,children_task_id)]
-                    area_code_list = get_area_code_exclude_list(db,task.inspection_range,complete_area_code_list)
-                    if area_code and area_code in area_code_list:
-                        area_code_list = [area_code]
+                    # area_code_list1 = get_area_code_exclude_list(db,task.inspection_range,complete_area_code_list)
+                    if area_code:# and area_code in area_code_list:
+                        area_code_list = area_code_rang_get_area_children_list(db,children_task.task_range,area_code,complete_area_code_list)#[area_code]
                         # print(area_code_list)
-                    elif area_code and  area_code not in area_code_list:
-                        area_code_list = []
+                    # elif area_code and  area_code not in area_code_list:
+                    #     area_code_list = []
+                    else:
+                        area_code_list = get_area_code_exclude_list(db, task.inspection_range, complete_area_code_list)
                     for area_code in area_code_list:
+                        # if area_code in area_code_list1:
                         task_info = {
                             "id": new_guid(),
                             "children_task_id": children_task_id,

+ 34 - 11
utils/riskManagement_uitl.py

@@ -66,6 +66,39 @@ def get_area_code_exclude_list(db,rang,list_1):
         return list({i.area_code for i in query.all()})
     else:
         return []
+def area_code_get_task_range(area_code):
+    if '00000000'==area_code[4:]:
+        return '0'
+    elif '00000000'!=area_code[4:] and '000000'==area_code[6:] :
+        return '1'
+    elif '000000'!=area_code[6:] and '000'==area_code[9:] :
+        return '2'
+    elif '000'!=area_code[9:]:
+        return '3'
+    else:
+        return '-1'
+def area_code_rang_get_area_children_list(db,rang,area_code,complete_area_code_list):
+    if int(area_code_get_task_range(area_code))>int(rang): #如果当前区划层级低于任务所属层级,返回空列表
+        return []
+
+    root_area = db.query(GovdataArea).filter_by(area_code=area_code).first()
+    if not root_area:
+        return []  # 如果没有找到区划,返回空列表
+
+        # 然后,根据层级递归查找所有子区划
+    area_codes = []
+
+    def recursive_search(current_area):
+        if area_code_get_task_range(current_area.area_code) == rang:
+            if current_area.area_code not in complete_area_code_list:
+                area_codes.append(current_area.area_code)
+        else:
+            for child in db.query(GovdataArea).filter_by(parent_code=current_area.area_code).all():
+                recursive_search(child)
+
+    recursive_search(root_area)  # 从根区划开始递归搜索
+
+    return area_codes
 
 def get_task_date_list(cycle,start_date,end_date,corn_query):
     # 生成日期列表
@@ -202,17 +235,7 @@ def get_file_query_fun(db,from_scenario,foreign_key):
     } for file in files]
     return result
 
-def area_code_get_task_range(area_code):
-    if '00000000'==area_code[4:]:
-        return '0'
-    elif '00000000'!=area_code[4:] and '000000'==area_code[6:] :
-        return '1'
-    elif '000000'!=area_code[6:] and '000'==area_code[9:] :
-        return '2'
-    elif '000'!=area_code[9:]:
-        return '3'
-    else:
-        return '-1'
+
 def user_id_get_task_range(db,user_id):
     query = db.query(RiskManagementInspectionUser)
     query = query.filter(RiskManagementInspectionUser.del_flag!='2')