Sfoglia il codice sorgente

Merge branch 'master' of https://gogs.tjp.com.cn/maoming/python-fastapi-mm-zhcs-yj-api

libushang 8 mesi fa
parent
commit
94ef18bb4b
4 ha cambiato i file con 127 aggiunte e 2 eliminazioni
  1. 2 1
      models/__init__.py
  2. 19 0
      models/pattern_base.py
  3. 4 1
      routers/api/__init__.py
  4. 102 0
      routers/api/pattern/__init__.py

+ 2 - 1
models/__init__.py

@@ -11,4 +11,5 @@ from .yjya_base import *
 from .event_base import *
 from .taskRegistration_base import *
 from .video_base import *
-from .yzy_base import *
+from .yzy_base import *
+from .pattern_base import *

+ 19 - 0
models/pattern_base.py

@@ -0,0 +1,19 @@
+from sqlalchemy import Column, Integer, String, JSON, create_engine,DateTime,BigInteger
+from sqlalchemy.ext.declarative import declarative_base
+from sqlalchemy.orm import sessionmaker
+from database import Base
+from datetime import datetime
+
+class TpPatternList(Base):
+    __tablename__ = 'tp_pattern_list'
+
+    id = Column(Integer, primary_key=True)
+    pattern_name = Column(String(255), nullable=True, comment='图案名称')
+    content = Column(JSON, nullable=True, comment='图案json')
+    del_flag = Column(String(1), default='0', comment='删除标志(0代表存在 2代表删除)')
+    create_time = Column(DateTime, default=datetime.now, comment='数据创建时间')
+    update_time = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment='数据更新时间')
+    create_dept = Column(BigInteger, default=None, comment='创建部门')
+    create_by = Column(BigInteger, default=None, comment='创建者')
+    class Config:
+        orm_mode = True

+ 4 - 1
routers/api/__init__.py

@@ -16,6 +16,8 @@ from . import emergencyPlans
 from . import eventManagement
 from . import spatialAnalysis
 from . import taskRegistration
+from . import pattern
+
 router = APIRouter()
 
 router.include_router(login_router)
@@ -32,4 +34,5 @@ router.include_router(taskRegistration.router, prefix="/taskRegistration")
 router.include_router(emergencyPlans.router, prefix="/emergency_plan")
 
 router.include_router(eventManagement.router, prefix="/event_management", tags=["事件管理"])
-router.include_router(spatialAnalysis.router, prefix="/spatial_analysis", tags=["空间分析"])
+router.include_router(spatialAnalysis.router, prefix="/spatial_analysis", tags=["空间分析"])
+router.include_router(pattern.router, prefix="/pattern", tags=["实施测绘"])

+ 102 - 0
routers/api/pattern/__init__.py

@@ -0,0 +1,102 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+from fastapi import APIRouter, Request, Depends, Query, HTTPException, status
+from common.security import valid_access_token
+from sqlalchemy.orm import Session
+from sqlalchemy.sql import func
+from common.auth_user import *
+from sqlalchemy import  text
+from pydantic import BaseModel
+from common.BigDataCenterAPI import *
+from database import get_db
+from typing import List
+from models import *
+from utils import *
+from utils.spatial import *
+import json
+import traceback
+
+router = APIRouter()
+
+@router.post("/create")
+async def create_pattern(
+    user_id=Depends(valid_access_token),
+    body = Depends(remove_xss_json),
+    db: Session = Depends(get_db)
+):
+    new_pattern = TpPatternList(
+        pattern_name=body['pattern_name'],
+        content=body['content'],
+        create_dept = user_id
+    )
+    db.add(new_pattern)
+    db.commit()
+    return {"code": 200, "msg": "创建成功", "data": None}
+
+@router.put("/update/{pattern_id}")
+async def update_pattern(
+    pattern_id :int ,
+    user_id=Depends(valid_access_token),
+    body=Depends(remove_xss_json),
+    db: Session = Depends(get_db)
+):
+
+    update_pattern = db.query(TpPatternList).filter(TpPatternList.id == pattern_id).first()
+    if not update_pattern:
+        raise HTTPException(status_code=404, detail="图案不存在")
+
+    update_pattern.pattern_name = body['pattern_name']
+    update_pattern.content = body['content']
+    update_pattern.create_dept = user_id
+    db.commit()
+    return {"code": 200, "msg": "更新成功"}
+
+@router.get("/info/{pattern_id}")
+async def get_pattern_info(
+    pattern_id: int,
+    db: Session = Depends(get_db)
+):
+    pattern = db.query(TpPatternList).filter(TpPatternList.id == pattern_id).first()
+    if not pattern:
+        raise HTTPException(status_code=404, detail="图案不存在")
+    return {"code": 200, "msg": "获取成功", "data": {"pattern_name": pattern.pattern_name, "content": pattern.content}}
+
+@router.get("/list")
+async def get_pattern_list(
+    pattern_name: str = Query(None, description='预案名称'),
+    page: int = Query(1, gt=0, description='页码'),
+    pageSize: int = Query(5, gt=0, description='每页条目数量'),
+    db: Session = Depends(get_db)
+):
+    query = db.query(TpPatternList)
+    if pattern_name:
+        query = query.filter(TpPatternList.pattern_namelike(f'%{pattern_name}%'))
+    total_items = query.count()
+
+    # 排序
+
+    query = query.order_by(TpPatternList.create_time.desc())
+    # 执行分页查询
+    patterns = query.offset((page - 1) * pageSize).limit(pageSize).all()
+    return {"code": 200, "msg": "查询成功", "data": [{"id": p.id, "pattern_name": p.pattern_name, "content": p.content} for p in patterns],
+            "total": total_items,
+            "page": page,
+            "pageSize": pageSize,
+            "totalPages": (total_items + pageSize - 1) // pageSize
+            }
+
+@router.delete("/delete/{pattern_id}")
+async def delete_pattern(
+    pattern_id: int,
+    db: Session = Depends(get_db)
+):
+    # 检查图案是否存在
+    pattern = db.query(TpPatternList).filter(TpPatternList.id == pattern_id).first()
+    if not pattern:
+        raise HTTPException(status_code=404, detail="图案不存在")
+
+    # 执行删除操作
+    pattern.del_flag='2'
+    db.commit()
+    return {"code": 200, "msg": "删除成功"}