123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194 |
- #!/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))
|