diff --git a/iti/applications/models/iot/iot_device.py b/iti/applications/models/iot/iot_device.py index 064f286..f3475b6 100644 --- a/iti/applications/models/iot/iot_device.py +++ b/iti/applications/models/iot/iot_device.py @@ -1,22 +1,21 @@ from iti.applications.extensions import db -from iti.applications.common.crud import IdModelMixin, TimeModelMixin +from iti.applications.common.crud import TimeModelMixin from iti.applications.common.utils import BaseSchema from apiflask.fields import String, Integer, DateTime -import uuid -class IotDevice(db.Model, IdModelMixin, TimeModelMixin): +class IotDevice(db.Model, TimeModelMixin): """ 设备信息表 """ __tablename__ = "iot_device" id = db.Column( - db.String(36), + db.Integer, primary_key=True, - default=lambda: str(uuid.uuid4().hex), + autoincrement=True, comment="标识", ) - workshop_id = db.Column(db.String(36), nullable=False, unique=True, comment="车间ID") + workshop_id = db.Column(db.Integer, nullable=False, default=0, unique=True, comment="车间ID") device_name = db.Column(db.String(255), nullable=False, unique=True, comment="设备名称") device_number = db.Column(db.String(20), nullable=False, comment="设备编号") description = db.Column(db.Text, nullable=True, comment="设备描述") @@ -32,8 +31,8 @@ class IotDeviceSchema(BaseSchema): class Meta: name = "IotDevice" - id = String() - workshop_id = String() + id = Integer() + workshop_id = Integer() device_name = String() device_number = String() description = String() diff --git a/iti/applications/models/iot/iot_endpoint.py b/iti/applications/models/iot/iot_endpoint.py index 089688f..b598f47 100644 --- a/iti/applications/models/iot/iot_endpoint.py +++ b/iti/applications/models/iot/iot_endpoint.py @@ -1,23 +1,22 @@ from iti.applications.extensions import db -from iti.applications.common.crud import IdModelMixin, TimeModelMixin +from iti.applications.common.crud import TimeModelMixin from iti.applications.common.utils import BaseSchema from apiflask.fields import String, Integer, DateTime -import uuid -class IotEndpoint(db.Model, IdModelMixin, TimeModelMixin): +class IotEndpoint(db.Model, TimeModelMixin): """ 采集端信息表 """ __tablename__ = "iot_endpoint" id = db.Column( - db.String(36), + db.Integer, primary_key=True, - default=lambda: str(uuid.uuid4().hex), + autoincrement=True, comment="标识", ) - device_id = db.Column(db.String(36), nullable=False, unique=True, comment="设备ID") + device_id = db.Column(db.Integer, nullable=False, default=0, unique=True, comment="设备ID") endpoint_name = db.Column(db.String(255), nullable=False, unique=True, comment="采集端名称") endpoint_number = db.Column(db.String(20), nullable=False, comment="采集端编号") description = db.Column(db.Text, nullable=True, comment="采集端描述") @@ -35,8 +34,8 @@ class IotEndpointSchema(BaseSchema): class Meta: name = "IotEndpoint" - id = String() - device_id = String() + id = Integer() + device_id = Integer() endpoint_name = String() endpoint_number = String() description = String() diff --git a/iti/applications/models/iot/iot_node.py b/iti/applications/models/iot/iot_node.py index 01186b3..fa14171 100644 --- a/iti/applications/models/iot/iot_node.py +++ b/iti/applications/models/iot/iot_node.py @@ -1,23 +1,22 @@ from iti.applications.extensions import db -from iti.applications.common.crud import IdModelMixin, TimeModelMixin +from iti.applications.common.crud import TimeModelMixin from iti.applications.common.utils import BaseSchema from apiflask.fields import String, Integer, DateTime -import uuid -class IotNode(db.Model, IdModelMixin, TimeModelMixin): +class IotNode(db.Model, TimeModelMixin): """ 节点信息表 """ __tablename__ = "iot_node" id = db.Column( - db.String(36), + db.Integer, primary_key=True, - default=lambda: str(uuid.uuid4().hex), + autoincrement=True, comment="标识", ) - endpoint_id = db.Column(db.String(36), nullable=False, unique=True, comment="采集端ID") + endpoint_id = db.Column(db.Integer, nullable=False, default=0, unique=True, comment="采集端ID") title = db.Column(db.String(255), nullable=False, unique=True, comment="节点ID") mark = db.Column(db.String(255), nullable=False, comment="采集标识") mark_type = db.Column(db.Integer, nullable=True, comment="采集类型 1:只读 2:只写 3:读写") @@ -38,8 +37,8 @@ class IotNodeSchema(BaseSchema): class Meta: name = "IotNode" - id = String() - endpoint_id = String() + id = Integer() + endpoint_id = Integer() title = String() mark = String() mark_type = Integer() diff --git a/iti/applications/models/iot/iot_workshop.py b/iti/applications/models/iot/iot_workshop.py index 2ef668a..b489377 100644 --- a/iti/applications/models/iot/iot_workshop.py +++ b/iti/applications/models/iot/iot_workshop.py @@ -1,19 +1,18 @@ from iti.applications.extensions import db -from iti.applications.common.crud import IdModelMixin, TimeModelMixin, RemarkModelMixin +from iti.applications.common.crud import TimeModelMixin, RemarkModelMixin from iti.applications.common.utils import BaseSchema from apiflask.fields import String, Integer, DateTime -import uuid -class IotWorkshop(db.Model, IdModelMixin, TimeModelMixin, RemarkModelMixin): +class IotWorkshop(db.Model, TimeModelMixin, RemarkModelMixin): """ 车间信息表 """ __tablename__ = "iot_workshop" id = db.Column( - db.String(36), + db.Integer, primary_key=True, - default=lambda: str(uuid.uuid4().hex), + autoincrement=True, comment="标识", ) workshop_name = db.Column(db.String(255), nullable=False, unique=True, comment="车间名称") @@ -30,7 +29,7 @@ class IotWorkshopSchema(BaseSchema): class Meta: name = "IotWorkshop" - id = String() + id = Integer() workshop_name = String() workshop_number = String() total_area = String() diff --git a/iti/applications/routes/iot/device_ctl.py b/iti/applications/routes/iot/device_ctl.py index b307529..060f5f6 100644 --- a/iti/applications/routes/iot/device_ctl.py +++ b/iti/applications/routes/iot/device_ctl.py @@ -26,7 +26,7 @@ bp = APIBlueprint("iot_device", __name__, url_prefix="/device", tag="设备管 @permission("iot:device:list") @bp.input(DeviceQuery.Schema(partial=True), location="query") @bp.output(IotDeviceSchema(many=True)) -def list_workshop(query_data: DeviceQuery): +def list_device(query_data: DeviceQuery): """ 获取设备列表 """ @@ -40,7 +40,7 @@ def list_workshop(query_data: DeviceQuery): @permission("iot:device:list") @bp.input(DeviceQuery.Schema(partial=True), location="query") @bp.output(page_schema(IotDeviceSchema(many=True))) -def page_user(query_data: DeviceQuery): +def page_device(query_data: DeviceQuery): """ 分页获取设备列表 """ @@ -53,7 +53,7 @@ def page_user(query_data: DeviceQuery): @bp.doc(security="JWT") @permission("iot:device:add") @bp.input(DeviceAddRequest, location="json") -def add_workshop(json_data: dict): +def add_device(json_data: dict): """ 添加设备信息 """ @@ -65,12 +65,12 @@ def add_workshop(json_data: dict): return success() -@bp.put("/") +@bp.put("/") @jwt_required() @bp.doc(security="JWT") @permission("iot:device:update") @bp.input(DeviceUpdateRequest(partial=True), location="json") -def update_workshop(id: str, json_data: dict): +def update_device(id: int, json_data: dict): """ 更新设备信息 """ @@ -86,6 +86,24 @@ def update_workshop(id: str, json_data: dict): return success() +@bp.delete("/") +@jwt_required() +@bp.doc(security="JWT") +@permission("iot:device:delete") +def delete_device(id: int): + """ + 删除设备信息 + """ + + device = db.session.scalar(select(IotDevice).filter_by(id=id)) + if not device: + raise BizException("设备不存在") + + # 删除设备 + db.session.delete(device) + db.session.commit() + return success() + def get_list_or_page(query_data: DeviceQuery): """ diff --git a/iti/applications/routes/iot/endpoint_ctl.py b/iti/applications/routes/iot/endpoint_ctl.py index cf68d54..b5cd427 100644 --- a/iti/applications/routes/iot/endpoint_ctl.py +++ b/iti/applications/routes/iot/endpoint_ctl.py @@ -26,7 +26,7 @@ bp = APIBlueprint("iot_endpoint", __name__, url_prefix="/endpoint", tag="采集 @permission("iot:endpoint:list") @bp.input(EndpointQuery.Schema(partial=True), location="query") @bp.output(IotEndpointSchema(many=True)) -def list_workshop(query_data: EndpointQuery): +def list_endpoint(query_data: EndpointQuery): """ 获取采集端列表 """ @@ -40,7 +40,7 @@ def list_workshop(query_data: EndpointQuery): @permission("iot:endpoint:list") @bp.input(EndpointQuery.Schema(partial=True), location="query") @bp.output(page_schema(IotEndpointSchema(many=True))) -def page_user(query_data: EndpointQuery): +def page_endpoint(query_data: EndpointQuery): """ 分页获取采集端列表 """ @@ -53,24 +53,24 @@ def page_user(query_data: EndpointQuery): @bp.doc(security="JWT") @permission("iot:endpoint:add") @bp.input(EndpointAddRequest, location="json") -def add_workshop(json_data: dict): +def add_endpoint(json_data: dict): """ 添加采集端信息 """ - device = IotEndpoint(**json_data) - device.status = 0 - db.session.add(device) + endpoint = IotEndpoint(**json_data) + endpoint.status = 0 + db.session.add(endpoint) db.session.commit() return success() -@bp.put("/") +@bp.put("/") @jwt_required() @bp.doc(security="JWT") @permission("iot:endpoint:update") @bp.input(EndpointUpdateRequest(partial=True), location="json") -def update_workshop(id: str, json_data: dict): +def update_endpoint(id: int, json_data: dict): """ 更新采集端信息 """ @@ -86,6 +86,23 @@ def update_workshop(id: str, json_data: dict): return success() +@bp.delete("/") +@jwt_required() +@bp.doc(security="JWT") +@permission("iot:endpoint:delete") +def delete_endpoint(id: int): + """ + 删除采集端信息 + """ + + endpoint = db.session.scalar(select(IotEndpoint).filter_by(id=id)) + if not endpoint: + raise BizException("采集端不存在") + + # 删除 + db.session.delete(endpoint) + db.session.commit() + return success() def get_list_or_page(query_data: EndpointQuery): """ diff --git a/iti/applications/routes/iot/node_ctl.py b/iti/applications/routes/iot/node_ctl.py index 1e2f35b..0f1734d 100644 --- a/iti/applications/routes/iot/node_ctl.py +++ b/iti/applications/routes/iot/node_ctl.py @@ -21,12 +21,12 @@ from iti.applications.common import permission bp = APIBlueprint("iot_node", __name__, url_prefix="/node", tag="采集节点管理") @bp.get("/list") -# @jwt_required() -# @bp.doc(security="JWT") -# @permission("iot:node:list") +@jwt_required() +@bp.doc(security="JWT") +@permission("iot:node:list") @bp.input(NodeQuery.Schema(partial=True), location="query") @bp.output(IotNodeSchema(many=True)) -def list_workshop(query_data: NodeQuery): +def list_node(query_data: NodeQuery): """ 获取采集节点列表 """ @@ -40,7 +40,7 @@ def list_workshop(query_data: NodeQuery): @permission("iot:node:list") @bp.input(NodeQuery.Schema(partial=True), location="query") @bp.output(page_schema(IotNodeSchema(many=True))) -def page_user(query_data: NodeQuery): +def page_node(query_data: NodeQuery): """ 分页获取采集节点列表 """ @@ -53,7 +53,7 @@ def page_user(query_data: NodeQuery): @bp.doc(security="JWT") @permission("iot:node:add") @bp.input(NodeAddRequest, location="json") -def add_workshop(json_data: dict): +def add_node(json_data: dict): """ 添加采集节点信息 """ @@ -65,12 +65,12 @@ def add_workshop(json_data: dict): return success() -@bp.put("/") +@bp.put("/") @jwt_required() @bp.doc(security="JWT") @permission("iot:node:update") @bp.input(NodeUpdateRequest(partial=True), location="json") -def update_workshop(id: str, json_data: dict): +def update_node(id: int, json_data: dict): """ 更新采集节点信息 """ @@ -86,6 +86,24 @@ def update_workshop(id: str, json_data: dict): return success() +@bp.delete("/") +@jwt_required() +@bp.doc(security="JWT") +@permission("iot:node:delete") +def delete_node(id: int): + """ + 删除采集节点信息 + """ + + node = db.session.scalar(select(IotNode).filter_by(id=id)) + if not node: + raise BizException("采集节点不存在") + + # 删除 + db.session.delete(node) + db.session.commit() + return success() + def get_list_or_page(query_data: NodeQuery): """ diff --git a/iti/applications/routes/iot/schemas/device.py b/iti/applications/routes/iot/schemas/device.py index cf8059c..fde744b 100644 --- a/iti/applications/routes/iot/schemas/device.py +++ b/iti/applications/routes/iot/schemas/device.py @@ -21,11 +21,11 @@ class DeviceQuery(Pagination): }, }, ) - workshop_id: str = field( + workshop_id: int = field( default=None, metadata={ "required": False, - "metadata": {"example": "ase1f2", "description": "车间ID"}, + "metadata": {"example": 1, "description": "车间ID"}, }, ) status: int = field( @@ -43,9 +43,9 @@ class DeviceAddRequest(BaseSchema): 新增设备信息 """ - workshop_id = fields.String( + workshop_id = fields.Integer( required=False, - metadata={"example": "车间ID", "description": "车间ID"}, + metadata={"example": 1, "description": "车间ID"}, load_default=None, ) device_name = fields.String( @@ -80,9 +80,9 @@ class DeviceUpdateRequest(BaseSchema): 更新设备信息 """ - workshop_id = fields.String( + workshop_id = fields.Integer( required=False, - metadata={"example": "车间ID", "description": "车间ID"}, + metadata={"example": 1, "description": "车间ID"}, load_default=None, ) device_name = fields.String( diff --git a/iti/applications/routes/iot/schemas/endpoint.py b/iti/applications/routes/iot/schemas/endpoint.py index 3aeef4d..c9889d2 100644 --- a/iti/applications/routes/iot/schemas/endpoint.py +++ b/iti/applications/routes/iot/schemas/endpoint.py @@ -21,11 +21,11 @@ class EndpointQuery(Pagination): }, }, ) - device_id: str = field( + device_id: int = field( default=None, metadata={ "required": False, - "metadata": {"example": "ase1f2", "description": "设备ID"}, + "metadata": {"example": 1, "description": "设备ID"}, }, ) status: int = field( @@ -43,9 +43,9 @@ class EndpointAddRequest(BaseSchema): 采集端新增信息 """ - device_id = fields.String( + device_id = fields.Integer( required=False, - metadata={"example": "设备ID", "description": "设备ID"}, + metadata={"example": 1, "description": "设备ID"}, load_default=None, ) endpoint_name = fields.String( @@ -90,9 +90,9 @@ class EndpointUpdateRequest(BaseSchema): 更新采集端信息 """ - device_id = fields.String( + device_id = fields.Integer( required=False, - metadata={"example": "设备ID", "description": "设备ID"}, + metadata={"example": 1, "description": "设备ID"}, load_default=None, ) endpoint_name = fields.String( diff --git a/iti/applications/routes/iot/schemas/node.py b/iti/applications/routes/iot/schemas/node.py index e465274..39c41b4 100644 --- a/iti/applications/routes/iot/schemas/node.py +++ b/iti/applications/routes/iot/schemas/node.py @@ -12,11 +12,11 @@ class NodeQuery(Pagination): 节点信息查询请求 """ - endpoint_id: str = field( + endpoint_id: int = field( default=None, metadata={ "required": False, - "metadata": {"example": "ase1f2", "description": "采集端ID"}, + "metadata": {"example": 1, "description": "采集端ID"}, }, ) status: int = field( @@ -34,9 +34,9 @@ class NodeAddRequest(BaseSchema): 节点新增信息 """ - endpoint_id = fields.String( + endpoint_id = fields.Integer( required=False, - metadata={"example": "采集端ID", "description": "采集端ID"}, + metadata={"example": 1, "description": "采集端ID"}, load_default=None, ) title = fields.String( @@ -96,9 +96,9 @@ class NodeUpdateRequest(BaseSchema): 节点更新信息 """ - endpoint_id = fields.String( + endpoint_id = fields.Integer( required=False, - metadata={"example": "采集端ID", "description": "采集端ID"}, + metadata={"example": 1, "description": "采集端ID"}, load_default=None, ) title = fields.String( diff --git a/iti/applications/routes/iot/workshop_ctl.py b/iti/applications/routes/iot/workshop_ctl.py index e7b0a61..4c2d468 100644 --- a/iti/applications/routes/iot/workshop_ctl.py +++ b/iti/applications/routes/iot/workshop_ctl.py @@ -40,7 +40,7 @@ def list_workshop(query_data: WorkshopQuery): @permission("iot:workshop:list") @bp.input(WorkshopQuery.Schema(partial=True), location="query") @bp.output(page_schema(IotWorkshopSchema(many=True))) -def page_user(query_data: WorkshopQuery): +def page_workshop(query_data: WorkshopQuery): """ 分页获取车间列表 """ @@ -64,12 +64,12 @@ def add_workshop(json_data: dict): db.session.commit() return success() -@bp.put("/") +@bp.put("/") @jwt_required() @bp.doc(security="JWT") @permission("iot:workshop:update") @bp.input(WorkshopUpdateRequest(partial=True), location="json") -def update_workshop(id: str, json_data: dict): +def update_workshop(id: int, json_data: dict): """ 更新车间信息 """ @@ -85,6 +85,24 @@ def update_workshop(id: str, json_data: dict): return success() +@bp.delete("/") +@jwt_required() +@bp.doc(security="JWT") +@permission("iot:device:delete") +def delete_workshop(id: int): + """ + 删除车间信息 + """ + + workshop = db.session.scalar(select(IotWorkshop).filter_by(id=id)) + if not workshop: + raise BizException("车间信息不存在") + + # 删除 + db.session.delete(workshop) + db.session.commit() + return success() + def get_list_or_page(query_data: WorkshopQuery): """