package com.engine.salary.entity.taxdeclaration.bo; import com.engine.salary.constant.TaxDeclarationDataIndexConstant; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.taxdeclaration.dto.TaxDeclarationEmployeeDTO; import com.engine.salary.entity.taxdeclaration.dto.TaxDeclarationWageListDTO; import com.engine.salary.entity.taxdeclaration.po.TaxDeclarationDetailPO; import com.engine.salary.enums.salaryaccounting.EmployeeTypeEnum; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; import com.google.common.collect.Lists; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import java.util.*; /** * @description: 个税申报表详情 * @author: xiajun * @modified By: xiajun * @date: 2022/3/14 18:31 * @version:v1.0 */ public class TaxDeclarationDetailBO { /** * 转换成个税申报表详情列表(正常工资薪金所得) * * @param taxDeclarationDetailPOS * @param simpleEmployees * @return */ public static List convert2ListDTO4Wage(List taxDeclarationDetailPOS, List taxDeclarationEmployeeDTOS, List simpleEmployees) { if (CollectionUtils.isEmpty(taxDeclarationDetailPOS)) { return Collections.emptyList(); } List taxDeclarationWageListDTOS = Lists.newArrayListWithExpectedSize(taxDeclarationEmployeeDTOS.size()); Map> employeeIdKeyTaxDeclarationDetailPOMap = SalaryEntityUtil.group2Map(taxDeclarationDetailPOS, taxDeclarationDetailPO -> EmployeeTypeEnum.ORGANIZATION.getValue() + "_" + taxDeclarationDetailPO.getEmployeeId()); Map simpleEmployeeMap = SalaryEntityUtil.convert2Map(simpleEmployees, DataCollectionEmployee::getEmployeeId); for (TaxDeclarationEmployeeDTO dto : taxDeclarationEmployeeDTOS) { Map fieldCodeKeyFieldValueMap = SalaryEntityUtil.convert2Map(employeeIdKeyTaxDeclarationDetailPOMap.get(dto.getEmployeeType() + "_" + dto.getEmployeeId()), TaxDeclarationDetailPO::getFieldCode, TaxDeclarationDetailPO::getFieldValue); TaxDeclarationWageListDTO taxDeclarationWageListDTO = new TaxDeclarationWageListDTO() .setCardType(SalaryI18nUtil.getI18nLabel(105564, "居民身份证")) .setIncome(fieldCodeKeyFieldValueMap.get(TaxDeclarationDataIndexConstant.INCOME)) .setTaxFreeIncome(fieldCodeKeyFieldValueMap.get(TaxDeclarationDataIndexConstant.TAX_FREE_INCOME)) .setEndowmentInsurance(fieldCodeKeyFieldValueMap.get(TaxDeclarationDataIndexConstant.ENDOWMENT_INSURANCE)) .setMedicalInsurance(fieldCodeKeyFieldValueMap.get(TaxDeclarationDataIndexConstant.MEDICAL_INSURANCE)) .setUnemploymentInsurance(fieldCodeKeyFieldValueMap.get(TaxDeclarationDataIndexConstant.UNEMPLOYMENT_INSURANCE)) .setHousingProvidentFund(fieldCodeKeyFieldValueMap.get(TaxDeclarationDataIndexConstant.HOUSING_PROVIDENT_FUND)) .setAddUpChildEducation(fieldCodeKeyFieldValueMap.get(TaxDeclarationDataIndexConstant.ADD_UP_CHILD_EDUCATION)) .setAddUpHousingLoanInterest(fieldCodeKeyFieldValueMap.get(TaxDeclarationDataIndexConstant.ADD_UP_HOUSING_LOAN_INTEREST)) .setAddUpHousingRent(fieldCodeKeyFieldValueMap.get(TaxDeclarationDataIndexConstant.ADD_UP_HOUSING_RENT)) .setAddUpContinuingEducation(fieldCodeKeyFieldValueMap.get(TaxDeclarationDataIndexConstant.ADD_UP_CONTINUING_EDUCATION)) .setAddUpSupportElderly(fieldCodeKeyFieldValueMap.get(TaxDeclarationDataIndexConstant.ADD_UP_SUPPORT_ELDERLY)) .setAddUpIllnessMedical(fieldCodeKeyFieldValueMap.get(TaxDeclarationDataIndexConstant.ADD_UP_ILLNESS_MEDICAL)) .setAddUpInfantCare(fieldCodeKeyFieldValueMap.get(TaxDeclarationDataIndexConstant.ADD_UP_INFANT_CARE)) .setAnnuity(fieldCodeKeyFieldValueMap.get(TaxDeclarationDataIndexConstant.ANNUITY)) .setCommercialHealthInsurance(fieldCodeKeyFieldValueMap.get(TaxDeclarationDataIndexConstant.COMMERCIAL_HEALTH_INSURANCE)) .setTaxDeferredEndowmentInsurance(fieldCodeKeyFieldValueMap.get(TaxDeclarationDataIndexConstant.TAX_DEFERRED_ENDOWMENT_INSURANCE)) .setOther(fieldCodeKeyFieldValueMap.get(TaxDeclarationDataIndexConstant.OTHER)) .setAllowedDonation(fieldCodeKeyFieldValueMap.get(TaxDeclarationDataIndexConstant.ALLOWED_DONATION)) .setTaxDeduction(fieldCodeKeyFieldValueMap.get(TaxDeclarationDataIndexConstant.TAX_DEDUCTION)) .setDescription(fieldCodeKeyFieldValueMap.get(TaxDeclarationDataIndexConstant.DESCRIPTION)); if (dto.getEmployeeType() == null || Objects.equals(dto.getEmployeeType(), EmployeeTypeEnum.ORGANIZATION.getValue())) { DataCollectionEmployee simpleEmployee = simpleEmployeeMap.get(dto.getEmployeeId()); taxDeclarationWageListDTO.setId(simpleEmployee.getEmployeeId()) .setEmployeeId(simpleEmployee.getEmployeeId()) .setJobNum(simpleEmployee.getWorkcode()) .setUsername(simpleEmployee.getUsername()) .setCardNum(Optional.ofNullable(simpleEmployee).map(DataCollectionEmployee::getIdNo).orElse(StringUtils.EMPTY)); } else { // ExtEmployeePO extEmployeePO = extEmployeePOMap.get(dto.getEmployeeId()); // taxDeclarationWageListDTO.setId(extEmployeePO.getId()) // .setEmployeeId(extEmployeePO.getId()) // .setJobNum(StringUtils.EMPTY) // .setUsername(extEmployeePO.getUsername()) // .setCardNum(extEmployeePO.getCardNum()); } taxDeclarationWageListDTOS.add(taxDeclarationWageListDTO); } return taxDeclarationWageListDTOS; } // /** // * 转换成个税申报表详情列表(劳务报酬所得) // * // * @param taxDeclarationDetailPOS // * @param simpleEmployees // * @return // */ // public static List convert2ListDTO4Labor(List taxDeclarationDetailPOS, // List taxDeclarationEmployeeDTOS, // List simpleEmployees, // List simpleUserInfos, // List extEmployees) { // if (CollectionUtils.isEmpty(taxDeclarationDetailPOS)) { // return Collections.emptyList(); // } // List taxDeclarationLaborListDTOS = Lists.newArrayListWithExpectedSize(taxDeclarationEmployeeDTOS.size()); // Map> employeeIdKeyTaxDeclarationDetailPOMap = SalaryEntityUtil.group2Map(taxDeclarationDetailPOS, // taxDeclarationDetailPO -> taxDeclarationDetailPO.getEmployeeType() + "_" + taxDeclarationDetailPO.getEmployeeId()); // Map simpleEmployeeMap = SalaryEntityUtil.convert2Map(simpleEmployees, SimpleEmployee::getEmployeeId); // Map simpleUserInfoMap = simpleUserInfos.stream() // .filter(simpleUserInfo -> Objects.nonNull(simpleUserInfo) && Objects.nonNull(simpleUserInfo.getUser())) // .collect(Collectors.toMap(simpleUserInfo -> simpleUserInfo.getUser().getId(), Function.identity(), (a, b) -> a)); // Map extEmployeePOMap = SalaryEntityUtil.convert2Map(extEmployees, ExtEmployeePO::getId); // for (TaxDeclarationEmployeeDTO dto : taxDeclarationEmployeeDTOS) { // Map fieldCodeKeyFieldValueMap = SalaryEntityUtil.convert2Map(employeeIdKeyTaxDeclarationDetailPOMap.get(dto.getEmployeeType() + "_" + dto.getEmployeeId()), // TaxDeclarationDetailPO::getFieldCode, TaxDeclarationDetailPO::getFieldValue); // TaxDeclarationLaborListDTO taxDeclarationLaborListDTO = new TaxDeclarationLaborListDTO() // .setId(dto.getEmployeeId()) // .setEmployeeId(dto.getEmployeeId()) // .setCardType(SalaryI18nUtil.getI18nLabel(105564, "居民身份证")) // .setIncomeItems(fieldCodeKeyFieldValueMap.get(TaxDeclarationDataIndexConstant.INCOME_ITEMS)) // .setLaborIncome(fieldCodeKeyFieldValueMap.get(TaxDeclarationDataIndexConstant.LABOR_INCOME)) // .setLaborTaxFreeIncome(fieldCodeKeyFieldValueMap.get(TaxDeclarationDataIndexConstant.LABOR_TAX_FREE_INCOME)) // .setCommercialHealthInsurance(fieldCodeKeyFieldValueMap.get(TaxDeclarationDataIndexConstant.COMMERCIAL_HEALTH_INSURANCE)) // .setTaxDeferredEndowmentInsurance(fieldCodeKeyFieldValueMap.get(TaxDeclarationDataIndexConstant.TAX_DEFERRED_ENDOWMENT_INSURANCE)) // .setOther(fieldCodeKeyFieldValueMap.get(TaxDeclarationDataIndexConstant.OTHER)) // .setAllowedDonation(fieldCodeKeyFieldValueMap.get(TaxDeclarationDataIndexConstant.ALLOWED_DONATION)) // .setTaxDeduction(fieldCodeKeyFieldValueMap.get(TaxDeclarationDataIndexConstant.TAX_DEDUCTION)) // .setDescription(fieldCodeKeyFieldValueMap.get(TaxDeclarationDataIndexConstant.DESCRIPTION)); // if (Objects.equals(dto.getEmployeeType(), EmployeeTypeEnum.ORGANIZATION.getValue())) { // SimpleEmployee simpleEmployee = simpleEmployeeMap.get(dto.getEmployeeId()); // SimpleUserInfo simpleUserInfo = simpleUserInfoMap.get(dto.getEmployeeId()); // taxDeclarationLaborListDTO.setJobNum(simpleEmployee.getJobNum()) // .setUsername(simpleEmployee.getUsername()) // .setCardNum(Optional.ofNullable(simpleUserInfo).map(SimpleUserInfo::getIdNo).orElse(StringUtils.EMPTY)); // } else { // ExtEmployeePO extEmployeePO = extEmployeePOMap.get(dto.getEmployeeId()); // taxDeclarationLaborListDTO.setJobNum(StringUtils.EMPTY) // .setUsername(extEmployeePO.getUsername()) // .setCardNum(extEmployeePO.getCardNum()); // } // taxDeclarationLaborListDTOS.add(taxDeclarationLaborListDTO); // } // return taxDeclarationLaborListDTOS; // } }