增加基础接口关联查询

iot
DESKTOP-1JS6RSM\Admin 3 months ago
parent 4647d9faa7
commit e181e42c44

@ -1,7 +1,7 @@
from iti.applications.extensions import db from iti.applications.extensions import db
from iti.applications.common.crud import TimeModelMixin from iti.applications.common.crud import TimeModelMixin
from iti.applications.common.utils import BaseSchema from iti.applications.common.utils import BaseSchema
from apiflask.fields import String, Integer, DateTime from apiflask.fields import String, Integer, DateTime, Nested
class IotDevice(db.Model, TimeModelMixin): class IotDevice(db.Model, TimeModelMixin):
""" """
@ -22,6 +22,11 @@ class IotDevice(db.Model, TimeModelMixin):
brand_name = db.Column(db.String(255), nullable=False, comment="品牌名称") brand_name = db.Column(db.String(255), nullable=False, comment="品牌名称")
specification_model = db.Column(db.String(255), nullable=False, comment="规格型号") specification_model = db.Column(db.String(255), nullable=False, comment="规格型号")
status = db.Column(db.Integer, nullable=False, default=0, comment="状态 0:已停机 1:生产中 2:维修中") status = db.Column(db.Integer, nullable=False, default=0, comment="状态 0:已停机 1:生产中 2:维修中")
#关系
workshop = db.relationship(
"IotWorkshop",
primaryjoin="foreign(IotDevice.workshop_id) == IotWorkshop.id",
)
class IotDeviceSchema(BaseSchema): class IotDeviceSchema(BaseSchema):
@ -40,4 +45,19 @@ class IotDeviceSchema(BaseSchema):
specification_model = String() specification_model = String()
status = Integer() status = Integer()
created_at = DateTime(format="%Y-%m-%d %H:%M:%S") created_at = DateTime(format="%Y-%m-%d %H:%M:%S")
updated_at = DateTime(format="%Y-%m-%d %H:%M:%S") updated_at = DateTime(format="%Y-%m-%d %H:%M:%S")
#关系
workshop = Nested("IotWorkshopSimpleSchema")
class IotDeviceSimpleSchema(BaseSchema):
"""
设备信息表联合查询响应结构
"""
class Meta:
name = "IotDevice"
id = Integer()
device_name = String()
device_number = String()
#关系
workshop = Nested("IotWorkshopSimpleSchema")

@ -1,7 +1,7 @@
from iti.applications.extensions import db from iti.applications.extensions import db
from iti.applications.common.crud import TimeModelMixin from iti.applications.common.crud import TimeModelMixin
from iti.applications.common.utils import BaseSchema from iti.applications.common.utils import BaseSchema
from apiflask.fields import String, Integer, DateTime from apiflask.fields import String, Integer, DateTime, Nested
class IotEndpoint(db.Model, TimeModelMixin): class IotEndpoint(db.Model, TimeModelMixin):
@ -25,6 +25,11 @@ class IotEndpoint(db.Model, TimeModelMixin):
brand_name = db.Column(db.String(255), nullable=False, comment="品牌名称") brand_name = db.Column(db.String(255), nullable=False, comment="品牌名称")
specification_model = db.Column(db.String(255), nullable=False, comment="规格型号") specification_model = db.Column(db.String(255), nullable=False, comment="规格型号")
status = db.Column(db.Integer, nullable=False, default=0, comment="状态 0:停用 1:运行中 2:维修中") status = db.Column(db.Integer, nullable=False, default=0, comment="状态 0:停用 1:运行中 2:维修中")
#关系
device = db.relationship(
"IotDevice",
primaryjoin="foreign(IotEndpoint.device_id) == IotDevice.id",
)
class IotEndpointSchema(BaseSchema): class IotEndpointSchema(BaseSchema):
@ -45,4 +50,20 @@ class IotEndpointSchema(BaseSchema):
specification_model = String() specification_model = String()
status = Integer() status = Integer()
created_at = DateTime(format="%Y-%m-%d %H:%M:%S") created_at = DateTime(format="%Y-%m-%d %H:%M:%S")
updated_at = DateTime(format="%Y-%m-%d %H:%M:%S") updated_at = DateTime(format="%Y-%m-%d %H:%M:%S")
#关系
device = Nested("IotDeviceSimpleSchema")
class IotEndpointSimpleSchema(BaseSchema):
"""
采集端信息表联合查询响应结构
"""
class Meta:
name = "IotEndpoint"
id = Integer()
endpoint_name = String()
endpoint_number = String()
#关系
device = Nested("IotDeviceSimpleSchema")

