controller.vm 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  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. @GetMapping("/page")
  75. @Operation(summary = "获得${table.classComment}分页")
  76. #if ($sceneEnum.scene == 1)
  77. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')")
  78. #end
  79. public CommonResult<PageResult<${sceneEnum.prefixClass}${table.className}RespVO>> get${simpleClassName}Page(@Valid ${sceneEnum.prefixClass}${table.className}PageReqVO pageVO) {
  80. PageResult<${table.className}DO> pageResult = ${classNameVar}Service.get${simpleClassName}Page(pageVO);
  81. return success(${table.className}Convert.INSTANCE.convertPage(pageResult));
  82. }
  83. @GetMapping("/export-excel")
  84. @Operation(summary = "导出${table.classComment} Excel")
  85. #if ($sceneEnum.scene == 1)
  86. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:export')")
  87. #end
  88. @OperateLog(type = EXPORT)
  89. public void export${simpleClassName}Excel(@Valid ${sceneEnum.prefixClass}${table.className}ExportReqVO exportReqVO,
  90. HttpServletResponse response) throws IOException {
  91. List<${table.className}DO> list = ${classNameVar}Service.get${simpleClassName}List(exportReqVO);
  92. // 导出 Excel
  93. List<${sceneEnum.prefixClass}${table.className}ExcelVO> datas = ${table.className}Convert.INSTANCE.convertList02(list);
  94. ExcelUtils.write(response, "${table.classComment}.xls", "数据", ${sceneEnum.prefixClass}${table.className}ExcelVO.class, datas);
  95. }
  96. ## 特殊:主子表专属逻辑
  97. #foreach ($subTable in $subTables)
  98. #set ($index = $foreach.count - 1)
  99. #set ($subSimpleClassName = $subSimpleClassNames.get($index))
  100. #set ($subPrimaryColumn = $subPrimaryColumns.get($index))##当前 primary 字段
  101. #set ($subJoinColumn = $subJoinColumns.get($index))##当前 join 字段
  102. #set ($SubJoinColumnName = $subJoinColumn.javaField.substring(0,1).toUpperCase() + ${subJoinColumn.javaField.substring(1)})##首字母大写
  103. #set ($subSimpleClassName_strikeCase = $subSimpleClassName_strikeCases.get($index))
  104. #set ($subJoinColumn_strikeCase = $subJoinColumn_strikeCases.get($index))
  105. #set ($subClassNameVar = $subClassNameVars.get($index))
  106. // ==================== 子表($subTable.classComment) ====================
  107. ## 情况一:MASTER_ERP 时,需要分查询页子表
  108. #if ( $table.templateType == 11 )
  109. @GetMapping("/${subSimpleClassName_strikeCase}/page")
  110. @Operation(summary = "获得${subTable.classComment}分页")
  111. @Parameter(name = "${subJoinColumn.javaField}", description = "${subJoinColumn.columnComment}")
  112. #if ($sceneEnum.scene == 1)
  113. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')")
  114. #end
  115. public CommonResult<PageResult<${subTable.className}DO>> get${subSimpleClassName}Page(PageParam pageReqVO,
  116. @RequestParam("${subJoinColumn.javaField}") ${subJoinColumn.javaType} ${subJoinColumn.javaField}) {
  117. return success(${classNameVar}Service.get${subSimpleClassName}Page(pageReqVO, ${subJoinColumn.javaField}));
  118. }
  119. ## 情况二:非 MASTER_ERP 时,需要列表查询子表
  120. #else
  121. #if ( $subTable.subJoinMany )
  122. @GetMapping("/${subSimpleClassName_strikeCase}/list-by-${subJoinColumn_strikeCase}")
  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<List<${subTable.className}DO>> get${subSimpleClassName}ListBy${SubJoinColumnName}(@RequestParam("${subJoinColumn.javaField}") ${subJoinColumn.javaType} ${subJoinColumn.javaField}) {
  129. return success(${classNameVar}Service.get${subSimpleClassName}ListBy${SubJoinColumnName}(${subJoinColumn.javaField}));
  130. }
  131. #else
  132. @GetMapping("/${subSimpleClassName_strikeCase}/get-by-${subJoinColumn_strikeCase}")
  133. @Operation(summary = "获得${subTable.classComment}")
  134. @Parameter(name = "${subJoinColumn.javaField}", description = "${subJoinColumn.columnComment}")
  135. #if ($sceneEnum.scene == 1)
  136. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')")
  137. #end
  138. public CommonResult<${subTable.className}DO> get${subSimpleClassName}By${SubJoinColumnName}(@RequestParam("${subJoinColumn.javaField}") ${subJoinColumn.javaType} ${subJoinColumn.javaField}) {
  139. return success(${classNameVar}Service.get${subSimpleClassName}By${SubJoinColumnName}(${subJoinColumn.javaField}));
  140. }
  141. #end
  142. #end
  143. ## 特殊:MASTER_ERP 时,支持单个的新增、修改、删除操作
  144. #if ( $table.templateType == 11 )
  145. @PostMapping("/${subSimpleClassName_strikeCase}/create")
  146. @Operation(summary = "创建${subTable.classComment}")
  147. #if ($sceneEnum.scene == 1)
  148. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:create')")
  149. #end
  150. public CommonResult<${subPrimaryColumn.javaType}> create${subSimpleClassName}(@Valid @RequestBody ${subTable.className}DO ${subClassNameVar}) {
  151. return success(${classNameVar}Service.create${subSimpleClassName}(${subClassNameVar}));
  152. }
  153. @PutMapping("/${subSimpleClassName_strikeCase}/update")
  154. @Operation(summary = "更新${subTable.classComment}")
  155. #if ($sceneEnum.scene == 1)
  156. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:update')")
  157. #end
  158. public CommonResult<Boolean> update${subSimpleClassName}(@Valid @RequestBody ${subTable.className}DO ${subClassNameVar}) {
  159. ${classNameVar}Service.update${subSimpleClassName}(${subClassNameVar});
  160. return success(true);
  161. }
  162. @DeleteMapping("/${subSimpleClassName_strikeCase}/delete")
  163. @Parameter(name = "id", description = "编号", required = true)
  164. @Operation(summary = "删除${subTable.classComment}")
  165. #if ($sceneEnum.scene == 1)
  166. @PreAuthorize("@ss.hasPermission('${permissionPrefix}:delete')")
  167. #end
  168. public CommonResult<Boolean> delete${subSimpleClassName}(@RequestParam("id") ${subPrimaryColumn.javaType} id) {
  169. ${classNameVar}Service.delete${subSimpleClassName}(id);
  170. return success(true);
  171. }
  172. #end
  173. #end
  174. }