|
@@ -26,9 +26,11 @@ import base64
|
|
|
from io import BytesIO
|
|
|
from PIL import Image
|
|
|
from config import settings
|
|
|
-
|
|
|
+from utils.riskManagement_uitl import get_task_title_by_type, get_rescue_resources_task_title_by_type
|
|
|
router = APIRouter()
|
|
|
|
|
|
+# 消息中心
|
|
|
+
|
|
|
@router.post("/unread_msg_count")
|
|
|
async def msg_count(
|
|
|
request: Request,
|
|
@@ -95,4 +97,209 @@ async def send_yzy_msg(request: Request,
|
|
|
return {
|
|
|
"code": 200,
|
|
|
"msg": "消息暂存成功"
|
|
|
- }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+@router.get('/list')
|
|
|
+async def get_center_list(
|
|
|
+ search_keyword: str = Query('', description='信息内容'),
|
|
|
+ info_type: str = Query('', description='类型'),
|
|
|
+ page: int = Query(1, gt=0, description='页码'),
|
|
|
+ begin_time_s: str = Query(None, description='开始时间'),
|
|
|
+ end_time_s: str = Query(None, description='结束时间'),
|
|
|
+ info_order: str = Query("desc", description='时间排序'),
|
|
|
+ page_size: int = Query(10, gt=0, description='pageSize'),
|
|
|
+ db: Session = Depends(get_db),
|
|
|
+ user_id = Depends(valid_access_token)
|
|
|
+):
|
|
|
+ try:
|
|
|
+ # 应用查询条件
|
|
|
+ where = and_(MsgCenter.del_flag == '0', MsgCenter.recv_userid == user_id)
|
|
|
+ if search_keyword != '':
|
|
|
+ where = and_(where, MsgCenter.content.like('%{}%'.format(search_keyword)))
|
|
|
+ if info_type != '':
|
|
|
+ where = and_(where, MsgCenter.msg_type == info_type)
|
|
|
+ if begin_time_s != None:
|
|
|
+ begin_time = datetime.strptime(begin_time_s, "%Y-%m-%d")
|
|
|
+ where = and_(where, MsgCenter.recv_time >= begin_time)
|
|
|
+ if end_time_s != None:
|
|
|
+ end_time = datetime.strptime(end_time_s, "%Y-%m-%d") + timedelta(days=1)
|
|
|
+ where = and_(where, MsgCenter.recv_time < end_time)
|
|
|
+ print(where)
|
|
|
+
|
|
|
+ # 计算总条目数
|
|
|
+ q = db.query(func.count(MsgCenter.id))
|
|
|
+ q = q.filter(where)
|
|
|
+ total = q.scalar()
|
|
|
+
|
|
|
+ # 执行分页查询
|
|
|
+ q = db.query(MsgCenter)
|
|
|
+ q = q.filter(where)
|
|
|
+
|
|
|
+ if info_order == 'desc':
|
|
|
+ q = q.order_by(MsgCenter.recv_time.desc())
|
|
|
+ if info_order == 'asc':
|
|
|
+ q = q.order_by(MsgCenter.recv_time.asc())
|
|
|
+
|
|
|
+ rows = q.offset((page - 1) * page_size).limit(page_size).all()
|
|
|
+
|
|
|
+ data = []
|
|
|
+ for row in rows:
|
|
|
+ foreign_key = row.foreign_key
|
|
|
+ from_scenario = row.from_scenario
|
|
|
+
|
|
|
+ detail = {}
|
|
|
+
|
|
|
+ if row.msg_type == '任务消息':
|
|
|
+ try:
|
|
|
+ task_info = db.query(TaskRegistration).filter(TaskRegistration.task_id == foreign_key).first()
|
|
|
+ event_code = task_info.event_code
|
|
|
+
|
|
|
+ event_info = db.query(EventBase).filter(EventBase.event_code == event_code).first()
|
|
|
+ detail = {
|
|
|
+ "event_title": event_info.event_title,
|
|
|
+ "creation_time": get_datetime_str(task_info.creation_time),
|
|
|
+ "task_description": task_info.task_description,
|
|
|
+ "detail_url": "/infoDetails?id="+str(row.id)
|
|
|
+ }
|
|
|
+ except:
|
|
|
+ traceback.print_exc()
|
|
|
+
|
|
|
+ elif row.msg_type == '预案通知':
|
|
|
+ try:
|
|
|
+ notify_info = db.query(EventEmergencyNotify).filter(EventEmergencyNotify.id == foreign_key).first()
|
|
|
+ event_id = notify_info.event_id
|
|
|
+ plan_id = notify_info.plan_id
|
|
|
+ sent_time = notify_info.sent_time
|
|
|
+
|
|
|
+ plan_info = db.query(EmergencyPlan).filter(EmergencyPlan.plan_number == plan_id).first()
|
|
|
+ plan_name = plan_info.plan_name
|
|
|
+
|
|
|
+ event_info = db.query(EventBase).filter(EventBase.event_code == event_id).first()
|
|
|
+ response_level = db_dict.get_dict_label(db, "response_level", event_info.response_level)
|
|
|
+
|
|
|
+ detail = {
|
|
|
+ "title": row.title,
|
|
|
+ "organizing_unit": plan_info.organizing_unit, # 发布单位
|
|
|
+ "plan_name": plan_name, # 预案名称
|
|
|
+ "response_level": response_level, # 相应级别
|
|
|
+ "sent_time": get_datetime_str(sent_time), # 发送时间
|
|
|
+ "yzy_content": notify_info.yzy_content, # 消息内容
|
|
|
+ "detail_url": "/infoDetails?id="+str(row.id)
|
|
|
+ }
|
|
|
+ except:
|
|
|
+ traceback.print_exc()
|
|
|
+
|
|
|
+ elif row.msg_type == '在线点名':
|
|
|
+ try:
|
|
|
+ call_info = db.query(OnlineRollCallDetail).filter(OnlineRollCallDetail.id == foreign_key).first()
|
|
|
+ detail = {
|
|
|
+ "call_title": row.content,
|
|
|
+ "create_time": get_datetime_str(call_info.create_time), # 发送时间
|
|
|
+ "detail_url": "/infoDetails?id="+str(row.id)
|
|
|
+ }
|
|
|
+ except:
|
|
|
+ traceback.print_exc()
|
|
|
+
|
|
|
+ elif row.msg_type == '事件接报':
|
|
|
+ try:
|
|
|
+ event_info = db.query(EventBase).filter(EventBase.event_code == foreign_key).first()
|
|
|
+ detail = {
|
|
|
+ "event_title": row.title,
|
|
|
+ "address": event_info.address,
|
|
|
+ "event_level": db_dict.get_dict_label(db, "mm_event_level", event_info.event_level),
|
|
|
+ "event_time": get_datetime_str(event_info.event_time), # 事发时间
|
|
|
+ "detail_url": "/infoDetails?id="+str(row.id)
|
|
|
+ }
|
|
|
+ except:
|
|
|
+ traceback.print_exc()
|
|
|
+
|
|
|
+ elif row.msg_type == '隐患巡查':
|
|
|
+ try:
|
|
|
+ # task_info = db.query(RiskManagementInspectionTask).filter(RiskManagementInspectionTask.task_number == foreign_key).first()
|
|
|
+ # task_title = get_task_title_by_type(task_info.inspection_business)
|
|
|
+ detail = {
|
|
|
+ "detail_url": "/infoDetails?id="+str(row.id)
|
|
|
+ }
|
|
|
+ except:
|
|
|
+ traceback.print_exc()
|
|
|
+
|
|
|
+ elif row.msg_type == '风险排查':
|
|
|
+ try:
|
|
|
+ # task_info = db.query(RiskManagementRiskTask).filter(RiskManagementRiskTask.task_number == foreign_key).first()
|
|
|
+ # task_title = db_dict.get_dict_label(db, 'risk_type', task_info.risk_type)
|
|
|
+ detail = {
|
|
|
+ "detail_url": "/infoDetails?id="+str(row.id)
|
|
|
+ }
|
|
|
+ except:
|
|
|
+ traceback.print_exc()
|
|
|
+
|
|
|
+ elif row.msg_type == '数据采集':
|
|
|
+ try:
|
|
|
+ # task_info = db.query(RiskManagementRescueResourcesTask).filter(RiskManagementRescueResourcesTask.task_number == foreign_key).first()
|
|
|
+ # task_title = get_rescue_resources_task_title_by_type(task_info.type)
|
|
|
+ detail = {
|
|
|
+ "detail_url": "/infoDetails?id="+str(row.id)
|
|
|
+ }
|
|
|
+ except:
|
|
|
+ traceback.print_exc()
|
|
|
+
|
|
|
+ elif row.msg_type == '值班消息':
|
|
|
+ try:
|
|
|
+ detail = {
|
|
|
+ "detail_url": "/infoDetails?id="+str(row.id)
|
|
|
+ }
|
|
|
+
|
|
|
+ except:
|
|
|
+ traceback.print_exc()
|
|
|
+
|
|
|
+ elif row.msg_type == '审批消息':
|
|
|
+ try:
|
|
|
+ detail = {
|
|
|
+ "detail_url": "/infoDetails?id="+str(row.id)
|
|
|
+ }
|
|
|
+
|
|
|
+ except:
|
|
|
+ traceback.print_exc()
|
|
|
+
|
|
|
+ elif row.msg_type == '系统消息':
|
|
|
+ try:
|
|
|
+ detail = {
|
|
|
+ "detail_url": "/infoDetails?id="+str(row.id)
|
|
|
+ }
|
|
|
+
|
|
|
+ except:
|
|
|
+ traceback.print_exc()
|
|
|
+
|
|
|
+ # 信息发布
|
|
|
+ elif row.msg_type in ['预警信息', '灾情信息', '灾情信息', '指挥救援', '公众防范']:
|
|
|
+ try:
|
|
|
+ info = db.query(InfoPublishBase).filter(InfoPublishBase.id == foreign_key).first()
|
|
|
+ detail = {
|
|
|
+ "detail_url": "/infoDetails?id="+str(info.id)
|
|
|
+ }
|
|
|
+
|
|
|
+ except:
|
|
|
+ traceback.print_exc()
|
|
|
+
|
|
|
+ data.append({
|
|
|
+ "id": row.id,
|
|
|
+ "msg_type": row.msg_type,
|
|
|
+ "title": row.title,
|
|
|
+ "content": row.content,
|
|
|
+ "recv_time": get_datetime_str(row.recv_time),
|
|
|
+ "detail": detail
|
|
|
+ })
|
|
|
+
|
|
|
+ # 返回结果
|
|
|
+ return {
|
|
|
+ "code": 200,
|
|
|
+ "msg": "查询成功",
|
|
|
+ "data": data,
|
|
|
+ "total": total
|
|
|
+ }
|
|
|
+
|
|
|
+ except Exception as e:
|
|
|
+ # 处理异常
|
|
|
+ traceback.print_exc()
|
|
|
+ raise HTTPException(status_code=500, detail=str(e))
|