Merge branch 'release/2.9.10.2312.02' into release/个税版本

# Conflicts:
#	src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java
This commit is contained in:
钱涛 2024-01-17 14:14:32 +08:00
commit 4846cfcf18
82 changed files with 3062 additions and 478 deletions

View File

@ -0,0 +1,39 @@
ALTER TABLE hrsa_social_archives ADD social_payment_com_base_string varchar2(4000) NULL;
/
ALTER TABLE hrsa_fund_archives ADD fund_payment_com_base_string varchar2(4000) NULL;
/
ALTER TABLE hrsa_other_archives ADD other_payment_com_base_string varchar2(4000) NULL;
/
ALTER TABLE hrsa_bill_detail ADD social_payment_com_base_string varchar2(4000) NULL;
/
ALTER TABLE hrsa_bill_detail ADD fund_payment_com_base_string varchar2(4000) NULL;
/
ALTER TABLE hrsa_bill_detail ADD other_payment_com_base_string varchar2(4000) NULL;
/
ALTER TABLE hrsa_bill_detail_temp ADD social_payment_com_base_string varchar2(4000) NULL;
/
ALTER TABLE hrsa_bill_detail_temp ADD fund_payment_com_base_string varchar2(4000) NULL;
/
ALTER TABLE hrsa_bill_detail_temp ADD other_payment_com_base_string varchar2(4000) NULL;
/
ALTER TABLE hrsa_excel_bill_detail ADD social_payment_com_base_string varchar2(4000) NULL;
/
ALTER TABLE hrsa_excel_bill_detail ADD fund_payment_com_base_string varchar2(4000) NULL;
/
ALTER TABLE hrsa_excel_bill_detail ADD other_payment_com_base_string varchar2(4000) NULL;
/
ALTER TABLE hrsa_insurance_base_history ADD payment_scope varchar2(10) NULL;
/

View File

@ -0,0 +1,3 @@
alter table hrsa_salary_item add width int null;
/

View File

@ -0,0 +1,39 @@
ALTER TABLE hrsa_social_archives ADD social_payment_com_base_string varchar2(4000) NULL;
/
ALTER TABLE hrsa_fund_archives ADD fund_payment_com_base_string varchar2(4000) NULL;
/
ALTER TABLE hrsa_other_archives ADD other_payment_com_base_string varchar2(4000) NULL;
/
ALTER TABLE hrsa_bill_detail ADD social_payment_com_base_string varchar2(4000) NULL;
/
ALTER TABLE hrsa_bill_detail ADD fund_payment_com_base_string varchar2(4000) NULL;
/
ALTER TABLE hrsa_bill_detail ADD other_payment_com_base_string varchar2(4000) NULL;
/
ALTER TABLE hrsa_bill_detail_temp ADD social_payment_com_base_string varchar2(4000) NULL;
/
ALTER TABLE hrsa_bill_detail_temp ADD fund_payment_com_base_string varchar2(4000) NULL;
/
ALTER TABLE hrsa_bill_detail_temp ADD other_payment_com_base_string varchar2(4000) NULL;
/
ALTER TABLE hrsa_excel_bill_detail ADD social_payment_com_base_string varchar2(4000) NULL;
/
ALTER TABLE hrsa_excel_bill_detail ADD fund_payment_com_base_string varchar2(4000) NULL;
/
ALTER TABLE hrsa_excel_bill_detail ADD other_payment_com_base_string varchar2(4000) NULL;
/
ALTER TABLE hrsa_insurance_base_history ADD payment_scope varchar2(10) NULL;
/

View File

@ -0,0 +1,3 @@
alter table hrsa_salary_item add width int null;
/

View File

@ -0,0 +1,39 @@
ALTER TABLE hrsa_social_archives ADD social_payment_com_base_string varchar2(4000) NULL;
/
ALTER TABLE hrsa_fund_archives ADD fund_payment_com_base_string varchar2(4000) NULL;
/
ALTER TABLE hrsa_other_archives ADD other_payment_com_base_string varchar2(4000) NULL;
/
ALTER TABLE hrsa_bill_detail ADD social_payment_com_base_string varchar2(4000) NULL;
/
ALTER TABLE hrsa_bill_detail ADD fund_payment_com_base_string varchar2(4000) NULL;
/
ALTER TABLE hrsa_bill_detail ADD other_payment_com_base_string varchar2(4000) NULL;
/
ALTER TABLE hrsa_bill_detail_temp ADD social_payment_com_base_string varchar2(4000) NULL;
/
ALTER TABLE hrsa_bill_detail_temp ADD fund_payment_com_base_string varchar2(4000) NULL;
/
ALTER TABLE hrsa_bill_detail_temp ADD other_payment_com_base_string varchar2(4000) NULL;
/
ALTER TABLE hrsa_excel_bill_detail ADD social_payment_com_base_string varchar2(4000) NULL;
/
ALTER TABLE hrsa_excel_bill_detail ADD fund_payment_com_base_string varchar2(4000) NULL;
/
ALTER TABLE hrsa_excel_bill_detail ADD other_payment_com_base_string varchar2(4000) NULL;
/
ALTER TABLE hrsa_insurance_base_history ADD payment_scope varchar2(10) NULL;
/

View File

@ -0,0 +1,3 @@
alter table hrsa_salary_item add width int null;
/

View File

@ -0,0 +1,17 @@
ALTER TABLE hrsa_social_archives ADD COLUMN social_payment_com_base_string text NULL;
ALTER TABLE hrsa_fund_archives ADD COLUMN fund_payment_com_base_string text NULL;
ALTER TABLE hrsa_other_archives ADD COLUMN other_payment_com_base_string text NULL;
ALTER TABLE hrsa_bill_detail ADD COLUMN social_payment_com_base_string text NULL;
ALTER TABLE hrsa_bill_detail ADD COLUMN fund_payment_com_base_string text NULL;
ALTER TABLE hrsa_bill_detail ADD COLUMN other_payment_com_base_string text NULL;
ALTER TABLE hrsa_bill_detail_temp ADD COLUMN social_payment_com_base_string text NULL;
ALTER TABLE hrsa_bill_detail_temp ADD COLUMN fund_payment_com_base_string text NULL;
ALTER TABLE hrsa_bill_detail_temp ADD COLUMN other_payment_com_base_string text NULL;
ALTER TABLE hrsa_excel_bill_detail ADD COLUMN social_payment_com_base_string text NULL;
ALTER TABLE hrsa_excel_bill_detail ADD COLUMN fund_payment_com_base_string text NULL;
ALTER TABLE hrsa_excel_bill_detail ADD COLUMN other_payment_com_base_string text NULL;
ALTER TABLE hrsa_insurance_base_history ADD COLUMN payment_scope varchar(10) NULL;

View File

@ -0,0 +1 @@
alter table hrsa_salary_item add width int null;

View File

@ -0,0 +1,30 @@
ALTER TABLE hrsa_social_archives ADD social_payment_com_base_string varchar2(4000) NULL
/
ALTER TABLE hrsa_fund_archives ADD fund_payment_com_base_string varchar2(4000) NULL
/
ALTER TABLE hrsa_other_archives ADD other_payment_com_base_string varchar2(4000) NULL
/
ALTER TABLE hrsa_bill_detail ADD social_payment_com_base_string varchar2(4000) NULL
/
ALTER TABLE hrsa_bill_detail ADD fund_payment_com_base_string varchar2(4000) NULL
/
ALTER TABLE hrsa_bill_detail ADD other_payment_com_base_string varchar2(4000) NULL
/
ALTER TABLE hrsa_bill_detail_temp ADD social_payment_com_base_string varchar2(4000) NULL
/
ALTER TABLE hrsa_bill_detail_temp ADD fund_payment_com_base_string varchar2(4000) NULL
/
ALTER TABLE hrsa_bill_detail_temp ADD other_payment_com_base_string varchar2(4000) NULL
/
ALTER TABLE hrsa_excel_bill_detail ADD social_payment_com_base_string varchar2(4000) NULL
/
ALTER TABLE hrsa_excel_bill_detail ADD fund_payment_com_base_string varchar2(4000) NULL
/
ALTER TABLE hrsa_excel_bill_detail ADD other_payment_com_base_string varchar2(4000) NULL
/
ALTER TABLE hrsa_insurance_base_history ADD payment_scope varchar2(10) NULL
/

View File

@ -0,0 +1,2 @@
alter table hrsa_salary_item add width int null
/

View File

@ -0,0 +1,17 @@
ALTER TABLE hrsa_social_archives ADD COLUMN social_payment_com_base_string varchar(4000) NULL;
ALTER TABLE hrsa_fund_archives ADD COLUMN fund_payment_com_base_string varchar(4000) NULL;
ALTER TABLE hrsa_other_archives ADD COLUMN other_payment_com_base_string varchar(4000) NULL;
ALTER TABLE hrsa_bill_detail ADD COLUMN social_payment_com_base_string varchar(4000) NULL;
ALTER TABLE hrsa_bill_detail ADD COLUMN fund_payment_com_base_string varchar(4000) NULL;
ALTER TABLE hrsa_bill_detail ADD COLUMN other_payment_com_base_string varchar(4000) NULL;
ALTER TABLE hrsa_bill_detail_temp ADD COLUMN social_payment_com_base_string varchar(4000) NULL;
ALTER TABLE hrsa_bill_detail_temp ADD COLUMN fund_payment_com_base_string varchar(4000) NULL;
ALTER TABLE hrsa_bill_detail_temp ADD COLUMN other_payment_com_base_string varchar(4000) NULL;
ALTER TABLE hrsa_excel_bill_detail ADD COLUMN social_payment_com_base_string varchar(4000) NULL;
ALTER TABLE hrsa_excel_bill_detail ADD COLUMN fund_payment_com_base_string varchar(4000) NULL;
ALTER TABLE hrsa_excel_bill_detail ADD COLUMN other_payment_com_base_string varchar(4000) NULL;
ALTER TABLE hrsa_insurance_base_history ADD COLUMN payment_scope varchar(10) NULL;

View File

@ -0,0 +1 @@
alter table hrsa_salary_item add width int null;

View File

@ -0,0 +1,30 @@
ALTER TABLE hrsa_social_archives ADD social_payment_com_base_string varchar(4000) NULL
GO
ALTER TABLE hrsa_fund_archives ADD fund_payment_com_base_string varchar(4000) NULL
GO
ALTER TABLE hrsa_other_archives ADD other_payment_com_base_string varchar(4000) NULL
GO
ALTER TABLE hrsa_bill_detail ADD social_payment_com_base_string varchar(4000) NULL
GO
ALTER TABLE hrsa_bill_detail ADD fund_payment_com_base_string varchar(4000) NULL
GO
ALTER TABLE hrsa_bill_detail ADD other_payment_com_base_string varchar(4000) NULL
GO
ALTER TABLE hrsa_bill_detail_temp ADD social_payment_com_base_string varchar(4000) NULL
GO
ALTER TABLE hrsa_bill_detail_temp ADD fund_payment_com_base_string varchar(4000) NULL
GO
ALTER TABLE hrsa_bill_detail_temp ADD other_payment_com_base_string varchar(4000) NULL
GO
ALTER TABLE hrsa_excel_bill_detail ADD social_payment_com_base_string varchar(4000) NULL
GO
ALTER TABLE hrsa_excel_bill_detail ADD fund_payment_com_base_string varchar(4000) NULL
GO
ALTER TABLE hrsa_excel_bill_detail ADD other_payment_com_base_string varchar(4000) NULL
GO
ALTER TABLE hrsa_insurance_base_history ADD payment_scope varchar(10) NULL
GO

View File

@ -0,0 +1,2 @@
alter table hrsa_salary_item add width int null
GO

View File

@ -0,0 +1,39 @@
ALTER TABLE hrsa_social_archives ADD social_payment_com_base_string varchar2(4000) NULL;
/
ALTER TABLE hrsa_fund_archives ADD fund_payment_com_base_string varchar2(4000) NULL;
/
ALTER TABLE hrsa_other_archives ADD other_payment_com_base_string varchar2(4000) NULL;
/
ALTER TABLE hrsa_bill_detail ADD social_payment_com_base_string varchar2(4000) NULL;
/
ALTER TABLE hrsa_bill_detail ADD fund_payment_com_base_string varchar2(4000) NULL;
/
ALTER TABLE hrsa_bill_detail ADD other_payment_com_base_string varchar2(4000) NULL;
/
ALTER TABLE hrsa_bill_detail_temp ADD social_payment_com_base_string varchar2(4000) NULL;
/
ALTER TABLE hrsa_bill_detail_temp ADD fund_payment_com_base_string varchar2(4000) NULL;
/
ALTER TABLE hrsa_bill_detail_temp ADD other_payment_com_base_string varchar2(4000) NULL;
/
ALTER TABLE hrsa_excel_bill_detail ADD social_payment_com_base_string varchar2(4000) NULL;
/
ALTER TABLE hrsa_excel_bill_detail ADD fund_payment_com_base_string varchar2(4000) NULL;
/
ALTER TABLE hrsa_excel_bill_detail ADD other_payment_com_base_string varchar2(4000) NULL;
/
ALTER TABLE hrsa_insurance_base_history ADD payment_scope varchar2(10) NULL;
/

View File

@ -0,0 +1,3 @@
alter table hrsa_salary_item add width int null;
/

View File

