树形Controller.java 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  1. package ${package}.${moduleName}.controller;
  2. #if($queryList)
  3. import cn.hutool.core.util.StrUtil;
  4. #end
  5. import cn.hutool.core.util.ArrayUtil;
  6. import cn.hutool.core.collection.CollUtil;
  7. #set($hasDateRange = false)
  8. #set($hasDateTimeRange = false)
  9. #foreach($field in $queryList)
  10. #if($field.queryFormType == 'date-range')
  11. #set($hasDateRange = true)
  12. #end
  13. #if($field.queryFormType == 'datetime-range')
  14. #set($hasDateTimeRange = true)
  15. #end
  16. #end
  17. #if($hasDateRange)
  18. import java.time.LocalDate;
  19. #end
  20. #if($hasDateTimeRange)
  21. import java.time.LocalDateTime;
  22. #end
  23. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  24. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  25. import ${package}.common.core.util.R;
  26. import ${package}.common.log.annotation.SysLog;
  27. #if($opensource)
  28. import com.pig4cloud.plugin.excel.annotation.ResponseExcel;
  29. import com.pig4cloud.plugin.excel.annotation.RequestExcel;
  30. #else
  31. import ${package}.common.excel.annotation.ResponseExcel;
  32. import ${package}.common.excel.annotation.RequestExcel;
  33. #end
  34. import ${package}.${moduleName}.entity.${ClassName}Entity;
  35. import ${package}.${moduleName}.service.${ClassName}Service;
  36. import io.swagger.v3.oas.annotations.security.SecurityRequirement;
  37. #if($isSpringBoot3)
  38. import ${package}.common.security.annotation.HasPermission;
  39. import org.springdoc.core.annotations.ParameterObject;
  40. #else
  41. import org.springframework.security.access.prepost.PreAuthorize;
  42. import org.springdoc.api.annotations.ParameterObject;
  43. #end
  44. import org.springframework.http.HttpHeaders;
  45. import io.swagger.v3.oas.annotations.tags.Tag;
  46. import io.swagger.v3.oas.annotations.Operation;
  47. import lombok.RequiredArgsConstructor;
  48. import org.springframework.validation.BindingResult;
  49. import org.springframework.web.bind.annotation.*;
  50. import java.util.List;
  51. import java.util.Objects;
  52. /**
  53. * ${tableComment}
  54. *
  55. * @author ${author}
  56. * @date ${datetime}
  57. */
  58. @RestController
  59. @RequiredArgsConstructor
  60. @RequestMapping("/${functionName}" )
  61. @Tag(description = "${functionName}" , name = "${tableComment}管理" )
  62. @SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
  63. public class ${ClassName}Controller {
  64. private final ${ClassName}Service ${className}Service;
  65. /**
  66. * 获取树形列表
  67. * @param ${className} ${tableComment}
  68. * @return
  69. */
  70. @Operation(summary = "获取树形列表" , description = "获取树形列表" )
  71. @GetMapping("/tree" )
  72. #if($isSpringBoot3)
  73. @HasPermission("${moduleName}_${functionName}_view")
  74. #else
  75. @PreAuthorize("@pms.hasPermission('${moduleName}_${functionName}_view')" )
  76. #end
  77. public R get${ClassName}Tree(@ParameterObject ${ClassName}Entity ${className}) {
  78. LambdaQueryWrapper<${ClassName}Entity> wrapper = Wrappers.lambdaQuery();
  79. #foreach ($field in $queryList)
  80. #set($getAttrName=$str.getProperty($field.attrName))
  81. #set($var="${className}.$getAttrName()")
  82. #if($field.attrType == 'String')
  83. #set($expression="StrUtil.isNotBlank")
  84. #else
  85. #set($expression="Objects.nonNull")
  86. #end
  87. #if($field.queryFormType == 'date-range')
  88. // ${field.fieldComment}范围查询
  89. if (ArrayUtil.isNotEmpty(${className}.get${field.attrName.substring(0,1).toUpperCase()}${field.attrName.substring(1)}Range())) {
  90. String[] range = ${className}.get${field.attrName.substring(0,1).toUpperCase()}${field.attrName.substring(1)}Range();
  91. if (StrUtil.isNotBlank(range[0])) {
  92. wrapper.ge(${ClassName}Entity::$getAttrName, LocalDate.parse(range[0]));
  93. }
  94. if (StrUtil.isNotBlank(range[1])) {
  95. wrapper.le(${ClassName}Entity::$getAttrName, LocalDate.parse(range[1]));
  96. }
  97. }
  98. #elseif($field.queryFormType == 'datetime-range')
  99. // ${field.fieldComment}范围查询
  100. if (ArrayUtil.isNotEmpty(${className}.get${field.attrName.substring(0,1).toUpperCase()}${field.attrName.substring(1)}Range())) {
  101. String[] range = ${className}.get${field.attrName.substring(0,1).toUpperCase()}${field.attrName.substring(1)}Range();
  102. if (StrUtil.isNotBlank(range[0])) {
  103. wrapper.ge(${ClassName}Entity::$getAttrName, LocalDateTime.parse(range[0]));
  104. }
  105. if (StrUtil.isNotBlank(range[1])) {
  106. wrapper.le(${ClassName}Entity::$getAttrName, LocalDateTime.parse(range[1]));
  107. }
  108. }
  109. #elseif($field.queryType == '=')
  110. wrapper.eq($expression($var),${ClassName}Entity::$getAttrName,$var);
  111. #elseif( $field.queryType == 'like' )
  112. wrapper.like($expression($var),${ClassName}Entity::$getAttrName,$var);
  113. #elseif( $field.queryType == '!-' )
  114. wrapper.ne($expression($var),${ClassName}Entity::$getAttrName,$var);
  115. #elseif( $field.queryType == '>' )
  116. wrapper.gt($expression($var),${ClassName}Entity::$getAttrName,$var);
  117. #elseif( $field.queryType == '<' )
  118. wrapper.lt($expression($var),${ClassName}Entity::$getAttrName,$var);
  119. #elseif( $field.queryType == '>=' )
  120. wrapper.ge($expression($var),${ClassName}Entity::$getAttrName,$var);
  121. #elseif( $field.queryType == '<=' )
  122. wrapper.le($expression($var),${ClassName}Entity::$getAttrName,$var);
  123. #elseif( $field.queryType == 'left like' )
  124. wrapper.likeLeft($expression($var),${ClassName}Entity::$getAttrName,$var);
  125. #elseif( $field.queryType == 'right like' )
  126. wrapper.likeRight($expression($var),${ClassName}Entity::$getAttrName,$var);
  127. #end
  128. #end
  129. return R.ok(${className}Service.buildTree(wrapper));
  130. }
  131. /**
  132. * 通过条件查询${tableComment}
  133. * @param ${className} 查询条件
  134. * @return R 对象列表
  135. */
  136. @Operation(summary = "通过条件查询" , description = "通过条件查询对象" )
  137. @GetMapping("/details" )
  138. #if($isSpringBoot3)
  139. @HasPermission("${moduleName}_${functionName}_view")
  140. #else
  141. @PreAuthorize("@pms.hasPermission('${moduleName}_${functionName}_view')" )
  142. #end
  143. public R getDetails(@ParameterObject ${ClassName}Entity ${className}) {
  144. return R.ok(${className}Service.list(Wrappers.query(${className})));
  145. }
  146. /**
  147. * 新增${tableComment}
  148. * @param ${className} ${tableComment}
  149. * @return R
  150. */
  151. @Operation(summary = "新增${tableComment}" , description = "新增${tableComment}" )
  152. @SysLog("新增${tableComment}" )
  153. @PostMapping
  154. #if($isSpringBoot3)
  155. @HasPermission("${moduleName}_${functionName}_add")
  156. #else
  157. @PreAuthorize("@pms.hasPermission('${moduleName}_${functionName}_add')" )
  158. #end
  159. public R save(@RequestBody ${ClassName}Entity ${className}) {
  160. return R.ok(${className}Service.save(${className}));
  161. }
  162. /**
  163. * 修改${tableComment}
  164. * @param ${className} ${tableComment}
  165. * @return R
  166. */
  167. @Operation(summary = "修改${tableComment}" , description = "修改${tableComment}" )
  168. @SysLog("修改${tableComment}" )
  169. @PutMapping
  170. #if($isSpringBoot3)
  171. @HasPermission("${moduleName}_${functionName}_edit")
  172. #else
  173. @PreAuthorize("@pms.hasPermission('${moduleName}_${functionName}_edit')" )
  174. #end
  175. public R updateById(@RequestBody ${ClassName}Entity ${className}) {
  176. return R.ok(${className}Service.updateById(${className}));
  177. }
  178. /**
  179. * 通过id删除${tableComment}
  180. * @param ids ${pk.attrName}列表
  181. * @return R
  182. */
  183. @Operation(summary = "通过id删除${tableComment}" , description = "通过id删除${tableComment}" )
  184. @SysLog("通过id删除${tableComment}" )
  185. @DeleteMapping
  186. #if($isSpringBoot3)
  187. @HasPermission("${moduleName}_${functionName}_del")
  188. #else
  189. @PreAuthorize("@pms.hasPermission('${moduleName}_${functionName}_del')" )
  190. #end
  191. public R removeById(@RequestBody ${pk.attrType}[] ids) {
  192. return R.ok(${className}Service.removeBatchByIds(CollUtil.toList(ids)));
  193. }
  194. /**
  195. * 导出excel 表格
  196. * @param ${className} 查询条件
  197. * @param ids 导出指定ID
  198. * @return excel 文件流
  199. */
  200. @ResponseExcel
  201. @GetMapping("/export")
  202. #if($isSpringBoot3)
  203. @HasPermission("${moduleName}_${functionName}_export")
  204. #else
  205. @PreAuthorize("@pms.hasPermission('${moduleName}_${functionName}_export')" )
  206. #end
  207. public List<${ClassName}Entity> exportExcel(${ClassName}Entity ${className},${pk.attrType}[] ids) {
  208. return ${className}Service.list(Wrappers.lambdaQuery(${className}).in(ArrayUtil.isNotEmpty(ids), ${ClassName}Entity::$str.getProperty($pk.attrName), ids));
  209. }
  210. /**
  211. * 导入excel 表
  212. * @param ${className}List 对象实体列表
  213. * @param bindingResult 错误信息列表
  214. * @return ok fail
  215. */
  216. @PostMapping("/import")
  217. #if($isSpringBoot3)
  218. @HasPermission("${moduleName}_${functionName}_export")
  219. #else
  220. @PreAuthorize("@pms.hasPermission('${moduleName}_${functionName}_export')" )
  221. #end
  222. public R importExcel(@RequestExcel List<${ClassName}Entity> ${className}List, BindingResult bindingResult) {
  223. return R.ok(${className}Service.saveBatch(${className}List));
  224. }
  225. }