package com.qianwen.smartman.modules.system.controller; import java.util.ArrayList; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.qianwen.core.boot.ctrl.BladeController; import com.qianwen.core.excel.util.ExcelUtil; import com.qianwen.core.mp.support.Condition; import com.qianwen.core.mp.support.Query; import com.qianwen.core.scanner.modular.annotation.GetResource; import com.qianwen.core.scanner.modular.annotation.PostResource; import com.qianwen.core.scanner.modular.stereotype.ApiResource; import com.qianwen.core.tenant.annotation.NonDS; import com.qianwen.core.tool.api.R; import com.qianwen.core.tool.utils.DateUtil; import com.qianwen.smartman.common.cache.RegionCache; import com.qianwen.smartman.modules.system.entity.Region; import com.qianwen.smartman.modules.system.excel.RegionExcel; import com.qianwen.smartman.modules.system.excel.RegionImporter; import com.qianwen.smartman.modules.system.service.IRegionService; import com.qianwen.smartman.modules.system.vo.RegionVO; import com.qianwen.smartman.modules.system.wrapper.RegionWrapper; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import springfox.documentation.annotations.ApiIgnore; @Api(value = "行政区划", tags = {"行政区划"}) @RestController @ApiResource({"blade-system/region"}) @NonDS /* loaded from: blade-api.jar:BOOT-INF/classes/org/springblade/modules/system/controller/RegionController.class */ public class RegionController extends BladeController { private final IRegionService regionService; public RegionController(final IRegionService regionService) { this.regionService = regionService; } @ApiOperationSupport(order = 1) @GetResource({"/detail"}) @ApiOperation(value = "详情", notes = "传入region") public R detail(Region region) { Region detail = (Region) this.regionService.getOne(Condition.getQueryWrapper(region)); return R.data(RegionWrapper.build().entityVO(detail)); } @ApiOperationSupport(order = 2) @GetResource({"/list"}) @ApiOperation(value = "分页", notes = "传入region") public R> list(Region region, Query query) { IPage pages = this.regionService.page(Condition.getPage(query), Condition.getQueryWrapper(region).lambda().orderByAsc(Region::getSort)); /* IPage pages = this.regionService.page(Condition.getPage(query), (Wrapper) Condition.getQueryWrapper(region).lambda().orderByAsc((v0) -> { return v0.getSort(); }));*/ return R.data(pages); } @ApiOperationSupport(order = 3) @ApiImplicitParams({@ApiImplicitParam(name = "code", value = "区划编号", paramType = "query", dataType = "string"), @ApiImplicitParam(name = "name", value = "区划名称", paramType = "query", dataType = "string")}) @GetResource({"/lazy-list"}) @ApiOperation(value = "懒加载列表", notes = "传入menu") public R> lazyList(String parentCode, @RequestParam @ApiIgnore Map menu) { List list = this.regionService.lazyList(parentCode, menu); return R.data(RegionWrapper.build().listNodeLazyVO(list)); } @ApiOperationSupport(order = 4) @ApiImplicitParams({@ApiImplicitParam(name = "code", value = "区划编号", paramType = "query", dataType = "string"), @ApiImplicitParam(name = "name", value = "区划名称", paramType = "query", dataType = "string")}) @GetResource({"/lazy-tree"}) @ApiOperation(value = "懒加载列表", notes = "传入menu") public R> lazyTree(String parentCode, @RequestParam @ApiIgnore Map menu) { List list = this.regionService.lazyTree(parentCode, menu); return R.data(RegionWrapper.build().listNodeLazyVO(list)); } @ApiOperationSupport(order = RegionCache.VILLAGE_LEVEL) @PostResource({"/save"}) @ApiOperation(value = "新增", notes = "传入region") public R save(@Valid @RequestBody Region region) { return R.status(this.regionService.save(region)); } @ApiOperationSupport(order = 6) @PostResource({"/update"}) @ApiOperation(value = "修改", notes = "传入region") public R update(@Valid @RequestBody Region region) { return R.status(this.regionService.updateById(region)); } @ApiOperationSupport(order = 7) @PostResource({"/submit"}) @ApiOperation(value = "新增或修改", notes = "传入region") public R submit(@Valid @RequestBody Region region) { return R.status(this.regionService.submit(region)); } @ApiOperationSupport(order = 8) @PostResource({"/remove"}) @ApiOperation(value = "删除", notes = "传入主键") public R remove(@RequestParam @ApiParam(value = "主键", required = true) String id) { return R.status(this.regionService.removeRegion(id)); } @ApiOperationSupport(order = 9) @GetResource({"/select"}) @ApiOperation(value = "下拉数据源", notes = "传入tenant") public R> select(@RequestParam(required = false, defaultValue = "00") String code) { List list = this.regionService.list(Wrappers.query().lambda().eq(Region::getParentCode, code)); /* List list = this.regionService.list((Wrapper) Wrappers.query().lambda().eq((v0) -> { return v0.getParentCode(); }, code));*/ return R.data(list); } @ApiOperationSupport(order = 10) @PostResource({"import-region"}) @ApiOperation(value = "导入行政区划", notes = "传入excel") public R importRegion(MultipartFile file, Integer isCovered) { RegionImporter regionImporter = new RegionImporter(this.regionService, Boolean.valueOf(isCovered.intValue() == 1)); ExcelUtil.save(file, regionImporter, RegionExcel.class); return R.success("操作成功"); } @ApiOperationSupport(order = 11) @GetResource({"export-region"}) @ApiOperation(value = "导出行政区划", notes = "传入user") public void exportRegion(@RequestParam @ApiIgnore Map region, HttpServletResponse response) { List list = this.regionService.exportRegion(Condition.getQueryWrapper(region, Region.class)); ExcelUtil.export(response, "行政区划数据" + DateUtil.time(), "行政区划数据表", list, RegionExcel.class); } @ApiOperationSupport(order = 12) @GetResource({"export-template"}) @ApiOperation("导出模板") public void exportUser(HttpServletResponse response) { List list = new ArrayList<>(); ExcelUtil.export(response, "行政区划模板", "行政区划表", list, RegionExcel.class); } }