@ -1,12 +1,14 @@
package com.engine.salary.action;
import com.engine.common.util.ServiceUtil;
import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO;
import com.engine.salary.mapper.taxagent.TaxAgentMapper;
import com.engine.salary.service.SalaryAcctRecordService;
import com.engine.salary.service.impl.SalaryAcctRecordServiceImpl;
import com.engine.salary.util.db.MapperProxyFactory;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import weaver.general.BaseBean;
import weaver.general.Util;
import weaver.hrm.User;
import weaver.interfaces.workflow.action.Action;
@ -59,8 +61,19 @@ public class FileSalaryAcctRecordAction implements Action {
}
User user = new User();
user.setUid(1);
Long acctRecordId = Long.valueOf(salaryAcctRecordId);
SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(acctRecordId);
if (salaryAcctRecordPO == null) {
requestInfo.getRequestManager().setMessage("薪资核算记录不存在,或已被删除");
return FAILURE_AND_CONTINUE;
}
if (salaryAcctRecordPO.getStatus() > 1) {
BaseBean baseBean = new BaseBean();
baseBean.writeLog("核算记录归档action 该核算记录已经归档:" + salaryAcctRecordPO.getId());
return SUCCESS;
}
try {
getSalaryAcctRecordService(user).file(Long.valueOf(salaryAcctRecordId));
getSalaryAcctRecordService(user).file(acctRecordId);
} catch (Exception e) {
requestInfo.getRequestManager().setMessage(e.getMessage());
return FAILURE_AND_CONTINUE;

View File

@ -0,0 +1,118 @@
package com.engine.salary.action;
import com.engine.common.util.ServiceUtil;
import com.engine.salary.biz.SalarySendInfoBiz;
import com.engine.salary.entity.salaryBill.param.SalarySendGrantParam;
import com.engine.salary.entity.salaryBill.po.SalarySendPO;
import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO;
import com.engine.salary.service.SalaryAcctRecordService;
import com.engine.salary.service.SalaryBillService;
import com.engine.salary.service.SalarySendService;
import com.engine.salary.service.SalaryTemplateService;
import com.engine.salary.service.impl.SalaryAcctRecordServiceImpl;
import com.engine.salary.service.impl.SalaryBillServiceImpl;
import com.engine.salary.service.impl.SalarySendServiceImpl;
import com.engine.salary.service.impl.SalaryTemplateServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
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.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @author Harryxzy
* @ClassName FileSalaryAcctRecordAction
* @date 2023/12/13 9:17
* @description 工资单发放action
*/
@Slf4j
public class SendSalaryAction implements Action {
private SalaryAcctRecordService getSalaryAcctRecordService(User user) {
return ServiceUtil.getService(SalaryAcctRecordServiceImpl.class, user);
}
private SalarySendService getSalarySendService(User user) {
return ServiceUtil.getService(SalarySendServiceImpl.class, user);
}
private SalaryTemplateService getSalaryTemplateService(User user) {
return ServiceUtil.getService(SalaryTemplateServiceImpl.class, user);
}
private SalarySendInfoBiz salarySendInfoMapper = new SalarySendInfoBiz();
private SalaryBillService getSalaryBillService(User user) {
return ServiceUtil.getService(SalaryBillServiceImpl.class, user);
}
/**
* 发放id核算记录id工资单id流程字段名
*/
private String idFieldName;
/**
* 根据什么id核算记录id工资单id发工资单
*/
private String sendBy;
@Override
public String execute(RequestInfo requestInfo) {
Property[] properties = requestInfo.getMainTableInfo().getProperty();
Map<String, String> fieldMap = Arrays.stream(properties).collect(Collectors.toMap(Property::getName,
property -> Util.null2String(property.getValue())));
String idStr = fieldMap.get(idFieldName);
if (StringUtils.isBlank(idStr)) {
requestInfo.getRequestManager().setMessage("核算记录id或工资单id不能为空");
return FAILURE_AND_CONTINUE;
}
User user = new User();
user.setUid(1);
Long id = Long.valueOf(idStr);
SalarySendPO salarySendPO;
if(!org.h2.util.StringUtils.isNullOrEmpty(sendBy) && sendBy.equals("salaryAcctRecordId")) {
// 根据核算记录id发
SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(id);
if (salaryAcctRecordPO == null) {
requestInfo.getRequestManager().setMessage("薪资核算记录不存在,或已被删除");
return FAILURE_AND_CONTINUE;
}
if (salaryAcctRecordPO.getStatus() == 1) {
requestInfo.getRequestManager().setMessage("核算记录还未归档,请先归档");
return FAILURE_AND_CONTINUE;
}
// 获取工资单id
List<SalarySendPO> salarySendPOList = getSalarySendService(user).listSome(SalarySendPO.builder().salaryAccountingId(id).sendStatus(0).build());
salarySendPO = salarySendPOList.get(0);
} else if (!org.h2.util.StringUtils.isNullOrEmpty(sendBy) && sendBy.equals("salarySendId")) {
// 根据工资单发
salarySendPO = getSalarySendService(user).getById(id);
} else {
requestInfo.getRequestManager().setMessage("请先维护根据什么id发放工资单的sendBy参数");
return FAILURE_AND_CONTINUE;
}
if (salarySendPO == null || salarySendPO.getId() == null) {
requestInfo.getRequestManager().setMessage("工资单不存在或已被删除!");
return FAILURE_AND_CONTINUE;
}
try {
// 全部发放
getSalaryBillService(user).grant(SalarySendGrantParam.builder().salarySendId(salarySendPO.getId()).build());
} catch (Exception e) {
requestInfo.getRequestManager().setMessage(e.getMessage());
return FAILURE_AND_CONTINUE;
}
return SUCCESS;
}
}

View File

@ -7,7 +7,6 @@ import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
import com.engine.salary.cache.SalaryCacheKey;
import com.engine.salary.constant.SalaryDefaultTenantConstant;
import com.engine.salary.encrypt.AESEncryptUtil;
import com.engine.salary.encrypt.EncryptUtil;
import com.engine.salary.entity.progress.ProgressDTO;
import com.engine.salary.entity.siaccount.dto.InsuranceAccountViewListDTO;
@ -631,11 +630,13 @@ public class SIAccountBiz extends Service {
}
public InsuranceAccountDetailPO accountOther(InsuranceAccountDetailPO insuranceAccountDetailPO, InsuranceArchivesAccountPO accountPO, String billMonth, String tenantKey) {
boolean welBaseDiffSign = siArchivesBiz.isDiffWelBase();
if (accountPO.getOther() != null) {
InsuranceArchivesOtherSchemePO otherPO = accountPO.getOther();
insuranceAccountDetailPO.setOtherPayOrg(otherPO.getPaymentOrganization());
insuranceAccountDetailPO.setOtherSchemeId(otherPO.getOtherSchemeId());
insuranceAccountDetailPO.setOtherPaymentBaseString(otherPO.getOtherPaymentBaseString());
insuranceAccountDetailPO.setOtherPaymentComBaseString(otherPO.getOtherPaymentComBaseString());
//判断是否在起始缴纳月和最后缴纳月之间
Boolean inDataRange = SalaryDateUtil.monthInRange(insuranceAccountDetailPO.getBillMonth(), otherPO.getOtherStartTime(), otherPO.getOtherEndTime());
if ((Objects.equals(NonPaymentEnum.YES.getValue(), otherPO.getNonPayment()) || otherPO.getNonPayment() == null) && otherPO.getOtherSchemeId() != null && inDataRange) {
@ -719,7 +720,13 @@ public class SIAccountBiz extends Service {
.collect(
Collectors.toMap(InsuranceSchemeDetailPO::getInsuranceId, Function.identity()));
//档案中包含的基数信息
HashMap<String, String> archivesCom = JSON.parseObject(otherPO.getOtherPaymentBaseString(), new HashMap<String, String>().getClass());
// HashMap<String, String> archivesCom = JSON.parseObject(otherPO.getOtherPaymentBaseString(), new HashMap<String, String>().getClass());
HashMap<String, String> archivesCom = new HashMap<>();
if (welBaseDiffSign) {
archivesCom = JSON.parseObject(otherPO.getOtherPaymentComBaseString(), new HashMap<String, String>().getClass());
} else {
archivesCom = JSON.parseObject(otherPO.getOtherPaymentBaseString(), new HashMap<String, String>().getClass());
}
//需要核算其他的福利id 单位
List<Long> needArchivesCom = new ArrayList<>();
if (archivesCom != null) {
@ -742,10 +749,11 @@ public class SIAccountBiz extends Service {
List<BigDecimal> otherComList = new ArrayList<>();
Map<String, String> otherComJsonMap = new HashMap<>();
HashMap<String, String> finalArchivesCom = archivesCom;
needArchivesCom.stream().forEach(e -> {
InsuranceSchemeDetailPO po = otherCom.get(e);
BigDecimal paymentProportion = new BigDecimal(StringUtils.isBlank(po.getPaymentProportion()) ? "0" : po.getPaymentProportion()).divide(new BigDecimal("100"));
BigDecimal paymentNum = new BigDecimal((ObjectUtils.isEmpty(archivesCom) || StringUtils.isBlank(archivesCom.get(String.valueOf(e)))) ? "0" : archivesCom.get(String.valueOf(e)));
BigDecimal paymentNum = new BigDecimal((ObjectUtils.isEmpty(finalArchivesCom) || StringUtils.isBlank(finalArchivesCom.get(String.valueOf(e)))) ? "0" : finalArchivesCom.get(String.valueOf(e)));
BigDecimal fixedCost = StringUtils.isBlank(po.getFixedCost()) ? new BigDecimal("0") : new BigDecimal(po.getFixedCost());
Integer newScale = po.getValidNum() == null ? 0 : po.getValidNum();
// BigDecimal result = SalaryEntityUtil.carryRule(newScale, po.getRententionRule(), paymentNum.multiply(paymentProportion).add(fixedCost));
@ -787,6 +795,7 @@ public class SIAccountBiz extends Service {
public InsuranceAccountDetailPO accountFund(InsuranceAccountDetailPO insuranceAccountDetailPO, InsuranceArchivesAccountPO accountPO, String billMonth, String tenantKey) {
boolean welBaseDiffSign = siArchivesBiz.isDiffWelBase();
if (accountPO.getFund() != null) {
InsuranceArchivesFundSchemePO fundPO = accountPO.getFund();
insuranceAccountDetailPO.setFundPayOrg(fundPO.getPaymentOrganization());
@ -794,6 +803,7 @@ public class SIAccountBiz extends Service {
insuranceAccountDetailPO.setSupplementFundAccount(fundPO.getSupplementFundAccount());
insuranceAccountDetailPO.setFundSchemeId(fundPO.getFundSchemeId());
insuranceAccountDetailPO.setFundPaymentBaseString(fundPO.getFundPaymentBaseString());
insuranceAccountDetailPO.setFundPaymentComBaseString(fundPO.getFundPaymentComBaseString());
//判断是否在起始缴纳月和最后缴纳月之间
Boolean inDataRange = SalaryDateUtil.monthInRange(insuranceAccountDetailPO.getBillMonth(), fundPO.getFundStartTime(), fundPO.getFundEndTime());
if ((NonPaymentEnum.YES.getValue() == fundPO.getNonPayment() || fundPO.getNonPayment() == null) && fundPO.getFundSchemeId() != null && inDataRange) {
@ -876,7 +886,13 @@ public class SIAccountBiz extends Service {
.collect(
Collectors.toMap(InsuranceSchemeDetailPO::getInsuranceId, Function.identity()));
//档案中包含的基数信息
HashMap<String, String> archivesCom = JSON.parseObject(fundPO.getFundPaymentBaseString(), new HashMap<String, String>().getClass());
// HashMap<String, String> archivesCom = JSON.parseObject(fundPO.getFundPaymentBaseString(), new HashMap<String, String>().getClass());
HashMap<String, String> archivesCom = new HashMap<>();
if (welBaseDiffSign) {
archivesCom = JSON.parseObject(fundPO.getFundPaymentComBaseString(), new HashMap<String, String>().getClass());
} else {
archivesCom = JSON.parseObject(fundPO.getFundPaymentBaseString(), new HashMap<String, String>().getClass());
}
//需要核算公积金的福利id 单位
List<Long> needArchivesCom = new ArrayList<>();
if (archivesCom != null) {
@ -899,10 +915,11 @@ public class SIAccountBiz extends Service {
List<BigDecimal> fundComList = new ArrayList<>();
Map<String, String> fundComJsonMap = new HashMap<>();
HashMap<String, String> finalArchivesCom = archivesCom;
needArchivesCom.stream().forEach(e -> {
InsuranceSchemeDetailPO po = fundCom.get(e);
BigDecimal paymentProportion = new BigDecimal(StringUtils.isBlank(po.getPaymentProportion()) ? "0" : po.getPaymentProportion()).divide(new BigDecimal("100"));
BigDecimal paymentNum = new BigDecimal((ObjectUtils.isEmpty(archivesCom) || StringUtils.isBlank(archivesCom.get(String.valueOf(e)))) ? "0" : archivesCom.get(String.valueOf(e)));
BigDecimal paymentNum = new BigDecimal((ObjectUtils.isEmpty(finalArchivesCom) || StringUtils.isBlank(finalArchivesCom.get(String.valueOf(e)))) ? "0" : finalArchivesCom.get(String.valueOf(e)));
BigDecimal fixedCost = StringUtils.isBlank(po.getFixedCost()) ? new BigDecimal("0") : new BigDecimal(po.getFixedCost());
Integer newScale = po.getValidNum() == null ? 0 : po.getValidNum();
// BigDecimal result = SalaryEntityUtil.carryRule(newScale, po.getRententionRule(), paymentNum.multiply(paymentProportion).add(fixedCost));
@ -945,12 +962,14 @@ public class SIAccountBiz extends Service {
public InsuranceAccountDetailPO accountSocial(InsuranceAccountDetailPO insuranceAccountDetailPO, InsuranceArchivesAccountPO accountPO, String billMonth, String tenantKey) {
boolean welBaseDiffSign = siArchivesBiz.isDiffWelBase();
if (accountPO.getSocial() != null) {
InsuranceArchivesSocialSchemePO socialPO = accountPO.getSocial();
insuranceAccountDetailPO.setSocialPayOrg(socialPO.getPaymentOrganization());
insuranceAccountDetailPO.setSocialAccount(socialPO.getSocialAccount());
insuranceAccountDetailPO.setSocialSchemeId(socialPO.getSocialSchemeId());
insuranceAccountDetailPO.setSocialPaymentBaseString(socialPO.getSocialPaymentBaseString());
insuranceAccountDetailPO.setSocialPaymentComBaseString(socialPO.getSocialPaymentComBaseString());
//判断是否在起始缴纳月和最后缴纳月之间
Boolean inDataRange = SalaryDateUtil.monthInRange(insuranceAccountDetailPO.getBillMonth(), socialPO.getSocialStartTime(), socialPO.getSocialEndTime());
if ((NonPaymentEnum.YES.getValue().equals(socialPO.getNonPayment()) || socialPO.getNonPayment() == null) && socialPO.getSocialSchemeId() != null && inDataRange) {
@ -1036,7 +1055,13 @@ public class SIAccountBiz extends Service {
.collect(
Collectors.toMap(InsuranceSchemeDetailPO::getInsuranceId, Function.identity()));
//档案中包含的基数信息
HashMap<String, String> archivesCom = JSON.parseObject(socialPO.getSocialPaymentBaseString(), new HashMap<String, String>().getClass());
// HashMap<String, String> archivesCom = JSON.parseObject(socialPO.getSocialPaymentBaseString(), new HashMap<String, String>().getClass());
HashMap<String, String> archivesCom = new HashMap<>();
if (welBaseDiffSign) {
archivesCom = JSON.parseObject(socialPO.getSocialPaymentComBaseString(), new HashMap<String, String>().getClass());
} else {
archivesCom = JSON.parseObject(socialPO.getSocialPaymentBaseString(), new HashMap<String, String>().getClass());
}
//需要核算社保的福利id 单位
List<Long> needArchivesCom = new ArrayList<>();
if (archivesCom != null) {
@ -1059,10 +1084,11 @@ public class SIAccountBiz extends Service {
List<BigDecimal> socialCom = new ArrayList<>();
Map<String, String> sociaComJsonMap = new HashMap<>();
HashMap<String, String> finalArchivesCom = archivesCom;
needArchivesCom.stream().forEach(e -> {
InsuranceSchemeDetailPO po = schemeCom.get(e);
BigDecimal paymentProportion = new BigDecimal(StringUtils.isBlank(po.getPaymentProportion()) ? "0" : po.getPaymentProportion()).divide(new BigDecimal("100"));
BigDecimal paymentNum = new BigDecimal((ObjectUtils.isEmpty(archivesCom) || StringUtils.isBlank(archivesCom.get(String.valueOf(e)))) ? "0" : archivesCom.get(String.valueOf(e)));
BigDecimal paymentNum = new BigDecimal((ObjectUtils.isEmpty(finalArchivesCom) || StringUtils.isBlank(finalArchivesCom.get(String.valueOf(e)))) ? "0" : finalArchivesCom.get(String.valueOf(e)));
BigDecimal fixedCost = StringUtils.isBlank(po.getFixedCost()) ? new BigDecimal("0") : new BigDecimal(po.getFixedCost());
Integer newScale = po.getValidNum() == null ? 0 : po.getValidNum();
// BigDecimal result = SalaryEntityUtil.carryRule(newScale, po.getRententionRule(), paymentNum.multiply(paymentProportion).add(fixedCost));
@ -1510,7 +1536,6 @@ public class SIAccountBiz extends Service {
} else {
accountFund(insuranceAccountDetailPO, accountPO, baseParam.getSupplementaryMonth());
}
}
if (projects.contains(ProjectTypeEnum.OTHER.getValue())) {
@ -1532,11 +1557,13 @@ public class SIAccountBiz extends Service {
public InsuranceAccountDetailPO accountOther(InsuranceAccountDetailPO insuranceAccountDetailPO, InsuranceArchivesAccountPO accountPO, String billMonth) {
boolean welBaseDiffSign = siArchivesBiz.isDiffWelBase();
if (accountPO.getOther() != null) {
InsuranceArchivesOtherSchemePO otherPO = accountPO.getOther();
insuranceAccountDetailPO.setOtherPayOrg(otherPO.getPaymentOrganization());
insuranceAccountDetailPO.setOtherSchemeId(otherPO.getOtherSchemeId());
insuranceAccountDetailPO.setOtherPaymentBaseString(otherPO.getOtherPaymentBaseString());
insuranceAccountDetailPO.setOtherPaymentComBaseString(otherPO.getOtherPaymentComBaseString());
//判断是否在起始缴纳月和最后缴纳月之间
Boolean inDataRange = SalaryDateUtil.monthInRange(billMonth, otherPO.getOtherStartTime(), otherPO.getOtherEndTime());
if ((Objects.equals(NonPaymentEnum.YES.getValue(), otherPO.getNonPayment()) || otherPO.getNonPayment() == null) && otherPO.getOtherSchemeId() != null && inDataRange) {
@ -1611,7 +1638,13 @@ public class SIAccountBiz extends Service {
.collect(
Collectors.toMap(InsuranceSchemeDetailPO::getInsuranceId, Function.identity()));
//档案中包含的基数信息
HashMap<String, String> archivesCom = JSON.parseObject(otherPO.getOtherPaymentBaseString(), new HashMap<String, String>().getClass());
// HashMap<String, String> archivesCom = JSON.parseObject(otherPO.getOtherPaymentBaseString(), new HashMap<String, String>().getClass());
HashMap<String, String> archivesCom = new HashMap<>();
if (welBaseDiffSign) {
archivesCom = JSON.parseObject(otherPO.getOtherPaymentComBaseString(), new HashMap<String, String>().getClass());
} else {
archivesCom = JSON.parseObject(otherPO.getOtherPaymentBaseString(), new HashMap<String, String>().getClass());
}
//需要核算其他的福利id 单位
List<Long> needArchivesCom = new ArrayList<>();
if (archivesCom != null) {
@ -1626,10 +1659,11 @@ public class SIAccountBiz extends Service {
List<BigDecimal> otherComList = new ArrayList<>();
Map<String, String> otherComJsonMap = new HashMap<>();
HashMap<String, String> finalArchivesCom = archivesCom;
needArchivesCom.stream().forEach(e -> {
InsuranceSchemeDetailPO po = otherCom.get(e);
BigDecimal paymentProportion = new BigDecimal(StringUtils.isBlank(po.getPaymentProportion()) ? "0" : po.getPaymentProportion()).divide(new BigDecimal("100"));
BigDecimal paymentNum = new BigDecimal((ObjectUtils.isEmpty(archivesCom) || StringUtils.isBlank(archivesCom.get(String.valueOf(e)))) ? "0" : archivesCom.get(String.valueOf(e)));
BigDecimal paymentNum = new BigDecimal((ObjectUtils.isEmpty(finalArchivesCom) || StringUtils.isBlank(finalArchivesCom.get(String.valueOf(e)))) ? "0" : finalArchivesCom.get(String.valueOf(e)));
BigDecimal fixedCost = StringUtils.isBlank(po.getFixedCost()) ? new BigDecimal("0") : new BigDecimal(po.getFixedCost());
Integer newScale = po.getValidNum() == null ? 0 : po.getValidNum();
// BigDecimal result = SalaryEntityUtil.carryRule(newScale, po.getRententionRule(), paymentNum.multiply(paymentProportion).add(fixedCost));
@ -1671,6 +1705,7 @@ public class SIAccountBiz extends Service {
}
public InsuranceAccountDetailPO accountFund(InsuranceAccountDetailPO insuranceAccountDetailPO, InsuranceArchivesAccountPO accountPO, String billMonth) {
boolean welBaseDiffSign = siArchivesBiz.isDiffWelBase();
if (accountPO.getFund() != null) {
InsuranceArchivesFundSchemePO fundPO = accountPO.getFund();
insuranceAccountDetailPO.setFundPayOrg(fundPO.getPaymentOrganization());
@ -1678,6 +1713,7 @@ public class SIAccountBiz extends Service {
insuranceAccountDetailPO.setSupplementFundAccount(fundPO.getSupplementFundAccount());
insuranceAccountDetailPO.setFundSchemeId(fundPO.getFundSchemeId());
insuranceAccountDetailPO.setFundPaymentBaseString(fundPO.getFundPaymentBaseString());
insuranceAccountDetailPO.setFundPaymentComBaseString(fundPO.getFundPaymentComBaseString());
//判断是否在起始缴纳月和最后缴纳月之间
Boolean inDataRange = SalaryDateUtil.monthInRange(billMonth, fundPO.getFundStartTime(), fundPO.getFundEndTime());
if ((Objects.equals(NonPaymentEnum.YES.getValue(), fundPO.getNonPayment()) || fundPO.getNonPayment() == null) && fundPO.getFundSchemeId() != null && inDataRange) {
@ -1751,7 +1787,13 @@ public class SIAccountBiz extends Service {
.collect(
Collectors.toMap(InsuranceSchemeDetailPO::getInsuranceId, Function.identity()));
//档案中包含的基数信息
HashMap<String, String> archivesCom = JSON.parseObject(fundPO.getFundPaymentBaseString(), new HashMap<String, String>().getClass());
// HashMap<String, String> archivesCom = JSON.parseObject(fundPO.getFundPaymentBaseString(), new HashMap<String, String>().getClass());
HashMap<String, String> archivesCom = new HashMap<>();
if (welBaseDiffSign) {
archivesCom = JSON.parseObject(fundPO.getFundPaymentComBaseString(), new HashMap<String, String>().getClass());
} else {
archivesCom = JSON.parseObject(fundPO.getFundPaymentBaseString(), new HashMap<String, String>().getClass());
}
//需要核算公积金的福利id 单位
List<Long> needArchivesCom = new ArrayList<>();
if (archivesCom != null) {
@ -1766,10 +1808,11 @@ public class SIAccountBiz extends Service {
List<BigDecimal> fundComList = new ArrayList<>();
Map<String, String> fundComJsonMap = new HashMap<>();
HashMap<String, String> finalArchivesCom = archivesCom;
needArchivesCom.stream().forEach(e -> {
InsuranceSchemeDetailPO po = fundCom.get(e);
BigDecimal paymentProportion = new BigDecimal(StringUtils.isBlank(po.getPaymentProportion()) ? "0" : po.getPaymentProportion()).divide(new BigDecimal("100"));
BigDecimal paymentNum = new BigDecimal((ObjectUtils.isEmpty(archivesCom) || StringUtils.isBlank(archivesCom.get(String.valueOf(e)))) ? "0" : archivesCom.get(String.valueOf(e)));
BigDecimal paymentNum = new BigDecimal((ObjectUtils.isEmpty(finalArchivesCom) || StringUtils.isBlank(finalArchivesCom.get(String.valueOf(e)))) ? "0" : finalArchivesCom.get(String.valueOf(e)));
BigDecimal fixedCost = StringUtils.isBlank(po.getFixedCost()) ? new BigDecimal("0") : new BigDecimal(po.getFixedCost());
Integer newScale = po.getValidNum() == null ? 0 : po.getValidNum();
// BigDecimal result = SalaryEntityUtil.carryRule(newScale, po.getRententionRule(), paymentNum.multiply(paymentProportion).add(fixedCost));
@ -1812,12 +1855,14 @@ public class SIAccountBiz extends Service {
}
public InsuranceAccountDetailPO accountSocial(InsuranceAccountDetailPO insuranceAccountDetailPO, InsuranceArchivesAccountPO accountPO, String billMonth) {
boolean welBaseDiffSign = siArchivesBiz.isDiffWelBase();
if (accountPO.getSocial() != null) {
InsuranceArchivesSocialSchemePO socialPO = accountPO.getSocial();
insuranceAccountDetailPO.setSocialPayOrg(socialPO.getPaymentOrganization());
insuranceAccountDetailPO.setSocialAccount(socialPO.getSocialAccount());
insuranceAccountDetailPO.setSocialSchemeId(socialPO.getSocialSchemeId());
insuranceAccountDetailPO.setSocialPaymentBaseString(socialPO.getSocialPaymentBaseString());
insuranceAccountDetailPO.setSocialPaymentComBaseString(socialPO.getSocialPaymentComBaseString());
//判断是否在起始缴纳月和最后缴纳月之间
Boolean inDataRange = SalaryDateUtil.monthInRange(billMonth, socialPO.getSocialStartTime(), socialPO.getSocialEndTime());
if ((Objects.equals(NonPaymentEnum.YES.getValue(), socialPO.getNonPayment()) || socialPO.getNonPayment() == null) && socialPO.getSocialSchemeId() != null && inDataRange) {
@ -1896,7 +1941,13 @@ public class SIAccountBiz extends Service {
.collect(
Collectors.toMap(InsuranceSchemeDetailPO::getInsuranceId, Function.identity()));
//档案中包含的基数信息
HashMap<String, String> archivesCom = JSON.parseObject(socialPO.getSocialPaymentBaseString(), new HashMap<String, String>().getClass());
// HashMap<String, String> archivesCom = JSON.parseObject(socialPO.getSocialPaymentBaseString(), new HashMap<String, String>().getClass());
HashMap<String, String> archivesCom = new HashMap<>();
if (welBaseDiffSign) {
archivesCom = JSON.parseObject(socialPO.getSocialPaymentComBaseString(), new HashMap<String, String>().getClass());
} else {
archivesCom = JSON.parseObject(socialPO.getSocialPaymentBaseString(), new HashMap<String, String>().getClass());
}
//需要核算社保的福利id 单位
List<Long> needArchivesCom = new ArrayList<>();
if (archivesCom != null) {
@ -1911,10 +1962,11 @@ public class SIAccountBiz extends Service {
List<BigDecimal> socialCom = new ArrayList<>();
Map<String, String> sociaComJsonMap = new HashMap<>();
HashMap<String, String> finalArchivesCom = archivesCom;
needArchivesCom.stream().forEach(e -> {
InsuranceSchemeDetailPO po = schemeCom.get(e);
BigDecimal paymentProportion = new BigDecimal(StringUtils.isBlank(po.getPaymentProportion()) ? "0" : po.getPaymentProportion()).divide(new BigDecimal("100"));
BigDecimal paymentNum = new BigDecimal((ObjectUtils.isEmpty(archivesCom) || StringUtils.isBlank(archivesCom.get(String.valueOf(e)))) ? "0" : archivesCom.get(String.valueOf(e)));
BigDecimal paymentNum = new BigDecimal((ObjectUtils.isEmpty(finalArchivesCom) || StringUtils.isBlank(finalArchivesCom.get(String.valueOf(e)))) ? "0" : finalArchivesCom.get(String.valueOf(e)));
BigDecimal fixedCost = StringUtils.isBlank(po.getFixedCost()) ? new BigDecimal("0") : new BigDecimal(po.getFixedCost());
Integer newScale = po.getValidNum() == null ? 0 : po.getValidNum();
// BigDecimal result = SalaryEntityUtil.carryRule(newScale, po.getRententionRule(), paymentNum.multiply(paymentProportion).add(fixedCost));
@ -1964,6 +2016,7 @@ public class SIAccountBiz extends Service {
insuranceAccountDetailPO.setSocialAccount(socialPO.getSocialAccount());
insuranceAccountDetailPO.setSocialSchemeId(socialPO.getSocialSchemeId());
insuranceAccountDetailPO.setSocialPaymentBaseString(socialPO.getSocialPaymentBaseString());
insuranceAccountDetailPO.setSocialPaymentComBaseString(socialPO.getSocialPaymentComBaseString());
//判断是否在起始缴纳月和最后缴纳月之间
Boolean inDataRange = SalaryDateUtil.monthInRange(billMonth, socialPO.getSocialStartTime(), socialPO.getSocialEndTime());

File diff suppressed because it is too large Load Diff

View File

@ -18,6 +18,11 @@ public class WeaTableColumnGroup extends WeaTableColumn {
*/
private Integer pattern;
/**
* 字段类型
*/
private String dataType;
private List<WeaTableColumnGroup> children;
public WeaTableColumnGroup() {
@ -40,6 +45,13 @@ public class WeaTableColumnGroup extends WeaTableColumn {
this.pattern = pattern;
}
public WeaTableColumnGroup(String width, String text, String column, String lockStatus, Integer pattern, String dataType) {
super(width, text, column);
this.lockStatus = lockStatus;
this.pattern = pattern;
this.dataType = dataType;
}
public WeaTableColumnGroup(String width, String text, String column, List<WeaTableColumnGroup> children) {
super(width, text, column);

View File

@ -62,7 +62,6 @@ public class SalaryAcctResultReportBO {
.collect(Collectors.toList());
}
public static List<SalaryAcctResultReportPO> convert2ReportPO(Collection<SalaryAcctResultTempPO> temps, Map<Long, DataCollectionEmployee> emps) {
// Map<Long, DataCollectionEmployee> longDataCollectionEmployeeMap = SalaryEntityUtil.convert2Map(emps, DataCollectionEmployee::getEmployeeId);
if (CollectionUtils.isEmpty(temps)) {

View File

@ -1,5 +1,6 @@
package com.engine.salary.entity.salaryacct.bo;
import cn.hutool.core.util.NumberUtil;
import com.engine.salary.annotation.SalaryFormulaVar;
import com.engine.salary.common.LocalDateRange;
import com.engine.salary.constant.SalaryFormulaFieldConstant;
@ -18,6 +19,7 @@ import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveTaxAgentDataDTO;
import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
import com.engine.salary.entity.salarysob.dto.SalarySobCycleDTO;
import com.engine.salary.entity.salarysob.po.SalarySobAdjustRulePO;
import com.engine.salary.enums.UserStatusEnum;
import com.engine.salary.enums.salaryformula.SalaryFormulaReferenceEnum;
import com.engine.salary.enums.salaryformula.SalarySQLReferenceEnum;
import com.engine.salary.enums.salarysob.SalarySobAdjustRuleTypeEnum;
@ -562,6 +564,10 @@ public class CalculateFormulaVarBO {
}
// 填充到返回结果集中
employeeMap.forEach((key, po) -> {
// 获取po的状态
if(po.getStatus() != null && NumberUtil.isNumber(po.getStatus())) {
po.setStatusName(UserStatusEnum.getDefaultLabelByValue(new Integer(po.getStatus())));
}
List<FormulaVarValue> formulaVarValues = resultMap.computeIfAbsent(key, k -> Lists.newArrayList());
Map<String, String> map = JsonUtil.parseMap(po, String.class);
formulaVarValues.addAll(fieldNames.stream().map(fieldName -> {

View File

@ -27,6 +27,7 @@ import com.engine.salary.util.page.SalaryPageUtil;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import org.springframework.beans.BeanUtils;
@ -170,7 +171,7 @@ public class SalaryAcctResultBO {
List<WeaTableColumnGroup> columns = Lists.newArrayList();
// 员工信息字段
for (SalarySobEmpFieldDTO salarySobEmpFieldDTO : salarySobItemAggregateDTO.getEmpFields()) {
columns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobEmpFieldDTO.getFieldName()), salarySobEmpFieldDTO.getFieldName(), salarySobEmpFieldDTO.getFieldId()));
columns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobEmpFieldDTO.getFieldName(), 0), salarySobEmpFieldDTO.getFieldName(), salarySobEmpFieldDTO.getFieldId()));
}
// 薪资项目分组下的薪资项目
for (SalarySobItemGroupDTO salarySobItemGroupDTO : salarySobItemAggregateDTO.getItemGroups()) {
@ -180,29 +181,29 @@ public class SalaryAcctResultBO {
List<WeaTableColumnGroup> childrenColumns = Lists.newArrayList();
for (SalarySobItemDTO salarySobItemDTO : salarySobItemGroupDTO.getItems()) {
if (lockSalaryItemIds.contains(salarySobItemDTO.getSalaryItemId())) {
childrenColumns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName()), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern()));
childrenColumns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName(), salarySobItemDTO.getWidth()), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern(), salarySobItemDTO.getDataType()));
} else {
childrenColumns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName()), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern()));
childrenColumns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName(), salarySobItemDTO.getWidth()), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern(), salarySobItemDTO.getDataType()));
}
}
WeaTableColumnGroup weaTableColumnWapper = new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemGroupDTO.getName()), salarySobItemGroupDTO.getName(), String.valueOf(salarySobItemGroupDTO.getId()), childrenColumns);
WeaTableColumnGroup weaTableColumnWapper = new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemGroupDTO.getName(), 0), salarySobItemGroupDTO.getName(), String.valueOf(salarySobItemGroupDTO.getId()), childrenColumns);
columns.add(weaTableColumnWapper);
}
// 没有分类的薪资项目
for (SalarySobItemDTO salarySobItemDTO : salarySobItemAggregateDTO.getItems()) {
if (lockSalaryItemIds.contains(salarySobItemDTO.getSalaryItemId())) {
columns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName()), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern()));
columns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName(), salarySobItemDTO.getWidth()), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern(), salarySobItemDTO.getDataType()));
} else {
columns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName()), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern()));
columns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName(), salarySobItemDTO.getWidth()), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern(), salarySobItemDTO.getDataType()));
}
}
// 回算的薪资项目
for (SalarySobItemDTO salarySobItemDTO : salarySobItemAggregateDTO.getBackCalcItems()) {
if (lockSalaryItemIds.contains(salarySobItemDTO.getSalaryItemId())) {
columns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName()), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern()));
columns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName(), 0), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.LOCK.getValue(), salarySobItemDTO.getPattern(), salarySobItemDTO.getDataType()));
} else {
columns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName()), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern()));
columns.add(new WeaTableColumnGroup(SalaryPageUtil.selfAdaption(salarySobItemDTO.getName(), 0), salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), LockStatusEnum.UNLOCK.getValue(), salarySobItemDTO.getPattern(), salarySobItemDTO.getDataType()));
}
}
@ -417,7 +418,8 @@ public class SalaryAcctResultBO {
List<SalarySobBackItemPO> salarySobBackItemPOS,
List<SalaryItemPO> salaryBackItemPOS,
Map<Long, String> salaryBackItemFormula,
Map<String, SalaryAcctResultListColumnDTO> formulaContentMap) {
Map<String, SalaryAcctResultListColumnDTO> formulaContentMap,
List<Long> lockItems) {
// 员工信息字段
Map<String, String> employeeFieldValueMap = SalaryAcctFormulaBO.convert2FormulaEmployee(simpleEmployee);
@ -446,7 +448,7 @@ public class SalaryAcctResultBO {
List<SalarySobItemPO> groupItems = salarySobItemPOMap.getOrDefault(groupPO.getId(), Collections.emptyList());
if (CollectionUtils.isNotEmpty(groupItems)) {
List<SalaryAcctResultDetailDTO.SalaryAcctResultDetailItemDTO> items = groupItems.stream()
.map(salarySobItemPO -> convert2SalaryAcctResultDetailItemDTO(salarySobItemPO, salaryItemMap.get(salarySobItemPO.getSalaryItemId()), resultValueMap, formulaContentMap))
.map(salarySobItemPO -> convert2SalaryAcctResultDetailItemDTO(salarySobItemPO, salaryItemMap.get(salarySobItemPO.getSalaryItemId()), resultValueMap, formulaContentMap, lockItems))
.collect(Collectors.toList());
itemsByGroup.add(SalaryAcctResultDetailDTO.SalaryAcctResultDetailItemByGroupDTO.builder()
.salarySobItemGroupId(groupPO.getId())
@ -459,7 +461,7 @@ public class SalaryAcctResultBO {
List<SalarySobItemPO> noGroupItems = salarySobItemPOMap.getOrDefault(0L, Collections.emptyList());
if (CollectionUtils.isNotEmpty(noGroupItems)) {
List<SalaryAcctResultDetailDTO.SalaryAcctResultDetailItemDTO> items = noGroupItems.stream()
.map(salarySobItemPO -> convert2SalaryAcctResultDetailItemDTO(salarySobItemPO, salaryItemMap.get(salarySobItemPO.getSalaryItemId()), resultValueMap, formulaContentMap))
.map(salarySobItemPO -> convert2SalaryAcctResultDetailItemDTO(salarySobItemPO, salaryItemMap.get(salarySobItemPO.getSalaryItemId()), resultValueMap, formulaContentMap, lockItems))
.collect(Collectors.toList());
itemsByGroup.add(SalaryAcctResultDetailDTO.SalaryAcctResultDetailItemByGroupDTO.builder()
.salarySobItemGroupId(0L)
@ -529,7 +531,8 @@ public class SalaryAcctResultBO {
private static SalaryAcctResultDetailDTO.SalaryAcctResultDetailItemDTO convert2SalaryAcctResultDetailItemDTO(SalarySobItemPO salarySobItemPO,
SalaryItemPO salaryItemPO,
Map<Long, String> resultValueMap,
Map<String, SalaryAcctResultListColumnDTO> formulaContentMap) {
Map<String, SalaryAcctResultListColumnDTO> formulaContentMap,
List<Long> lockItems) {
SalaryValueTypeEnum salaryValueTypeEnum = SalaryValueTypeEnum.parseByValue(Optional.ofNullable(salarySobItemPO).map(SalarySobItemPO::getValueType).orElse(0));
String itemFormulaContent;
@ -549,6 +552,7 @@ public class SalaryAcctResultBO {
// .canEdit(Objects.equals(Optional.ofNullable(salaryItemPO).map(SalaryItemPO::getUseInEmployeeSalary).orElse(0), 0))
.canEdit(true)
.pattern(salarySobItemPO.getPattern())
.lockStatus(lockItems.contains(salarySobItemPO.getSalaryItemId()) ? LockStatusEnum.LOCK.getValue() : LockStatusEnum.UNLOCK.getValue())
.build();
}
@ -615,6 +619,34 @@ public class SalaryAcctResultBO {
.collect(Collectors.toList());
}
public static List<SalaryAcctResultPO> batchEditConvert2PO(Map<String, String> salaryAcctResultOldPOMap,
List<SalaryAcctResultSaveParam.SalaryAcctResultDetailItemParam> items,
SalaryAcctEmployeePO salaryAcctEmployee,
Long employeeId) {
if (CollectionUtils.isEmpty(items) || ObjectUtils.isEmpty(salaryAcctEmployee)) {
return Collections.emptyList();
}
Date now = new Date();
return items.stream()
.map(e -> SalaryAcctResultPO.builder()
.salarySobId(salaryAcctEmployee.getSalarySobId())
.salaryItemId(e.getSalaryItemId())
.salaryAcctRecordId(salaryAcctEmployee.getSalaryAcctRecordId())
.salaryAcctEmpId(salaryAcctEmployee.getId())
.employeeId(salaryAcctEmployee.getEmployeeId())
.taxAgentId(salaryAcctEmployee.getTaxAgentId())
.resultValue(StringUtils.trim(e.getResultValue()))
.originResultValue(salaryAcctResultOldPOMap.get(salaryAcctEmployee.getId() + "-" + e.getSalaryItemId()))
.creator(employeeId)
.createTime(now)
.updateTime(now)
.deleteType(NumberUtils.INTEGER_ZERO)
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
.build())
.collect(Collectors.toList());
}
public static Map<String, String> buildEmployeeFieldName() {
Field[] declaredFields = SalaryFormulaEmployeeDTO.class.getDeclaredFields();
Map<String, String> employeeFieldNameMap = Maps.newHashMapWithExpectedSize(declaredFields.length);

View File

@ -72,6 +72,9 @@ public class SalaryAcctResultDetailDTO {
// 保留小数位数
private Integer pattern;
// 锁定状态
private String lockStatus;
}
@Data

View File

@ -0,0 +1,37 @@
package com.engine.salary.entity.salaryacct.param;
import com.engine.salary.util.valid.DataCheck;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @ClassName SalaryAcctResultBatchUpdateParam
* @author Harryxzy
* @date 2023/12/4 13:48
* @description 批量更新参数
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class SalaryAcctResultBatchUpdateParam {
//薪资核算记录的id
@DataCheck(require = true, message = "薪资核算记录ID不得为空")
private Long salaryAcctRecordId;
//薪资项目的Id
@DataCheck(require = true, message = "薪资项目id不得为空")
private Long salaryItemId;
// 薪资核算人员id
private List<Long> idList;
//薪资项目值
private String value;
}

View File

@ -10,6 +10,7 @@ import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Collection;
import java.util.Date;
import java.util.List;
/**
@ -88,4 +89,25 @@ public class SalaryArchiveQueryParam extends BaseQueryParam {
*/
private boolean extSalaryArchiveList;
private String payStartDateStartDateStr;
private String payStartDateEndDateStr;
// 起始发薪日期起
private Date payStartDateStartDate;
// 起始发薪日期止
private Date payStartDateEndDate;
// 最后发薪日期起
private String payEndDateStartDateStr;
// 最后发薪日期止
private String payEndDateEndDateStr;
// 最后发薪日期起
private Date payEndDateStartDate;
// 最后发薪日期止
private Date payEndDateEndDate;
}

View File

@ -117,6 +117,7 @@ public class SalaryItemBO {
.description(salaryItemPO.getDescription())
.canDelete(true)
.canEdit(openFormulaForcedEditing ||Objects.equals(salaryItemPO.getCanEdit(), NumberUtils.INTEGER_ONE))
.width(salaryItemPO.getWidth())
.build();
}
).collect(Collectors.toList());
@ -200,7 +201,8 @@ public class SalaryItemBO {
.setCanEdit(salaryItemPO.getCanEdit())
.setTaxAgentIds(salaryItemPO.getTaxAgentIds())
.setSharedType(salaryItemPO.getSharedType())
.setSortedIndex(salaryItemPO.getSortedIndex());
.setSortedIndex(salaryItemPO.getSortedIndex())
.setWidth(salaryItemPO.getWidth());
}
/**
@ -280,6 +282,7 @@ public class SalaryItemBO {
.sharedType(Optional.ofNullable(saveParam.getSharedType()).orElse(0))
.taxAgentIds(saveParam.getTaxAgentIds())
.sortedIndex(saveParam.getSortedIndex())
.width(saveParam.getWidth())
.build();
// 开启了"薪资档案引用"取值方式固定为输入
// if (Objects.equals(saveParam.getUseInEmployeeSalary(), NumberUtils.INTEGER_ONE)) {

View File

@ -95,4 +95,7 @@ public class SalaryItemFormDTO {
private String taxAgentIds;
private Integer sortedIndex;
// 宽度
private Integer width;
}

View File

@ -105,6 +105,9 @@ public class SalaryItemListDTO {
@TableTitle(title = "显示顺序",dataIndex = "sortedIndex",key = "sortedIndex")
private Integer sortedIndex;
// 宽度
private Integer width;
@SalaryTableColumn(text = "操作", width = "20%", column = "operate")
private String operate;
}

View File

@ -102,4 +102,9 @@ public class SalaryItemSaveParam {
* 排序
*/
private Integer sortedIndex;
/**
* 宽度
*/
private Integer width;
}

View File

@ -159,4 +159,9 @@ public class SalaryItemPO {
* 排序
*/
private Integer sortedIndex;
/**
* 宽度
*/
private Integer width;
}

View File

@ -143,6 +143,7 @@ public class SalarySobItemAggregateBO {
.sortedIndex(salarySobItemPO.getSortedIndex())
.canEdit(openFormulaForcedEditing || Objects.equals(salaryItemPO.getCanEdit(), 1))
.canDelete(openFormulaForcedEditing || salaryItemPO.getCanDelete() == null || Objects.equals(salaryItemPO.getCanDelete(), 1))
.width(salaryItemPO.getWidth())
.build());
}
}

View File

@ -109,4 +109,7 @@ public class SalarySobItemDTO {
* 保留小数位数
*/
private Integer pattern;
// 显示宽度
private Integer width;
}

View File

@ -41,7 +41,7 @@ public class InsuranceComparisonResultBO {
* 构建福利核算结果列表的表头线下对比
*
*/
public static List<Column> buildTableColumns4ComparisonResult(Set<Long> insuranceBaseSet, Set<Long> insurancePerPaySet, Set<Long> insuranceComPaySet) {
public static List<Column> buildTableColumns4ComparisonResult(Set<Long> insuranceBaseSet, Set<Long> insurancePerPaySet, Set<Long> insuranceComPaySet, boolean welBaseDiffSign) {
List<ICategoryPO> listAll = MapperProxyFactory.getProxy(ICategoryMapper.class).listAll();
List<ICategoryPO> socialWelfareList = listAll.stream().filter(e -> e.getWelfareType() == 1 && e.getIsUse() == 1 && insuranceBaseSet.contains(e.getId())).collect(Collectors.toList());
@ -67,21 +67,63 @@ public class InsuranceComparisonResultBO {
columns.add(new Column("社保账号", "socialAccount", "socialAccount"));
columns.add(new Column("社保方案名称", "socialSchemeName", "socialSchemeName"));
//组装社保基数
for (ICategoryPO po : socialWelfareList) {
columns.add(new Column(po.getInsuranceName() + "申报基数", po.getId() + "socialBase", po.getId() + "socialBase"));
if (welBaseDiffSign) {
List<Column> socialComColumns = Lists.newArrayList();
for (ICategoryPO po : socialWelfareList) {
columns.add(new Column(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"个人")
, po.getId() + "socialPerBase", po.getId() + "socialPerBase"));
socialComColumns.add(new Column(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"单位")
, po.getId() + "socialComBase", po.getId() + "socialComBase"));
}
columns.addAll(socialComColumns);
} else {
for (ICategoryPO po : socialWelfareList) {
columns.add(new Column(po.getInsuranceName() + "申报基数", po.getId() + "socialBase", po.getId() + "socialBase"));
}
}
// for (ICategoryPO po : socialWelfareList) {
// columns.add(new Column(po.getInsuranceName() + "申报基数", po.getId() + "socialBase", po.getId() + "socialBase"));
// }
columns.add(new Column("公积金账号", "fundAccount", "fundAccount"));
columns.add(new Column("公积金方案名称", "fundSchemeName", "fundSchemeName"));
//组装公积金基数
for (ICategoryPO po : fundWelfareList) {
columns.add(new Column(po.getInsuranceName() + "申报基数", po.getId() + "fundBase", po.getId() + "fundBase"));
if (welBaseDiffSign) {
List<Column> fundComColumns = Lists.newArrayList();
for (ICategoryPO po : fundWelfareList) {
columns.add(new Column(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"个人")
, po.getId() + "fundPerBase", po.getId() + "fundPerBase"));
fundComColumns.add(new Column(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"单位")
, po.getId() + "fundComBase", po.getId() + "fundComBase"));
}
columns.addAll(fundComColumns);
} else {
for (ICategoryPO po : fundWelfareList) {
columns.add(new Column(po.getInsuranceName() + "申报基数", po.getId() + "fundBase", po.getId() + "fundBase"));
}
}
// for (ICategoryPO po : fundWelfareList) {
// columns.add(new Column(po.getInsuranceName() + "申报基数", po.getId() + "fundBase", po.getId() + "fundBase"));
// }
columns.add(new Column("补充公积金账号", "supplementFundAccount", "supplementFundAccount"));
columns.add(new Column("其他福利方案名称", "otherSchemeName", "otherSchemeName"));
//组装其他福利基数
for (ICategoryPO po : otherWelfareList) {
columns.add(new Column(po.getInsuranceName() + "申报基数", po.getId() + "otherBase", po.getId() + "otherBase"));
if (welBaseDiffSign) {
List<Column> otherComColumns = Lists.newArrayList();
for (ICategoryPO po : otherWelfareList) {
columns.add(new Column(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"个人")
, po.getId() + "otherPerBase", po.getId() + "otherPerBase"));
otherComColumns.add(new Column(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"单位")
, po.getId() + "otherComBase", po.getId() + "otherComBase"));
}
columns.addAll(otherComColumns);
} else {
for (ICategoryPO po : otherWelfareList) {
columns.add(new Column(po.getInsuranceName() + "申报基数", po.getId() + "otherBase", po.getId() + "otherBase"));
}
}
// for (ICategoryPO po : otherWelfareList) {
// columns.add(new Column(po.getInsuranceName() + "申报基数", po.getId() + "otherBase", po.getId() + "otherBase"));
// }
//社保个人生育保险个人工伤保险个人失业保险个人养老保险个人医疗保险个人
for (ICategoryPO po : socialWelPerList) {
@ -127,7 +169,8 @@ public class InsuranceComparisonResultBO {
* 构建福利核算线下对比结果
*
*/
public static List<Map<String, Object>> buildComparisonTableData(List<AccountExportPO> accountExportPOS, List<ExcelAccountExportPO> excelAccountExportPOS, Map<Long, String> schemeIdNameMap) {
public static List<Map<String, Object>> buildComparisonTableData(List<AccountExportPO> accountExportPOS, List<ExcelAccountExportPO> excelAccountExportPOS
, Map<Long, String> schemeIdNameMap, boolean welBaseDiffSign) {
Map<Long, List<ExcelAccountExportPO>> excelResultMap = SalaryEntityUtil.group2Map(excelAccountExportPOS, ExcelAccountExportPO::getEmployeeId);
// Map<String, List<AccountExportPO>> acctResultMap = SalaryEntityUtil.group2Map(accountExportPOS, AccountExportPO::getWorkcode);
@ -177,12 +220,28 @@ public class InsuranceComparisonResultBO {
if (excelResultValueList != null && excelResultValueList.size() == 1) {
excelAccountExportPO = excelResultValueList.get(0);
}
//社保基数socialPaymentBaseString
welfareElementCompare(map, accountExportPO.getSocialPaymentBaseString(), excelAccountExportPO.getSocialPaymentBaseString(), "Base", 1);
//公积金基数fundPaymentBaseString
welfareElementCompare(map, accountExportPO.getFundPaymentBaseString(), excelAccountExportPO.getFundPaymentBaseString(), "Base", 2);
//其他福利基数otherPaymentBaseString
welfareElementCompare(map, accountExportPO.getOtherPaymentBaseString(), excelAccountExportPO.getOtherPaymentBaseString(), "Base", 3);
if (welBaseDiffSign) {
//社保基数-个人socialPaymentBaseString
welfareElementCompare(map, accountExportPO.getSocialPaymentBaseString(), excelAccountExportPO.getSocialPaymentBaseString(), "PerBase", 1);
//公积金基数-个人fundPaymentBaseString
welfareElementCompare(map, accountExportPO.getFundPaymentBaseString(), excelAccountExportPO.getFundPaymentBaseString(), "PerBase", 2);
//其他福利基数-个人otherPaymentBaseString
welfareElementCompare(map, accountExportPO.getOtherPaymentBaseString(), excelAccountExportPO.getOtherPaymentBaseString(), "PerBase", 3);
//社保基数-公司socialPaymentComBaseString
welfareElementCompare(map, accountExportPO.getSocialPaymentComBaseString(), excelAccountExportPO.getSocialPaymentComBaseString(), "ComBase", 1);
//公积金基数-公司fundPaymentComBaseString
welfareElementCompare(map, accountExportPO.getFundPaymentComBaseString(), excelAccountExportPO.getFundPaymentComBaseString(), "ComBase", 2);
//其他福利基数-公司otherPaymentComBaseString
welfareElementCompare(map, accountExportPO.getOtherPaymentComBaseString(), excelAccountExportPO.getOtherPaymentComBaseString(), "ComBase", 3);
} else {
//社保基数socialPaymentBaseString
welfareElementCompare(map, accountExportPO.getSocialPaymentBaseString(), excelAccountExportPO.getSocialPaymentBaseString(), "Base", 1);
//公积金基数fundPaymentBaseString
welfareElementCompare(map, accountExportPO.getFundPaymentBaseString(), excelAccountExportPO.getFundPaymentBaseString(), "Base", 2);
//其他福利基数otherPaymentBaseString
welfareElementCompare(map, accountExportPO.getOtherPaymentBaseString(), excelAccountExportPO.getOtherPaymentBaseString(), "Base", 3);
}
//社保个人socialPerJson
welfareElementCompare(map, accountExportPO.getSocialPerJson(), excelAccountExportPO.getSocialPerJson(), "Per", 1);
//公积金个人fundPerJson

View File

@ -25,5 +25,6 @@ public class ExcelInsuranceImportParam {
/**
* 账单月份
*/
private String billMonth;
private String billMonth;
private String paymentOrganization;
}

View File

@ -101,6 +101,12 @@ public class ExcelInsuranceDetailPO {
@Encrypt
private String socialPaymentBaseString;
/**
* 社保缴纳基数单位
*/
@Encrypt
private String socialPaymentComBaseString;
/**
* 公积金方案ID
*/
@ -112,6 +118,12 @@ public class ExcelInsuranceDetailPO {
@Encrypt
private String fundPaymentBaseString;
/**
* 公积金缴纳基数单位
*/
@Encrypt
private String fundPaymentComBaseString;
/**
* 其他福利方案id
*/
@ -123,6 +135,12 @@ public class ExcelInsuranceDetailPO {
@Encrypt
private String otherPaymentBaseString;
/**
* 其他福利缴纳基数单位
*/
@Encrypt
private String otherPaymentComBaseString;
/**
* 社保个人缴费明细
*/

View File

@ -106,6 +106,12 @@ public class InsuranceAccountDetailPO {
@Encrypt
private String socialPaymentBaseString;
/**
* 社保缴纳基数单位
*/
@Encrypt
private String socialPaymentComBaseString;
/**
* 公积金方案ID
*/
@ -117,6 +123,12 @@ public class InsuranceAccountDetailPO {
@Encrypt
private String fundPaymentBaseString;
/**
* 公积金缴纳基数单位
*/
@Encrypt
private String fundPaymentComBaseString;
/**
* 其他福利方案id
*/
@ -128,6 +140,12 @@ public class InsuranceAccountDetailPO {
@Encrypt
private String otherPaymentBaseString;
/**
* 其他福利缴纳基数单位
*/
@Encrypt
private String otherPaymentComBaseString;
/**
* 社保个人缴费明细
*/

View File

@ -102,6 +102,11 @@ public class InsuranceAccountDetailTempPO {
@Encrypt
private String socialPaymentBaseString;
/**
* 社保缴纳基数单位
*/
@Encrypt
private String socialPaymentComBaseString;
/**
* 公积金方案ID
*/
@ -113,6 +118,12 @@ public class InsuranceAccountDetailTempPO {
@Encrypt
private String fundPaymentBaseString;
/**
* 公积金缴纳基数单位
*/
@Encrypt
private String fundPaymentComBaseString;
/**
* 其他福利方案id
*/
@ -124,6 +135,13 @@ public class InsuranceAccountDetailTempPO {
@Encrypt
private String otherPaymentBaseString;
/**
* 其他福利缴纳基数单位
*/
@Encrypt
private String otherPaymentComBaseString;
/**
* 社保个人缴费明细
*/

View File

@ -35,6 +35,7 @@ public class InsuranceArchivesBO {
.socialStartTime(po.getSocialStartTime())
.schemeAccount(po.getSocialAccount())
.schemePaymentBaseString(po.getSocialPaymentBaseString())
.schemePaymentComBaseString(po.getSocialPaymentComBaseString())
.underTake(po.getUnderTake() == null ? null : String.valueOf(po.getUnderTake()))
.build();
}
@ -52,6 +53,7 @@ public class InsuranceArchivesBO {
.fundSchemeId(po.getFundSchemeId())
.paymentOrganization(po.getPaymentOrganization())
.fundPaymentBaseString(po.getFundPaymentBaseString())
.fundPaymentComBaseString(po.getFundPaymentComBaseString())
.fundStartTime(po.getFundStartTime())
.supplementFundAccount(po.getSupplementFundAccount())
.nonPayment(po.getNonPayment())
@ -72,6 +74,7 @@ public class InsuranceArchivesBO {
.otherName(po.getOtherSchemeId() == null ? null : String.valueOf(po.getOtherSchemeId()))
.otherSchemeId(po.getOtherSchemeId())
.otherPaymentBaseString(po.getOtherPaymentBaseString())
.otherPaymentComBaseString(po.getOtherPaymentComBaseString())
.otherStartTime(po.getOtherStartTime())
.otherEndTime(po.getOtherEndTime())
.paymentOrganization(po.getPaymentOrganization())

View File

@ -70,12 +70,18 @@ public class InsuranceArchivesBaseHistoryDTO {
private String adjustAfterBaseJson;
private String adjustBeforeComBaseJson;
private String adjustAfterComBaseJson;
@TableTitle(title = "对象", dataIndex = "employeeName", key = "employeeName")
private String employeeName;
@TableTitle(title = "个税扣缴义务人", dataIndex = "paymentOrganizationName", key = "paymentOrganizationName")
private String paymentOrganizationName;
@TableTitle(title = "福利项名称", dataIndex = "welfareItemName", key = "welfareItemName")
private String welfareItemName;
@TableTitle(title = "缴费对象", dataIndex = "paymentScope", key = "paymentScope")
private String paymentScope;
@TableTitle(title = "调整前方案", dataIndex = "adjustBeforeSchemeName", key = "adjustBeforeSchemeName")
private String adjustBeforeSchemeName;
@TableTitle(title = "调整前基数", dataIndex = "adjustBeforeBaseValue", key = "adjustBeforeBaseValue")

View File

@ -65,4 +65,6 @@ public class InsuranceArchivesFundSchemeDTO {
//缴纳基数
private String fundPaymentBaseString;
private String fundPaymentComBaseString;
}

View File

@ -56,5 +56,7 @@ public class InsuranceArchivesOtherSchemeDTO {
private String otherPaymentBaseString;
private String otherPaymentComBaseString;
//private WeaForm otherPaymentBase;
}

View File

@ -59,4 +59,7 @@ public class InsuranceArchivesSocialSchemeDTO {
//社保缴纳基数
private String schemePaymentBaseString;
//社保缴纳基数单位
private String schemePaymentComBaseString;
}

View File

@ -23,4 +23,6 @@ public class InsuranceArchivesSaveParam {
private String baseForm;
private String paymentForm;
private String paymentComForm;
}

View File

@ -77,4 +77,6 @@ public class InsuranceArchivesBaseHistoryPO {
private Date createTime;
private Date updateTime;
private String paymentScope;
}

View File

@ -87,6 +87,13 @@ public class InsuranceArchivesFundSchemePO {
@Encrypt
private String fundPaymentBaseString;
/**
* 公积金缴纳基数单位
*/
@Encrypt
private String fundPaymentComBaseString;
/**
* 租户key
*/

View File

@ -77,6 +77,12 @@ public class InsuranceArchivesOtherSchemePO {
@Encrypt
private String otherPaymentBaseString;
/**
* 其他福利缴纳基数单位
*/
@Encrypt
private String otherPaymentComBaseString;
/**
* 租户key
*/

View File

@ -83,6 +83,12 @@ public class InsuranceArchivesSocialSchemePO {
@Encrypt
private String socialPaymentBaseString;
/**
* 社保缴纳基数单位
*/
@Encrypt
private String socialPaymentComBaseString;
/**
* 租户key
*/

View File

@ -183,6 +183,18 @@
#{runStatus}
</foreach>
</if>
<if test="param.payStartDateStartDate != null and param.payStartDateStartDate != null">
AND pay_start_date <![CDATA[ >= ]]> #{param.payStartDateStartDate}
</if>
<if test="param.payStartDateEndDate != null and param.payStartDateEndDate != null">
AND pay_start_date <![CDATA[ <= ]]> #{param.payStartDateEndDate}
</if>
<if test="param.payEndDateStartDate != null and param.payEndDateStartDate != null">
AND pay_end_date <![CDATA[ >= ]]> #{param.payEndDateStartDate}
</if>
<if test="param.payEndDateEndDate != null and param.payEndDateEndDate != null">
AND pay_end_date <![CDATA[ <= ]]> #{param.payEndDateEndDate}
</if>
<!-- 排序 -->
<if test="param.orderRule != null">
ORDER BY ${param.orderRule.orderRule} ${param.orderRule.ascOrDesc}
@ -264,6 +276,18 @@
#{runStatus}
</foreach>
</if>
<if test="param.payStartDateStartDate != null and param.payStartDateStartDate != null">
AND pay_start_date <![CDATA[ >= ]]> #{param.payStartDateStartDate}
</if>
<if test="param.payStartDateEndDate != null and param.payStartDateEndDate != null">
AND pay_start_date <![CDATA[ <= ]]> #{param.payStartDateEndDate}
</if>
<if test="param.payEndDateStartDate != null and param.payEndDateStartDate != null">
AND pay_end_date <![CDATA[ >= ]]> #{param.payEndDateStartDate}
</if>
<if test="param.payEndDateEndDate != null and param.payEndDateEndDate != null">
AND pay_end_date <![CDATA[ <= ]]> #{param.payEndDateEndDate}
</if>
<!-- 排序 -->
<if test="param.orderRule != null">
ORDER BY ${param.orderRule.orderRule} ${param.orderRule.ascOrDesc}
@ -346,6 +370,18 @@
#{runStatus}
</foreach>
</if>
<if test="param.payStartDateStartDate != null and param.payStartDateStartDate != null">
AND pay_start_date <![CDATA[ >= ]]> #{param.payStartDateStartDate}
</if>
<if test="param.payStartDateEndDate != null and param.payStartDateEndDate != null">
AND pay_start_date <![CDATA[ <= ]]> #{param.payStartDateEndDate}
</if>
<if test="param.payEndDateStartDate != null and param.payEndDateStartDate != null">
AND pay_end_date <![CDATA[ >= ]]> #{param.payEndDateStartDate}
</if>
<if test="param.payEndDateEndDate != null and param.payEndDateEndDate != null">
AND pay_end_date <![CDATA[ <= ]]> #{param.payEndDateEndDate}
</if>
<!-- 排序 -->
<if test="param.orderRule != null">
ORDER BY ${param.orderRule.orderRule} ${param.orderRule.ascOrDesc}

View File

@ -51,7 +51,8 @@
t.shared_type,
t.tax_agent_ids,
t.sorted_index,
t.hide_default
t.hide_default,
t.width
</sql>
<!-- 查询全部 -->
@ -217,6 +218,9 @@
<if test="sortedIndex != null">
sorted_index,
</if>
<if test="width != null">
width,
</if>
</trim>
<trim prefix="VALUES (" suffix=")" suffixOverrides=",">
<if test="id != null">
@ -288,6 +292,9 @@
<if test="sortedIndex != null">
#{sortedIndex},
</if>
<if test="width != null">
#{width},
</if>
</trim>
</insert>
@ -359,6 +366,9 @@
<if test="taxAgentIds != null">
tax_agent_ids=#{taxAgentIds},
</if>
<if test="width != null">
width=#{width},
</if>
sorted_index=#{sortedIndex},
</set>
WHERE id = #{id} AND delete_type = 0

View File

@ -157,7 +157,8 @@
(id,employee_id,bill_month,bill_status,payment_status,supplementary_month,supplementary_projects,resource_from,social_pay_org,social_account,social_scheme_id,social_payment_base_string,
fund_pay_org,fund_account,supplement_fund_account,fund_scheme_id,fund_payment_base_string,other_pay_org,other_scheme_id,other_payment_base_string,social_per_json,
social_per_sum,fund_per_json,fund_per_sum,other_per_json,other_per_sum,per_sum,social_com_json,social_com_sum,fund_com_json,fund_com_sum,other_com_json,other_com_sum,
com_sum,social_sum,fund_sum,other_sum,total,creator,create_time,update_time,delete_type,tenant_key,payment_organization)
com_sum,social_sum,fund_sum,other_sum,total,creator,create_time,update_time,delete_type,tenant_key,payment_organization,
social_payment_com_base_string,fund_payment_com_base_string,other_payment_com_base_string)
VALUES
<foreach collection="accounts" item="item" separator=",">
(
@ -204,7 +205,10 @@
#{item.updateTime},
#{item.deleteType},
#{item.tenantKey},
#{item.paymentOrganization}
#{item.paymentOrganization},
#{item.socialPaymentComBaseString},
#{item.fundPaymentComBaseString},
#{item.otherPaymentComBaseString}
)
</foreach>
</insert>
@ -213,7 +217,8 @@
(id,employee_id,bill_month,bill_status,payment_status,supplementary_month,supplementary_projects,resource_from,social_pay_org,social_account,social_scheme_id,social_payment_base_string,
fund_pay_org,fund_account,supplement_fund_account,fund_scheme_id,fund_payment_base_string,other_pay_org,other_scheme_id,other_payment_base_string,social_per_json,
social_per_sum,fund_per_json,fund_per_sum,other_per_json,other_per_sum,per_sum,social_com_json,social_com_sum,fund_com_json,fund_com_sum,other_com_json,other_com_sum,
com_sum,social_sum,fund_sum,other_sum,total,creator,create_time,update_time,delete_type,tenant_key,payment_organization)
com_sum,social_sum,fund_sum,other_sum,total,creator,create_time,update_time,delete_type,tenant_key,payment_organization,
social_payment_com_base_string,fund_payment_com_base_string,other_payment_com_base_string)
<foreach collection="accounts" item="item" separator="union all">
select
#{item.id,jdbcType=DOUBLE},
@ -259,7 +264,10 @@
#{item.updateTime},
#{item.deleteType},
#{item.tenantKey,jdbcType=VARCHAR},
#{item.paymentOrganization,jdbcType=DOUBLE}
#{item.paymentOrganization,jdbcType=DOUBLE},
#{item.socialPaymentComBaseString,jdbcType=VARCHAR},
#{item.fundPaymentComBaseString,jdbcType=VARCHAR},
#{item.otherPaymentComBaseString,jdbcType=VARCHAR}
from dual
</foreach>
</insert>
@ -269,7 +277,8 @@
(id,employee_id,bill_month,bill_status,payment_status,supplementary_month,supplementary_projects,resource_from,social_pay_org,social_account,social_scheme_id,social_payment_base_string,
fund_pay_org,fund_account,supplement_fund_account,fund_scheme_id,fund_payment_base_string,other_pay_org,other_scheme_id,other_payment_base_string,social_per_json,
social_per_sum,fund_per_json,fund_per_sum,other_per_json,other_per_sum,per_sum,social_com_json,social_com_sum,fund_com_json,fund_com_sum,other_com_json,other_com_sum,
com_sum,social_sum,fund_sum,other_sum,total,creator,create_time,update_time,delete_type,tenant_key,payment_organization)
com_sum,social_sum,fund_sum,other_sum,total,creator,create_time,update_time,delete_type,tenant_key,payment_organization,
social_payment_com_base_string,fund_payment_com_base_string,other_payment_com_base_string)
VALUES
(
#{item.id},
@ -315,7 +324,10 @@
#{item.updateTime},
#{item.deleteType},
#{item.tenantKey},
#{item.paymentOrganization}
#{item.paymentOrganization},
#{item.socialPaymentComBaseString},
#{item.fundPaymentComBaseString},
#{item.otherPaymentComBaseString}
)
</foreach>
</insert>

View File

@ -18,10 +18,13 @@
<result column="other_pay_org" property="otherPayOrg"/>
<result column="social_scheme_id" property="socialSchemeId"/>
<result column="social_payment_base_string" property="socialPaymentBaseString"/>
<result column="social_payment_com_base_string" property="socialPaymentComBaseString"/>
<result column="fund_scheme_id" property="fundSchemeId"/>
<result column="fund_payment_base_string" property="fundPaymentBaseString"/>
<result column="fund_payment_com_base_string" property="fundPaymentComBaseString"/>
<result column="other_scheme_id" property="otherSchemeId"/>
<result column="other_payment_base_string" property="otherPaymentBaseString"/>
<result column="other_payment_com_base_string" property="otherPaymentComBaseString"/>
<result column="social_per_json" property="socialPerJson"/>
<result column="social_per_sum" property="socialPerSum"/>
<result column="fund_per_json" property="fundPerJson"/>
@ -69,10 +72,13 @@
, t.other_pay_org
, t.social_scheme_id
, t.social_payment_base_string
, t.social_payment_com_base_string
, t.fund_scheme_id
, t.fund_payment_base_string
, t.fund_payment_com_base_string
, t.other_scheme_id
, t.other_payment_base_string
, t.other_payment_com_base_string
, t.social_per_json
, t.social_per_sum
, t.fund_per_json
@ -117,10 +123,13 @@
, t.other_pay_org
, t.social_scheme_id
, t.social_payment_base_string
, t.social_payment_com_base_string
, t.fund_scheme_id
, t.fund_payment_base_string
, t.fund_payment_com_base_string
, t.other_scheme_id
, t.other_payment_base_string
, t.other_payment_com_base_string
, t.social_per_json
, t.social_per_sum
, t.fund_per_json
@ -420,7 +429,8 @@
t.other_com_json,t.social_per_sum,t.social_com_sum,
t.fund_per_sum,t.fund_com_sum,t.other_per_sum,
t.other_com_sum,t.per_sum,t.com_sum,t.payment_organization,
t.social_payment_base_string, t.fund_payment_base_string, t.other_payment_base_string
t.social_payment_base_string, t.fund_payment_base_string, t.other_payment_base_string,
t.social_payment_com_base_string, t.fund_payment_com_base_string, t.other_payment_com_base_string
FROM
hrsa_bill_detail t
WHERE t.delete_type = 0
@ -711,7 +721,8 @@
(employee_id,bill_month,bill_status,payment_status,supplementary_month,supplementary_projects,resource_from,social_pay_org,social_account,social_scheme_id,social_payment_base_string,
fund_pay_org,fund_account,supplement_fund_account,fund_scheme_id,fund_payment_base_string,other_pay_org,other_scheme_id,other_payment_base_string,social_per_json,
social_per_sum,fund_per_json,fund_per_sum,other_per_json,other_per_sum,per_sum,social_com_json,social_com_sum,fund_com_json,fund_com_sum,other_com_json,other_com_sum,
com_sum,social_sum,fund_sum,other_sum,total,creator,create_time,update_time,delete_type,tenant_key,payment_organization)
com_sum,social_sum,fund_sum,other_sum,total,creator,create_time,update_time,delete_type,tenant_key,payment_organization,
social_payment_com_base_string,fund_payment_com_base_string,other_payment_com_base_string)
VALUES
<foreach collection="accounts" item="item" separator=",">
(
@ -757,7 +768,10 @@
#{item.updateTime},
#{item.deleteType},
#{item.tenantKey},
#{item.paymentOrganization}
#{item.paymentOrganization},
#{item.socialPaymentComBaseString},
#{item.fundPaymentComBaseString},
#{item.otherPaymentComBaseString}
)
</foreach>
</insert>
@ -766,7 +780,8 @@
(employee_id,bill_month,bill_status,payment_status,supplementary_month,supplementary_projects,resource_from,social_pay_org,social_account,social_scheme_id,social_payment_base_string,
fund_pay_org,fund_account,supplement_fund_account,fund_scheme_id,fund_payment_base_string,other_pay_org,other_scheme_id,other_payment_base_string,social_per_json,
social_per_sum,fund_per_json,fund_per_sum,other_per_json,other_per_sum,per_sum,social_com_json,social_com_sum,fund_com_json,fund_com_sum,other_com_json,other_com_sum,
com_sum,social_sum,fund_sum,other_sum,total,creator,create_time,update_time,delete_type,tenant_key,payment_organization)
com_sum,social_sum,fund_sum,other_sum,total,creator,create_time,update_time,delete_type,tenant_key,payment_organization,
social_payment_com_base_string,fund_payment_com_base_string,other_payment_com_base_string)
<foreach collection="accounts" item="item" separator="union all">
select
#{item.employeeId,jdbcType=DOUBLE},
@ -811,7 +826,10 @@
#{item.updateTime},
#{item.deleteType},
#{item.tenantKey,jdbcType=VARCHAR},
#{item.paymentOrganization,jdbcType=DOUBLE}
#{item.paymentOrganization,jdbcType=DOUBLE},
#{item.socialPaymentComBaseString,jdbcType=VARCHAR},
#{item.fundPaymentComBaseString,jdbcType=VARCHAR},
#{item.otherPaymentComBaseString,jdbcType=VARCHAR}
from dual
</foreach>
</insert>
@ -821,7 +839,8 @@
(employee_id,bill_month,bill_status,payment_status,supplementary_month,supplementary_projects,resource_from,social_pay_org,social_account,social_scheme_id,social_payment_base_string,
fund_pay_org,fund_account,supplement_fund_account,fund_scheme_id,fund_payment_base_string,other_pay_org,other_scheme_id,other_payment_base_string,social_per_json,
social_per_sum,fund_per_json,fund_per_sum,other_per_json,other_per_sum,per_sum,social_com_json,social_com_sum,fund_com_json,fund_com_sum,other_com_json,other_com_sum,
com_sum,social_sum,fund_sum,other_sum,total,creator,create_time,update_time,delete_type,tenant_key,payment_organization)
com_sum,social_sum,fund_sum,other_sum,total,creator,create_time,update_time,delete_type,tenant_key,payment_organization,
social_payment_com_base_string,fund_payment_com_base_string,other_payment_com_base_string)
VALUES
(
#{item.employeeId},
@ -866,7 +885,10 @@
#{item.updateTime},
#{item.deleteType},
#{item.tenantKey},
#{item.paymentOrganization}
#{item.paymentOrganization},
#{item.socialPaymentComBaseString},
#{item.fundPaymentComBaseString},
#{item.otherPaymentComBaseString}
)
</foreach>
</insert>

View File

@ -18,10 +18,13 @@
<result column="other_pay_org" property="otherPayOrg"/>
<result column="social_scheme_id" property="socialSchemeId"/>
<result column="social_payment_base_string" property="socialPaymentBaseString"/>
<result column="social_payment_com_base_string" property="socialPaymentComBaseString"/>
<result column="fund_scheme_id" property="fundSchemeId"/>
<result column="fund_payment_base_string" property="fundPaymentBaseString"/>
<result column="fund_payment_com_base_string" property="fundPaymentComBaseString"/>
<result column="other_scheme_id" property="otherSchemeId"/>
<result column="other_payment_base_string" property="otherPaymentBaseString"/>
<result column="other_payment_com_base_string" property="otherPaymentComBaseString"/>
<result column="social_per_json" property="socialPerJson"/>
<result column="social_per_sum" property="socialPerSum"/>
<result column="fund_per_json" property="fundPerJson"/>
@ -68,10 +71,13 @@
, t.other_pay_org
, t.social_scheme_id
, t.social_payment_base_string
, t.social_payment_com_base_string
, t.fund_scheme_id
, t.fund_payment_base_string
, t.fund_payment_com_base_string
, t.other_scheme_id
, t.other_payment_base_string
, t.other_payment_com_base_string
, t.social_per_json
, t.social_per_sum
, t.fund_per_json
@ -130,7 +136,8 @@
(employee_id,bill_month,bill_status,payment_status,supplementary_month,resource_from,social_pay_org,social_account,social_scheme_id,social_payment_base_string,
fund_pay_org,fund_account,supplement_fund_account,fund_scheme_id,fund_payment_base_string,other_pay_org,other_scheme_id,other_payment_base_string,social_per_json,
social_per_sum,fund_per_json,fund_per_sum,other_per_json,other_per_sum,per_sum,social_com_json,social_com_sum,fund_com_json,fund_com_sum,other_com_json,other_com_sum,
com_sum,social_sum,fund_sum,other_sum,total,creator,create_time,update_time,delete_type,tenant_key,payment_organization)
com_sum,social_sum,fund_sum,other_sum,total,creator,create_time,update_time,delete_type,tenant_key,payment_organization,
social_payment_com_base_string,fund_payment_com_base_string,other_payment_com_base_string)
VALUES
<foreach collection="accounts" item="item" separator=",">
(
@ -175,7 +182,10 @@
#{item.updateTime},
#{item.deleteType},
#{item.tenantKey},
#{item.paymentOrganization}
#{item.paymentOrganization},
#{item.socialPaymentComBaseString},
#{item.fundPaymentComBaseString},
#{item.otherPaymentComBaseString}
)
</foreach>
</insert>
@ -184,7 +194,8 @@
(employee_id,bill_month,bill_status,payment_status,supplementary_month,resource_from,social_pay_org,social_account,social_scheme_id,social_payment_base_string,
fund_pay_org,fund_account,supplement_fund_account,fund_scheme_id,fund_payment_base_string,other_pay_org,other_scheme_id,other_payment_base_string,social_per_json,
social_per_sum,fund_per_json,fund_per_sum,other_per_json,other_per_sum,per_sum,social_com_json,social_com_sum,fund_com_json,fund_com_sum,other_com_json,other_com_sum,
com_sum,social_sum,fund_sum,other_sum,total,creator,create_time,update_time,delete_type,tenant_key,payment_organization)
com_sum,social_sum,fund_sum,other_sum,total,creator,create_time,update_time,delete_type,tenant_key,payment_organization,
social_payment_com_base_string,fund_payment_com_base_string,other_payment_com_base_string)
<foreach collection="accounts" item="item" separator="union all">
select
@ -229,7 +240,10 @@
#{item.updateTime},
#{item.deleteType},
#{item.tenantKey,jdbcType=VARCHAR},
#{item.paymentOrganization,jdbcType=DOUBLE}
#{item.paymentOrganization,jdbcType=DOUBLE},
#{item.socialPaymentComBaseString,jdbcType=VARCHAR},
#{item.fundPaymentComBaseString,jdbcType=VARCHAR},
#{item.otherPaymentComBaseString,jdbcType=VARCHAR}
from dual
</foreach>
</insert>
@ -239,7 +253,8 @@
(employee_id,bill_month,bill_status,payment_status,supplementary_month,resource_from,social_pay_org,social_account,social_scheme_id,social_payment_base_string,
fund_pay_org,fund_account,supplement_fund_account,fund_scheme_id,fund_payment_base_string,other_pay_org,other_scheme_id,other_payment_base_string,social_per_json,
social_per_sum,fund_per_json,fund_per_sum,other_per_json,other_per_sum,per_sum,social_com_json,social_com_sum,fund_com_json,fund_com_sum,other_com_json,other_com_sum,
com_sum,social_sum,fund_sum,other_sum,total,creator,create_time,update_time,delete_type,tenant_key,payment_organization)
com_sum,social_sum,fund_sum,other_sum,total,creator,create_time,update_time,delete_type,tenant_key,payment_organization,
social_payment_com_base_string,fund_payment_com_base_string,other_payment_com_base_string)
VALUES
(
#{item.employeeId},
@ -283,7 +298,10 @@
#{item.updateTime},
#{item.deleteType},
#{item.tenantKey},
#{item.paymentOrganization}
#{item.paymentOrganization},
#{item.socialPaymentComBaseString},
#{item.fundPaymentComBaseString},
#{item.otherPaymentComBaseString}
)
</foreach>
</insert>

View File

@ -14,6 +14,7 @@
<result column="payment_organization" property="paymentOrganization"/>
<result column="under_take" property="underTake"/>
<result column="fund_payment_base_string" property="fundPaymentBaseString"/>
<result column="fund_payment_com_base_string" property="fundPaymentComBaseString"/>
<result column="create_time" property="createTime"/>
<result column="update_time" property="updateTime"/>
<result column="creator" property="creator"/>
@ -35,6 +36,7 @@
, t.payment_organization
, t.under_take
, t.fund_payment_base_string
, t.fund_payment_com_base_string
, t.create_time
, t.update_time
, t.creator
@ -135,6 +137,7 @@
fund_end_time,
fund_start_time,
fund_payment_base_string,
fund_payment_com_base_string,
supplement_fund_account,
create_time,
creator,
@ -154,6 +157,7 @@
#{item.fundEndTime},
#{item.fundStartTime},
#{item.fundPaymentBaseString},
#{item.fundPaymentComBaseString},
#{item.supplementFundAccount},
#{item.createTime},
#{item.creator},
@ -175,6 +179,7 @@
fund_end_time,
fund_start_time,
fund_payment_base_string,
fund_payment_com_base_string,
supplement_fund_account,
create_time,
creator,
@ -193,6 +198,7 @@
#{item.fundEndTime,jdbcType=VARCHAR},
#{item.fundStartTime,jdbcType=VARCHAR},
#{item.fundPaymentBaseString,jdbcType=VARCHAR},
#{item.fundPaymentComBaseString,jdbcType=VARCHAR},
#{item.supplementFundAccount,jdbcType=VARCHAR},
#{item.createTime,jdbcType=DATE},
#{item.creator,jdbcType=DOUBLE},
@ -215,6 +221,7 @@
fund_end_time,
fund_start_time,
fund_payment_base_string,
fund_payment_com_base_string,
supplement_fund_account,
create_time,
creator,
@ -233,6 +240,7 @@
#{item.fundEndTime},
#{item.fundStartTime},
#{item.fundPaymentBaseString},
#{item.fundPaymentComBaseString},
#{item.supplementFundAccount},
#{item.createTime},
#{item.creator},
@ -311,6 +319,7 @@
<set>
welfare_type = #{welfareType},
fund_payment_base_string = #{fundPaymentBaseString},
fund_payment_com_base_string = #{fundPaymentComBaseString},
fund_scheme_id = #{fundSchemeId},
fund_end_time = #{fundEndTime},
fund_start_time = #{fundStartTime},
@ -353,6 +362,7 @@
fund_end_time,
fund_start_time,
fund_payment_base_string,
fund_payment_com_base_string,
supplement_fund_account,
create_time,
creator,
@ -371,6 +381,7 @@
#{fundEndTime},
#{fundStartTime},
#{fundPaymentBaseString},
#{fundPaymentComBaseString},
#{supplementFundAccount},
#{createTime},
#{creator},

View File

@ -12,6 +12,7 @@
<result column="adjust_before_base_value" property="adjustBeforeBaseValue"/>
<result column="adjust_after_base_value" property="adjustAfterBaseValue"/>
<result column="adjust_welfare_item_id" property="adjustWelfareItemId"/>
<result column="payment_scope" property="paymentScope"/>
<result column="operator" property="operator"/>
<result column="operate_time" property="operateTime"/>
<result column="create_time" property="createTime"/>
@ -33,6 +34,7 @@
, t.adjust_before_base_value
, t.adjust_after_base_value
, t.adjust_welfare_item_id
, t.payment_scope
, t.operator
, t.operate_time
, t.create_time
@ -48,7 +50,7 @@
adjust_before_scheme_id,adjust_after_scheme_id,
adjust_before_base_value,adjust_after_base_value,
adjust_welfare_item_id,operator,operate_time,
tenant_key,creator,delete_type,create_time,update_time)
tenant_key,creator,delete_type,create_time,update_time,payment_scope)
VALUES
<foreach collection="infos" item="item" separator=",">
(
@ -67,7 +69,8 @@
#{item.creator},
#{item.deleteType},
#{item.createTime},
#{item.updateTime}
#{item.updateTime},
#{item.paymentScope}
)
</foreach>
</insert>
@ -77,7 +80,7 @@
adjust_before_scheme_id,adjust_after_scheme_id,
adjust_before_base_value,adjust_after_base_value,
adjust_welfare_item_id,operator,operate_time,
tenant_key,creator,delete_type,create_time,update_time)
tenant_key,creator,delete_type,create_time,update_time,payment_scope)
<foreach collection="infos" item="item" separator="union all">
select
#{item.id,jdbcType=DOUBLE},
@ -95,7 +98,8 @@
#{item.creator,jdbcType=DOUBLE},
#{item.deleteType},
#{item.createTime},
#{item.updateTime}
#{item.updateTime},
#{item.paymentScope}
from dual
</foreach>
</insert>
@ -106,7 +110,7 @@
adjust_before_scheme_id,adjust_after_scheme_id,
adjust_before_base_value,adjust_after_base_value,
adjust_welfare_item_id,operator,operate_time,
tenant_key,creator,delete_type,create_time,update_time)
tenant_key,creator,delete_type,create_time,update_time,payment_scope)
VALUES
(
#{item.id},
@ -124,7 +128,8 @@
#{item.creator},
#{item.deleteType},
#{item.createTime},
#{item.updateTime}
#{item.updateTime},
#{item.paymentScope}
)
</foreach>
</insert>
@ -148,6 +153,7 @@
, eo.lastname as operatorName
, ee.lastname as employeeName
, p.name as paymentOrganizationName
, t.payment_scope
FROM hrsa_insurance_base_history t
LEFT JOIN hrmresource eo on eo.id = t.operator
LEFT JOIN hrmresource ee on ee.id = t.employee_id
@ -180,6 +186,7 @@
, eo.lastname as operatorName
, ee.lastname as employeeName
, p.name as paymentOrganizationName
, t.payment_scope
FROM hrsa_insurance_base_history t
LEFT JOIN hrmresource eo on eo.id = t.operator
LEFT JOIN hrmresource ee on ee.id = t.employee_id
@ -216,6 +223,7 @@
, eo.lastname as operatorName
, ee.username as employeeName
, p.name as paymentOrganizationName
, t.payment_scope
FROM hrsa_insurance_base_history t
LEFT JOIN hrmresource eo on eo.id = t.operator
LEFT JOIN hrsa_external_employee ee on ee.id = t.employee_id

View File

@ -12,6 +12,7 @@
<result column="payment_organization" property="paymentOrganization"/>
<result column="under_take" property="underTake"/>
<result column="other_payment_base_string" property="otherPaymentBaseString"/>
<result column="other_payment_com_base_string" property="otherPaymentComBaseString"/>
<result column="create_time" property="createTime"/>
<result column="update_time" property="updateTime"/>
<result column="creator" property="creator"/>
@ -31,6 +32,7 @@
, t.payment_organization
, t.under_take
, t.other_payment_base_string
, t.other_payment_com_base_string
, t.create_time
, t.update_time
, t.creator
@ -129,7 +131,8 @@
non_payment,
creator,
payment_organization,
other_payment_base_string)
other_payment_base_string,
other_payment_com_base_string)
VALUES
<foreach collection="otherSchemePOS" item="item" separator=",">
(
@ -146,7 +149,8 @@
#{item.nonPayment},
#{item.creator},
#{item.paymentOrganization},
#{item.otherPaymentBaseString}
#{item.otherPaymentBaseString},
#{item.otherPaymentComBaseString}
)
</foreach>
</insert>
@ -165,7 +169,8 @@
non_payment,
creator,
payment_organization,
other_payment_base_string)
other_payment_base_string,
other_payment_com_base_string)
<foreach collection="otherSchemePOS" item="item" separator="union all">
select
#{item.otherSchemeId,jdbcType=DOUBLE},
@ -181,7 +186,8 @@
#{item.nonPayment,jdbcType=INTEGER},
#{item.creator,jdbcType=DOUBLE},
#{item.paymentOrganization,jdbcType=DOUBLE},
#{item.otherPaymentBaseString,jdbcType=VARCHAR}
#{item.otherPaymentBaseString,jdbcType=VARCHAR},
#{item.otherPaymentComBaseString,jdbcType=VARCHAR}
from dual
</foreach>
</insert>
@ -201,7 +207,8 @@
non_payment,
creator,
payment_organization,
other_payment_base_string)
other_payment_base_string,
other_payment_com_base_string)
VALUES
(
#{item.otherSchemeId},
@ -217,7 +224,8 @@
#{item.nonPayment},
#{item.creator},
#{item.paymentOrganization},
#{item.otherPaymentBaseString}
#{item.otherPaymentBaseString},
#{item.otherPaymentComBaseString}
)
</foreach>
</insert>
@ -292,6 +300,7 @@
<set>
welfare_type = #{welfareType},
other_payment_base_string = #{otherPaymentBaseString},
other_payment_com_base_string = #{otherPaymentComBaseString},
other_scheme_id = #{otherSchemeId},
other_end_time = #{otherEndTime},
other_start_time = #{otherStartTime},
@ -340,7 +349,8 @@
non_payment,
creator,
payment_organization,
other_payment_base_string)
other_payment_base_string,
other_payment_com_base_string)
VALUES
(
#{otherSchemeId},
@ -356,7 +366,8 @@
#{nonPayment},
#{creator},
#{paymentOrganization},
#{otherPaymentBaseString}
#{otherPaymentBaseString},
#{otherPaymentComBaseString}
)
</insert>
</mapper>

View File

@ -13,6 +13,7 @@
<result column="payment_organization" property="paymentOrganization"/>
<result column="under_take" property="underTake"/>
<result column="social_payment_base_string" property="socialPaymentBaseString"/>
<result column="social_payment_com_base_string" property="socialPaymentComBaseString"/>
<result column="create_time" property="createTime"/>
<result column="update_time" property="updateTime"/>
<result column="creator" property="creator"/>
@ -33,6 +34,7 @@
, t.payment_organization
, t.under_take
, t.social_payment_base_string
, t.social_payment_com_base_string
, t.create_time
, t.update_time
, t.creator
@ -128,6 +130,7 @@
welfare_type,
delete_type,
social_payment_base_string,
social_payment_com_base_string,
social_scheme_id,
create_time,
social_end_time,
@ -146,6 +149,7 @@
#{item.welfareType},
#{item.deleteType},
#{item.socialPaymentBaseString},
#{item.socialPaymentComBaseString},
#{item.socialSchemeId},
#{item.createTime},
#{item.socialEndTime},
@ -166,6 +170,7 @@
welfare_type,
delete_type,
social_payment_base_string,
social_payment_com_base_string,
social_scheme_id,
create_time,
social_end_time,
@ -183,6 +188,7 @@
#{item.welfareType,jdbcType=INTEGER},
#{item.deleteType,jdbcType=INTEGER},
#{item.socialPaymentBaseString,jdbcType=VARCHAR},
#{item.socialPaymentComBaseString,jdbcType=VARCHAR},
#{item.socialSchemeId,jdbcType=DOUBLE},
#{item.createTime,jdbcType=DATE},
#{item.socialEndTime,jdbcType=VARCHAR},
@ -204,6 +210,7 @@
welfare_type,
delete_type,
social_payment_base_string,
social_payment_com_base_string,
social_scheme_id,
create_time,
social_end_time,
@ -221,6 +228,7 @@
#{item.welfareType},
#{item.deleteType},
#{item.socialPaymentBaseString},
#{item.socialPaymentComBaseString},
#{item.socialSchemeId},
#{item.createTime},
#{item.socialEndTime},
@ -955,6 +963,7 @@
<set>
welfare_type = #{welfareType},
social_payment_base_string = #{socialPaymentBaseString},
social_payment_com_base_string = #{socialPaymentComBaseString},
social_scheme_id = #{socialSchemeId},
social_end_time = #{socialEndTime},
social_start_time = #{socialStartTime},
@ -994,6 +1003,7 @@
welfare_type,
delete_type,
social_payment_base_string,
social_payment_com_base_string,
social_scheme_id,
create_time,
social_end_time,
@ -1011,6 +1021,7 @@
#{welfareType},
#{deleteType},
#{socialPaymentBaseString},
#{socialPaymentComBaseString},
#{socialSchemeId},
#{createTime},
#{socialEndTime},

View File

@ -4,10 +4,7 @@ import com.engine.salary.entity.datacollection.DataCollectionEmployee;
import com.engine.salary.entity.salaryacct.dto.ConsolidatedTaxDetailDTO;
import com.engine.salary.entity.salaryacct.dto.SalaryAcctResultDetailDTO;
import com.engine.salary.entity.salaryacct.dto.SalaryAcctResultListColumnDTO;
import com.engine.salary.entity.salaryacct.param.SalaryAcctCalculateParam;
import com.engine.salary.entity.salaryacct.param.SalaryAcctResultQueryParam;
import com.engine.salary.entity.salaryacct.param.SalaryAcctResultSaveParam;
import com.engine.salary.entity.salaryacct.param.SalaryAcctResultUpdateLockStatusParam;
import com.engine.salary.entity.salaryacct.param.*;
import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO;
import com.engine.salary.util.page.PageInfo;
@ -207,4 +204,10 @@ public interface SalaryAcctResultService {
* @return
*/
Boolean checkAuth(Long salaryAcctRecordId);
/**
* 薪资核算结果批量更新
* @param param
*/
void batchUpdate(SalaryAcctResultBatchUpdateParam param);
}

View File

@ -216,4 +216,6 @@ public interface SalarySendService {
void autoConfirmSalaryBill(List<Long> needAutoIds);
List<SalarySendPO> getByIds(List<Long> salarySendId);
List<SalarySendPO> listSome(SalarySendPO param);
}

View File

@ -1,6 +1,7 @@
package com.engine.salary.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.cloudstore.eccom.constant.WeaBoolAttr;
import com.cloudstore.eccom.pc.table.WeaTableColumn;
import com.engine.core.impl.Service;
@ -31,6 +32,8 @@ import java.util.stream.Collectors;
**/
public class ColumnBuildServiceImpl extends Service implements ColumnBuildService {
private SIArchivesBiz siArchivesBiz = new SIArchivesBiz();
private ICategoryMapper getICategoryMapper() {
return MapperProxyFactory.getProxy(ICategoryMapper.class);
}
@ -122,58 +125,128 @@ public class ColumnBuildServiceImpl extends Service implements ColumnBuildServic
}
private Map<Integer, Map<String, String>> buildPaymentTitle(List<InsuranceAccountDetailPO> pos, Map<String, String> categoryIdNameMap, Long employeeId, String tenantKey) {
boolean welBaseDiffSign = siArchivesBiz.isDiffWelBase();
Set<String> socailIds = new HashSet<>();
Set<String> fundIds = new HashSet<>();
Set<String> otherIds = new HashSet<>();
Set<String> socailComIds = new HashSet<>();
Set<String> fundComIds = new HashSet<>();
Set<String> otherComIds = new HashSet<>();
Map<Integer, Map<String, String>> result = new HashMap<>();
pos.stream().forEach(item -> {
if (StringUtils.isNotBlank(item.getSocialPaymentBaseString())) {
if (StringUtils.isNotBlank(item.getSocialPaymentBaseString()) || StringUtils.isNotBlank(item.getSocialPaymentComBaseString())) {
Map<String, String> socialJson = JSON.parseObject(item.getSocialPaymentBaseString(), new HashMap<String, String>().getClass());
if(socialJson!=null){
socialJson.forEach((k, v) -> {
socailIds.add(k);
});
}
//如果需要区分个人和公司福利基数
if (welBaseDiffSign) {
Map<String, Object> socialComJson = JSON.parseObject(item.getSocialPaymentComBaseString(), new TypeReference<Map<String, Object>>() {
});
if (socialComJson != null) {
socialComJson.forEach((k, v) -> socailComIds.add(k));
}
}
}
if (StringUtils.isNotBlank(item.getFundPaymentBaseString())) {
if (StringUtils.isNotBlank(item.getFundPaymentBaseString()) || StringUtils.isNotBlank(item.getFundPaymentComBaseString())) {
Map<String, String> fundJson = JSON.parseObject(item.getFundPaymentBaseString(), new HashMap<String, String>().getClass());
if(fundJson!=null){
fundJson.forEach((k, v) -> {
fundIds.add(k);
});
}
//如果需要区分个人和公司福利基数
if (welBaseDiffSign) {
Map<String, Object> fundComJson = JSON.parseObject(item.getFundPaymentComBaseString(), new TypeReference<Map<String, Object>>() {
});
if (fundComJson != null) {
fundComJson.forEach((k, v) -> fundComIds.add(k));
}
}
}
if (StringUtils.isNotBlank(item.getOtherPaymentBaseString())) {
if (StringUtils.isNotBlank(item.getOtherPaymentBaseString()) || StringUtils.isNotBlank(item.getOtherPaymentComBaseString())) {
Map<String, String> otherJson = JSON.parseObject(item.getOtherPaymentBaseString(), new HashMap<String, String>().getClass());
if(otherJson!=null){
otherJson.forEach((k, v) -> {
otherIds.add(k);
});
}
//如果需要区分个人和公司福利基数
if (welBaseDiffSign) {
Map<String, Object> otherComJson = JSON.parseObject(item.getOtherPaymentComBaseString(), new TypeReference<Map<String, Object>>() {
});
if (otherComJson != null) {
otherComJson.forEach((k, v) -> otherComIds.add(k));
}
}
}
});
Map<String, String> socialColumns = new HashMap<>();
Map<String, String> fundColumns = new HashMap<>();
Map<String, String> otherColumns = new HashMap<>();
socailIds.stream().forEach(social -> {
if (categoryIdNameMap.containsKey(social)) {
socialColumns.put(categoryIdNameMap.get(social) + SalaryI18nUtil.getI18nLabel(100293, "申报基数"), social + "socialBase");
}
});
fundIds.stream().forEach(social -> {
if (categoryIdNameMap.containsKey(social)) {
fundColumns.put(categoryIdNameMap.get(social) + SalaryI18nUtil.getI18nLabel( 100293, "申报基数"), social + "fundBase");
}
});
otherIds.stream().forEach(social -> {
if (categoryIdNameMap.containsKey(social)) {
otherColumns.put(categoryIdNameMap.get(social) + SalaryI18nUtil.getI18nLabel( 100293, "申报基数"), social + "otherBase");
}
});
Map<String, String> socialComColumns = new HashMap<>();
Map<String, String> fundComColumns = new HashMap<>();
Map<String, String> otherComColumns = new HashMap<>();
if (welBaseDiffSign) {
socailIds.stream().forEach(social -> {
if (categoryIdNameMap.containsKey(social)) {
socialColumns.put(categoryIdNameMap.get(social) + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel( 0, "个人"), social + "socialPerBase");
}
});
fundIds.stream().forEach(social -> {
if (categoryIdNameMap.containsKey(social)) {
fundColumns.put(categoryIdNameMap.get(social) + SalaryI18nUtil.getI18nLabel( 0, "申报基数") + SalaryI18nUtil.getI18nLabel( 0, "个人"), social + "fundPerBase");
}
});
otherIds.stream().forEach(social -> {
if (categoryIdNameMap.containsKey(social)) {
otherColumns.put(categoryIdNameMap.get(social) + SalaryI18nUtil.getI18nLabel( 0, "申报基数") + SalaryI18nUtil.getI18nLabel( 0, "个人"), social + "otherPerBase");
}
});
socailComIds.stream().forEach(social -> {
if (categoryIdNameMap.containsKey(social)) {
socialComColumns.put(categoryIdNameMap.get(social) + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel( 0, "单位"), social + "socialComBase");
}
});
fundComIds.stream().forEach(social -> {
if (categoryIdNameMap.containsKey(social)) {
fundComColumns.put(categoryIdNameMap.get(social) + SalaryI18nUtil.getI18nLabel( 0, "申报基数") + SalaryI18nUtil.getI18nLabel( 0, "单位"), social + "fundComBase");
}
});
otherComIds.stream().forEach(social -> {
if (categoryIdNameMap.containsKey(social)) {
otherComColumns.put(categoryIdNameMap.get(social) + SalaryI18nUtil.getI18nLabel( 0, "申报基数") + SalaryI18nUtil.getI18nLabel( 0, "单位"), social + "otherComBase");
}
});
} else {
socailIds.stream().forEach(social -> {
if (categoryIdNameMap.containsKey(social)) {
socialColumns.put(categoryIdNameMap.get(social) + SalaryI18nUtil.getI18nLabel(0, "申报基数"), social + "socialBase");
}
});
fundIds.stream().forEach(social -> {
if (categoryIdNameMap.containsKey(social)) {
fundColumns.put(categoryIdNameMap.get(social) + SalaryI18nUtil.getI18nLabel( 0, "申报基数"), social + "fundBase");
}
});
otherIds.stream().forEach(social -> {
if (categoryIdNameMap.containsKey(social)) {
otherColumns.put(categoryIdNameMap.get(social) + SalaryI18nUtil.getI18nLabel( 0, "申报基数"), social + "otherBase");
}
});
}
// map根据value排序
LinkedHashMap<String, String> socialColumnsWithAscValue = socialColumns.entrySet().stream()
.sorted(Map.Entry.comparingByValue())
@ -188,6 +261,24 @@ public class ColumnBuildServiceImpl extends Service implements ColumnBuildServic
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue,
LinkedHashMap::new));
if (welBaseDiffSign) {
LinkedHashMap<String, String> socialComMapWithAscKey = socialComColumns.entrySet().stream()
.sorted(Map.Entry.comparingByKey())
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue,
LinkedHashMap::new));
LinkedHashMap<String, String> fundComMapWithAscKey = fundComColumns.entrySet().stream()
.sorted(Map.Entry.comparingByKey())
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue,
LinkedHashMap::new));
LinkedHashMap<String, String> otherComMapWithAscKey = otherComColumns.entrySet().stream()
.sorted(Map.Entry.comparingByKey())
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue,
LinkedHashMap::new));
socialColumnsWithAscValue.putAll(socialComMapWithAscKey);
fundColumnsWithAscValue.putAll(fundComMapWithAscKey);
otherColumnsWithAscValue.putAll(otherComMapWithAscKey);
}
result.put(WelfareTypeEnum.SOCIAL_SECURITY.getValue(), socialColumnsWithAscValue);
result.put(WelfareTypeEnum.ACCUMULATION_FUND.getValue(), fundColumnsWithAscValue);
result.put(WelfareTypeEnum.OTHER.getValue(), otherColumnsWithAscValue);

View File

@ -1,6 +1,7 @@
package com.engine.salary.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
import com.engine.salary.biz.SIArchivesBiz;
@ -15,6 +16,7 @@ import com.engine.salary.entity.taxagent.po.TaxAgentPO;
import com.engine.salary.enums.UserStatusEnum;
import com.engine.salary.enums.siaccount.BillStatusEnum;
import com.engine.salary.enums.siaccount.ResourceFromEnum;
import com.engine.salary.enums.sicategory.PaymentScopeEnum;
import com.engine.salary.mapper.datacollection.EmployMapper;
import com.engine.salary.mapper.sischeme.InsuranceSchemeMapper;
import com.engine.salary.mapper.taxagent.TaxAgentMapper;
@ -60,8 +62,11 @@ public class RecordsBuildServiceImpl extends Service implements RecordsBuildServ
return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user);
}
private SIArchivesBiz siArchivesBiz = new SIArchivesBiz();
@Override
public List<Map<String, Object>> buildCommonRecords(List<InsuranceAccountDetailPO> list, Long employeeId) {
boolean welBaseDiffSign = siArchivesBiz.isDiffWelBase();
List<Map<String, Object>> result = new ArrayList<>();
if (CollectionUtils.isEmpty(list)) {
return result;
@ -99,34 +104,130 @@ public class RecordsBuildServiceImpl extends Service implements RecordsBuildServ
record.put("socialAccount", item.getSocialAccount());
record.put("socialSchemeName", getInsuranceSchemeMapper().querySchemeName(item.getSocialSchemeId()));
if (StringUtils.isNotEmpty(item.getSocialPaymentBaseString())) {
if (StringUtils.isNotEmpty(item.getSocialPaymentBaseString()) || StringUtils.isNotEmpty(item.getSocialPaymentComBaseString())) {
Map<String, Object> socialJson = JSON.parseObject(item.getSocialPaymentBaseString(), new HashMap<String, Object>().getClass());
if(socialJson!=null){
socialJson.forEach((k, v) -> {
record.put(k + "socialBase", (String) v);
// if(socialJson!=null){
// socialJson.forEach((k, v) -> {
// record.put(k + "socialBase", (String) v);
// });
// }
if (welBaseDiffSign) {
if (socialJson != null) {
//查询该福利方案下开启缴纳的福利项
List<Long> insuranceIdList = siArchivesBiz.payInsuranceIds(item.getSocialSchemeId(), PaymentScopeEnum.SCOPE_PERSON.getValue());
socialJson.forEach((k, v) -> {
if (insuranceIdList.contains(Long.valueOf(k))) {
record.put(k + "socialPerBase", v);
}
});
}
Map<String, Object> socialComJson = JSON.parseObject(item.getSocialPaymentComBaseString(), new TypeReference<Map<String, Object>>() {
});
if (socialComJson != null) {
//查询该福利方案下开启缴纳的福利项
List<Long> insuranceIdList = siArchivesBiz.payInsuranceIds(item.getSocialSchemeId(),PaymentScopeEnum.SCOPE_COMPANY.getValue());
socialComJson.forEach((k, v) -> {
if (insuranceIdList.contains(Long.valueOf(k))) {
record.put(k + "socialComBase", v);
}
});
}
} else {
if (socialJson != null) {
//查询该福利方案下开启缴纳的福利项
List<Long> insuranceIdList = siArchivesBiz.payInsuranceIds(item.getSocialSchemeId());
socialJson.forEach((k, v) -> {
if (insuranceIdList.contains(Long.valueOf(k))) {
record.put(k + "socialBase", v);
}
});
}
}
}
record.put("fundPayOrg", item.getFundPayOrg() == null ? "" : (paymentMap.getOrDefault(item.getFundPayOrg(),TaxAgentPO.builder().build())).getName());
record.put("fundAccount", item.getFundAccount());
record.put("fundSchemeName", getInsuranceSchemeMapper().querySchemeName(item.getFundSchemeId()));
record.put("supplementFundAccount", item.getSupplementFundAccount());
if (StringUtils.isNotEmpty(item.getFundPaymentBaseString())) {
Map<String, Object> socialJson = JSON.parseObject(item.getFundPaymentBaseString(), new HashMap<String, Object>().getClass());
if(socialJson!=null){
socialJson.forEach((k, v) -> {
record.put(k + "fundBase", (String) v);
if (StringUtils.isNotEmpty(item.getFundPaymentBaseString()) || StringUtils.isNotEmpty(item.getFundPaymentComBaseString())) {
Map<String, Object> fundJson = JSON.parseObject(item.getFundPaymentBaseString(), new HashMap<String, Object>().getClass());
// if(fundJson!=null){
// fundJson.forEach((k, v) -> {
// record.put(k + "fundBase", (String) v);
// });
// }
if (welBaseDiffSign) {
if (fundJson != null) {
//查询该福利方案下开启缴纳的福利项
List<Long> insuranceIdList = siArchivesBiz.payInsuranceIds(item.getFundSchemeId(),PaymentScopeEnum.SCOPE_PERSON.getValue());
fundJson.forEach((k, v) -> {
if (insuranceIdList.contains(Long.valueOf(k))) {
record.put(k + "fundPerBase", v);
}
});
}
Map<String, Object> fundComJson = JSON.parseObject(item.getFundPaymentComBaseString(), new TypeReference<Map<String, Object>>() {
});
if (fundComJson != null) {
//查询该福利方案下开启缴纳的福利项
List<Long> insuranceIdList = siArchivesBiz.payInsuranceIds(item.getFundSchemeId(),PaymentScopeEnum.SCOPE_COMPANY.getValue());
fundComJson.forEach((k, v) -> {
if (insuranceIdList.contains(Long.valueOf(k))) {
record.put(k + "fundComBase", v);
}
});
}
} else {
if (fundJson != null) {
//查询该福利方案下开启缴纳的福利项
List<Long> insuranceIdList = siArchivesBiz.payInsuranceIds(item.getFundSchemeId());
fundJson.forEach((k, v) -> {
if (insuranceIdList.contains(Long.valueOf(k))) {
record.put(k + "fundBase", v);
}
});
}
}
}
record.put("otherPayOrg", item.getOtherPayOrg() == null ? "" : (paymentMap.getOrDefault(item.getOtherPayOrg(),TaxAgentPO.builder().build())).getName());
record.put("otherSchemeName", getInsuranceSchemeMapper().querySchemeName(item.getOtherSchemeId()));
if (StringUtils.isNotEmpty(item.getOtherPaymentBaseString())) {
Map<String, Object> socialJson = JSON.parseObject(item.getOtherPaymentBaseString(), new HashMap<String, Object>().getClass());
if(socialJson!=null){
socialJson.forEach((k, v) -> {
record.put(k + "otherBase", (String) v);
if (StringUtils.isNotEmpty(item.getOtherPaymentBaseString()) || StringUtils.isNotEmpty(item.getOtherPaymentComBaseString())) {
Map<String, Object> otherJson = JSON.parseObject(item.getOtherPaymentBaseString(), new HashMap<String, Object>().getClass());
// if(otherJson!=null){
// otherJson.forEach((k, v) -> {
// record.put(k + "otherBase", (String) v);
// });
// }
if (welBaseDiffSign) {
if (otherJson != null) {
//查询该福利方案下开启缴纳的福利项
List<Long> insuranceIdList = siArchivesBiz.payInsuranceIds(item.getOtherSchemeId(),PaymentScopeEnum.SCOPE_PERSON.getValue());
otherJson.forEach((k, v) -> {
if (insuranceIdList.contains(Long.valueOf(k))) {
record.put(k + "otherPerBase", v);
}
});
}
Map<String, Object> otherComJson = JSON.parseObject(item.getOtherPaymentComBaseString(), new TypeReference<Map<String, Object>>() {
});
if (otherComJson != null) {
//查询该福利方案下开启缴纳的福利项
List<Long> insuranceIdList = siArchivesBiz.payInsuranceIds(item.getOtherSchemeId(),PaymentScopeEnum.SCOPE_COMPANY.getValue());
otherComJson.forEach((k, v) -> {
if (insuranceIdList.contains(Long.valueOf(k))) {
record.put(k + "otherComBase", v);
}
});
}
} else {
if (otherJson != null) {
//查询该福利方案下开启缴纳的福利项
List<Long> insuranceIdList = siArchivesBiz.payInsuranceIds(item.getOtherSchemeId());
otherJson.forEach((k, v) -> {
if (insuranceIdList.contains(Long.valueOf(k))) {
record.put(k + "otherBase", v);
}
});
}
}
}
if (StringUtils.isNotEmpty(item.getSocialPerJson())) {

View File

@ -2,6 +2,7 @@ package com.engine.salary.service.impl;
import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
import com.engine.salary.biz.SIArchivesBiz;
import com.engine.salary.encrypt.EncryptUtil;
import com.engine.salary.entity.siaccount.bo.InsuranceComparisonResultBO;
import com.engine.salary.entity.siaccount.dto.InsuranceComparisonResultListDTO;
@ -24,6 +25,7 @@ import com.engine.salary.sys.service.SalarySysConfService;
import com.engine.salary.sys.service.impl.SalarySysConfServiceImpl;
import com.engine.salary.util.db.MapperProxyFactory;
import com.engine.salary.util.excel.ExcelUtil;
import com.engine.salary.util.excel.ExcelUtilPlus;
import com.engine.salary.util.page.Column;
import com.engine.salary.util.page.PageInfo;
import com.engine.salary.util.page.SalaryPageUtil;
@ -45,6 +47,8 @@ import java.util.stream.Collectors;
public class SIAComparisonResultServiceImpl extends Service implements SIAComparisonResultService {
private EncryptUtil encryptUtil = new EncryptUtil();
private SIArchivesBiz siArchivesBiz = new SIArchivesBiz();
private InsuranceExportMapper getInsuranceExportMapper() {
return MapperProxyFactory.getProxy(InsuranceExportMapper.class);
}
@ -131,7 +135,7 @@ public class SIAComparisonResultServiceImpl extends Service implements SIACompar
String sheetName = "线下对比结果";
return ExcelUtil.genWorkbookV2(rows, sheetName);
return ExcelUtilPlus.genWorkbookV2(rows, sheetName);
}
@ -140,6 +144,7 @@ public class SIAComparisonResultServiceImpl extends Service implements SIACompar
*/
private InsuranceComparisonResultListDTO listByParam(boolean needPage, InsuranceComparisonResultQueryParam queryParam) {
boolean welBaseDiffSign = siArchivesBiz.isDiffWelBase();
//排序配置
OrderRuleVO orderRule = getSalarySysConfService(user).orderRule();
@ -200,10 +205,10 @@ public class SIAComparisonResultServiceImpl extends Service implements SIACompar
Set<Long> insurancePerPaySet = new HashSet<>(insurancePerPayIds);
Set<Long> insuranceComPaySet = new HashSet<>(insuranceComPayIds);
//3-构建福利核算对比结果列表表头
List<Column> weaTableColumns = InsuranceComparisonResultBO.buildTableColumns4ComparisonResult(insuranceBaseSet, insurancePerPaySet, insuranceComPaySet);
List<Column> weaTableColumns = InsuranceComparisonResultBO.buildTableColumns4ComparisonResult(insuranceBaseSet, insurancePerPaySet, insuranceComPaySet, welBaseDiffSign);
//4-通过线上线下两份数据获得对比结果
Map<Long, String> schemeIdNameMap = getSISchemeService(user).getSchemeIdNameMap();
List<Map<String, Object>> resultMapList = InsuranceComparisonResultBO.buildComparisonTableData(accountExportPOS, excelAccountExportPOS, schemeIdNameMap);
List<Map<String, Object>> resultMapList = InsuranceComparisonResultBO.buildComparisonTableData(accountExportPOS, excelAccountExportPOS, schemeIdNameMap, welBaseDiffSign);
// 系统值和线下值一致的人员
if (queryParam.isOnlyDiffEmployee()) {
@ -227,7 +232,7 @@ public class SIAComparisonResultServiceImpl extends Service implements SIACompar
}
private Set<String> welfareInfo() {
boolean welBaseDiffSign = siArchivesBiz.isDiffWelBase();
Set<String> info = new HashSet<>();
List<ICategoryPO> listAll = getICategoryMapper().listAll();
@ -235,18 +240,37 @@ public class SIAComparisonResultServiceImpl extends Service implements SIACompar
List<ICategoryPO> fundWelfareList = listAll.stream().filter(e -> e.getWelfareType() == 2).collect(Collectors.toList());
List<ICategoryPO> otherWelfareList = listAll.stream().filter(e -> e.getWelfareType() == 3).collect(Collectors.toList());
//组装社保基数
for (ICategoryPO po : socialWelfareList) {
info.add(po.getId() + "socialBase");
}
//组装公积金基数
for (ICategoryPO po : fundWelfareList) {
info.add(po.getId() + "fundBase");
}
//组装其他福利基数
for (ICategoryPO po : otherWelfareList) {
info.add(po.getId() + "otherBase");
if (welBaseDiffSign) {
//组装社保基数
for (ICategoryPO po : socialWelfareList) {
info.add(po.getId() + "socialPerBase");
info.add(po.getId() + "socialComBase");
}
//组装公积金基数
for (ICategoryPO po : fundWelfareList) {
info.add(po.getId() + "fundPerBase");
info.add(po.getId() + "fundComBase");
}
//组装其他福利基数
for (ICategoryPO po : otherWelfareList) {
info.add(po.getId() + "otherPerBase");
info.add(po.getId() + "otherComBase");
}
} else {
//组装社保基数
for (ICategoryPO po : socialWelfareList) {
info.add(po.getId() + "socialBase");
}
//组装公积金基数
for (ICategoryPO po : fundWelfareList) {
info.add(po.getId() + "fundBase");
}
//组装其他福利基数
for (ICategoryPO po : otherWelfareList) {
info.add(po.getId() + "otherBase");
}
}
//社保个人生育保险个人工伤保险个人失业保险个人养老保险个人医疗保险个人
for (ICategoryPO po : socialWelfareList) {
info.add(po.getId() + "socialPer");

View File

@ -65,6 +65,7 @@ import com.engine.salary.util.db.MapperProxyFactory;
import com.engine.salary.util.excel.ExcelParseHelper;
import com.engine.salary.util.excel.ExcelSupport;
import com.engine.salary.util.excel.ExcelUtil;
import com.engine.salary.util.excel.ExcelUtilPlus;
import com.engine.salary.util.page.Column;
import com.engine.salary.util.page.PageInfo;
import com.engine.salary.util.page.SalaryPageUtil;
@ -2221,7 +2222,79 @@ public class SIAccountServiceImpl extends Service implements SIAccountService {
*/
@Override
public XSSFWorkbook exportComparisonWelfareTemplate(InsuranceAccountDetailParam param) {
Map<String, List<Object>> welColumnMap = createWelColumnMap(param);
List<Object> headerList = Lists.newArrayList(SalaryI18nUtil.getI18nLabel(85429, "姓名"),
SalaryI18nUtil.getI18nLabel(86185, "部门"),
SalaryI18nUtil.getI18nLabel(86186, "手机号"),
SalaryI18nUtil.getI18nLabel(86317, "工号"),
SalaryI18nUtil.getI18nLabel(86187, "员工状态"),
SalaryI18nUtil.getI18nLabel(100377, "数据来源"),
SalaryI18nUtil.getI18nLabel(91325, "个税扣缴义务人"));
headerList.add(SalaryI18nUtil.getI18nLabel(91324, "社保账号"));
headerList.add(SalaryI18nUtil.getI18nLabel(91323, "社保方案名称"));
//组装社保基数
if (welColumnMap.get("socialBase") != null) {
headerList.addAll(welColumnMap.get("socialBase"));
}
headerList.add(SalaryI18nUtil.getI18nLabel(91486, "公积金账号"));
headerList.add(SalaryI18nUtil.getI18nLabel(91485, "公积金方案名称"));
//组装公积金基数
if (welColumnMap.get("fundBase") != null) {
headerList.addAll(welColumnMap.get("fundBase"));
}
headerList.add(SalaryI18nUtil.getI18nLabel(91487, "补充公积金账号"));
headerList.add(SalaryI18nUtil.getI18nLabel(91496, "其他福利方案名称"));
//组装其他福利基数
if (welColumnMap.get("otherBase") != null) {
headerList.addAll(welColumnMap.get("otherBase"));
}
//社保个人生育保险个人工伤保险个人失业保险个人养老保险个人医疗保险个人
if (welColumnMap.get("socialPer") != null) {
headerList.addAll(welColumnMap.get("socialPer"));
}
headerList.add(SalaryI18nUtil.getI18nLabel(100388, "社保个人合计"));
//住房公积金个人补充住房公积金个人
if (welColumnMap.get("fundPer") != null) {
headerList.addAll(welColumnMap.get("fundPer"));
}
headerList.add(SalaryI18nUtil.getI18nLabel(100390, "公积金个人合计"));
//其他个人比如企业年金个人
if (welColumnMap.get("otherPer") != null) {
headerList.addAll(welColumnMap.get("otherPer"));
}
headerList.add(SalaryI18nUtil.getI18nLabel(100392, "其他福利个人合计"));
headerList.add(SalaryI18nUtil.getI18nLabel(100393, "个人合计"));
//社保单位生育保险单位工伤保险单位失业保险单位养老保险单位医疗保险单位
if (welColumnMap.get("socialCom") != null) {
headerList.addAll(welColumnMap.get("socialCom"));
}
headerList.add(SalaryI18nUtil.getI18nLabel(100394, "社保单位合计"));
//住房公积金单位补充住房公积金单位
if (welColumnMap.get("fundCom") != null) {
headerList.addAll(welColumnMap.get("fundCom"));
}
headerList.add(SalaryI18nUtil.getI18nLabel(100395, "公积金单位合计"));
//其他单位比如企业年金单位
if (welColumnMap.get("otherCom") != null) {
headerList.addAll(welColumnMap.get("otherCom"));
}
headerList.add(SalaryI18nUtil.getI18nLabel(100396, "其他福利单位合计"));
headerList.add(SalaryI18nUtil.getI18nLabel(100397, "单位合计"));
headerList.add(SalaryI18nUtil.getI18nLabel(100398, "社保合计"));
headerList.add(SalaryI18nUtil.getI18nLabel(100399, "公积金合计"));
headerList.add(SalaryI18nUtil.getI18nLabel(100400, "其他福利合计"));
headerList.add(SalaryI18nUtil.getI18nLabel(93278, "合计"));
List<List<Object>> rows = new ArrayList<>();
rows.add(headerList);
String sheetName = "福利核算-线下对比导入模板";
return ExcelUtilPlus.genWorkbookV2(rows, sheetName);
}
public Map<String, List<Object>> createWelColumnMap(InsuranceAccountDetailParam param) {
boolean welBaseDiffSign = siArchivesBiz.isDiffWelBase();
//查询线上福利核算记录
InsuranceExportParam insuranceExportParam = new InsuranceExportParam();
insuranceExportParam.setBillMonth(param.getBillMonth());
@ -2265,77 +2338,238 @@ public class SIAccountServiceImpl extends Service implements SIAccountService {
List<ICategoryPO> fundWelComList = listAll.stream().filter(e -> e.getWelfareType() == 2 && e.getIsUse() == 1 && insuranceComPaySet.contains(e.getId())).collect(Collectors.toList());
List<ICategoryPO> otherWelComList = listAll.stream().filter(e -> e.getWelfareType() == 3 && e.getIsUse() == 1 && insuranceComPaySet.contains(e.getId())).collect(Collectors.toList());
List<Object> headerList = Lists.newArrayList(SalaryI18nUtil.getI18nLabel(85429, "姓名"),
SalaryI18nUtil.getI18nLabel(86185, "部门"),
SalaryI18nUtil.getI18nLabel(86186, "手机号"),
SalaryI18nUtil.getI18nLabel(86317, "工号"),
SalaryI18nUtil.getI18nLabel(86187, "员工状态"),
SalaryI18nUtil.getI18nLabel(100377, "数据来源"),
SalaryI18nUtil.getI18nLabel(91325, "个税扣缴义务人"));
headerList.add(SalaryI18nUtil.getI18nLabel(91324, "社保账号"));
headerList.add(SalaryI18nUtil.getI18nLabel(91323, "社保方案名称"));
// "失业保险申报基数"
// "生育保险申报基数"
// "养老保险申报基数"
// "医疗保险申报基数"
// "工伤保险申报基数"
for (ICategoryPO po : socialWelfareList) {
headerList.add(po.getInsuranceName() + "申报基数");
//组装社保基数
List<Object> socialBaseColumns = new ArrayList<>();
List<Object> socialPerBaseColumns = new ArrayList<>();
List<Object> socialComBaseColumns = Lists.newArrayList();
if (welBaseDiffSign) {
for (ICategoryPO po : socialWelfareList) {
socialPerBaseColumns.add(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"个人"));
socialComBaseColumns.add(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"单位"));
}
socialBaseColumns.addAll(socialPerBaseColumns);
socialBaseColumns.addAll(socialComBaseColumns);
} else {
for (ICategoryPO po : socialWelfareList) {
socialBaseColumns.add(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数"));
}
}
headerList.add(SalaryI18nUtil.getI18nLabel(91486, "公积金账号"));
headerList.add(SalaryI18nUtil.getI18nLabel(91485, "公积金方案名称"));
//组装公积金基数
for (ICategoryPO po : fundWelfareList) {
headerList.add(po.getInsuranceName() + "申报基数");
List<Object> fundBaseColumns = new ArrayList<>();
List<Object> fundPerBaseColumns = Lists.newArrayList();
List<Object> fundComBaseColumns = Lists.newArrayList();
if (welBaseDiffSign) {
for (ICategoryPO po : fundWelfareList) {
fundPerBaseColumns.add(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"个人"));
fundComBaseColumns.add(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"单位"));
}
fundBaseColumns.addAll(fundPerBaseColumns);
fundBaseColumns.addAll(fundComBaseColumns);
} else {
for (ICategoryPO po : fundWelfareList) {
fundBaseColumns.add(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数"));
}
}
headerList.add(SalaryI18nUtil.getI18nLabel(91487, "补充公积金账号"));
headerList.add(SalaryI18nUtil.getI18nLabel(91496, "其他福利方案名称"));
//组装其他福利基数
for (ICategoryPO po : otherWelfareList) {
headerList.add(po.getInsuranceName() + "申报基数");
List<Object> otherBaseColumns = new ArrayList<>();
List<Object> otherPerBaseColumns = new ArrayList<>();
List<Object> otherComBaseColumns = Lists.newArrayList();
if (welBaseDiffSign) {
for (ICategoryPO po : otherWelfareList) {
otherPerBaseColumns.add(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"个人"));
otherComBaseColumns.add(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"单位"));
}
otherBaseColumns.addAll(otherPerBaseColumns);
otherBaseColumns.addAll(otherComBaseColumns);
} else {
for (ICategoryPO po : otherWelfareList) {
otherBaseColumns.add(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数"));
}
}
//社保个人生育保险个人工伤保险个人失业保险个人养老保险个人医疗保险个人
List<Object> socialPerColumns = new ArrayList<>();
for (ICategoryPO po : socialWelPerList) {
socialPerColumns.add(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0,"个人"));
}
//住房公积金个人补充住房公积金个人
List<Object> fundPerColumns = new ArrayList<>();
for (ICategoryPO po : fundWelPerList) {
fundPerColumns.add(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0,"个人"));
}
//其他个人比如企业年金个人
List<Object> otherPerColumns = new ArrayList<>();
for (ICategoryPO po : otherWelPerList) {
otherPerColumns.add(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0,"个人"));
}
//社保单位生育保险单位工伤保险单位失业保险单位养老保险单位医疗保险单位
List<Object> socialComColumns = new ArrayList<>();
for (ICategoryPO po : socialWelComList) {
socialComColumns.add(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0,"单位"));
}
//住房公积金单位补充住房公积金单位
List<Object> fundComColumns = new ArrayList<>();
for (ICategoryPO po : fundWelComList) {
fundComColumns.add(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0,"单位"));
}
//其他单位比如企业年金单位
List<Object> otherComColumns = new ArrayList<>();
for (ICategoryPO po : otherWelComList) {
otherComColumns.add(po.getInsuranceName() + SalaryI18nUtil.getI18nLabel(0,"单位"));
}
Map<String, List<Object>> welColumnMap = new HashMap<>();
welColumnMap.put("socialPerBase", socialPerBaseColumns);
welColumnMap.put("fundPerBase", fundPerBaseColumns);
welColumnMap.put("otherPerBase", otherPerBaseColumns);
welColumnMap.put("socialComBase", socialComBaseColumns);
welColumnMap.put("fundComBase", fundComBaseColumns);
welColumnMap.put("otherComBase", otherComBaseColumns);
welColumnMap.put("socialBase", socialBaseColumns);
welColumnMap.put("fundBase", fundBaseColumns);
welColumnMap.put("otherBase", otherBaseColumns);
welColumnMap.put("socialPer", socialPerColumns);
welColumnMap.put("fundPer", fundPerColumns);
welColumnMap.put("otherPer", otherPerColumns);
welColumnMap.put("socialCom", socialComColumns);
welColumnMap.put("fundCom", fundComColumns);
welColumnMap.put("otherCom", otherComColumns);
return welColumnMap;
}
public Map<String, String> welColumnNameCodeMap(InsuranceAccountDetailParam param) {
boolean welBaseDiffSign = siArchivesBiz.isDiffWelBase();
//查询线上福利核算记录
InsuranceExportParam insuranceExportParam = new InsuranceExportParam();
insuranceExportParam.setBillMonth(param.getBillMonth());
insuranceExportParam.setPaymentOrganization(param.getPaymentOrganization());
List<AccountExportPO> accountExportPOS = getInsuranceExportMapper().exportAccount(param.getPaymentStatus(), insuranceExportParam);
//整理线上核算记录相关的福利方案并以此整理需要对比的福利项类别数据
Set<Long> welfareSchemeIds = new HashSet<>();
accountExportPOS.forEach(f -> {
welfareSchemeIds.add(f.getSocialSchemeId());
welfareSchemeIds.add(f.getFundSchemeId());
welfareSchemeIds.add(f.getOtherSchemeId());
});
List<InsuranceSchemeDetailPO> insuranceSchemeDetailPos = getInsuranceSchemeDetailMapper().listAll();
List<Long> insuranceBaseIds = insuranceSchemeDetailPos.stream()
.filter(f -> welfareSchemeIds.contains(f.getPrimaryId()) && f.getIsPayment() == 1)
.map(InsuranceSchemeDetailPO::getInsuranceId)
.collect(Collectors.toList());
List<Long> insurancePerPayIds = insuranceSchemeDetailPos.stream()
.filter(f -> welfareSchemeIds.contains(f.getPrimaryId()) && f.getIsPayment() == 1 && f.getPaymentScope() == 2)
.map(InsuranceSchemeDetailPO::getInsuranceId)
.collect(Collectors.toList());
List<Long> insuranceComPayIds = insuranceSchemeDetailPos.stream()
.filter(f -> welfareSchemeIds.contains(f.getPrimaryId()) && f.getIsPayment() == 1 && f.getPaymentScope() == 1)
.map(InsuranceSchemeDetailPO::getInsuranceId)
.collect(Collectors.toList());
Set<Long> insuranceBaseSet = new HashSet<>(insuranceBaseIds);
Set<Long> insurancePerPaySet = new HashSet<>(insurancePerPayIds);
Set<Long> insuranceComPaySet = new HashSet<>(insuranceComPayIds);
List<ICategoryPO> listAll = getICategoryMapper().listAll();
List<ICategoryPO> socialWelfareList = listAll.stream().filter(e -> e.getWelfareType() == 1 && e.getIsUse() == 1 && insuranceBaseSet.contains(e.getId())).collect(Collectors.toList());
List<ICategoryPO> fundWelfareList = listAll.stream().filter(e -> e.getWelfareType() == 2 && e.getIsUse() == 1 && insuranceBaseSet.contains(e.getId())).collect(Collectors.toList());
List<ICategoryPO> otherWelfareList = listAll.stream().filter(e -> e.getWelfareType() == 3 && e.getIsUse() == 1 && insuranceBaseSet.contains(e.getId())).collect(Collectors.toList());
List<ICategoryPO> socialWelPerList = listAll.stream().filter(e -> e.getWelfareType() == 1 && e.getIsUse() == 1 && insurancePerPaySet.contains(e.getId())).collect(Collectors.toList());
List<ICategoryPO> fundWelPerList = listAll.stream().filter(e -> e.getWelfareType() == 2 && e.getIsUse() == 1 && insurancePerPaySet.contains(e.getId())).collect(Collectors.toList());
List<ICategoryPO> otherWelPerList = listAll.stream().filter(e -> e.getWelfareType() == 3 && e.getIsUse() == 1 && insurancePerPaySet.contains(e.getId())).collect(Collectors.toList());
List<ICategoryPO> socialWelComList = listAll.stream().filter(e -> e.getWelfareType() == 1 && e.getIsUse() == 1 && insuranceComPaySet.contains(e.getId())).collect(Collectors.toList());
List<ICategoryPO> fundWelComList = listAll.stream().filter(e -> e.getWelfareType() == 2 && e.getIsUse() == 1 && insuranceComPaySet.contains(e.getId())).collect(Collectors.toList());
List<ICategoryPO> otherWelComList = listAll.stream().filter(e -> e.getWelfareType() == 3 && e.getIsUse() == 1 && insuranceComPaySet.contains(e.getId())).collect(Collectors.toList());
//组装社保基数
Map<String, String> result = new HashMap<>();
if (welBaseDiffSign) {
for (ICategoryPO po : socialWelfareList) {
result.put(Util.formatMultiLang(po.getInsuranceName(), String.valueOf(user.getLanguage()))
+ SalaryI18nUtil.getI18nLabel(0, "申报基数")
+ SalaryI18nUtil.getI18nLabel(0,"个人"), po.getId() + "socialPerBase");
result.put(Util.formatMultiLang(po.getInsuranceName(), String.valueOf(user.getLanguage()))
+ SalaryI18nUtil.getI18nLabel(0, "申报基数")
+ SalaryI18nUtil.getI18nLabel(0,"单位"), po.getId() + "socialComBase");
}
} else {
for (ICategoryPO po : socialWelfareList) {
result.put(Util.formatMultiLang(po.getInsuranceName(), String.valueOf(user.getLanguage()))
+ SalaryI18nUtil.getI18nLabel(0, "申报基数"), po.getId() + "socialBase");
}
}
//组装公积金基数
if (welBaseDiffSign) {
for (ICategoryPO po : fundWelfareList) {
result.put(Util.formatMultiLang(po.getInsuranceName(), String.valueOf(user.getLanguage()))
+ SalaryI18nUtil.getI18nLabel(0, "申报基数")
+ SalaryI18nUtil.getI18nLabel(0,"个人"), po.getId() + "fundPerBase");
result.put(Util.formatMultiLang(po.getInsuranceName(), String.valueOf(user.getLanguage()))
+ SalaryI18nUtil.getI18nLabel(0, "申报基数")
+ SalaryI18nUtil.getI18nLabel(0,"单位"), po.getId() + "fundComBase");
}
} else {
for (ICategoryPO po : fundWelfareList) {
result.put(Util.formatMultiLang(po.getInsuranceName(), String.valueOf(user.getLanguage()))
+ SalaryI18nUtil.getI18nLabel(0, "申报基数"), po.getId() + "fundBase");
}
}
//组装其他福利基数
if (welBaseDiffSign) {
for (ICategoryPO po : otherWelfareList) {
result.put(Util.formatMultiLang(po.getInsuranceName(), String.valueOf(user.getLanguage()))
+ SalaryI18nUtil.getI18nLabel(0, "申报基数")
+ SalaryI18nUtil.getI18nLabel(0,"个人"), po.getId() + "otherPerBase");
result.put(Util.formatMultiLang(po.getInsuranceName(), String.valueOf(user.getLanguage()))
+ SalaryI18nUtil.getI18nLabel(0, "申报基数")
+ SalaryI18nUtil.getI18nLabel(0,"单位"), po.getId() + "otherComBase");
}
} else {
for (ICategoryPO po : otherWelfareList) {
result.put(Util.formatMultiLang(po.getInsuranceName(), String.valueOf(user.getLanguage()))
+ SalaryI18nUtil.getI18nLabel(0, "申报基数"), po.getId() + "otherBase");
}
}
//社保个人生育保险个人工伤保险个人失业保险个人养老保险个人医疗保险个人
for (ICategoryPO po : socialWelPerList) {
headerList.add(po.getInsuranceName() + "个人");
result.put(Util.formatMultiLang(po.getInsuranceName(), String.valueOf(user.getLanguage()))
+ SalaryI18nUtil.getI18nLabel(0, "个人"), po.getId() + "socialPer");
}
headerList.add(SalaryI18nUtil.getI18nLabel(100388, "社保个人合计"));
//住房公积金个人补充住房公积金个人
for (ICategoryPO po : fundWelPerList) {
headerList.add(po.getInsuranceName() + "个人");
result.put(Util.formatMultiLang(po.getInsuranceName(), String.valueOf(user.getLanguage()))
+ SalaryI18nUtil.getI18nLabel(0, "个人"), po.getId() + "fundPer");
}
headerList.add(SalaryI18nUtil.getI18nLabel(100390, "公积金个人合计"));
//其他个人比如企业年金个人
for (ICategoryPO po : otherWelPerList) {
headerList.add(po.getInsuranceName() + "个人");
result.put(Util.formatMultiLang(po.getInsuranceName(), String.valueOf(user.getLanguage()))
+ SalaryI18nUtil.getI18nLabel(0, "个人"), po.getId() + "otherPer");
}
headerList.add(SalaryI18nUtil.getI18nLabel(100392, "其他福利个人合计"));
headerList.add(SalaryI18nUtil.getI18nLabel(100393, "个人合计"));
//社保单位生育保险单位工伤保险单位失业保险单位养老保险单位医疗保险单位
for (ICategoryPO po : socialWelComList) {
headerList.add(po.getInsuranceName() + "单位");
result.put(Util.formatMultiLang(po.getInsuranceName(), String.valueOf(user.getLanguage()))
+ SalaryI18nUtil.getI18nLabel(0, "单位"), po.getId() + "socialCom");
}
headerList.add(SalaryI18nUtil.getI18nLabel(100394, "社保单位合计"));
//住房公积金单位补充住房公积金单位
for (ICategoryPO po : fundWelComList) {
headerList.add(po.getInsuranceName() + "单位");
result.put(Util.formatMultiLang(po.getInsuranceName(), String.valueOf(user.getLanguage()))
+ SalaryI18nUtil.getI18nLabel(0, "单位"), po.getId() + "fundCom");
}
headerList.add(SalaryI18nUtil.getI18nLabel(100395, "公积金单位合计"));
//其他单位比如企业年金单位
for (ICategoryPO po : otherWelComList) {
headerList.add(po.getInsuranceName() + "单位");
result.put(Util.formatMultiLang(po.getInsuranceName(), String.valueOf(user.getLanguage()))
+ SalaryI18nUtil.getI18nLabel(0, "单位"), po.getId() + "otherCom");
}
headerList.add(SalaryI18nUtil.getI18nLabel(100396, "其他福利单位合计"));
headerList.add(SalaryI18nUtil.getI18nLabel(100397, "单位合计"));
headerList.add(SalaryI18nUtil.getI18nLabel(100398, "社保合计"));
headerList.add(SalaryI18nUtil.getI18nLabel(100399, "公积金合计"));
headerList.add(SalaryI18nUtil.getI18nLabel(100400, "其他福利合计"));
headerList.add(SalaryI18nUtil.getI18nLabel(93278, "合计"));
List<List<Object>> rows = new ArrayList<>();
rows.add(headerList);
String sheetName = "福利核算-线下对比导入模板";
return ExcelUtil.genWorkbookV2(rows, sheetName);
return result;
}
/**
@ -2386,6 +2620,13 @@ public class SIAccountServiceImpl extends Service implements SIAccountService {
}
String billMonth = importParam.getBillMonth();
// Map<String, String> welColumnNameCodeMap = welColumnNameCodeMap(InsuranceAccountDetailParam.builder()
// .billMonth(billMonth)
// .paymentOrganization(importParam.getPaymentOrganization())
// .paymentStatus(PaymentStatusEnum.COMMON.getValue())
// .build());
Map<String, String> welColumnNameCodeMap = new HashMap<>();
//存储待更新的InsuranceAccountDetailPO数据
List<ExcelInsuranceDetailPO> addCompareList = new ArrayList<>();
//记录待删除hrsa_excel_bill_detail.id
@ -2407,6 +2648,11 @@ public class SIAccountServiceImpl extends Service implements SIAccountService {
if (taxAgentPoList.size() == 1) {
paymentOrganization = taxAgentPoList.get(0).getId();
welColumnNameCodeMap = welColumnNameCodeMap(InsuranceAccountDetailParam.builder()
.billMonth(billMonth)
.paymentOrganization(paymentOrganization.toString())
.paymentStatus(PaymentStatusEnum.COMMON.getValue())
.build());
} else {
isError = true;
Map<String, String> errorMessageMap = Maps.newHashMap();
@ -2480,7 +2726,7 @@ public class SIAccountServiceImpl extends Service implements SIAccountService {
idList.addAll(ids);
}
//拼装待更新数据
addCompareList.add(handleExcelInsuranceDetail(billMonth, employeeId, paymentOrganization, map));
addCompareList.add(handleExcelInsuranceDetail(billMonth, employeeId, paymentOrganization, map, welColumnNameCodeMap));
}
@ -2519,7 +2765,8 @@ public class SIAccountServiceImpl extends Service implements SIAccountService {
* @param billMonth 对比的账单月份
* @param baseMap excel导入的对比数据
*/
private ExcelInsuranceDetailPO handleExcelInsuranceDetail(String billMonth, Long employeeId, Long paymentOrganization, Map<String, Object> baseMap) {
private ExcelInsuranceDetailPO handleExcelInsuranceDetail(String billMonth, Long employeeId, Long paymentOrganization, Map<String, Object> baseMap, Map<String, String> welColumnNameCodeMap) {
boolean welBaseDiffSign = siArchivesBiz.isDiffWelBase();
ExcelInsuranceDetailPO excelInsuranceDetailPO = new ExcelInsuranceDetailPO();
excelInsuranceDetailPO.setId(IdGenerator.generate());
@ -2535,6 +2782,10 @@ public class SIAccountServiceImpl extends Service implements SIAccountService {
Map<String, String> fundPaymentBaseMap = new HashMap<>();
Map<String, String> otherPaymentBaseMap = new HashMap<>();
Map<String, String> socialPaymentComBaseMap = new HashMap<>();
Map<String, String> fundPaymentComBaseMap = new HashMap<>();
Map<String, String> otherPaymentComBaseMap = new HashMap<>();
//筛选出福利核算项
Map<String, Object> toDealMap =
baseMap.entrySet().stream()
@ -2548,73 +2799,157 @@ public class SIAccountServiceImpl extends Service implements SIAccountService {
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
for(Map.Entry<String, Object> entry : toDealMap.entrySet()) {
//判断元素是否属于福利类
String keyName = entry.getKey();
//获取元素名后缀方便之后判断个人单位或者基数
String payScope = keyName.substring(keyName.length() - 2);
//获取福利类型
Integer welfareType;
//根据元素名后缀区分截取内容
String targetWelfareName;
if ("基数".equals(payScope)) {
targetWelfareName = entry.getKey().substring(0, keyName.length() - 4);
} else {
targetWelfareName = entry.getKey().substring(0, keyName.length() - 2);
}
List<ICategoryPO> categoryPOList = siCategoryBiz.listByName(targetWelfareName);
if (categoryPOList.size() == 1) {
ICategoryPO iCategoryPO = categoryPOList.get(0);
welfareType = iCategoryPO.getWelfareType();
// //判断元素是否属于福利类
// String keyName = entry.getKey();
// //获取元素名后缀方便之后判断个人单位或者基数
// String payScope = keyName.substring(keyName.length() - 2);
// //获取福利类型
// Integer welfareType;
// //根据元素名后缀区分截取内容
// String targetWelfareName;
// if ("基数".equals(payScope)) {
// targetWelfareName = entry.getKey().substring(0, keyName.length() - 4);
// } else {
// targetWelfareName = entry.getKey().substring(0, keyName.length() - 2);
// }
// List<ICategoryPO> categoryPOList = siCategoryBiz.listByName(targetWelfareName);
// if (categoryPOList.size() == 1) {
// ICategoryPO iCategoryPO = categoryPOList.get(0);
// welfareType = iCategoryPO.getWelfareType();
//
// switch (payScope) {
// case "个人":
// switch (welfareType) {
// case 1:
// socialPerMap.put(iCategoryPO.getId().toString(), entry.getValue().toString());
// break;
// case 2:
// fundPerMap.put(iCategoryPO.getId().toString(), entry.getValue().toString());
// break;
// case 3:
// otherPerMap.put(iCategoryPO.getId().toString(), entry.getValue().toString());
// break;
// default:
// throw new SalaryRunTimeException("福利类型不存在");
// }
// break;
// case "单位":
// switch (welfareType) {
// case 1:
// socialComMap.put(iCategoryPO.getId().toString(), entry.getValue().toString());
// break;
// case 2:
// fundComMap.put(iCategoryPO.getId().toString(), entry.getValue().toString());
// break;
// case 3:
// otherComMap.put(iCategoryPO.getId().toString(), entry.getValue().toString());
// break;
// default:
// throw new SalaryRunTimeException("福利类型不存在");
// }
// break;
// case "基数":
// switch (welfareType) {
// case 1:
// socialPaymentBaseMap.put(iCategoryPO.getId().toString(), entry.getValue().toString());
// break;
// case 2:
// fundPaymentBaseMap.put(iCategoryPO.getId().toString(), entry.getValue().toString());
// break;
// case 3:
// otherPaymentBaseMap.put(iCategoryPO.getId().toString(), entry.getValue().toString());
// break;
// default:
// throw new SalaryRunTimeException("福利类型不存在");
// }
// break;
// }
// }
switch (payScope) {
case "个人":
switch (welfareType) {
case 1:
socialPerMap.put(iCategoryPO.getId().toString(), entry.getValue().toString());
break;
case 2:
fundPerMap.put(iCategoryPO.getId().toString(), entry.getValue().toString());
break;
case 3:
otherPerMap.put(iCategoryPO.getId().toString(), entry.getValue().toString());
break;
default:
throw new SalaryRunTimeException("福利类型不存在");
}
break;
case "单位":
switch (welfareType) {
case 1:
socialComMap.put(iCategoryPO.getId().toString(), entry.getValue().toString());
break;
case 2:
fundComMap.put(iCategoryPO.getId().toString(), entry.getValue().toString());
break;
case 3:
otherComMap.put(iCategoryPO.getId().toString(), entry.getValue().toString());
break;
default:
throw new SalaryRunTimeException("福利类型不存在");
}
break;
case "基数":
switch (welfareType) {
case 1:
socialPaymentBaseMap.put(iCategoryPO.getId().toString(), entry.getValue().toString());
break;
case 2:
fundPaymentBaseMap.put(iCategoryPO.getId().toString(), entry.getValue().toString());
break;
case 3:
otherPaymentBaseMap.put(iCategoryPO.getId().toString(), entry.getValue().toString());
break;
default:
throw new SalaryRunTimeException("福利类型不存在");
}
break;
if (welColumnNameCodeMap.get(entry.getKey()) != null) {
String code = welColumnNameCodeMap.get(entry.getKey());
if (welBaseDiffSign) {
if (code.contains("socialPerBase")) {
code = code.replace("socialPerBase", "");
socialPaymentBaseMap.put(code, entry.getValue().toString());
continue;
}
if (code.contains("socialComBase")) {
code = code.replace("socialComBase", "");
socialPaymentComBaseMap.put(code, entry.getValue().toString());
continue;
}
if (code.contains("fundPerBase")) {
code = code.replace("fundPerBase", "");
fundPaymentBaseMap.put(code, entry.getValue().toString());
continue;
}
if (code.contains("fundComBase")) {
code = code.replace("fundComBase", "");
fundPaymentComBaseMap.put(code, entry.getValue().toString());
continue;
}
if (code.contains("otherPerBase")) {
code = code.replace("otherPerBase", "");
otherPaymentBaseMap.put(code, entry.getValue().toString());
continue;
}
if (code.contains("otherComBase")) {
code = code.replace("otherComBase", "");
otherPaymentComBaseMap.put(code, entry.getValue().toString());
continue;
}
} else {
if (code.contains("socialBase")) {
code = code.replace("socialBase", "");
socialPaymentBaseMap.put(code, entry.getValue().toString());
continue;
}
if (code.contains("fundBase")) {
code = code.replace("fundBase", "");
fundPaymentBaseMap.put(code, entry.getValue().toString());
continue;
}
if (code.contains("otherBase")) {
code = code.replace("otherBase", "");
otherPaymentBaseMap.put(code, entry.getValue().toString());
continue;
}
}
if (code.contains("socialPer") && !code.contains("socialPerBase")) {
code = code.replace("socialPer", "");
socialPerMap.put(code, entry.getValue().toString());
continue;
}
if (code.contains("fundPer") && !code.contains("fundPerBase")) {
code = code.replace("fundPer", "");
fundPerMap.put(code, entry.getValue().toString());
continue;
}
if (code.contains("otherPer") && !code.contains("otherPerBase")) {
code = code.replace("otherPer", "");
otherPerMap.put(code, entry.getValue().toString());
continue;
}
if (code.contains("socialCom") && !code.contains("socialComBase")) {
code = code.replace("socialCom", "");
socialComMap.put(code, entry.getValue().toString());
continue;
}
if (code.contains("fundCom") && !code.contains("fundComBase")) {
code = code.replace("fundCom", "");
fundComMap.put(code, entry.getValue().toString());
continue;
}
if (code.contains("otherCom") && !code.contains("otherComBase")) {
code = code.replace("otherCom", "");
otherComMap.put(code, entry.getValue().toString());
continue;
}
}
}
//设置社保个人和公司缴纳明细
@ -2631,6 +2966,10 @@ public class SIAccountServiceImpl extends Service implements SIAccountService {
excelInsuranceDetailPO.setFundPaymentBaseString(JSON.toJSONString(fundPaymentBaseMap));
excelInsuranceDetailPO.setOtherPaymentBaseString(JSON.toJSONString(otherPaymentBaseMap));
excelInsuranceDetailPO.setSocialPaymentComBaseString(JSON.toJSONString(socialPaymentComBaseMap));
excelInsuranceDetailPO.setFundPaymentComBaseString(JSON.toJSONString(fundPaymentComBaseMap));
excelInsuranceDetailPO.setOtherPaymentComBaseString(JSON.toJSONString(otherPaymentComBaseMap));
//组装新的insuranceAccountDetailPO对象数据
excelInsuranceDetailPO.setEmployeeId(employeeId);
excelInsuranceDetailPO.setBillMonth(billMonth);

View File

@ -20,6 +20,7 @@ import com.engine.salary.enums.salaryaccounting.EmployeeTypeEnum;
import com.engine.salary.enums.siaccount.EmployeeStatusEnum;
import com.engine.salary.enums.sicategory.DeleteTypeEnum;
import com.engine.salary.enums.sicategory.NonPaymentEnum;
import com.engine.salary.enums.sicategory.PaymentScopeEnum;
import com.engine.salary.enums.sicategory.WelfareTypeEnum;
import com.engine.salary.enums.taxagent.TaxAgentEmpChangeModuleEnum;
import com.engine.salary.exception.SalaryRunTimeException;
@ -141,7 +142,7 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService
@Override
public String insert(InsuranceArchivesSaveParam param) {
SIArchivesBiz siArchivesBiz = new SIArchivesBiz();
siArchivesBiz.insert(param, (long) user.getUID());
siArchivesBiz.insert(param, user);
return null;
}
@ -1158,6 +1159,19 @@ public class SIArchivesServiceImpl extends Service implements SIArchivesService
public PageInfo<InsuranceArchivesBaseHistoryDTO> historyListByEmployeeIdAndOperator(SIArchiveBaseHistoryListParam param) {
List<InsuranceArchivesBaseHistoryDTO> adjustHistoryDTOS = siArchivesBiz.getBaseHistoryByEmployeeIdAndOperator(param.getOperator(), param.getEmployeeId());
adjustHistoryDTOS.forEach(f -> {
if (StringUtils.isNotBlank(f.getPaymentScope())) {
if(f.getPaymentScope().equals(PaymentScopeEnum.SCOPE_PERSON.getValue().toString())) {
f.setPaymentScope(SalaryI18nUtil.getI18nLabel(0, "个人"));
} else if(f.getPaymentScope().equals(PaymentScopeEnum.SCOPE_COMPANY.getValue().toString())) {
f.setPaymentScope(SalaryI18nUtil.getI18nLabel(0, "公司"));
} else {
f.setPaymentScope(SalaryI18nUtil.getI18nLabel(0, "个人") + "," + SalaryI18nUtil.getI18nLabel(0, "公司"));
}
} else {
f.setPaymentScope(SalaryI18nUtil.getI18nLabel(0, "个人") + "," + SalaryI18nUtil.getI18nLabel(0, "公司"));
}
});
PageInfo<InsuranceArchivesBaseHistoryDTO> listPage = SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(),
adjustHistoryDTOS , InsuranceArchivesBaseHistoryDTO.class);

View File

@ -1,10 +1,12 @@
package com.engine.salary.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.cloudstore.eccom.pc.table.WeaTableColumn;
import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
import com.engine.salary.biz.SIAccountBiz;
import com.engine.salary.biz.SIArchivesBiz;
import com.engine.salary.encrypt.EncryptUtil;
import com.engine.salary.entity.siaccount.dto.InsuranceAccountViewListDTO;
import com.engine.salary.entity.siaccount.param.InsuranceAccountDetailParam;
@ -17,6 +19,7 @@ import com.engine.salary.enums.siaccount.BillStatusEnum;
import com.engine.salary.enums.siaccount.PaymentStatusEnum;
import com.engine.salary.enums.siaccount.ResourceFromEnum;
import com.engine.salary.enums.sicategory.DataTypeEnum;
import com.engine.salary.enums.sicategory.PaymentScopeEnum;
import com.engine.salary.enums.sicategory.WelfareTypeEnum;
import com.engine.salary.mapper.InsuranceExportMapper;
import com.engine.salary.mapper.siaccount.InsuranceAccountDetailMapper;
@ -37,6 +40,7 @@ import com.engine.salary.util.SalaryEnumUtil;
import com.engine.salary.util.SalaryI18nUtil;
import com.engine.salary.util.db.MapperProxyFactory;
import com.engine.salary.util.excel.ExcelUtil;
import com.engine.salary.util.excel.ExcelUtilPlus;
import org.springframework.beans.BeanUtils;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
@ -66,6 +70,8 @@ public class SIExportServiceImpl extends Service implements SIExportService {
private SIAccountBiz siAccountBiz = new SIAccountBiz();
private SIArchivesBiz siArchivesBiz = new SIArchivesBiz();
private SISchemeService getSISchemeService(User user) {
return ServiceUtil.getService(SISchemeServiceImpl.class, user);
}
@ -242,11 +248,12 @@ public class SIExportServiceImpl extends Service implements SIExportService {
}
excelSheetData.addAll(rows);
return ExcelUtil.genWorkbookV2(excelSheetData, sheetName, total);
return ExcelUtilPlus.genWorkbookV2(excelSheetData, sheetName, total);
}
@Override
public List<Map<String, Object>> buildCommonRecords(List<AccountExportPO> list) {
boolean welBaseDiffSign = siArchivesBiz.isDiffWelBase();
List<Map<String, Object>> result = new ArrayList<>();
List<TaxAgentPO> paymentList = getTaxAgentMapper().listAll();
@ -272,10 +279,42 @@ public class SIExportServiceImpl extends Service implements SIExportService {
record.put("socialSchemeName", schemeIdNameMap.get(item.getSocialSchemeId()));
if (StringUtils.isNotEmpty(item.getSocialPaymentBaseString())) {
Map<String, Object> socialJson = JSON.parseObject(item.getSocialPaymentBaseString(), new HashMap<String, Object>().getClass());
if (socialJson != null) {
socialJson.forEach((k, v) -> {
record.put(k + "socialBase", v);
// if (socialJson != null) {
// socialJson.forEach((k, v) -> {
// record.put(k + "socialBase", v);
// });
// }
if (welBaseDiffSign) {
if (socialJson != null) {
//查询该福利方案下开启缴纳的福利项
List<Long> insuranceIdList = siArchivesBiz.payInsuranceIds(item.getSocialSchemeId(), PaymentScopeEnum.SCOPE_PERSON.getValue());
socialJson.forEach((k, v) -> {
if (insuranceIdList.contains(Long.valueOf(k))) {
record.put(k + "socialPerBase", v);
}
});
}
Map<String, Object> socialComJson = JSON.parseObject(item.getSocialPaymentComBaseString(), new TypeReference<Map<String, Object>>() {
});
if (socialComJson != null) {
//查询该福利方案下开启缴纳的福利项
List<Long> insuranceIdList = siArchivesBiz.payInsuranceIds(item.getSocialSchemeId(),PaymentScopeEnum.SCOPE_COMPANY.getValue());
socialComJson.forEach((k, v) -> {
if (insuranceIdList.contains(Long.valueOf(k))) {
record.put(k + "socialComBase", v);
}
});
}
} else {
if (socialJson != null) {
//查询该福利方案下开启缴纳的福利项
List<Long> insuranceIdList = siArchivesBiz.payInsuranceIds(item.getSocialSchemeId());
socialJson.forEach((k, v) -> {
if (insuranceIdList.contains(Long.valueOf(k))) {
record.put(k + "socialBase", v);
}
});
}
}
}
@ -284,22 +323,86 @@ public class SIExportServiceImpl extends Service implements SIExportService {
record.put("fundSchemeName", schemeIdNameMap.get(item.getFundSchemeId()));
record.put("supplementFundAccount", item.getSupplementFundAccount());
if (StringUtils.isNotEmpty(item.getFundPaymentBaseString())) {
Map<String, Object> socialJson = JSON.parseObject(item.getFundPaymentBaseString(), new HashMap<String, Object>().getClass());
if (socialJson != null) {
socialJson.forEach((k, v) -> {
record.put(k + "fundBase", v);
Map<String, Object> fundJson = JSON.parseObject(item.getFundPaymentBaseString(), new HashMap<String, Object>().getClass());
// if (fundJson != null) {
// fundJson.forEach((k, v) -> {
// record.put(k + "fundBase", v);
// });
// }
if (welBaseDiffSign) {
if (fundJson != null) {
//查询该福利方案下开启缴纳的福利项
List<Long> insuranceIdList = siArchivesBiz.payInsuranceIds(item.getFundSchemeId(),PaymentScopeEnum.SCOPE_PERSON.getValue());
fundJson.forEach((k, v) -> {
if (insuranceIdList.contains(Long.valueOf(k))) {
record.put(k + "fundPerBase", v);
}
});
}
Map<String, Object> fundComJson = JSON.parseObject(item.getFundPaymentComBaseString(), new TypeReference<Map<String, Object>>() {
});
if (fundComJson != null) {
//查询该福利方案下开启缴纳的福利项
List<Long> insuranceIdList = siArchivesBiz.payInsuranceIds(item.getFundSchemeId(),PaymentScopeEnum.SCOPE_COMPANY.getValue());
fundComJson.forEach((k, v) -> {
if (insuranceIdList.contains(Long.valueOf(k))) {
record.put(k + "fundComBase", v);
}
});
}
} else {
if (fundJson != null) {
//查询该福利方案下开启缴纳的福利项
List<Long> insuranceIdList = siArchivesBiz.payInsuranceIds(item.getFundSchemeId());
fundJson.forEach((k, v) -> {
if (insuranceIdList.contains(Long.valueOf(k))) {
record.put(k + "fundBase", v);
}
});
}
}
}
record.put("otherPayOrg", paymentMap.get(item.getOtherPayOrg()) == null ? "" : paymentMap.get(item.getOtherPayOrg()).getName());
record.put("otherSchemeName", schemeIdNameMap.get(item.getOtherSchemeId()));
if (StringUtils.isNotEmpty(item.getOtherPaymentBaseString())) {
Map<String, Object> socialJson = JSON.parseObject(item.getOtherPaymentBaseString(), new HashMap<String, Object>().getClass());
if (socialJson != null) {
socialJson.forEach((k, v) -> {
record.put(k + "otherBase", v);
Map<String, Object> otherJson = JSON.parseObject(item.getOtherPaymentBaseString(), new HashMap<String, Object>().getClass());
// if (otherJson != null) {
// otherJson.forEach((k, v) -> {
// record.put(k + "otherBase", v);
// });
// }
if (welBaseDiffSign) {
if (otherJson != null) {
//查询该福利方案下开启缴纳的福利项
List<Long> insuranceIdList = siArchivesBiz.payInsuranceIds(item.getOtherSchemeId(),PaymentScopeEnum.SCOPE_PERSON.getValue());
otherJson.forEach((k, v) -> {
if (insuranceIdList.contains(Long.valueOf(k))) {
record.put(k + "otherPerBase", v);
}
});
}
Map<String, Object> otherComJson = JSON.parseObject(item.getOtherPaymentComBaseString(), new TypeReference<Map<String, Object>>() {
});
if (otherComJson != null) {
//查询该福利方案下开启缴纳的福利项
List<Long> insuranceIdList = siArchivesBiz.payInsuranceIds(item.getOtherSchemeId(),PaymentScopeEnum.SCOPE_COMPANY.getValue());
otherComJson.forEach((k, v) -> {
if (insuranceIdList.contains(Long.valueOf(k))) {
record.put(k + "otherComBase", v);
}
});
}
} else {
if (otherJson != null) {
//查询该福利方案下开启缴纳的福利项
List<Long> insuranceIdList = siArchivesBiz.payInsuranceIds(item.getOtherSchemeId());
otherJson.forEach((k, v) -> {
if (insuranceIdList.contains(Long.valueOf(k))) {
record.put(k + "otherBase", v);
}
});
}
}
}
@ -628,58 +731,127 @@ public class SIExportServiceImpl extends Service implements SIExportService {
}
private Map<Integer, Map<String, String>> buildPaymentTitle(List<AccountExportPO> pos, Map<String, String> categoryIdNameMap) {
boolean welBaseDiffSign = siArchivesBiz.isDiffWelBase();
Set<String> socailIds = new HashSet<>();
Set<String> fundIds = new HashSet<>();
Set<String> otherIds = new HashSet<>();
Set<String> socailComIds = new HashSet<>();
Set<String> fundComIds = new HashSet<>();
Set<String> otherComIds = new HashSet<>();
Map<Integer, Map<String, String>> result = new HashMap<>();
pos.stream().forEach(item -> {
if (StringUtils.isNotBlank(item.getSocialPaymentBaseString())) {
if (StringUtils.isNotBlank(item.getSocialPaymentBaseString()) || StringUtils.isNotBlank(item.getSocialPaymentComBaseString())) {
Map<String, String> socialJson = JSON.parseObject(item.getSocialPaymentBaseString(), new HashMap<String, String>().getClass());
if (socialJson != null) {
socialJson.forEach((k, v) -> {
socailIds.add(k);
});
}
//如果需要区分个人和公司福利基数
if (welBaseDiffSign) {
Map<String, Object> socialComJson = JSON.parseObject(item.getSocialPaymentComBaseString(), new TypeReference<Map<String, Object>>() {
});
if (socialComJson != null) {
socialComJson.forEach((k, v) -> socailComIds.add(k));
}
}
}
if (StringUtils.isNotBlank(item.getFundPaymentBaseString())) {
if (StringUtils.isNotBlank(item.getFundPaymentBaseString()) || StringUtils.isNotBlank(item.getFundPaymentComBaseString())) {
Map<String, String> fundJson = JSON.parseObject(item.getFundPaymentBaseString(), new HashMap<String, String>().getClass());
if (fundJson != null) {
fundJson.forEach((k, v) -> {
fundIds.add(k);
});
}
//如果需要区分个人和公司福利基数
if (welBaseDiffSign) {
Map<String, Object> fundComJson = JSON.parseObject(item.getFundPaymentComBaseString(), new TypeReference<Map<String, Object>>() {
});
if (fundComJson != null) {
fundComJson.forEach((k, v) -> fundComIds.add(k));
}
}
}
if (StringUtils.isNotBlank(item.getOtherPaymentBaseString())) {
if (StringUtils.isNotBlank(item.getOtherPaymentBaseString()) || StringUtils.isNotBlank(item.getOtherPaymentComBaseString())) {
Map<String, String> otherJson = JSON.parseObject(item.getOtherPaymentBaseString(), new HashMap<String, String>().getClass());
if (otherJson != null) {
otherJson.forEach((k, v) -> {
otherIds.add(k);
});
}
//如果需要区分个人和公司福利基数
if (welBaseDiffSign) {
Map<String, Object> otherComJson = JSON.parseObject(item.getOtherPaymentComBaseString(), new TypeReference<Map<String, Object>>() {
});
if (otherComJson != null) {
otherComJson.forEach((k, v) -> otherComIds.add(k));
}
}
}
});
Map<String, String> socialColumns = new HashMap<>();
Map<String, String> fundColumns = new HashMap<>();
Map<String, String> otherColumns = new HashMap<>();
socailIds.stream().forEach(social -> {
if (categoryIdNameMap.containsKey(social)) {
socialColumns.put(categoryIdNameMap.get(social) + SalaryI18nUtil.getI18nLabel(100293, "申报基数"), social + "socialBase");
}
});
fundIds.stream().forEach(social -> {
if (categoryIdNameMap.containsKey(social)) {
fundColumns.put(categoryIdNameMap.get(social) + SalaryI18nUtil.getI18nLabel(100293, "申报基数"), social + "fundBase");
}
});
otherIds.stream().forEach(social -> {
if (categoryIdNameMap.containsKey(social)) {
otherColumns.put(categoryIdNameMap.get(social) + SalaryI18nUtil.getI18nLabel(100293, "申报基数"), social + "otherBase");
}
});
Map<String, String> socialComColumns = new HashMap<>();
Map<String, String> fundComColumns = new HashMap<>();
Map<String, String> otherComColumns = new HashMap<>();
if (welBaseDiffSign) {
socailIds.stream().forEach(social -> {
if (categoryIdNameMap.containsKey(social)) {
socialColumns.put(categoryIdNameMap.get(social) + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel( 0, "个人"), social + "socialPerBase");
}
});
fundIds.stream().forEach(social -> {
if (categoryIdNameMap.containsKey(social)) {
fundColumns.put(categoryIdNameMap.get(social) + SalaryI18nUtil.getI18nLabel( 0, "申报基数") + SalaryI18nUtil.getI18nLabel( 0, "个人"), social + "fundPerBase");
}
});
otherIds.stream().forEach(social -> {
if (categoryIdNameMap.containsKey(social)) {
otherColumns.put(categoryIdNameMap.get(social) + SalaryI18nUtil.getI18nLabel( 0, "申报基数") + SalaryI18nUtil.getI18nLabel( 0, "个人"), social + "otherPerBase");
}
});
socailComIds.stream().forEach(social -> {
if (categoryIdNameMap.containsKey(social)) {
socialComColumns.put(categoryIdNameMap.get(social) + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel( 0, "单位"), social + "socialComBase");
}
});
fundComIds.stream().forEach(social -> {
if (categoryIdNameMap.containsKey(social)) {
fundComColumns.put(categoryIdNameMap.get(social) + SalaryI18nUtil.getI18nLabel( 0, "申报基数") + SalaryI18nUtil.getI18nLabel( 0, "单位"), social + "fundComBase");
}
});
otherComIds.stream().forEach(social -> {
if (categoryIdNameMap.containsKey(social)) {
otherComColumns.put(categoryIdNameMap.get(social) + SalaryI18nUtil.getI18nLabel( 0, "申报基数") + SalaryI18nUtil.getI18nLabel( 0, "单位"), social + "otherComBase");
}
});
} else {
socailIds.stream().forEach(social -> {
if (categoryIdNameMap.containsKey(social)) {
socialColumns.put(categoryIdNameMap.get(social) + SalaryI18nUtil.getI18nLabel(0, "申报基数"), social + "socialBase");
}
});
fundIds.stream().forEach(social -> {
if (categoryIdNameMap.containsKey(social)) {
fundColumns.put(categoryIdNameMap.get(social) + SalaryI18nUtil.getI18nLabel( 0, "申报基数"), social + "fundBase");
}
});
otherIds.stream().forEach(social -> {
if (categoryIdNameMap.containsKey(social)) {
otherColumns.put(categoryIdNameMap.get(social) + SalaryI18nUtil.getI18nLabel( 0, "申报基数"), social + "otherBase");
}
});
}
// map根据value排序
LinkedHashMap<String, String> socialColumnsWithAscValue = socialColumns.entrySet().stream()
.sorted(Map.Entry.comparingByValue())
@ -694,6 +866,24 @@ public class SIExportServiceImpl extends Service implements SIExportService {
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue,
LinkedHashMap::new));
if (welBaseDiffSign) {
LinkedHashMap<String, String> socialComMapWithAscKey = socialComColumns.entrySet().stream()
.sorted(Map.Entry.comparingByKey())
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue,
LinkedHashMap::new));
LinkedHashMap<String, String> fundComMapWithAscKey = fundComColumns.entrySet().stream()
.sorted(Map.Entry.comparingByKey())
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue,
LinkedHashMap::new));
LinkedHashMap<String, String> otherComMapWithAscKey = otherComColumns.entrySet().stream()
.sorted(Map.Entry.comparingByKey())
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue,
LinkedHashMap::new));
socialColumnsWithAscValue.putAll(socialComMapWithAscKey);
fundColumnsWithAscValue.putAll(fundComMapWithAscKey);
otherColumnsWithAscValue.putAll(otherComMapWithAscKey);
}
result.put(WelfareTypeEnum.SOCIAL_SECURITY.getValue(), socialColumnsWithAscValue);
result.put(WelfareTypeEnum.ACCUMULATION_FUND.getValue(), fundColumnsWithAscValue);
result.put(WelfareTypeEnum.OTHER.getValue(), otherColumnsWithAscValue);

View File

@ -27,6 +27,7 @@ import com.engine.salary.util.SalaryI18nUtil;
import com.engine.salary.util.db.MapperProxyFactory;
import com.engine.salary.util.excel.ExcelComment;
import com.engine.salary.util.excel.ExcelUtil;
import com.engine.salary.util.excel.ExcelUtilPlus;
import com.engine.salary.util.page.PageInfo;
import com.engine.salary.util.page.SalaryPageUtil;
import com.google.common.collect.Lists;
@ -184,7 +185,7 @@ public class SIImportServiceImpl extends Service implements SIImportService {
//工作簿数据
return ExcelUtil.genWorkbookV2(excelSheetData, sheetName,excelComments);
return ExcelUtilPlus.genWorkbookV2(excelSheetData, sheetName,excelComments);
}
@ -194,6 +195,7 @@ public class SIImportServiceImpl extends Service implements SIImportService {
* @return
*/
public List<String> buildHeader() {
boolean welBaseDiffSign = siArchivesBiz.isDiffWelBase();
List<String> result = new ArrayList<>();
result.add(SalaryI18nUtil.getI18nLabel( 85429, "姓名"));
result.add(SalaryI18nUtil.getI18nLabel( 86184, "个税扣缴义务人"));
@ -206,7 +208,13 @@ public class SIImportServiceImpl extends Service implements SIImportService {
// result.add(SalaryI18nUtil.getI18nLabel( 91325, "社保缴纳组织"));
//社保福利基数
Map<String, Long> socialMap = welfareNameIdMap( WelfareTypeEnum.SOCIAL_SECURITY);
socialMap.forEach((k, v) -> result.add(k + SalaryI18nUtil.getI18nLabel( 100293, "申报基数")));
if (welBaseDiffSign) {
socialMap.forEach((k, v) -> result.add(k + SalaryI18nUtil.getI18nLabel( 0, "申报基数") + SalaryI18nUtil.getI18nLabel( 0, "个人")));
socialMap.forEach((k, v) -> result.add(k + SalaryI18nUtil.getI18nLabel( 0, "申报基数") + SalaryI18nUtil.getI18nLabel( 0, "单位")));
} else {
socialMap.forEach((k, v) -> result.add(k + SalaryI18nUtil.getI18nLabel( 0, "申报基数")));
}
result.add(SalaryI18nUtil.getI18nLabel( 91324, "社保账号"));
result.add(SalaryI18nUtil.getI18nLabel( 91319, "社保起始缴纳月"));
result.add(SalaryI18nUtil.getI18nLabel( 91320, "社保最后缴纳月"));
@ -215,7 +223,13 @@ public class SIImportServiceImpl extends Service implements SIImportService {
result.add(SalaryI18nUtil.getI18nLabel( 91486, "公积金账号"));
//公积金福利基数
Map<String, Long> fundMap = welfareNameIdMap( WelfareTypeEnum.ACCUMULATION_FUND);
fundMap.forEach((k, v) -> result.add(k + SalaryI18nUtil.getI18nLabel( 100293, "申报基数")));
if (welBaseDiffSign) {
fundMap.forEach((k, v) -> result.add(k + SalaryI18nUtil.getI18nLabel( 0, "申报基数") + SalaryI18nUtil.getI18nLabel( 0, "个人")));
fundMap.forEach((k, v) -> result.add(k + SalaryI18nUtil.getI18nLabel( 0, "申报基数") + SalaryI18nUtil.getI18nLabel( 0, "单位")));
} else {
fundMap.forEach((k, v) -> result.add(k + SalaryI18nUtil.getI18nLabel( 0, "申报基数")));
}
result.add(SalaryI18nUtil.getI18nLabel( 91487, "补充公积金账号"));
result.add(SalaryI18nUtil.getI18nLabel( 91483, "公积金起始缴纳月"));
result.add(SalaryI18nUtil.getI18nLabel( 91484, "公积金最后缴纳月"));
@ -223,7 +237,13 @@ public class SIImportServiceImpl extends Service implements SIImportService {
// result.add(SalaryI18nUtil.getI18nLabel( 91497, "其他福利缴纳组织"));
//其他福利基数
Map<String, Long> otherMap = welfareNameIdMap( WelfareTypeEnum.OTHER);
otherMap.forEach((k, v) -> result.add(k + SalaryI18nUtil.getI18nLabel( 100293, "申报基数")));
if (welBaseDiffSign) {
otherMap.forEach((k, v) -> result.add(k + SalaryI18nUtil.getI18nLabel( 0, "申报基数") + SalaryI18nUtil.getI18nLabel( 0, "个人")));
otherMap.forEach((k, v) -> result.add(k + SalaryI18nUtil.getI18nLabel( 0, "申报基数") + SalaryI18nUtil.getI18nLabel( 0, "单位")));
} else {
otherMap.forEach((k, v) -> result.add(k + SalaryI18nUtil.getI18nLabel( 0, "申报基数")));
}
result.add(SalaryI18nUtil.getI18nLabel( 91490, "其他福利起始缴纳月"));
result.add(SalaryI18nUtil.getI18nLabel( 91494, "其他福利最后缴纳月"));
return result;

View File

@ -197,6 +197,9 @@ public class SIRecessionServiceImpl extends Service implements SIRecessionServic
// temp.setExternalFlag(insuranceAccountDetailPO.getExternalFlag());
temp.setPaymentOrganization(insuranceAccountDetailPO.getPaymentOrganization());
// temp.setPaymentAgency(insuranceAccountDetailPO.getPaymentAgency());
temp.setSocialPaymentComBaseString(insuranceAccountDetailPO.getSocialPaymentComBaseString());
temp.setFundPaymentComBaseString(insuranceAccountDetailPO.getFundPaymentComBaseString());
temp.setOtherPaymentComBaseString(insuranceAccountDetailPO.getOtherPaymentComBaseString());
}
private void recessionSocial(RecessionParam param, InsuranceAccountDetailPO temp, InsuranceAccountDetailPO insuranceAccountDetailPO) {
//退差社保个人缴费

View File

@ -44,6 +44,7 @@ import com.engine.salary.mapper.taxagent.TaxAgentMapper;
import com.engine.salary.service.*;
import com.engine.salary.sys.entity.po.SalarySysConfPO;
import com.engine.salary.sys.entity.vo.OrderRuleVO;
import com.engine.salary.sys.enums.OpenEnum;
import com.engine.salary.sys.service.SalarySysConfService;
import com.engine.salary.sys.service.impl.SalarySysConfServiceImpl;
import com.engine.salary.util.*;
@ -51,6 +52,7 @@ import com.engine.salary.util.db.MapperProxyFactory;
import com.engine.salary.util.excel.ExcelParseHelper;
import com.engine.salary.util.excel.ExcelSupport;
import com.engine.salary.util.excel.ExcelUtil;
import com.engine.salary.util.excel.ExcelUtilPlus;
import com.engine.salary.util.page.PageInfo;
import com.engine.salary.util.page.SalaryPageUtil;
import com.engine.salary.util.valid.ValidUtil;
@ -73,6 +75,7 @@ import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
import static com.engine.salary.sys.constant.SalarySysConstant.WEL_BASE_AUTO_ADJUST;
import static com.engine.salary.util.excel.ExcelSupport.EXCEL_TYPE_XLSX;
/**
@ -261,6 +264,7 @@ public class SISchemeServiceImpl extends Service implements SISchemeService {
@Override
public List<Map<String, Object>> buildTableData(List<InsuranceArchivesEmployeePO> insuranceArchivesEmployeePOS) {
boolean welBaseDiffSign = siArchivesBiz.isDiffWelBase();
List<Map<String, Object>> records = new ArrayList<>();
List<TaxAgentPO> taxAgentPOS = getTaxAgentMapper().listAll();
Map<Long, TaxAgentPO> longTaxAgentPOMap = SalaryEntityUtil.convert2Map(taxAgentPOS, TaxAgentPO::getId);
@ -286,9 +290,6 @@ public class SISchemeServiceImpl extends Service implements SISchemeService {
Map<String, InsuranceArchivesFundSchemePO> fundSchemePOMap = SalaryEntityUtil.convert2Map(fundList, k -> k.getPaymentOrganization() + "-" + k.getEmployeeId());
Map<String, InsuranceArchivesOtherSchemePO> otherSchemePOMap = SalaryEntityUtil.convert2Map(otherList, k -> k.getPaymentOrganization() + "-" + k.getEmployeeId());
// Map<Long, InsuranceArchivesSocialSchemePO> socialSchemePOMap = socialList.stream().collect(Collectors.toMap(InsuranceArchivesSocialSchemePO::getEmployeeId, Function.identity()));
// Map<Long, InsuranceArchivesFundSchemePO> fundSchemePOMap = fundList.stream().collect(Collectors.toMap(InsuranceArchivesFundSchemePO::getEmployeeId, Function.identity()));
// Map<Long, InsuranceArchivesOtherSchemePO> otherSchemePOMap = otherList.stream().collect(Collectors.toMap(InsuranceArchivesOtherSchemePO::getEmployeeId, Function.identity()));
insuranceArchivesEmployeePOS.forEach(item -> {
InsuranceArchivesSocialSchemePO socialItem = socialSchemePOMap.get(item.getPaymentOrganization() + "-" + item.getEmployeeId());
InsuranceArchivesFundSchemePO fundItem = fundSchemePOMap.get(item.getPaymentOrganization() + "-" + item.getEmployeeId());
@ -307,15 +308,37 @@ public class SISchemeServiceImpl extends Service implements SISchemeService {
map.put("socialName", getSiSchemeService().querySchemeName(socialItem.getSocialSchemeId()));
Map<String, Object> socialJson = JSON.parseObject(socialItem.getSocialPaymentBaseString(), new TypeReference<Map<String, Object>>() {
});
if (socialJson != null) {
//查询该福利方案下开启缴纳的福利项
List<Long> insuranceIdList = payInsuranceIds(socialItem.getSocialSchemeId());
socialJson.forEach((k, v) -> {
if (insuranceIdList.contains(Long.valueOf(k))) {
map.put(k, v);
}
if (welBaseDiffSign) {
if (socialJson != null) {
//查询该福利方案下开启缴纳的福利项
List<Long> insuranceIdList = siArchivesBiz.payInsuranceIds(socialItem.getSocialSchemeId(), PaymentScopeEnum.SCOPE_PERSON.getValue());
socialJson.forEach((k, v) -> {
if (insuranceIdList.contains(Long.valueOf(k))) {
map.put(k + "per", v);
}
});
}
Map<String, Object> socialComJson = JSON.parseObject(socialItem.getSocialPaymentComBaseString(), new TypeReference<Map<String, Object>>() {
});
// map.putAll(socialJson);
if (socialComJson != null) {
//查询该福利方案下开启缴纳的福利项
List<Long> insuranceIdList = siArchivesBiz.payInsuranceIds(socialItem.getSocialSchemeId(),PaymentScopeEnum.SCOPE_COMPANY.getValue());
socialComJson.forEach((k, v) -> {
if (insuranceIdList.contains(Long.valueOf(k))) {
map.put(k + "com", v);
}
});
}
} else {
if (socialJson != null) {
//查询该福利方案下开启缴纳的福利项
List<Long> insuranceIdList = payInsuranceIds(socialItem.getSocialSchemeId());
socialJson.forEach((k, v) -> {
if (insuranceIdList.contains(Long.valueOf(k))) {
map.put(k, v);
}
});
}
}
map.put("socialAccount", socialItem.getSocialAccount());
map.put("socialStartTime", socialItem.getSocialStartTime());
@ -326,15 +349,37 @@ public class SISchemeServiceImpl extends Service implements SISchemeService {
map.put("fundAccount", fundItem.getFundAccount());
Map<String, Object> fundJson = JSON.parseObject(fundItem.getFundPaymentBaseString(), new TypeReference<Map<String, Object>>() {
});
if (fundJson != null) {
//查询该福利方案下开启缴纳的福利项
List<Long> insuranceIdList = payInsuranceIds(fundItem.getFundSchemeId());
fundJson.forEach((k, v) -> {
if (insuranceIdList.contains(Long.valueOf(k))) {
map.put(k, v);
}
if (welBaseDiffSign) {
if (fundJson != null) {
//查询该福利方案下开启缴纳的福利项
List<Long> insuranceIdList = siArchivesBiz.payInsuranceIds(fundItem.getFundSchemeId(),PaymentScopeEnum.SCOPE_PERSON.getValue());
fundJson.forEach((k, v) -> {
if (insuranceIdList.contains(Long.valueOf(k))) {
map.put(k + "per", v);
}
});
}
Map<String, Object> fundComJson = JSON.parseObject(fundItem.getFundPaymentComBaseString(), new TypeReference<Map<String, Object>>() {
});
// map.putAll(fundJson);
if (fundComJson != null) {
//查询该福利方案下开启缴纳的福利项
List<Long> insuranceIdList = siArchivesBiz.payInsuranceIds(fundItem.getFundSchemeId(),PaymentScopeEnum.SCOPE_COMPANY.getValue());
fundComJson.forEach((k, v) -> {
if (insuranceIdList.contains(Long.valueOf(k))) {
map.put(k + "com", v);
}
});
}
} else {
if (fundJson != null) {
//查询该福利方案下开启缴纳的福利项
List<Long> insuranceIdList = payInsuranceIds(fundItem.getFundSchemeId());
fundJson.forEach((k, v) -> {
if (insuranceIdList.contains(Long.valueOf(k))) {
map.put(k, v);
}
});
}
}
map.put("supplementFundAccount", fundItem.getSupplementFundAccount());
map.put("fundStartTime", fundItem.getFundStartTime());
@ -345,15 +390,37 @@ public class SISchemeServiceImpl extends Service implements SISchemeService {
map.put("otherName", getSiSchemeService().querySchemeName(otherItem.getOtherSchemeId()));
Map<String, Object> otherJson = JSON.parseObject(otherItem.getOtherPaymentBaseString(), new TypeReference<Map<String, Object>>() {
});
if (otherJson != null) {
//查询该福利方案下开启缴纳的福利项
List<Long> insuranceIdList = payInsuranceIds(otherItem.getOtherSchemeId());
otherJson.forEach((k, v) -> {
if (insuranceIdList.contains(Long.valueOf(k))) {
map.put(k, v);
}
if (welBaseDiffSign) {
if (otherJson != null) {
//查询该福利方案下开启缴纳的福利项
List<Long> insuranceIdList = siArchivesBiz.payInsuranceIds(otherItem.getOtherSchemeId(),PaymentScopeEnum.SCOPE_PERSON.getValue());
otherJson.forEach((k, v) -> {
if (insuranceIdList.contains(Long.valueOf(k))) {
map.put(k + "per", v);
}
});
}
Map<String, Object> otherComJson = JSON.parseObject(otherItem.getOtherPaymentComBaseString(), new TypeReference<Map<String, Object>>() {
});
// map.putAll(otherJson);
if (otherComJson != null) {
//查询该福利方案下开启缴纳的福利项
List<Long> insuranceIdList = siArchivesBiz.payInsuranceIds(otherItem.getOtherSchemeId(),PaymentScopeEnum.SCOPE_COMPANY.getValue());
otherComJson.forEach((k, v) -> {
if (insuranceIdList.contains(Long.valueOf(k))) {
map.put(k + "com", v);
}
});
}
} else {
if (otherJson != null) {
//查询该福利方案下开启缴纳的福利项
List<Long> insuranceIdList = payInsuranceIds(otherItem.getOtherSchemeId());
otherJson.forEach((k, v) -> {
if (insuranceIdList.contains(Long.valueOf(k))) {
map.put(k, v);
}
});
}
}
map.put("otherStartTime", otherItem.getOtherStartTime());
map.put("otherEndTime", otherItem.getOtherEndTime());
@ -422,11 +489,11 @@ public class SISchemeServiceImpl extends Service implements SISchemeService {
}
//工作簿数据
List<List<String>> rows = new LinkedList<>();
List<String> collect = columns.stream().map(WeaTableColumn::getText).collect(Collectors.toList());
List<List<Object>> rows = new LinkedList<>();
List<Object> collect = columns.stream().map(WeaTableColumn::getText).collect(Collectors.toList());
rows.add(collect);
for (Map<String, Object> recordData : records) {
List<String> row = new LinkedList<>();
List<Object> row = new LinkedList<>();
for (WeaTableColumn column : columns) {
try {
Object o = recordData.get(column.getColumn());
@ -437,20 +504,8 @@ public class SISchemeServiceImpl extends Service implements SISchemeService {
}
rows.add(row);
}
// return salaryBatchService.simpleExportExcel(ExportExcelInfo.builder()
// .bizId(exportMap.get("biz"))
// .flag(true)
// .userId(employeeId)
// .eteamsId(eteamsId)
// .tenantKey(tenantKey)
// .operator(operator)
// .module(exportMap.get("module"))
// .fileName(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 94629, "社保福利档案") + SalaryDateUtil.getFormatLocalDateTime(LocalDateTime.now()))
// .handlerName("insuranceArchivesExportHandler")
// .dataType(SalaryI18nUtil.getI18nLabel(tenantKey, employeeId, 99915, "档案"))
// .function(exportMap.get("function")).build(), sheetList);
//获取excel
return ExcelUtil.genWorkbook(rows, sheetName);
return ExcelUtilPlus.genWorkbookV2(rows, sheetName);
}
@ -532,10 +587,17 @@ public class SISchemeServiceImpl extends Service implements SISchemeService {
public Map<Integer, Map<String, String>> buildColumnTitle(List<InsuranceArchivesEmployeePO> insuranceArchivesEmployeePOS, Long employeeId) {
boolean welBaseDiffSign = siArchivesBiz.isDiffWelBase();
Map<Integer, Map<String, String>> result = new HashMap<>();
Set<String> socialSet = new HashSet<>();
Set<String> fundSet = new HashSet<>();
Set<String> otherSet = new HashSet<>();
Set<String> socialComSet = new HashSet<>();
Set<String> fundComSet = new HashSet<>();
Set<String> otherComSet = new HashSet<>();
insuranceArchivesEmployeePOS.forEach(item -> {
List<InsuranceArchivesSocialSchemePO> socialByEmployeeId = siArchivesBiz.getSocialByEmployeeIds(new ArrayList<Long>() {{
add(item.getEmployeeId());
@ -571,6 +633,14 @@ public class SISchemeServiceImpl extends Service implements SISchemeService {
if (socialJson != null) {
socialJson.forEach((k, v) -> socialSet.add(k));
}
//如果需要区分个人和公司福利基数
if (welBaseDiffSign) {
Map<String, Object> socialComJson = JSON.parseObject(socialItem.getSocialPaymentComBaseString(), new TypeReference<Map<String, Object>>() {
});
if (socialComJson != null) {
socialComJson.forEach((k, v) -> socialComSet.add(k));
}
}
}
if (fundItem != null) {
Map<String, Object> fundJson = JSON.parseObject(fundItem.getFundPaymentBaseString(), new TypeReference<Map<String, Object>>() {
@ -578,6 +648,14 @@ public class SISchemeServiceImpl extends Service implements SISchemeService {
if (fundJson != null) {
fundJson.forEach((k, v) -> fundSet.add(k));
}
//如果需要区分个人和公司福利基数
if (welBaseDiffSign) {
Map<String, Object> fundComJson = JSON.parseObject(fundItem.getFundPaymentComBaseString(), new TypeReference<Map<String, Object>>() {
});
if (fundComJson != null) {
fundComJson.forEach((k, v) -> fundComSet.add(k));
}
}
}
if (otherItem != null) {
Map<String, Object> otherJson = JSON.parseObject(otherItem.getOtherPaymentBaseString(), new TypeReference<Map<String, Object>>() {
@ -585,42 +663,92 @@ public class SISchemeServiceImpl extends Service implements SISchemeService {
if (otherJson != null) {
otherJson.forEach((k, v) -> otherSet.add(k));
}
//如果需要区分个人和公司福利基数
if (welBaseDiffSign) {
Map<String, Object> otherComJson = JSON.parseObject(otherItem.getOtherPaymentComBaseString(), new TypeReference<Map<String, Object>>() {
});
if (otherComJson != null) {
otherComJson.forEach((k, v) -> otherComSet.add(k));
}
}
}
});
Map<String, String> socialMap = new HashMap<>();
Map<String, String> socialComMap = new HashMap<>();
Map<Long, ICategoryPO> socialCollect = new HashMap<>();
Map<Long, ICategoryPO> customSocial = getICategoryMapper().listByWelfareType(WelfareTypeEnum.SOCIAL_SECURITY.getValue(), null).stream().collect(Collectors.toMap(ICategoryPO::getId, Function.identity()));
Map<Long, ICategoryPO> sysSocial = getICategoryMapper().listByWelfareType(WelfareTypeEnum.SOCIAL_SECURITY.getValue(), DataTypeEnum.SYSTEM.getValue()).stream().collect(Collectors.toMap(ICategoryPO::getId, Function.identity()));
socialCollect.putAll(customSocial);
socialCollect.putAll(sysSocial);
socialSet.forEach(item -> {
if (socialCollect.containsKey(Long.valueOf(item))) {
socialMap.put(item, socialCollect.get(Long.valueOf(item)).getInsuranceName() + SalaryI18nUtil.getI18nLabel(100293, "申报基数"));
}
});
if (welBaseDiffSign) {
socialSet.forEach(item -> {
if (socialCollect.containsKey(Long.valueOf(item))) {
socialMap.put(item + "per", socialCollect.get(Long.valueOf(item)).getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"个人"));
}
});
socialComSet.forEach(item -> {
if (socialCollect.containsKey(Long.valueOf(item))) {
socialComMap.put(item + "com", socialCollect.get(Long.valueOf(item)).getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"单位"));
}
});
} else {
socialSet.forEach(item -> {
if (socialCollect.containsKey(Long.valueOf(item))) {
socialMap.put(item, socialCollect.get(Long.valueOf(item)).getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数"));
}
});
}
Map<String, String> fundMap = new HashMap<>();
Map<String, String> fundComMap = new HashMap<>();
Map<Long, ICategoryPO> fundCollect = new HashMap<>();
Map<Long, ICategoryPO> customFund = getICategoryMapper().listByWelfareType(WelfareTypeEnum.ACCUMULATION_FUND.getValue(), null).stream().collect(Collectors.toMap(ICategoryPO::getId, Function.identity()));
Map<Long, ICategoryPO> sysFund = getICategoryMapper().listByWelfareType(WelfareTypeEnum.ACCUMULATION_FUND.getValue(), DataTypeEnum.SYSTEM.getValue()).stream().collect(Collectors.toMap(ICategoryPO::getId, Function.identity()));
fundCollect.putAll(customFund);
fundCollect.putAll(sysFund);
fundSet.forEach(item -> {
if (fundCollect.containsKey(Long.valueOf(item))) {
fundMap.put(item, fundCollect.get(Long.valueOf(item)).getInsuranceName() + SalaryI18nUtil.getI18nLabel(100293, "申报基数"));
}
});
if (welBaseDiffSign) {
fundSet.forEach(item -> {
if (fundCollect.containsKey(Long.valueOf(item))) {
fundMap.put(item + "per", fundCollect.get(Long.valueOf(item)).getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"个人"));
}
});
fundComSet.forEach(item -> {
if (fundCollect.containsKey(Long.valueOf(item))) {
fundComMap.put(item + "com", fundCollect.get(Long.valueOf(item)).getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"单位"));
}
});
} else {
fundSet.forEach(item -> {
if (fundCollect.containsKey(Long.valueOf(item))) {
fundMap.put(item, fundCollect.get(Long.valueOf(item)).getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数"));
}
});
}
Map<String, String> otherMap = new HashMap<>();
Map<String, String> otherComMap = new HashMap<>();
Map<Long, ICategoryPO> otherCollect = new HashMap<>();
Map<Long, ICategoryPO> customOther = getICategoryMapper().listByWelfareType(WelfareTypeEnum.OTHER.getValue(), null).stream().collect(Collectors.toMap(ICategoryPO::getId, Function.identity()));
Map<Long, ICategoryPO> sysOther = getICategoryMapper().listByWelfareType(WelfareTypeEnum.OTHER.getValue(), DataTypeEnum.SYSTEM.getValue()).stream().collect(Collectors.toMap(ICategoryPO::getId, Function.identity()));
otherCollect.putAll(customOther);
otherCollect.putAll(sysOther);
otherSet.forEach(item -> {
if (otherCollect.containsKey(Long.valueOf(item))) {
otherMap.put(item, otherCollect.get(Long.valueOf(item)).getInsuranceName() + SalaryI18nUtil.getI18nLabel(100293, "申报基数"));
}
});
if (welBaseDiffSign) {
otherSet.forEach(item -> {
if (otherCollect.containsKey(Long.valueOf(item))) {
otherMap.put(item + "per", otherCollect.get(Long.valueOf(item)).getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"个人"));
}
});
otherComSet.forEach(item -> {
if (otherCollect.containsKey(Long.valueOf(item))) {
otherComMap.put(item + "com", otherCollect.get(Long.valueOf(item)).getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0,"单位"));
}
});
} else {
otherSet.forEach(item -> {
if (otherCollect.containsKey(Long.valueOf(item))) {
otherMap.put(item, otherCollect.get(Long.valueOf(item)).getInsuranceName() + SalaryI18nUtil.getI18nLabel(0, "申报基数"));
}
});
}
// map根据key排序
LinkedHashMap<String, String> socialMapWithAscKey = socialMap.entrySet().stream()
@ -635,6 +763,23 @@ public class SISchemeServiceImpl extends Service implements SISchemeService {
.sorted(Map.Entry.comparingByKey())
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue,
LinkedHashMap::new));
if (welBaseDiffSign) {
LinkedHashMap<String, String> socialComMapWithAscKey = socialComMap.entrySet().stream()
.sorted(Map.Entry.comparingByKey())
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue,
LinkedHashMap::new));
LinkedHashMap<String, String> fundComMapWithAscKey = fundComMap.entrySet().stream()
.sorted(Map.Entry.comparingByKey())
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue,
LinkedHashMap::new));
LinkedHashMap<String, String> otherComMapWithAscKey = otherComMap.entrySet().stream()
.sorted(Map.Entry.comparingByKey())
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue,
LinkedHashMap::new));
socialMapWithAscKey.putAll(socialComMapWithAscKey);
fundMapWithAscKey.putAll(fundComMapWithAscKey);
otherMapWithAscKey.putAll(otherComMapWithAscKey);
}
result.put(WelfareTypeEnum.SOCIAL_SECURITY.getValue(), socialMapWithAscKey);
result.put(WelfareTypeEnum.ACCUMULATION_FUND.getValue(), fundMapWithAscKey);
@ -1084,41 +1229,78 @@ public class SISchemeServiceImpl extends Service implements SISchemeService {
insuranceArchivesOtherSchemePO = buildOtherPO(employeeId, welfareMap, singleAccount, schemeNameIdMap, paymentNameIdMap, creator);
}
/**************校验申报基数**************/
for (Map.Entry<Long, String> entry : welfareMap.entrySet()) {
String keyName = entry.getValue() + SalaryI18nUtil.getI18nLabel(100293, "申报基数");
String numberVlue = findElement(singleAccount, keyName).get(keyName) == null ? "" : findElement(singleAccount, keyName).get(keyName).toString();
if (!"".equals(numberVlue) && !NumberUtils.isParsable(numberVlue)) {
Map<String, String> errorMessageMap = Maps.newHashMap();
errorMessageMap.put("message", rowIndex + keyName + SalaryI18nUtil.getI18nLabel(100581, "请输入数字"));
excelComments.add(errorMessageMap);
isError = true;
boolean welBaseDiffSign = siArchivesBiz.isDiffWelBase();
if (welBaseDiffSign) {
for (Map.Entry<Long, String> entry : welfareMap.entrySet()) {
String keyPerName = entry.getValue() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0, "个人");
String keyComName = entry.getValue() + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0, "单位");
String numberPerValue = findElement(singleAccount, keyPerName).get(keyPerName) == null ? "" : findElement(singleAccount, keyPerName).get(keyPerName).toString();
String numberComValue = findElement(singleAccount, keyComName).get(keyComName) == null ? "" : findElement(singleAccount, keyComName).get(keyComName).toString();
if (!"".equals(numberPerValue) && !NumberUtils.isParsable(numberPerValue)) {
Map<String, String> errorMessageMap = Maps.newHashMap();
errorMessageMap.put("message", rowIndex + keyPerName + SalaryI18nUtil.getI18nLabel(0, "请输入数字"));
excelComments.add(errorMessageMap);
isError = true;
}
if (!"".equals(numberComValue) && !NumberUtils.isParsable(numberComValue)) {
Map<String, String> errorMessageMap = Maps.newHashMap();
errorMessageMap.put("message", rowIndex + keyComName + SalaryI18nUtil.getI18nLabel(0, "请输入数字"));
excelComments.add(errorMessageMap);
isError = true;
}
}
} else {
for (Map.Entry<Long, String> entry : welfareMap.entrySet()) {
String keyName = entry.getValue() + SalaryI18nUtil.getI18nLabel(0, "申报基数");
String numberValue = findElement(singleAccount, keyName).get(keyName) == null ? "" : findElement(singleAccount, keyName).get(keyName).toString();
if (!"".equals(numberValue) && !NumberUtils.isParsable(numberValue)) {
Map<String, String> errorMessageMap = Maps.newHashMap();
errorMessageMap.put("message", rowIndex + keyName + SalaryI18nUtil.getI18nLabel(0, "请输入数字"));
excelComments.add(errorMessageMap);
isError = true;
}
}
}
//生成福利档案基础信息数据
InsuranceArchivesBaseInfoPO insuranceArchivesBaseInfoPO = buildBaseInfoPO(employeeId, singleAccount, paymentNameIdMap, creator, runStatus, employees.get(0).isExtEmp());
if (!isError) {
//判断是否福利档案导入时不符合上下限的基数调整为上限/下限
SalarySysConfPO welBaseAutoAdjust = getSalarySysConfService(user).getOneByCode(WEL_BASE_AUTO_ADJUST);
boolean welBaseAutoAdjustSign = welBaseAutoAdjust != null && welBaseAutoAdjust.getConfValue().equals(OpenEnum.OPEN.getValue());
if (!isError && !welBaseAutoAdjustSign) {
insuranceArchivesAccountPO.setSocial(insuranceArchivesSocialSchemePO);
insuranceArchivesAccountPO.setFund(insuranceArchivesFundSchemePO);
insuranceArchivesAccountPO.setOther(insuranceArchivesOtherSchemePO);
insuranceArchivesAccountPO.setBaseInfo(insuranceArchivesBaseInfoPO);
//校验福利基数是否符合上下限要求
Boolean socialCheckBase = siArchivesBiz.checkWelBaseLimit(insuranceArchivesSocialSchemePO.getSocialSchemeId(), insuranceArchivesSocialSchemePO.getSocialPaymentBaseString());
Boolean socialCheckBase = siArchivesBiz.checkWelBaseLimit(insuranceArchivesSocialSchemePO.getSocialSchemeId(), insuranceArchivesSocialSchemePO.getSocialPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue());
Boolean fundCheckBase = siArchivesBiz.checkWelBaseLimit(insuranceArchivesFundSchemePO.getFundSchemeId(), insuranceArchivesFundSchemePO.getFundPaymentBaseString());
Boolean fundCheckBase = siArchivesBiz.checkWelBaseLimit(insuranceArchivesFundSchemePO.getFundSchemeId(), insuranceArchivesFundSchemePO.getFundPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue());
Boolean otherCheckBase = siArchivesBiz.checkWelBaseLimit(insuranceArchivesOtherSchemePO.getOtherSchemeId(), insuranceArchivesOtherSchemePO.getOtherPaymentBaseString());
Boolean otherCheckBase = siArchivesBiz.checkWelBaseLimit(insuranceArchivesOtherSchemePO.getOtherSchemeId(), insuranceArchivesOtherSchemePO.getOtherPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue());
if (socialCheckBase && fundCheckBase && otherCheckBase) {
Boolean socialCheckComBase = true;
Boolean fundCheckComBase = true;
Boolean otherCheckComBase = true;
if (welBaseDiffSign) {
socialCheckComBase = siArchivesBiz.checkWelBaseLimit(insuranceArchivesSocialSchemePO.getSocialSchemeId(), insuranceArchivesSocialSchemePO.getSocialPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue());
fundCheckComBase = siArchivesBiz.checkWelBaseLimit(insuranceArchivesFundSchemePO.getFundSchemeId(), insuranceArchivesFundSchemePO.getFundPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue());
otherCheckComBase = siArchivesBiz.checkWelBaseLimit(insuranceArchivesOtherSchemePO.getOtherSchemeId(), insuranceArchivesOtherSchemePO.getOtherPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue());
}
if (socialCheckBase && fundCheckBase && otherCheckBase && socialCheckComBase && fundCheckComBase && otherCheckComBase) {
insuranceArchivesAccountPOS.add(insuranceArchivesAccountPO);
} else {
String checkMessage = "该条数据中";
if (!socialCheckBase) {
if (!socialCheckBase || !socialCheckComBase) {
checkMessage = checkMessage + "社保福利基数、";
}
if (!fundCheckBase) {
if (!fundCheckBase || !fundCheckComBase) {
checkMessage = checkMessage + "公积金福利基数、";
}
if (!otherCheckBase) {
if (!otherCheckBase || !otherCheckComBase) {
checkMessage = checkMessage + "其他福利基数、";
}
checkMessage = checkMessage.substring(0, checkMessage.length() - 1);
@ -1129,6 +1311,32 @@ public class SISchemeServiceImpl extends Service implements SISchemeService {
isError = true;
}
} else if (!isError) {
//校验福利基数是否符合上下限要求不符合上下限的基数调整为上限 /下限
String newSocialPaymentBaseString = siArchivesBiz.checkAndBuildWelBaseWithLimit(insuranceArchivesSocialSchemePO.getSocialSchemeId(), insuranceArchivesSocialSchemePO.getSocialPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue());
String newFundPaymentBaseString = siArchivesBiz.checkAndBuildWelBaseWithLimit(insuranceArchivesFundSchemePO.getFundSchemeId(), insuranceArchivesFundSchemePO.getFundPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue());
String newOtherPaymentBaseString = siArchivesBiz.checkAndBuildWelBaseWithLimit(insuranceArchivesOtherSchemePO.getOtherSchemeId(), insuranceArchivesOtherSchemePO.getOtherPaymentBaseString(), PaymentScopeEnum.SCOPE_PERSON.getValue());
insuranceArchivesSocialSchemePO.setSocialPaymentBaseString(newSocialPaymentBaseString);
insuranceArchivesFundSchemePO.setFundPaymentBaseString(newFundPaymentBaseString);
insuranceArchivesOtherSchemePO.setOtherPaymentBaseString(newOtherPaymentBaseString);
if (welBaseDiffSign) {
String newSocialPaymentComBaseString = siArchivesBiz.checkAndBuildWelBaseWithLimit(insuranceArchivesSocialSchemePO.getSocialSchemeId(), insuranceArchivesSocialSchemePO.getSocialPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue());
String newFundPaymentComBaseString = siArchivesBiz.checkAndBuildWelBaseWithLimit(insuranceArchivesFundSchemePO.getFundSchemeId(), insuranceArchivesFundSchemePO.getFundPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue());
String newOtherPaymentComBaseString = siArchivesBiz.checkAndBuildWelBaseWithLimit(insuranceArchivesOtherSchemePO.getOtherSchemeId(), insuranceArchivesOtherSchemePO.getOtherPaymentComBaseString(), PaymentScopeEnum.SCOPE_COMPANY.getValue());
insuranceArchivesSocialSchemePO.setSocialPaymentComBaseString(newSocialPaymentComBaseString);
insuranceArchivesFundSchemePO.setFundPaymentComBaseString(newFundPaymentComBaseString);
insuranceArchivesOtherSchemePO.setOtherPaymentComBaseString(newOtherPaymentComBaseString);
}
insuranceArchivesAccountPO.setSocial(insuranceArchivesSocialSchemePO);
insuranceArchivesAccountPO.setFund(insuranceArchivesFundSchemePO);
insuranceArchivesAccountPO.setOther(insuranceArchivesOtherSchemePO);
insuranceArchivesAccountPO.setBaseInfo(insuranceArchivesBaseInfoPO);
insuranceArchivesAccountPOS.add(insuranceArchivesAccountPO);
}
return isError;
}
@ -1162,12 +1370,14 @@ public class SISchemeServiceImpl extends Service implements SISchemeService {
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<String, String> oldSocialBaseMap = new HashMap<>();
HashMap<String, String> oldSocialComBaseMap = 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<String, String>().getClass());
oldSocialComBaseMap = JSON.parseObject(oldSocialSchemePO.getSocialPaymentComBaseString(), new HashMap<String, String>().getClass());
}
insuranceArchivesSocialSchemePO.setId(IdGenerator.generate());
@ -1202,21 +1412,48 @@ public class SISchemeServiceImpl extends Service implements SISchemeService {
insuranceArchivesSocialSchemePO.setUnderTake(UndertakerEnum.SCOPE_PERSON.getValue());
List<InsuranceSchemeDetailPO> insuranceSchemeDetailPOS = getInsuranceSchemeDetailMapper().queryListBySchemeId(insuranceArchivesSocialSchemePO.getSocialSchemeId());
encryptUtil.decryptList(insuranceSchemeDetailPOS, InsuranceSchemeDetailPO.class);
boolean welBaseDiffSign = siArchivesBiz.isDiffWelBase();
if (CollectionUtils.isNotEmpty(insuranceSchemeDetailPOS)) {
List<Long> insuranceIds = insuranceSchemeDetailPOS.stream().map(InsuranceSchemeDetailPO::getInsuranceId).collect(Collectors.toList());
HashMap<String, String> socialPaymentBase = new HashMap<>();
HashMap<String, String> socialPaymentComBase = new HashMap<>();
for (Long insuranceId : insuranceIds) {
if (StringUtils.isBlank(welfareMap.get(insuranceId))) {
continue;
}
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, "申报基数"));
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)));
if (welBaseDiffSign) {
Map<String, Object> itemPerMap = findElement(singleAccount, welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0, "个人"));
if (itemPerMap != null) {
String itemValue = (String) itemPerMap.get(welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0, "个人"));
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)));
}
}
Map<String, Object> itemComMap = findElement(singleAccount, welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0, "单位"));
if (itemComMap != null) {
String itemValue = (String) itemComMap.get(welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0, "单位"));
if (StringUtils.isNotBlank(itemValue)) {
socialPaymentComBase.put(String.valueOf(insuranceId), itemValue);
} else if (oldSocialComBaseMap != null && StringUtils.isNotBlank(oldSocialComBaseMap.get(String.valueOf(insuranceId)))) {
socialPaymentComBase.put(String.valueOf(insuranceId), oldSocialComBaseMap.get(String.valueOf(insuranceId)));
}
}
insuranceArchivesSocialSchemePO.setSocialPaymentComBaseString(JSON.toJSONString(socialPaymentComBase));
} else {
Map<String, Object> itemMap = findElement(singleAccount, welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(0, "申报基数"));
if (itemMap != null) {
String itemValue = (String) itemMap.get(welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(0, "申报基数"));
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));
}
@ -1243,12 +1480,14 @@ public class SISchemeServiceImpl extends Service implements SISchemeService {
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<String, String> oldFundBaseMap = new HashMap<>();
HashMap<String, String> oldFundComBaseMap = 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<String, String>().getClass());
oldFundComBaseMap = JSON.parseObject(oldFundSchemePO.getFundPaymentComBaseString(), new HashMap<String, String>().getClass());
}
insuranceArchivesFundSchemePO.setId(IdGenerator.generate());
@ -1286,24 +1525,49 @@ public class SISchemeServiceImpl extends Service implements SISchemeService {
List<InsuranceSchemeDetailPO> insuranceSchemeDetailPOS = getInsuranceSchemeDetailMapper().queryListBySchemeId(insuranceArchivesFundSchemePO.getFundSchemeId());
encryptUtil.decryptList(insuranceSchemeDetailPOS, InsuranceSchemeDetailPO.class);
boolean welBaseDiffSign = siArchivesBiz.isDiffWelBase();
if (CollectionUtils.isNotEmpty(insuranceSchemeDetailPOS)) {
List<Long> insuranceIds = insuranceSchemeDetailPOS.stream().map(InsuranceSchemeDetailPO::getInsuranceId).collect(Collectors.toList());
HashMap<String, String> socialPaymentBase = new HashMap<>();
HashMap<String, String> fundPaymentBase = new HashMap<>();
HashMap<String, String> fundPaymentComBase = new HashMap<>();
for (Long insuranceId : insuranceIds) {
if (StringUtils.isBlank(welfareMap.get(insuranceId))) {
continue;
}
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, "申报基数"));
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)));
if (welBaseDiffSign) {
Map<String, Object> itemPerMap = findElement(singleAccount, welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0, "个人"));
if (itemPerMap != null) {
String itemValue = (String) itemPerMap.get(welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0, "个人"));
if (StringUtils.isNotBlank(itemValue)) {
fundPaymentBase.put(String.valueOf(insuranceId), itemValue);
} else if (oldFundBaseMap != null && StringUtils.isNotBlank(oldFundBaseMap.get(String.valueOf(insuranceId)))) {
fundPaymentBase.put(String.valueOf(insuranceId), oldFundBaseMap.get(String.valueOf(insuranceId)));
}
}
Map<String, Object> itemComMap = findElement(singleAccount, welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0, "单位"));
if (itemComMap != null) {
String itemValue = (String) itemComMap.get(welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0, "单位"));
if (StringUtils.isNotBlank(itemValue)) {
fundPaymentComBase.put(String.valueOf(insuranceId), itemValue);
} else if (oldFundComBaseMap != null && StringUtils.isNotBlank(oldFundComBaseMap.get(String.valueOf(insuranceId)))) {
fundPaymentComBase.put(String.valueOf(insuranceId), oldFundComBaseMap.get(String.valueOf(insuranceId)));
}
}
insuranceArchivesFundSchemePO.setFundPaymentComBaseString(JSON.toJSONString(fundPaymentComBase));
} else {
Map<String, Object> itemMap = findElement(singleAccount, welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(0, "申报基数"));
if (itemMap != null) {
String itemValue = (String) itemMap.get(welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(0, "申报基数"));
if (StringUtils.isNotBlank(itemValue)) {
fundPaymentBase.put(String.valueOf(insuranceId), itemValue);
} else if (oldFundBaseMap != null && StringUtils.isNotBlank(oldFundBaseMap.get(String.valueOf(insuranceId)))) {
fundPaymentBase.put(String.valueOf(insuranceId), oldFundBaseMap.get(String.valueOf(insuranceId)));
}
}
}
}
insuranceArchivesFundSchemePO.setFundPaymentBaseString(JSON.toJSONString(socialPaymentBase));
insuranceArchivesFundSchemePO.setFundPaymentBaseString(JSON.toJSONString(fundPaymentBase));
}
return insuranceArchivesFundSchemePO;
}
@ -1325,12 +1589,14 @@ public class SISchemeServiceImpl extends Service implements SISchemeService {
//设置其他福利方案起始缴纳月最后缴纳月
Long otherSchemeId = schemeNameIdMap.get((String) findElement(singleAccount, SalaryI18nUtil.getI18nLabel(91496, "其他福利方案名称")).get(SalaryI18nUtil.getI18nLabel(91496, "其他福利方案名称")));
HashMap<String, String> oldOtherBaseMap = new HashMap<>();
HashMap<String, String> oldOtherComBaseMap = 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<String, String>().getClass());
oldOtherComBaseMap = JSON.parseObject(oldOtherSchemePO.getOtherPaymentComBaseString(), new HashMap<String, String>().getClass());
}
insuranceArchivesOtherSchemePO.setId(IdGenerator.generate());
@ -1361,24 +1627,49 @@ public class SISchemeServiceImpl extends Service implements SISchemeService {
insuranceArchivesOtherSchemePO.setEmployeeId(employeeId);
List<InsuranceSchemeDetailPO> insuranceSchemeDetailPOS = getInsuranceSchemeDetailMapper().queryListBySchemeId(insuranceArchivesOtherSchemePO.getOtherSchemeId());
encryptUtil.decryptList(insuranceSchemeDetailPOS, InsuranceSchemeDetailPO.class);
boolean welBaseDiffSign = siArchivesBiz.isDiffWelBase();
if (CollectionUtils.isNotEmpty(insuranceSchemeDetailPOS)) {
List<Long> insuranceIds = insuranceSchemeDetailPOS.stream().map(InsuranceSchemeDetailPO::getInsuranceId).collect(Collectors.toList());
HashMap<String, String> socialPaymentBase = new HashMap<>();
HashMap<String, String> otherPaymentBase = new HashMap<>();
HashMap<String, String> otherPaymentComBase = new HashMap<>();
for (Long insuranceId : insuranceIds) {
if (StringUtils.isBlank(welfareMap.get(insuranceId))) {
continue;
}
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, "申报基数"));
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)));
if (welBaseDiffSign) {
Map<String, Object> itemPerMap = findElement(singleAccount, welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0, "个人"));
if (itemPerMap != null) {
String itemValue = (String) itemPerMap.get(welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0, "个人"));
if (StringUtils.isNotBlank(itemValue)) {
otherPaymentBase.put(String.valueOf(insuranceId), itemValue);
} else if (oldOtherBaseMap != null && StringUtils.isNotBlank(oldOtherBaseMap.get(String.valueOf(insuranceId)))) {
otherPaymentBase.put(String.valueOf(insuranceId), oldOtherBaseMap.get(String.valueOf(insuranceId)));
}
}
Map<String, Object> itemComMap = findElement(singleAccount, welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0, "单位"));
if (itemComMap != null) {
String itemValue = (String) itemComMap.get(welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(0, "申报基数") + SalaryI18nUtil.getI18nLabel(0, "单位"));
if (StringUtils.isNotBlank(itemValue)) {
otherPaymentComBase.put(String.valueOf(insuranceId), itemValue);
} else if (oldOtherComBaseMap != null && StringUtils.isNotBlank(oldOtherComBaseMap.get(String.valueOf(insuranceId)))) {
otherPaymentComBase.put(String.valueOf(insuranceId), oldOtherComBaseMap.get(String.valueOf(insuranceId)));
}
}
insuranceArchivesOtherSchemePO.setOtherPaymentComBaseString(JSON.toJSONString(otherPaymentComBase));
} else {
Map<String, Object> itemMap = findElement(singleAccount, welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(0, "申报基数"));
if (itemMap != null) {
String itemValue = (String) itemMap.get(welfareMap.get(insuranceId) + SalaryI18nUtil.getI18nLabel(0, "申报基数"));
if (StringUtils.isNotBlank(itemValue)) {
otherPaymentBase.put(String.valueOf(insuranceId), itemValue);
} else if (oldOtherBaseMap != null && StringUtils.isNotBlank(oldOtherBaseMap.get(String.valueOf(insuranceId)))) {
otherPaymentBase.put(String.valueOf(insuranceId), oldOtherBaseMap.get(String.valueOf(insuranceId)));
}
}
}
}
insuranceArchivesOtherSchemePO.setOtherPaymentBaseString(JSON.toJSONString(socialPaymentBase));
insuranceArchivesOtherSchemePO.setOtherPaymentBaseString(JSON.toJSONString(otherPaymentBase));
}
return insuranceArchivesOtherSchemePO;
}

View File

@ -5,6 +5,9 @@ import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
import com.engine.salary.common.LocalDateRange;
import com.engine.salary.common.YearMonthRange;
import com.engine.salary.constant.SalaryDefaultTenantConstant;
import com.engine.salary.entity.datacollection.DataCollectionEmployee;
import com.engine.salary.entity.report.po.SalaryAcctResultReportPO;
import com.engine.salary.entity.salaryBill.po.SalarySendPO;
import com.engine.salary.entity.salaryacct.bo.SalaryAcctRecordBO;
import com.engine.salary.entity.salaryacct.param.SalaryAcctRecordQueryParam;
@ -14,6 +17,7 @@ import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO;
import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO;
import com.engine.salary.entity.salaryacct.po.SalaryAcctTaxAgentPO;
import com.engine.salary.entity.salarysob.dto.SalarySobCycleDTO;
import com.engine.salary.entity.salarysob.po.SalarySobItemPO;
import com.engine.salary.entity.salarysob.po.SalarySobPO;
import com.engine.salary.entity.taxagent.po.TaxAgentPO;
import com.engine.salary.entity.taxdeclaration.po.TaxDeclarationPO;
@ -35,13 +39,16 @@ import com.engine.salary.util.db.MapperProxyFactory;
import com.engine.salary.util.page.PageInfo;
import com.engine.salary.util.page.SalaryPageUtil;
import com.engine.salary.util.valid.ValidUtil;
import dm.jdbc.util.IdGenerator;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import weaver.hrm.User;
import java.time.YearMonth;
import java.util.*;
import java.util.stream.Collectors;
@ -83,6 +90,10 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe
return ServiceUtil.getService(SalarySysConfServiceImpl.class, user);
}
private SalarySobItemService getSalarySobItemService(User user) {
return ServiceUtil.getService(SalarySobItemServiceImpl.class, user);
}
private SalaryAcctTaxAgentService getSalaryAcctTaxAgentService(User user) {
return ServiceUtil.getService(SalaryAcctTaxAgentServiceImpl.class, user);
}
@ -112,6 +123,10 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe
return ServiceUtil.getService(SalaryStatisticsReportServiceImpl.class, user);
}
private SalaryEmployeeService getSalaryEmployeeService(User user) {
return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user);
}
private SalaryAcctRecordService getSalaryAcctRecordService(User user) {
return ServiceUtil.getService(SalaryAcctRecordServiceImpl.class, user);
}

View File

@ -4,6 +4,7 @@ import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
import com.engine.salary.cache.SalaryCacheKey;
import com.engine.salary.common.LocalDateRange;
import com.engine.salary.constant.SalaryDefaultTenantConstant;
import com.engine.salary.encrypt.EncryptUtil;
import com.engine.salary.entity.datacollection.DataCollectionEmployee;
import com.engine.salary.entity.datacollection.dto.AttendQuoteFieldListDTO;
@ -48,15 +49,18 @@ import com.engine.salary.util.SalaryI18nUtil;
import com.engine.salary.util.db.MapperProxyFactory;
import com.engine.salary.util.page.PageInfo;
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.google.common.collect.Sets;
import com.weaver.util.threadPool.ThreadPoolUtil;
import com.weaver.util.threadPool.constant.ModulePoolEnum;
import com.weaver.util.threadPool.entity.LocalRunnable;
import dm.jdbc.util.IdGenerator;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import org.jetbrains.annotations.NotNull;
@ -305,9 +309,10 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
TaxAgentPO taxAgent = getTaxAgentService(user).getById(salaryAcctEmployeePO.getTaxAgentId());
// 查询公式
Map<String, SalaryAcctResultListColumnDTO> formulaContentMap = getSalaryAcctResultService(user).getColumnBySalaryAcctRecordId(salaryAcctEmployeePO.getSalaryAcctRecordId());
List<Long> lockItems = byId.getLockSalaryItemIds() == null ? Collections.emptyList() : byId.getLockSalaryItemIds();
// 转换成薪资核算结果详情dto
return SalaryAcctResultBO.convert2DetailDTO(simpleEmployee, taxAgent, salaryAcctEmployeePO, salarySobEmpFieldPOS, salarySobItemGroupPOS, salarySobItemPOS, salaryItemPOS, salaryAcctResultPOS, salarySobBackItemPOList, salaryBackItemPOS, salaryBackItemFormula, formulaContentMap);
return SalaryAcctResultBO.convert2DetailDTO(simpleEmployee, taxAgent, salaryAcctEmployeePO, salarySobEmpFieldPOS, salarySobItemGroupPOS, salarySobItemPOS, salaryItemPOS, salaryAcctResultPOS, salarySobBackItemPOList, salaryBackItemPOS, salaryBackItemFormula, formulaContentMap, lockItems);
}
@Override
@ -1137,4 +1142,107 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
}
return true;
}
@Override
public void batchUpdate(SalaryAcctResultBatchUpdateParam param) {
ValidUtil.doValidator(param);
SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(param.getSalaryAcctRecordId());
if (ObjectUtils.isEmpty(salaryAcctRecordPO)) {
throw new SalaryRunTimeException("薪资核算记录不存在,或已被删除");
}
List<SalarySobItemPO> salarySobItemPOS = getSalarySobItemService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId());
// 薪资账套中包含的薪资项目
List<Long> salarySobItemIds = salarySobItemPOS.stream().map(SalarySobItemPO::getSalaryItemId).collect(Collectors.toList());
if (!salarySobItemIds.contains(param.getSalaryItemId())) {
throw new SalaryRunTimeException("该账套不包含该薪资项目或已被删除,请先检查账套");
}
// 获取需要更新的核算人员信息
List<SalaryAcctEmployeePO> salaryAcctEmployeePOList = new ArrayList<>();
if (CollectionUtils.isEmpty(param.getIdList())) {
// 没有选择核算人员更新核算记录中所有人员
salaryAcctEmployeePOList.addAll(getSalaryAcctEmployeeService(user).listBySalaryAcctRecordId(salaryAcctRecordPO.getId()));
} else {
salaryAcctEmployeePOList.addAll(getSalaryAcctEmployeeService(user).listByIds(param.getIdList()));
}
if (CollectionUtils.isNotEmpty(salaryAcctEmployeePOList)) {
List<Long> salaryAcctEmployeeIdList = SalaryEntityUtil.properties(salaryAcctEmployeePOList, SalaryAcctEmployeePO::getId, Collectors.toList());
// 查询薪资核算结果
List<SalaryAcctResultPO> resultPOS = listByAcctEmployeeIdsAndSalaryItemIds(salaryAcctEmployeeIdList, Collections.singleton(param.getSalaryItemId()));
Map<Long, SalaryAcctResultPO> salaryAcctResultPOMap = SalaryEntityUtil.convert2Map(resultPOS, SalaryAcctResultPO::getSalaryAcctEmpId);
List<DataCollectionEmployee> dataCollectionEmployees = getSalaryEmployeeService(user).listAllForReport();
Map<Long, DataCollectionEmployee> emps = SalaryEntityUtil.convert2Map(dataCollectionEmployees, DataCollectionEmployee::getEmployeeId);
List<SalaryAcctResultPO> needUpdateList = new ArrayList<>();
List<SalaryAcctResultPO> needInsertList = new ArrayList<>();
Date now = new Date();
List<SalaryAcctResultReportPO> salaryAcctResultReportPOS = new ArrayList<>();
salaryAcctEmployeePOList.forEach(salaryAcctEmployeePO -> {
if (salaryAcctResultPOMap.containsKey(salaryAcctEmployeePO.getId())) {
// 更新
SalaryAcctResultPO po = salaryAcctResultPOMap.get(salaryAcctEmployeePO.getId());
po.setResultValue(param.getValue());
po.setUpdateTime(now);
needUpdateList.add(po);
} else {
// 新增
needInsertList.add(SalaryAcctResultPO.builder()
.salarySobId(salaryAcctRecordPO.getSalarySobId())
.salaryItemId(param.getSalaryItemId())
.salaryAcctRecordId(param.getSalaryAcctRecordId())
.salaryAcctEmpId(salaryAcctEmployeePO.getId())
.employeeId(salaryAcctEmployeePO.getEmployeeId())
.taxAgentId(salaryAcctEmployeePO.getTaxAgentId())
.resultValue(param.getValue())
.originResultValue("")
.creator(Long.valueOf(user.getUID()))
.createTime(now)
.updateTime(now)
.deleteType(NumberUtils.INTEGER_ZERO)
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
.build());
}
// 报表
SalaryAcctResultReportPO po = SalaryAcctResultReportPO.builder()
.id(IdGenerator.generate())
.salarySobId(salaryAcctRecordPO.getSalarySobId())
.salaryItemId(param.getSalaryItemId())
.salaryAcctRecordId(param.getSalaryAcctRecordId())
.salaryAcctEmpId(salaryAcctEmployeePO.getId().toString())
.employeeId(salaryAcctEmployeePO.getEmployeeId().toString())
.taxAgentId(salaryAcctEmployeePO.getTaxAgentId())
.resultValue(param.getValue())
.creator(Long.valueOf(user.getUID()))
.createTime(now)
.updateTime(now)
.deleteType(NumberUtils.INTEGER_ZERO)
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
.build();
DataCollectionEmployee dataCollectionEmployee = emps.get(salaryAcctEmployeePO.getEmployeeId());
if (dataCollectionEmployee != null) {
po.setDepartmentId(dataCollectionEmployee.getDepartmentId());
po.setSubcompanyId(dataCollectionEmployee.getSubcompanyid());
po.setCostcenterId(dataCollectionEmployee.getCostcenterId());
po.setJobtitleId(dataCollectionEmployee.getJobtitleId());
po.setLocationId(dataCollectionEmployee.getLocationId());
}
salaryAcctResultReportPOS.add(po);
});
// 入库
if (CollectionUtils.isNotEmpty(needUpdateList)) {
// 数据加密
encryptUtil.encryptList(needUpdateList, SalaryAcctResultPO.class);
List<List<SalaryAcctResultPO>> partition = Lists.partition(needUpdateList, 100);
partition.forEach(getSalaryAcctResultMapper()::batchUpdate);
}
batchSave(needInsertList);
// 报表入库前先删除
getSalaryAcctReportService(user).deleteByAcctEmployeeIdsAndSalaryItemIds(param.getIdList(), Collections.singletonList(param.getSalaryItemId()) );
getSalaryAcctReportService(user).batchSave(salaryAcctResultReportPOS);
}
}
}

View File

@ -163,6 +163,19 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe
if (queryParam.isExtSalaryArchiveList()) {
return getSalaryArchiveMapper().listExtSalaryArchive(queryParam);
}
if (StringUtils.isNotBlank(queryParam.getPayStartDateStartDateStr())) {
queryParam.setPayStartDateStartDate(SalaryDateUtil.stringToDate(queryParam.getPayStartDateStartDateStr()));
}
if (Objects.nonNull(queryParam.getPayStartDateEndDateStr())) {
queryParam.setPayStartDateEndDate(SalaryDateUtil.stringToDate(queryParam.getPayStartDateEndDateStr()));
}
if (StringUtils.isNotBlank(queryParam.getPayEndDateStartDateStr())) {
queryParam.setPayEndDateStartDate(SalaryDateUtil.stringToDate(queryParam.getPayEndDateStartDateStr()));
}
if (Objects.nonNull(queryParam.getPayEndDateEndDateStr())) {
queryParam.setPayEndDateEndDate(SalaryDateUtil.stringToDate(queryParam.getPayEndDateEndDateStr()));
}
return getSalaryArchiveMapper().list(queryParam);
}
@ -320,11 +333,11 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe
@Override
public void deleteSalaryArchive(Collection<Long> salaryArchiveIds) {
if(CollectionUtils.isEmpty(salaryArchiveIds)){
if (CollectionUtils.isEmpty(salaryArchiveIds)) {
throw new SalaryRunTimeException("薪资档案参数为空!");
}
SalarySysConfPO canDelete = getSalarySysConfService(user).getOneByCode(SalarySysConstant.SALARY_ARCHIVE_DELETE);
if(Objects.isNull(canDelete) || StringUtils.equals(canDelete.getConfValue(),"0") ){
if (Objects.isNull(canDelete) || StringUtils.equals(canDelete.getConfValue(), "0")) {
throw new SalaryRunTimeException("不允许删除薪资档案,请先开启删除档案规则配置!");
}
List<SalaryArchivePO> salaryArchiveList = getSalaryArchiveMapper().listSome(SalaryArchivePO.builder().ids(salaryArchiveIds).build());
@ -333,17 +346,17 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe
List<Long> canDeleteTaxAgentIds = getTaxAgentService(user).listAllTaxAgentsAsAdmin((long) user.getUID())
.stream().map(TaxAgentPO::getId).collect(Collectors.toList());
boolean err = salaryArchiveList.stream().anyMatch(po -> !canDeleteTaxAgentIds.contains(po.getTaxAgentId()));
if(CollectionUtils.isEmpty(salaryArchiveList) || err){
if (CollectionUtils.isEmpty(salaryArchiveList) || err) {
throw new SalaryRunTimeException("薪资档案不存在,或没有权限删除该薪资档案!");
}
Optional<SalaryArchivePO> fixedList = salaryArchiveList.stream().filter(archive -> !StringUtils.equals(archive.getRunStatus(), SalaryArchiveStatusEnum.PENDING.getValue())
&& !StringUtils.equals(archive.getRunStatus(), SalaryArchiveStatusEnum.STOP_FROM_PENDING.getValue())).findFirst();
if(fixedList.isPresent()){
if (fixedList.isPresent()) {
throw new SalaryRunTimeException("发薪员工、待停薪员工、停薪_来自待停薪无法删除薪资档案");
}
List<Long> deleteIds = salaryArchiveList.stream().map(SalaryArchivePO::getId).collect(Collectors.toList());
// 删除薪资档案及档案项目
if(CollectionUtils.isNotEmpty(deleteIds)){
if (CollectionUtils.isNotEmpty(deleteIds)) {
getSalaryArchiveMapper().deleteByIds(deleteIds);
getSalaryArchiveItemMapper().deleteBySalaryArchiveId(deleteIds);
}
@ -432,7 +445,7 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe
List<Long> salaryItemIds = salaryItems.stream().map(SalaryItemPO::getId).collect(Collectors.toList());
// 1.获取薪资档案所对应的当前生效的薪资项目数据
List<SalaryArchiveItemPO> salaryArchiveItemList = Collections.emptyList();
if(CollectionUtils.isNotEmpty(ids) && CollectionUtils.isNotEmpty(salaryItemIds) || !isPage){
if (CollectionUtils.isNotEmpty(ids) && CollectionUtils.isNotEmpty(salaryItemIds) || !isPage) {
salaryArchiveItemList = getCurrentEffectiveItemList(ids, salaryItemIds);
}
List<SalaryArchiveItemPO> finalSalaryArchiveItemList = salaryArchiveItemList;
@ -461,7 +474,7 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe
// 3.组装数据
List<Map<String, Object>> listMaps = new ArrayList<>();
salaryArchives.forEach(e -> {
e.setEmployeeStatus(UserStatusEnum.getDefaultLabelByValue(Integer.parseInt(e.getEmployeeStatus())));
e.setEmployeeStatus(NumberUtils.isCreatable(e.getEmployeeStatus()) ? UserStatusEnum.getDefaultLabelByValue(Integer.parseInt(e.getEmployeeStatus())) : "");
Map<String, Object> map = new LinkedHashMap<>();
map.put("id", e.getId());
@ -757,11 +770,11 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe
// 获取核算人员规则
List<String> statusList = Collections.emptyList();
SalarySysConfPO employeeRule = getSalarySysConfService(user).getOneByCode(SalarySysConstant.SALARY_ACCT_EMPLOYEE_RULE);
if(Objects.isNull(employeeRule) || StringUtils.equals(employeeRule.getConfValue(), SalaryAcctEmployeeRuleEnum.BYPAYENDTIME.getValue())){
if (Objects.isNull(employeeRule) || StringUtils.equals(employeeRule.getConfValue(), SalaryAcctEmployeeRuleEnum.BYPAYENDTIME.getValue())) {
// 默认包含停薪列表
statusList = Arrays.asList(SalaryArchiveStatusEnum.FIXED.getValue(), SalaryArchiveStatusEnum.SUSPEND.getValue(),
SalaryArchiveStatusEnum.STOP_FROM_SUSPEND.getValue() );
}else{
SalaryArchiveStatusEnum.STOP_FROM_SUSPEND.getValue());
} else {
// 仅包含发薪待定薪
statusList = Arrays.asList(SalaryArchiveStatusEnum.FIXED.getValue(), SalaryArchiveStatusEnum.SUSPEND.getValue());
}

View File

@ -254,6 +254,7 @@ public class SalaryItemServiceImpl extends Service implements SalaryItemService
newSalaryItemPO.setSharedType(saveParam.getSharedType());
newSalaryItemPO.setTaxAgentIds(saveParam.getTaxAgentIds());
newSalaryItemPO.setSortedIndex(saveParam.getSortedIndex());
newSalaryItemPO.setWidth(saveParam.getWidth());
salaryItemBiz.updateById(newSalaryItemPO);
//改名后更新公式
@ -421,6 +422,9 @@ public class SalaryItemServiceImpl extends Service implements SalaryItemService
List<SalarySobItemPO> salarySobItemList = getSalarySobItemService(user).listBySalaryItemIds(Collections.singleton(salaryItemId));
Set<Long> salarySobIds = SalaryEntityUtil.properties(salarySobItemList, SalarySobItemPO::getSalarySobId);
List<SalarySobPO> salarySobs = getSalarySobService(user).listByIds(salarySobIds);
// 获取能够管理的义务人
Set<Long> taxAgentIds = SalaryEntityUtil.properties(getTaxAgentService(user).listAllTaxAgentsAsAdmin(Long.valueOf(user.getUID())), TaxAgentPO::getId);
salarySobs = salarySobs.stream().filter(sob -> taxAgentIds.contains(sob.getTaxAgentId())).collect(Collectors.toList());
return salarySobs.stream().map(m -> {
Map<String, Object> map = new HashMap<>();
map.put("id", String.valueOf(m.getId()));

View File

@ -1725,4 +1725,9 @@ public class SalarySendServiceImpl extends Service implements SalarySendService
}
return getSalarySendMapper().getByIds(salarySendId);
}
@Override
public List<SalarySendPO> listSome(SalarySendPO param) {
return getSalarySendMapper().listSome(param);
}
}

View File

@ -53,7 +53,9 @@ public class TaxAgentEmpServiceImpl extends Service implements TaxAgentEmpServic
return;
}
List<Long> idList = taxAgentEmpList.stream().map(TaxAgentEmpPO::getId).collect(Collectors.toList());
getTaxAgentEmpMapper().deleteByIds(idList);
List<List<Long>> partition = Lists.partition(idList, 500);
partition.forEach(getTaxAgentEmpMapper()::deleteByIds);
}
@Override

View File

@ -105,4 +105,14 @@ public class SalarySysConstant {
* 核算固定列头数
*/
public static final String SALARY_ACCT_FIXED_COLUMNS = "salaryAcctFixedColumns";
/**
* 应用设置是否福利档案基数区分个人和单位
*/
public static final String WEL_BASE_DIFF_BY_PER_AND_COM = "welBaseDiffByPerAndCom";
/**
* 应用设置是否福利档案导入时不符合上下限的基数调整为上限 /下限
*/
public static final String WEL_BASE_AUTO_ADJUST = "welBaseAutoAdjust";
}

View File

@ -761,8 +761,10 @@ public class SalarySysConfServiceImpl extends Service implements SalarySysConfSe
insuranceArchivesSocialSchemePos.forEach(po -> {
if (OpenEnum.OFF.getValue().equals(isOpenEncrypt)) {
po.setSocialPaymentBaseString(AESEncryptUtil.closeEncryptSetting(po.getSocialPaymentBaseString(), sysConfPo));
po.setSocialPaymentComBaseString(AESEncryptUtil.closeEncryptSetting(po.getSocialPaymentComBaseString(), sysConfPo));
} else {
po.setSocialPaymentBaseString(AESEncryptUtil.encrypt(po.getSocialPaymentBaseString()));
po.setSocialPaymentComBaseString(AESEncryptUtil.encrypt(po.getSocialPaymentComBaseString()));
}
});
List<List<InsuranceArchivesSocialSchemePO>> partition = Lists.partition(insuranceArchivesSocialSchemePos, 50);
@ -788,8 +790,10 @@ public class SalarySysConfServiceImpl extends Service implements SalarySysConfSe
insuranceArchivesFundSchemePos.forEach(po -> {
if (OpenEnum.OFF.getValue().equals(isOpenEncrypt)) {
po.setFundPaymentBaseString(AESEncryptUtil.closeEncryptSetting(po.getFundPaymentBaseString(), sysConfPo));
po.setFundPaymentComBaseString(AESEncryptUtil.closeEncryptSetting(po.getFundPaymentComBaseString(), sysConfPo));
} else {
po.setFundPaymentBaseString(AESEncryptUtil.encrypt(po.getFundPaymentBaseString()));
po.setFundPaymentComBaseString(AESEncryptUtil.encrypt(po.getFundPaymentComBaseString()));
}
});
List<List<InsuranceArchivesFundSchemePO>> partition = Lists.partition(insuranceArchivesFundSchemePos, 50);
@ -815,8 +819,10 @@ public class SalarySysConfServiceImpl extends Service implements SalarySysConfSe
insuranceArchivesOtherSchemePos.forEach(po -> {
if (OpenEnum.OFF.getValue().equals(isOpenEncrypt)) {
po.setOtherPaymentBaseString(AESEncryptUtil.closeEncryptSetting(po.getOtherPaymentBaseString(), sysConfPo));
po.setOtherPaymentComBaseString(AESEncryptUtil.closeEncryptSetting(po.getOtherPaymentComBaseString(), sysConfPo));
} else {
po.setOtherPaymentBaseString(AESEncryptUtil.encrypt(po.getOtherPaymentBaseString()));
po.setOtherPaymentComBaseString(AESEncryptUtil.encrypt(po.getOtherPaymentComBaseString()));
}
});
List<List<InsuranceArchivesOtherSchemePO>> partition = Lists.partition(insuranceArchivesOtherSchemePos, 50);
@ -875,6 +881,9 @@ public class SalarySysConfServiceImpl extends Service implements SalarySysConfSe
po.setSocialPaymentBaseString(AESEncryptUtil.closeEncryptSetting(po.getSocialPaymentBaseString(), sysConfPo));
po.setFundPaymentBaseString(AESEncryptUtil.closeEncryptSetting(po.getFundPaymentBaseString(), sysConfPo));
po.setOtherPaymentBaseString(AESEncryptUtil.closeEncryptSetting(po.getOtherPaymentBaseString(), sysConfPo));
po.setSocialPaymentComBaseString(AESEncryptUtil.closeEncryptSetting(po.getSocialPaymentComBaseString(), sysConfPo));
po.setFundPaymentComBaseString(AESEncryptUtil.closeEncryptSetting(po.getFundPaymentComBaseString(), sysConfPo));
po.setOtherPaymentComBaseString(AESEncryptUtil.closeEncryptSetting(po.getOtherPaymentComBaseString(), sysConfPo));
po.setSocialPerJson(AESEncryptUtil.closeEncryptSetting(po.getSocialPerJson(), sysConfPo));
po.setSocialPerSum(AESEncryptUtil.closeEncryptSetting(po.getSocialPerSum(), sysConfPo));
po.setFundPerJson(AESEncryptUtil.closeEncryptSetting(po.getFundPerJson(), sysConfPo));
@ -893,6 +902,9 @@ public class SalarySysConfServiceImpl extends Service implements SalarySysConfSe
po.setSocialPaymentBaseString(AESEncryptUtil.encrypt(po.getSocialPaymentBaseString()));
po.setFundPaymentBaseString(AESEncryptUtil.encrypt(po.getFundPaymentBaseString()));
po.setOtherPaymentBaseString(AESEncryptUtil.encrypt(po.getOtherPaymentBaseString()));
po.setSocialPaymentComBaseString(AESEncryptUtil.encrypt(po.getSocialPaymentComBaseString()));
po.setFundPaymentComBaseString(AESEncryptUtil.encrypt(po.getFundPaymentComBaseString()));
po.setOtherPaymentComBaseString(AESEncryptUtil.encrypt(po.getOtherPaymentComBaseString()));
po.setSocialPerJson(AESEncryptUtil.encrypt(po.getSocialPerJson()));
po.setSocialPerSum(AESEncryptUtil.encrypt(po.getSocialPerSum()));
po.setFundPerJson(AESEncryptUtil.encrypt(po.getFundPerJson()));

View File

@ -4,6 +4,9 @@ import com.cloudstore.eccom.pc.table.WeaTableColumn;
import com.github.pagehelper.PageHelper;
import org.apache.commons.collections4.CollectionUtils;
import java.awt.*;
import java.awt.font.FontRenderContext;
import java.awt.geom.Rectangle2D;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@ -93,16 +96,24 @@ public class SalaryPageUtil {
endIndex > source.size() ? source.size() : endIndex);
}
public static String selfAdaption(String chars) {
int adaption = 0;
if (chars != null) {
adaption = chars.length() * 12 + 55;
static Font font = new Font("Arial", Font.PLAIN, 12); // 设置字体样式大小等属性
static FontRenderContext frc = new FontRenderContext(null, true, false);
// GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
/**
* 自适应文字长度
* @param chars
* @param width
* @return
*/
public static String selfAdaption(String chars, Integer width) {
if (width != null && width != 0) {
return width + "";
}
if (adaption < 79) {
adaption = 79;
}
return adaption + "";
Rectangle2D bounds = font.getStringBounds(chars, frc);
int pxLength = (int) Math.ceil(bounds.getWidth());
return pxLength + 55 + "";
}

View File

@ -2,6 +2,7 @@ package com.engine.salary.web;
import com.engine.common.util.ParamUtil;
import com.engine.common.util.ServiceUtil;
import com.engine.salary.common.SalaryContext;
import com.engine.salary.entity.hrm.dto.HrmInfoDTO;
import com.engine.salary.entity.hrm.param.HrmQueryParam;
import com.engine.salary.entity.siaccount.dto.InsuranceAccountTabDTO;
@ -37,11 +38,9 @@ import javax.ws.rs.core.StreamingOutput;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.time.LocalDate;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 福利核算控制器
@ -50,6 +49,7 @@ import java.util.stream.Collectors;
public class SIAccountController {
public SIAccountService getService(User user) {
SalaryContext.get().setValue("user",user);
return ServiceUtil.getService(SIAccountServiceImpl.class, user);
}

View File

@ -2,6 +2,7 @@ package com.engine.salary.web;
import com.engine.common.util.ParamUtil;
import com.engine.common.util.ServiceUtil;
import com.engine.salary.common.SalaryContext;
import com.engine.salary.entity.siarchives.dto.InsuranceArchivesBaseHistoryDTO;
import com.engine.salary.entity.siarchives.param.InsuranceArchivesListParam;
import com.engine.salary.entity.siarchives.param.InsuranceArchivesSaveParam;
@ -33,6 +34,7 @@ import java.util.Map;
public class SIArchivesController {
private SIArchivesService getService(User user) {
SalaryContext.get().setValue("user",user);
return ServiceUtil.getService(SIArchivesServiceImpl.class,user);
}

View File

@ -158,6 +158,7 @@ public class SalaryAcctController {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<Long, String>(user).run(getSalaryAcctRecordWrapper(user)::backCalculate, param.getSalaryAcctRecordId());
}
/* ********************************薪资核算记录相关 end*********************************/
@ -448,6 +449,15 @@ public class SalaryAcctController {
return new ResponseResult<SalaryAcctResultUpdateLockStatusParam, String>(user).run(getSalaryAcctResultWrapper(user)::updateLockStatusByParam, param);
}
//批量更新
@POST
@Path("/acctresult/batchUpdate")
@Produces(MediaType.APPLICATION_JSON)
public String batchUpdate(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctResultBatchUpdateParam param) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<SalaryAcctResultBatchUpdateParam, String>(user).run(getSalaryAcctResultWrapper(user)::batchUpdate, param);
}
//薪资核算
@POST
@Path("/acctresult/accounting")

View File

@ -9,10 +9,7 @@ import com.engine.salary.entity.progress.ProgressDTO;
import com.engine.salary.entity.salaryacct.dto.ConsolidatedTaxDetailDTO;
import com.engine.salary.entity.salaryacct.dto.SalaryAcctResultDetailDTO;
import com.engine.salary.entity.salaryacct.dto.SalaryAcctResultListColumnDTO;
import com.engine.salary.entity.salaryacct.param.SalaryAcctCalculateParam;
import com.engine.salary.entity.salaryacct.param.SalaryAcctResultQueryParam;
import com.engine.salary.entity.salaryacct.param.SalaryAcctResultSaveParam;
import com.engine.salary.entity.salaryacct.param.SalaryAcctResultUpdateLockStatusParam;
import com.engine.salary.entity.salaryacct.param.*;
import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO;
import com.engine.salary.exception.SalaryRunTimeException;
import com.engine.salary.service.*;
@ -260,6 +257,13 @@ public class SalaryAcctResultWrapper extends Service {
return getSalaryAcctResultService(user).checkAuth(salaryAcctRecordId);
}
/**
* 薪资核算结果批量更新
* @param param
*/
public void batchUpdate(SalaryAcctResultBatchUpdateParam param) {
getSalaryAcctResultService(user).batchUpdate(param);
}
/**
* 薪资核算-校验