更新代码

main
周平 11 months ago
parent 7a44899f2f
commit ada8cb2053

@ -29,6 +29,11 @@ model_type_map = {
} }
# 1000/all/默认, 1001/在线1002/离线1003/运行中1004/故障 # 1000/all/默认, 1001/在线1002/离线1003/运行中1004/故障
device_status_default = 1000
device_status_online = 1001
device_status_offline = 1002
device_status_ongoing = 1003
device_status_error = 1004
device_status_map = { device_status_map = {
1000: u"全部", 1000: u"全部",
1001: u"在线", 1001: u"在线",

@ -63,6 +63,15 @@ class ModelRepositry(object):
return model return model
def get_model_by_ids(self, model_ids: list) -> list:
with get_session() as session:
models = session.query(Model).filter(Model.id.in_(model_ids)).all()
if not models:
return []
return models
def get_model_count(self) -> int: def get_model_count(self) -> int:
with get_session() as session: with get_session() as session:
return session.query(Model).count() return session.query(Model).count()

@ -1,6 +1,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from typing import List
import logging import logging
from typing import List
from sqlalchemy import Column, Integer, String, DateTime, func, text from sqlalchemy import Column, Integer, String, DateTime, func, text
from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.ext.declarative import declarative_base
@ -95,3 +96,22 @@ class EnterpriseBusiModelNodeDeviceRepository(object):
sql, {"node_id": node_id, "busi_model_id": busi_model_id} sql, {"node_id": node_id, "busi_model_id": busi_model_id}
) )
return to_json_list(res) return to_json_list(res)
def get_busi_model_by_device(self, device_id: int = 0, device_suid: str = "") -> list:
with get_session() as session:
sql = """
select d.busi_model_id, m.name, m.base_models
from enterprise_busi_model_node_device d, enterprise_busi_model m
where d.busi_model_id=m.id"""
p = {}
if device_id:
sql += " and d.device_id=:device_id"
p.update({"device_id": device_id})
if device_suid:
sql += " and d.device_suid=:device_suid"
p.update({"device_suid": device_suid})
res = session.execute(text(sql), p)
return to_json_list(res)

@ -5,6 +5,7 @@ import logging
from sqlalchemy import Column, Integer, String, DateTime, func from sqlalchemy import Column, Integer, String, DateTime, func
from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.ext.declarative import declarative_base
from website import consts
from website import errors from website import errors
from website.db.device_classification.device_classification import DeviceClassification from website.db.device_classification.device_classification import DeviceClassification
from website.db.enterprise_entity.enterprise_entity import EnterpriseEntityRepository from website.db.enterprise_entity.enterprise_entity import EnterpriseEntityRepository
@ -276,6 +277,7 @@ class EnterpriseDeviceRepository(object):
for device in devices: for device in devices:
device_dict = { device_dict = {
"id": device.id, "id": device.id,
"suid": device.suid,
"name": device.name, "name": device.name,
"addr": device.addr, "addr": device.addr,
"device_model": device.device_model, "device_model": device.device_model,
@ -297,6 +299,7 @@ class EnterpriseDeviceRepository(object):
return 0 return 0
def list_entity_devices(self, entity_id: int, pageNo: int, pageSize: int, classification: str, status: int) -> dict: def list_entity_devices(self, entity_id: int, pageNo: int, pageSize: int, classification: str, status: int) -> dict:
"""获取企业的设备列表"""
with get_session() as session: with get_session() as session:
try: try:
session_count = ( session_count = (
@ -308,7 +311,7 @@ class EnterpriseDeviceRepository(object):
) )
if classification: if classification:
session_count.filter(EnterpriseDevice.classification == classification) session_count.filter(EnterpriseDevice.classification == classification)
if status: if status in consts.device_status_map and status != consts.device_status_default:
session_count.filter(EnterpriseDevice.status == status) session_count.filter(EnterpriseDevice.status == status)
count = session_count.count() count = session_count.count()
@ -324,10 +327,11 @@ class EnterpriseDeviceRepository(object):
if status: if status:
session_device.filter(EnterpriseDevice.status == status) session_device.filter(EnterpriseDevice.status == status)
devices = session_device.order_by(EnterpriseDevice.id.desc()).limit(pageSize).offset((pageNo - 1) * pageSize).all() devices = session_device.order_by(EnterpriseDevice.id.desc()).limit(pageSize).offset(
(pageNo - 1) * pageSize).all()
except Exception as e: except Exception as e:
logging.error("Failed to list devices") logging.error("Failed to list devices")
raise e raise e
return {"count": count, "devices": devices} return {"count": count, "devices": devices}

@ -1,4 +1,5 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import json
import logging import logging
import random import random
from sqlalchemy import text from sqlalchemy import text
@ -8,6 +9,7 @@ from website.db.enterprise_device import enterprise_device as DB_Device
from website.db.device_classification import ( from website.db.device_classification import (
device_classification as DB_DeviceClassification, device_classification as DB_DeviceClassification,
) )
from website.db.enterprise_busi_model import enterprise_busi_model_node_device as DB_BusiModelNodeDevice
from website.handler import APIHandler, authenticated from website.handler import APIHandler, authenticated
from website.util import shortuuid from website.util import shortuuid
from website import consts from website import consts
@ -406,6 +408,20 @@ class StatusInfoHandler(APIHandler):
@authenticated @authenticated
def post(self): def post(self):
device_id = self.get_int_argument("device_id")
if not device_id:
raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, "设备id不能为空")
db_device = DB_Device.EnterpriseDeviceRepository()
res = db_device.get_devices(device_ids=[device_id])
if not res:
raise errors.HTTPAPIError(errors.ERROR_BAD_REQUEST, "设备不存在")
res = res[0]
db_busi_model = DB_BusiModelNodeDevice.EnterpriseBusiModelNodeDeviceRepository()
busi_models = db_busi_model.get_busi_model_by_device(device_id=device_id)
for busi_model in busi_models:
base_model_ids = json.loads(busi_model["base_models"])
self.finish() self.finish()

@ -2,7 +2,6 @@
from website.handlers.enterprise_device import handler from website.handlers.enterprise_device import handler
handlers = [ handlers = [
("/enterprise/device/classification/add", handler.DeviceClassificationAddHandler), ("/enterprise/device/classification/add", handler.DeviceClassificationAddHandler),
("/enterprise/device/classification", handler.DeviceClassificationHandler), ("/enterprise/device/classification", handler.DeviceClassificationHandler),

Loading…
Cancel
Save