controller.vm 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233
  1. package ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName};
  2. import org.springframework.web.bind.annotation.*;
  3. import jakarta.annotation.Resource;
  4. import org.springframework.validation.annotation.Validated;
  5. #if ($sceneEnum.scene == 1)import org.springframework.security.access.prepost.PreAuthorize;#end
  6. import io.swagger.v3.oas.annotations.tags.Tag;
  7. import io.swagger.v3.oas.annotations.Parameter;
  8. import io.swagger.v3.oas.annotations.Operation;
  9. import jakarta.validation.constraints.*;
  10. import jakarta.validation.*;
  11. import jakarta.servlet.http.*;
  12. import java.util.*;
  13. import java.io.IOException;
  14. import ${PageParamClassName};
  15. import ${PageResultClassName};
  16. import ${CommonResultClassName};
  17. import ${BeanUtils};
  18. import static ${CommonResultClassName}.success;
  19. import ${ExcelUtilsClassName};
  20. import ${OperateLogClassName};
  21. import static ${OperateTypeEnumClassName}.*;
  22. import ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}.vo.*;
  23. import ${basePackage}.module.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO;
  24. ## 特殊:主子表专属逻辑
  25. #foreach ($subTable in $subTables)
  26. import ${basePackage}.module.${subTable.moduleName}.dal.dataobject.${subTable.businessName}.${subTable.className}DO;
  27. #end
  28. import ${basePackage}.module.${table.moduleName}.service.${table.businessName}.${table.className}Service;
  29. @Tag(name = "${sceneEnum.name} - ${table.classComment}")
  30. @RestController
  31. ##二级的 businessName 暂时不算在 HTTP 路径上,可以根据需要写
  32. @RequestMapping("/${table.moduleName}/${simpleClassName_strikeCase}")
  33. @Validated
  34. public class ${sceneEnum.prefixClass}${table.className}Controller {
  35. @Resource
  36. private ${table.className}Service ${classNameVar}Service;
  37. @PostMapping("/create")
  38. @Operation(summary = "创建${table.classComment}")
  39. #if ($sceneEnum.scene == 1)
  40. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:create')")
  41. #end
  42. public CommonResult<${primaryColumn.javaType}> create${simpleClassName}(@Valid @RequestBody ${sceneEnum.prefixClass}${table.className}SaveReqVO createReqVO) {
  43. return success(${classNameVar}Service.create${simpleClassName}(createReqVO));
  44. }
  45. @PutMapping("/update")
  46. @Operation(summary = "更新${table.classComment}")
  47. #if ($sceneEnum.scene == 1)
  48. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:update')")
  49. #end
  50. public CommonResult<Boolean> update${simpleClassName}(@Valid @RequestBody ${sceneEnum.prefixClass}${table.className}SaveReqVO updateReqVO) {
  51. ${classNameVar}Service.update${simpleClassName}(updateReqVO);
  52. return success(true);
  53. }
  54. @DeleteMapping("/delete")
  55. @Operation(summary = "删除${table.classComment}")
  56. @Parameter(name = "id", description = "编号", required = true)
  57. #if ($sceneEnum.scene == 1)
  58. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:delete')")
  59. #end
  60. public CommonResult<Boolean> delete${simpleClassName}(@RequestParam("id") ${primaryColumn.javaType} id) {
  61. ${classNameVar}Service.delete${simpleClassName}(id);
  62. return success(true);
  63. }
  64. @GetMapping("/get")
  65. @Operation(summary = "获得${table.classComment}")
  66. @Parameter(name = "id", description = "编号", required = true, example = "1024")
  67. #if ($sceneEnum.scene == 1)
  68. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')")
  69. #end
  70. public CommonResult<${sceneEnum.prefixClass}${table.className}RespVO> get${simpleClassName}(@RequestParam("id") ${primaryColumn.javaType} id) {
  71. ${table.className}DO ${classNameVar} = ${classNameVar}Service.get${simpleClassName}(id);
  72. return success(BeanUtils.toBean(${classNameVar}, ${sceneEnum.prefixClass}${table.className}RespVO.class));
  73. }
  74. #if ( $table.templateType != 2 )
  75. @GetMapping("/page")
  76. @Operation(summary = "获得${table.classComment}分页")
  77. #if ($sceneEnum.scene == 1)
  78. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')")
  79. #end
  80. public CommonResult<PageResult<${sceneEnum.prefixClass}${table.className}RespVO>> get${simpleClassName}Page(@Valid ${sceneEnum.prefixClass}${table.className}PageReqVO pageReqVO) {
  81. PageResult<${table.className}DO> pageResult = ${classNameVar}Service.get${simpleClassName}Page(pageReqVO);
  82. return success(BeanUtils.toBean(pageResult, ${sceneEnum.prefixClass}${table.className}RespVO.class));
  83. }
  84. ## 特殊:树表专属逻辑(树不需要分页接口)
  85. #else
  86. @GetMapping("/list")
  87. @Operation(summary = "获得${table.classComment}列表")
  88. #if ($sceneEnum.scene == 1)
  89. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')")
  90. #end
  91. public CommonResult<List<${sceneEnum.prefixClass}${table.className}RespVO>> get${simpleClassName}List(@Valid ${sceneEnum.prefixClass}${table.className}ListReqVO listReqVO) {
  92. List<${table.className}DO> list = ${classNameVar}Service.get${simpleClassName}List(listReqVO);
  93. return success(BeanUtils.toBean(list, ${sceneEnum.prefixClass}${table.className}RespVO.class));
  94. }
  95. #end
  96. @GetMapping("/export-excel")
  97. @Operation(summary = "导出${table.classComment} Excel")
  98. #if ($sceneEnum.scene == 1)
  99. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:export')")
  100. #end
  101. @OperateLog(type = EXPORT)
  102. #if ( $table.templateType != 2 )
  103. public void export${simpleClassName}Excel(@Valid ${sceneEnum.prefixClass}${table.className}PageReqVO pageReqVO,
  104. HttpServletResponse response) throws IOException {
  105. pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
  106. List<${table.className}DO> list = ${classNameVar}Service.get${simpleClassName}Page(pageReqVO).getList();
  107. // 导出 Excel
  108. ExcelUtils.write(response, "${table.classComment}.xls", "数据", ${table.className}RespVO.class,
  109. BeanUtils.toBean(list, ${table.className}RespVO.class));
  110. }
  111. ## 特殊:树表专属逻辑(树不需要分页接口)
  112. #else
  113. public void export${simpleClassName}Excel(@Valid ${sceneEnum.prefixClass}${table.className}ListReqVO listReqVO,
  114. HttpServletResponse response) throws IOException {
  115. List<${table.className}DO> list = ${classNameVar}Service.get${simpleClassName}List(listReqVO);
  116. // 导出 Excel
  117. ExcelUtils.write(response, "${table.classComment}.xls", "数据", ${table.className}RespVO.class,
  118. BeanUtils.toBean(list, ${table.className}RespVO.class));
  119. }
  120. #end
  121. ## 特殊:主子表专属逻辑
  122. #foreach ($subTable in $subTables)
  123. #set ($index = $foreach.count - 1)
  124. #set ($subSimpleClassName = $subSimpleClassNames.get($index))
  125. #set ($subPrimaryColumn = $subPrimaryColumns.get($index))##当前 primary 字段
  126. #set ($subJoinColumn = $subJoinColumns.get($index))##当前 join 字段
  127. #set ($SubJoinColumnName = $subJoinColumn.javaField.substring(0,1).toUpperCase() + ${subJoinColumn.javaField.substring(1)})##首字母大写
  128. #set ($subSimpleClassName_strikeCase = $subSimpleClassName_strikeCases.get($index))
  129. #set ($subJoinColumn_strikeCase = $subJoinColumn_strikeCases.get($index))
  130. #set ($subClassNameVar = $subClassNameVars.get($index))
  131. // ==================== 子表($subTable.classComment) ====================
  132. ## 情况一:MASTER_ERP 时,需要分查询页子表
  133. #if ( $table.templateType == 11 )
  134. @GetMapping("/${subSimpleClassName_strikeCase}/page")
  135. @Operation(summary = "获得${subTable.classComment}分页")
  136. @Parameter(name = "${subJoinColumn.javaField}", description = "${subJoinColumn.columnComment}")
  137. #if ($sceneEnum.scene == 1)
  138. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')")
  139. #end
  140. public CommonResult<PageResult<${subTable.className}DO>> get${subSimpleClassName}Page(PageParam pageReqVO,
  141. @RequestParam("${subJoinColumn.javaField}") ${subJoinColumn.javaType} ${subJoinColumn.javaField}) {
  142. return success(${classNameVar}Service.get${subSimpleClassName}Page(pageReqVO, ${subJoinColumn.javaField}));
  143. }
  144. ## 情况二:非 MASTER_ERP 时,需要列表查询子表
  145. #else
  146. #if ( $subTable.subJoinMany )
  147. @GetMapping("/${subSimpleClassName_strikeCase}/list-by-${subJoinColumn_strikeCase}")
  148. @Operation(summary = "获得${subTable.classComment}列表")
  149. @Parameter(name = "${subJoinColumn.javaField}", description = "${subJoinColumn.columnComment}")
  150. #if ($sceneEnum.scene == 1)
  151. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')")
  152. #end
  153. public CommonResult<List<${subTable.className}DO>> get${subSimpleClassName}ListBy${SubJoinColumnName}(@RequestParam("${subJoinColumn.javaField}") ${subJoinColumn.javaType} ${subJoinColumn.javaField}) {
  154. return success(${classNameVar}Service.get${subSimpleClassName}ListBy${SubJoinColumnName}(${subJoinColumn.javaField}));
  155. }
  156. #else
  157. @GetMapping("/${subSimpleClassName_strikeCase}/get-by-${subJoinColumn_strikeCase}")
  158. @Operation(summary = "获得${subTable.classComment}")
  159. @Parameter(name = "${subJoinColumn.javaField}", description = "${subJoinColumn.columnComment}")
  160. #if ($sceneEnum.scene == 1)
  161. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')")
  162. #end
  163. public CommonResult<${subTable.className}DO> get${subSimpleClassName}By${SubJoinColumnName}(@RequestParam("${subJoinColumn.javaField}") ${subJoinColumn.javaType} ${subJoinColumn.javaField}) {
  164. return success(${classNameVar}Service.get${subSimpleClassName}By${SubJoinColumnName}(${subJoinColumn.javaField}));
  165. }
  166. #end
  167. #end
  168. ## 特殊:MASTER_ERP 时,支持单个的新增、修改、删除操作
  169. #if ( $table.templateType == 11 )
  170. @PostMapping("/${subSimpleClassName_strikeCase}/create")
  171. @Operation(summary = "创建${subTable.classComment}")
  172. #if ($sceneEnum.scene == 1)
  173. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:create')")
  174. #end
  175. public CommonResult<${subPrimaryColumn.javaType}> create${subSimpleClassName}(@Valid @RequestBody ${subTable.className}DO ${subClassNameVar}) {
  176. return success(${classNameVar}Service.create${subSimpleClassName}(${subClassNameVar}));
  177. }
  178. @PutMapping("/${subSimpleClassName_strikeCase}/update")
  179. @Operation(summary = "更新${subTable.classComment}")
  180. #if ($sceneEnum.scene == 1)
  181. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:update')")
  182. #end
  183. public CommonResult<Boolean> update${subSimpleClassName}(@Valid @RequestBody ${subTable.className}DO ${subClassNameVar}) {
  184. ${classNameVar}Service.update${subSimpleClassName}(${subClassNameVar});
  185. return success(true);
  186. }
  187. @DeleteMapping("/${subSimpleClassName_strikeCase}/delete")
  188. @Parameter(name = "id", description = "编号", required = true)
  189. @Operation(summary = "删除${subTable.classComment}")
  190. #if ($sceneEnum.scene == 1)
  191. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:delete')")
  192. #end
  193. public CommonResult<Boolean> delete${subSimpleClassName}(@RequestParam("id") ${subPrimaryColumn.javaType} id) {
  194. ${classNameVar}Service.delete${subSimpleClassName}(id);
  195. return success(true);
  196. }
  197. @GetMapping("/${subSimpleClassName_strikeCase}/get")
  198. @Operation(summary = "获得${subTable.classComment}")
  199. @Parameter(name = "id", description = "编号", required = true)
  200. #if ($sceneEnum.scene == 1)
  201. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')")
  202. #end
  203. public CommonResult<${subTable.className}DO> get${subSimpleClassName}(@RequestParam("id") ${subPrimaryColumn.javaType} id) {
  204. return success(${classNameVar}Service.get${subSimpleClassName}(id));
  205. }
  206. #end
  207. #end
  208. }