controller.vm 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  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 ${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. #if ( $table.templateType != 2 && $table.deleteBatch)
  65. @DeleteMapping("/delete-batch")
  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}(@RequestParam("ids") @Size(max = 100, message = "最多允许100个") List<${primaryColumn.javaType}> ids) {
  72. ${classNameVar}Service.delete${simpleClassName}ByIds(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<${sceneEnum.prefixClass}${table.className}RespVO> get${simpleClassName}(@RequestParam("id") ${primaryColumn.javaType} id) {
  83. ${table.className}DO ${classNameVar} = ${classNameVar}Service.get${simpleClassName}(id);
  84. return success(BeanUtils.toBean(${classNameVar}, ${sceneEnum.prefixClass}${table.className}RespVO.class));
  85. }
  86. #if ( $table.templateType != 2 )
  87. @GetMapping("/page")
  88. @Operation(summary = "获得${table.classComment}分页")
  89. #if ($sceneEnum.scene == 1)
  90. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')")
  91. #end
  92. public CommonResult<PageResult<${sceneEnum.prefixClass}${table.className}RespVO>> get${simpleClassName}Page(@Valid ${sceneEnum.prefixClass}${table.className}PageReqVO pageReqVO) {
  93. PageResult<${table.className}DO> pageResult = ${classNameVar}Service.get${simpleClassName}Page(pageReqVO);
  94. return success(BeanUtils.toBean(pageResult, ${sceneEnum.prefixClass}${table.className}RespVO.class));
  95. }
  96. ## 特殊:树表专属逻辑(树不需要分页接口)
  97. #else
  98. @GetMapping("/list")
  99. @Operation(summary = "获得${table.classComment}列表")
  100. #if ($sceneEnum.scene == 1)
  101. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')")
  102. #end
  103. public CommonResult<List<${sceneEnum.prefixClass}${table.className}RespVO>> get${simpleClassName}List(@Valid ${sceneEnum.prefixClass}${table.className}ListReqVO listReqVO) {
  104. List<${table.className}DO> list = ${classNameVar}Service.get${simpleClassName}List(listReqVO);
  105. return success(BeanUtils.toBean(list, ${sceneEnum.prefixClass}${table.className}RespVO.class));
  106. }
  107. #end
  108. @GetMapping("/export-excel")
  109. @Operation(summary = "导出${table.classComment} Excel")
  110. #if ($sceneEnum.scene == 1)
  111. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:export')")
  112. #end
  113. @ApiAccessLog(operateType = EXPORT)
  114. #if ( $table.templateType != 2 )
  115. public void export${simpleClassName}Excel(@Valid ${sceneEnum.prefixClass}${table.className}PageReqVO pageReqVO,
  116. HttpServletResponse response) throws IOException {
  117. pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
  118. List<${table.className}DO> list = ${classNameVar}Service.get${simpleClassName}Page(pageReqVO).getList();
  119. // 导出 Excel
  120. ExcelUtils.write(response, "${table.classComment}.xls", "数据", ${sceneEnum.prefixClass}${table.className}RespVO.class,
  121. BeanUtils.toBean(list, ${sceneEnum.prefixClass}${table.className}RespVO.class));
  122. }
  123. ## 特殊:树表专属逻辑(树不需要分页接口)
  124. #else
  125. public void export${simpleClassName}Excel(@Valid ${sceneEnum.prefixClass}${table.className}ListReqVO listReqVO,
  126. HttpServletResponse response) throws IOException {
  127. List<${table.className}DO> list = ${classNameVar}Service.get${simpleClassName}List(listReqVO);
  128. // 导出 Excel
  129. ExcelUtils.write(response, "${table.classComment}.xls", "数据", ${table.className}RespVO.class,
  130. BeanUtils.toBean(list, ${table.className}RespVO.class));
  131. }
  132. #end
  133. ## 特殊:主子表专属逻辑
  134. #foreach ($subTable in $subTables)
  135. #set ($index = $foreach.count - 1)
  136. #set ($subSimpleClassName = $subSimpleClassNames.get($index))
  137. #set ($subPrimaryColumn = $subPrimaryColumns.get($index))##当前 primary 字段
  138. #set ($subJoinColumn = $subJoinColumns.get($index))##当前 join 字段
  139. #set ($SubJoinColumnName = $subJoinColumn.javaField.substring(0,1).toUpperCase() + ${subJoinColumn.javaField.substring(1)})##首字母大写
  140. #set ($subSimpleClassName_strikeCase = $subSimpleClassName_strikeCases.get($index))
  141. #set ($subJoinColumn_strikeCase = $subJoinColumn_strikeCases.get($index))
  142. #set ($subClassNameVar = $subClassNameVars.get($index))
  143. // ==================== 子表($subTable.classComment) ====================
  144. ## 情况一:MASTER_ERP 时,需要分查询页子表
  145. #if ( $table.templateType == 11 )
  146. @GetMapping("/${subSimpleClassName_strikeCase}/page")
  147. @Operation(summary = "获得${subTable.classComment}分页")
  148. @Parameter(name = "${subJoinColumn.javaField}", description = "${subJoinColumn.columnComment}")
  149. #if ($sceneEnum.scene == 1)
  150. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')")
  151. #end
  152. public CommonResult<PageResult<${subTable.className}DO>> get${subSimpleClassName}Page(PageParam pageReqVO,
  153. @RequestParam("${subJoinColumn.javaField}") ${subJoinColumn.javaType} ${subJoinColumn.javaField}) {
  154. return success(${classNameVar}Service.get${subSimpleClassName}Page(pageReqVO, ${subJoinColumn.javaField}));
  155. }
  156. ## 情况二:非 MASTER_ERP 时,需要列表查询子表
  157. #else
  158. #if ( $subTable.subJoinMany )
  159. @GetMapping("/${subSimpleClassName_strikeCase}/list-by-${subJoinColumn_strikeCase}")
  160. @Operation(summary = "获得${subTable.classComment}列表")
  161. @Parameter(name = "${subJoinColumn.javaField}", description = "${subJoinColumn.columnComment}")
  162. #if ($sceneEnum.scene == 1)
  163. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')")
  164. #end
  165. public CommonResult<List<${subTable.className}DO>> get${subSimpleClassName}ListBy${SubJoinColumnName}(@RequestParam("${subJoinColumn.javaField}") ${subJoinColumn.javaType} ${subJoinColumn.javaField}) {
  166. return success(${classNameVar}Service.get${subSimpleClassName}ListBy${SubJoinColumnName}(${subJoinColumn.javaField}));
  167. }
  168. #else
  169. @GetMapping("/${subSimpleClassName_strikeCase}/get-by-${subJoinColumn_strikeCase}")
  170. @Operation(summary = "获得${subTable.classComment}")
  171. @Parameter(name = "${subJoinColumn.javaField}", description = "${subJoinColumn.columnComment}")
  172. #if ($sceneEnum.scene == 1)
  173. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')")
  174. #end
  175. public CommonResult<${subTable.className}DO> get${subSimpleClassName}By${SubJoinColumnName}(@RequestParam("${subJoinColumn.javaField}") ${subJoinColumn.javaType} ${subJoinColumn.javaField}) {
  176. return success(${classNameVar}Service.get${subSimpleClassName}By${SubJoinColumnName}(${subJoinColumn.javaField}));
  177. }
  178. #end
  179. #end
  180. ## 特殊:MASTER_ERP 时,支持单个的新增、修改、删除操作
  181. #if ( $table.templateType == 11 )
  182. @PostMapping("/${subSimpleClassName_strikeCase}/create")
  183. @Operation(summary = "创建${subTable.classComment}")
  184. #if ($sceneEnum.scene == 1)
  185. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:create')")
  186. #end
  187. public CommonResult<${subPrimaryColumn.javaType}> create${subSimpleClassName}(@Valid @RequestBody ${subTable.className}DO ${subClassNameVar}) {
  188. return success(${classNameVar}Service.create${subSimpleClassName}(${subClassNameVar}));
  189. }
  190. @PutMapping("/${subSimpleClassName_strikeCase}/update")
  191. @Operation(summary = "更新${subTable.classComment}")
  192. #if ($sceneEnum.scene == 1)
  193. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:update')")
  194. #end
  195. public CommonResult<Boolean> update${subSimpleClassName}(@Valid @RequestBody ${subTable.className}DO ${subClassNameVar}) {
  196. ${classNameVar}Service.update${subSimpleClassName}(${subClassNameVar});
  197. return success(true);
  198. }
  199. @DeleteMapping("/${subSimpleClassName_strikeCase}/delete")
  200. @Parameter(name = "id", description = "编号", required = true)
  201. @Operation(summary = "删除${subTable.classComment}")
  202. #if ($sceneEnum.scene == 1)
  203. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:delete')")
  204. #end
  205. public CommonResult<Boolean> delete${subSimpleClassName}(@RequestParam("id") ${subPrimaryColumn.javaType} id) {
  206. ${classNameVar}Service.delete${subSimpleClassName}(id);
  207. return success(true);
  208. }
  209. @GetMapping("/${subSimpleClassName_strikeCase}/get")
  210. @Operation(summary = "获得${subTable.classComment}")
  211. @Parameter(name = "id", description = "编号", required = true)
  212. #if ($sceneEnum.scene == 1)
  213. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')")
  214. #end
  215. public CommonResult<${subTable.className}DO> get${subSimpleClassName}(@RequestParam("id") ${subPrimaryColumn.javaType} id) {
  216. return success(${classNameVar}Service.get${subSimpleClassName}(id));
  217. }
  218. #end
  219. #end
  220. }