医疗互助系统-医保,报销数据导入:导入学校二次报销数据接口报错处理;导出汇总-补助计算金额字段值修复(四项之和减去学校二次报销金额后的结果带入‘江苏河海大学计算方法’计算一下);

This commit is contained in:
2026-09-22 18:17:11 +08:00
parent 3a7ef3210f
commit c90c4619ee
5 changed files with 75 additions and 6 deletions
@@ -3,6 +3,7 @@ package io.v.nutz.sickHelp.constant;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import io.v.nutz.sickHelp.model.SickFundMember;
import io.v.nutz.sickHelp.model.SickHelp;
import lombok.Data;
@@ -96,9 +97,20 @@ public class SickHelpApply {
*/
public int howManyYearsDidNotApply(String loginName, Integer year) {
SickFundMember fundMember = dao.fetch(SickFundMember.class, Cnd.where("loginName", "=", loginName));
if (fundMember == null || year == null || StrUtil.isBlank(fundMember.getMutualGoldStartTime())) {
return 0;
}
//起扣年度
DateTime mgsTime = DateUtil.parse(fundMember.getMutualGoldStartTime());
DateTime mgsTime;
try {
mgsTime = DateUtil.parse(fundMember.getMutualGoldStartTime());
} catch (Exception e) {
return 0;
}
if (mgsTime == null) {
return 0;
}
int mutualGoldStartYear = mgsTime.getField(DateField.YEAR);
//补助年度
@@ -209,11 +209,27 @@ public class SickHelpImportController {
sickHelp.setMedicalFourTotalMoney(v.getSxzf());
sickHelp.setSelfPayTotalMoney(v.getLxzf());
sickHelp.setSchoolSecondSubsidyMoney(v.getEcbx());
sickHelp.setSelfPayMoney(v.getCalc());
BigDecimal selfPayMoney = v.getSxzf() != null && v.getEcbx() != null
? v.getSxzf().subtract(v.getEcbx()) : null;
sickHelp.setSelfPayMoney(selfPayMoney);
return sickHelp;
}).filter(v -> v.getSelfPayMoney() == null || (v.getSelfPayMoney() != null && v.getSelfPayMoney().compareTo(BigDecimal.valueOf(10000)) >= 0)).collect(Collectors.toList());
}).filter(v -> v.getSelfPayMoney() == null || (v.getSelfPayMoney() != null && v.getSelfPayMoney().compareTo(BigDecimal.valueOf(10000)) > 0)).collect(Collectors.toList());
List<SickHelp> sickHelps = sickHelpImportService.checkData(collect);
Map<String, SickHelpMedicalIns> medicalInsMap = insList.stream()
.filter(v -> StrUtil.isNotBlank(v.getLoginName()))
.collect(Collectors.toMap(SickHelpMedicalIns::getLoginName, v -> v, (v1, v2) -> v1));
insList.forEach(v -> v.setCalc(null));
sickHelps.forEach(v -> {
SickHelpMedicalIns medicalIns = medicalInsMap.get(v.getLoginName());
if (Boolean.TRUE.equals(v.getValid()) && medicalIns != null && v.getNoLimitSubsidyMoney() != null) {
medicalIns.setCalc(v.getNoLimitSubsidyMoney());
}
});
if (!insList.isEmpty()) {
dao.update(insList, "calc");
}
return Result.success(sickHelps);
}
@@ -12,7 +12,9 @@ import cn.hutool.core.util.StrUtil;
import cn.wizzer.framework.base.Result;
import io.v.nutz.base.page.Pagination;
import io.v.nutz.modules.models.PageForm;
import io.v.nutz.sickHelp.model.SickHelp;
import io.v.nutz.sickHelp.model.SickHelpMedicalIns;
import io.v.nutz.sickHelp.service.SickHelpImportService;
import io.v.nutz.sys.services.SysUserService;
import io.v.nutz.util.ViTool;
import org.apache.poi.ss.usermodel.Workbook;
@@ -40,6 +42,7 @@ import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
@@ -52,6 +55,8 @@ public class SickHelpMedicalInsController {
private Dao dao;
@Inject
private SysUserService sysUserService;
@Inject
private SickHelpImportService sickHelpImportService;
@At("")
@RequiresPermissions("sickHelp.medicalIns")
@@ -275,8 +280,7 @@ public class SickHelpMedicalInsController {
continue;
}
ins.setEcbx(ecbx);
BigDecimal subtract = ins.getSxzf().subtract(ecbx);
ins.setCalc(subtract);
ins.setCalc(null);
successData.add(ins);
success += 1;
} else {
@@ -289,6 +293,7 @@ public class SickHelpMedicalInsController {
if (!successData.isEmpty()) {
dao.update(successData, "ecbx|calc");
refreshCalc(list);
}
HashMap<String, Object> hashMap = new HashMap<>();
hashMap.put("success", success);
@@ -405,6 +410,7 @@ public class SickHelpMedicalInsController {
@Ok("void")
public Result exportXlsx(int year, HttpServletResponse response) {
List<SickHelpMedicalIns> list = dao.query(SickHelpMedicalIns.class, Cnd.where("year", "=", year));
refreshCalc(list);
List<ExcelExportEntity> entities = new ArrayList<>();
entities.add(new ExcelExportEntity("工号", "loginName", 20));
@@ -432,5 +438,40 @@ public class SickHelpMedicalInsController {
return Result.success();
}
/**
* 导出前按补助规则重新计算补助计算额度。
*/
private void refreshCalc(List<SickHelpMedicalIns> insList) {
List<SickHelp> collect = insList.stream().map(v -> {
SickHelp sickHelp = new SickHelp();
sickHelp.setYear(v.getYear());
sickHelp.setLoginName(v.getLoginName());
sickHelp.setUserName(v.getUserName());
sickHelp.setMedicalFourTotalMoney(v.getSxzf());
sickHelp.setSelfPayTotalMoney(v.getLxzf());
sickHelp.setSchoolSecondSubsidyMoney(v.getEcbx());
BigDecimal selfPayMoney = v.getSxzf() != null && v.getEcbx() != null
? v.getSxzf().subtract(v.getEcbx()) : null;
sickHelp.setSelfPayMoney(selfPayMoney);
return sickHelp;
}).filter(v -> v.getSelfPayMoney() == null || v.getSelfPayMoney().compareTo(BigDecimal.valueOf(10000)) > 0)
.collect(Collectors.toList());
List<SickHelp> sickHelps = sickHelpImportService.checkData(collect);
Map<String, SickHelpMedicalIns> medicalInsMap = insList.stream()
.filter(v -> StrUtil.isNotBlank(v.getLoginName()))
.collect(Collectors.toMap(SickHelpMedicalIns::getLoginName, v -> v, (v1, v2) -> v1));
insList.forEach(v -> v.setCalc(null));
sickHelps.forEach(v -> {
SickHelpMedicalIns medicalIns = medicalInsMap.get(v.getLoginName());
if (Boolean.TRUE.equals(v.getValid()) && medicalIns != null && v.getNoLimitSubsidyMoney() != null) {
medicalIns.setCalc(v.getNoLimitSubsidyMoney());
}
});
if (!insList.isEmpty()) {
dao.update(insList, "calc");
}
}
}
@@ -283,7 +283,7 @@ layout("/layouts/platform.html"){
$.post(loc() + '/checkEc').then(res => {
if (res.code === 0) {
this.$confirm('计算补助金额将会自动过滤掉补助计算金额小于10000元的记录, 是否继续?', '提示', {
this.$confirm('计算补助金额将会自动过滤掉补助计算金额不超过10000元的记录, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'