diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/difficulthelp/controller/DifficultHelpReadingController.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/difficulthelp/controller/DifficultHelpReadingController.java index 257c97f..5efbb18 100644 --- a/src/main/java/com/budwk/app/zhgh/staffbenefit/difficulthelp/controller/DifficultHelpReadingController.java +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/difficulthelp/controller/DifficultHelpReadingController.java @@ -98,6 +98,21 @@ public class DifficultHelpReadingController { return Result.success().addData(pagination); } + /** + * 导出当前阅览筛选范围内全部申请记录的受助人信息。 + * + * @param pageParam 年度、受助人姓名或工号关键字、工会ID、单位ID及申请日期范围;分页参数不限制导出条数 + * @param response HTTP 下载响应,返回“困难补助人员信息.xlsx”的二进制内容,包含受助人、性别、申请模式、出生年月、所属工会、所属单位、手机号码和申请原因八列 + * @throws IOException Excel 生成失败时抛出 + */ + @At + @Ok("void") + @ApiOperation("导出困难补助人员信息Excel") + @SaCheckPermission("difficultHelp.reading") + public void exportExcel(DifficultHelpPageParam pageParam, HttpServletResponse response) throws IOException { + CommonDownloadUtil.download("困难补助人员信息.xlsx", difficultHelpCommonService.exportExcel(pageParam), response); + } + /** * 导出当前阅览条件下困难补助申请人上传的附件。 * diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/difficulthelp/service/DifficultHelpCommonService.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/difficulthelp/service/DifficultHelpCommonService.java index 7d0fb64..16ff4e5 100644 --- a/src/main/java/com/budwk/app/zhgh/staffbenefit/difficulthelp/service/DifficultHelpCommonService.java +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/difficulthelp/service/DifficultHelpCommonService.java @@ -15,6 +15,15 @@ import java.io.IOException; */ public interface DifficultHelpCommonService extends BaseService { + /** + * 按阅览页筛选条件及当前用户数据权限导出全部申请记录的受助人信息。 + * + * @param pageParam 年度、受助人姓名或工号关键字、工会ID、单位ID及申请日期范围,忽略分页参数 + * @return XLSX 二进制内容,依次包含受助人、性别、申请模式、出生年月、所属工会、所属单位、手机号码和申请原因 + * @throws IOException Excel 写入或资源关闭失败时抛出 + */ + byte[] exportExcel(DifficultHelpPageParam pageParam) throws IOException; + /** * 按困难补助阅览页的查询条件生成分工会审核已同意申请的附件压缩包。 * diff --git a/src/main/java/com/budwk/app/zhgh/staffbenefit/difficulthelp/service/impl/DifficultHelpCommonServiceImpl.java b/src/main/java/com/budwk/app/zhgh/staffbenefit/difficulthelp/service/impl/DifficultHelpCommonServiceImpl.java index e7cfcd9..c6fed6a 100644 --- a/src/main/java/com/budwk/app/zhgh/staffbenefit/difficulthelp/service/impl/DifficultHelpCommonServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/staffbenefit/difficulthelp/service/impl/DifficultHelpCommonServiceImpl.java @@ -1,5 +1,10 @@ package com.budwk.app.zhgh.staffbenefit.difficulthelp.service.impl; +import cn.afterturn.easypoi.excel.ExcelExportUtil; +import cn.afterturn.easypoi.excel.entity.ExportParams; +import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; +import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONObject; import com.budwk.app.base.service.impl.BaseServiceImpl; @@ -10,15 +15,18 @@ import com.budwk.app.zhgh.staffbenefit.difficulthelp.models.DifficultHelpInfo; import com.budwk.app.zhgh.staffbenefit.difficulthelp.service.DifficultHelpCommonService; import com.budwk.app.zhgh.staffbenefit.difficulthelp.vo.DifficultHelpPageParam; import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.Workbook; import org.nutz.dao.Cnd; import org.nutz.dao.Dao; import org.nutz.dao.Sqls; import org.nutz.dao.sql.Sql; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.lang.util.NutMap; import java.io.ByteArrayOutputStream; import java.io.IOException; +import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -46,6 +54,60 @@ public class DifficultHelpCommonServiceImpl extends BaseServiceImpl helpInfoList = listEntity(sql); + List rows = new ArrayList<>(); + for (DifficultHelpInfo helpInfo : helpInfoList) { + NutMap row = new NutMap(); + String userName = StrUtil.nullToEmpty(helpInfo.getUserName()); + String loginName = StrUtil.nullToEmpty(helpInfo.getLoginName()); + row.put("recipient", StrUtil.isBlank(loginName) ? userName : userName + "(" + loginName + ")"); + row.put("sex", StrUtil.nullToEmpty(helpInfo.getSex())); + // 申请模式1为本人申请、2为替他人申请;历史空值或未知值不误判为代申请。 + row.put("mode", "1".equals(helpInfo.getMode()) ? "本人申请" : "2".equals(helpInfo.getMode()) ? "替他人申请" : ""); + row.put("birthday", helpInfo.getBirthday() == null ? "" : DateUtil.format(helpInfo.getBirthday(), "yyyy-MM-dd")); + row.put("unionName", StrUtil.nullToEmpty(helpInfo.getUnionName())); + row.put("unitName", StrUtil.nullToEmpty(helpInfo.getUnitName())); + // 手机号以文本写入,保留原始号码,避免 Excel 数值格式改变显示。 + row.put("mobile", StrUtil.nullToEmpty(helpInfo.getMobile())); + row.put("reason", StrUtil.nullToEmpty(helpInfo.getReason())); + rows.add(row); + } + + List columns = new ArrayList<>(); + columns.add(new ExcelExportEntity("受助人(姓名工号)", "recipient", 25)); + columns.add(new ExcelExportEntity("性别", "sex", 10)); + columns.add(new ExcelExportEntity("申请模式", "mode", 18)); + columns.add(new ExcelExportEntity("出生年月", "birthday", 18)); + columns.add(new ExcelExportEntity("所属工会", "unionName", 30)); + columns.add(new ExcelExportEntity("所属单位", "unitName", 30)); + columns.add(new ExcelExportEntity("手机号码", "mobile", 20)); + ExcelExportEntity reasonColumn = new ExcelExportEntity("申请原因", "reason", 60); + reasonColumn.setWrap(true); + columns.add(reasonColumn); + ExportParams exportParams = new ExportParams(); + exportParams.setType(ExcelType.XSSF); + try (Workbook workbook = ExcelExportUtil.exportExcel(exportParams, columns, rows); + ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) { + workbook.write(outputStream); + return outputStream.toByteArray(); + } + } + /** * 根据阅览页筛选结果下载分工会审核已同意的附件,并以受助人姓名和工号作为 ZIP 内目录。 * 无附件、文件记录不存在或文件下载失败的记录会跳过,避免单个异常附件影响其他附件导出。 diff --git a/src/main/resources/views/platform/zhgh/staffbenefit/difficulthelp/reading/index.html b/src/main/resources/views/platform/zhgh/staffbenefit/difficulthelp/reading/index.html index adf78cf..53cdadf 100644 --- a/src/main/resources/views/platform/zhgh/staffbenefit/difficulthelp/reading/index.html +++ b/src/main/resources/views/platform/zhgh/staffbenefit/difficulthelp/reading/index.html @@ -42,6 +42,7 @@ layout("/layouts/platform.html"){ + 导出Excel 导出附件Zip @@ -114,6 +115,10 @@ layout("/layouts/platform.html"){ 'info': INFO }, methods: { + // 按当前筛选条件导出全部申请记录,下载及加载状态由公共下载方法统一处理。 + exportExcel() { + this.$downLoad(loc() + "/exportExcel", this.pageForm) + }, exportAttachmentZip() { this.$axios.post(loc() + "/hasExportableAttachment", this.pageForm).then((res) => { if (res.code === 0 && res.data) {