baoyubo преди 2 месеца
родител
ревизия
533055e9af

+ 104 - 1
routers/api/riskManagement/rescue_resources.py

@@ -3,7 +3,9 @@
 
 from fastapi import APIRouter, Request, Depends,Query, HTTPException, status,BackgroundTasks
 from common.security import valid_access_token
-from fastapi.responses import JSONResponse
+from fastapi.responses import JSONResponse,StreamingResponse
+from common.db import db_czrz
+from common.auth_user import *
 from utils.riskManagement_uitl import *
 from utils.ry_system_util import *
 from sqlalchemy.orm import Session
@@ -858,6 +860,107 @@ async def get_inspection_task_list(
         raise HTTPException(status_code=500, detail=str(e))
 
 
+@router.get('/children/task/log/{children_task_id}/{status}/export')
+async def get_inspection_task_list(
+        request: Request,
+    children_task_id: str ,
+    status:str,
+    area_code: str = Query(None, description='区划编码'),
+    db: Session = Depends(get_db),
+    user_id = Depends(valid_access_token),
+        auth_user: AuthUser = Depends(find_auth_user),
+):
+    try:
+        # 构建查询
+        total_items= 0
+        InspectionTasks_list = []
+        status_cn = ''
+        if status == 'completed':
+            status_cn='已完成'
+            query = db.query(RiskManagementRescueResourcesTaskChildrenTaskLog)
+            query = query.filter(RiskManagementRescueResourcesTaskChildrenTaskLog.del_flag != '2')
+            # 应用查询条件
+
+            query = query.filter(RiskManagementRescueResourcesTaskChildrenTaskLog.children_task_id == children_task_id)
+
+            if area_code:
+                query = query.filter(RiskManagementRescueResourcesTaskChildrenTaskLog.area_code == area_code)
+            # 计算总条目数
+            total_items = query.count()
+
+            # 排序
+            query = query.order_by(RiskManagementRescueResourcesTaskChildrenTaskLog.create_time.desc())
+            # 执行分页查询
+            InspectionTasks = query.all()
+
+            # 将查询结果转换为列表形式的字典
+            for task in InspectionTasks:
+                task_info = {
+                    "id": task.id,
+                    "子任务表id": children_task_id,
+                    "区划编码": task.area_code,
+                    "区划": task.area,
+                    "任务进展":"已完成",
+                    "采集人员id": task.user_id,
+                    "采集人员": task.nick_name,
+                    "创建时间": task.create_time.strftime('%Y-%m-%d')
+                }
+                InspectionTasks_list.append(task_info)
+            # 返回结果
+        elif status == 'incomplete':
+            status_cn='未完成'
+            children_task = resource_task_children_task_id_get_resource_task_children_task_info(db, children_task_id)
+            if children_task:
+                task = resource_task_id_get_resource_task_info(db, children_task.task_id)
+                if task:
+                    complete_area_code_list = [i.area_code for i in
+                                               resource_task_children_task_id_get_resource_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:
+                        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(),
+                            "子任务表id": children_task_id,
+                            "区划编码": area_code,
+                            "区划": area_code_get_ancestors_names(db, area_code_get_area_info(db, area_code)),
+                            "任务进展": '未完成',
+                            "采集人员id": '',
+                            "采集人员": '',
+                            "创建时间": children_task.tsak_time.strftime('%Y-%m-%d')
+                        }
+                        InspectionTasks_list.append(task_info)
+        import pandas as pd
+        from io import BytesIO
+        # 将查询结果转换为 DataFrame
+        df = pd.DataFrame(InspectionTasks_list)
+
+        # 将 DataFrame 导出为 Excel 文件
+        output = BytesIO()
+        with pd.ExcelWriter(output, engine='openpyxl') as writer:
+            df.to_excel(writer, index=False)
+
+        # 设置响应头
+        output.seek(0)
+        from urllib.parse import quote
+        encoded_filename = f'救援资源要素{status_cn}{datetime.now().strftime("%Y%m%d%H%mi%s")}.xlsx'
+        encoded_filename = quote(encoded_filename, encoding='utf-8')
+        headers = {
+            'Content-Disposition': f'attachment; filename*=UTF-8\'\'{encoded_filename}',
+            'Content-Type': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
+        }
+
+        db_czrz.log(db, auth_user, "救援资源要素管理", f"救援资源要素任务{status_cn}导出数据成功", request.client.host)
+
+        # 返回文件流
+        return StreamingResponse(output, headers=headers)
+
+    except Exception as e:
+        traceback.print_exc()
+        return JSONResponse(status_code=500, content={"code": 500, "msg": f"Internal server error: {str(e)}"})
+
 
 @router.get('/children/task/log/{children_task_id}/{status}/list')
 async def get_inspection_task_list(

+ 104 - 1
routers/api/riskManagement/risk_router.py

@@ -3,7 +3,9 @@
 
 from fastapi import APIRouter, Request, Depends,Query, HTTPException, status,BackgroundTasks
 from common.security import valid_access_token
-from fastapi.responses import JSONResponse
+from fastapi.responses import JSONResponse,StreamingResponse
+from common.db import db_czrz
+from common.auth_user import *
 from sqlalchemy.orm import Session
 from sqlalchemy import and_, or_
 from pydantic import BaseModel
@@ -857,6 +859,107 @@ async def get_inspection_task_list(
         raise HTTPException(status_code=500, detail=str(e))
 
 
+@router.get('/children/task/log/{children_task_id}/{status}/export')
+async def get_inspection_task_list(
+        request: Request,
+    children_task_id: str ,
+    status:str,
+    area_code: str = Query(None, description='区划编码'),
+    db: Session = Depends(get_db),
+    user_id = Depends(valid_access_token),
+        auth_user: AuthUser = Depends(find_auth_user),
+):
+    try:
+        # 构建查询
+        total_items= 0
+        InspectionTasks_list = []
+        status_cn = ''
+        if status == 'completed':
+            status_cn='已完成'
+            query = db.query(RiskManagementRiskTaskChildrenTaskLog)
+            query = query.filter(RiskManagementRiskTaskChildrenTaskLog.del_flag != '2')
+            # 应用查询条件
+
+            query = query.filter(RiskManagementRiskTaskChildrenTaskLog.children_task_id == children_task_id)
+
+            if area_code:
+                query = query.filter(RiskManagementRiskTaskChildrenTaskLog.area_code == area_code)
+            # 计算总条目数
+            total_items = query.count()
+
+            # 排序
+            query = query.order_by(RiskManagementRiskTaskChildrenTaskLog.create_time.desc())
+            # 执行分页查询
+            InspectionTasks = query.all()
+
+            # 将查询结果转换为列表形式的字典
+            for task in InspectionTasks:
+                task_info = {
+                    "id": task.id,
+                    "子任务表id":children_task_id,
+                    "区划编码": task.area_code,
+                    "区划": task.area,
+                    "任务进展": '已完成',
+                    "排查人员id": task.user_id,
+                    "排查人员": task.nick_name,
+                    "创建时间": task.create_time.strftime('%Y-%m-%d')
+                }
+                InspectionTasks_list.append(task_info)
+            # 返回结果
+        elif status == 'incomplete':
+            status_cn='未完成'
+            children_task = risk_task_children_task_id_get_risk_task_children_task_info(db, children_task_id)
+            if children_task:
+                task = risk_task_id_get_risk_task_info(db, children_task.task_id)
+                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:
+                        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(),
+                            "子任务表id": children_task_id,
+                            "区划编码": area_code,
+                            "区划": area_code_get_ancestors_names(db,area_code_get_area_info(db,area_code)),
+                            "任务进展": '未完成',
+                            "排查人员id": '',
+                            "排查人员": '',
+                            "创建时间": children_task.tsak_time.strftime('%Y-%m-%d')
+                        }
+                        InspectionTasks_list.append(task_info)
+        import pandas as pd
+        from io import BytesIO
+        # 将查询结果转换为 DataFrame
+        df = pd.DataFrame(InspectionTasks_list)
+
+        # 将 DataFrame 导出为 Excel 文件
+        output = BytesIO()
+        with pd.ExcelWriter(output, engine='openpyxl') as writer:
+            df.to_excel(writer, index=False)
+
+        # 设置响应头
+        output.seek(0)
+        from urllib.parse import quote
+        encoded_filename = f'风险排查任务{status_cn}{datetime.now().strftime("%Y%m%d%H%mi%s")}.xlsx'
+        encoded_filename = quote(encoded_filename, encoding='utf-8')
+        headers = {
+            'Content-Disposition': f'attachment; filename*=UTF-8\'\'{encoded_filename}',
+            'Content-Type': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
+        }
+
+        db_czrz.log(db, auth_user, "风险排查工作管理", f"风险排查任务{status_cn}导出数据成功", request.client.host)
+
+        # 返回文件流
+        return StreamingResponse(output, headers=headers)
+
+    except Exception as e:
+        traceback.print_exc()
+        return JSONResponse(status_code=500, content={"code": 500, "msg": f"Internal server error: {str(e)}"})
+
 
 @router.get('/children/task/log/{children_task_id}/{status}/list')
 async def get_inspection_task_list(

+ 108 - 1
routers/api/riskManagement/task.py

@@ -3,7 +3,9 @@
 
 from fastapi import APIRouter, Request, Depends,Query, HTTPException, status,BackgroundTasks
 from common.security import valid_access_token
-from fastapi.responses import JSONResponse
+from fastapi.responses import JSONResponse,StreamingResponse
+from common.db import db_czrz
+from common.auth_user import *
 from sqlalchemy.orm import Session
 from sqlalchemy import and_, or_
 from pydantic import BaseModel
@@ -848,6 +850,111 @@ async def get_inspection_task_list(
         raise HTTPException(status_code=500, detail=str(e))
 
 
+@router.get('/children/task/log/{children_task_id}/{status}/export')
+async def get_inspection_task_list(
+        request: Request,
+    children_task_id: str ,
+    status:str,
+    area_code: str = Query(None, description='区划编码'),
+    page: int = Query(1, gt=0, description='页码'),
+    pageSize: int = Query(10, gt=0, description='每页条目数量'),
+    db: Session = Depends(get_db),
+    user_id = Depends(valid_access_token),
+        auth_user: AuthUser = Depends(find_auth_user),
+):
+    try:
+        # 构建查询
+        total_items= 0
+        InspectionTasks_list = []
+        status_cn = ''
+        if status=='completed':
+            status_cn='已完成'
+            query = db.query(RiskManagementInspectionTaskChildrenTaskLog)
+            query = query.filter(RiskManagementInspectionTaskChildrenTaskLog.del_flag != '2')
+            # 应用查询条件
+
+            query = query.filter(RiskManagementInspectionTaskChildrenTaskLog.children_task_id == children_task_id)
+
+            if area_code:
+                query = query.filter(RiskManagementInspectionTaskChildrenTaskLog.area_code == area_code)
+            # 计算总条目数
+            total_items = query.count()
+
+            # 排序
+            query = query.order_by(RiskManagementInspectionTaskChildrenTaskLog.create_time.desc())
+            # 执行分页查询
+            InspectionTasks = query.all()
+
+            # 将查询结果转换为列表形式的字典
+            for task in InspectionTasks:
+                task_info = {
+                    "id": task.id,
+                    "子任务表id":children_task_id,
+                    "区划编码": task.area_code,
+                    "区划": task.area,
+                    "任务进展": '已完成',
+                    "巡查人员id": task.user_id,
+                    "巡查人员": task.nick_name,
+                    "创建时间": task.create_time.strftime('%Y-%m-%d')
+                }
+                InspectionTasks_list.append(task_info)
+            # 返回结果
+        elif status == 'incomplete':
+            status_cn='未完成'
+            children_task = inspection_task_children_task_id_get_inspection_task_children_task_info(db,children_task_id)
+            if children_task:
+                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_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 = []
+                    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(),
+                            "子任务表id": children_task_id,
+                            "区划编码": area_code,
+                            "区划": area_code_get_ancestors_names(db,area_code_get_area_info(db,area_code)),
+                            "任务进展": '未完成',
+                            "巡查人员id": '',
+                            "巡查人员": '',
+                            "创建时间": children_task.tsak_time.strftime('%Y-%m-%d')
+                        }
+                        InspectionTasks_list.append(task_info)
+        import pandas as pd
+        from io import BytesIO
+        # 将查询结果转换为 DataFrame
+        df = pd.DataFrame(InspectionTasks_list)
+
+        # 将 DataFrame 导出为 Excel 文件
+        output = BytesIO()
+        with pd.ExcelWriter(output, engine='openpyxl') as writer:
+            df.to_excel(writer, index=False)
+
+        # 设置响应头
+        output.seek(0)
+        from urllib.parse import quote
+        encoded_filename = f'巡查任务{status_cn}{datetime.now().strftime("%Y%m%d%H%mi%s")}.xlsx'
+        encoded_filename = quote(encoded_filename, encoding='utf-8')
+        headers = {
+            'Content-Disposition': f'attachment; filename*=UTF-8\'\'{encoded_filename}',
+            'Content-Type': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
+        }
+
+        db_czrz.log(db, auth_user, "巡查工作管理", f"巡查任务{status_cn}导出数据成功", request.client.host)
+
+        # 返回文件流
+        return StreamingResponse(output, headers=headers)
+
+    except Exception as e:
+        traceback.print_exc()
+        return JSONResponse(status_code=500, content={"code": 500, "msg": f"Internal server error: {str(e)}"})
 
 @router.get('/children/task/log/{children_task_id}/{status}/list')
 async def get_inspection_task_list(

+ 1 - 1
routers/api/videoResource/videoinfo.py

@@ -633,7 +633,7 @@ async def get_video_forest_fire_list(
         # 将 DataFrame 导出为 Excel 文件
         output = BytesIO()
         with pd.ExcelWriter(output, engine='openpyxl') as writer:
-            df.to_excel(writer, index=False, sheet_name='用户列表')
+            df.to_excel(writer, index=False)
 
         # 设置响应头
         output.seek(0)