db_event_management.py 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. from sqlalchemy.orm import Session
  4. from sqlalchemy import text, exists, and_, or_, not_
  5. from sqlalchemy.sql import func
  6. from database import get_db
  7. from models import *
  8. from extensions import logger
  9. from utils import *
  10. import random
  11. from . import db_user
  12. import copy
  13. from sqlalchemy import text, exists, and_, or_, not_
  14. EVENT_TRACK_LIST = [
  15. {"title": "事件登记", "event_status": "0", "tracking_time": "", "event_level": "", "recorded_by": ""},
  16. {"title": "进入指挥", "event_status": "1", "tracking_time": "", "event_level": "", "recorded_by": ""},
  17. {"title": "结束指挥", "event_status": "2", "tracking_time": "", "event_level": "", "recorded_by": ""},
  18. {"title": "关闭事件", "event_status": "3", "tracking_time": "", "event_level": "", "recorded_by": ""}
  19. ]
  20. def get_next_event_id(db: Session):
  21. while True:
  22. random_10_digit_number = random.randint(1000000000, 9999999999)
  23. eventId = 'YJSJ' + str(random_10_digit_number)
  24. it_exists = db.query(
  25. exists().where( EventBase.event_code == eventId )
  26. ).scalar()
  27. if it_exists == False:
  28. return eventId
  29. def get_event_status_track(db: Session, event_id: int):
  30. print(event_id)
  31. trace_list = copy.deepcopy(EVENT_TRACK_LIST)
  32. for n in trace_list:
  33. row = db.query(EventTracking).filter(and_(EventTracking.del_flag == '0', EventTracking.event_id == event_id, EventTracking.event_status == n['event_status'])).first()
  34. if row is not None:
  35. n['tracking_time'] = row.tracking_time.strftime("%m月%d日 %H:%M")
  36. n['event_level'] = row.event_level
  37. row = db.query(EventBase).filter(EventBase.id == event_id).first()
  38. active = int(row.event_status) + 1
  39. data = [
  40. {
  41. "title": n['title'],
  42. "description": n['tracking_time']
  43. }
  44. for n in trace_list
  45. ]
  46. return {
  47. "active": active,
  48. "items" : data
  49. }
  50. def get_event_level_track(db: Session, event_id: int):
  51. trace_list = copy.deepcopy(EVENT_TRACK_LIST)
  52. for n in trace_list:
  53. row = db.query(EventTracking).filter(and_(EventTracking.del_flag == '0', EventTracking.event_id == event_id, EventTracking.event_status == n['event_status'])).first()
  54. if row is not None:
  55. n['tracking_time'] = row.tracking_time.strftime("%Y/%m/%d %H:%M:%S")
  56. n['event_level'] = row.event_level
  57. n['recorded_by'] = row.recorded_by
  58. data = []
  59. for n in trace_list:
  60. if n['tracking_time'] != "":
  61. data.append({
  62. "name": db_user.get_nick_name_by_id(db, n['recorded_by']),
  63. "timestamp": n['tracking_time'],
  64. "level": n['event_level']
  65. })
  66. return data
  67. def get_summary_file_list(db: Session, event_id: int):
  68. rows = db.query(EventFile).filter(and_(EventFile.del_flag == '0', EventFile.event_id == event_id)).all()
  69. data = [
  70. {
  71. "file_name": row.file_name,
  72. # "url": "/api/event_management/event/download_file?file_id="+str(row.id)+"&event_id="+str(row.event_id)
  73. "url": row.storage_file_name
  74. }
  75. for row in rows
  76. ]
  77. return data
  78. def get_emergency_notify_count(db: Session, event_id: str):
  79. return db.query(EventEmergencyNotify).filter(EventEmergencyNotify.event_id == event_id).count()
  80. def get_event_title(db: Session, event_code: str) -> str:
  81. row = db.query(EventBase).filter(EventBase.event_code == event_code).first()
  82. if row is not None:
  83. event_title = row.event_title
  84. if event_title is None or event_title == '':
  85. event_title = '[暂无事件标题]'
  86. return event_title
  87. else:
  88. return event_code
  89. def get_briefing_file_list(db: Session, event_id: int):
  90. rows = db.query(EventFile).filter(and_(EventFile.del_flag == '0', EventFile.event_id == event_id)).all()
  91. data = [
  92. {
  93. "uid": row.id,
  94. "file_name": row.file_name,
  95. "url": row.storage_file_name
  96. }
  97. for row in rows
  98. ]
  99. return data