__init__.py 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  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 sqlalchemy.orm import Session
  6. from sqlalchemy.sql import func
  7. from common.auth_user import *
  8. from sqlalchemy import text
  9. from pydantic import BaseModel
  10. from common.BigDataCenterAPI import *
  11. from database import get_db
  12. from typing import List
  13. from models import *
  14. from utils import *
  15. from utils.spatial import *
  16. import json
  17. import traceback
  18. router = APIRouter()
  19. @router.post("/create")
  20. async def create_pattern(
  21. user_id=Depends(valid_access_token),
  22. body = Depends(remove_xss_json),
  23. db: Session = Depends(get_db)
  24. ):
  25. new_pattern = TpPatternList(
  26. pattern_name=body['pattern_name'],
  27. content=body['content'],
  28. create_dept = user_id
  29. )
  30. db.add(new_pattern)
  31. db.commit()
  32. return {"code": 200, "msg": "创建成功", "data": None}
  33. @router.put("/update/{pattern_id}")
  34. async def update_pattern(
  35. pattern_id :int ,
  36. user_id=Depends(valid_access_token),
  37. body=Depends(remove_xss_json),
  38. db: Session = Depends(get_db)
  39. ):
  40. query = db.query(TpPatternList)
  41. query = query.filter(TpPatternList.id == pattern_id)
  42. query = query.filter(TpPatternList.del_flag != '2')
  43. update_pattern = query.first()
  44. if not update_pattern:
  45. raise HTTPException(status_code=404, detail="图案不存在")
  46. update_pattern.pattern_name = body['pattern_name']
  47. update_pattern.content = body['content']
  48. update_pattern.create_dept = user_id
  49. db.commit()
  50. return {"code": 200, "msg": "更新成功"}
  51. @router.get("/info/{pattern_id}")
  52. async def get_pattern_info(
  53. pattern_id: int,
  54. db: Session = Depends(get_db)
  55. ):
  56. query = db.query(TpPatternList)
  57. query = query.filter(TpPatternList.id == pattern_id)
  58. query = query.filter(TpPatternList.del_flag != '2')
  59. pattern = query.first()
  60. # pattern = db.query(TpPatternList).filter(TpPatternList.id == pattern_id).first()
  61. if not pattern:
  62. raise HTTPException(status_code=404, detail="图案不存在")
  63. return {"code": 200, "msg": "获取成功", "data": {"pattern_name": pattern.pattern_name, "content": pattern.content}}
  64. @router.get("/list")
  65. async def get_pattern_list(
  66. pattern_name: str = Query(None, description='预案名称'),
  67. page: int = Query(1, gt=0, description='页码'),
  68. pageSize: int = Query(5, gt=0, description='每页条目数量'),
  69. db: Session = Depends(get_db)
  70. ):
  71. query = db.query(TpPatternList)
  72. query = query.filter(TpPatternList.del_flag != '2')
  73. if pattern_name:
  74. query = query.filter(TpPatternList.pattern_name.like(f'%{pattern_name}%'))
  75. total_items = query.count()
  76. # 排序
  77. query = query.order_by(TpPatternList.create_time.desc())
  78. # 执行分页查询
  79. patterns = query.offset((page - 1) * pageSize).limit(pageSize).all()
  80. return {"code": 200, "msg": "查询成功", "data": [{"id": p.id, "pattern_name": p.pattern_name, "content": p.content} for p in patterns],
  81. "total": total_items,
  82. "page": page,
  83. "pageSize": pageSize,
  84. "totalPages": (total_items + pageSize - 1) // pageSize
  85. }
  86. @router.delete("/delete/{pattern_id}")
  87. async def delete_pattern(
  88. pattern_id: int,
  89. db: Session = Depends(get_db)
  90. ):
  91. # 检查图案是否存在
  92. query = db.query(TpPatternList)
  93. query = query.filter(TpPatternList.id == pattern_id)
  94. query = query.filter(TpPatternList.del_flag != '2')
  95. pattern = query.first()
  96. if not pattern:
  97. raise HTTPException(status_code=404, detail="图案不存在")
  98. # 执行删除操作
  99. pattern.del_flag='2'
  100. db.commit()
  101. return {"code": 200, "msg": "删除成功"}