Ver Fonte

no message

libushang há 7 meses atrás
pai
commit
0dd3a2caf8

+ 2 - 1
models/__init__.py

@@ -14,4 +14,5 @@ from .video_base import *
 from .yzy_base import *
 from .pattern_base import *
 from .rain_base import *
-from .geojson_base import *
+from .geojson_base import *
+from .xxfb_base import *

+ 75 - 0
models/xxfb_base.py

@@ -0,0 +1,75 @@
+# -*- coding: utf-8 -*-
+from sqlalchemy import String, Column, Integer,DateTime, Text
+from sqlalchemy.sql import func
+from database import Base
+from datetime import datetime
+
+class InfoPublishBase(Base):
+    __tablename__ = 'infopublish_base'  # 表名
+
+    # 定义字段
+    id = Column(Integer, autoincrement=True, primary_key=True)  # 主键
+    title = Column(String, default='', server_default='', comment='标题')
+    dept_id = Column(Integer, default=None, comment='记录用户单位ID')
+    dept_name = Column(String, default='', server_default='', comment='记录用户单位名称')
+    template_id = Column(Integer, default=None, comment='信息模板ID')
+    content = Column(Text, default='', server_default='', comment='信息内容')
+    recorded_by = Column(Integer, default=None, comment='记录用户ID')
+    del_flag = Column(String, default='0', comment='删除标志(0代表存在 2代表删除)')
+    add_time = Column(DateTime, default=datetime.now, comment='录入时间')
+    response_type = Column(Integer, default='0', server_default='0', comment='消息反馈方式')
+    publish_time = Column(DateTime, default=datetime.now, comment='发布时间')
+    examine_by = Column(String, default='', server_default='', comment='审核人')
+    publish_status = Column(Integer, default='0', server_default='0', comment='发布状态')
+    examine_status = Column(Integer, default='0', server_default='0', comment='审批状态')
+    publish_channel = Column(String, default='', server_default='', comment='发布渠道')
+    publish_group = Column(String, default='', server_default='', comment='发布单位')
+    user_count = Column(Integer, default='0', server_default='0', comment='选择人数')
+    user_ok_count = Column(Integer, default='0', server_default='0', comment='成功人数')
+    user_err_count = Column(Integer, default='0', server_default='0', comment='失败人数')
+    user_sending_count = Column(Integer, default='0', server_default='0', comment='发送中人数')
+
+    class Config:
+        orm_mode = True
+
+
+class InfoPublishResponses(Base):
+    __tablename__ = 'infopublish_responses'  # 表名
+
+    # 定义字段
+    id = Column(Integer, autoincrement=True, primary_key=True)  # 主键
+    publish_id = Column(Integer, default='0', server_default='0', comment='主表ID')
+    user_id = Column(Integer, default='0', server_default='0', comment='主表ID')
+    user_name = Column(String, default='', server_default='', comment='账号名称')
+    nick_name = Column(String, default='', server_default='', comment='用户姓名')
+    dept_name = Column(String, default='', server_default='', comment='部门名称')
+    yzy_account = Column(String, default='', server_default='', comment='粤政易账号')
+    sent_status = Column(Integer, default='0', server_default='0', comment='发送状态')
+    sent_time = Column(DateTime, default=datetime.now, comment='发送时间')
+    response_type = Column(Integer, default='0', server_default='0', comment='反馈方式')
+    response_time = Column(DateTime, default=datetime.now, comment='反馈时间')
+
+    class Config:
+        orm_mode = True
+
+
+class InfoPublishFile(Base):
+    __tablename__ = 'infopublish_file'
+
+    id = Column(Integer, autoincrement=True, primary_key=True)
+    file_id = Column(String(50), nullable=False, comment='文件id')
+    file_name = Column(String(255), nullable=False, comment='文件名称')
+    file_name_desc = Column(String(255), nullable=False, comment='文件名称原名')
+    file_path = Column(String(255), comment='文件存储路径')
+    file_size = Column(String(50), comment='文件大小')
+    status = Column(String(50), comment='文件状态')
+    foreign_key = Column(String(50), comment='文件外键 --技术字段')
+    from_scenario = Column(String(50), comment='对应标识 --技术字段')
+    create_time = Column(DateTime, default=datetime.now, comment='数据创建时间')
+    update_time = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment='数据更新时间')
+    create_dept = Column(Integer, default=None, comment='创建部门')
+    create_by = Column(Integer, default=None, comment='创建者')
+    del_flag = Column(String(1), default='0', comment='删除标志(0代表存在 2代表删除)') #更新预案信息的时候 先将原有的进行备注删除
+
+    class Config:
+        orm_mode = True

+ 5 - 1
routers/api/__init__.py

@@ -20,6 +20,8 @@ from . import riskMonitor
 from . import temperaturePrecipitation
 from . import pattern
 from . import rainfall
+from . import infoPublish
+
 from routers.prod_api import system
 from routers.prod_api import auth
 
