互助医疗,导出会员台账

This commit is contained in:
=
2026-03-25 09:39:31 +08:00
parent a037472262
commit 31b6a5b078
2 changed files with 146 additions and 1 deletions
@@ -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<NutMap> 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<ExcelExportEntity> 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);
}
}
}
@@ -86,6 +86,9 @@ layout("/layouts/platform.html"){
</el-radio-group>
<el-button type="primary" size="small" icon="el-icon-plus" @click="openAdd">新增</el-button>
<el-button @click="exportAllMember" size="small" type="primary">导出全部会员信息
</el-button>
</template>
</table-tool>
<el-table :data="tableData" :size="tableSize"
@@ -248,6 +251,32 @@ layout("/layouts/platform.html"){
}
},
methods: {
exportAllMember() {
const {mutualGoldStartTime, keyWord, unionId, unitId, userState, checkMode} = this.pageForm
let url = loc() + '/exportAllMember?'
const params = []
if (mutualGoldStartTime !== undefined && mutualGoldStartTime !== null) {
params.push('mutualGoldStartTime=' + mutualGoldStartTime)
}
if (keyWord) {
params.push('keyWord=' + encodeURIComponent(keyWord))
}
if (unionId) {
params.push('unionId=' + unionId)
}
if (unitId) {
params.push('unitId=' + unitId)
}
if (userState) {
params.push('userState=' + encodeURIComponent(userState))
}
if (checkMode !== undefined && checkMode !== null && checkMode !== '') {
params.push('checkMode=' + checkMode)
}
window.open(url + params.join('&'))
},
async doDelete(id) {
const confirm = await this.$confirm('删除后补助数据可能会受到影响,您确定要删除吗?', '提示', {
confirmButtonText: '确定',
@@ -306,4 +335,4 @@ layout("/layouts/platform.html"){
<!--#
}
#-->
#-->