更新首页统计数据实现

main
周平 1 year ago
parent b82bccc95d
commit bc77bc5ce9

@ -25,17 +25,18 @@ CREATE TABLE `model` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='模型表'; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='模型表';
""" """
class Model(Base): class Model(Base):
__tablename__ = 'model' __tablename__ = "model"
id = Column(Integer, primary_key=True, autoincrement=True) id = Column(Integer, primary_key=True, autoincrement=True)
suid = Column(String(10), comment='short uuid') suid = Column(String(10), comment="short uuid")
name = Column(String(255), nullable=False, default='') name = Column(String(255), nullable=False, default="")
model_type = Column(Integer, default=1002, comment='模型类型1001/经典算法1002/深度学习') model_type = Column(Integer, default=1002, comment="模型类型1001/经典算法1002/深度学习")
classification = Column(Integer, default=0, comment='模型分类的id') classification = Column(Integer, default=0, comment="模型分类的id")
comment = Column(String(255), default='', comment='备注') comment = Column(String(255), default="", comment="备注")
default_version = Column(String(100), default='') default_version = Column(String(100), default="")
delete = Column(Integer, default=0, info={'alias': 'del'}, comment='删除状态1/删除0/正常') delete = Column("del", Integer, default=0, comment="删除状态1/删除0/正常")
create_time = Column(DateTime, default=func.now()) create_time = Column(DateTime, default=func.now())
update_time = Column(DateTime, onupdate=func.now()) update_time = Column(DateTime, onupdate=func.now())
@ -46,7 +47,6 @@ class Model(Base):
class ModelRepositry(object): class ModelRepositry(object):
def get_suid(self, model_id: int) -> str: def get_suid(self, model_id: int) -> str:
session = get_session()
with get_session() as session: with get_session() as session:
model = session.query(Model).filter(Model.id == model_id).first() model = session.query(Model).filter(Model.id == model_id).first()
if not model or not model.suid: if not model or not model.suid:
@ -54,12 +54,15 @@ class ModelRepositry(object):
return model.suid return model.suid
def get_model_by_id(self, model_id: int) -> Model | None: def get_model_by_id(self, model_id: int) -> Union[Model, None]:
session = get_session()
with get_session() as session: with get_session() as session:
model = session.query(Model).filter(Model.id == model_id).first() model = session.query(Model).filter(Model.id == model_id).first()
if not model: if not model:
return None return None
return model return model
def get_model_count(self) -> int:
with get_session() as session:
return session.query(Model).count()

@ -19,7 +19,7 @@ def get_enterprise_device_count(id: int) -> int:
# 获取所有企业实体数量 # 获取所有企业实体数量
def get_enterprise_entity_count(engine: Any) -> int: def get_enterprise_entity_count(engine: Any) -> int:
with engine.connect() as conn: with engine.connect() as conn:
count_sql_text = "select count(id) from enterprise " count_sql_text = "select count(*) from enterprise "
count = conn.execute(text(count_sql_text)).fetchone() count = conn.execute(text(count_sql_text)).fetchone()
if count: if count:
return count[0] return count[0]

