# -*- coding:utf-8 -*- """ @Author : xuxingchen @Contact : xuxingchen@sinochem.com @Desc : 子系统映射表 增&改&查 """ import csv import os from models.houses import HousesTable from utils.database import BaseTable from utils.misc import now_datetime_second, sql_export_xls class SpacesTable(BaseTable): @staticmethod def get_sub_system_name_by_room_id(table_handler: BaseTable, room_id: str): table_handler.query( """ SELECT sub_space_name FROM subsystem WHERE room_id = ? """, (room_id,) ) res = table_handler.cursor.fetchall() if res: return res[0][0] else: return None @staticmethod def get_space_info_by_sub_space_name(table_handler: BaseTable, sub_space_name: str): """根据第三方ID获取对应的房产信息""" table_handler.query( """ SELECT subsystem.room_id, house_name, project_id, sub_system_id FROM subsystem LEFT JOIN houses ON subsystem.room_id = houses.room_id WHERE sub_space_name = ? """, (sub_space_name,) ) res = table_handler.cursor.fetchall() if res: return { "room_id": res[0][0], "house_name": res[0][1], "project_id": res[0][2], "sub_system_id": res[0][3] } else: return None @staticmethod def get_aiot_platform_data(table_handler: BaseTable): query = """ SELECT project_id, houses.room_id, house_name, COALESCE(subsystem_id, ''), COALESCE(sub_space_name, '') FROM houses LEFT JOIN subsystem ON subsystem.room_id = houses.room_id """ file_path = os.path.join(f"data/AIOT平台空间数据{now_datetime_second().replace(':', '_')}.xls") sql_export_xls(query, table_handler.connection, file_path, "房屋子系统映射数据表", ["项目id", "房屋id", "房屋名称", "子系统id", "子系统空间名称"]) return file_path @staticmethod def get_sub_system_data(table_handler: BaseTable): query = "SELECT subsystem_id, sub_space_name FROM subsystem" file_path = os.path.join(f"data/子系统空间数据{now_datetime_second().replace(':', '_')}.xls") sql_export_xls(query, table_handler.connection, file_path, "子系统数据表", ["子系统id", "子系统空间名称"]) return file_path @staticmethod def update(table_handler: BaseTable, objs: list): data = [] for obj in objs: data.append((obj[0], now_datetime_second(), obj[1], obj[2])) table_handler.executemany( f""" UPDATE subsystem SET room_id = ?, update_datetime = ? WHERE subsystem_id = ? and sub_space_name = ? """, data ) @staticmethod def exits_room_id(table_handler: BaseTable, room_id: str): table_handler.query("SELECT room_id FROM spaces WHERE room_id = ?", (room_id,)) if table_handler.cursor.fetchone() is not None: return True else: return False