entity.py.vm 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. # -*- coding: utf-8 -*-
  2. # @Author : {{ table.function_author }}
  3. # @FileName: {{ table.class_name }}.py
  4. # @Time : {{ datetime }}
  5. {%- set flags = namespace(has_datetime=False, needs_str_to_int=False, has_query=False) %}
  6. {%- for column in table.columns %}
  7. {%- set col_type = (column.java_type or 'String')|lower %}
  8. {%- if col_type in ['date', 'datetime', 'timestamp'] %}
  9. {%- set flags.has_datetime = True %}
  10. {%- endif %}
  11. {%- if col_type in ['integer', 'int', 'long', 'short'] %}
  12. {%- set flags.needs_str_to_int = True %}
  13. {%- endif %}
  14. {%- if column.is_query == '1' %}
  15. {%- set flags.has_query = True %}
  16. {%- endif %}
  17. {%- endfor %}
  18. from typing import Optional, Annotated
  19. {%- if flags.has_datetime %}
  20. from datetime import datetime
  21. {%- endif %}
  22. from pydantic import Field{% if flags.has_datetime or flags.needs_str_to_int %}, BeforeValidator{% endif %}
  23. from ruoyi_common.base.model import BaseEntity
  24. {%- if flags.has_datetime and flags.needs_str_to_int %}
  25. from ruoyi_common.base.transformer import to_datetime, str_to_int
  26. {%- elif flags.has_datetime %}
  27. from ruoyi_common.base.transformer import to_datetime
  28. {%- elif flags.needs_str_to_int %}
  29. from ruoyi_common.base.transformer import str_to_int
  30. {%- endif %}
  31. from ruoyi_common.base.schema_excel import ExcelField
  32. {%- if flags.has_query %}
  33. from ruoyi_common.base.schema_vo import VoField
  34. {%- endif %}
  35. class {{ class_name_pascal }}(BaseEntity):
  36. """
  37. {{ table.table_comment }}对象
  38. """
  39. {%- for column in table.columns %}
  40. {%- set raw_comment = column.column_comment or column.java_field %}
  41. {%- set display_comment = raw_comment or column.java_field %}
  42. {%- set comment = (display_comment)|replace('"','\\"') %}
  43. {%- set excel_name = (raw_comment or column.java_field)|replace('"','\\"') %}
  44. {%- set attr_name = underscore(column.java_field) %}
  45. {%- set col_type = (column.java_type or 'String') %}
  46. {%- set col_type_lower = col_type|lower %}
  47. {%- set py_type = 'Optional[str]' %}
  48. {%- if col_type_lower in ['integer', 'int', 'long', 'short'] %}
  49. {%- set py_type = 'Optional[int]' %}
  50. {%- elif col_type_lower in ['float', 'double', 'bigdecimal', 'decimal'] %}
  51. {%- set py_type = 'Optional[float]' %}
  52. {%- elif col_type_lower in ['boolean', 'bool'] %}
  53. {%- set py_type = 'Optional[bool]' %}
  54. {%- elif col_type_lower in ['date', 'datetime', 'timestamp'] %}
  55. {%- set py_type = 'Optional[datetime]' %}
  56. {%- endif %}
  57. {%- set metadata = [] %}
  58. {%- if col_type_lower in ['integer', 'int', 'long', 'short'] %}
  59. {%- set _ = metadata.append('BeforeValidator(str_to_int)') %}
  60. {%- elif col_type_lower in ['date', 'datetime', 'timestamp'] %}
  61. {%- set _ = metadata.append('BeforeValidator(to_datetime())') %}
  62. {%- endif %}
  63. {%- set _ = metadata.append('Field(default=None, description="' ~ comment ~ '")') %}
  64. {%- if column.is_query == '1' %}
  65. {%- set _ = metadata.append('VoField(query=True)') %}
  66. {%- endif %}
  67. {%- set _ = metadata.append('ExcelField(name="' ~ excel_name ~ '")') %}
  68. # {{ display_comment }}
  69. {{ attr_name }}: Annotated[
  70. {{ py_type }},
  71. {{ metadata | join(',\n ') }}
  72. ]
  73. {%- endfor %}
  74. # 页码
  75. page_num: Optional[int] = Field(default=1, description="页码")
  76. # 每页数量
  77. page_size: Optional[int] = Field(default=10, description="每页数量")