entity.py.vm 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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 excel_field_params = ['name="' ~ excel_name ~ '"'] %}
  68. {%- if column.dict_type and column.dict_type != '' %}
  69. {%- set _ = excel_field_params.append('dict_type="' ~ column.dict_type ~ '"') %}
  70. {%- endif %}
  71. {%- set _ = metadata.append('ExcelField(' ~ excel_field_params | join(', ') ~ ')') %}
  72. # {{ display_comment }}
  73. {{ attr_name }}: Annotated[
  74. {{ py_type }},
  75. {{ metadata | join(',\n ') }}
  76. ]
  77. {%- endfor %}
  78. # 页码
  79. page_num: Optional[int] = Field(default=1, description="页码")
  80. # 每页数量
  81. page_size: Optional[int] = Field(default=10, description="每页数量")