diff --git a/src/main/java/io/v/nutz/sickHelp/constant/SickHelpApply.java b/src/main/java/io/v/nutz/sickHelp/constant/SickHelpApply.java index efb6dcb..add7558 100644 --- a/src/main/java/io/v/nutz/sickHelp/constant/SickHelpApply.java +++ b/src/main/java/io/v/nutz/sickHelp/constant/SickHelpApply.java @@ -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); //补助年度 diff --git a/src/main/java/io/v/nutz/sickHelp/controller/SickHelpImportController.java b/src/main/java/io/v/nutz/sickHelp/controller/SickHelpImportController.java index 17a91c0..9502fe1 100644 --- a/src/main/java/io/v/nutz/sickHelp/controller/SickHelpImportController.java +++ b/src/main/java/io/v/nutz/sickHelp/controller/SickHelpImportController.java @@ -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 sickHelps = sickHelpImportService.checkData(collect); + + Map 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); } diff --git a/src/main/java/io/v/nutz/sickHelp/controller/SickHelpMedicalInsController.java b/src/main/java/io/v/nutz/sickHelp/controller/SickHelpMedicalInsController.java index f7caee2..b425713 100644 --- a/src/main/java/io/v/nutz/sickHelp/controller/SickHelpMedicalInsController.java +++ b/src/main/java/io/v/nutz/sickHelp/controller/SickHelpMedicalInsController.java @@ -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 hashMap = new HashMap<>(); hashMap.put("success", success); @@ -405,6 +410,7 @@ public class SickHelpMedicalInsController { @Ok("void") public Result exportXlsx(int year, HttpServletResponse response) { List list = dao.query(SickHelpMedicalIns.class, Cnd.where("year", "=", year)); + refreshCalc(list); List entities = new ArrayList<>(); entities.add(new ExcelExportEntity("工号", "loginName", 20)); @@ -432,5 +438,40 @@ public class SickHelpMedicalInsController { return Result.success(); } + /** + * 导出前按补助规则重新计算补助计算额度。 + */ + private void refreshCalc(List insList) { + List 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 sickHelps = sickHelpImportService.checkData(collect); + Map 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"); + } + } + } diff --git a/src/main/resources/views/platform/sickHelp/medicalIns/index.html b/src/main/resources/views/platform/sickHelp/medicalIns/index.html index 7ddc784..c9e3f07 100644 --- a/src/main/resources/views/platform/sickHelp/medicalIns/index.html +++ b/src/main/resources/views/platform/sickHelp/medicalIns/index.html @@ -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' diff --git a/target/classes/io/v/nutz/sickHelp/controller/SickHelpImportController.class b/target/classes/io/v/nutz/sickHelp/controller/SickHelpImportController.class index 031d67e..c67c2df 100644 Binary files a/target/classes/io/v/nutz/sickHelp/controller/SickHelpImportController.class and b/target/classes/io/v/nutz/sickHelp/controller/SickHelpImportController.class differ