''' Author: your name Date: 2021-06-29 19:24:32 LastEditTime: 2021-07-21 18:37:59 LastEditors: Please set LastEditors Description: In User Settings Edit FilePath: \evm-store\backend\controller\monitor.py ''' from application.app import db from models.device import DeviceModel from models.monitorEvm import MonitorEvmModel from models.monitorImage import MonitorImageModel from models.monitorLvgl import MonitorLvglModel from models.monitorSystem import MonitorSystemModel from webcreator.log import logger class SystemResource(object): def get(self): return MonitorSystemModel.query.all() def post(self, params): data = dict() for k in params: if hasattr(MonitorSystemModel, k): data[k] = params[k] result = MonitorSystemModel(**data) db.session.add(result) db.session.commit() return True class LvglResource(object): def get(self): return MonitorLvglModel.query.all() def post(self, params): data = dict() for k in params: if hasattr(MonitorLvglModel, k): data[k] = params[k] result = MonitorLvglModel(**data) db.session.add(result) db.session.commit() return True class EvmResource(object): def get(self): return MonitorEvmModel.query.all() def post(self, params): result = MonitorEvmModel(**params) db.session.add(result) db.session.commit() return True class ImageResource(object): def get(self): return MonitorImageModel.query.all() def post(self, params): data = dict() for k in params: if hasattr(MonitorImageModel, k): data[k] = params[k] result = MonitorImageModel(**data) db.session.add(result) db.session.commit() return True def post_array(self, array, watch): t = [] for a in array: data = dict() for k in a: if hasattr(MonitorImageModel, k): data[k] = a[k] data.update({ "watch": watch }) t.append(data) db.session.execute(MonitorImageModel.__table__.insert(), t) db.session.commit() return True systemResource = SystemResource() lvglResource = LvglResource() evmResource = EvmResource() imageResource = ImageResource() def insert_data(msg): # 先判断手表imei是否存在,不存在则先注册手表IMEI device_id = -1 if not msg.get("imei"): return None result = DeviceModel.query.filter(DeviceModel.imei==msg.get("imei")).one_or_none() if not result: return None device_id = result.id if msg.get("system") or msg.get("request"): msg.get("system", {}).update({ "watch": device_id }) msg.get("system").update(msg.get("request", {})) systemResource.post(msg.get("system")) if msg.get("lvgl"): msg.get("lvgl").update({ "watch": device_id }) lvglResource.post(msg.get("lvgl")) if msg.get("evm"): msg.get("evm").update({ "watch": device_id }) evmResource.post(msg.get("evm")) if msg.get("image"): imageResource.post_array(msg.get("image"), device_id) return True def get_watch_list(): result = DeviceModel.query.all() tmp = [] for item in result: tmp.append({ 'id': item.id, 'imei': item.imei }) return tmp def evm_data(watch, start, end): filters = [MonitorEvmModel.watch==watch] if start: filters.append(MonitorEvmModel.timestamp >= start) if end: filters.append(MonitorEvmModel.timestamp <= end) result = MonitorEvmModel.query.filter(*filters).order_by(MonitorEvmModel.timestamp).all() temp = [] for item in result: t = item.to_dict() if t.get("timestamp"): t.update({ 'timestamp': t.get("timestamp").strftime("%Y-%m-%d %H:%M:%S") }) temp.append(t) return temp def lvgl_data(watch, start, end): filters = [MonitorLvglModel.watch==watch] if start: filters.append(MonitorLvglModel.timestamp>=start) if end: filters.append(MonitorLvglModel.timestamp<=end) result = MonitorLvglModel.query.filter(*filters).order_by(MonitorLvglModel.timestamp).all() temp = [] for item in result: t = item.to_dict() if t.get("timestamp"): t.update({ 'timestamp': t.get("timestamp").strftime("%Y-%m-%d %H:%M:%S") }) temp.append(t) return temp def image_data(watch, start, end): filters = [MonitorImageModel.watch==watch] if start: filters.append(MonitorImageModel.timestamp>=start) if end: filters.append(MonitorImageModel.timestamp<=end) result = MonitorImageModel.query.filter(*filters).order_by(MonitorImageModel.timestamp).all() temp = [] for item in result: t = item.to_dict() if t.get("timestamp"): t.update({ 'timestamp': t.get("timestamp").strftime("%Y-%m-%d %H:%M:%S") }) temp.append(t) return temp def get_monitor_list(watch, category, start, end): # 判断watch是否存在 w = DeviceModel.query.filter(DeviceModel.id==watch).first() if not w: return [] if category == "system": return [] elif category == "image": return image_data(watch, start, end) elif category == "lvgl": return lvgl_data(watch, start, end) elif category == "evm": return evm_data(watch, start, end) else: return { 'evm': evm_data(watch, start, end), 'lvgl': lvgl_data(watch, start, end), 'image': image_data(watch, start, end) }