瀏覽代碼

241116-1代码。

baoyubo 6 月之前
父節點
當前提交
dcb177eeec
共有 3 個文件被更改,包括 167 次插入24 次删除
  1. 29 13
      routers/api/pattern/__init__.py
  2. 128 11
      routers/api/spatialAnalysis/__init__.py
  3. 10 0
      utils/spatial/__init__.py

+ 29 - 13
routers/api/pattern/__init__.py

@@ -195,7 +195,7 @@ def user_id_and_pattern_id_get_tp_pattern_ws_user_info(user_id:str,pattern_id:st
     query = query.filter(TpPatternWSUserList.user_id == user_id)
     query = query.filter(TpPatternWSUserList.pattern_id == pattern_id)
     query.order_by(TpPatternWSUserList.create_time.desc())
-    return query.all()
+    return query.first()
 def pattern_id_get_tp_pattern_ws_group_list(pattern_id:str,db: Session):
     query = db.query(TpPatternWSGroupList)
     query = query.filter(TpPatternWSGroupList.del_flag != '2')
@@ -435,7 +435,7 @@ async def create_pattern(
                 visible = body['visible'],
                 create_by = user_id
             )
-        db.add(new_pattern_ws)
+            db.add(new_pattern_ws)
         new_pattern_group_ws = TpPatternWSGroupList(
             group_id=body['pattern_id'],
             group_name='默认分组',
@@ -675,20 +675,27 @@ async def rollback_pattern(
                                 'msg': '抱歉,您无权限,请联系系统管理员'
                             })
         user_id_list = body['user_id_list']
-        if str(user_id) not in user_id_list:
+        if str(user_id) not in user_id_list and user_id not in user_id_list:
+            # print(str(user_id),user_id_list)
             user_id_list.append(str(user_id))
         info = pattern_id_get_tp_pattern_ws_group_def_info(body['pattern_id'],db)
+        user_id_list_1 = [i.user_id for i in pattern_id_get_tp_pattern_ws_user_list(body['pattern_id'], db)] # 已存在的用户列表
         for user in user_id_list:
-            new_pattern_ws = TpPatternWSUserList(
-                id=new_guid(),
-                pattern_id=body['pattern_id'],
-                pattern_name=info.pattern_name,
-                user_id=user,
-                create_by=user_id
-            )
-            db.add(new_pattern_ws)
+            user = int(user)
+            if user in user_id_list_1:
+                user_info = user_id_and_pattern_id_get_tp_pattern_ws_user_info(user,body['pattern_id'],db)
+                user_info.ws_flag='true'
+            else:
+                new_pattern_ws = TpPatternWSUserList(
+                    id=new_guid(),
+                    pattern_id=body['pattern_id'],
+                    pattern_name=info.pattern_name,
+                    user_id=user,
+                    create_by=user_id
+                )
+                db.add(new_pattern_ws)
         db.commit()
-        return {"code": 200, "msg": "开启协同成功", "data": None}
+        return {"code": 200, "msg": "增加协同用户成功", "data": None}
     except Exception as e:
         traceback.print_exc()
         raise HTTPException(status_code=500, detail=f"Internal server error: {str(e)}")
@@ -778,11 +785,19 @@ async def get_pattern_list(
             # 排序
             query = query.order_by(TpPatternWSList.create_time.desc())
             # 执行分页查询
+            group = {
+                "group_id":group.group_id,
+                "group_name":group.group_name,
+                "pattern_id":group.pattern_id,
+                "pattern_name":group.pattern_name,
+                "bz_list":[],
+                "create_time": group.create_time.strftime('%Y-%m-%d %H:%M:%S')
+            }
             patterns = query.all()  # .offset((page - 1) * pageSize).limit(pageSize)
             for info in patterns:
                 user= user_id_get_user_info(db,info.create_by)
                 dept = dept_id_get_dept_info(db,user.dept_id)
-                message.append({"id":info.id,
+                group['bz_list'].append({"id":info.id,
                                 "name":info.name,
                                 "group_id":info.pattern_id,
                                 "content":info.content,
@@ -791,6 +806,7 @@ async def get_pattern_list(
                                 "nick_name":user.nick_name,
                                 "dept_name":dept.dept_name,
                                 "create_time":info.create_time.strftime('%Y-%m-%d %H:%M:%S')})
+            message.append(group)
         return {"code": 200, "msg": "查询成功", "data": message,
                 # "total": total_items,
                 # "page": page,

+ 128 - 11
routers/api/spatialAnalysis/__init__.py

@@ -44,9 +44,125 @@ async def mine(request: Request,body = Depends(remove_xss_json),db: Session = De
         town_village_data,town_count,village_count = get_town_village_list(body,db) #[],0,0#
         # emergency_expert_count = count_emergency_expert(from_data.location,db)
         # emergency_management_count = count_emergency_management(from_data.location,db)
-        hospital_list = get_hospital_list(body,db)
-        emergency_shelter_list = get_emergency_shelter_list(body,db)
-        waterlogged_roads_list = get_waterlogged_roads_list(body,db)
+
+        point_type_to_list = {
+            1: "专家",
+            2: "救援物资仓库",
+            3: "应急避难场所",
+            4: "易涝点",
+            5: "学校",
+            6: "医院",
+            7: "加油站",
+            8: "非煤矿山企业",
+            9: "危化企业",
+            10: "船舶动态",
+        }
+
+        # 初始化所有列表
+        lists = {key: [] for key in point_type_to_list}
+
+        # 填充列表
+        for point in get_point_list(body, db):
+            if point.dataType in lists:
+                lists[point.dataType].append({
+                    "id": point.id,
+                    "dataType": point.dataType,
+                    "name": point.name,
+                    "longitude": point.longitude,
+                    "latitude": point.latitude,
+                })
+
+        # 构建最终的 list_1,仅包含非空列表
+        list_1 = [{"name": point_type_to_list[dataType], "num": len(lst), "list": lst}
+                  for dataType, lst in lists.items() if lst]
+
+        # list_1 = []
+        # point_list = get_point_list(body,db)
+        # emergency_expert_list = [] #专家 1
+        # rescue_materia_warehouse_list = [] #救援物资-仓库 2
+        # emergency_shelter_list = [] # 应急避难场所 3
+        # waterlogged_roads_list = [] # 易涝点 4
+        # school_list = [] # 学校 5
+        # hospital_list = [] #医院 6
+        # gasoline_station_list = [] #加油站 7
+        # mining_company_list = []# 非煤矿山企业 8
+        # chemical_company_list = [] #危化企业 9
+        # ship_realtilme_positioninfo_list = []# 船舶动态 10
+        # for point in point_list:
+        #     if point.dataType == 1:
+        #         emergency_expert_list.append({"id": point.id, "dataType": point.dataType, "name": point.name, "longitude": point.longitude, "latitude": point.latitude})
+        #     elif point.dataType == 2:
+        #         rescue_materia_warehouse_list.append({"id": point.id, "dataType": point.dataType, "name": point.name, "longitude": point.longitude,
+        #              "latitude": point.latitude})
+        #     elif point.dataType == 3:
+        #         emergency_shelter_list.append(
+        #             {"id": point.id, "dataType": point.dataType, "name": point.name, "longitude": point.longitude,
+        #              "latitude": point.latitude})
+        #     elif point.dataType == 4:
+        #         waterlogged_roads_list.append(
+        #             {"id": point.id, "dataType": point.dataType, "name": point.name, "longitude": point.longitude,
+        #              "latitude": point.latitude})
+        #     elif point.dataType == 5:
+        #         school_list.append(
+        #             {"id": point.id, "dataType": point.dataType, "name": point.name, "longitude": point.longitude,
+        #              "latitude": point.latitude})
+        #     elif point.dataType == 6:
+        #         hospital_list.append(
+        #             {"id": point.id, "dataType": point.dataType, "name": point.name, "longitude": point.longitude,
+        #              "latitude": point.latitude})
+        #     elif point.dataType == 7:
+        #         gasoline_station_list.append(
+        #             {"id": point.id, "dataType": point.dataType, "name": point.name, "longitude": point.longitude,
+        #              "latitude": point.latitude})
+        #     elif point.dataType == 8:
+        #         mining_company_list.append(
+        #             {"id": point.id, "dataType": point.dataType, "name": point.name, "longitude": point.longitude,
+        #              "latitude": point.latitude})
+        #     elif point.dataType == 9:
+        #         chemical_company_list.append(
+        #             {"id": point.id, "dataType": point.dataType, "name": point.name, "longitude": point.longitude,
+        #              "latitude": point.latitude})
+        #     elif point.dataType == 10:
+        #         ship_realtilme_positioninfo_list.append(
+        #             {"id": point.id, "dataType": point.dataType, "name": point.name, "longitude": point.longitude,
+        #              "latitude": point.latitude})
+        # num = len(emergency_expert_list)
+        # if num>0:
+        #     list_1.append({"name":"专家","num":num,"list":emergency_expert_list})
+        # num = len(rescue_materia_warehouse_list)
+        # if num>0:
+        #     list_1.append({"name":"救援物资仓库","num":num,"list":rescue_materia_warehouse_list})
+        # num = len(emergency_shelter_list)
+        # if num>0:
+        #     list_1.append({"name":"应急避难场所","num":num,"list":emergency_shelter_list})
+        # num = len(waterlogged_roads_list)
+        # if num>0:
+        #     list_1.append({"name":"易涝点","num":num,"list":waterlogged_roads_list})
+        # num = len(school_list)
+        # if num>0:
+        #     list_1.append({"name":"学校","num":num,"list":school_list})
+        # num = len(hospital_list)
+        # if num>0:
+        #     list_1.append({"name":"医院","num":num,"list":hospital_list})
+        # num = len(gasoline_station_list)
+        # if num>0:
+        #     list_1.append({"name":"加油站","num":num,"list":gasoline_station_list})
+        # num = len(mining_company_list)
+        # if num>0:
+        #     list_1.append({"name":"非煤矿山企业","num":num,"list":mining_company_list})
+        # num = len(chemical_company_list)
+        # if num>0:
+        #     list_1.append({"name":"危化企业","num":num,"list":chemical_company_list})
+        # num = len(ship_realtilme_positioninfo_list)
+        # if num>0:
+        #     list_1.append({"name":"船舶动态","num":num,"list":ship_realtilme_positioninfo_list})
+
+
+        # hospital_list = get_hospital_list(body,db)
+        # emergency_shelter_list = get_emergency_shelter_list(body,db)
+        # waterlogged_roads_list = get_waterlogged_roads_list(body,db)
+
+
         return {
             "code": 200,
             "msg": "成功",
@@ -58,14 +174,15 @@ async def mine(request: Request,body = Depends(remove_xss_json),db: Session = De
                 "populationSize":0,
                 "areaSize":0,
                 "GDP":0,
-                "list":[{
-                    "name":"应急避难场所","num":len(emergency_shelter_list),"list":[{"name":shelter.name,"longitude":shelter.longitude,"latitude":shelter.latitude} for shelter in emergency_shelter_list]
-                },{
-                    "name":"易涝点","num":len(waterlogged_roads_list),"list":[{"name":waterlogged.name,"longitude":waterlogged.longitude,"latitude":waterlogged.latitude} for waterlogged in waterlogged_roads_list]
-                },{
-                    "name":"医院","num":len(hospital_list),"list":[{"name":hospital.name,"longitude":hospital.longitude,"latitude":hospital.latitude} for hospital in hospital_list]
-                }
-                ]
+                "list":list_1
+                #     [{
+                #     "name":"应急避难场所","num":len(emergency_shelter_list),"list":[{"name":shelter.name,"longitude":shelter.longitude,"latitude":shelter.latitude} for shelter in emergency_shelter_list]
+                # },{
+                #     "name":"易涝点","num":len(waterlogged_roads_list),"list":[{"name":waterlogged.name,"longitude":waterlogged.longitude,"latitude":waterlogged.latitude} for waterlogged in waterlogged_roads_list]
+                # },{
+                #     "name":"医院","num":len(hospital_list),"list":[{"name":hospital.name,"longitude":hospital.longitude,"latitude":hospital.latitude} for hospital in hospital_list]
+                # }
+                # ]
                 # "emergencyExpertCount":emergency_expert_count,
                 # "emergencyManagementCount":emergency_management_count
             }

+ 10 - 0
utils/spatial/__init__.py

@@ -266,3 +266,13 @@ def get_waterlogged_roads_list(location_list:list,db):
         resutl+=db.execute(sql).all()
     return resutl
 
+def get_point_list(location_list:list,db):
+
+    resutl = []
+    for location in location_list:
+        location = convert_to_polygon(location)
+
+        sql = text(f"""SELECT `id` ,`name`, longitude, latitude, `dataType` FROM point_data WHERE ST_Contains(ST_PolygonFromText( '{location}', 4326 ),ST_PointFromText(CONCAT('POINT(', latitude, ' ', longitude, ')'), 4326))""")
+
+        resutl+=db.execute(sql).all()
+    return resutl