diff --git a/src/main/java/io/v/nutz/sickHelp/controller/member/SickFundListController.java b/src/main/java/io/v/nutz/sickHelp/controller/member/SickFundListController.java index 6fdc013..a2390cf 100644 --- a/src/main/java/io/v/nutz/sickHelp/controller/member/SickFundListController.java +++ b/src/main/java/io/v/nutz/sickHelp/controller/member/SickFundListController.java @@ -1,12 +1,18 @@ package io.v.nutz.sickHelp.controller.member; +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.util.StrUtil; import io.v.nutz.annontation.ViReturn; import io.v.nutz.base.service.SimpleService; import io.v.nutz.modules.models.PageForm; import io.v.nutz.sickHelp.model.SickFundMember; import io.v.nutz.sys.models.Sys_user; +import io.v.nutz.util.ViTool; import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.usermodel.Workbook; import org.apache.shiro.authz.annotation.RequiresAuthentication; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.nutz.dao.Chain; @@ -18,11 +24,16 @@ import org.nutz.dao.util.cri.SqlExpressionGroup; import org.nutz.dao.util.cri.Static; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.lang.util.NutMap; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; import org.nutz.mvc.annotation.POST; import org.nutz.trans.Trans; +import javax.servlet.http.HttpServletResponse; +import java.util.ArrayList; +import java.util.List; + /** * 生病基金列表 * @@ -204,5 +215,110 @@ public class SickFundListController { return null; } + @At + @Ok("void") + @RequiresPermissions("sickFund.member.list") + public void exportAllMember(Integer mutualGoldStartTime, + String keyWord, + String unionId, + String unitId, + String userState, + Integer checkMode, + HttpServletResponse response) { + Sql sql = Sqls.create(""" + select + sfm.id, + sfm.loginName, + sfm.userName, + sfm.userState, + sfm.mutualGoldStartTime, + sfm.sex, + sfm.isMember, + sfm.remark, + u.unitid as unitId, + u.unitname as unitName, + u.idcard + from sick_fund_member sfm + left join `user` u on u.loginname = sfm.loginName + $condition + """); + Cnd cnd = Cnd.NEW(); + if (checkMode != null) { + if (checkMode == 1) { + cnd.and(new Static(""" + sfm.userName IN ( + SELECT userName + FROM sick_fund_member + GROUP BY userName + HAVING COUNT(*) > 1 + ) + """)); + cnd.asc("sfm.userName"); + } + if (checkMode == 2) { + cnd.and(new Static(""" + u.idcard IN ( + SELECT idcard + FROM user + GROUP BY idcard + HAVING COUNT(*) > 1 + ) + """)); + cnd.asc("u.idcard"); + } + } + + cnd.andEX("YEAR(mutualGoldStartTime)", "=", mutualGoldStartTime); + SqlExpressionGroup seg = new SqlExpressionGroup(); + if (StrUtil.isNotBlank(keyWord)) { + seg.orLike("sfm.loginName", keyWord); + seg.orLike("sfm.userName", keyWord); + cnd.and(seg); + } + cnd.andEX("u.unionid", "=", unionId); + if (StrUtil.isNotBlank(unitId)) { + SqlExpressionGroup unitSeg = new SqlExpressionGroup(); + unitSeg.or("u.unitid", "=", unitId); + unitSeg.or("sfm.unitId", "=", unitId); + cnd.and(unitSeg); + } + cnd.andEX("u.userState", "=", userState); + sql.setCondition(cnd); + List list = simpleService.listMap(sql); + + for (NutMap map : list) { + Boolean isMember = map.getAs("isMember", Boolean.class); + if (isMember != null && isMember) { + map.put("isMemberText", "是"); + } else { + map.put("isMemberText", "否"); + } + } + + List exportEntities = new ArrayList<>(); + exportEntities.add(new ExcelExportEntity("工号", "loginName", 20)); + exportEntities.add(new ExcelExportEntity("姓名", "userName", 20)); + exportEntities.add(new ExcelExportEntity("性别", "sex", 15)); + exportEntities.add(new ExcelExportEntity("身份证号", "idcard", 30)); + exportEntities.add(new ExcelExportEntity("所属工会", "unionName", 25)); + exportEntities.add(new ExcelExportEntity("所属单位", "unitName", 25)); + exportEntities.add(new ExcelExportEntity("状态", "userState", 20)); + exportEntities.add(new ExcelExportEntity("是否会员", "isMemberText", 15)); + exportEntities.add(new ExcelExportEntity("入会时间", "mutualGoldStartTime", 20)); + exportEntities.add(new ExcelExportEntity("备注", "remark", 30)); + + try { + ViTool.excelResponse(response, "教职工大病医疗互助会员台账.xlsx"); + ExportParams exportParams = new ExportParams(); + exportParams.setTitle("教职工大病医疗互助会员台账"); + exportParams.setType(ExcelType.XSSF); + Workbook workbook = ExcelExportUtil.exportExcel(exportParams, exportEntities, list); + workbook.write(response.getOutputStream()); + workbook.close(); + } catch (Exception e) { + log.error(e.getMessage(), e); + } + } + } diff --git a/src/main/resources/views/platform/sickHelp/member/list.html b/src/main/resources/views/platform/sickHelp/member/list.html index 1754265..eb23d39 100644 --- a/src/main/resources/views/platform/sickHelp/member/list.html +++ b/src/main/resources/views/platform/sickHelp/member/list.html @@ -86,6 +86,9 @@ layout("/layouts/platform.html"){ 新增 + + 导出全部会员信息 + \ No newline at end of file +#-->