|
@@ -0,0 +1,194 @@
|
|
|
+#!/usr/bin/env python3
|
|
|
+# -*- coding: utf-8 -*-
|
|
|
+
|
|
|
+from fastapi import APIRouter, Request, Depends,Query, HTTPException, status
|
|
|
+from common.security import valid_access_token
|
|
|
+from fastapi.responses import JSONResponse
|
|
|
+from sqlalchemy.orm import Session
|
|
|
+from sqlalchemy import and_, or_
|
|
|
+from pydantic import BaseModel
|
|
|
+from datetime import datetime
|
|
|
+from database import get_db
|
|
|
+from typing import List
|
|
|
+from models import *
|
|
|
+from utils import *
|
|
|
+import json
|
|
|
+from common.db import db_dept
|
|
|
+import traceback
|
|
|
+from pprint import pprint
|
|
|
+
|
|
|
+from . import unit
|
|
|
+
|
|
|
+router = APIRouter()
|
|
|
+
|
|
|
+
|
|
|
+@router.get('/list')
|
|
|
+async def get_emergency_unit_list(
|
|
|
+ plan_id: str = Query(None, description='预案编号'),
|
|
|
+ page: int = Query(1, gt=0, description='页码'),
|
|
|
+ pageSize: int = Query(5, gt=0, description='每页条目数量'),
|
|
|
+ db: Session = Depends(get_db),
|
|
|
+ user_id = Depends(valid_access_token)
|
|
|
+):
|
|
|
+ try:
|
|
|
+ # 构建查询
|
|
|
+ query = db.query(EmergencyUnit)
|
|
|
+ # 应用查询条件
|
|
|
+ query = query.filter(EmergencyUnit.plan_id == plan_id)
|
|
|
+
|
|
|
+ # 计算总条目数
|
|
|
+ total_items = query.count()
|
|
|
+ query = query.order_by(EmergencyUnit.dept_order.asc())
|
|
|
+
|
|
|
+ # 执行分页查询
|
|
|
+ rows = query.offset((page - 1) * pageSize).limit(pageSize).all()
|
|
|
+
|
|
|
+ # 将查询结果转换为列表形式的字典
|
|
|
+ emergency_unit_list = [
|
|
|
+ {
|
|
|
+ "id": row.id,
|
|
|
+ "dept_id": row.dept_id,
|
|
|
+ "dept_name": row.dept_name,
|
|
|
+ "content": row.content,
|
|
|
+ "dept_order":row.dept_order
|
|
|
+ }
|
|
|
+ for row in rows
|
|
|
+ ]
|
|
|
+
|
|
|
+ # 返回结果
|
|
|
+ return {
|
|
|
+ "code": 200,
|
|
|
+ "msg": "查询成功",
|
|
|
+ "data": emergency_unit_list,
|
|
|
+ "total": total_items
|
|
|
+ }
|
|
|
+ except Exception as e:
|
|
|
+ # 处理异常
|
|
|
+ raise HTTPException(status_code=500, detail=str(e))
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+@router.post('/create')
|
|
|
+async def create_emergency_unit(
|
|
|
+ db: Session = Depends(get_db),
|
|
|
+ body = Depends(remove_xss_json),
|
|
|
+ user_id = Depends(valid_access_token)
|
|
|
+):
|
|
|
+ try:
|
|
|
+ # 提取请求数据
|
|
|
+ plan_id = body['plan_id']
|
|
|
+ dept_id = body['dept_id']
|
|
|
+ dept_name = db_dept.get_dept_name_by_id(db, dept_id)
|
|
|
+ content = body['content']
|
|
|
+ dept_order = body['dept_order']
|
|
|
+
|
|
|
+ # 创建新的预案记录
|
|
|
+ new_unit = EmergencyUnit(
|
|
|
+ plan_id = plan_id,
|
|
|
+ dept_id = dept_id,
|
|
|
+ dept_name = dept_name,
|
|
|
+ content = content,
|
|
|
+ dept_order = dept_order
|
|
|
+ )
|
|
|
+
|
|
|
+ db.add(new_unit)
|
|
|
+ db.commit()
|
|
|
+ db.refresh(new_unit)
|
|
|
+
|
|
|
+ return {
|
|
|
+ "code": 200,
|
|
|
+ "msg": "单位职责创建成功",
|
|
|
+ "data": None
|
|
|
+ }
|
|
|
+ except Exception as e:
|
|
|
+ # 处理异常
|
|
|
+ raise HTTPException(status_code=500, detail=str(e))
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+@router.put('/update')
|
|
|
+async def update_emergency_unit(
|
|
|
+ db: Session = Depends(get_db),
|
|
|
+ body = Depends(remove_xss_json),
|
|
|
+ user_id = Depends(valid_access_token)
|
|
|
+):
|
|
|
+ try:
|
|
|
+ # 提取请求数据
|
|
|
+ id = body['id']
|
|
|
+ plan_id = body['plan_id']
|
|
|
+ dept_id = body['dept_id']
|
|
|
+ dept_name = db_dept.get_dept_name_by_id(db, dept_id)
|
|
|
+ content = body['content']
|
|
|
+ dept_order = body['dept_order']
|
|
|
+
|
|
|
+ query = db.query(EmergencyUnit)
|
|
|
+ query = query.filter(EmergencyUnit.id == id)
|
|
|
+ unit = query.first()
|
|
|
+
|
|
|
+ unit.plan_id = plan_id
|
|
|
+ unit.dept_id = dept_id
|
|
|
+ unit.dept_name = dept_name
|
|
|
+ unit.content = content
|
|
|
+ unit.dept_order = dept_order
|
|
|
+
|
|
|
+ # 提交所有更新
|
|
|
+ db.commit()
|
|
|
+
|
|
|
+ # 返回更新成功的响应
|
|
|
+ return {
|
|
|
+ "code": 200,
|
|
|
+ "msg": "单位职责更新成功",
|
|
|
+ "data": None
|
|
|
+ }
|
|
|
+
|
|
|
+ except Exception as e:
|
|
|
+ traceback.print_exc()
|
|
|
+ # 处理异常
|
|
|
+ raise HTTPException(status_code=500, detail=str(e))
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+@router.delete('/delete')
|
|
|
+async def delete_emergency_unit(
|
|
|
+ db: Session = Depends(get_db),
|
|
|
+ body = Depends(remove_xss_json),
|
|
|
+ user_id = Depends(valid_access_token)
|
|
|
+):
|
|
|
+ try:
|
|
|
+ ids = body['ids']
|
|
|
+ for id in ids:
|
|
|
+ db.query(EmergencyUnit).filter(EmergencyUnit.id == id).delete()
|
|
|
+ db.commit()
|
|
|
+
|
|
|
+ return {
|
|
|
+ "code": 200,
|
|
|
+ "msg": "单位职责删除成功",
|
|
|
+ "data": None
|
|
|
+ }
|
|
|
+ except Exception as e:
|
|
|
+ traceback.print_exc()
|
|
|
+ # 处理异常
|
|
|
+ raise HTTPException(status_code=500, detail=str(e))
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+@router.get('/{id}')
|
|
|
+async def get_emergency_unit(
|
|
|
+ id: int,
|
|
|
+ db: Session = Depends(get_db),
|
|
|
+ body = Depends(remove_xss_json),
|
|
|
+ user_id = Depends(valid_access_token)
|
|
|
+):
|
|
|
+ try:
|
|
|
+ # 执行查询
|
|
|
+ unit = db.query(EmergencyUnit).filter(EmergencyUnit.id == id).first()
|
|
|
+ # 返回结果
|
|
|
+ return {
|
|
|
+ "code": 200,
|
|
|
+ "msg": "成功",
|
|
|
+ "data": get_model_dict(unit)
|
|
|
+ }
|
|
|
+ except Exception as e:
|
|
|
+ traceback.print_exc()
|
|
|
+ # 处理异常
|
|
|
+ raise HTTPException(status_code=500, detail=str(e))
|