schema.py 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. # -*- coding: utf-8 -*-
  2. from pydantic import BaseModel, ConfigDict, Field
  3. from fastapi import Query
  4. from app.core.validator import DateTimeStr
  5. from app.core.base_schema import BaseSchema, UserBySchema
  6. class GatewayCreateSchema(BaseModel):
  7. """
  8. 网关信息新增模型
  9. """
  10. crane_no: str = Field(default=..., description='行车编号')
  11. gateway_name: str = Field(default=..., description='网关名称')
  12. gateway_type: int = Field(default=..., description='网关类型')
  13. gateway_ipaddress: str = Field(default=..., description='网关IP地址 ')
  14. gateway_port: int | None = Field(default=None, description='网关端口 ')
  15. plc_brand: int | None = Field(default=None, description='PLC品牌')
  16. plc_model: str| None = Field(default=None, description='PLC型号 ')
  17. serial_port_name: str | None = Field(default=None, description='端口号')
  18. serial_baud_rate: int | None = Field(default=None, description='波特率 ')
  19. serial_data_bits: int | None = Field(default=None, description='数据位 5678')
  20. serial_stop_bits: int | None = Field(default=None, description='停止位 ')
  21. serial_parity: int | None = Field(default=None, description='检验位 ')
  22. status: str = Field(default="1", description='是否启用')
  23. description: str | None = Field(default=None, max_length=255, description='备注/描述')
  24. class GatewayUpdateSchema(GatewayCreateSchema):
  25. """
  26. 网关信息更新模型
  27. """
  28. ...
  29. class GatewayOutSchema(GatewayCreateSchema, BaseSchema, UserBySchema):
  30. """
  31. 网关信息响应模型
  32. """
  33. model_config = ConfigDict(from_attributes=True)
  34. class GatewayQueryParam:
  35. """网关信息查询参数"""
  36. def __init__(
  37. self,
  38. gateway_name: str | None = Query(None, description="网关名称"),
  39. gateway_ipaddress: str | None = Query(None, description="网关IP地址 "),
  40. plc_model: str | None = Query(None, description="PLC型号 "),
  41. serial_port_name: str | None = Query(None, description="端口号"),
  42. status: str | None = Query(None, description="是否启用(0:启用 1:禁用)"),
  43. crane_no: str | None = Query(None, description="行车编号"),
  44. gateway_type: int | None = Query(None, description="网关类型"),
  45. gateway_port: int | None = Query(None, description="网关端口 "),
  46. plc_brand: int | None = Query(None, description="PLC品牌"),
  47. serial_baud_rate: int | None = Query(None, description="波特率 "),
  48. serial_data_bits: int | None = Query(None, description="数据位 5678"),
  49. serial_stop_bits: int | None = Query(None, description="停止位 "),
  50. serial_parity: int | None = Query(None, description="检验位 "),
  51. created_time: list[DateTimeStr] | None = Query(None, description="创建时间范围", examples=["2025-01-01 00:00:00", "2025-12-31 23:59:59"]),
  52. updated_time: list[DateTimeStr] | None = Query(None, description="更新时间范围", examples=["2025-01-01 00:00:00", "2025-12-31 23:59:59"]),
  53. ) -> None:
  54. # 精确查询字段
  55. self.crane_no = crane_no
  56. # 模糊查询字段
  57. self.gateway_name = ("like", gateway_name)
  58. # 精确查询字段
  59. self.gateway_type = gateway_type
  60. # 模糊查询字段
  61. self.gateway_ipaddress = ("like", gateway_ipaddress)
  62. # 精确查询字段
  63. self.gateway_port = gateway_port
  64. # 精确查询字段
  65. self.plc_brand = plc_brand
  66. # 模糊查询字段
  67. self.plc_model = ("like", plc_model)
  68. # 模糊查询字段
  69. self.serial_port_name = ("like", serial_port_name)
  70. # 精确查询字段
  71. self.serial_baud_rate = serial_baud_rate
  72. # 精确查询字段
  73. self.serial_data_bits = serial_data_bits
  74. # 精确查询字段
  75. self.serial_stop_bits = serial_stop_bits
  76. # 精确查询字段
  77. self.serial_parity = serial_parity
  78. # 模糊查询字段
  79. self.status = ("like", status)
  80. # 时间范围查询
  81. if created_time and len(created_time) == 2:
  82. self.created_time = ("between", (created_time[0], created_time[1]))
  83. if updated_time and len(updated_time) == 2:
  84. self.updated_time = ("between", (updated_time[0], updated_time[1]))