unit.py 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. from fastapi import APIRouter, Request, Depends,Query, HTTPException, status
  4. from common.security import valid_access_token
  5. from fastapi.responses import JSONResponse
  6. from sqlalchemy.orm import Session
  7. from sqlalchemy import and_, or_
  8. from pydantic import BaseModel
  9. from datetime import datetime
  10. from database import get_db
  11. from typing import List
  12. from models import *
  13. from utils import *
  14. import json
  15. from common.db import db_dept
  16. import traceback
  17. from pprint import pprint
  18. from . import unit
  19. router = APIRouter()
  20. @router.get('/list')
  21. async def get_emergency_unit_list(
  22. plan_id: str = Query(None, description='预案编号'),
  23. page: int = Query(1, gt=0, description='页码'),
  24. pageSize: int = Query(5, gt=0, description='每页条目数量'),
  25. db: Session = Depends(get_db),
  26. user_id = Depends(valid_access_token)
  27. ):
  28. try:
  29. # 构建查询
  30. query = db.query(EmergencyUnit)
  31. # 应用查询条件
  32. query = query.filter(EmergencyUnit.plan_id == plan_id)
  33. # 计算总条目数
  34. total_items = query.count()
  35. query = query.order_by(EmergencyUnit.dept_order.asc())
  36. # 执行分页查询
  37. rows = query.offset((page - 1) * pageSize).limit(pageSize).all()
  38. # 将查询结果转换为列表形式的字典
  39. emergency_unit_list = [
  40. {
  41. "id": row.id,
  42. "dept_id": row.dept_id,
  43. "dept_name": row.dept_name,
  44. "content": row.content,
  45. "dept_order":row.dept_order
  46. }
  47. for row in rows
  48. ]
  49. # 返回结果
  50. return {
  51. "code": 200,
  52. "msg": "查询成功",
  53. "data": emergency_unit_list,
  54. "total": total_items
  55. }
  56. except Exception as e:
  57. # 处理异常
  58. raise HTTPException(status_code=500, detail=str(e))
  59. @router.post('/create')
  60. async def create_emergency_unit(
  61. db: Session = Depends(get_db),
  62. body = Depends(remove_xss_json),
  63. user_id = Depends(valid_access_token)
  64. ):
  65. try:
  66. # 提取请求数据
  67. plan_id = body['plan_id']
  68. dept_id = body['dept_id']
  69. dept_name = db_dept.get_dept_name_by_id(db, dept_id)
  70. content = body['content']
  71. dept_order = body['dept_order']
  72. # 创建新的预案记录
  73. new_unit = EmergencyUnit(
  74. plan_id = plan_id,
  75. dept_id = dept_id,
  76. dept_name = dept_name,
  77. content = content,
  78. dept_order = dept_order
  79. )
  80. db.add(new_unit)
  81. db.commit()
  82. db.refresh(new_unit)
  83. return {
  84. "code": 200,
  85. "msg": "单位职责创建成功",
  86. "data": None
  87. }
  88. except Exception as e:
  89. # 处理异常
  90. raise HTTPException(status_code=500, detail=str(e))
  91. @router.put('/update')
  92. async def update_emergency_unit(
  93. db: Session = Depends(get_db),
  94. body = Depends(remove_xss_json),
  95. user_id = Depends(valid_access_token)
  96. ):
  97. try:
  98. # 提取请求数据
  99. id = body['id']
  100. plan_id = body['plan_id']
  101. dept_id = body['dept_id']
  102. dept_name = db_dept.get_dept_name_by_id(db, dept_id)
  103. content = body['content']
  104. dept_order = body['dept_order']
  105. query = db.query(EmergencyUnit)
  106. query = query.filter(EmergencyUnit.id == id)
  107. unit = query.first()
  108. unit.plan_id = plan_id
  109. unit.dept_id = dept_id
  110. unit.dept_name = dept_name
  111. unit.content = content
  112. unit.dept_order = dept_order
  113. # 提交所有更新
  114. db.commit()
  115. # 返回更新成功的响应
  116. return {
  117. "code": 200,
  118. "msg": "单位职责更新成功",
  119. "data": None
  120. }
  121. except Exception as e:
  122. traceback.print_exc()
  123. # 处理异常
  124. raise HTTPException(status_code=500, detail=str(e))
  125. @router.delete('/delete')
  126. async def delete_emergency_unit(
  127. db: Session = Depends(get_db),
  128. body = Depends(remove_xss_json),
  129. user_id = Depends(valid_access_token)
  130. ):
  131. try:
  132. ids = body['ids']
  133. for id in ids:
  134. db.query(EmergencyUnit).filter(EmergencyUnit.id == id).delete()
  135. db.commit()
  136. return {
  137. "code": 200,
  138. "msg": "单位职责删除成功",
  139. "data": None
  140. }
  141. except Exception as e:
  142. traceback.print_exc()
  143. # 处理异常
  144. raise HTTPException(status_code=500, detail=str(e))
  145. @router.get('/{id}')
  146. async def get_emergency_unit(
  147. id: int,
  148. db: Session = Depends(get_db),
  149. body = Depends(remove_xss_json),
  150. user_id = Depends(valid_access_token)
  151. ):
  152. try:
  153. # 执行查询
  154. unit = db.query(EmergencyUnit).filter(EmergencyUnit.id == id).first()
  155. # 返回结果
  156. return {
  157. "code": 200,
  158. "msg": "成功",
  159. "data": get_model_dict(unit)
  160. }
  161. except Exception as e:
  162. traceback.print_exc()
  163. # 处理异常
  164. raise HTTPException(status_code=500, detail=str(e))