From b28887bde9d8c82dab486bf6a120589fc1ab5459 Mon Sep 17 00:00:00 2001 From: sy Date: Mon, 31 Oct 2022 14:18:53 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E6=96=B9=E6=A1=88=E5=9F=BA=E6=95=B0=E4=B8=8A?= =?UTF-8?q?=E4=B8=8B=E9=99=90v1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/biz/SIArchivesBiz.java | 6 ++++++ src/com/engine/salary/service/impl/SISchemeServiceImpl.java | 2 ++ 2 files changed, 8 insertions(+) diff --git a/src/com/engine/salary/biz/SIArchivesBiz.java b/src/com/engine/salary/biz/SIArchivesBiz.java index c47f1d4d8..3fecfa376 100644 --- a/src/com/engine/salary/biz/SIArchivesBiz.java +++ b/src/com/engine/salary/biz/SIArchivesBiz.java @@ -577,6 +577,8 @@ public class SIArchivesBiz { .paymentOrganization(param.getPaymentOrganization()) .otherPaymentBaseString(paramReq.getPaymentForm()) .build(); + //校验福利基数是否符合上下限要求,todo + InsuranceArchivesOtherSchemePOEncrypt.encryptItem(updateOtherInfo); otherSchemeMapper.updateById(updateOtherInfo); sqlSession.commit(); @@ -621,6 +623,8 @@ public class SIArchivesBiz { .welfareType(paramReq.getWelfareType().getValue()) .employeeId(param.getEmployeeId()) .build(); + //校验福利基数是否符合上下限要求,todo + InsuranceArchivesFundSchemePOEncrypt.encryptItem(updateFundInfo); fundSchemeMapper.updateById(updateFundInfo); @@ -674,6 +678,8 @@ public class SIArchivesBiz { .socialAccount(param.getSchemeAccount()) .paymentOrganization(param.getPaymentOrganization()) .build(); + //校验福利基数是否符合上下限要求,todo + InsuranceArchivesSocialSchemePOEncrypt.encryptItem(updateSocialInfo); socialSchemeMapper.updateById(updateSocialInfo); diff --git a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java index 6da0a557a..da73b65c2 100644 --- a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java @@ -931,6 +931,8 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { insuranceArchivesAccountPO.setFund(insuranceArchivesFundSchemePO); insuranceArchivesAccountPO.setOther(insuranceArchivesOtherSchemePO); insuranceArchivesAccountPO.setBaseInfo(insuranceArchivesBaseInfoPO); + //校验福利基数是否符合上下限要求,todo + insuranceArchivesAccountPOS.add(insuranceArchivesAccountPO); } return isError; From 51412603e5cfd865c43140310ccf20fd47ec6fa1 Mon Sep 17 00:00:00 2001 From: sy Date: Tue, 1 Nov 2022 17:17:33 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88=E5=9F=BA=E6=95=B0=E4=B8=8A?= =?UTF-8?q?=E4=B8=8B=E9=99=90=E7=9B=B8=E5=85=B3=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/biz/SIArchivesBiz.java | 61 ++++++++++++++++--- .../param/InsuranceArchivesFundSaveParam.java | 4 +- .../InsuranceArchivesOtherSaveParam.java | 4 +- .../InsuranceArchivesSocialSaveParam.java | 5 +- .../service/impl/SISchemeServiceImpl.java | 27 +++++++- 5 files changed, 83 insertions(+), 18 deletions(-) diff --git a/src/com/engine/salary/biz/SIArchivesBiz.java b/src/com/engine/salary/biz/SIArchivesBiz.java index 3fecfa376..200e259cb 100644 --- a/src/com/engine/salary/biz/SIArchivesBiz.java +++ b/src/com/engine/salary/biz/SIArchivesBiz.java @@ -86,6 +86,10 @@ public class SIArchivesBiz { return MapperProxyFactory.getProxy(InsuranceBaseInfoMapper.class); } + private InsuranceSchemeDetailMapper getInsuranceSchemeDetailMapper() { + return MapperProxyFactory.getProxy(InsuranceSchemeDetailMapper.class); + } + /** * @param welfareType * @param employeeId @@ -563,7 +567,7 @@ public class SIArchivesBiz { InsuranceArchivesOtherSchemePO updateOtherInfo = InsuranceArchivesOtherSchemePO.builder() .id(oldOtherInfo.getId()) - .otherSchemeId(param.getOtherName()) + .otherSchemeId(param.getOtherSchemeId()) .otherStartTime(param.getOtherStartTime()) .underTake(param.getUnderTake()) .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) @@ -577,8 +581,10 @@ public class SIArchivesBiz { .paymentOrganization(param.getPaymentOrganization()) .otherPaymentBaseString(paramReq.getPaymentForm()) .build(); - //校验福利基数是否符合上下限要求,todo - + //校验福利基数是否符合上下限要求, + if (!checkWelBaseLimit(updateOtherInfo.getOtherSchemeId(),updateOtherInfo.getOtherPaymentBaseString())) { + throw new SalaryRunTimeException("其他福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!"); + } InsuranceArchivesOtherSchemePOEncrypt.encryptItem(updateOtherInfo); otherSchemeMapper.updateById(updateOtherInfo); sqlSession.commit(); @@ -607,7 +613,7 @@ public class SIArchivesBiz { InsuranceArchivesFundSchemePO oldFundInfo = oldFundInfoList.get(0); InsuranceArchivesFundSchemePO updateFundInfo = InsuranceArchivesFundSchemePO.builder() .id(oldFundInfo.getId()) - .fundSchemeId(param.getFundName()) + .fundSchemeId(param.getFundSchemeId()) .fundAccount(param.getFundAccount()) .fundEndTime(param.getFundEndTime()) .fundStartTime(param.getFundStartTime()) @@ -623,8 +629,10 @@ public class SIArchivesBiz { .welfareType(paramReq.getWelfareType().getValue()) .employeeId(param.getEmployeeId()) .build(); - //校验福利基数是否符合上下限要求,todo - + //校验福利基数是否符合上下限要求, + if (!checkWelBaseLimit(updateFundInfo.getFundSchemeId(),updateFundInfo.getFundPaymentBaseString())) { + throw new SalaryRunTimeException("公积金福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!"); + } InsuranceArchivesFundSchemePOEncrypt.encryptItem(updateFundInfo); fundSchemeMapper.updateById(updateFundInfo); @@ -666,7 +674,7 @@ public class SIArchivesBiz { .welfareType(paramReq.getWelfareType().getValue()) .deleteType(DeleteTypeEnum.NOT_DELETED.getValue()) .socialPaymentBaseString(paramReq.getPaymentForm()) - .socialSchemeId(param.getSocialName()) + .socialSchemeId(param.getSocialSchemeId()) .socialEndTime(param.getSocialEndTime()) .socialStartTime(param.getSocialStartTime()) .creator(employeeId) @@ -678,8 +686,10 @@ public class SIArchivesBiz { .socialAccount(param.getSchemeAccount()) .paymentOrganization(param.getPaymentOrganization()) .build(); - //校验福利基数是否符合上下限要求,todo - + //校验福利基数是否符合上下限要求 + if (!checkWelBaseLimit(updateSocialInfo.getSocialSchemeId(),updateSocialInfo.getSocialPaymentBaseString())) { + throw new SalaryRunTimeException("社保福利明细中的基数更新内容不符合相关基数上下限要求,请检查后重试!"); + } InsuranceArchivesSocialSchemePOEncrypt.encryptItem(updateSocialInfo); socialSchemeMapper.updateById(updateSocialInfo); @@ -693,6 +703,39 @@ public class SIArchivesBiz { } } + /** + * 校验福利基数是否符合上下限要求 + * @param primaryId + * @param paymentBaseString + * @return + */ + public Boolean checkWelBaseLimit(Long primaryId, String paymentBaseString) { + + //设置缴纳对象 + Integer paymentScope = 2; + Map paymentBaseJson = JSON.parseObject(paymentBaseString, new HashMap().getClass()); + + for (Map.Entry entry : paymentBaseJson.entrySet()) { + //根据福利方案id、险种id、缴纳对象查询明细 + InsuranceSchemeDetailPO insuranceSchemeDetailPO = getInsuranceSchemeDetailMapper().getByPPI(primaryId, paymentScope, Long.valueOf(entry.getKey())); + if (insuranceSchemeDetailPO == null) { + return false; + } + InsuranceSchemeDetailPOEncrypt.decryptItem(insuranceSchemeDetailPO); + 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)) { + //数值低于对应福利明细下限 + return false; + } + if (upperLimit != null && upperLimit.length() > 0 && Double.parseDouble(entry.getValue()) > Double.parseDouble(upperLimit)) { + //数值高于对应福利明细上限 + return false; + } + } + return true; + } + /** * 档案列表 *

diff --git a/src/com/engine/salary/entity/siarchives/param/InsuranceArchivesFundSaveParam.java b/src/com/engine/salary/entity/siarchives/param/InsuranceArchivesFundSaveParam.java index 493aa38c0..49481c8b4 100644 --- a/src/com/engine/salary/entity/siarchives/param/InsuranceArchivesFundSaveParam.java +++ b/src/com/engine/salary/entity/siarchives/param/InsuranceArchivesFundSaveParam.java @@ -38,8 +38,8 @@ public class InsuranceArchivesFundSaveParam { //公积金方案id private Long fundSchemeId; - //公积金方案id - private Long fundName; + //公积金方案名称 + private String fundName; //公积金账号 private String fundAccount; diff --git a/src/com/engine/salary/entity/siarchives/param/InsuranceArchivesOtherSaveParam.java b/src/com/engine/salary/entity/siarchives/param/InsuranceArchivesOtherSaveParam.java index 3ea6306b3..c3ed3481c 100644 --- a/src/com/engine/salary/entity/siarchives/param/InsuranceArchivesOtherSaveParam.java +++ b/src/com/engine/salary/entity/siarchives/param/InsuranceArchivesOtherSaveParam.java @@ -39,8 +39,8 @@ public class InsuranceArchivesOtherSaveParam { //其他福利方案id private Long otherSchemeId; - //其他福利方案id") - private Long otherName; + //其他福利方案名称 + private String otherName; //其他福利缴纳组织 private Long paymentOrganization; diff --git a/src/com/engine/salary/entity/siarchives/param/InsuranceArchivesSocialSaveParam.java b/src/com/engine/salary/entity/siarchives/param/InsuranceArchivesSocialSaveParam.java index 7b88e610d..6c3cbebc9 100644 --- a/src/com/engine/salary/entity/siarchives/param/InsuranceArchivesSocialSaveParam.java +++ b/src/com/engine/salary/entity/siarchives/param/InsuranceArchivesSocialSaveParam.java @@ -39,9 +39,8 @@ public class InsuranceArchivesSocialSaveParam { //社保方案id private Long socialSchemeId; - //社保方案id - //todo 前端需要调整 - private Long socialName; + //社保方案名称 + private String socialName; //社保账号 private String schemeAccount; diff --git a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java index da73b65c2..3b19fc85f 100644 --- a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java @@ -63,6 +63,7 @@ import org.apache.commons.lang3.math.NumberUtils; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.util.IOUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.apache.xpath.operations.Bool; import weaver.file.ImageFileManager; import weaver.hrm.User; @@ -931,9 +932,31 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { insuranceArchivesAccountPO.setFund(insuranceArchivesFundSchemePO); insuranceArchivesAccountPO.setOther(insuranceArchivesOtherSchemePO); insuranceArchivesAccountPO.setBaseInfo(insuranceArchivesBaseInfoPO); - //校验福利基数是否符合上下限要求,todo + //校验福利基数是否符合上下限要求, + Boolean socialCheckBase = siArchivesBiz.checkWelBaseLimit(insuranceArchivesSocialSchemePO.getSocialSchemeId(), insuranceArchivesSocialSchemePO.getSocialPaymentBaseString()); + Boolean fundCheckBase = siArchivesBiz.checkWelBaseLimit(insuranceArchivesFundSchemePO.getFundSchemeId(), insuranceArchivesFundSchemePO.getFundPaymentBaseString()); + Boolean otherCheckBase = siArchivesBiz.checkWelBaseLimit(insuranceArchivesOtherSchemePO.getOtherSchemeId(), insuranceArchivesOtherSchemePO.getOtherPaymentBaseString()); + if (socialCheckBase && fundCheckBase && otherCheckBase) { + insuranceArchivesAccountPOS.add(insuranceArchivesAccountPO); + } else { + String checkMessage = "该条数据中"; + if (!socialCheckBase) { + checkMessage = checkMessage + "社保福利基数、"; + } + if (!fundCheckBase) { + checkMessage = checkMessage + "公积金福利基数、"; + } + if (!otherCheckBase) { + checkMessage = checkMessage + "其他福利基数、"; + } + checkMessage = checkMessage.substring(0, checkMessage.length() - 1); + + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", rowIndex + SalaryI18nUtil.getI18nLabel(100312, checkMessage + "数值超出相关福利方案的基数上下限要求,不可导入!")); + excelComments.add(errorMessageMap); + isError = true; + } - insuranceArchivesAccountPOS.add(insuranceArchivesAccountPO); } return isError; } From eda168e6178fa771cf52086185435b049734b3cb Mon Sep 17 00:00:00 2001 From: sy Date: Tue, 1 Nov 2022 17:37:47 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88=E5=88=97=E8=A1=A8=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E4=B8=AD=E5=8E=86=E5=8F=B2=E6=95=B0=E6=8D=AE=E5=A4=84?= =?UTF-8?q?=E7=90=86=E9=80=BB=E8=BE=91=E9=A1=BA=E5=BA=8F=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/engine/salary/biz/SIArchivesBiz.java | 6 +++--- .../engine/salary/service/impl/SIArchivesServiceImpl.java | 2 ++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/com/engine/salary/biz/SIArchivesBiz.java b/src/com/engine/salary/biz/SIArchivesBiz.java index 200e259cb..e9636d37e 100644 --- a/src/com/engine/salary/biz/SIArchivesBiz.java +++ b/src/com/engine/salary/biz/SIArchivesBiz.java @@ -817,8 +817,8 @@ public class SIArchivesBiz { SocialSchemeMapper socialSchemeMapper = sqlSession.getMapper(SocialSchemeMapper.class); List page = new ArrayList<>(); PageInfo pageInfo = new PageInfo<>(InsuranceArchivesEmployeePO.class); - //生成福利档案历史基础信息(在福利档案基础信息表为空时) - createOldInsuranceBaseInfo(operateId); +// //生成福利档案历史基础信息(在福利档案基础信息表为空时) +// createOldInsuranceBaseInfo(operateId); //获取福利档案列表数据 if (needAuth) { Collection taxAgentEmployeeIds = param.getTaxAgentEmployeeIds(); @@ -1300,7 +1300,7 @@ public class SIArchivesBiz { /** * 判断是否需要生成历史福利档案基本信息 */ - private void createOldInsuranceBaseInfo(Long creator) { + public void createOldInsuranceBaseInfo(Long creator) { List nowBaseInfoList = getInsuranceBaseInfoMapper().getInsuranceBaseInfoList(); if (nowBaseInfoList.size() == 0) { List addBaseInfoList = new ArrayList<>(); diff --git a/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java b/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java index 4f1513890..65964497c 100644 --- a/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java +++ b/src/com/engine/salary/service/impl/SIArchivesServiceImpl.java @@ -132,6 +132,8 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService public Map listPage(InsuranceArchivesListParam param) { long currentEmployeeId = user.getUID(); + // 1.历史数据处理 + siArchivesBiz.createOldInsuranceBaseInfo(currentEmployeeId); // 2.待减员自动处理 handleStayDelData(currentEmployeeId); // 3.增量数据处理 From 18bf4a8c510837bdb4937c1099951dcf000c82ed Mon Sep 17 00:00:00 2001 From: sy Date: Wed, 2 Nov 2022 11:48:15 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-?= =?UTF-8?q?=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88=E7=A6=8F=E5=88=A9=E5=9F=BA?= =?UTF-8?q?=E6=95=B0=E5=8F=98=E6=9B=B4=E8=A7=A6=E5=8F=91=E5=9F=BA=E6=95=B0?= =?UTF-8?q?=E4=B8=8A=E4=B8=8B=E9=99=90=E7=BA=A6=E6=9D=9F=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E9=80=BB=E8=BE=91=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/biz/SIArchivesBiz.java | 31 +++++++++++++++++++ .../service/impl/SISchemeServiceImpl.java | 3 ++ 2 files changed, 34 insertions(+) diff --git a/src/com/engine/salary/biz/SIArchivesBiz.java b/src/com/engine/salary/biz/SIArchivesBiz.java index e9636d37e..0f759cb0c 100644 --- a/src/com/engine/salary/biz/SIArchivesBiz.java +++ b/src/com/engine/salary/biz/SIArchivesBiz.java @@ -62,6 +62,8 @@ import weaver.hrm.User; 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; @@ -711,16 +713,31 @@ public class SIArchivesBiz { */ public Boolean checkWelBaseLimit(Long primaryId, String paymentBaseString) { + if (primaryId ==null || paymentBaseString == null) { + return true; + } //设置缴纳对象 Integer paymentScope = 2; Map paymentBaseJson = JSON.parseObject(paymentBaseString, new HashMap().getClass()); + if (paymentBaseJson == null) { + return true; + } for (Map.Entry entry : paymentBaseJson.entrySet()) { + + //判断福利值是否为空/数字 + if (entry.getValue() == null || entry.getValue().length() == 0) { + continue; + } else if (!isNumeric(entry.getValue())) { + return false; + } + //根据福利方案id、险种id、缴纳对象查询明细 InsuranceSchemeDetailPO insuranceSchemeDetailPO = getInsuranceSchemeDetailMapper().getByPPI(primaryId, paymentScope, Long.valueOf(entry.getKey())); if (insuranceSchemeDetailPO == null) { return false; } + InsuranceSchemeDetailPOEncrypt.decryptItem(insuranceSchemeDetailPO); String lowerLimit = "0.000".equals(insuranceSchemeDetailPO.getLowerLimit()) ? null : insuranceSchemeDetailPO.getLowerLimit(); String upperLimit = "0.000".equals(insuranceSchemeDetailPO.getUpperLimit()) ? null : insuranceSchemeDetailPO.getUpperLimit(); @@ -1326,4 +1343,18 @@ public class SIArchivesBiz { } + + /** + * 判断字符串是否为整数或者小数或者负数 + */ + public static boolean isNumeric(String str){ + + Pattern pattern = Pattern.compile("^-?\\d+(\\.\\d+)?$"); + Matcher isNum = pattern.matcher(str); + if (!isNum.matches()) { + return false; + } + return true; + + } } diff --git a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java index 3b19fc85f..c5689b45f 100644 --- a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java @@ -934,8 +934,11 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { insuranceArchivesAccountPO.setBaseInfo(insuranceArchivesBaseInfoPO); //校验福利基数是否符合上下限要求, Boolean socialCheckBase = siArchivesBiz.checkWelBaseLimit(insuranceArchivesSocialSchemePO.getSocialSchemeId(), insuranceArchivesSocialSchemePO.getSocialPaymentBaseString()); + Boolean fundCheckBase = siArchivesBiz.checkWelBaseLimit(insuranceArchivesFundSchemePO.getFundSchemeId(), insuranceArchivesFundSchemePO.getFundPaymentBaseString()); + Boolean otherCheckBase = siArchivesBiz.checkWelBaseLimit(insuranceArchivesOtherSchemePO.getOtherSchemeId(), insuranceArchivesOtherSchemePO.getOtherPaymentBaseString()); + if (socialCheckBase && fundCheckBase && otherCheckBase) { insuranceArchivesAccountPOS.add(insuranceArchivesAccountPO); } else {