RegionController.java 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. /*
  2. * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
  3. *
  4. * Redistribution and use in source and binary forms, with or without
  5. * modification, are permitted provided that the following conditions are met:
  6. *
  7. * Redistributions of source code must retain the above copyright notice,
  8. * this list of conditions and the following disclaimer.
  9. * Redistributions in binary form must reproduce the above copyright
  10. * notice, this list of conditions and the following disclaimer in the
  11. * documentation and/or other materials provided with the distribution.
  12. * Neither the name of the dreamlu.net developer nor the names of its
  13. * contributors may be used to endorse or promote products derived from
  14. * this software without specific prior written permission.
  15. * Author: Chill 庄骞 (smallchill@163.com)
  16. */
  17. package org.springblade.modules.system.controller;
  18. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  19. import com.baomidou.mybatisplus.core.metadata.IPage;
  20. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  21. import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
  22. import io.swagger.annotations.*;
  23. import lombok.AllArgsConstructor;
  24. import org.springblade.core.boot.ctrl.BladeController;
  25. import org.springblade.core.excel.util.ExcelUtil;
  26. import org.springblade.core.launch.constant.AppConstant;
  27. import org.springblade.core.mp.support.Condition;
  28. import org.springblade.core.mp.support.Query;
  29. import org.springblade.core.tenant.annotation.NonDS;
  30. import org.springblade.core.tool.api.R;
  31. import org.springblade.core.tool.utils.DateUtil;
  32. import org.springblade.modules.system.entity.Region;
  33. import org.springblade.modules.system.excel.RegionExcel;
  34. import org.springblade.modules.system.excel.RegionImporter;
  35. import org.springblade.modules.system.service.IRegionService;
  36. import org.springblade.modules.system.vo.RegionVO;
  37. import org.springblade.modules.system.wrapper.RegionWrapper;
  38. import org.springframework.web.bind.annotation.*;
  39. import org.springframework.web.multipart.MultipartFile;
  40. import springfox.documentation.annotations.ApiIgnore;
  41. import javax.servlet.http.HttpServletResponse;
  42. import javax.validation.Valid;
  43. import java.util.ArrayList;
  44. import java.util.List;
  45. import java.util.Map;
  46. /**
  47. * 行政区划表 控制器
  48. *
  49. * @author Chill
  50. */
  51. @NonDS
  52. @RestController
  53. @AllArgsConstructor
  54. @RequestMapping(AppConstant.APPLICATION_SYSTEM_NAME + "/region")
  55. @Api(value = "行政区划表", tags = "行政区划表接口")
  56. public class RegionController extends BladeController {
  57. private final IRegionService regionService;
  58. /**
  59. * 详情
  60. */
  61. @GetMapping("/detail")
  62. @ApiOperationSupport(order = 1)
  63. @ApiOperation(value = "详情", notes = "传入region")
  64. public R<RegionVO> detail(Region region) {
  65. Region detail = regionService.getOne(Condition.getQueryWrapper(region));
  66. return R.data(RegionWrapper.build().entityVO(detail));
  67. }
  68. /**
  69. * 分页 行政区划表
  70. */
  71. @GetMapping("/list")
  72. @ApiOperationSupport(order = 2)
  73. @ApiOperation(value = "分页", notes = "传入region")
  74. public R<IPage<Region>> list(Region region, Query query) {
  75. IPage<Region> pages = regionService.page(Condition.getPage(query), Condition.getQueryWrapper(region));
  76. return R.data(pages);
  77. }
  78. /**
  79. * 懒加载列表
  80. */
  81. @GetMapping("/lazy-list")
  82. @ApiImplicitParams({
  83. @ApiImplicitParam(name = "code", value = "区划编号", paramType = "query", dataType = "string"),
  84. @ApiImplicitParam(name = "name", value = "区划名称", paramType = "query", dataType = "string")
  85. })
  86. @ApiOperationSupport(order = 3)
  87. @ApiOperation(value = "懒加载列表", notes = "传入menu")
  88. public R<List<RegionVO>> lazyList(String parentCode, @ApiIgnore @RequestParam Map<String, Object> menu) {
  89. List<RegionVO> list = regionService.lazyList(parentCode, menu);
  90. return R.data(RegionWrapper.build().listNodeLazyVO(list));
  91. }
  92. /**
  93. * 懒加载列表
  94. */
  95. @GetMapping("/lazy-tree")
  96. @ApiImplicitParams({
  97. @ApiImplicitParam(name = "code", value = "区划编号", paramType = "query", dataType = "string"),
  98. @ApiImplicitParam(name = "name", value = "区划名称", paramType = "query", dataType = "string")
  99. })
  100. @ApiOperationSupport(order = 4)
  101. @ApiOperation(value = "懒加载列表", notes = "传入menu")
  102. public R<List<RegionVO>> lazyTree(String parentCode, @ApiIgnore @RequestParam Map<String, Object> menu) {
  103. List<RegionVO> list = regionService.lazyTree(parentCode, menu);
  104. return R.data(RegionWrapper.build().listNodeLazyVO(list));
  105. }
  106. /**
  107. * 新增 行政区划表
  108. */
  109. @PostMapping("/save")
  110. @ApiOperationSupport(order = 5)
  111. @ApiOperation(value = "新增", notes = "传入region")
  112. public R save(@Valid @RequestBody Region region) {
  113. return R.status(regionService.save(region));
  114. }
  115. /**
  116. * 修改 行政区划表
  117. */
  118. @PostMapping("/update")
  119. @ApiOperationSupport(order = 6)
  120. @ApiOperation(value = "修改", notes = "传入region")
  121. public R update(@Valid @RequestBody Region region) {
  122. return R.status(regionService.updateById(region));
  123. }
  124. /**
  125. * 新增或修改 行政区划表
  126. */
  127. @PostMapping("/submit")
  128. @ApiOperationSupport(order = 7)
  129. @ApiOperation(value = "新增或修改", notes = "传入region")
  130. public R submit(@Valid @RequestBody Region region) {
  131. return R.status(regionService.submit(region));
  132. }
  133. /**
  134. * 删除 行政区划表
  135. */
  136. @PostMapping("/remove")
  137. @ApiOperationSupport(order = 8)
  138. @ApiOperation(value = "删除", notes = "传入主键")
  139. public R remove(@ApiParam(value = "主键", required = true) @RequestParam String id) {
  140. return R.status(regionService.removeRegion(id));
  141. }
  142. /**
  143. * 行政区划下拉数据源
  144. */
  145. @GetMapping("/select")
  146. @ApiOperationSupport(order = 9)
  147. @ApiOperation(value = "下拉数据源", notes = "传入tenant")
  148. public R<List<Region>> select(@RequestParam(required = false, defaultValue = "00") String code) {
  149. List<Region> list = regionService.list(Wrappers.<Region>query().lambda().eq(Region::getParentCode, code));
  150. return R.data(list);
  151. }
  152. /**
  153. * 导入行政区划数据
  154. */
  155. @PostMapping("import-region")
  156. @ApiOperationSupport(order = 10)
  157. @ApiOperation(value = "导入行政区划", notes = "传入excel")
  158. public R importRegion(MultipartFile file, Integer isCovered) {
  159. RegionImporter regionImporter = new RegionImporter(regionService, isCovered == 1);
  160. ExcelUtil.save(file, regionImporter, RegionExcel.class);
  161. return R.success("操作成功");
  162. }
  163. /**
  164. * 导出行政区划数据
  165. */
  166. @GetMapping("export-region")
  167. @ApiOperationSupport(order = 11)
  168. @ApiOperation(value = "导出行政区划", notes = "传入user")
  169. public void exportRegion(@ApiIgnore @RequestParam Map<String, Object> region, HttpServletResponse response) {
  170. QueryWrapper<Region> queryWrapper = Condition.getQueryWrapper(region, Region.class);
  171. List<RegionExcel> list = regionService.exportRegion(queryWrapper);
  172. ExcelUtil.export(response, "行政区划数据" + DateUtil.time(), "行政区划数据表", list, RegionExcel.class);
  173. }
  174. /**
  175. * 导出模板
  176. */
  177. @GetMapping("export-template")
  178. @ApiOperationSupport(order = 12)
  179. @ApiOperation(value = "导出模板")
  180. public void exportUser(HttpServletResponse response) {
  181. List<RegionExcel> list = new ArrayList<>();
  182. ExcelUtil.export(response, "行政区划模板", "行政区划表", list, RegionExcel.class);
  183. }
  184. }