libushang 1 hete
szülő
commit
68c7b08fe4

+ 12 - 0
common/db/db_event_management.py

@@ -112,3 +112,15 @@ def get_briefing_file_list(db: Session, event_id: int):
         for row in rows
     ]
     return data
+
+def get_injuries_count(db: Session, event_id: str):
+    c1 = db.query(func.sum(EventCasualties.injuries)).filter(EventCasualties.event_id == event_id).scalar()
+    if c1 is None:
+        c1 = 0
+    return c1
+
+def get_deaths_count(db: Session, event_id: str):
+    c1 = db.query(func.sum(EventCasualties.deaths)).filter(EventCasualties.event_id == event_id).scalar()
+    if c1 is None:
+        c1 = 0
+    return c1

+ 9 - 3
routers/api/eventManagement/event.py

@@ -3,7 +3,7 @@ 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 import text, exists, and_, or_, not_, extract
 from sqlalchemy.orm import Session
 from models import *
 import json
@@ -134,7 +134,7 @@ async def get_event_list(
     event_time: str = Query('', description='事发时间'),
     region_code: str = Query('', description='行政区划代码'),
     keyword: str = Query('', description='根据事件标题或描述中的关键字进行模糊搜索'),
-    
+    year: str = Query('', description='年份'),
     sort_by: str = Query('', description='排序字段'),
     sort_order: str = Query("asc", description='排序方式'),
     page: int = Query(1, gt=0, description='页码'),
@@ -158,6 +158,8 @@ async def get_event_list(
             where = and_(where, EventBase.region_code.like('{}%'.format(region_code)))
         if keyword != '':
             where = and_(where, or_(EventBase.event_title.like('%{}%'.format(keyword)), EventBase.address.like('%{}%'.format(keyword))))
+        if year != '':
+            where = and_(where, extract('year', EventBase.event_time) == int(year))
         print(where)
         
         # 计算总条目数
@@ -181,6 +183,8 @@ async def get_event_list(
                 "address": row.address,
                 "event_time": get_datetime_str(row.event_time),
                 "create_time": get_datetime_str(row.create_time),
+                "injuries": db_event_management.get_injuries_count(db, row.event_code),
+                "deaths": db_event_management.get_deaths_count(db, row.event_code),
             }
             for row in rows
         ]
@@ -540,7 +544,9 @@ async def notice_bar(
                 'msg': '查询成功',
                 'data': {
                     'event_id': row.event_code,
-                    'event_title': row.event_title
+                    'event_title': row.event_title,
+                    'event_time': get_datetime_str(row.event_time),
+                    'event_description': row.event_description
                 }
             }
         else:

+ 44 - 2
routers/api/eventManagement/event_xp.py

@@ -3,7 +3,7 @@ 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 import text, exists, and_, or_, not_, extract, func
 from sqlalchemy.orm import Session
 from models import *
 import json
@@ -16,6 +16,7 @@ from common.security import valid_access_token
 import traceback
 from utils import *
 from datetime import datetime, timedelta
+from dateutil.relativedelta import relativedelta
 import os
 
 router = APIRouter()
@@ -300,4 +301,45 @@ async def get_info_detail(
         # 处理异常
         traceback.print_exc()
         raise HTTPException(status_code=500, detail=str(e))
-    
+    
+
+@router.get('/completed_trend')
+async def get_completed_trend(
+    request: Request, 
+    db: Session = Depends(get_db),
+    user_id = Depends(valid_access_token)):
+    
+    current_date = datetime.now()
+    xAxis = []
+    series = [[], [], [], []]
+    for n in range(-5, 1):
+        last_date = current_date + relativedelta(months=n)
+        last_year = last_date.year
+        last_month = last_date.month
+
+        last_date_str = datetime.strftime(last_date, "%Y-%m")
+        xAxis.append(last_date_str)
+
+        i = 0
+        for event_type in ['0', '1', '2', '3']:
+            c1 = db.query(func.count(EventBase.id)).filter(and_(
+                    EventBase.del_flag == '0',
+                    EventBase.event_type == event_type,
+                    extract('year', EventBase.event_time) == last_year,
+                    extract('month', EventBase.event_time) == last_month
+                )).scalar()
+            if c1 is None:
+                c1 = 0
+            series[i].append(c1)
+            i = i + 1
+
+    data = {
+        "xAxis":  xAxis,
+        "series": series
+    }
+
+    return {
+        "code": 200,
+        "msg": "查询成功",
+        "data": data
+    }