@@ -48,4 +50,6 @@ router.include_router(eventManagement.router, prefix="/event_management", tags=[
 router.include_router(spatialAnalysis.router, prefix="/spatial_analysis", tags=["空间分析"])
 router.include_router(pattern.router, prefix="/pattern", tags=["实时测绘"])
 
-router.include_router(rainfall.router, prefix="/rainfall", tags=["雨情分析"])
+router.include_router(rainfall.router, prefix="/rainfall", tags=["雨情分析"])
+
+router.include_router(infoPublish.router, prefix="/info_publish")

+ 10 - 0
routers/api/infoPublish/__init__.py

@@ -0,0 +1,10 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+from fastapi import APIRouter, Request, Depends
+
+from . import back
+
+router = APIRouter()
+
+router.include_router(back.router, prefix="/back", tags=["增删改"])

+ 117 - 0
routers/api/infoPublish/back.py

@@ -0,0 +1,117 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+from fastapi import APIRouter, Request, Depends, HTTPException, Query
+from sqlalchemy.exc import IntegrityError
+from fastapi.responses import HTMLResponse, FileResponse
+from fastapi.responses import JSONResponse
+from database import get_db
+from sqlalchemy import text, exists, and_, or_, not_
+from sqlalchemy.orm import Session
+from models import *
+import json
+import random
+from sqlalchemy import create_engine, select
+from typing import Optional
+from utils.StripTagsHTMLParser import *
+from common.db import db_event_management, db_user, db_area, db_emergency_plan
+from common.security import valid_access_token
+import traceback
+from utils import *
+from datetime import datetime, timedelta
+from common import YzyApi
+from common.db import db_dict
+from urllib.parse import quote
+import base64
+from config import settings
+
+router = APIRouter()
+
+@router.get('/list')
+async def get_publish_list(
+    publish_group: str = Query('', description='发布单位'),
+    publish_status: str = Query('', description='发布状态的字典键值'),
+    examine_status: str = Query('', description='审批状态的字典键值'),
+    sort_by: str = Query('', description='排序字段'),
+    sort_order: str = Query("asc", description='排序方式'),
+    page: int = Query(1, gt=0, description='页码'),
+    page_size: int = Query(10, gt=0, description='pageSize'),
+    db: Session = Depends(get_db)
+):
+    try:
+        # 应用查询条件
+        where = and_(InfoPublishBase.del_flag == '0')
+        if publish_status != '':
+            where = and_(where, InfoPublishBase.publish_status == publish_status)
+        if examine_status != '':
+            where = and_(where, InfoPublishBase.examine_status == examine_status)
+        if publish_group != '':
+            where = and_(where, InfoPublishBase.publish_group.like('%{}%'.format(publish_group)))
+        print(where)
+        
+        # 计算总条目数
+        q = db.query(func.count(InfoPublishBase.id))
+        q = q.filter(where)
+        total = q.scalar()
+        
+        # 执行分页查询
+        q = db.query(InfoPublishBase)
+        q = q.filter(where)
+        rows = q.order_by(InfoPublishBase.id.desc()).offset((page - 1) * page_size).limit(page_size).all()
+
+        data = []
+        for row in rows:
+            
+            # 发布申请人
+            recorded_by = row.recorded_by
+            
+            user_row = db.query(SysUser).filter(SysUser.user_id == recorded_by).first()
+            nick_name = ""
+            dept_name = ""
+            
+            if user_row is not None:
+                nick_name = user_row.nick_name
+                dept_id = user_row.dept_id
+                dept_row = db.query(SysDept).filter(SysDept.dept_id == dept_id).first()
+                if dept_row is not None:
+                    dept_name = dept_row.dept_name
+
+            # 待处理人
+            examine_user = "无"
+            examine_by = row.examine_by
+            user_row = db.query(SysUser).filter(SysUser.user_id == examine_by).first()
+            if user_row is not None:
+                examine_user = user_row.nick_name
+
+            data.append({
+                "id": row.id,
+                "title": row.title,
+                "publish_group": row.publish_group,
+                "content": row.content,
+                "publish_time": get_datetime_str(row.publish_time),
+                "publish_channel": row.publish_channel,
+                "nick_name": nick_name,
+                "dept_name": dept_name,
+
+                "examine_user": examine_user,
+                "publish_status": db_dict.get_dict_label(db, "mm_publish_status", row.publish_status),
+                "examine_status": db_dict.get_dict_label(db, "mm_examine_status", row.examine_status),
+
+                "user_count": row.user_count,
+                "user_ok_count": row.user_ok_count,
+                "user_err_count": row.user_err_count,
+                "user_sending_count": row.user_sending_count
+            })
+
+        # 返回结果
+        return {
+            "code": 200,
+            "msg": "查询成功",
+            "data": data,
+            "total": total
+        }
+
+    except Exception as e:
+        # 处理异常
+        traceback.print_exc()
+        raise HTTPException(status_code=500, detail=str(e))