schema.py 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. # -*- coding: utf-8 -*-
  2. from pydantic import BaseModel, ConfigDict, Field
  3. from fastapi import Query
  4. from app.api.v1.module_business.crane.schema import BizCraneOutSchema
  5. from app.core.validator import DateTimeStr
  6. from app.core.base_schema import BaseSchema, UserBySchema,CommonSchema
  7. class BizVarDictCreateSchema(BaseModel):
  8. """
  9. 变量信息新增模型
  10. """
  11. var_code: str = Field(default=..., description='变量code')
  12. var_name: str = Field(default=..., description='变量名')
  13. mec_type: int = Field(default=..., description='所属机构')
  14. data_type: int = Field(default=..., description='数据类型')
  15. switch_type: int | None = Field(default=None, description='指令灯颜色')
  16. is_alert: int | None = Field(default=None, description='是否报警')
  17. modbus_address: str = Field(default=..., description='modbus地址')
  18. modbus_data_type: int = Field(default=..., description='modubs数据类型')
  19. is_reverse: int | None = Field(default=None, description='是否取反')
  20. unit: int | None = Field(default=None, description='单位')
  21. crane_id: int = Field(default=..., description='行车id')
  22. order: int = Field(default=..., description='排序')
  23. status: str = Field(default="0", description='是否启用')
  24. description: str | None = Field(default=None, max_length=255, description='备注')
  25. class BizVarDictUpdateSchema(BizVarDictCreateSchema):
  26. """
  27. 变量信息更新模型
  28. """
  29. ...
  30. class BizVarDictOutSchema(BizVarDictCreateSchema, BaseSchema, UserBySchema):
  31. """
  32. 变量信息响应模型
  33. """
  34. model_config = ConfigDict(from_attributes=True)
  35. crane: BizCraneOutSchema | None = Field(default=None, description='行车')
  36. class BizVarDictQueryParam:
  37. """变量信息查询参数"""
  38. def __init__(
  39. self,
  40. var_code: str | None = Query(None, description="变量code"),
  41. var_name: str | None = Query(None, description="变量名"),
  42. modbus_address: str | None = Query(None, description="modbus地址"),
  43. status: str | None = Query(None, description="是否启用"),
  44. mec_type: int | None = Query(None, description="所属机构"),
  45. data_type: int | None = Query(None, description="数据类型"),
  46. switch_type: int | None = Query(None, description="指令灯颜色"),
  47. is_alert: int | None = Query(None, description="是否报警"),
  48. modbus_data_type: int | None = Query(None, description="modubs数据类型"),
  49. is_reverse: int | None = Query(None, description="是否取反"),
  50. unit: int | None = Query(None, description="单位"),
  51. crane_id: int | None = Query(None, description="行车id"),
  52. order: int | None = Query(None, description="排序"),
  53. created_id: int | None = Query(None, description="创建人ID"),
  54. updated_id: int | None = Query(None, description="更新人ID"),
  55. created_time: list[DateTimeStr] | None = Query(None, description="创建时间范围", examples=["2025-01-01 00:00:00", "2025-12-31 23:59:59"]),
  56. updated_time: list[DateTimeStr] | None = Query(None, description="更新时间范围", examples=["2025-01-01 00:00:00", "2025-12-31 23:59:59"]),
  57. ) -> None:
  58. # 模糊查询字段
  59. self.var_code = ("like", var_code)
  60. # 模糊查询字段
  61. self.var_name = ("like", var_name)
  62. # 精确查询字段
  63. self.mec_type = mec_type
  64. # 精确查询字段
  65. self.data_type = data_type
  66. # 精确查询字段
  67. self.switch_type = switch_type
  68. # 精确查询字段
  69. self.is_alert = is_alert
  70. # 模糊查询字段
  71. self.modbus_address = ("like", modbus_address)
  72. # 精确查询字段
  73. self.modbus_data_type = modbus_data_type
  74. # 精确查询字段
  75. self.is_reverse = is_reverse
  76. # 精确查询字段
  77. self.unit = unit
  78. # 精确查询字段
  79. self.crane_id = crane_id
  80. # 精确查询字段
  81. self.order = order
  82. # 模糊查询字段
  83. self.status = ("like", status)
  84. # 精确查询字段
  85. self.created_id = created_id
  86. # 精确查询字段
  87. self.updated_id = updated_id
  88. # 时间范围查询
  89. if created_time and len(created_time) == 2:
  90. self.created_time = ("between", (created_time[0], created_time[1]))
  91. if updated_time and len(updated_time) == 2:
  92. self.updated_time = ("between", (updated_time[0], updated_time[1]))