libushang vor 14 Stunden
Ursprung
Commit
e7b7e15db8
2 geänderte Dateien mit 93 neuen und 3 gelöschten Zeilen
  1. 18 0
      models/event_base.py
  2. 75 3
      routers/api/eventManagement/event.py

+ 18 - 0
models/event_base.py

@@ -142,5 +142,23 @@ class EventLeaderUser(Base):
     mobile = Column(String, default="", comment='联系方式')
     del_flag = Column(String(1), default='0', comment='删除标志(0代表存在 2代表删除)')
 
+    class Config:
+        orm_mode = True
+
+
+# 事件伤亡情况
+class EventCasualties(Base):
+    __tablename__ = 'event_casualties'
+
+    id = Column(Integer, autoincrement=True, primary_key=True)
+    event_id = Column(String, default='', server_default='', nullable=False, comment='事件编号')
+    area_code = Column(String, default='', server_default='', nullable=False, comment='地区代码')
+    area_name = Column(String, default='', server_default='', nullable=False, comment='地区名称')
+    deaths = Column(Integer, default=0, comment='死亡人数')
+    injuries = Column(Integer, default=0, comment='受伤人数')
+    missing = Column(Integer, default=0, comment='失联人数')
+    transfer = Column(Integer, default=0, comment='紧急转移人数')
+    economic_loss = Column(Integer, default=0, comment='直接经济损失(万元)')
+
     class Config:
         orm_mode = True

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

@@ -423,6 +423,17 @@ async def close_event(
             db.add(event_tracking)
             db.commit()
 
+        if 'eventCasualties' in body:
+            # 删除旧数据
+            db.query(EventCasualties).filter(and_(EventCasualties.event_id == eventId)).delete()
+
+            event_casualties = [
+                EventCasualties(**i, event_id = eventId)
+                for i in body['eventCasualties']
+            ]
+            db.add_all(event_casualties)
+            db.commit()
+
         if 'fileNames' in body:
             # 删除旧数据
             db.query(EventFile).filter(and_(EventFile.foreign_key == eventId, EventFile.from_scenario == 'event_summary_file')).delete()
@@ -1117,7 +1128,7 @@ def get_sent_status_text(sent_status) -> str:
         return str(sent_status)
     
 
-# 上报伤亡情况
+# 上报伤亡情况(废弃)
 @router.post("/upload_casualties")
 async def upload_casualties(
     request: Request,  
@@ -1132,7 +1143,19 @@ async def upload_casualties(
     
     del body['event_id']
 
+    if 'eventCasualties' in body:
+        # 删除旧数据
+        db.query(EventCasualties).filter(and_(EventCasualties.event_id == eventId)).delete()
+
+        event_casualties = [
+            EventCasualties(**i, event_id = eventId)
+            for i in body['eventCasualties']
+        ]
+        db.add_all(event_casualties)
+        db.commit()
+
     # 标记已上传
+    body = {}
     body['casualties'] = '1'
     db.query(EventBase).filter(EventBase.event_code == eventId).update(body)
     db.commit()
@@ -1165,5 +1188,54 @@ async def upload_casualties(
 
     return {
         "code": 200,
-        "msg": "保存事件伤亡情况成功"
-    }
+        "msg": "保存成功"
+    }
+
+@router.post("/get_casualties")
+async def get_casualties(
+    request: Request,  
+    body = Depends(remove_xss_json), 
+    db: Session = Depends(get_db)
+):
+    eventId = body['event_id']
+
+    try:
+        q = db.query(EventCasualties)
+        where = and_(EventCasualties.event_id == eventId)
+        q = q.filter(where)
+        rows = q.order_by(EventCasualties.area_code.asc()).all()
+        data = [
+            {
+                "id": row.id,
+                "area_code": row.area_code,
+                "area_name": row.area_name,
+                "deaths": row.deaths,
+                "injuries": row.injuries,
+                "missing": row.missing,
+                "transfer": row.transfer,
+                "economic_loss": row.economic_loss
+            }
+            for row in rows
+        ]
+
+        if len(data) < 6:
+            data = [
+                { "area_code": '440900000000', "area_name": '茂名市', "injuries": 0, "missing": 0, "deaths": 0, "transfer": 0, "economic_loss": 0 },
+                { "area_code": '440902000000', "area_name": '茂南区', "injuries": 0, "missing": 0, "deaths": 0, "transfer": 0, "economic_loss": 0 },
+                { "area_code": '440904000000', "area_name": '电白区', "injuries": 0, "missing": 0, "deaths": 0, "transfer": 0, "economic_loss": 0 },
+                { "area_code": '440981000000', "area_name": '高州市', "injuries": 0, "missing": 0, "deaths": 0, "transfer": 0, "economic_loss": 0 },
+                { "area_code": '440982000000', "area_name": '化州市', "injuries": 0, "missing": 0, "deaths": 0, "transfer": 0, "economic_loss": 0 },
+                { "area_code": '440983000000', "area_name": '信宜市', "injuries": 0, "missing": 0, "deaths": 0, "transfer": 0, "economic_loss": 0 }
+            ]
+        
+        # 返回结果
+        return {
+            "code": 200,
+            "msg": "查询成功",
+            "data": data
+        }
+
+    except Exception as e:
+        # 处理异常
+        traceback.print_exc()
+        raise HTTPException(status_code=500, detail=str(e))