From c94f1b24a41ef868a74a1bccd8a08110ca4c524a Mon Sep 17 00:00:00 2001 From: sy Date: Tue, 22 Aug 2023 14:47:48 +0800 Subject: [PATCH] =?UTF-8?q?=E8=96=AA=E9=85=AC=E7=B3=BB=E7=BB=9F-=E7=A6=8F?= =?UTF-8?q?=E5=88=A9=E6=A1=A3=E6=A1=88=EF=BC=8C=E6=96=B0=E5=A2=9E=E5=92=8C?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88action?= =?UTF-8?q?=E3=80=81=E7=A6=8F=E5=88=A9=E6=A1=A3=E6=A1=88=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=96=EF=BC=88=E4=BB=85=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E8=AE=BE=E7=BD=AE=E5=80=BC=E7=9A=84=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../action/CheckEditSIArchiveAction.java | 136 +++++++++++++++++ .../salary/action/EditSIArchiveAction.java | 135 +++++++++++++++++ .../service/impl/SISchemeServiceImpl.java | 141 ++++++++++++++---- 3 files changed, 381 insertions(+), 31 deletions(-) create mode 100644 src/com/engine/salary/action/CheckEditSIArchiveAction.java create mode 100644 src/com/engine/salary/action/EditSIArchiveAction.java diff --git a/src/com/engine/salary/action/CheckEditSIArchiveAction.java b/src/com/engine/salary/action/CheckEditSIArchiveAction.java new file mode 100644 index 000000000..799237644 --- /dev/null +++ b/src/com/engine/salary/action/CheckEditSIArchiveAction.java @@ -0,0 +1,136 @@ +package com.engine.salary.action; + +import com.engine.common.util.ServiceUtil; +import com.engine.salary.entity.siarchives.param.SIArchiveImportActionParam; +import com.engine.salary.service.SISchemeService; +import com.engine.salary.service.impl.SISchemeServiceImpl; +import com.engine.salary.util.SalaryEntityUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import weaver.conn.RecordSet; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.interfaces.workflow.action.Action; +import weaver.soa.workflow.request.Property; +import weaver.soa.workflow.request.RequestInfo; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @Author: sy + * @Description: 编辑福利档案的前置校验 + * @Date: 2023/8/21 + **/ +@Slf4j +public class CheckEditSIArchiveAction implements Action { + + private SISchemeService getSISchemeService(User user) { + return ServiceUtil.getService(SISchemeServiceImpl.class,user); + } + private String tableName; + + + public String getTableName() { + return tableName; + } + + public void setTableName(String tableName) { + this.tableName = tableName; + } + + @Override + public String execute(RequestInfo requestInfo) { + try { + Property[] properties = requestInfo.getMainTableInfo().getProperty(); + Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, + property -> Util.null2String(property.getValue()))); + + RecordSet rs = new RecordSet(); + + String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?"; + rs.executeQuery(queryImageId, requestInfo.getWorkflowid()); + + List list = new ArrayList<>(); + while (rs.next()) { + String processField = rs.getString("processfield"); + String salaryName = rs.getString("salaryname"); + String value = fieldMap.get(processField); + list.add(new CheckEditSIArchiveAction.SalaryField(processField, salaryName, value)); + } + List> importData = new ArrayList<>(); + importData.add(SalaryEntityUtil.convert2Map(list, CheckEditSIArchiveAction.SalaryField::getSalaryName, CheckEditSIArchiveAction.SalaryField::getValue)); + //福利执行状态 + String runStatus = list.stream().filter(f -> f.salaryName.equals("档案状态")).findFirst().map(CheckEditSIArchiveAction.SalaryField::getValue).orElse("1"); + + SIArchiveImportActionParam build = SIArchiveImportActionParam.builder() + .importDatas(importData) + .runStatus(runStatus) + .build(); + + //操作人 + String uid = list.stream().filter(f -> f.salaryName.equals("操作人")).findFirst().map(CheckEditSIArchiveAction.SalaryField::getValue).orElse("1"); + Map map = getSISchemeService(new User(Integer.parseInt(uid))).checkSIArchiveAdd(build); + + List errorNotice = (List) map.get("errorNotice"); + if (CollectionUtils.isNotEmpty(errorNotice)) { + log.error("福利档案编辑内容检查存在异常 requestId:{} ,参数:{}, map:{}", requestInfo.getRequestid(), build, map); + List> excelComments = (List>) map.get("errorNotice"); + StringBuilder message = new StringBuilder(""); + for (Map comments : excelComments) { + message.append(comments.get("message")).append("\n"); + } + requestInfo.getRequestManager().setMessage(message.toString()); + return FAILURE_AND_CONTINUE; + } + } catch (Exception e) { + log.error("福利档案编辑内容检查异常", e); + requestInfo.getRequestManager().setMessage(e.getMessage()); + return FAILURE_AND_CONTINUE; + } + return SUCCESS; + } + + + class SalaryField { + + private String processField; + + private String salaryName; + + private String value; + + public String getProcessField() { + return processField; + } + + public void setProcessField(String processField) { + this.processField = processField; + } + + public String getSalaryName() { + return salaryName; + } + + public void setSalaryName(String salaryName) { + this.salaryName = salaryName; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public SalaryField(String processField, String salaryName, String value) { + this.processField = processField; + this.salaryName = salaryName; + this.value = value; + } + } +} diff --git a/src/com/engine/salary/action/EditSIArchiveAction.java b/src/com/engine/salary/action/EditSIArchiveAction.java new file mode 100644 index 000000000..6d9fc599c --- /dev/null +++ b/src/com/engine/salary/action/EditSIArchiveAction.java @@ -0,0 +1,135 @@ +package com.engine.salary.action; + +import com.engine.common.util.ServiceUtil; +import com.engine.salary.entity.siarchives.param.SIArchiveImportActionParam; +import com.engine.salary.service.SISchemeService; +import com.engine.salary.service.impl.SISchemeServiceImpl; +import com.engine.salary.util.SalaryEntityUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import weaver.conn.RecordSet; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.interfaces.workflow.action.Action; +import weaver.soa.workflow.request.Property; +import weaver.soa.workflow.request.RequestInfo; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @Author: sy + * @Description: 编辑福利档案 + * @Date: 2023/8/21 + **/ +@Slf4j +public class EditSIArchiveAction implements Action { + private SISchemeService getSISchemeService(User user) { + return ServiceUtil.getService(SISchemeServiceImpl.class,user); + } + private String tableName; + + + public String getTableName() { + return tableName; + } + + public void setTableName(String tableName) { + this.tableName = tableName; + } + + @Override + public String execute(RequestInfo requestInfo) { + try { + Property[] properties = requestInfo.getMainTableInfo().getProperty(); + Map fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName, + property -> Util.null2String(property.getValue()))); + + RecordSet rs = new RecordSet(); + + String queryImageId = "select salaryname,processfield from " + tableName + " where workflowid = ?"; + rs.executeQuery(queryImageId, requestInfo.getWorkflowid()); + + List list = new ArrayList<>(); + while (rs.next()) { + String processField = rs.getString("processfield"); + String salaryName = rs.getString("salaryname"); + String value = fieldMap.get(processField); + list.add(new EditSIArchiveAction.SalaryField(processField, salaryName, value)); + } + List> importData = new ArrayList<>(); + importData.add(SalaryEntityUtil.convert2Map(list, EditSIArchiveAction.SalaryField::getSalaryName, EditSIArchiveAction.SalaryField::getValue)); + //福利执行状态 + String runStatus = list.stream().filter(f -> f.salaryName.equals("档案状态")).findFirst().map(EditSIArchiveAction.SalaryField::getValue).orElse("1"); + + SIArchiveImportActionParam build = SIArchiveImportActionParam.builder() + .importDatas(importData) + .runStatus(runStatus) + .build(); + + //操作人 + String uid = list.stream().filter(f -> f.salaryName.equals("操作人")).findFirst().map(EditSIArchiveAction.SalaryField::getValue).orElse("1"); + Map map = getSISchemeService(new User(Integer.parseInt(uid))).addSIArchive(build); + + List errorNotice = (List) map.get("errorNotice"); + if (CollectionUtils.isNotEmpty(errorNotice)) { + log.error("福利档案编辑存在异常 requestId:{} ,参数:{}, map:{}", requestInfo.getRequestid(), build, map); + List> excelComments = (List>) map.get("errorNotice"); + StringBuilder message = new StringBuilder(""); + for (Map comments : excelComments) { + message.append(comments.get("message")).append("\n"); + } + requestInfo.getRequestManager().setMessage(message.toString()); + return FAILURE_AND_CONTINUE; + } + } catch (Exception e) { + log.error("福利档案编辑异常", e); + requestInfo.getRequestManager().setMessage(e.getMessage()); + return FAILURE_AND_CONTINUE; + } + return SUCCESS; + } + + + class SalaryField { + + private String processField; + + private String salaryName; + + private String value; + + public String getProcessField() { + return processField; + } + + public void setProcessField(String processField) { + this.processField = processField; + } + + public String getSalaryName() { + return salaryName; + } + + public void setSalaryName(String salaryName) { + this.salaryName = salaryName; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public SalaryField(String processField, String salaryName, String value) { + this.processField = processField; + this.salaryName = salaryName; + this.value = value; + } + } +} diff --git a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java index dca7cd0d5..b1edd58c4 100644 --- a/src/com/engine/salary/service/impl/SISchemeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SISchemeServiceImpl.java @@ -56,6 +56,7 @@ import com.engine.salary.util.page.SalaryPageUtil; import com.engine.salary.util.valid.ValidUtil; import com.google.common.collect.Lists; import com.google.common.collect.Maps; +import com.mzlion.core.utils.BeanUtils; import dm.jdbc.util.IdGenerator; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -1093,28 +1094,50 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { if (employeeId == null) { return null; } + Long paymentOrg = paymentNameIdMap.get((String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91325, "个税扣缴义务人")).get(SalaryI18nUtil.getI18nLabel(91325, "个税扣缴义务人"))); + List oldSocialSchemeInfos = getSocialSchemeMapper().getSocialByEmployeeIdAndPayOrg(InsuranceArchivesEmployeePO + .builder() + .employeeId(employeeId) + .paymentOrganization(paymentOrg) + .build()); + InsuranceArchivesSocialSchemePO oldSocialSchemePO = new InsuranceArchivesSocialSchemePO(); InsuranceArchivesSocialSchemePO insuranceArchivesSocialSchemePO = new InsuranceArchivesSocialSchemePO(); + + //设置社保账号、起始缴纳月、最后缴纳月 + String socialAccount = (String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91324, "社保账号")).get(SalaryI18nUtil.getI18nLabel(91324, "社保账号")); + Long socialSchemeId = schemeNameIdMap.get((String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91323, "社保方案名称")).get(SalaryI18nUtil.getI18nLabel(91323, "社保方案名称"))); + HashMap oldSocialBaseMap = new HashMap<>(); + if (oldSocialSchemeInfos.size() > 0) { + oldSocialSchemePO = oldSocialSchemeInfos.get(0); + encryptUtil.decrypt(oldSocialSchemePO, InsuranceArchivesSocialSchemePO.class); + BeanUtils.copyProperties(oldSocialSchemePO, insuranceArchivesSocialSchemePO); + //社保基数 + oldSocialBaseMap = JSON.parseObject(oldSocialSchemePO.getSocialPaymentBaseString(), new HashMap().getClass()); + } + insuranceArchivesSocialSchemePO.setId(IdGenerator.generate()); - insuranceArchivesSocialSchemePO.setSocialAccount((String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91324, "社保账号")).get(SalaryI18nUtil.getI18nLabel(91324, "社保账号"))); - insuranceArchivesSocialSchemePO.setSocialSchemeId(schemeNameIdMap.get((String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91323, "社保方案名称")).get(SalaryI18nUtil.getI18nLabel(91323, "社保方案名称")))); + if (StringUtils.isNotBlank(socialAccount)) { + insuranceArchivesSocialSchemePO.setSocialAccount(socialAccount); + } + if (socialSchemeId != null) { + insuranceArchivesSocialSchemePO.setSocialSchemeId(socialSchemeId); + } String socialStartDate = (String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91319, "社保起始缴纳月")).get(SalaryI18nUtil.getI18nLabel(91319, "社保起始缴纳月")); if (StringUtils.isNotBlank(socialStartDate) && socialStartDate.length() > 7) { socialStartDate = socialStartDate.substring(0, 7); - } else if (StringUtils.isBlank(socialStartDate)){ - socialStartDate = null; + insuranceArchivesSocialSchemePO.setSocialStartTime(socialStartDate); } - insuranceArchivesSocialSchemePO.setSocialStartTime(socialStartDate); + String socialEndDate = (String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91320, "社保最后缴纳月")).get(SalaryI18nUtil.getI18nLabel(91320, "社保最后缴纳月")); if (StringUtils.isNotBlank(socialEndDate) && socialEndDate.length() > 7) { socialEndDate = socialEndDate.substring(0, 7); - } else if (StringUtils.isBlank(socialEndDate)){ - socialEndDate = null; + insuranceArchivesSocialSchemePO.setSocialEndTime(socialEndDate); } - insuranceArchivesSocialSchemePO.setSocialEndTime(socialEndDate); + insuranceArchivesSocialSchemePO.setTenantKey(""); insuranceArchivesSocialSchemePO.setWelfareType(WelfareTypeEnum.SOCIAL_SECURITY.getValue()); insuranceArchivesSocialSchemePO.setUpdateTime(new Date()); - insuranceArchivesSocialSchemePO.setPaymentOrganization(paymentNameIdMap.get((String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91325, "个税扣缴义务人")).get(SalaryI18nUtil.getI18nLabel(91325, "个税扣缴义务人")))); + insuranceArchivesSocialSchemePO.setPaymentOrganization(paymentOrg); insuranceArchivesSocialSchemePO.setNonPayment(NonPaymentEnum.YES.getValue()); insuranceArchivesSocialSchemePO.setCreator(creator); insuranceArchivesSocialSchemePO.setCreateTime(new Date()); @@ -1133,7 +1156,11 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { } if (findElement(singleAccount, welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(100293, "申报基数")) != null) { String itemValue = (String) findElement(singleAccount, welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(100293, "申报基数")).get(welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(100293, "申报基数")); - socialPaymentBase.put(String.valueOf(insuranceId), StringUtils.isBlank(itemValue) ? "0" : itemValue); + if (StringUtils.isNotBlank(itemValue)) { + socialPaymentBase.put(String.valueOf(insuranceId), itemValue); + } else if (oldSocialBaseMap != null && StringUtils.isNotBlank(oldSocialBaseMap.get(String.valueOf(insuranceId)))) { + socialPaymentBase.put(String.valueOf(insuranceId), oldSocialBaseMap.get(String.valueOf(insuranceId))); + } } } insuranceArchivesSocialSchemePO.setSocialPaymentBaseString(JSON.toJSONString(socialPaymentBase)); @@ -1147,32 +1174,56 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { if (employeeId == null) { return null; } + Long paymentOrg = paymentNameIdMap.get((String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91325, "个税扣缴义务人")).get(SalaryI18nUtil.getI18nLabel(91325, "个税扣缴义务人"))); + List oldFundSchemeInfos = getFundSchemeMapper().getFundByEmployeeIdAndPayOrg(InsuranceArchivesEmployeePO + .builder() + .employeeId(employeeId) + .paymentOrganization(paymentOrg) + .build()); + InsuranceArchivesFundSchemePO oldFundSchemePO = new InsuranceArchivesFundSchemePO(); InsuranceArchivesFundSchemePO insuranceArchivesFundSchemePO = new InsuranceArchivesFundSchemePO(); + + //设置公积金账号、起始缴纳月、最后缴纳月 + String fundAccount = (String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91486, "公积金账号")).get(SalaryI18nUtil.getI18nLabel(91486, "公积金账号")); + String supplementFundAccount = (String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91487, "补充公积金账号")).get(SalaryI18nUtil.getI18nLabel(91487, "补充公积金账号")); + Long fundSchemeId = schemeNameIdMap.get((String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91485, "公积金方案名称")).get(SalaryI18nUtil.getI18nLabel(91485, "公积金方案名称"))); + HashMap oldFundBaseMap = new HashMap<>(); + if (oldFundSchemeInfos.size() > 0) { + oldFundSchemePO = oldFundSchemeInfos.get(0); + encryptUtil.decrypt(oldFundSchemePO, InsuranceArchivesFundSchemePO.class); + BeanUtils.copyProperties(oldFundSchemePO, insuranceArchivesFundSchemePO); + //社保基数 + oldFundBaseMap = JSON.parseObject(oldFundSchemePO.getFundPaymentBaseString(), new HashMap().getClass()); + } + insuranceArchivesFundSchemePO.setId(IdGenerator.generate()); insuranceArchivesFundSchemePO.setCreator(creator); insuranceArchivesFundSchemePO.setTenantKey(""); insuranceArchivesFundSchemePO.setCreateTime(new Date()); insuranceArchivesFundSchemePO.setUpdateTime(new Date()); - insuranceArchivesFundSchemePO.setFundSchemeId(schemeNameIdMap.get((String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91485, "公积金方案名称")).get(SalaryI18nUtil.getI18nLabel(91485, "公积金方案名称")))); - insuranceArchivesFundSchemePO.setFundAccount((String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91486, "公积金账号")).get(SalaryI18nUtil.getI18nLabel(91486, "公积金账号"))); - insuranceArchivesFundSchemePO.setSupplementFundAccount((String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91487, "补充公积金账号")).get(SalaryI18nUtil.getI18nLabel(91487, "补充公积金账号"))); + if (fundSchemeId != null) { + insuranceArchivesFundSchemePO.setFundSchemeId(fundSchemeId); + } + if (StringUtils.isNotBlank(fundAccount)) { + insuranceArchivesFundSchemePO.setFundAccount(fundAccount); + } + if (StringUtils.isNotBlank(supplementFundAccount)) { + insuranceArchivesFundSchemePO.setSupplementFundAccount(supplementFundAccount); + } String fundStartDate = (String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91483, "公积金起始缴纳月")).get(SalaryI18nUtil.getI18nLabel(91483, "公积金起始缴纳月")); if (StringUtils.isNotBlank(fundStartDate) && fundStartDate.length() > 7) { fundStartDate = fundStartDate.substring(0, 7); - } else if (StringUtils.isBlank(fundStartDate)){ - fundStartDate = null; + insuranceArchivesFundSchemePO.setFundStartTime(fundStartDate); } - insuranceArchivesFundSchemePO.setFundStartTime(fundStartDate); String fundEndDate = (String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91484, "公积金最后缴纳月")).get(SalaryI18nUtil.getI18nLabel(91484, "公积金最后缴纳月")); if (StringUtils.isNotBlank(fundEndDate) && fundEndDate.length() > 7) { fundEndDate = fundEndDate.substring(0, 7); - } else if (StringUtils.isBlank(fundEndDate)){ - fundEndDate = null; + insuranceArchivesFundSchemePO.setFundEndTime(fundEndDate); } - insuranceArchivesFundSchemePO.setFundEndTime(fundEndDate); + insuranceArchivesFundSchemePO.setWelfareType(WelfareTypeEnum.ACCUMULATION_FUND.getValue()); - insuranceArchivesFundSchemePO.setPaymentOrganization(paymentNameIdMap.get((String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91488, "个税扣缴义务人")).get(SalaryI18nUtil.getI18nLabel(91488, "个税扣缴义务人")))); + insuranceArchivesFundSchemePO.setPaymentOrganization(paymentOrg); insuranceArchivesFundSchemePO.setNonPayment(NonPaymentEnum.YES.getValue()); insuranceArchivesFundSchemePO.setDeleteType(DeleteTypeEnum.NOT_DELETED.getValue()); insuranceArchivesFundSchemePO.setUnderTake(UndertakerEnum.SCOPE_PERSON.getValue()); @@ -1189,7 +1240,12 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { } if (findElement(singleAccount, welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(100293, "申报基数")) != null) { String itemValue = (String) findElement(singleAccount, welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(100293, "申报基数")).get(welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(100293, "申报基数")); - socialPaymentBase.put(String.valueOf(insuranceId), StringUtils.isBlank(itemValue) ? "0" : itemValue); + if (StringUtils.isNotBlank(itemValue)) { + socialPaymentBase.put(String.valueOf(insuranceId), itemValue); + } else if (oldFundBaseMap != null && StringUtils.isNotBlank(oldFundBaseMap.get(String.valueOf(insuranceId)))) { + socialPaymentBase.put(String.valueOf(insuranceId), oldFundBaseMap.get(String.valueOf(insuranceId))); + } + } } insuranceArchivesFundSchemePO.setFundPaymentBaseString(JSON.toJSONString(socialPaymentBase)); @@ -1202,29 +1258,47 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { if (employeeId == null) { return null; - } + }Long paymentOrg = paymentNameIdMap.get((String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91325, "个税扣缴义务人")).get(SalaryI18nUtil.getI18nLabel(91325, "个税扣缴义务人"))); + List oldOtherSchemeInfos = getOtherSchemeMapper().getOtherByEmployeeIdAndPayOrg(InsuranceArchivesEmployeePO + .builder() + .employeeId(employeeId) + .paymentOrganization(paymentOrg) + .build()); + InsuranceArchivesOtherSchemePO oldOtherSchemePO = new InsuranceArchivesOtherSchemePO(); InsuranceArchivesOtherSchemePO insuranceArchivesOtherSchemePO = new InsuranceArchivesOtherSchemePO(); + + //设置其他福利方案、起始缴纳月、最后缴纳月 + Long otherSchemeId = schemeNameIdMap.get((String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91496, "其他福利方案名称")).get(SalaryI18nUtil.getI18nLabel(91496, "其他福利方案名称"))); + HashMap oldOtherBaseMap = new HashMap<>(); + if (oldOtherSchemeInfos.size() > 0) { + oldOtherSchemePO = oldOtherSchemeInfos.get(0); + encryptUtil.decrypt(oldOtherSchemePO, InsuranceArchivesOtherSchemePO.class); + BeanUtils.copyProperties(oldOtherSchemePO, insuranceArchivesOtherSchemePO); + //社保基数 + oldOtherBaseMap = JSON.parseObject(oldOtherSchemePO.getOtherPaymentBaseString(), new HashMap().getClass()); + } + insuranceArchivesOtherSchemePO.setId(IdGenerator.generate()); insuranceArchivesOtherSchemePO.setCreator(creator); insuranceArchivesOtherSchemePO.setTenantKey(""); insuranceArchivesOtherSchemePO.setCreateTime(new Date()); insuranceArchivesOtherSchemePO.setUpdateTime(new Date()); - insuranceArchivesOtherSchemePO.setOtherSchemeId(schemeNameIdMap.get((String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91496, "其他福利方案名称")).get(SalaryI18nUtil.getI18nLabel(91496, "其他福利方案名称")))); + if (otherSchemeId != null) { + insuranceArchivesOtherSchemePO.setOtherSchemeId(otherSchemeId); + } String otherStartDate = (String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91490, "其他福利起始缴纳月")).get(SalaryI18nUtil.getI18nLabel(91490, "其他福利起始缴纳月")); if (StringUtils.isNotBlank(otherStartDate) && otherStartDate.length() > 7) { otherStartDate = otherStartDate.substring(0, 7); - } else if (StringUtils.isBlank(otherStartDate)){ - otherStartDate = null; + insuranceArchivesOtherSchemePO.setOtherStartTime(otherStartDate); } - insuranceArchivesOtherSchemePO.setOtherStartTime(otherStartDate); + String otherEndDate = (String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91494, "其他福利最后缴纳月")).get(SalaryI18nUtil.getI18nLabel(91494, "其他福利最后缴纳月")); if (StringUtils.isNotBlank(otherEndDate) && otherEndDate.length() > 7) { otherEndDate = otherEndDate.substring(0, 7); - } else if (StringUtils.isBlank(otherEndDate)){ - otherEndDate = null; + insuranceArchivesOtherSchemePO.setOtherEndTime(otherEndDate); } - insuranceArchivesOtherSchemePO.setOtherEndTime(otherEndDate); - insuranceArchivesOtherSchemePO.setPaymentOrganization(paymentNameIdMap.get((String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91497, "个税扣缴义务人")).get(SalaryI18nUtil.getI18nLabel(91497, "个税扣缴义务人")))); + + insuranceArchivesOtherSchemePO.setPaymentOrganization(paymentOrg); insuranceArchivesOtherSchemePO.setWelfareType(WelfareTypeEnum.OTHER.getValue()); insuranceArchivesOtherSchemePO.setNonPayment(NonPaymentEnum.YES.getValue()); insuranceArchivesOtherSchemePO.setDeleteType(DeleteTypeEnum.NOT_DELETED.getValue()); @@ -1241,7 +1315,12 @@ public class SISchemeServiceImpl extends Service implements SISchemeService { } if (findElement(singleAccount, welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(100293, "申报基数")) != null) { String itemValue = (String) findElement(singleAccount, welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(100293, "申报基数")).get(welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(100293, "申报基数")); - socialPaymentBase.put(String.valueOf(insuranceId), StringUtils.isBlank(itemValue) ? "0" : itemValue); + if (StringUtils.isNotBlank(itemValue)) { + socialPaymentBase.put(String.valueOf(insuranceId), itemValue); + } else if (oldOtherBaseMap != null && StringUtils.isNotBlank(oldOtherBaseMap.get(String.valueOf(insuranceId)))) { + socialPaymentBase.put(String.valueOf(insuranceId), oldOtherBaseMap.get(String.valueOf(insuranceId))); + } + } } insuranceArchivesOtherSchemePO.setOtherPaymentBaseString(JSON.toJSONString(socialPaymentBase));