libushang 4 dni temu
rodzic
commit
60ff460136

+ 21 - 1
common/db/db_task.py

@@ -63,6 +63,20 @@ def get_task_file_list(db: Session, task_id: str):
     } for file in files]
     return result
 
+def get_task_feeback_file_list(db: Session, task_id: str):
+    file_query = db.query(TaskFile)
+    file_query = file_query.filter(TaskFile.del_flag != '2')
+    file_query = file_query.filter(TaskFile.from_scenario == 'task_feeback')
+    file_query = file_query.filter(TaskFile.foreign_key == task_id)
+    files = file_query.all()
+    result = [{
+        "uid": file.file_id,
+        "status": file.status,
+        "name": file.file_name_desc,
+        "url":  file.file_name
+    } for file in files]
+    return result
+
 def get_task_type_text(task_type: str) -> str:
     if task_type == '0':
         return '事件处置'
@@ -72,6 +86,12 @@ def get_task_type_text(task_type: str) -> str:
         return '险情处理'
     elif task_type == '3':
         return '督办任务'
+    elif task_type == '4':
+        return '现场人员'
+    elif task_type == '5':
+        return '手机工作台'
+    elif task_type == '6':
+        return '救援任务'
     else:
         return str(task_type)
     
@@ -83,7 +103,7 @@ def get_task_feebacks(db: Session, task_id: str):
         info = get_model_dict(row)
         info['create_time'] = get_datetime_str(row.create_time)
         info['approval_time'] = get_datetime_str(row.approval_time)
-
+        info['fileList'] = get_task_feeback_file_list(db, task_id)
         data.append(info)
     
     return data

+ 1 - 0
models/taskRegistration_base.py

@@ -73,6 +73,7 @@ class TaskFeeback(Base):
     longitude = Column(Float, nullable=True, comment='经度')
     latitude = Column(Float, nullable=True, comment='纬度')
     work_station = Column(String, default='',comment='工作台')
+    address = Column(String, default='',comment='详细地址')
 
     class Config:
         orm_mode = True

+ 1 - 0
routers/api/eventManagement/event_xp.py

@@ -283,6 +283,7 @@ async def get_info_detail(
                 "expire_time": task_info.expire_time.strftime("%Y-%m-%d"),
                 "task_description": task_info.task_description,
                 "task_type": db_task.get_task_type_text(task_info.task_type),
+                "task_type_1": task_info.task_type,
                 "processing_status": task_info.processing_status
             }
 

+ 92 - 2
routers/api/taskRegistration/__init__.py

@@ -242,6 +242,7 @@ async def update_task_status(
         processing_status = get_req_param(body, 'processing_status')
         feedback_content = get_req_param_optional(body, 'feedback_content')
         work_station = get_req_param_optional(body, 'work_station')
+        address = get_req_param_optional(body, 'address')
 
         attachList = None
         if 'fileList'in body:
@@ -250,8 +251,12 @@ async def update_task_status(
 
         longitude = latitude = None
         if 'lnglat' in body:
-            longitude = body['lnglat'][0]
-            latitude = body['lnglat'][1]
+            if len(body['lnglat']) > 1:
+                longitude = body['lnglat'][0]
+                latitude = body['lnglat'][1]
+            else:
+                longitude = latitude = 0
+
 
         if not task_id_to_use:
             return Response(content="Missing required parameter 'task_id'", status_code=400)
@@ -278,6 +283,7 @@ async def update_task_status(
             recorded_by=user_id,
             longitude = longitude,
             latitude = latitude,
+            address = address,
             work_station = work_station
         )
         db.add(new_feeback)
@@ -687,3 +693,87 @@ async def approval(
         traceback.print_exc()
         raise HTTPException(status_code=500, detail=str(e))
     
+
+# 手机工作台任务反馈查询
+@router.get('/feeback_by_mobile_station')
+async def feeback_by_mobile_station(
+        request: Request,
+        mobile_id: str,
+        event_code: str = Query(None, description="事件ID"),
+        db: Session = Depends(get_db),
+        user_id: int = Depends(valid_access_token),
+        pageNum: int = Query(1, gt=0, description="页码"),
+        pageSize: int = Query(10, gt=0, le=100, description="每页大小")):
+    try:
+
+        def get_img_list_by_task_id(task_id):
+            return db_task.get_image_file_list(db, task_id)
+        
+        def get_file_list_by_task_id(task_id):
+            task_file_list = db_task.get_task_file_list(db, task_id)
+            task_feeback_file_list = db_task.get_task_feeback_file_list(db, task_id)
+            return task_file_list + task_feeback_file_list
+
+        missing_event_code = db.query(EventBase).filter(EventBase.event_code == event_code).first()
+        # print(missing_event_code)
+        if not missing_event_code:
+            return {
+                "code": 500,
+                "msg": "事件不存在"
+            }
+
+        # 匹配所有事件相关任务
+        data_query = db.query(TaskRegistration, TaskFeeback).join(TaskFeeback, TaskRegistration.task_id == TaskFeeback.task_id)
+        data_query = data_query.filter(TaskRegistration.del_flag != '2').filter(TaskRegistration.event_code == event_code).filter(TaskFeeback.feeback_type == '0')
+        data_query = data_query.filter(TaskFeeback.work_station == mobile_id)
+        
+        total_count = data_query.count()
+        offset = (pageNum - 1) * pageSize
+        data_query = data_query.offset(offset).limit(pageSize)
+
+        rows = data_query.all()
+        data = []
+        for register, feeback in rows:
+            print('register.task_id', register.task_id)
+            info = {
+                "task_id": register.task_id,
+                "unit_name": register.unit_name,
+                "task_description": register.task_description,
+                "registrar": register.registrar,
+                "executor": register.executor,
+                "content": feeback.content,
+                "update_time": feeback.create_time,
+                "address": feeback.address,
+                "longitude": feeback.longitude,
+                "latitude": feeback.latitude,
+                'imgList': get_img_list_by_task_id(register.task_id),
+                'fileList': get_file_list_by_task_id(register.task_id),
+                "img_name": "",
+                "img_url": "",
+                "file_name": "",
+                "file_url": "",
+            }
+            
+            if len(info['imgList']) > 0:
+                n = len(info['imgList']) - 1
+                info['img_name'] = info['imgList'][n]['name']
+                info['img_url'] = info['imgList'][n]['url']
+
+            if len(info['fileList']) > 0:
+                n = len(info['fileList']) - 1
+                info['file_name'] = info['fileList'][n]['name']
+                info['file_url'] = info['fileList'][n]['url']
+            
+            data.append(info)
+
+        return {
+            "code": 200,
+            "msg": "任务查询成功",
+            "data": data,
+            "total": total_count
+        }
+
+    except Exception as e:
+        db.rollback()
+        traceback.print_exc()
+        raise HTTPException(status_code=500, detail=f"Internal server error: {str(e)}")

+ 14 - 0
routers/prod_api/auth.py

@@ -536,6 +536,20 @@ def wxconfig(
 ):
     timestamp = int(time.time())
     noncestr = YzyApi.ranstr(20)
+
+    if settings.IS_PROD == False:
+        return {
+            "code": 200,
+            "msg": "测试环境模拟",
+            "data": {
+                "appId": settings.YZY_CORPID,
+                "timestamp": timestamp,
+                "nonceStr": noncestr,
+                "signature": "",
+                "jsApiList": ["getLocation", "hideOptionMenu"]
+            }
+        }
+
     jsapi_ticket = YzyApi.get_cache_jsapi_ticket()
 
     params = {