|
@@ -1,7 +1,7 @@
|
|
|
#!/usr/bin/env python3
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
|
|
-from fastapi import APIRouter, Request, Depends,Query, HTTPException, status
|
|
|
+from fastapi import APIRouter, Request, Depends,Query, HTTPException, status,BackgroundTasks
|
|
|
from common.security import valid_access_token
|
|
|
from fastapi.responses import JSONResponse
|
|
|
from sqlalchemy.orm import Session
|
|
@@ -12,6 +12,8 @@ from database import get_db
|
|
|
from typing import List
|
|
|
from models import *
|
|
|
from utils import *
|
|
|
+from utils.ry_system_util import *
|
|
|
+from utils.riskManagement_uitl import *
|
|
|
import json
|
|
|
import traceback
|
|
|
|
|
@@ -150,6 +152,7 @@ async def get_inspection_task(
|
|
|
|
|
|
@router.post('/create')
|
|
|
async def create_inspection_task(
|
|
|
+ background_tasks: BackgroundTasks,
|
|
|
db: Session = Depends(get_db),
|
|
|
body = Depends(remove_xss_json),
|
|
|
user_id = Depends(valid_access_token)
|
|
@@ -185,6 +188,7 @@ async def create_inspection_task(
|
|
|
db.refresh(new_task) # 可选,如果需要刷新实例状态
|
|
|
new_task.task_number = f'YJFX{str(new_task.id).zfill(10)}'
|
|
|
db.commit()
|
|
|
+ background_tasks.add_task(create_risk_children_task,db,new_task,corn_query)
|
|
|
# 返回创建成功的响应
|
|
|
return {
|
|
|
"code": 200,
|
|
@@ -214,28 +218,28 @@ async def update_inspection_task(
|
|
|
detail = "任务不存在"
|
|
|
raise HTTPException(status_code=404, detail="任务不存在")
|
|
|
|
|
|
- if 'cycle' in body:
|
|
|
- cycle = body['cycle']
|
|
|
- # 0每年、1每月、2每周、3每日、4一次
|
|
|
- corn_query = body['corn_query']
|
|
|
- if cycle == '0':
|
|
|
- corn = f'0 0 {corn_query} *'
|
|
|
- elif cycle == '1':
|
|
|
- corn = f'0 0 {corn_query} * *'
|
|
|
- elif cycle == '2':
|
|
|
- corn = f'0 0 * * {corn_query}'
|
|
|
- elif cycle == '3':
|
|
|
- corn = f'0 0 * * *'
|
|
|
- else:
|
|
|
- corn = ''
|
|
|
- task.inspection_cycle = cycle
|
|
|
- task.corn_expression = corn
|
|
|
+ # if 'cycle' in body:
|
|
|
+ # cycle = body['cycle']
|
|
|
+ # # 0每年、1每月、2每周、3每日、4一次
|
|
|
+ # corn_query = body['corn_query']
|
|
|
+ # if cycle == '0':
|
|
|
+ # corn = f'0 0 {corn_query} *'
|
|
|
+ # elif cycle == '1':
|
|
|
+ # corn = f'0 0 {corn_query} * *'
|
|
|
+ # elif cycle == '2':
|
|
|
+ # corn = f'0 0 * * {corn_query}'
|
|
|
+ # elif cycle == '3':
|
|
|
+ # corn = f'0 0 * * *'
|
|
|
+ # else:
|
|
|
+ # corn = ''
|
|
|
+ # task.inspection_cycle = cycle
|
|
|
+ # task.corn_expression = corn
|
|
|
if 'type' in body:
|
|
|
task.risk_type = body['type']
|
|
|
- if 'start_time' in body:
|
|
|
- task.start_time = body['start_time']
|
|
|
- if 'end_time' in body:
|
|
|
- task.end_time = body['end_time']
|
|
|
+ # if 'start_time' in body:
|
|
|
+ # task.start_time = body['start_time']
|
|
|
+ # if 'end_time' in body:
|
|
|
+ # task.end_time = body['end_time']
|
|
|
if 'task_range' in body:
|
|
|
task.task_range = body['task_range']
|
|
|
if 'task_status' in body:
|
|
@@ -329,4 +333,217 @@ async def delete_inspection_task(
|
|
|
traceback.print_exc()
|
|
|
if str(e) == '':
|
|
|
e = detail
|
|
|
+ raise HTTPException(status_code=500, detail=str(e))
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+@router.get('/children/task/{task_id}/list')
|
|
|
+async def get_inspection_task_list(
|
|
|
+ task_id: str ,
|
|
|
+ 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)
|
|
|
+):
|
|
|
+ try:
|
|
|
+ # 构建查询
|
|
|
+ query = db.query(RiskManagementRiskTaskChildrenTask)
|
|
|
+ query = query.filter(RiskManagementRiskTaskChildrenTask.del_flag != '2')
|
|
|
+ # 应用查询条件
|
|
|
+
|
|
|
+ query = query.filter(RiskManagementRiskTaskChildrenTask.task_id == task_id)
|
|
|
+
|
|
|
+ # 计算总条目数
|
|
|
+ total_items = query.count()
|
|
|
+
|
|
|
+ # 排序
|
|
|
+
|
|
|
+ query = query.order_by(RiskManagementRiskTaskChildrenTask.tsak_time.asc())
|
|
|
+ # 执行分页查询
|
|
|
+ InspectionTasks = query.offset((page - 1) * pageSize).limit(pageSize).all()
|
|
|
+
|
|
|
+ # 将查询结果转换为列表形式的字典
|
|
|
+ InspectionTasks_list = []
|
|
|
+ for task in InspectionTasks:
|
|
|
+ task_num=task.task_num
|
|
|
+ completed_num = db.query(RiskManagementRiskTaskChildrenTaskLog)\
|
|
|
+ .filter(RiskManagementRiskTaskChildrenTaskLog.del_flag!='2')\
|
|
|
+ .filter(RiskManagementRiskTaskChildrenTaskLog.children_task_id==task.id).count()
|
|
|
+ incomplete_num = task_num-completed_num
|
|
|
+ task_info = {
|
|
|
+ "id": task.id,
|
|
|
+ "task_id":task.task_id,
|
|
|
+ "task_number": task.task_number,
|
|
|
+ "type": task.type,
|
|
|
+ "task_time": task.tsak_time.strftime('%Y-%m-%d'),
|
|
|
+ "cycle": task.cycle,
|
|
|
+ "task_range": task.task_range,
|
|
|
+ "completed_num": completed_num,
|
|
|
+ "incomplete_num": incomplete_num,
|
|
|
+ "create_time": task.create_time.strftime('%Y-%m-%d')
|
|
|
+ }
|
|
|
+ InspectionTasks_list.append(task_info)
|
|
|
+ # 返回结果
|
|
|
+ return {
|
|
|
+ "code": 200,
|
|
|
+ "msg": "成功",
|
|
|
+ "data": InspectionTasks_list,
|
|
|
+ "total": total_items,
|
|
|
+ "page": page,
|
|
|
+ "pageSize": pageSize,
|
|
|
+ "totalPages": (total_items + pageSize - 1) // pageSize
|
|
|
+ }
|
|
|
+ except Exception as e:
|
|
|
+ # 处理异常
|
|
|
+ traceback.print_exc()
|
|
|
+ raise HTTPException(status_code=500, detail=str(e))
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+@router.get('/children/task/log/{children_task_id}/{status}/list')
|
|
|
+async def get_inspection_task_list(
|
|
|
+ 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)
|
|
|
+):
|
|
|
+ try:
|
|
|
+ # 构建查询
|
|
|
+ total_items= 0
|
|
|
+ InspectionTasks_list = []
|
|
|
+ if status=='completed':
|
|
|
+ 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.offset((page - 1) * pageSize).limit(pageSize).all()
|
|
|
+
|
|
|
+ # 将查询结果转换为列表形式的字典
|
|
|
+ for task in InspectionTasks:
|
|
|
+ task_info = {
|
|
|
+ "id": task.id,
|
|
|
+ "children_task_id":children_task_id,
|
|
|
+ "area_code": task.area_code,
|
|
|
+ "area": task.area,
|
|
|
+ "task_status": task.task_status,
|
|
|
+ "user_id": task.user_id,
|
|
|
+ "nick_name": task.nick_name,
|
|
|
+ "create_time": task.create_time.strftime('%Y-%m-%d')
|
|
|
+ }
|
|
|
+ InspectionTasks_list.append(task_info)
|
|
|
+ # 返回结果
|
|
|
+ elif status == 'incomplete':
|
|
|
+ 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 and area_code in area_code_list:
|
|
|
+ area_code_list = [area_code_list]
|
|
|
+ for area_code in area_code_list:
|
|
|
+ task_info = {
|
|
|
+ "id": new_guid(),
|
|
|
+ "children_task_id": children_task_id,
|
|
|
+ "area_code": area_code,
|
|
|
+ "area": area_code_get_ancestors_names(db,area_code_get_area_info(db,area_code)),
|
|
|
+ "task_status": '0',
|
|
|
+ "user_id": '',
|
|
|
+ "nick_name": '',
|
|
|
+ "create_time": children_task.tsak_time.strftime('%Y-%m-%d')
|
|
|
+ }
|
|
|
+ InspectionTasks_list.append(task_info)
|
|
|
+ return {
|
|
|
+ "code": 200,
|
|
|
+ "msg": "成功",
|
|
|
+ "data": InspectionTasks_list,
|
|
|
+ "total": total_items,
|
|
|
+ "page": page,
|
|
|
+ "pageSize": pageSize,
|
|
|
+ "totalPages": (total_items + pageSize - 1) // pageSize
|
|
|
+ }
|
|
|
+ except Exception as e:
|
|
|
+ # 处理异常
|
|
|
+ traceback.print_exc()
|
|
|
+ raise HTTPException(status_code=500, detail=str(e))
|
|
|
+
|
|
|
+
|
|
|
+@router.get('/children/task/result/{children_task_id}/list')
|
|
|
+async def get_inspection_task_list(
|
|
|
+ children_task_id: str ,
|
|
|
+ area_code: str = Query(None, description='区划编码'),
|
|
|
+ result: str = Query(None, description='巡查结果'),
|
|
|
+ nick_name: 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)
|
|
|
+):
|
|
|
+ try:
|
|
|
+ # 构建查询
|
|
|
+ query = db.query(RiskManagementRiskTaskChildrenTaskResult)
|
|
|
+ query = query.filter(RiskManagementRiskTaskChildrenTaskResult.del_flag != '2')
|
|
|
+ query = query.filter(RiskManagementRiskTaskChildrenTaskResult.children_task_id == children_task_id)
|
|
|
+ # 应用查询条件
|
|
|
+ if area_code:
|
|
|
+ query = query.filter(RiskManagementRiskTaskChildrenTaskResult.area_code == area_code)
|
|
|
+ if result:
|
|
|
+ query = query.filter(RiskManagementRiskTaskChildrenTaskResult.inspection_result == result)
|
|
|
+ if nick_name:
|
|
|
+ query = query.filter(RiskManagementRiskTaskChildrenTaskResult.nick_name.like(f'%{nick_name}%') )
|
|
|
+
|
|
|
+ # 计算总条目数
|
|
|
+ total_items = query.count()
|
|
|
+
|
|
|
+ # 排序
|
|
|
+
|
|
|
+ query = query.order_by(RiskManagementRiskTaskChildrenTaskResult.create_time.desc())
|
|
|
+ # 执行分页查询
|
|
|
+ InspectionTasks = query.offset((page - 1) * pageSize).limit(pageSize).all()
|
|
|
+
|
|
|
+ # 将查询结果转换为列表形式的字典
|
|
|
+ InspectionTasks_list = []
|
|
|
+ for task in InspectionTasks:
|
|
|
+ area_code = task.area_code
|
|
|
+ area = area_code_get_area_info(db, area_code)
|
|
|
+ area = area_code_get_ancestors_names(db, area)
|
|
|
+ task_info = {
|
|
|
+ "id": task.id,
|
|
|
+ "children_task_id": task.children_task_id,
|
|
|
+ "point_name":task.inspection_point_name,
|
|
|
+ "area": area,
|
|
|
+ "create_time": task.create_time.strftime('%Y-%m-%d'),
|
|
|
+ "nick_name": task.nick_name,
|
|
|
+ "result": task.inspection_result,
|
|
|
+ "fileList": get_file_query_fun(db=db,from_scenario='RiskManagementRiskTaskChildrenTaskResult', foreign_key=task.id),
|
|
|
+ "remark":task.remark
|
|
|
+ }
|
|
|
+ InspectionTasks_list.append(task_info)
|
|
|
+ # 返回结果
|
|
|
+ return {
|
|
|
+ "code": 200,
|
|
|
+ "msg": "成功",
|
|
|
+ "data": InspectionTasks_list,
|
|
|
+ "total": total_items,
|
|
|
+ "page": page,
|
|
|
+ "pageSize": pageSize,
|
|
|
+ "totalPages": (total_items + pageSize - 1) // pageSize
|
|
|
+ }
|
|
|
+ except Exception as e:
|
|
|
+ # 处理异常
|
|
|
+ traceback.print_exc()
|
|
|
raise HTTPException(status_code=500, detail=str(e))
|