schema.py 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  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 BizVarDictCreateSchema(BaseModel):
  7. """
  8. 变量信息新增模型
  9. """
  10. crane_no: str = Field(default=..., description='行车编号')
  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. addr: str = Field(default=..., description='采集地址')
  17. gateway_id: int = Field(default=..., description='网关id')
  18. var_sort: int | None = Field(default=None, description='排序')
  19. var_group: int | None = Field(default=None, description='变量分组')
  20. var_category: int = Field(default=..., description='变量分类')
  21. translate: str | None = Field(default=None, description='绑定公式')
  22. device_no: str | None = Field(default=None, description='关联设备编号 ')
  23. is_reverse: int | None = Field(default=None, description='是否取反')
  24. is_top_show: int = Field(default=..., description='是否重点显示')
  25. is_save: int = Field(default=..., description='是否生成')
  26. is_calibration: int | None = Field(default=None, description='是否标定')
  27. is_overview_top_show: int = Field(default=..., description='是否首页重点显示')
  28. is_home_page_show: int = Field(default=..., description='是否首页显示')
  29. is_diagnose: int | None = Field(default=None, description='是否启用诊断专家')
  30. is_upload: int = Field(default=..., description='是否上传云平台')
  31. diagnosis_id: str | None = Field(default=None, description='关联诊断专家')
  32. status: str = Field(default="1", description='是否启用')
  33. description: str | None = Field(default=None, max_length=255, description='备注/描述')
  34. class BizVarDictUpdateSchema(BizVarDictCreateSchema):
  35. """
  36. 变量信息更新模型
  37. """
  38. ...
  39. class BizVarDictOutSchema(BizVarDictCreateSchema, BaseSchema, UserBySchema):
  40. """
  41. 变量信息响应模型
  42. """
  43. model_config = ConfigDict(from_attributes=True)
  44. class BizVarDictQueryParam:
  45. """变量信息查询参数"""
  46. def __init__(
  47. self,
  48. var_code: str | None = Query(None, description="变量code"),
  49. var_name: str | None = Query(None, description="变量名称"),
  50. addr: str | None = Query(None, description="modbus地址"),
  51. device_no: str | None = Query(None, description="关联设备编号 "),
  52. diagnosis_id: str | None = Query(None, description="关联诊断专家"),
  53. status: str | None = Query(None, description="是否启用"),
  54. crane_no: str | None = Query(None, description=""),
  55. mec_type: int | None = Query(None, description="所属机构"),
  56. data_type: int | None = Query(None, description="数据类型"),
  57. switch_type: int | None = Query(None, description="变量类型"),
  58. gateway_id: int | None = Query(None, description="网关"),
  59. var_sort: int | None = Query(None, description="排序"),
  60. var_group: int | None = Query(None, description="变量分组"),
  61. var_category: int | None = Query(None, description="变量分类"),
  62. translate: str | None = Query(None, description="绑定公式"),
  63. is_reverse: int | None = Query(None, description="是否取反"),
  64. is_top_show: int | None = Query(None, description="是否重点显示"),
  65. is_save: int | None = Query(None, description="是否生成"),
  66. is_calibration: int | None = Query(None, description="是否标定"),
  67. is_overview_top_show: int | None = Query(None, description="是否首页重点显示"),
  68. is_home_page_show: int | None = Query(None, description="是否首页显示"),
  69. is_diagnose: int | None = Query(None, description="是否启用诊断专家"),
  70. is_upload: int | None = Query(None, description="是否上传云平台"),
  71. created_id: int | None = Query(None, description="创建人ID"),
  72. updated_id: int | None = Query(None, description="更新人ID"),
  73. created_time: list[DateTimeStr] | None = Query(None, description="创建时间范围", examples=["2025-01-01 00:00:00", "2025-12-31 23:59:59"]),
  74. updated_time: list[DateTimeStr] | None = Query(None, description="更新时间范围", examples=["2025-01-01 00:00:00", "2025-12-31 23:59:59"]),
  75. ) -> None:
  76. # 精确查询字段
  77. self.crane_no = crane_no
  78. # 模糊查询字段
  79. self.var_code = ("like", var_code)
  80. # 模糊查询字段
  81. self.var_name = ("like", var_name)
  82. # 精确查询字段
  83. self.mec_type = mec_type
  84. # 精确查询字段
  85. self.data_type = data_type
  86. # 精确查询字段
  87. self.switch_type = switch_type
  88. # 模糊查询字段
  89. self.addr = ("like", addr)
  90. # 精确查询字段
  91. self.gateway_id = gateway_id
  92. # 精确查询字段
  93. self.var_sort = var_sort
  94. # 精确查询字段
  95. self.var_group = var_group
  96. # 精确查询字段
  97. self.var_category = var_category
  98. # 精确查询字段
  99. self.translate = translate
  100. # 模糊查询字段
  101. self.device_no = ("like", device_no)
  102. # 精确查询字段
  103. self.is_reverse = is_reverse
  104. # 精确查询字段
  105. self.is_top_show = is_top_show
  106. # 精确查询字段
  107. self.is_save = is_save
  108. # 精确查询字段
  109. self.is_calibration = is_calibration
  110. # 精确查询字段
  111. self.is_overview_top_show = is_overview_top_show
  112. # 精确查询字段
  113. self.is_home_page_show = is_home_page_show
  114. # 精确查询字段
  115. self.is_diagnose = is_diagnose
  116. # 精确查询字段
  117. self.is_upload = is_upload
  118. # 模糊查询字段
  119. self.diagnosis_id = ("like", diagnosis_id)
  120. # 模糊查询字段
  121. self.status = ("like", status)
  122. # 精确查询字段
  123. self.created_id = created_id
  124. # 精确查询字段
  125. self.updated_id = updated_id
  126. # 时间范围查询
  127. if created_time and len(created_time) == 2:
  128. self.created_time = ("between", (created_time[0], created_time[1]))
  129. if updated_time and len(updated_time) == 2:
  130. self.updated_time = ("between", (updated_time[0], updated_time[1]))
  131. class VarDictMecGroupSchema(BaseModel):
  132. """
  133. 行车信息页面数据模型
  134. """
  135. mec_type: str = Field(default=..., description='所属机构')
  136. varList_simple: list[BizVarDictOutSchema] | None = Field(default=None, description='变量数据')