controller.vm 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. package ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName};
  2. import org.springframework.web.bind.annotation.*;
  3. import javax.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 javax.validation.constraints.*;
  10. import javax.validation.*;
  11. import javax.servlet.http.*;
  12. import java.util.*;
  13. import java.io.IOException;
  14. import ${PageParamClassName};
  15. import ${PageResultClassName};
  16. import ${CommonResultClassName};
  17. import static ${CommonResultClassName}.success;
  18. import ${ExcelUtilsClassName};
  19. import ${OperateLogClassName};
  20. import static ${OperateTypeEnumClassName}.*;
  21. import ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}.vo.*;
  22. import ${basePackage}.module.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO;
  23. ## 特殊:主子表专属逻辑
  24. #foreach ($subTable in $subTables)
  25. import ${basePackage}.module.${subTable.moduleName}.dal.dataobject.${subTable.businessName}.${subTable.className}DO;
  26. #end
  27. import ${basePackage}.module.${table.moduleName}.convert.${table.businessName}.${table.className}Convert;
  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}CreateReqVO 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}UpdateReqVO 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(${table.className}Convert.INSTANCE.convert(${classNameVar}));
  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(${table.className}Convert.INSTANCE.convertPage(pageResult));
  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(${table.className}Convert.INSTANCE.convertList(list));
  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. public void export${simpleClassName}Excel(@Valid ${sceneEnum.prefixClass}${table.className}ListReqVO listReqVO,
  103. HttpServletResponse response) throws IOException {
  104. List<${table.className}DO> list = ${classNameVar}Service.get${simpleClassName}List(listReqVO);
  105. // 导出 Excel
  106. List<${sceneEnum.prefixClass}${table.className}ExcelVO> dataList = ${table.className}Convert.INSTANCE.convertList02(list);
  107. ExcelUtils.write(response, "${table.classComment}.xls", "数据", ${sceneEnum.prefixClass}${table.className}ExcelVO.class, dataList);
  108. }
  109. ## 特殊:主子表专属逻辑
  110. #foreach ($subTable in $subTables)
  111. #set ($index = $foreach.count - 1)
  112. #set ($subSimpleClassName = $subSimpleClassNames.get($index))
  113. #set ($subPrimaryColumn = $subPrimaryColumns.get($index))##当前 primary 字段
  114. #set ($subJoinColumn = $subJoinColumns.get($index))##当前 join 字段
  115. #set ($SubJoinColumnName = $subJoinColumn.javaField.substring(0,1).toUpperCase() + ${subJoinColumn.javaField.substring(1)})##首字母大写
  116. #set ($subSimpleClassName_strikeCase = $subSimpleClassName_strikeCases.get($index))
  117. #set ($subJoinColumn_strikeCase = $subJoinColumn_strikeCases.get($index))
  118. #set ($subClassNameVar = $subClassNameVars.get($index))
  119. // ==================== 子表($subTable.classComment) ====================
  120. ## 情况一:MASTER_ERP 时,需要分查询页子表
  121. #if ( $table.templateType == 11 )
  122. @GetMapping("/${subSimpleClassName_strikeCase}/page")
  123. @Operation(summary = "获得${subTable.classComment}分页")
  124. @Parameter(name = "${subJoinColumn.javaField}", description = "${subJoinColumn.columnComment}")
  125. #if ($sceneEnum.scene == 1)
  126. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')")
  127. #end
  128. public CommonResult<PageResult<${subTable.className}DO>> get${subSimpleClassName}Page(PageParam pageReqVO,
  129. @RequestParam("${subJoinColumn.javaField}") ${subJoinColumn.javaType} ${subJoinColumn.javaField}) {
  130. return success(${classNameVar}Service.get${subSimpleClassName}Page(pageReqVO, ${subJoinColumn.javaField}));
  131. }
  132. ## 情况二:非 MASTER_ERP 时,需要列表查询子表
  133. #else
  134. #if ( $subTable.subJoinMany )
  135. @GetMapping("/${subSimpleClassName_strikeCase}/list-by-${subJoinColumn_strikeCase}")
  136. @Operation(summary = "获得${subTable.classComment}列表")
  137. @Parameter(name = "${subJoinColumn.javaField}", description = "${subJoinColumn.columnComment}")
  138. #if ($sceneEnum.scene == 1)
  139. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')")
  140. #end
  141. public CommonResult<List<${subTable.className}DO>> get${subSimpleClassName}ListBy${SubJoinColumnName}(@RequestParam("${subJoinColumn.javaField}") ${subJoinColumn.javaType} ${subJoinColumn.javaField}) {
  142. return success(${classNameVar}Service.get${subSimpleClassName}ListBy${SubJoinColumnName}(${subJoinColumn.javaField}));
  143. }
  144. #else
  145. @GetMapping("/${subSimpleClassName_strikeCase}/get-by-${subJoinColumn_strikeCase}")
  146. @Operation(summary = "获得${subTable.classComment}")
  147. @Parameter(name = "${subJoinColumn.javaField}", description = "${subJoinColumn.columnComment}")
  148. #if ($sceneEnum.scene == 1)
  149. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')")
  150. #end
  151. public CommonResult<${subTable.className}DO> get${subSimpleClassName}By${SubJoinColumnName}(@RequestParam("${subJoinColumn.javaField}") ${subJoinColumn.javaType} ${subJoinColumn.javaField}) {
  152. return success(${classNameVar}Service.get${subSimpleClassName}By${SubJoinColumnName}(${subJoinColumn.javaField}));
  153. }
  154. #end
  155. #end
  156. ## 特殊:MASTER_ERP 时,支持单个的新增、修改、删除操作
  157. #if ( $table.templateType == 11 )
  158. @PostMapping("/${subSimpleClassName_strikeCase}/create")
  159. @Operation(summary = "创建${subTable.classComment}")
  160. #if ($sceneEnum.scene == 1)
  161. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:create')")
  162. #end
  163. public CommonResult<${subPrimaryColumn.javaType}> create${subSimpleClassName}(@Valid @RequestBody ${subTable.className}DO ${subClassNameVar}) {
  164. return success(${classNameVar}Service.create${subSimpleClassName}(${subClassNameVar}));
  165. }
  166. @PutMapping("/${subSimpleClassName_strikeCase}/update")
  167. @Operation(summary = "更新${subTable.classComment}")
  168. #if ($sceneEnum.scene == 1)
  169. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:update')")
  170. #end
  171. public CommonResult<Boolean> update${subSimpleClassName}(@Valid @RequestBody ${subTable.className}DO ${subClassNameVar}) {
  172. ${classNameVar}Service.update${subSimpleClassName}(${subClassNameVar});
  173. return success(true);
  174. }
  175. @DeleteMapping("/${subSimpleClassName_strikeCase}/delete")
  176. @Parameter(name = "id", description = "编号", required = true)
  177. @Operation(summary = "删除${subTable.classComment}")
  178. #if ($sceneEnum.scene == 1)
  179. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:delete')")
  180. #end
  181. public CommonResult<Boolean> delete${subSimpleClassName}(@RequestParam("id") ${subPrimaryColumn.javaType} id) {
  182. ${classNameVar}Service.delete${subSimpleClassName}(id);
  183. return success(true);
  184. }
  185. @GetMapping("/${subSimpleClassName_strikeCase}/get")
  186. @Operation(summary = "获得${subTable.classComment}")
  187. @Parameter(name = "id", description = "编号", required = true)
  188. #if ($sceneEnum.scene == 1)
  189. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')")
  190. #end
  191. public CommonResult<${subTable.className}DO> get${subSimpleClassName}(@RequestParam("id") ${subPrimaryColumn.javaType} id) {
  192. return success(${classNameVar}Service.get${subSimpleClassName}(id));
  193. }
  194. #end
  195. #end
  196. }