You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

135 lines
4.0 KiB
Python

from dataclasses import field
from marshmallow_dataclass import dataclass
from marshmallow import validates_schema, ValidationError
from iti.applications.common.utils.schema import BaseSchema, Pagination
from typing import ClassVar, Optional
from apiflask import fields
@dataclass(base_schema=BaseSchema)
class NodeQuery(Pagination):
"""
节点信息查询请求
"""
keyword: Optional[str] = field(
default=None,
metadata={
"required": False,
"metadata": {"example": "tt_01", "description": "查询关键字[节点编号]"},
},
)
workshop_id: int = field(
default=None,
metadata={
"required": False,
"metadata": {"example": 1, "description": "车间ID"},
},
)
device_id: int = field(
default=None,
metadata={
"required": False,
"metadata": {"example": 1, "description": "设备ID"},
},
)
endpoint_id: int = field(
default=None,
metadata={
"required": False,
"metadata": {"example": 1, "description": "采集端ID"},
},
)
status: int = field(
default=None,
metadata={
"required": False,
"metadata": {"example": 0, "description": "状态"},
},
)
Schema: ClassVar[BaseSchema] = BaseSchema # For the type check
class NodeAddRequest(BaseSchema):
"""
节点新增信息
"""
device_id = fields.Integer(
required=True,
metadata={"example": 1, "description": "设备ID"},
)
endpoint_id = fields.Integer(
required=True,
metadata={"example": 1, "description": "采集端ID"},
)
node_number = fields.String(
required=True,
metadata={"example": "tt_01", "description": "节点编号"},
)
title = fields.String(
required=True,
metadata={"example": "节点ID", "description": "节点ID"},
)
mark = fields.String(
required=False,
metadata={"example": "采集标识", "description": "采集标识"},
load_default="",
)
mark_type = fields.Integer(
required=False,
metadata={"example": "读写标识", "description": "采集类型 1:只读 2:只写 3:读写"},
load_default=1,
)
tag_label = fields.String(
required=True,
metadata={"example": "变量别名", "description": "变量别名"},
)
data_type = fields.String(
required=True,
metadata={"example": "text", "description": "值类型 text: 文本 int: 整型 float: 浮点型 boolean:布尔型"},
)
class NodeUpdateRequest(BaseSchema):
"""
节点更新信息
"""
device_id = fields.Integer(
required=True,
metadata={"example": 1, "description": "设备ID"},
)
endpoint_id = fields.Integer(
required=True,
metadata={"example": 1, "description": "采集端ID"},
)
node_number = fields.String(
required=True,
metadata={"example": "tt_01", "description": "节点编号"},
)
title = fields.String(
required=True,
metadata={"example": "节点ID", "description": "节点ID"},
)
mark = fields.String(
required=False,
metadata={"example": "采集标识", "description": "采集标识"},
load_default="",
)
mark_type = fields.Integer(
required=False,
metadata={"example": "读写标识", "description": "采集类型 1:只读 2:只写 3:读写"},
load_default=1,
)
tag_label = fields.String(
required=True,
metadata={"example": "变量别名", "description": "变量别名"},
)
data_type = fields.String(
required=True,
metadata={"example": "text", "description": "值类型 text: 文本 int: 整型 float: 浮点型 boolean:布尔型"},
)
status = fields.Integer(
required=False,
metadata={"example": 1, "description": "状态(0-禁用,1-启用)"},
load_default=None,
)