From c90c4619ee3fcd34b973a0ce755a42c59140367d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=9C=E5=AD=A6=E6=88=90?= <1274337408@qq.com> Date: Tue, 22 Sep 2026 18:17:11 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8C=BB=E7=96=97=E4=BA=92=E5=8A=A9=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F-=E5=8C=BB=E4=BF=9D=EF=BC=8C=E6=8A=A5=E9=94=80?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=AF=BC=E5=85=A5=EF=BC=9A=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E5=AD=A6=E6=A0=A1=E4=BA=8C=E6=AC=A1=E6=8A=A5=E9=94=80=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=8E=A5=E5=8F=A3=E6=8A=A5=E9=94=99=E5=A4=84=E7=90=86?= =?UTF-8?q?=EF=BC=9B=E5=AF=BC=E5=87=BA=E6=B1=87=E6=80=BB-=E8=A1=A5?= =?UTF-8?q?=E5=8A=A9=E8=AE=A1=E7=AE=97=E9=87=91=E9=A2=9D=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E5=80=BC=E4=BF=AE=E5=A4=8D=EF=BC=88=E5=9B=9B=E9=A1=B9=E4=B9=8B?= =?UTF-8?q?=E5=92=8C=E5=87=8F=E5=8E=BB=E5=AD=A6=E6=A0=A1=E4=BA=8C=E6=AC=A1?= =?UTF-8?q?=E6=8A=A5=E9=94=80=E9=87=91=E9=A2=9D=E5=90=8E=E7=9A=84=E7=BB=93?= =?UTF-8?q?=E6=9E=9C=E5=B8=A6=E5=85=A5=E2=80=98=E6=B1=9F=E8=8B=8F=E6=B2=B3?= =?UTF-8?q?=E6=B5=B7=E5=A4=A7=E5=AD=A6=E8=AE=A1=E7=AE=97=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E2=80=99=E8=AE=A1=E7=AE=97=E4=B8=80=E4=B8=8B=EF=BC=89=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nutz/sickHelp/constant/SickHelpApply.java | 14 +++++- .../controller/SickHelpImportController.java | 20 +++++++- .../SickHelpMedicalInsController.java | 45 +++++++++++++++++- .../platform/sickHelp/medicalIns/index.html | 2 +- .../controller/SickHelpImportController.class | Bin 10418 -> 12814 bytes 5 files changed, 75 insertions(+), 6 deletions(-) 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 031d67ed7432e300d04e68b9927df94f86a6171c..c67c2df5c9b5affc9d2aab0a267d23f9cca7c47a 100644 GIT binary patch delta 4488 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 delta 2679 zcma)8X;hSD6u!?4!#9qfFw6|7D9FAWQYyJ6Ziq0T=8o$KgP|iRgA108rMA1iW|pRz zxs*#PI-r(`nU!g_>8aCi|8-8MA8qE+eczeEQR$pGFyH;|_T2m2`@X~a>f_@rm+qWC zOGJb4!!gUwD2s)X=`WrBrki5Db(EcM>2#a!fTHKQ8z;CuHRD{OB__GMi9`4&(`tbM zMhy`XI` zx-DddU55j);tyMSX;&THq)%t|ndEghgk0iv^gt}@z2W*cB+)5Q8lm#4hG&fR38Hst8Y4F!#=n!8-)?5*Pw z&N;x*E1y03=qLzzjBt6Xq{m}A`l25bb}y~UD0bO;L`}A!5RYpZpkp8giHnYLDMLW^ z`L3m|{3VUGp8R1A4X!3bXB5$rVF5qEU_akvmY*6s0^R$IF4p3|58G9B)*cm%Q`;9Q7ew} zW{s(3HewT3M3mazRVp?^aJa09hhL%53{`<$4J@pJjsQ1v;Fcg@Zg$d~YEEKN z0IR7Btx>xmDIkh&2aFB^x>)@v`Z08c<`6AhYx4A3XX?HT*HTJPR?`$ zyJQ6%JB_m$#J-#apKLdZnI+oGTeFWk(Sfj*9qrXP@D6qdIW`hHDU2S9;LzT`8yfW< zIa$U#j`xCirHmjk^qdn^nwxiujvDDGzZ+(To!FBKSdLk)MBv0qX`}>}I=X)lF!%65#Zn>ZdR(Iu|&GWDVBG>m>EC;gUf7 zuJYlayRCp9k=sd&*iRA0L+zafXuPgE3EW$0IEE%44|@$eMUpYmSOf;*uZ1Ac4!LP; zD>*~fX)Ulgb94OY?5E->Qi%4$ri3^@x+|flAH9^2>PLnWvi-u915Ihym)TL?fqpi|+A-dm_;A1kJ0^9cpJKH&*-)rCtqp~2+i57k_pj90K8%w9yR?FtV7td*&VLM+|_=xx6Q+$Rml=LMo;R?QH On}vO^;#+)A-Twtls_@|e