@ -1,7 +1,7 @@
from iti.applications.extensions import db from iti.applications.extensions import db
from iti.applications.common.crud import TimeModelMixin from iti.applications.common.crud import TimeModelMixin
from iti.applications.common.utils import BaseSchema from iti.applications.common.utils import BaseSchema
from apiflask.fields import String, Integer, DateTime from apiflask.fields import String, Integer, DateTime, Nested
class IotNode(db.Model, TimeModelMixin): class IotNode(db.Model, TimeModelMixin):
@ -28,6 +28,11 @@ class IotNode(db.Model, TimeModelMixin):
calling_effective_config = db.Column(db.String(255), nullable=False, comment="报警触发表达式") calling_effective_config = db.Column(db.String(255), nullable=False, comment="报警触发表达式")
method_content = db.Column(db.String(255), nullable=False, comment="方法节点") method_content = db.Column(db.String(255), nullable=False, comment="方法节点")
status = db.Column(db.Integer, nullable=False, default=0, comment="状态 0:禁用 1:启用") status = db.Column(db.Integer, nullable=False, default=0, comment="状态 0:禁用 1:启用")
#关系
endpoint = db.relationship(
"IotEndpoint",
primaryjoin="foreign(IotNode.endpoint_id) == IotEndpoint.id",
)
class IotNodeSchema(BaseSchema): class IotNodeSchema(BaseSchema):
@ -51,4 +56,6 @@ class IotNodeSchema(BaseSchema):
method_content = String() method_content = String()
status = Integer() status = Integer()
created_at = DateTime(format="%Y-%m-%d %H:%M:%S") created_at = DateTime(format="%Y-%m-%d %H:%M:%S")
updated_at = DateTime(format="%Y-%m-%d %H:%M:%S") updated_at = DateTime(format="%Y-%m-%d %H:%M:%S")
#关系
endpoint = Nested("IotEndpointSimpleSchema")

@ -38,4 +38,15 @@ class IotWorkshopSchema(BaseSchema):
status = Integer() status = Integer()
remark = String() remark = String()
created_at = DateTime(format="%Y-%m-%d %H:%M:%S") created_at = DateTime(format="%Y-%m-%d %H:%M:%S")
updated_at = DateTime(format="%Y-%m-%d %H:%M:%S") updated_at = DateTime(format="%Y-%m-%d %H:%M:%S")
class IotWorkshopSimpleSchema(BaseSchema):
"""
车间信息表联合查询响应结构
"""
class Meta:
name = "IotWorkshop"
id = Integer()
workshop_name = String()
workshop_number = String()

@ -31,7 +31,7 @@ def list_device(query_data: DeviceQuery):
获取设备列表 获取设备列表
""" """
return success(get_list_or_page(query_data)) return success(get_list(query_data))
@bp.get("/page") @bp.get("/page")
@ -45,7 +45,7 @@ def page_device(query_data: DeviceQuery):
分页获取设备列表 分页获取设备列表
""" """
return page(get_list_or_page(query_data)) return page(get_page(query_data))
@bp.post("/add") @bp.post("/add")
@ -105,9 +105,9 @@ def delete_device(id: int):
return success() return success()
def get_list_or_page(query_data: DeviceQuery): def get_page(query_data: DeviceQuery):
""" """
获取设备信息列表或分页 获取设备信息分页
""" """
query = select(IotDevice).order_by(IotDevice.created_at.desc()) query = select(IotDevice).order_by(IotDevice.created_at.desc())
if query_data.keyword: if query_data.keyword:
@ -118,9 +118,26 @@ def get_list_or_page(query_data: DeviceQuery):
) )
if query_data.workshop_id: if query_data.workshop_id:
query = query.filter(IotDevice.workshop_id == query_data.workshop_id) query = query.filter(IotDevice.workshop_id == query_data.workshop_id)
if query_data.status: if query_data.status is not None:
query = query.filter(IotDevice.status == query_data.status) query = query.filter(IotDevice.status == query_data.status)
if query_data.page and query_data.size:
return db.paginate(query, page=query_data.page, per_page=query_data.size) return db.paginate(query, page=query_data.page, per_page=query_data.size)
else:
return db.session.scalars(query).all()
def get_list(query_data: DeviceQuery):
"""
获取设备列表
"""
query = select(IotDevice).options(noload(IotDevice.workshop)).order_by(IotDevice.created_at.desc())
if query_data.keyword:
kw = ModelFilter.escape_like(query_data.keyword)
query = query.filter(
IotDevice.device_name.like(f"%{kw}%")
| IotDevice.device_number.like(f"%{kw}%")
)
if query_data.workshop_id:
query = query.filter(IotDevice.workshop_id == query_data.workshop_id)
if query_data.status is not None:
query = query.filter(IotDevice.status == query_data.status)
return db.session.scalars(query).all()

