互助医疗,导出会员台账
This commit is contained in:
@@ -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"){
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
#-->
|
||||
|
||||
Reference in New Issue
Block a user