From 26d300299b901b46f31a2b497caf86cb0b86131c Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Mon, 19 Aug 2024 12:07:03 +0800 Subject: [PATCH 1/8] =?UTF-8?q?=E7=A4=BE=E4=BF=9D=E6=96=B9=E6=A1=88?= =?UTF-8?q?=E4=B8=8A=E4=B8=8B=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../param/InsuranceSchemeReqParam.java | 10 + .../mapper/siarchives/FundSchemeMapper.java | 2 + .../mapper/siarchives/FundSchemeMapper.xml | 16 ++ .../mapper/siarchives/OtherSchemeMapper.java | 2 + .../mapper/siarchives/OtherSchemeMapper.xml | 16 ++ .../mapper/siarchives/SocialSchemeMapper.java | 2 + .../mapper/siarchives/SocialSchemeMapper.xml | 16 ++ .../salary/service/SISchemeService.java | 2 +- .../service/impl/SISchemeServiceImpl.java | 236 +++++++++++++++++- .../engine/salary/web/SISchemeController.java | 2 +- 10 files changed, 296 insertions(+), 8 deletions(-) diff --git a/src/com/engine/salary/entity/sischeme/param/InsuranceSchemeReqParam.java b/src/com/engine/salary/entity/sischeme/param/InsuranceSchemeReqParam.java index ff8e9398c..c9ed91a55 100644 --- a/src/com/engine/salary/entity/sischeme/param/InsuranceSchemeReqParam.java +++ b/src/com/engine/salary/entity/sischeme/param/InsuranceSchemeReqParam.java @@ -41,4 +41,14 @@ public class InsuranceSchemeReqParam { private WelfareTypeEnum welfareTypeEnum; private List ids; + + /** + * 是否修改档案数据为上限或下限 + */ + private Boolean changeData; + + /** + * 校验是否有档案不满足上下限 + */ + private Boolean validate; } \ No newline at end of file diff --git a/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.java b/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.java index d6368f8b4..c7dfa1233 100644 --- a/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.java +++ b/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.java @@ -106,4 +106,6 @@ public interface FundSchemeMapper { * @param endTime */ void updateEndTime(@Param("id")Long id, @Param("endTime")String endTime); + + List listBySchemeId(@Param("fundSchemeId")Long id, @Param("runStatuses")List runStatus); } diff --git a/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.xml b/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.xml index 750d36814..d6089636a 100644 --- a/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.xml +++ b/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.xml @@ -275,6 +275,22 @@ WHERE delete_type = 0 + + update hrsa_fund_archives diff --git a/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.java b/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.java index 6ad9fbe78..fff3bbd3b 100644 --- a/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.java +++ b/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.java @@ -105,4 +105,6 @@ public interface OtherSchemeMapper { * @param endTime */ void updateEndTime(@Param("id")Long id, @Param("endTime")String endTime); + + List listBySchemeId(@Param("schemeId") Long schemeId, @Param("runStatuses") List runStatuses); } diff --git a/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.xml b/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.xml index 7885d7358..2a55be2f2 100644 --- a/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.xml +++ b/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.xml @@ -258,6 +258,22 @@ WHERE delete_type = 0 + + update hrsa_other_archives diff --git a/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.java b/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.java index 6e3e97982..246cb5c78 100644 --- a/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.java +++ b/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.java @@ -136,4 +136,6 @@ public interface SocialSchemeMapper { * @param endTime */ void updateEndTime(@Param("id")Long id, @Param("endTime")String endTime); + + List listBySchemeId(@Param("schemeId")Long schemeId, @Param("runStatuses")List runStatus); } diff --git a/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.xml b/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.xml index 1dba6c07f..9041bde36 100644 --- a/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.xml +++ b/src/com/engine/salary/mapper/siarchives/SocialSchemeMapper.xml @@ -919,6 +919,22 @@ WHERE delete_type = 0 + + update hrsa_social_archives diff --git a/src/com/engine/salary/service/SISchemeService.java b/src/com/engine/salary/service/SISchemeService.java index e465d2740..86eb024ee 100644 --- a/src/com/engine/salary/service/SISchemeService.java +++ b/src/com/engine/salary/service/SISchemeService.java @@ -27,7 +27,7 @@ public interface SISchemeService { Map insertScheme(Map params); - Map update(Map params); + String update(Map params); Map delete(Map params); diff --git a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java index d63bdcd24..349c2fee0 100644 --- a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java @@ -7,10 +7,10 @@ import com.cloudstore.eccom.pc.table.WeaTableColumn; import com.cloudstore.eccom.result.WeaResultMsg; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; +import com.engine.hrmelog.entity.dto.LoggerContext; import com.engine.salary.component.SalaryWeaTable; import com.engine.salary.config.SalaryElogConfig; import com.engine.salary.constant.SalaryDefaultTenantConstant; -import com.engine.hrmelog.entity.dto.LoggerContext; import com.engine.salary.encrypt.EncryptUtil; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.siarchives.param.InsuranceArchivesListParam; @@ -84,6 +84,7 @@ import java.io.InputStream; import java.math.BigDecimal; import java.util.*; import java.util.function.Function; +import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Collectors; @@ -211,13 +212,12 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { } @Override - public Map update(Map params) { + public String update(Map params) { // return commandExecutor.execute(new SISchemeUpdateCmd(params, user)); Map apidatas = new HashMap(16); InsuranceSchemeReqParam insuranceSchemeReqParam = (InsuranceSchemeReqParam) params.get("insuranceSchemeReqParam"); // siSchemeBiz.update(insuranceSchemeReqParam, (long) user.getUID()); - update(insuranceSchemeReqParam, (long) user.getUID()); - return apidatas; + return update(insuranceSchemeReqParam, (long) user.getUID()); } @Override @@ -2484,7 +2484,7 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { * @param updateParam * @param employeeId */ - public void update(InsuranceSchemeReqParam updateParam, long employeeId) { + public String update(InsuranceSchemeReqParam updateParam, long employeeId) { //查询是否存在福利方案 InsuranceSchemePO insuranceSchemePO = getById(updateParam.getInsuranceScheme().getId()); if (Objects.isNull(insuranceSchemePO)) { @@ -2521,12 +2521,29 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { //记录主表操作日志 loggerContext.setNewValues(insuranceSchemePO1); SalaryElogConfig.siSchemeLoggerTemplate.write(loggerContext); + // 查询原本的福利明细信息 + List oldInsuranceSchemeDetails = getInsuranceSchemeDetailMapper().queryInsuranceSchemeDetailList(updateParam.getInsuranceScheme().getId(), IsPaymentEnum.YES.getValue()); + // 本次福利明细 + List insuranceSchemeDetailPOS = InsuranceSchemeBO.convertToInsuranceSchemeDetailPoList(updateParam.getInsuranceSchemeDetailList(), employeeId, insuranceSchemePO.getId()); + + StringBuilder baseLimitStrBuilder = new StringBuilder(); + if (updateParam.getValidate() || updateParam.getChangeData()) { + // 查询本次修改了哪些类型的上下限 + List schemeDetailChangeLimitList = getChanceLimitSchemeDetailList(oldInsuranceSchemeDetails, insuranceSchemeDetailPOS); + // 对于不满足上下限的基数进行自动调整 + autoAdjustBaseByLimit(updateParam, schemeDetailChangeLimitList, insuranceSchemePO, baseLimitStrBuilder); + if (updateParam.getValidate() && StringUtils.isNotBlank(baseLimitStrBuilder.toString())) { + // 是校验且存在校验不通过的档案,返回前端确认 + return baseLimitStrBuilder.toString(); + } + } + //更新福利方案明细表 先删后插 getInsuranceSchemeDetailMapper().batchDeleteByPrimaryIds(Collections.singleton(updateParam.getInsuranceScheme().getId())); //更新明细表 - List insuranceSchemeDetailPOS = InsuranceSchemeBO.convertToInsuranceSchemeDetailPoList(updateParam.getInsuranceSchemeDetailList(), employeeId, insuranceSchemePO.getId()); encryptUtil.encryptList(insuranceSchemeDetailPOS, InsuranceSchemeDetailPO.class); insuranceSchemeDetailPOS.forEach(getInsuranceSchemeDetailMapper()::insert); + //记录明细表操作日志 encryptUtil.decryptList(insuranceSchemeDetailPOS, InsuranceSchemeDetailPO.class); LoggerContext insuranceSchemeDetailContext = new LoggerContext<>(); @@ -2538,7 +2555,214 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { insuranceSchemeDetailContext.setOperatedesc(SalaryI18nUtil.getI18nLabel(0, "福利方案明细")); insuranceSchemeDetailPOS.forEach(insuranceSchemeDetailContext::setNewValues); SalaryElogConfig.siSchemeLoggerTemplate.write(insuranceSchemeDetailContext); + return "success"; + } + /** + * 对于不满足上下限的基数进行自动调整 + * @param schemeDetailChangeLimitList + * @param insuranceSchemePO + */ + private void autoAdjustBaseByLimit(InsuranceSchemeReqParam updateParam, List schemeDetailChangeLimitList, InsuranceSchemePO insuranceSchemePO, StringBuilder baseLimitStrBuilder) { + Map> insuranceSchemeDetailMap = SalaryEntityUtil.group2Map(schemeDetailChangeLimitList, InsuranceSchemeDetailPO::getPaymentScope); + List personChangeDeatilList = insuranceSchemeDetailMap.getOrDefault(PaymentScopeEnum.SCOPE_PERSON.getValue(), Collections.emptyList()); + List companyChangeDetailList = insuranceSchemeDetailMap.getOrDefault(PaymentScopeEnum.SCOPE_COMPANY.getValue(), Collections.emptyList()); + List runStatus = Arrays.asList(EmployeeStatusEnum.STAY_DEL.getValue(), EmployeeStatusEnum.PAYING.getValue(), EmployeeStatusEnum.STAY_DEL.getValue()); + // 获取该方案下的社保福利档案 + Integer welfareType = insuranceSchemePO.getWelfareType(); + if (welfareType.equals(WelfareTypeEnum.SOCIAL_SECURITY.getValue())) { + List needUpdateSocialArchiveList = new ArrayList<>(); + List insuranceArchivesSocialSchemePOS = getSocialSchemeMapper().listBySchemeId(insuranceSchemePO.getId(), runStatus); + encryptUtil.decryptList(insuranceArchivesSocialSchemePOS, InsuranceArchivesSocialSchemePO.class); + // 获取人员信息 + List empIds = insuranceArchivesSocialSchemePOS.stream().map(InsuranceArchivesSocialSchemePO::getEmployeeId).collect(Collectors.toList()); + List employeeList = getSalaryEmployeeService(user).listByIds(empIds); + Map employeeMap = SalaryEntityUtil.convert2Map(employeeList, DataCollectionEmployee::getEmployeeId); + // 社保 + insuranceArchivesSocialSchemePOS.forEach(archive -> { + Boolean[] changeFlag = {false}; + // 个人调整 + String socialPaymentBaseString = archive.getSocialPaymentBaseString(); + if (CollectionUtils.isNotEmpty(personChangeDeatilList)) { + socialPaymentBaseString = adaptWelBaseLimit(socialPaymentBaseString, personChangeDeatilList, changeFlag); + } + // 公司调整 + String socialPaymentComBaseString = archive.getSocialPaymentComBaseString(); + if (CollectionUtils.isNotEmpty(companyChangeDetailList)) { + socialPaymentComBaseString = adaptWelBaseLimit(socialPaymentComBaseString, companyChangeDetailList, changeFlag); + } + if (changeFlag[0]) { + DataCollectionEmployee employee = employeeMap.get(archive.getEmployeeId()); + baseLimitStrBuilder.append(employee == null ? archive.getEmployeeId() : employee.getUsername() + "\n"); + archive.setSocialPaymentBaseString(socialPaymentBaseString); + archive.setSocialPaymentComBaseString(socialPaymentComBaseString); + needUpdateSocialArchiveList.add(archive); + if (updateParam.getChangeData() && CollectionUtils.isNotEmpty(needUpdateSocialArchiveList)) { + // 更新 + encryptUtil.encrypt(archive, InsuranceArchivesSocialSchemePO.class); + getSocialSchemeMapper().updateById(archive); + } + } + }); + } else if (welfareType.equals(WelfareTypeEnum.ACCUMULATION_FUND.getValue())) { + List needUpdateFundArchiveList = new ArrayList<>(); + List insuranceArchivesFundSchemePOS = getFundSchemeMapper().listBySchemeId(insuranceSchemePO.getId(), runStatus); + encryptUtil.decryptList(insuranceArchivesFundSchemePOS, InsuranceArchivesFundSchemePO.class); + // 获取人员信息 + List empIds = insuranceArchivesFundSchemePOS.stream().map(InsuranceArchivesFundSchemePO::getEmployeeId).collect(Collectors.toList()); + List employeeList = getSalaryEmployeeService(user).listByIds(empIds); + Map employeeMap = SalaryEntityUtil.convert2Map(employeeList, DataCollectionEmployee::getEmployeeId); + // 公积金 + insuranceArchivesFundSchemePOS.forEach(archive -> { + Boolean[] changeFlag = {false}; + // 个人调整 + String fundPaymentBaseString = archive.getFundPaymentBaseString(); + if (CollectionUtils.isNotEmpty(personChangeDeatilList)) { + fundPaymentBaseString = adaptWelBaseLimit(fundPaymentBaseString, personChangeDeatilList, changeFlag); + } + // 公司调整 + String fundPaymentComBaseString = archive.getFundPaymentComBaseString(); + if (CollectionUtils.isNotEmpty(companyChangeDetailList)) { + fundPaymentComBaseString = adaptWelBaseLimit(fundPaymentComBaseString, companyChangeDetailList, changeFlag); + } + if (changeFlag[0]) { + DataCollectionEmployee employee = employeeMap.get(archive.getEmployeeId()); + baseLimitStrBuilder.append(employee == null ? archive.getEmployeeId() : employee.getUsername() + "\n"); + archive.setFundPaymentBaseString(fundPaymentBaseString); + archive.setFundPaymentComBaseString(fundPaymentComBaseString); + needUpdateFundArchiveList.add(archive); + if (updateParam.getChangeData() && CollectionUtils.isNotEmpty(needUpdateFundArchiveList)) { + // 更新 + encryptUtil.encrypt(archive, InsuranceArchivesFundSchemePO.class); + getFundSchemeMapper().updateById(archive); + } + } + }); + } else if (welfareType.equals(WelfareTypeEnum.OTHER.getValue())) { + List insuranceArchivesOtherSchemePOS = getOtherSchemeMapper().listBySchemeId(insuranceSchemePO.getId(), runStatus); + encryptUtil.decryptList(insuranceArchivesOtherSchemePOS, InsuranceArchivesOtherSchemePO.class); + List needUpdateOtherArchiveList = new ArrayList<>(); + // 获取人员信息 + List empIds = insuranceArchivesOtherSchemePOS.stream().map(InsuranceArchivesOtherSchemePO::getEmployeeId).collect(Collectors.toList()); + List employeeList = getSalaryEmployeeService(user).listByIds(empIds); + Map employeeMap = SalaryEntityUtil.convert2Map(employeeList, DataCollectionEmployee::getEmployeeId); + // 企业年金或其他福利 + insuranceArchivesOtherSchemePOS.forEach(archive -> { + Boolean[] changeFlag = {false}; + // 个人调整 + String otherPaymentBaseString = archive.getOtherPaymentBaseString(); + if (CollectionUtils.isNotEmpty(personChangeDeatilList)) { + otherPaymentBaseString = adaptWelBaseLimit(otherPaymentBaseString, personChangeDeatilList, changeFlag); + } + // 公司调整的 + String otherPaymentComBaseString = archive.getOtherPaymentComBaseString(); + if (CollectionUtils.isNotEmpty(companyChangeDetailList)) { + otherPaymentComBaseString = adaptWelBaseLimit(otherPaymentComBaseString, companyChangeDetailList, changeFlag); + } + if (changeFlag[0]) { + DataCollectionEmployee employee = employeeMap.get(archive.getEmployeeId()); + baseLimitStrBuilder.append(employee == null ? archive.getEmployeeId() : employee.getUsername() + "\n"); + archive.setOtherPaymentBaseString(otherPaymentBaseString); + archive.setOtherPaymentComBaseString(otherPaymentComBaseString); + needUpdateOtherArchiveList.add(archive); + if (updateParam.getChangeData() && CollectionUtils.isNotEmpty(needUpdateOtherArchiveList)) { + // 更新 + encryptUtil.encrypt(archive, InsuranceArchivesOtherSchemePO.class); + getOtherSchemeMapper().updateById(archive); + } + } + }); + } + } + + public String adaptWelBaseLimit(String paymentBaseString, List insuranceSchemeDetailPOList, Boolean[] changeFlag) { + + if (paymentBaseString == null) { + return null; + } + Map paymentBaseJson = JSON.parseObject(paymentBaseString, new HashMap().getClass()); + if (paymentBaseJson == null) { + return null; + } + Map insuranceSchemeDetailPOMap = SalaryEntityUtil.convert2Map(insuranceSchemeDetailPOList, InsuranceSchemeDetailPO::getInsuranceId); + List insuranceIdList = insuranceSchemeDetailPOList.stream().map(po -> po.getInsuranceId().toString()).collect(Collectors.toList()); + + for (Map.Entry entry : paymentBaseJson.entrySet()) { + + //判断福利值是否为空/数字 + if (entry.getValue() == null || entry.getValue().length() == 0) { + continue; + } else if (!isNumeric(entry.getValue())) { + log.info("福利值非数字!"); + continue; + // throw new SalaryRunTimeException("福利值非数字"); + } + + if (!insuranceIdList.contains(entry.getKey())) { + // 没有修改上下限 + continue; + } + InsuranceSchemeDetailPO insuranceSchemeDetailPO = insuranceSchemeDetailPOMap.get(Long.valueOf(entry.getKey())); + if (insuranceSchemeDetailPO != null) { + + encryptUtil.decrypt(insuranceSchemeDetailPO, InsuranceSchemeDetailPO.class); + String lowerLimit = "0.000".equals(insuranceSchemeDetailPO.getLowerLimit()) ? null : insuranceSchemeDetailPO.getLowerLimit(); + String upperLimit = "0.000".equals(insuranceSchemeDetailPO.getUpperLimit()) ? null : insuranceSchemeDetailPO.getUpperLimit(); + if (lowerLimit != null && lowerLimit.length() > 0 && Double.parseDouble(entry.getValue()) < Double.parseDouble(lowerLimit)) { + //数值低于对应福利明细下限 + entry.setValue(lowerLimit); + changeFlag[0] = true; + } + if (upperLimit != null && upperLimit.length() > 0 && Double.parseDouble(entry.getValue()) > Double.parseDouble(upperLimit)) { + //数值高于对应福利明细上限 + entry.setValue(upperLimit); + changeFlag[0] = true; + } + } + } + return JSON.toJSONString(paymentBaseJson); + } + + /** + * 判断字符串是否为整数或者小数或者负数 + */ + public static boolean isNumeric(String str){ + + Pattern pattern = Pattern.compile("^-?\\d+(\\.\\d+)?$"); + Matcher isNum = pattern.matcher(str); + if (!isNum.matches()) { + return false; + } + return true; + + } + + /** + * 获取修改了哪些明细项的上限和下限 + * @param oldInsuranceSchemeDetails + * @param newInsuranceSchemeDetails + * @return + */ + private List getChanceLimitSchemeDetailList(List oldInsuranceSchemeDetails, List newInsuranceSchemeDetails) { + List schemeDetailChangeLimitList = new ArrayList<>(); + // key: 福利项id-缴纳范围 + Map oldInsuranceSchemeDetailMap = SalaryEntityUtil.convert2Map(oldInsuranceSchemeDetails, d -> d.getInsuranceId() + "-" + d.getPaymentScope()); + newInsuranceSchemeDetails.stream() + .filter(detail -> detail.getIsPayment().equals(NumberUtils.INTEGER_ONE)) + .forEach(detail -> { + boolean changeFlag = false; + InsuranceSchemeDetailPO oldInsuranceSchemeDetailPO = oldInsuranceSchemeDetailMap.get(detail.getInsuranceId() + "-" + detail.getPaymentScope()); + if (!oldInsuranceSchemeDetailPO.getUpperLimit().equals(detail.getUpperLimit())) { + changeFlag = true; + } + if (!oldInsuranceSchemeDetailPO.getLowerLimit().equals(detail.getLowerLimit())) { + changeFlag = true; + } + if (changeFlag) { + schemeDetailChangeLimitList.add(detail); + } + }); + return schemeDetailChangeLimitList; } public int checkBeforeDeleteSocialscheme(Map params) { diff --git a/src/com/engine/salary/web/SISchemeController.java b/src/com/engine/salary/web/SISchemeController.java index bcf226914..89772a896 100644 --- a/src/com/engine/salary/web/SISchemeController.java +++ b/src/com/engine/salary/web/SISchemeController.java @@ -133,7 +133,7 @@ public class SISchemeController { User user = HrmUserVarify.getUser(request, response); Map map = ParamUtil.request2Map(request); map.put("insuranceSchemeReqParam", insuranceSchemeReqParam); - return new ResponseResult, Map>(user).run(getService(user)::update, map); + return new ResponseResult,String>(user).run(getService(user)::update, map); } /** From 984e544503f943b5139dc4978b7b1ee803179bb7 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Mon, 19 Aug 2024 16:27:56 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E7=A4=BE=E4=BF=9D=E6=96=B9=E6=A1=88?= =?UTF-8?q?=E4=B8=8A=E4=B8=8B=E9=99=90=E8=87=AA=E5=8A=A8=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E5=9F=BA=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/service/impl/SISchemeServiceImpl.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java index 349c2fee0..b2c68d3a1 100644 --- a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java @@ -2752,11 +2752,15 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { .forEach(detail -> { boolean changeFlag = false; InsuranceSchemeDetailPO oldInsuranceSchemeDetailPO = oldInsuranceSchemeDetailMap.get(detail.getInsuranceId() + "-" + detail.getPaymentScope()); - if (!oldInsuranceSchemeDetailPO.getUpperLimit().equals(detail.getUpperLimit())) { - changeFlag = true; - } - if (!oldInsuranceSchemeDetailPO.getLowerLimit().equals(detail.getLowerLimit())) { + if (oldInsuranceSchemeDetailPO == null) { changeFlag = true; + } else { + if (!oldInsuranceSchemeDetailPO.getUpperLimit().equals(detail.getUpperLimit())) { + changeFlag = true; + } + if (!oldInsuranceSchemeDetailPO.getLowerLimit().equals(detail.getLowerLimit())) { + changeFlag = true; + } } if (changeFlag) { schemeDetailChangeLimitList.add(detail); From eb5cf04622c780e741048267aec6e17289bb5d04 Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Wed, 28 Aug 2024 11:02:46 +0800 Subject: [PATCH 3/8] fix --- .../engine/salary/mapper/siarchives/FundSchemeMapper.xml | 2 +- .../engine/salary/mapper/siarchives/OtherSchemeMapper.xml | 2 +- src/com/engine/salary/service/impl/SISchemeServiceImpl.java | 6 ++++++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.xml b/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.xml index d6089636a..bb3e6b558 100644 --- a/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.xml +++ b/src/com/engine/salary/mapper/siarchives/FundSchemeMapper.xml @@ -281,7 +281,7 @@ FROM hrsa_fund_archives t left join hrsa_insurance_base_info i on i.fund_archives_id = t.id - WHERE delete_type = 0 + WHERE t.delete_type = 0 AND fund_scheme_id = #{fundSchemeId} AND i.run_status IN diff --git a/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.xml b/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.xml index 2a55be2f2..26db75504 100644 --- a/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.xml +++ b/src/com/engine/salary/mapper/siarchives/OtherSchemeMapper.xml @@ -264,7 +264,7 @@ FROM hrsa_other_archives t left join hrsa_insurance_base_info i on i.other_archives_id = t.id - WHERE delete_type = 0 + WHERE t.delete_type = 0 AND other_scheme_id = #{schemeId} AND i.run_status IN diff --git a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java index b2c68d3a1..699094813 100644 --- a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java @@ -2687,6 +2687,12 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { Map insuranceSchemeDetailPOMap = SalaryEntityUtil.convert2Map(insuranceSchemeDetailPOList, InsuranceSchemeDetailPO::getInsuranceId); List insuranceIdList = insuranceSchemeDetailPOList.stream().map(po -> po.getInsuranceId().toString()).collect(Collectors.toList()); + Set paymentInsuranceIdList = paymentBaseJson.keySet(); + List needAddInsuranceIds = insuranceIdList.stream().filter(insuranceId -> !paymentInsuranceIdList.contains(insuranceId)).collect(Collectors.toList()); + needAddInsuranceIds.stream().forEach(insuranceId -> { + paymentBaseJson.put(insuranceId, "0.00"); + }); + for (Map.Entry entry : paymentBaseJson.entrySet()) { //判断福利值是否为空/数字 From 05a9b9e9b2b0ce67b6b27af3c39411a45978ccf8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Fri, 30 Aug 2024 17:23:36 +0800 Subject: [PATCH 4/8] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=89=B9=E9=87=8F?= =?UTF-8?q?=E6=8F=92=E5=85=A5=E5=A4=A7=E5=B0=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/salary/service/impl/TaxAgentEmpServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/com/engine/salary/service/impl/TaxAgentEmpServiceImpl.java b/src/com/engine/salary/service/impl/TaxAgentEmpServiceImpl.java index c595c9139..4c7796174 100644 --- a/src/com/engine/salary/service/impl/TaxAgentEmpServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxAgentEmpServiceImpl.java @@ -154,7 +154,7 @@ public class TaxAgentEmpServiceImpl extends Service implements TaxAgentEmpServic // 关联表==================================================== // 新增 if (CollectionUtils.isNotEmpty(taxAgentEmployeeAddList)) { - List> partition = Lists.partition(taxAgentEmployeeAddList, 100); + List> partition = Lists.partition(taxAgentEmployeeAddList, 50); partition.forEach(getTaxAgentEmpMapper()::batchInsert); } // 删除 @@ -250,7 +250,7 @@ public class TaxAgentEmpServiceImpl extends Service implements TaxAgentEmpServic // 关联表==================================================== // 新增 if (CollectionUtils.isNotEmpty(taxAgentEmployeeAddList)) { - List> partition = Lists.partition(taxAgentEmployeeAddList, 100); + List> partition = Lists.partition(taxAgentEmployeeAddList, 50); partition.forEach(getTaxAgentEmpMapper()::batchInsert); } // 删除 From fedaf50187eb10fb4c83b01a2171aac10b05f3ba Mon Sep 17 00:00:00 2001 From: Harryxzy Date: Mon, 2 Sep 2024 14:45:03 +0800 Subject: [PATCH 5/8] =?UTF-8?q?=E8=BF=94=E8=81=98=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/action/RehireAction.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/engine/salary/action/RehireAction.java b/src/com/engine/salary/action/RehireAction.java index ac236b54a..a2410578c 100644 --- a/src/com/engine/salary/action/RehireAction.java +++ b/src/com/engine/salary/action/RehireAction.java @@ -107,7 +107,7 @@ public class RehireAction implements Action { Long taxAgentId = taxAgentPOS.get(0).getId(); Long employeeId = Long.valueOf(empIdStr); List salaryArchivePOS = getSalaryArchiveService(user).listSome(SalaryArchivePO.builder().taxAgentId(taxAgentId).employeeId(employeeId).build()); - if (CollectionUtils.isEmpty(salaryArchivePOS)){ + if (CollectionUtils.isEmpty(salaryArchivePOS) || salaryArchivePOS.get(0).getRunStatus().equals(SalaryArchiveStatusEnum.PENDING.getValue())){ // 直接走定薪action生成档案 InitSalaryAction initSalaryAction = new InitSalaryAction(); return initSalaryAction.doSalaryArchiveInit(requestInfo, salaryFieldMap); From b7f9a1653c6d0830053abd0c4deb7ece3f2938cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 2 Sep 2024 17:41:07 +0800 Subject: [PATCH 6/8] =?UTF-8?q?=E7=BA=BF=E7=A8=8B=E6=95=B0=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resource/wiki/扩展功能/hrmSalaryCustom.properties | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/resource/wiki/扩展功能/hrmSalaryCustom.properties b/resource/wiki/扩展功能/hrmSalaryCustom.properties index 6294cc5c3..e23e93c1f 100644 --- a/resource/wiki/扩展功能/hrmSalaryCustom.properties +++ b/resource/wiki/扩展功能/hrmSalaryCustom.properties @@ -1 +1,2 @@ -formulaRunOvertimeThreshold= \ No newline at end of file +formulaRunOvertimeThreshold=100 +personNumberInOneThread = 100 \ No newline at end of file From fa861c71dc1de73fc5b6fb996dab7c0c56ebe267 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 2 Sep 2024 18:11:00 +0800 Subject: [PATCH 7/8] =?UTF-8?q?=E6=94=AF=E6=8C=81=E8=87=AA=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=E5=8D=95=E4=B8=AA=E7=BA=BF=E7=A8=8B=E5=A4=84=E7=90=86?= =?UTF-8?q?=E4=BA=BA=E5=91=98=E6=95=B0=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/service/impl/SalaryAcctResultServiceImpl.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java index 36f19b6f6..4496912a2 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java @@ -68,6 +68,7 @@ import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.util.StopWatch; +import weaver.general.BaseBean; import weaver.hrm.User; import java.math.BigDecimal; @@ -847,7 +848,12 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe ProgressDTO initProgress = new ProgressDTO().setTitle(SalaryI18nUtil.getI18nLabel(97515, "核算中")).setTitleLabelId(97515L).setTotalQuantity(salaryAcctEmployeePOS.size() * 2 + 1).setCalculatedQuantity(0).setProgress(BigDecimal.ZERO).setStatus(true).setMessage(StringUtils.EMPTY); getSalaryAcctProgressService(user).initProgress(SalaryCacheKey.ACCT_PROGRESS + calculateParam.getSalaryAcctRecordId(), initProgress); // 12、对薪资核算人员进行拆分 - List> partition = Lists.partition(salaryAcctEmployeePOS, 100); + String personNumberInOneThread = new BaseBean().getPropValue("hrmSalaryCustom", "personNumberInOneThread"); + int size= 100; + if(StringUtils.isNotBlank(personNumberInOneThread)){ + size = Integer.parseInt(personNumberInOneThread); + } + List> partition = Lists.partition(salaryAcctEmployeePOS, size); // 12.1、监控子线程的任务执行 CountDownLatch childMonitor = new CountDownLatch(partition.size()); // 12.2、记录子线程的执行结果 From 882716b10c722bcdc4bc84d9bca8cd704076880b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Thu, 5 Sep 2024 14:13:43 +0800 Subject: [PATCH 8/8] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=A0=B8=E7=AE=97?= =?UTF-8?q?=E7=BB=93=E6=9E=9C=E5=8F=AF=E8=83=BD=E4=B8=BA=E7=A9=BA=E5=B8=A6?= =?UTF-8?q?=E6=9D=A5=E7=9A=84=E5=BD=B1=E5=93=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/salaryacct/bo/SalaryAcctConsolidatedTaxBO.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctConsolidatedTaxBO.java b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctConsolidatedTaxBO.java index 16e46d6ad..d5155f0ae 100644 --- a/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctConsolidatedTaxBO.java +++ b/src/com/engine/salary/entity/salaryacct/bo/SalaryAcctConsolidatedTaxBO.java @@ -59,8 +59,8 @@ public class SalaryAcctConsolidatedTaxBO { || TaxDeclarationDataIndexConstant.ADD_UP_SPE_ADDI_DEDUCTION.equals(salaryItem.getCode())) { return salaryAcctResults.stream() .filter(e -> Objects.equals(e.getSalaryItemId(), salaryItem.getId())) - .map(SalaryAcctResultPO::getResultValue) .findFirst() + .map(SalaryAcctResultPO::getResultValue) .orElse(""); } // 当前累计收入 = 累计值 + 本次收入 + 上几次收入