''' Author: your name Date: 2021-06-29 19:24:32 LastEditTime: 2021-07-21 11:43:14 LastEditors: Please set LastEditors Description: In User Settings Edit FilePath: \evm-store\backend\controller\monitor.py ''' from model.monitor import session, System, Lvgl, Evm, Image, Device, Request, User class SystemResource(object): def get(self): result = session.query(System).all() print(result) return result def post(self, params): data = dict() for k in params: if hasattr(System, k): data[k] = params[k] result = System(**data) session.add(result) return session.commit() def put(self): pass def delete(self): pass class LvglResource(object): def get(self): result = session.query(Lvgl).all() print(result) return result def post(self, params): data = dict() for k in params: if hasattr(Lvgl, k): data[k] = params[k] result = Lvgl(**data) session.add(result) return session.commit() def put(self): pass def delete(self): pass class EvmResource(object): def get(self): result = session.query(Evm).all() print(result) return result def post(self, params): data = dict() for k in params: if hasattr(Evm, k): data[k] = params[k] result = Evm(**data) session.add(result) return session.commit() def put(self): pass def delete(self): pass class ImageResource(object): def get(self): result = session.query(Image).all() print(result) return result def post(self, params): data = dict() for k in params: if hasattr(Image, k): data[k] = params[k] result = Image(**data) session.add(result) return session.commit() def post_array(self, array, watch): t = [] for a in array: a.update({ "watch": watch }) data = dict() for k in a: if hasattr(Image, k): data[k] = a[k] t.append(Image(**data)) session.add_all(t) return session.commit() def put(self): pass def delete(self): pass systemResource = SystemResource() lvglResource = LvglResource() evmResource = EvmResource() imageResource = ImageResource() def insert_data(msg): # 先判断手表imei是否存在,不存在则先注册手表IMEI watch_id = -1 if msg.get("imei"): result = session.query(Device).filter_by(imei=msg.get("imei")).first() if result: watch_id = result.id else: user = session.query(User).filter(User.account=="evm").first() if user: result = Device(imei=msg.get("imei"), name="watch_{}".format(msg.get("imei")), type="watch", create_by=user.id, update_by=user.id) session.add(result) session.flush() session.commit() result = session.query(Device).filter_by(imei=msg.get("imei")).first() if result: watch_id = result.id if msg.get("request"): msg.get("request").update({ "watch": watch_id }) result = Request(**msg.get("request")) session.add(result) session.flush() session.commit() if msg.get("system"): msg.get("system").update({ "watch": watch_id }) systemResource.post(msg.get("system")) if msg.get("lvgl"): msg.get("lvgl").update({ "watch": watch_id }) lvglResource.post(msg.get("lvgl")) if msg.get("evm"): msg.get("evm").update({ "watch": watch_id }) evmResource.post(msg.get("evm")) if msg.get("image"): imageResource.post_array(msg.get("image"), watch_id) def get_watch_list(): result = session.query(Device).all() tmp = [] for item in result: tmp.append({ 'id': item.id, 'imei': item.imei }) return tmp def evm_data(watch, start, end): filters = [Evm.watch==watch] if start: filters.append(Evm.timestamp >= start) if end: filters.append(Evm.timestamp <= end) result = session.query(Evm).filter(*filters).order_by(Evm.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 = [Lvgl.watch==watch] if start: filters.append(Lvgl.timestamp>=start) if end: filters.append(Lvgl.timestamp<=end) result = session.query(Lvgl).filter(*filters).order_by(Lvgl.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 = [Image.watch==watch] if start: filters.append(Image.timestamp>=start) if end: filters.append(Image.timestamp<=end) result = session.query(Image).filter(*filters).order_by(Image.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 = session.query(Device).filter(Device.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) }