from dataclasses import dataclass from pot_libs.sanic_api import Model from pot_libs.sanic_api.column import Float, Str, List, Int, Dict, Opt from pot_libs.common.components.fields import Cid @dataclass class BasicInfoReq(Model): page_size: int = Opt(Int("页面大小").eg(10)) page_num: int = Opt(Int("当前页面").eg(1)) @dataclass class BasicInfoResp(Model): rows: list = List("基本信息").eg({ "pid": "监测点id", "mtid": "监测点id", "equipment_address": "设备地址", "equipment_code": "设备编码", "root_address": "房屋地址", "longitude": "经度", "latitude": "纬度", "insurer": "王五", "insurer_phone": "责任人电话" }) total: int = Int("总量") @dataclass class StbDataResp(Model): rows: str = Str("基本信息").eg("") total: int = Int("cid").eg(78) @dataclass class StbDataReq(Model): type: str = Str("类型").eg("appliance or electric or soe") # cid: int = Int("cid").eg(78) @dataclass class SupplementReq(Model): cid: int = Int("cid").eg(78) start: str = Str("开始时间").eg("2021-12-29 00:00:00") end: str = Str("开始时间").eg("2021-12-29 06:00:00") type: str = Str("类型").eg("appliance or electric") @dataclass class RiskCount(Model): security_user: int = Opt(Int("安全用户").eg(10)) risk_user: int = Opt(Int("风险用户").eg(2)) @dataclass class ContentName(Model): ele_overload: int = Opt(Int("用电超载").eg(10)) high_power_app: int = Opt(Int("大功率电器").eg(2)) illegal_ele_app: int = Opt(Int("违规电器").eg(2)) power_quality: int = Opt(Int("电能质量").eg(2)) ele_car_battery: int = Opt(Int("电能质量").eg(2)) @dataclass class HomeDataResp(Model): risk_distribution: RiskCount = Opt(RiskCount) content_distribution: ContentName = Opt(ContentName) electric_use_score: float = Opt(Float("用电安全指数").eg(90.3)) total_tenant: int = Opt(Int("接入住户").eg(20)) online_rate: float = Opt(Float("在线率").eg(0.8)) safe_day: float = Opt(Float("平均安全运行").eg(11.1)) total_power: float = Opt(Float("累计监测用电").eg(96000)) total_alarm: int = Opt(Int("累计报警次数").eg(5)) @dataclass class HomeLstAlarmReq(Model): cid: Opt(Cid) importance: list = Opt(List("报警等级,默认:[1, 2, 3]").eg([1, 2, 3])) page_size: int = Opt(Int("每页记录数").eg(10)) page_num: int = Opt(Int("当前页码").eg(1)) start: str = Opt(Str("开始时间").eg("2021-02-01 00:00:00")) end: str = Opt(Str("结束时间").eg("2021-02-28 23:59:59")) @dataclass class HomeAlarmStatsReq(Model): cid: Opt(Cid) importance: list = Opt(List("报警等级,默认:[1, 2, 3]").eg([1, 2, 3])) page_size: int = Opt(Int("每页记录数").eg(10)) page_num: int = Opt(Int("当前页码").eg(1)) start: str = Opt(Str("开始时间").eg("2021-02-01 00:00:00")) end: str = Opt(Str("结束时间").eg("2021-02-28 23:59:59")) @dataclass class HomeAlarmStatsResp(Model): ele_overload: dict = Dict("线路过载").eg( {"slots": ["00-01", "00-02", "00-03"], "value": [1, 2, 3]}) illegal_ele_app: dict = Dict("违规电器").eg( {"slots": ["00-01", "00-02", "00-03"], "value": [1, 2, 3]}) power_quality: dict = Dict("电能质量").eg( {"slots": ["00-01", "00-02", "00-03"], "value": [1, 2, 3]})