From 497a655ee807f1d81b80cf147f344d15ffbfa431 Mon Sep 17 00:00:00 2001 From: xjm Date: Tue, 28 May 2024 10:41:40 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=9A=E8=BF=87=E8=A1=8C=E6=94=BF=E5=8C=BA?= =?UTF-8?q?=E5=88=92=E4=B8=8B=E8=BD=BDexcel=E6=96=B0=E5=A2=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/AddressBookController.java | 64 ++++++++++++- .../whdc/controller/WarningController.java | 7 +- .../com/whdc/mapper/AddressBookMapper.java | 8 +- .../java/com/whdc/model/vo/ExcelABVo.java | 42 ++++++++ .../whdc/model/vo/WarningHistoryListVo.java | 3 + .../com/whdc/service/IAddressBookService.java | 2 + .../service/impl/AddressBookServiceImpl.java | 2 + src/main/java/com/whdc/utils/ExcelCommon.java | 95 +++++++++++++++++++ .../resources/mapper/AddressBookMapper.xml | 8 +- 9 files changed, 220 insertions(+), 11 deletions(-) create mode 100644 src/main/java/com/whdc/model/vo/ExcelABVo.java create mode 100644 src/main/java/com/whdc/utils/ExcelCommon.java diff --git a/src/main/java/com/whdc/controller/AddressBookController.java b/src/main/java/com/whdc/controller/AddressBookController.java index 1782b1b..f75dd0c 100644 --- a/src/main/java/com/whdc/controller/AddressBookController.java +++ b/src/main/java/com/whdc/controller/AddressBookController.java @@ -12,13 +12,17 @@ import com.whdc.model.enums.Role; import com.whdc.model.enums.VersionsType; import com.whdc.model.group.Insert; import com.whdc.model.group.Update; +import com.whdc.model.vo.AdcdTree; import com.whdc.model.vo.AddressBookVo; +import com.whdc.model.vo.ExcelABVo; import com.whdc.service.*; +import com.whdc.utils.ExcelCommon; import com.whdc.utils.ResultJson; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.compress.utils.Lists; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.CacheEvict; @@ -26,7 +30,10 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; -import java.util.Objects; +import javax.servlet.http.HttpServletResponse; +import java.time.LocalDateTime; +import java.util.*; +import java.util.stream.Collectors; import static com.whdc.model.MyConstant.REDIS_KEY; @@ -49,6 +56,9 @@ public class AddressBookController { @Autowired private IUserService userService; + @Autowired + private IAdinfoService adinfoService; + @Autowired private IVersionsService versionsService; @@ -418,4 +428,56 @@ public class AddressBookController { return ResultJson.ok(byId1); } + + + @ApiOperation(value = "通过行政区划下载excel") + @GetMapping(value = "getExcel/{adnm}") + public ResultJson getExcel(@PathVariable("adnm") String adnm, HttpServletResponse response) { + + List tree = adinfoService.tree(adnm, adnm); + + if (CollectionUtils.isEmpty(tree)){ + return ResultJson.error("当前行政区划不存在"); + } + + List addressBooks = service.lambdaQuery().isNotNull(AddressBook::getAdcd) + .list(); + + if (CollectionUtils.isEmpty(addressBooks)) { + return ResultJson.error("行政区划责任人为空"); + } + + Map> abMap = addressBooks.stream().collect(Collectors.groupingBy(AddressBook::getAdcd, Collectors.toList())); + + // 行政区划责任人数据 + List data = Lists.newArrayList(); + + tree.forEach(t ->{ + String adcd = t.getAdcd(); + String cityAdnm = t.getAdnm(); + List books = abMap.get(adcd); + books.forEach(b ->{ + data.add(new ExcelABVo(cityAdnm,cityAdnm,b.getName(),b.getPosition(),b.getPhone())); + }); + + t.getChildren().forEach(tc ->{ + String tcAdcd = tc.getAdcd(); + String tcCityAdnm = tc.getAdnm(); + List tcBooks = abMap.get(tcAdcd); + books.forEach(b ->{ + data.add(new ExcelABVo(cityAdnm,tcCityAdnm,b.getName(),b.getPosition(),b.getPhone())); + }); + }); + }); + + if (CollectionUtils.isEmpty(data)) { + return ResultJson.error("当前行政区划责任人为空"); + } + + ExcelCommon.exportExcel(data, + "防汛抗旱通讯录", "防汛抗旱通讯录", ExcelABVo.class, "防汛抗旱通讯录_"+ adnm +"_" + LocalDateTime.now() + ".xlsx", + response); + return ResultJson.ok(""); + } + } diff --git a/src/main/java/com/whdc/controller/WarningController.java b/src/main/java/com/whdc/controller/WarningController.java index a01e294..ca1d9c8 100644 --- a/src/main/java/com/whdc/controller/WarningController.java +++ b/src/main/java/com/whdc/controller/WarningController.java @@ -134,7 +134,7 @@ public class WarningController { */ @ApiOperation(value = "历史气象预警统计") @PostMapping("/getHistoryGroupWarning") - public ResultJson> getHistoryGroupWarning(@RequestBody GroupWarningDto dto) { + public ResultJson> getHistoryGroupWarning(@RequestBody GroupWarningDto dto) { ApiDto apiDto = new ApiDto(); apiDto.setStartTime(dto.getStartTime()); @@ -344,9 +344,6 @@ public class WarningController { WarningHistoryListVo vo = vos.get(0); List childList = Lists.newArrayList(); - childList.addAll(vo.getChild()); - - if (CollectionUtils.isNotEmpty(children)) { // 第一个是市级单位 for (int i = 1; i < children.size(); i++) { @@ -360,7 +357,7 @@ public class WarningController { } - vo.setChild(childList); + vo.setAreaChild(childList); respList.add(vo); } diff --git a/src/main/java/com/whdc/mapper/AddressBookMapper.java b/src/main/java/com/whdc/mapper/AddressBookMapper.java index 56ddcce..ebd8bdf 100644 --- a/src/main/java/com/whdc/mapper/AddressBookMapper.java +++ b/src/main/java/com/whdc/mapper/AddressBookMapper.java @@ -5,19 +5,21 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.whdc.model.dto.AddressBootDto; import com.whdc.model.entity.AddressBook; import com.whdc.model.vo.AddressBookVo; +import com.whdc.model.vo.ExcelABVo; import org.apache.ibatis.annotations.Param; import java.util.List; + /** * @author xusan * @date 2024-05-11 */ -public interface AddressBookMapper extends BaseMapper { +public interface AddressBookMapper extends BaseMapper { IPage page(@Param("page") IPage page, @Param("dto") AddressBootDto dto); List find(@Param("dto") AddressBook dto); - List getListByAdnm(@Param("adnm") String adnm); + List getListByAdnm(@Param("adnm") String adnm); - } \ No newline at end of file +} \ No newline at end of file diff --git a/src/main/java/com/whdc/model/vo/ExcelABVo.java b/src/main/java/com/whdc/model/vo/ExcelABVo.java new file mode 100644 index 0000000..cba9110 --- /dev/null +++ b/src/main/java/com/whdc/model/vo/ExcelABVo.java @@ -0,0 +1,42 @@ +package com.whdc.model.vo; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * Description: + * Created by XuSan on 2024/5/28. + * + * @author XuSan + * @version 1.0 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ExcelABVo { + + @Excel(name = "市", width = 20) + @ApiModelProperty(value = "市") + private String city; + + @Excel(name = "区县", width = 20) + @ApiModelProperty(value = "区县") + private String county; + + @Excel(name = "姓名", width = 20) + @ApiModelProperty(value = "姓名") + private String name; + + @Excel(name = "职务", width = 50) + @ApiModelProperty(value = "职务") + private String position; + + @Excel(name = "手机号", width = 30) + @ApiModelProperty(value = "手机号") + private String phone; + + +} diff --git a/src/main/java/com/whdc/model/vo/WarningHistoryListVo.java b/src/main/java/com/whdc/model/vo/WarningHistoryListVo.java index 64581d5..fe3f910 100644 --- a/src/main/java/com/whdc/model/vo/WarningHistoryListVo.java +++ b/src/main/java/com/whdc/model/vo/WarningHistoryListVo.java @@ -46,5 +46,8 @@ public class WarningHistoryListVo { @ApiModelProperty(value = "子统计") private List child; + @ApiModelProperty(value = "地区子统计") + private List areaChild; + } diff --git a/src/main/java/com/whdc/service/IAddressBookService.java b/src/main/java/com/whdc/service/IAddressBookService.java index e2da592..7fbd89c 100644 --- a/src/main/java/com/whdc/service/IAddressBookService.java +++ b/src/main/java/com/whdc/service/IAddressBookService.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.whdc.model.dto.AddressBootDto; import com.whdc.model.entity.AddressBook; import com.whdc.model.vo.AddressBookVo; +import com.whdc.model.vo.ExcelABVo; import java.util.List; @@ -25,4 +26,5 @@ public interface IAddressBookService extends IService { List getListByAdnm(String adnm); + } \ No newline at end of file diff --git a/src/main/java/com/whdc/service/impl/AddressBookServiceImpl.java b/src/main/java/com/whdc/service/impl/AddressBookServiceImpl.java index 9edf0ef..fbce475 100644 --- a/src/main/java/com/whdc/service/impl/AddressBookServiceImpl.java +++ b/src/main/java/com/whdc/service/impl/AddressBookServiceImpl.java @@ -6,6 +6,7 @@ import com.whdc.mapper.AddressBookMapper; import com.whdc.model.dto.AddressBootDto; import com.whdc.model.entity.AddressBook; import com.whdc.model.vo.AddressBookVo; +import com.whdc.model.vo.ExcelABVo; import com.whdc.service.IAddressBookService; import org.apache.commons.lang3.StringUtils; import org.springframework.cache.annotation.Cacheable; @@ -59,4 +60,5 @@ public class AddressBookServiceImpl extends ServiceImpl list, String title, String sheetName, Class pojoClass, String fileName, boolean isCreateHeader, HttpServletResponse response) { + ExportParams exportParams = new ExportParams(title, sheetName); + exportParams.setCreateHeadRows(isCreateHeader); + defaultExport(list, pojoClass, fileName, response, exportParams); + + } + + public static void exportExcel(List list, String title, String sheetName, Class pojoClass, String fileName, HttpServletResponse response) { + defaultExport(list, pojoClass, fileName, response, new ExportParams(title, sheetName)); + } + + public static void exportExcel(List> list, String fileName, HttpServletResponse response) { + defaultExport(list, fileName, response); + } + + private static void defaultExport(List list, Class pojoClass, String fileName, HttpServletResponse response, ExportParams exportParams) { + Workbook workbook = ExcelExportUtil.exportExcel(exportParams, pojoClass, list); + downLoadExcel(fileName, response, workbook); + } + + private static void downLoadExcel(String fileName, HttpServletResponse response, Workbook workbook) { + try { + response.setCharacterEncoding("UTF-8"); + response.setHeader("content-Type", "application/vnd.ms-excel"); + response.setHeader("Content-Disposition", + "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8")); + workbook.write(response.getOutputStream()); + } catch (IOException e) { + e.printStackTrace(); + } + + } + + private static void defaultExport(List> list, String fileName, HttpServletResponse response) { + Workbook workbook = ExcelExportUtil.exportExcel(list, ExcelType.HSSF); + if (workbook != null) ; + downLoadExcel(fileName, response, workbook); + } + + public static List importExcel(String filePath, Integer titleRows, Integer headerRows, Class pojoClass) { + if (StringUtils.isBlank(filePath)) { + return null; + } + ImportParams params = new ImportParams(); + params.setTitleRows(titleRows); + params.setHeadRows(headerRows); + List list = null; + list = ExcelImportUtil.importExcel(new File(filePath), pojoClass, params); + return list; + } + + public static List importExcel(MultipartFile file, Integer titleRows, Integer headerRows, Class pojoClass) { + if (file == null) { + return null; + } + ImportParams params = new ImportParams(); + params.setTitleRows(titleRows); + params.setHeadRows(headerRows); + List list = null; + try { + list = ExcelImportUtil.importExcel(file.getInputStream(), pojoClass, params); + } catch (Exception e) { + e.printStackTrace(); + } + return list; + } +} diff --git a/src/main/resources/mapper/AddressBookMapper.xml b/src/main/resources/mapper/AddressBookMapper.xml index 49f49e8..8e53bd7 100644 --- a/src/main/resources/mapper/AddressBookMapper.xml +++ b/src/main/resources/mapper/AddressBookMapper.xml @@ -54,8 +54,12 @@ FROM ADDRESS_BOOK AB LEFT JOIN ADINFO A ON AB.ADCD = A.ADCD - WHERE - A.ADNM = #{adnm} + + + A.ADNM = #{adnm} + + + \ No newline at end of file