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 DeviceQuery(Pagination): """ 设备信息查询请求 """ keyword: Optional[str] = field( default=None, metadata={ "required": False, "metadata": { "description": "关键字 [设备名称|设备编号] 模糊查询" }, }, ) workshop_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 DeviceAddRequest(BaseSchema): """ 新增设备信息 """ workshop_id = fields.Integer( required=False, metadata={"example": 1, "description": "车间ID"}, load_default=None, ) device_name = fields.String( required=False, metadata={"example": "设备名称", "descriptrion": "设备名称"}, load_default=None, ) device_number = fields.String( required=False, metadata={"example": "设备编号", "description": "设备编号"}, load_default=None, ) description = fields.String( required=False, metadata={"example": "设备描述", "description": "设备描述"}, load_default=None, ) brand_name = fields.String( required=False, metadata={"example": "品牌名称", "description": "品牌名称"}, load_default=None, ) specification_model = fields.String( required=False, metadata={"example": "规格型号", "description": "规格型号"}, load_default=None, ) class DeviceUpdateRequest(BaseSchema): """ 更新设备信息 """ workshop_id = fields.Integer( required=False, metadata={"example": 1, "description": "车间ID"}, load_default=None, ) device_name = fields.String( required=False, metadata={"example": "设备名称", "descriptrion": "设备名称"}, load_default=None, ) device_number = fields.String( required=False, metadata={"example": "设备编号", "description": "设备编号"}, load_default=None, ) description = fields.String( required=False, metadata={"example": "设备描述", "description": "设备描述"}, load_default=None, ) brand_name = fields.String( required=False, metadata={"example": "品牌名称", "description": "品牌名称"}, load_default=None, ) specification_model = fields.String( required=False, metadata={"example": "规格型号", "description": "规格型号"}, load_default=None, ) status = fields.Integer( required=False, metadata={"example": 1, "description": "状态(0-已停机,1-生产中,2-维修中)"}, load_default=None, )