controller.vm 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271
  1. package ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName};
  2. import org.springframework.web.bind.annotation.*;
  3. import ${jakartaPackage}.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 ${jakartaPackage}.validation.constraints.*;
  10. import ${jakartaPackage}.validation.*;
  11. import ${jakartaPackage}.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 ${ApiAccessLogClassName};
  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 ${saveReqVOClass} ${saveReqVOVar}) {
  43. return success(${classNameVar}Service.create${simpleClassName}(${saveReqVOVar}));
  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 ${updateReqVOClass} ${updateReqVOVar}) {
  51. ${classNameVar}Service.update${simpleClassName}(${updateReqVOVar});
  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. #if ( $table.templateType != 2 && $deleteBatchEnable)
  65. @DeleteMapping("/delete-list")
  66. @Parameter(name = "ids", description = "编号", required = true)
  67. @Operation(summary = "批量删除${table.classComment}")
  68. #if ($sceneEnum.scene == 1)
  69. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:delete')")
  70. #end
  71. public CommonResult<Boolean> delete${simpleClassName}List(@RequestParam("ids") List<${primaryColumn.javaType}> ids) {
  72. ${classNameVar}Service.delete${simpleClassName}ListByIds(ids);
  73. return success(true);
  74. }
  75. #end
  76. @GetMapping("/get")
  77. @Operation(summary = "获得${table.classComment}")
  78. @Parameter(name = "id", description = "编号", required = true, example = "1024")
  79. #if ($sceneEnum.scene == 1)
  80. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')")
  81. #end
  82. public CommonResult<${respVOClass}> get${simpleClassName}(@RequestParam("id") ${primaryColumn.javaType} id) {
  83. ${table.className}DO ${classNameVar} = ${classNameVar}Service.get${simpleClassName}(id);
  84. #if ($voType == 10)
  85. return success(BeanUtils.toBean(${classNameVar}, ${respVOClass}.class));
  86. #else
  87. return success(${classNameVar});
  88. #end
  89. }
  90. #if ( $table.templateType != 2 )
  91. @GetMapping("/page")
  92. @Operation(summary = "获得${table.classComment}分页")
  93. #if ($sceneEnum.scene == 1)
  94. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')")
  95. #end
  96. public CommonResult<PageResult<${respVOClass}>> get${simpleClassName}Page(@Valid ${sceneEnum.prefixClass}${table.className}PageReqVO pageReqVO) {
  97. PageResult<${table.className}DO> pageResult = ${classNameVar}Service.get${simpleClassName}Page(pageReqVO);
  98. #if ($voType == 10)
  99. return success(BeanUtils.toBean(pageResult, ${respVOClass}.class));
  100. #else
  101. return success(pageResult);
  102. #end
  103. }
  104. ## 特殊:树表专属逻辑(树不需要分页接口)
  105. #else
  106. @GetMapping("/list")
  107. @Operation(summary = "获得${table.classComment}列表")
  108. #if ($sceneEnum.scene == 1)
  109. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')")
  110. #end
  111. public CommonResult<List<${respVOClass}>> get${simpleClassName}List(@Valid ${sceneEnum.prefixClass}${table.className}ListReqVO listReqVO) {
  112. List<${table.className}DO> list = ${classNameVar}Service.get${simpleClassName}List(listReqVO);
  113. #if ($voType == 10)
  114. return success(BeanUtils.toBean(list, ${respVOClass}.class));
  115. #else
  116. return success(list);
  117. #end
  118. }
  119. #end
  120. @GetMapping("/export-excel")
  121. @Operation(summary = "导出${table.classComment} Excel")
  122. #if ($sceneEnum.scene == 1)
  123. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:export')")
  124. #end
  125. @ApiAccessLog(operateType = EXPORT)
  126. #if ( $table.templateType != 2 )
  127. public void export${simpleClassName}Excel(@Valid ${sceneEnum.prefixClass}${table.className}PageReqVO pageReqVO,
  128. HttpServletResponse response) throws IOException {
  129. pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
  130. List<${table.className}DO> list = ${classNameVar}Service.get${simpleClassName}Page(pageReqVO).getList();
  131. // 导出 Excel
  132. ExcelUtils.write(response, "${table.classComment}.xls", "数据", ${respVOClass}.class,
  133. BeanUtils.toBean(list, ${respVOClass}.class));
  134. }
  135. ## 特殊:树表专属逻辑(树不需要分页接口)
  136. #else
  137. public void export${simpleClassName}Excel(@Valid ${sceneEnum.prefixClass}${table.className}ListReqVO listReqVO,
  138. HttpServletResponse response) throws IOException {
  139. List<${table.className}DO> list = ${classNameVar}Service.get${simpleClassName}List(listReqVO);
  140. // 导出 Excel
  141. ExcelUtils.write(response, "${table.classComment}.xls", "数据", ${table.className}RespVO.class,
  142. BeanUtils.toBean(list, ${table.className}RespVO.class));
  143. }
  144. #end
  145. ## 特殊:主子表专属逻辑
  146. #foreach ($subTable in $subTables)
  147. #set ($index = $foreach.count - 1)
  148. #set ($subSimpleClassName = $subSimpleClassNames.get($index))
  149. #set ($subPrimaryColumn = $subPrimaryColumns.get($index))##当前 primary 字段
  150. #set ($subJoinColumn = $subJoinColumns.get($index))##当前 join 字段
  151. #set ($SubJoinColumnName = $subJoinColumn.javaField.substring(0,1).toUpperCase() + ${subJoinColumn.javaField.substring(1)})##首字母大写
  152. #set ($subSimpleClassName_strikeCase = $subSimpleClassName_strikeCases.get($index))
  153. #set ($subJoinColumn_strikeCase = $subJoinColumn_strikeCases.get($index))
  154. #set ($subClassNameVar = $subClassNameVars.get($index))
  155. // ==================== 子表($subTable.classComment) ====================
  156. ## 情况一:MASTER_ERP 时,需要分查询页子表
  157. #if ( $table.templateType == 11 )
  158. @GetMapping("/${subSimpleClassName_strikeCase}/page")
  159. @Operation(summary = "获得${subTable.classComment}分页")
  160. @Parameter(name = "${subJoinColumn.javaField}", description = "${subJoinColumn.columnComment}")
  161. #if ($sceneEnum.scene == 1)
  162. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')")
  163. #end
  164. public CommonResult<PageResult<${subTable.className}DO>> get${subSimpleClassName}Page(PageParam pageReqVO,
  165. @RequestParam("${subJoinColumn.javaField}") ${subJoinColumn.javaType} ${subJoinColumn.javaField}) {
  166. return success(${classNameVar}Service.get${subSimpleClassName}Page(pageReqVO, ${subJoinColumn.javaField}));
  167. }
  168. ## 情况二:非 MASTER_ERP 时,需要列表查询子表
  169. #else
  170. #if ( $subTable.subJoinMany )
  171. @GetMapping("/${subSimpleClassName_strikeCase}/list-by-${subJoinColumn_strikeCase}")
  172. @Operation(summary = "获得${subTable.classComment}列表")
  173. @Parameter(name = "${subJoinColumn.javaField}", description = "${subJoinColumn.columnComment}")
  174. #if ($sceneEnum.scene == 1)
  175. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')")
  176. #end
  177. public CommonResult<List<${subTable.className}DO>> get${subSimpleClassName}ListBy${SubJoinColumnName}(@RequestParam("${subJoinColumn.javaField}") ${subJoinColumn.javaType} ${subJoinColumn.javaField}) {
  178. return success(${classNameVar}Service.get${subSimpleClassName}ListBy${SubJoinColumnName}(${subJoinColumn.javaField}));
  179. }
  180. #else
  181. @GetMapping("/${subSimpleClassName_strikeCase}/get-by-${subJoinColumn_strikeCase}")
  182. @Operation(summary = "获得${subTable.classComment}")
  183. @Parameter(name = "${subJoinColumn.javaField}", description = "${subJoinColumn.columnComment}")
  184. #if ($sceneEnum.scene == 1)
  185. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')")
  186. #end
  187. public CommonResult<${subTable.className}DO> get${subSimpleClassName}By${SubJoinColumnName}(@RequestParam("${subJoinColumn.javaField}") ${subJoinColumn.javaType} ${subJoinColumn.javaField}) {
  188. return success(${classNameVar}Service.get${subSimpleClassName}By${SubJoinColumnName}(${subJoinColumn.javaField}));
  189. }
  190. #end
  191. #end
  192. ## 特殊:MASTER_ERP 时,支持单个的新增、修改、删除操作
  193. #if ( $table.templateType == 11 )
  194. @PostMapping("/${subSimpleClassName_strikeCase}/create")
  195. @Operation(summary = "创建${subTable.classComment}")
  196. #if ($sceneEnum.scene == 1)
  197. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:create')")
  198. #end
  199. public CommonResult<${subPrimaryColumn.javaType}> create${subSimpleClassName}(@Valid @RequestBody ${subTable.className}DO ${subClassNameVar}) {
  200. return success(${classNameVar}Service.create${subSimpleClassName}(${subClassNameVar}));
  201. }
  202. @PutMapping("/${subSimpleClassName_strikeCase}/update")
  203. @Operation(summary = "更新${subTable.classComment}")
  204. #if ($sceneEnum.scene == 1)
  205. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:update')")
  206. #end
  207. public CommonResult<Boolean> update${subSimpleClassName}(@Valid @RequestBody ${subTable.className}DO ${subClassNameVar}) {
  208. ${classNameVar}Service.update${subSimpleClassName}(${subClassNameVar});
  209. return success(true);
  210. }
  211. @DeleteMapping("/${subSimpleClassName_strikeCase}/delete")
  212. @Parameter(name = "id", description = "编号", required = true)
  213. @Operation(summary = "删除${subTable.classComment}")
  214. #if ($sceneEnum.scene == 1)
  215. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:delete')")
  216. #end
  217. public CommonResult<Boolean> delete${subSimpleClassName}(@RequestParam("id") ${subPrimaryColumn.javaType} id) {
  218. ${classNameVar}Service.delete${subSimpleClassName}(id);
  219. return success(true);
  220. }
  221. #if ($deleteBatchEnable)
  222. @DeleteMapping("/${subSimpleClassName_strikeCase}/delete-list")
  223. @Parameter(name = "ids", description = "编号", required = true)
  224. @Operation(summary = "批量删除${subTable.classComment}")
  225. #if ($sceneEnum.scene == 1)
  226. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:delete')")
  227. #end
  228. public CommonResult<Boolean> delete${subSimpleClassName}List(@RequestParam("ids") List<${subPrimaryColumn.javaType}> ids) {
  229. ${classNameVar}Service.delete${subSimpleClassName}ListByIds(ids);
  230. return success(true);
  231. }
  232. #end
  233. @GetMapping("/${subSimpleClassName_strikeCase}/get")
  234. @Operation(summary = "获得${subTable.classComment}")
  235. @Parameter(name = "id", description = "编号", required = true)
  236. #if ($sceneEnum.scene == 1)
  237. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')")
  238. #end
  239. public CommonResult<${subTable.className}DO> get${subSimpleClassName}(@RequestParam("id") ${subPrimaryColumn.javaType} id) {
  240. return success(${classNameVar}Service.get${subSimpleClassName}(id));
  241. }
  242. #end
  243. #end
  244. }