@ -31,7 +31,7 @@ def list_endpoint(query_data: EndpointQuery):
获取采集端列表 获取采集端列表
""" """
return success(get_list_or_page(query_data)) return success(get_list(query_data))
@bp.get("/page") @bp.get("/page")
@ -45,7 +45,7 @@ def page_endpoint(query_data: EndpointQuery):
分页获取采集端列表 分页获取采集端列表
""" """
return page(get_list_or_page(query_data)) return page(get_page(query_data))
@bp.post("/add") @bp.post("/add")
@ -104,9 +104,9 @@ def delete_endpoint(id: int):
db.session.commit() db.session.commit()
return success() return success()
def get_list_or_page(query_data: EndpointQuery): def get_page(query_data: EndpointQuery):
""" """
获取采集端信息列表或分页 获取采集端信息分页
""" """
query = select(IotEndpoint).order_by(IotEndpoint.created_at.desc()) query = select(IotEndpoint).order_by(IotEndpoint.created_at.desc())
if query_data.keyword: if query_data.keyword:
@ -117,9 +117,26 @@ def get_list_or_page(query_data: EndpointQuery):
) )
if query_data.device_id: if query_data.device_id:
query = query.filter(IotEndpoint.device_id == query_data.device_id) query = query.filter(IotEndpoint.device_id == query_data.device_id)
if query_data.status: if query_data.status is not None:
query = query.filter(IotEndpoint.status == query_data.status) query = query.filter(IotEndpoint.status == query_data.status)
if query_data.page and query_data.size:
return db.paginate(query, page=query_data.page, per_page=query_data.size) return db.paginate(query, page=query_data.page, per_page=query_data.size)
else:
return db.session.scalars(query).all()
def get_list(query_data: EndpointQuery):
"""
获取采集端信息列表
"""
query = select(IotEndpoint).options(noload(IotEndpoint.device)).order_by(IotEndpoint.created_at.desc())
if query_data.keyword:
kw = ModelFilter.escape_like(query_data.keyword)
query = query.filter(
IotEndpoint.endpoint_name.like(f"%{kw}%")
| IotEndpoint.endpoint_number.like(f"%{kw}%")
)
if query_data.device_id:
query = query.filter(IotEndpoint.device_id == query_data.device_id)
if query_data.status is not None:
query = query.filter(IotEndpoint.status == query_data.status)
return db.session.scalars(query).all()

@ -31,7 +31,7 @@ def list_node(query_data: NodeQuery):
获取采集节点列表 获取采集节点列表
""" """
return success(get_list_or_page(query_data)) return success(get_list(query_data))
@bp.get("/page") @bp.get("/page")
@ -45,7 +45,7 @@ def page_node(query_data: NodeQuery):
分页获取采集节点列表 分页获取采集节点列表
""" """
return page(get_list_or_page(query_data)) return page(get_page(query_data))
@bp.post("/add") @bp.post("/add")
@ -105,16 +105,26 @@ def delete_node(id: int):
return success() return success()
def get_list_or_page(query_data: NodeQuery): def get_page(query_data: NodeQuery):
""" """
获取采集节点列表或分页 获取采集节点分页
""" """
query = select(IotNode).order_by(IotNode.created_at.desc()) query = select(IotNode).order_by(IotNode.created_at.desc())
if query_data.endpoint_id: if query_data.endpoint_id:
query = query.filter(IotNode.endpoint_id == query_data.endpoint_id) query = query.filter(IotNode.endpoint_id == query_data.endpoint_id)
if query_data.status: if query_data.status is not None:
query = query.filter(IotNode.status == query_data.status) query = query.filter(IotNode.status == query_data.status)
if query_data.page and query_data.size:
return db.paginate(query, page=query_data.page, per_page=query_data.size) return db.paginate(query, page=query_data.page, per_page=query_data.size)
else:
return db.session.scalars(query).all()
def get_list(query_data: NodeQuery):
"""
获取采集节点列表
"""
query = select(IotNode).options(noload(IotNode.endpoint)).order_by(IotNode.created_at.desc())
if query_data.endpoint_id:
query = query.filter(IotNode.endpoint_id == query_data.endpoint_id)
if query_data.status is not None:
query = query.filter(IotNode.status == query_data.status)
return db.session.scalars(query).all()

@ -116,7 +116,7 @@ def get_list_or_page(query_data: WorkshopQuery):
| IotWorkshop.workshop_number.like(f"%{kw}%") | IotWorkshop.workshop_number.like(f"%{kw}%")
| IotWorkshop.director_name.like(f"%{kw}%") | IotWorkshop.director_name.like(f"%{kw}%")
) )
if query_data.status: if query_data.status is not None:
query = query.filter(IotWorkshop.status == query_data.status) query = query.filter(IotWorkshop.status == query_data.status)
if query_data.page and query_data.size: if query_data.page and query_data.size:
return db.paginate(query, page=query_data.page, per_page=query_data.size) return db.paginate(query, page=query_data.page, per_page=query_data.size)

Loading…
Cancel
Save