更新首页统计数据实现

main
周平 11 months ago
parent b82bccc95d
commit bc77bc5ce9

@ -25,41 +25,44 @@ 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())
def __repr__(self): def __repr__(self):
return f"Model(id={self.id}, name='{self.name}', model_type={self.model_type})" return f"Model(id={self.id}, name='{self.name}', model_type={self.model_type})"
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:
return "" return ""
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,9 +17,10 @@ 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
) -> Union[Dict, None]: ) -> Union[Dict, None]:
with get_session() as session: with get_session() as session:
sql = text( sql = text(

@ -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):
@ -137,14 +143,14 @@ class EntityAddHandler(APIHandler):
logo = self.get_escaped_argument("logo", "") logo = self.get_escaped_argument("logo", "")
if ( if (
not name not name
or not province or not province
or not city or not city
or not addr or not addr
or not industry or not industry
or not contact or not contact
or not phone or not phone
or not summary or not summary
): ):
raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, "参数缺失") raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, "参数缺失")
@ -209,14 +215,14 @@ class EntityEditHandler(APIHandler):
account = self.get_escaped_argument("account", "") account = self.get_escaped_argument("account", "")
if ( if (
not name not name
or not province or not province
or not city or not city
or not addr or not addr
or not industry or not industry
or not contact or not contact
or not phone or not phone
or not summary or not summary
): ):
raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, "参数缺失") raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, "参数缺失")

@ -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