do.vm 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. package ${basePackage}.module.${table.moduleName}.dal.dataobject.${table.businessName};
  2. import lombok.*;
  3. import java.util.*;
  4. #foreach ($column in $columns)
  5. #if (${column.javaType} == "BigDecimal")
  6. import java.math.BigDecimal;
  7. #end
  8. #if (${column.javaType} == "LocalDateTime")
  9. import java.time.LocalDateTime;
  10. #end
  11. #end
  12. import com.baomidou.mybatisplus.annotation.*;
  13. import ${BaseDOClassName};
  14. ## 处理 Excel 导出 + Schema 注解(仅 DO 模式)
  15. #if ($voType == 20)
  16. import io.swagger.v3.oas.annotations.media.Schema;
  17. import cn.idev.excel.annotation.*;
  18. #foreach ($column in $columns)
  19. #if ("$!column.dictType" != "")## 有设置数据字典
  20. import ${DictFormatClassName};
  21. import ${DictConvertClassName};
  22. #break
  23. #end
  24. #end
  25. #end
  26. /**
  27. * ${table.classComment} DO
  28. *
  29. * @author ${table.author}
  30. */
  31. @TableName("${table.tableName.toLowerCase()}")
  32. @KeySequence("${table.tableName.toLowerCase()}_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
  33. @Data
  34. @EqualsAndHashCode(callSuper = true)
  35. @ToString(callSuper = true)
  36. @Builder
  37. @NoArgsConstructor
  38. @AllArgsConstructor
  39. ## 处理 Excel 导出 + Schema 注解(仅 DO 模式)
  40. #if ($voType == 20)
  41. @Schema(description = "${sceneEnum.name} - ${table.classComment} Response VO")
  42. @ExcelIgnoreUnannotated
  43. #end
  44. public class ${table.className}DO extends BaseDO {
  45. ## 特殊:树表专属逻辑
  46. #if ( $table.templateType == 2 )
  47. public static final Long ${treeParentColumn_javaField_underlineCase.toUpperCase()}_ROOT = 0L;
  48. #end
  49. #foreach ($column in $columns)
  50. #if (!${baseDOFields.contains(${column.javaField})})##排除 BaseDO 的字段
  51. /**
  52. * ${column.columnComment}
  53. #if ("$!column.dictType" != "")##处理枚举值
  54. *
  55. * 枚举 {@link TODO ${column.dictType} 对应的类}
  56. #end
  57. */
  58. #if (${column.primaryKey})##处理主键
  59. @TableId#if (${column.javaType} == 'String')(type = IdType.INPUT)#end
  60. #end
  61. #if ($voType == 20)
  62. ## 1. 处理 Swagger 注解
  63. @Schema(description = "${column.columnComment}"#if (!${column.nullable}), requiredMode = Schema.RequiredMode.REQUIRED#end#if ("$!column.example" != ""), example = "${column.example}"#end)
  64. ## 2. 处理 Excel 导出
  65. #if ("$!column.dictType" != "")##处理枚举值
  66. @ExcelProperty(value = "${column.columnComment}", converter = DictConvert.class)
  67. @DictFormat("${column.dictType}") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
  68. #else
  69. @ExcelProperty("${column.columnComment}")
  70. #end
  71. #end
  72. ## 3. 处理字段定义
  73. private ${column.javaType} ${column.javaField};
  74. #end
  75. #end
  76. ## 特殊:主子表专属逻辑(非 ERP 模式)
  77. #if ( $voType == 20 && $subTables && $subTables.size() > 0 && $table.templateType != 11 )
  78. #foreach ($subTable in $subTables)
  79. #set ($index = $foreach.count - 1)
  80. #if ( $subTable.subJoinMany)
  81. /**
  82. * ${subTable.classComment}列表
  83. */
  84. @Schema(description = "${subTable.classComment}列表")
  85. @TableField(exist = false)
  86. private List<${subTable.className}DO> ${subClassNameVars.get($index)}s;
  87. #else
  88. /**
  89. * ${subTable.classComment}
  90. */
  91. @Schema(description = "${subTable.classComment}")
  92. @TableField(exist = false)
  93. private ${subTable.className}DO ${subClassNameVars.get($index)};
  94. #end
  95. #end
  96. #end
  97. }