@ -283,3 +283,14 @@ class EnterpriseDeviceRepository(object):
} }
device_dicts.append(device_dict) device_dicts.append(device_dict)
return device_dicts return device_dicts
def get_all_device_count(self) -> int:
"""获取所有设备的数量"""
with get_session() as session:
try:
count = session.query(EnterpriseDevice).filter(EnterpriseDevice.delete != 1).count()
return count
except Exception as e:
logging.error("Failed to get all device count, error: {}".format(e))
return 0

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from typing import List, Dict, Any, Union from typing import List, Dict, Union
from sqlalchemy import text from sqlalchemy import text
@ -17,6 +17,7 @@ class EnterpriseNodeAlertRepository(object):
cursor = session.execute( cursor = session.execute(
sql, {"enterprise_node_id": self.enterprise_node_id} sql, {"enterprise_node_id": self.enterprise_node_id}
) )
return to_json_list(cursor)
def get_one( def get_one(
self, enterprise_suid: str, enterprise_node_id: int self, enterprise_suid: str, enterprise_node_id: int

@ -1,11 +1,12 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import logging import logging
from sqlalchemy import text from sqlalchemy import text
from website import db_mysql, errors from website import db_mysql, errors
from website.db.enterprise_device import enterprise_device as DB_Device
from website.handler import APIHandler, authenticated from website.handler import APIHandler, authenticated
from website.util import shortuuid from website.util import shortuuid
from website.db.enterprise_device import enterprise_device as DB_Device
class DeviceClassificationAddHandler(APIHandler): class DeviceClassificationAddHandler(APIHandler):
@ -36,14 +37,15 @@ class DeviceClassificationAddHandler(APIHandler):
if row: if row:
raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, "设备分类已存在") raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, "设备分类已存在")
conn.execute( result = conn.execute(
text( text(
"INSERT INTO device_classification (name, suid) VALUES (:name, :suid)" "INSERT INTO device_classification (name, suid) VALUES (:name, :suid)"
), ),
{"name": name, "suid": shortuuid.ShortUUID().random(10)}, {"name": name, "suid": shortuuid.ShortUUID().random(10)},
) )
conn.commit() conn.commit()
self.finish() last_id = result.lastrowid
self.finish({"id": last_id})
class DeviceClassificationHandler(APIHandler): class DeviceClassificationHandler(APIHandler):

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import logging
import asyncio import asyncio
import logging
from sqlalchemy import text from sqlalchemy import text
@ -8,11 +8,15 @@ from website import consts
from website import db_mysql from website import db_mysql
from website import errors from website import errors
from website import settings from website import settings
from website.handler import APIHandler, authenticated from website.db.alg_model.alg_model import ModelRepositry
from website.db.enterprise import enterprise from website.db.enterprise import enterprise
from website.db.enterprise_device.enterprise_device import EnterpriseDeviceRepository
from website.handler import APIHandler, authenticated
from website.util import shortuuid, aes from website.util import shortuuid, aes
from concurrent.futures import ThreadPoolExecutor
from functools import partial
# from concurrent.futures import ThreadPoolExecutor
# from functools import partial
class EntityIndexHandler(APIHandler): class EntityIndexHandler(APIHandler):
@ -114,11 +118,13 @@ class EntityIndexBasecountHandler(APIHandler):
@authenticated @authenticated
def post(self): def post(self):
entity = enterprise.get_enterprise_entity_count(self.app_mysql) entity_count = enterprise.get_enterprise_entity_count(self.app_mysql)
model = enterprise.get_enterprise_model_count() model_repository = ModelRepositry()
device = enterprise.get_enterprise_device_count() model_count = model_repository.get_model_count()
device_repository = EnterpriseDeviceRepository()
device_count = device_repository.get_all_device_count()
self.finish({"entity": entity, "model": model, "device": device}) self.finish({"entity": entity_count, "model": model_count, "device": device_count})
class EntityAddHandler(APIHandler): class EntityAddHandler(APIHandler):

@ -1,15 +1,16 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import json import json
from website import errors from website import errors
from website.handler import APIHandler, authenticated
from website.db.enterprise_entity import enterprise_entity as DB_Entity
from website.db.enterprise_node import enterprise_node as DB_Node
from website.db.enterprise_busi_model import enterprise_busi_model as DB_BusiModel from website.db.enterprise_busi_model import enterprise_busi_model as DB_BusiModel
from website.db.enterprise_busi_model import ( from website.db.enterprise_busi_model import (
enterprise_busi_model_node_device as DB_BusiModelNodeDevice, enterprise_busi_model_node_device as DB_BusiModelNodeDevice,
) )
from website.db.enterprise_device import enterprise_device as DB_Device from website.db.enterprise_device import enterprise_device as DB_Device
from website.db.enterprise_entity import enterprise_entity as DB_Entity
from website.db.enterprise_node import enterprise_node as DB_Node
from website.db.enterprise_node import enterprise_node_alert as DB_NodeAlert from website.db.enterprise_node import enterprise_node_alert as DB_NodeAlert
from website.handler import APIHandler, authenticated
from website.util import shortuuid from website.util import shortuuid

Loading…
Cancel
Save