__init__.py 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  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 pydantic import BaseModel
  6. from database import get_db
  7. from sqlalchemy.orm import Session
  8. from typing import List
  9. from models import *
  10. from utils import *
  11. from utils.ry_system_util import *
  12. import json
  13. from sqlalchemy.sql import func
  14. from common.enc import mpfun, sys_dept_data
  15. from common.auth_user import *
  16. from common.db import db_czrz
  17. import traceback
  18. router = APIRouter()
  19. @router.get('/list')
  20. async def get_list(
  21. # request: Request,
  22. operIp: str = Query(None, max_length=100),
  23. operName:str = Query(None, max_length=100),
  24. title: str = Query(None, max_length=100),
  25. params: str = Query(None, max_length=100),
  26. dateRange: str = Query(None, max_length=100),
  27. pageNum: int = Query(1, gt=0, description="页码"),
  28. pageSize: int = Query(10, gt=0, le=100, description="每页大小"),
  29. db: Session = Depends(get_db),
  30. user_id = Depends(valid_access_token),
  31. ):
  32. print(params)
  33. query = db.query(CzrzEntity)
  34. query = query.filter(CzrzEntity.action != '应急一张图')
  35. if operIp:
  36. query = query.filter(CzrzEntity.ip.like(f'%{operIp}%'))
  37. if operName:
  38. query = query.filter(CzrzEntity.nick_name.like(f'%{operName}%'))
  39. if title:
  40. query = query.filter(CzrzEntity.action.like(f'%{title}%'))
  41. if dateRange:
  42. start_date, end_date = dateRange.split('-')
  43. # start_date = datetime.strptime(start_date, "%Y-%m-%d")
  44. # end_date = datetime.strptime(end_date, "%Y-%m-%d") + timedelta(days=1)
  45. query = query.filter(CzrzEntity.gxsj.between(start_date, end_date))
  46. total_count = query.count()
  47. offset = (pageNum - 1) * pageSize
  48. query = query.order_by(CzrzEntity.gxsj.desc()).offset(offset).limit(pageSize)
  49. czrz_list = query.all()
  50. # 将模型实例转换为字典
  51. czrz_list_dict = [{
  52. "operIp": item.ip,
  53. "operName": item.nick_name,
  54. "title": item.action,
  55. "czrz": item.czrz,
  56. "operTime": item.gxsj.strftime('%Y-%m-%d %H:%M:%S') if item.gxsj else '',
  57. } for item in czrz_list]
  58. return {
  59. "code": 200,
  60. "msg": "操作成功",
  61. "rows": czrz_list_dict,
  62. 'pages': (total_count + pageSize - 1) // pageSize,
  63. 'total': total_count,
  64. "currentPage": pageNum,
  65. "pageSize": pageSize,
  66. }
  67. @router.get('/yjdplist')
  68. async def get_list(
  69. # request: Request,
  70. operIp: str = Query(None, max_length=100),
  71. operName:str = Query(None, max_length=100),
  72. title: str = Query(None, max_length=100),
  73. params: str = Query(None, max_length=100),
  74. dateRange: str = Query(None, max_length=100),
  75. pageNum: int = Query(1, gt=0, description="页码"),
  76. pageSize: int = Query(10, gt=0, le=100, description="每页大小"),
  77. db: Session = Depends(get_db),
  78. user_id = Depends(valid_access_token),
  79. ):
  80. query = db.query(CzrzEntity)
  81. query = query.filter(CzrzEntity.action == '应急一张图')
  82. if operIp:
  83. query = query.filter(CzrzEntity.ip.like(f'%{operIp}%'))
  84. if operName:
  85. query = query.filter(CzrzEntity.nick_name.like(f'%{operName}%'))
  86. if title:
  87. query = query.filter(CzrzEntity.action.like(f'%{title}%'))
  88. if dateRange:
  89. start_date, end_date = dateRange.split('-')
  90. # start_date = datetime.strptime(start_date, "%Y-%m-%d")
  91. # end_date = datetime.strptime(end_date, "%Y-%m-%d") + timedelta(days=1)
  92. query = query.filter(CzrzEntity.gxsj.between(start_date, end_date))
  93. total_count = query.count()
  94. offset = (pageNum - 1) * pageSize
  95. query = query.order_by(CzrzEntity.gxsj.desc()).offset(offset).limit(pageSize)
  96. czrz_list = query.all()
  97. # 将模型实例转换为字典
  98. czrz_list_dict = [{
  99. "operIp": item.ip,
  100. "operName": item.nick_name,
  101. "title": item.action,
  102. "czrz": item.czrz,
  103. "operTime": item.gxsj.strftime('%Y-%m-%d %H:%M:%S') if item.gxsj else '',
  104. } for item in czrz_list]
  105. return {
  106. "code": 200,
  107. "msg": "操作成功",
  108. "rows": czrz_list_dict,
  109. 'pages': (total_count + pageSize - 1) // pageSize,
  110. 'total': total_count,
  111. "currentPage": pageNum,
  112. "pageSize": pageSize,
  113. }
  114. # 事件指挥日志
  115. @router.get('/event_log')
  116. async def get_list(
  117. # request: Request,
  118. operIp: str = Query(None, max_length=100),
  119. operName:str = Query(None, max_length=100),
  120. title: str = Query(None, max_length=100),
  121. params: str = Query(None, max_length=100),
  122. dateRange: str = Query(None, max_length=100),
  123. pageNum: int = Query(1, gt=0, description="页码"),
  124. pageSize: int = Query(10, gt=0, le=100, description="每页大小"),
  125. db: Session = Depends(get_db),
  126. user_id = Depends(valid_access_token),
  127. ):
  128. print(params)
  129. query = db.query(CzrzEntity)
  130. query = query.filter(CzrzEntity.action == '应急一张图')
  131. query = query.filter(CzrzEntity.czrz != '大屏登录成功')
  132. if operIp:
  133. query = query.filter(CzrzEntity.ip.like(f'%{operIp}%'))
  134. if operName:
  135. query = query.filter(CzrzEntity.nick_name.like(f'%{operName}%'))
  136. if title:
  137. query = query.filter(CzrzEntity.action.like(f'%{title}%'))
  138. if dateRange:
  139. start_date, end_date = dateRange.split('-')
  140. # start_date = datetime.strptime(start_date, "%Y-%m-%d")
  141. # end_date = datetime.strptime(end_date, "%Y-%m-%d") + timedelta(days=1)
  142. query = query.filter(CzrzEntity.gxsj.between(start_date, end_date))
  143. total_count = query.count()
  144. offset = (pageNum - 1) * pageSize
  145. query = query.order_by(CzrzEntity.gxsj.desc()).offset(offset).limit(pageSize)
  146. czrz_list = query.all()
  147. # 将模型实例转换为字典
  148. czrz_list_dict = [{
  149. "operIp": item.ip,
  150. "operName": item.nick_name,
  151. "title": item.action,
  152. "czrz": item.czrz,
  153. "operTime": item.gxsj.strftime('%Y-%m-%d %H:%M:%S') if item.gxsj else '',
  154. } for item in czrz_list]
  155. return {
  156. "code": 200,
  157. "msg": "操作成功",
  158. "rows": czrz_list_dict,
  159. 'pages': (total_count + pageSize - 1) // pageSize,
  160. 'total': total_count,
  161. "currentPage": pageNum,
  162. "pageSize": pageSize,
  163. }