医疗补助汇总
This commit is contained in:
+241
@@ -0,0 +1,241 @@
|
||||
package com.budwk.app.zhgh.staffbenefit.medicalMutualAid.medical.controller;
|
||||
|
||||
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.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.budwk.app.base.page.Pagination;
|
||||
import com.budwk.app.base.result.Result;
|
||||
import com.budwk.app.base.utils.CommonDownloadUtil;
|
||||
import com.budwk.app.base.utils.PageUtil;
|
||||
import com.budwk.app.flow.engine.FlowEngine;
|
||||
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
||||
import com.budwk.app.zhgh.staffbenefit.medicalMutualAid.medical.param.MedicalPageForm;
|
||||
import com.budwk.app.zhgh.staffbenefit.medicalMutualAid.medical.service.MedicalApplyService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.nutz.dao.Cnd;
|
||||
import org.nutz.dao.Sqls;
|
||||
import org.nutz.dao.entity.Record;
|
||||
import org.nutz.dao.sql.Sql;
|
||||
import org.nutz.dao.util.cri.SqlExpressionGroup;
|
||||
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 javax.servlet.http.HttpServletResponse;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author : hongqiwei
|
||||
* @description :医疗互助汇总
|
||||
* @createDate : 2026/1/24 10:20
|
||||
*/
|
||||
@IocBean
|
||||
@At("/platform/medicalMutualAid/medical/statistics")
|
||||
@Api("医疗互助汇总")
|
||||
@Ok("json:full")
|
||||
@Slf4j
|
||||
public class MedicalStatisticsController {
|
||||
|
||||
@Inject
|
||||
private MedicalApplyService medicalApplyService;
|
||||
|
||||
@Inject
|
||||
private FlowEngine flowEngine;
|
||||
|
||||
@At("")
|
||||
@Ok("beetl:/platform/zhgh/staffbenefit/medicalMutualAid/medical/statistics/index.html")
|
||||
@SaCheckPermission("medicalMutualAid.medical.statistics")
|
||||
public void index() {
|
||||
}
|
||||
|
||||
@At
|
||||
@ApiOperation("分页查询")
|
||||
@SaCheckPermission("medicalMutualAid.medical.statistics")
|
||||
public Result pageData(MedicalPageForm pageForm) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
info.*,
|
||||
type.diseaseName,
|
||||
type.isMajorDiseases,
|
||||
us.username,
|
||||
us.loginname,
|
||||
us.unitName,
|
||||
us.unionName,
|
||||
ins.id AS instanceId,
|
||||
ins.businessNo,
|
||||
ins.state instanceState,
|
||||
ins.variable instanceVariable,
|
||||
ins.processDefineId instanceProcessDefineId,
|
||||
t.id taskId,
|
||||
t.taskName AS taskKey,
|
||||
t.displayName taskName,
|
||||
t.taskType,
|
||||
t.performType taskPerformType,
|
||||
t.taskState,
|
||||
t.finishTime,
|
||||
t.taskParentId,
|
||||
t.variable taskVariable,
|
||||
IF((SELECT taskName FROM wf_process_task tt WHERE tt.id = t.taskParentId) = 'startTask', 1, 0) canRevoke,
|
||||
(SELECT MAX(id) FROM wf_process_task WHERE processInstanceId = ins.id AND taskName = 'startTask') AS startTaskId
|
||||
FROM
|
||||
medical_apply info
|
||||
LEFT JOIN medical_disease_type type ON info.diseaseId = type.id
|
||||
LEFT JOIN aid_fund_member_pay member ON member.userId = info.userId
|
||||
LEFT JOIN vw_user us ON us.id = info.userId
|
||||
LEFT JOIN `wf_process_instance` ins ON ins.businessNo = info.id
|
||||
LEFT JOIN wf_process_task t ON t.processInstanceId = ins.id
|
||||
AND t.taskState = 10
|
||||
LEFT JOIN wf_process_task_actor ta ON ta.processTaskId = t.id
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||
seg.orLike("us.loginname", pageForm.getSearchKeyword());
|
||||
seg.orLike("us.username", pageForm.getSearchKeyword());
|
||||
cnd.and(seg);
|
||||
}
|
||||
cnd.andEX("year(info.applyTime)", "=", pageForm.getYear());
|
||||
cnd.andEX("info.diseaseId", "=", pageForm.getDiseaseId());
|
||||
cnd.andEX("us.unionId", "=", pageForm.getUnionId());
|
||||
cnd.andEX("us.unitId", "=", pageForm.getUnitId());
|
||||
cnd.andEX("member.aidFundMemberUserType", "=", pageForm.getAidFundMemberUserType());
|
||||
|
||||
if (StrUtil.isNotBlank(pageForm.getPageOrderName()) && StrUtil.isNotBlank(pageForm.getPageOrderBy())) {
|
||||
cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy()));
|
||||
} else {
|
||||
cnd.desc("info.applyTime");
|
||||
}
|
||||
cnd.and("ins.state", "=", 20);
|
||||
cnd.groupBy("info.id");
|
||||
sql.setCondition(cnd);
|
||||
Pagination<NutMap> pagination = medicalApplyService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
List<NutMap> costList = medicalApplyService.getCostList(pagination.getList());
|
||||
pagination.setList(costList);
|
||||
return Result.success(pagination);
|
||||
}
|
||||
|
||||
@At
|
||||
@Ok("void")
|
||||
@ApiOperation("分页查询")
|
||||
@SaCheckPermission("medicalMutualAid.medical.statistics")
|
||||
public void doExport(MedicalPageForm pageForm, Boolean isMajorDiseases, HttpServletResponse response) {
|
||||
Sql sql = Sqls.create("""
|
||||
SELECT
|
||||
info.*,
|
||||
type.diseaseName,
|
||||
type.diseaseCode,
|
||||
type.isMajorDiseases,
|
||||
us.username,
|
||||
us.loginname,
|
||||
us.unitName,
|
||||
us.unitCode,
|
||||
us.unionName,
|
||||
us.unionCode,
|
||||
ins.id AS instanceId,
|
||||
ins.businessNo,
|
||||
ins.state instanceState,
|
||||
ins.variable instanceVariable,
|
||||
ins.processDefineId instanceProcessDefineId,
|
||||
t.id taskId,
|
||||
t.taskName AS taskKey,
|
||||
t.displayName taskName,
|
||||
t.taskType,
|
||||
t.performType taskPerformType,
|
||||
t.taskState,
|
||||
t.finishTime,
|
||||
t.taskParentId,
|
||||
t.variable taskVariable,
|
||||
IF((SELECT taskName FROM wf_process_task tt WHERE tt.id = t.taskParentId) = 'startTask', 1, 0) canRevoke,
|
||||
(SELECT MAX(id) FROM wf_process_task WHERE processInstanceId = ins.id AND taskName = 'startTask') AS startTaskId
|
||||
FROM
|
||||
medical_apply info
|
||||
LEFT JOIN medical_disease_type type ON info.diseaseId = type.id
|
||||
LEFT JOIN aid_fund_member_pay member ON member.userId = info.userId
|
||||
LEFT JOIN vw_user us ON us.id = info.userId
|
||||
LEFT JOIN `wf_process_instance` ins ON ins.businessNo = info.id
|
||||
LEFT JOIN wf_process_task t ON t.processInstanceId = ins.id
|
||||
AND t.taskState = 10
|
||||
LEFT JOIN wf_process_task_actor ta ON ta.processTaskId = t.id
|
||||
$condition
|
||||
""");
|
||||
Cnd cnd = Cnd.NEW();
|
||||
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
|
||||
SqlExpressionGroup seg = new SqlExpressionGroup();
|
||||
seg.orLike("us.loginname", pageForm.getSearchKeyword());
|
||||
seg.orLike("us.username", pageForm.getSearchKeyword());
|
||||
cnd.and(seg);
|
||||
}
|
||||
cnd.andEX("year(info.applyTime)", "=", pageForm.getYear());
|
||||
cnd.andEX("info.diseaseId", "=", pageForm.getDiseaseId());
|
||||
cnd.andEX("us.unionId", "=", pageForm.getUnionId());
|
||||
cnd.andEX("us.unitId", "=", pageForm.getUnitId());
|
||||
cnd.andEX("member.aidFundMemberUserType", "=", pageForm.getAidFundMemberUserType());
|
||||
cnd.andEX("type.isMajorDiseases", "=", isMajorDiseases);
|
||||
|
||||
if (StrUtil.isNotBlank(pageForm.getPageOrderName()) && StrUtil.isNotBlank(pageForm.getPageOrderBy())) {
|
||||
cnd.orderBy(pageForm.getPageOrderName(), PageUtil.getOrder(pageForm.getPageOrderBy()));
|
||||
} else {
|
||||
cnd.desc("info.applyTime");
|
||||
}
|
||||
cnd.and("ins.state", "=", 20);
|
||||
cnd.groupBy("info.id");
|
||||
sql.setCondition(cnd);
|
||||
Pagination<NutMap> pagination = medicalApplyService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||
List<NutMap> list = medicalApplyService.getCostList(pagination.getList());
|
||||
for (NutMap map : list) {
|
||||
boolean isMajor = map.getBoolean("isMajorDiseases");
|
||||
map.put("isMajorDiseasesDisplay", isMajor ? "是" : "否");
|
||||
}
|
||||
List<ExcelExportEntity> excelExportEntities = new ArrayList<>();
|
||||
excelExportEntities.add(new ExcelExportEntity("姓名","username",20));
|
||||
excelExportEntities.add(new ExcelExportEntity("工号","loginname",20));
|
||||
excelExportEntities.add(new ExcelExportEntity("单位","unitName",20));
|
||||
excelExportEntities.add(new ExcelExportEntity("单位编码","unitCode",20));
|
||||
excelExportEntities.add(new ExcelExportEntity("工会","unionName",20));
|
||||
excelExportEntities.add(new ExcelExportEntity("工会编码","unionCode",20));
|
||||
excelExportEntities.add(new ExcelExportEntity("疾病名称","diseaseName",20));
|
||||
excelExportEntities.add(new ExcelExportEntity("疾病编码","diseaseCode",20));
|
||||
excelExportEntities.add(new ExcelExportEntity("是否重疾","isMajorDiseasesDisplay",20));
|
||||
excelExportEntities.add(new ExcelExportEntity("申请时间","applyTime",20));
|
||||
excelExportEntities.add(new ExcelExportEntity("申请次数","applyNum",20));
|
||||
excelExportEntities.add(new ExcelExportEntity("住院医疗费总额(不含门诊)","hospitalSumMoney$",20));
|
||||
excelExportEntities.add(new ExcelExportEntity("实际报销总额","reimbursementMoney$",20));
|
||||
excelExportEntities.add(new ExcelExportEntity("(住院医疗)允许报销范围内个人承担部分金额","singleBearMoney$",20));
|
||||
excelExportEntities.add(new ExcelExportEntity("(住院医疗)自费部分金额","personExpenseMoney$",20));
|
||||
excelExportEntities.add(new ExcelExportEntity("重病门诊自费金额","outpatientServiceMoney$",20));
|
||||
excelExportEntities.add(new ExcelExportEntity("非住院肾衰竭治疗、靶向药金额","bxyMoney$",20));
|
||||
excelExportEntities.add(new ExcelExportEntity("合计","totalMoney",20));
|
||||
excelExportEntities.add(new ExcelExportEntity("预测补助金额","forecastSubsidyMoney",20));
|
||||
excelExportEntities.add(new ExcelExportEntity("补助金额","subsidyMoney",20));
|
||||
excelExportEntities.add(new ExcelExportEntity("爱心基金","loveSubsidyMoney",20));
|
||||
|
||||
String exportYear = String.valueOf(pageForm.getYear());
|
||||
if (StrUtil.isBlank(exportYear)) {
|
||||
exportYear = String.valueOf(java.time.Year.now().getValue());
|
||||
}
|
||||
String fileName = exportYear + "年补助人员列表.xlsx";
|
||||
|
||||
try {
|
||||
ExportParams exportParams = new ExportParams();
|
||||
exportParams.setType(ExcelType.XSSF);
|
||||
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, excelExportEntities, list);
|
||||
CommonDownloadUtil.download(fileName, workbook, response);
|
||||
} catch (Exception e) {
|
||||
log.error("导出补助人员列表失败", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
+1
@@ -22,5 +22,6 @@ public class MedicalPageForm extends PageForm {
|
||||
private Boolean approval;
|
||||
private String unionId;
|
||||
private String unitId;
|
||||
private String aidFundMemberUserType;
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user