#!/usr/bin/env python3 # -*- coding: utf-8 -*- from fastapi import APIRouter, Request, Depends, Query, HTTPException, status from common.security import valid_access_token from pydantic import BaseModel from database import get_db from sqlalchemy.orm import Session from typing import List from models import * from utils import * from utils.ry_system_util import * import json from sqlalchemy.sql import func from common.enc import mpfun, sys_dept_data from common.auth_user import * from common.db import db_czrz import traceback router = APIRouter() @router.get('/list') async def get_list( # request: Request, operIp: str = Query(None, max_length=100), operName:str = Query(None, max_length=100), title: str = Query(None, max_length=100), params: str = Query(None, max_length=100), dateRange: str = Query(None, max_length=100), pageNum: int = Query(1, gt=0, description="页码"), pageSize: int = Query(10, gt=0, le=100, description="每页大小"), db: Session = Depends(get_db), user_id = Depends(valid_access_token), ): print(params) query = db.query(CzrzEntity) query = query.filter(CzrzEntity.action != '应急一张图') if operIp: query = query.filter(CzrzEntity.ip.like(f'%{operIp}%')) if operName: query = query.filter(CzrzEntity.nick_name.like(f'%{operName}%')) if title: query = query.filter(CzrzEntity.action.like(f'%{title}%')) if dateRange: start_date, end_date = dateRange.split('-') # start_date = datetime.strptime(start_date, "%Y-%m-%d") # end_date = datetime.strptime(end_date, "%Y-%m-%d") + timedelta(days=1) query = query.filter(CzrzEntity.gxsj.between(start_date, end_date)) total_count = query.count() offset = (pageNum - 1) * pageSize query = query.order_by(CzrzEntity.gxsj.desc()).offset(offset).limit(pageSize) czrz_list = query.all() # 将模型实例转换为字典 czrz_list_dict = [{ "operIp": item.ip, "operName": item.nick_name, "title": item.action, "czrz": item.czrz, "operTime": item.gxsj.strftime('%Y-%m-%d %H:%M:%S') if item.gxsj else '', } for item in czrz_list] return { "code": 200, "msg": "操作成功", "rows": czrz_list_dict, 'pages': (total_count + pageSize - 1) // pageSize, 'total': total_count, "currentPage": pageNum, "pageSize": pageSize, } @router.get('/yjdplist') async def get_list( # request: Request, operIp: str = Query(None, max_length=100), operName:str = Query(None, max_length=100), title: str = Query(None, max_length=100), params: str = Query(None, max_length=100), dateRange: str = Query(None, max_length=100), pageNum: int = Query(1, gt=0, description="页码"), pageSize: int = Query(10, gt=0, le=100, description="每页大小"), db: Session = Depends(get_db), user_id = Depends(valid_access_token), ): query = db.query(CzrzEntity) query = query.filter(CzrzEntity.action == '应急一张图') if operIp: query = query.filter(CzrzEntity.ip.like(f'%{operIp}%')) if operName: query = query.filter(CzrzEntity.nick_name.like(f'%{operName}%')) if title: query = query.filter(CzrzEntity.action.like(f'%{title}%')) if dateRange: start_date, end_date = dateRange.split('-') # start_date = datetime.strptime(start_date, "%Y-%m-%d") # end_date = datetime.strptime(end_date, "%Y-%m-%d") + timedelta(days=1) query = query.filter(CzrzEntity.gxsj.between(start_date, end_date)) total_count = query.count() offset = (pageNum - 1) * pageSize query = query.order_by(CzrzEntity.gxsj.desc()).offset(offset).limit(pageSize) czrz_list = query.all() # 将模型实例转换为字典 czrz_list_dict = [{ "operIp": item.ip, "operName": item.nick_name, "title": item.action, "czrz": item.czrz, "operTime": item.gxsj.strftime('%Y-%m-%d %H:%M:%S') if item.gxsj else '', } for item in czrz_list] return { "code": 200, "msg": "操作成功", "rows": czrz_list_dict, 'pages': (total_count + pageSize - 1) // pageSize, 'total': total_count, "currentPage": pageNum, "pageSize": pageSize, }