Merge branch 'feature/减免附表' into release/个税版本
This commit is contained in:
commit
a8dc1d4010
|
|
@ -23,4 +23,6 @@ public class OtherDeductionDetailDeleteParam {
|
|||
|
||||
// 主键id
|
||||
private List<Long> ids;
|
||||
|
||||
private Long mainId;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package com.engine.salary.service;
|
|||
import com.engine.salary.entity.datacollection.dto.*;
|
||||
import com.engine.salary.entity.datacollection.param.*;
|
||||
import com.engine.salary.entity.datacollection.po.*;
|
||||
import com.engine.salary.enums.datacollection.TaxFreeTypeEnum;
|
||||
import com.engine.salary.util.page.PageInfo;
|
||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||
|
||||
|
|
@ -125,35 +126,75 @@ public interface OtherDeductionService {
|
|||
String extendToLastMonth(OtherDeductionExtendLastParam param);
|
||||
|
||||
PageInfo<FreeIncomeListDTO> freeIncomeList(OtherDeductionDetailQueryParam param);
|
||||
|
||||
PageInfo<DerateDeductionListDTO> derateDeductionList(OtherDeductionDetailQueryParam param);
|
||||
|
||||
PageInfo<EndowmentInsuranceListDTO> endowmentInsuranceList(OtherDeductionDetailQueryParam param);
|
||||
|
||||
PageInfo<GrantDonationListDTO> grantDonationList(OtherDeductionDetailQueryParam param);
|
||||
|
||||
PageInfo<HealthInsuranceListDTO> healthInsuranceList(OtherDeductionDetailQueryParam param);
|
||||
|
||||
PageInfo<OtherDerateDeductionListDTO> otherDerateDeductionList(OtherDeductionDetailQueryParam param);
|
||||
|
||||
PageInfo<PersonalPensionListDTO> personalPensionList(OtherDeductionDetailQueryParam param);
|
||||
|
||||
List<FreeIncomePO> queryFreeIncomes(OtherDeductionFreeListQueryParam param);
|
||||
|
||||
List<DerateDeductionPO> queryDerateDeductions(OtherDeductionFreeListQueryParam param);
|
||||
|
||||
List<EndowmentInsurancePO> queryEndowmentInsurances(OtherDeductionFreeListQueryParam param);
|
||||
|
||||
List<GrantDonationPO> queryGrantDonations(OtherDeductionFreeListQueryParam param);
|
||||
|
||||
List<HealthInsurancePO> queryHealthInsurances(OtherDeductionFreeListQueryParam param);
|
||||
|
||||
List<OtherDerateDeductionPO> queryOtherDerateDeductions(OtherDeductionFreeListQueryParam param);
|
||||
|
||||
List<PersonalPensionPO> queryPersonalPensions(OtherDeductionFreeListQueryParam param);
|
||||
|
||||
void saveFreeIncome(FreeIncomeSaveParam param);
|
||||
|
||||
void saveEndowmentInsurance(EndowmentInsuranceSaveParam param);
|
||||
|
||||
void saveGrantDonation(GrantDonationSaveParam param);
|
||||
|
||||
void saveHealthInsurance(HealthInsuranceSaveParam param);
|
||||
|
||||
void saveOtherDerateDeduction(OtherDerateDeductionSaveParam param);
|
||||
|
||||
void saveDerateDeduction(DerateDeductionSaveParam param);
|
||||
|
||||
void savePersonalPension(PersonalPensionSaveParam param);
|
||||
|
||||
void deleteFreeIncome(OtherDeductionDetailDeleteParam param);
|
||||
|
||||
void deleteEndowmentInsurance(OtherDeductionDetailDeleteParam param);
|
||||
|
||||
void deleteGrantDonation(OtherDeductionDetailDeleteParam param);
|
||||
|
||||
void deleteHealthInsurance(OtherDeductionDetailDeleteParam param);
|
||||
|
||||
void deleteOtherDerateDeduction(OtherDeductionDetailDeleteParam param);
|
||||
|
||||
void deleteDerateDeduction(OtherDeductionDetailDeleteParam param);
|
||||
|
||||
void deletePersonalPension(OtherDeductionDetailDeleteParam param);
|
||||
|
||||
void syncMain(Long mainId, List<TaxFreeTypeEnum> taxFreeTypes);
|
||||
|
||||
void syncFreeIncome(OtherDeductionPO mainPO);
|
||||
|
||||
void syncEndowmentInsurance(OtherDeductionPO mainPO);
|
||||
|
||||
void syncGrantDonation(OtherDeductionPO mainPO);
|
||||
|
||||
void syncHealthInsurance(OtherDeductionPO mainPO);
|
||||
|
||||
void syncOtherDerateDeduction(OtherDeductionPO mainPO);
|
||||
|
||||
void syncDerateDeduction(OtherDeductionPO mainPO);
|
||||
|
||||
void syncPersonalPension(OtherDeductionPO mainPO);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ import com.engine.salary.entity.taxagent.po.TaxAgentPO;
|
|||
import com.engine.salary.enums.OperateTypeEnum;
|
||||
import com.engine.salary.enums.UserStatusEnum;
|
||||
import com.engine.salary.enums.datacollection.DataCollectionEmployeeTypeEnum;
|
||||
import com.engine.salary.enums.datacollection.TaxFreeTypeEnum;
|
||||
import com.engine.salary.enums.sicategory.DeleteTypeEnum;
|
||||
import com.engine.salary.exception.SalaryRunTimeException;
|
||||
import com.engine.salary.mapper.datacollection.*;
|
||||
|
|
@ -53,6 +54,7 @@ import org.apache.commons.lang3.Validate;
|
|||
import org.apache.poi.ss.usermodel.Sheet;
|
||||
import org.apache.poi.util.IOUtils;
|
||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import weaver.file.ImageFileManager;
|
||||
import weaver.general.Util;
|
||||
|
|
@ -1559,6 +1561,14 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction
|
|||
l.setMainId(po.getId());
|
||||
getPersonalPensionMapper().insertIgnoreNull(l);
|
||||
});
|
||||
|
||||
syncMain(po.getId(), Arrays.asList(TaxFreeTypeEnum.FREE_INCOME,
|
||||
TaxFreeTypeEnum.HEALTH_INSURANCE,
|
||||
TaxFreeTypeEnum.ENDOWMENT_INSURANCE,
|
||||
TaxFreeTypeEnum.GRANT_DONATION,
|
||||
TaxFreeTypeEnum.DERATE_DEDUCTION,
|
||||
TaxFreeTypeEnum.OTHER_DERATE_DEDUCTION,
|
||||
TaxFreeTypeEnum.PERSONAL_PENSION));
|
||||
});
|
||||
|
||||
return apidatas;
|
||||
|
|
@ -2221,23 +2231,183 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction
|
|||
public XSSFWorkbook downloadDetailTemplate(OtherDeductionQueryParam param) {
|
||||
|
||||
|
||||
List<FreeIncomeListDTO> freeIncomeList = new ArrayList<>();
|
||||
List<HealthInsuranceListDTO> healthInsuranceList = new ArrayList<>();
|
||||
List<EndowmentInsuranceListDTO> endowmentInsuranceList = new ArrayList<>();
|
||||
List<GrantDonationListDTO> grantDonationList = new ArrayList<>();
|
||||
List<DerateDeductionListDTO> derateDeductionList = new ArrayList<>();
|
||||
List<OtherDerateDeductionListDTO> otherDerateDeductionList = new ArrayList<>();
|
||||
List<PersonalPensionListDTO> personalPensionList = new ArrayList<>();
|
||||
if (param.isHasData()) {
|
||||
long employeeId = user.getUID();
|
||||
//排序配置
|
||||
OrderRuleVO orderRule = getSalarySysConfService(user).orderRule();
|
||||
param.setOrderRule(orderRule);
|
||||
|
||||
List<OtherDeductionListDTO> list = getOtherDeductionMapper().list(param);
|
||||
encryptUtil.decryptList(list, OtherDeductionListDTO.class);
|
||||
SalaryI18nUtil.i18nList(list);
|
||||
// 开启分权并且不是薪酬模块总管理员
|
||||
if (getTaxAgentService(user).isOpenDevolution() && !getTaxAgentService(user).isChief(employeeId)) {
|
||||
List<Long> taxAgentIdsAsAdmin = getTaxAgentService(user).listAllTaxAgentsAsAdmin(employeeId).stream().map(TaxAgentPO::getId).collect(Collectors.toList());
|
||||
list = list.stream().filter(f ->
|
||||
// 作为管理员
|
||||
taxAgentIdsAsAdmin.contains(f.getTaxAgentId())
|
||||
).collect(Collectors.toList());
|
||||
}
|
||||
list.forEach(dto -> {
|
||||
List<FreeIncomeListDTO> freeIncomeListDTOS = freeIncomePO2DTO(getFreeIncomeMapper().listSome(FreeIncomePO.builder().mainId(dto.getId()).build()));
|
||||
freeIncomeList.addAll(freeIncomeListDTOS);
|
||||
List<EndowmentInsuranceListDTO> endowmentInsuranceListDTOS = endowmentInsurancePO2DTO(getEndowmentInsuranceMapper().listSome(EndowmentInsurancePO.builder().mainId(dto.getId()).build()));
|
||||
endowmentInsuranceList.addAll(endowmentInsuranceListDTOS);
|
||||
List<GrantDonationListDTO> grantDonationListDTOS = grantDonationPO2DTO(getGrantDonationMapper().listSome(GrantDonationPO.builder().mainId(dto.getId()).build()));
|
||||
grantDonationList.addAll(grantDonationListDTOS);
|
||||
List<HealthInsuranceListDTO> healthInsuranceListDTOS = healthInsurancePO2DTO(getHealthInsuranceMapper().listSome(HealthInsurancePO.builder().mainId(dto.getId()).build()));
|
||||
healthInsuranceList.addAll(healthInsuranceListDTOS);
|
||||
List<OtherDerateDeductionListDTO> otherDerateDeductionListDTOS = otherDerateDeductionPO2DTO(getOtherDerateDeductionMapper().listSome(OtherDerateDeductionPO.builder().mainId(dto.getId()).build()));
|
||||
otherDerateDeductionList.addAll(otherDerateDeductionListDTOS);
|
||||
List<DerateDeductionListDTO> derateDeductionListDTOS = derateDeductionPO2DTO(getDerateDeductionMapper().listSome(DerateDeductionPO.builder().mainId(dto.getId()).build()));
|
||||
derateDeductionList.addAll(derateDeductionListDTOS);
|
||||
List<PersonalPensionListDTO> personalPensionListDTOS = personalPensionPO2DTO(getPersonalPensionMapper().listSome(PersonalPensionPO.builder().mainId(dto.getId()).build()));
|
||||
personalPensionList.addAll(personalPensionListDTOS);
|
||||
});
|
||||
}
|
||||
|
||||
Map<String, List<List<Object>>> map = new LinkedHashMap<>();
|
||||
|
||||
List<List<Object>> freeIncomeRowList = new ArrayList<>();
|
||||
List<Object> freeIncomeTitle = Arrays.asList("姓名", "个税扣缴义务人", "部门", "手机号", "工号", "证件号码", "免税事项", "免税性质", "免税金额");
|
||||
map.put("免税收入", Arrays.asList(freeIncomeTitle));
|
||||
List<Object> healthInsuranceTitle = Arrays.asList("姓名", "个税扣缴义务人", "部门", "手机号", "工号", "证件号码", "税优识别码", "保单生效日期", "年度保费", "月度保费", "本期扣除金额");
|
||||
map.put("商业健康保险", Arrays.asList(healthInsuranceTitle));
|
||||
List<Object> endowmentInsuranceTitle = Arrays.asList("姓名", "个税扣缴义务人", "部门", "手机号", "工号", "证件号码", "税延养老账户编号", "报税校验码", "年度保费", "月度保费", "本期扣除金额");
|
||||
map.put("税延养老保险", Arrays.asList(endowmentInsuranceTitle));
|
||||
List<Object> grantDonationTitle = Arrays.asList("姓名", "个税扣缴义务人", "部门", "手机号", "工号", "证件号码", "受赠单位名称", "受赠单位纳税人识别号", "凭证号", "捐赠日期", "捐赠金额", "扣除比例", "实际扣除金额");
|
||||
map.put("准予扣除的捐赠额", Arrays.asList(grantDonationTitle));
|
||||
List<Object> derateDeductionTitle = Arrays.asList("姓名", "个税扣缴义务人", "部门", "手机号", "工号", "证件号码", "减免事项", "减免性质", "减免金额");
|
||||
map.put("减免税额", Arrays.asList(derateDeductionTitle));
|
||||
List<Object> otherDerateDeductionTitle = Arrays.asList("姓名", "个税扣缴义务人", "部门", "手机号", "工号", "证件号码", "其他免税扣除金额", "备注");
|
||||
map.put("其他", Arrays.asList(otherDerateDeductionTitle));
|
||||
List<Object> personalPensionTitle = Arrays.asList("姓名", "个税扣缴义务人", "部门", "手机号", "工号", "证件号码", "凭证类型", "凭证编码", "缴费金额");
|
||||
map.put("个人养老金", Arrays.asList(personalPensionTitle));
|
||||
freeIncomeRowList.add(freeIncomeTitle);
|
||||
freeIncomeList.forEach(dto -> {
|
||||
List<Object> row = new ArrayList<>();
|
||||
row.add(dto.getUsername());
|
||||
row.add(dto.getTaxAgentName());
|
||||
row.add(dto.getDepartmentName());
|
||||
row.add(dto.getMobile());
|
||||
row.add(dto.getJobNum());
|
||||
row.add(dto.getIdNo());
|
||||
row.add(dto.getFreeItem());
|
||||
row.add(dto.getFreeProperty());
|
||||
row.add(dto.getFreeAmount());
|
||||
freeIncomeRowList.add(row);
|
||||
});
|
||||
map.put("免税收入", freeIncomeRowList);
|
||||
|
||||
List<List<Object>> healthInsuranceRowList = new ArrayList<>();
|
||||
List<Object> healthInsuranceTitle = Arrays.asList("姓名", "个税扣缴义务人", "部门", "手机号", "工号", "证件号码", "税优识别码", "保单生效日期", "年度保费", "月度保费", "本期扣除金额");
|
||||
healthInsuranceRowList.add(healthInsuranceTitle);
|
||||
healthInsuranceList.forEach(dto -> {
|
||||
List<Object> row = new ArrayList<>();
|
||||
row.add(dto.getUsername());
|
||||
row.add(dto.getTaxAgentName());
|
||||
row.add(dto.getDepartmentName());
|
||||
row.add(dto.getMobile());
|
||||
row.add(dto.getJobNum());
|
||||
row.add(dto.getIdNo());
|
||||
row.add(dto.getIdentificationNumber());
|
||||
row.add(dto.getEffectiveDate());
|
||||
row.add(dto.getYearPremium());
|
||||
row.add(dto.getMonthPremium());
|
||||
row.add(dto.getCurrentDeduction());
|
||||
healthInsuranceRowList.add(row);
|
||||
});
|
||||
map.put("商业健康保险", healthInsuranceRowList);
|
||||
|
||||
|
||||
List<List<Object>> endowmentInsuranceRowList = new ArrayList<>();
|
||||
List<Object> endowmentInsuranceTitle = Arrays.asList("姓名", "个税扣缴义务人", "部门", "手机号", "工号", "证件号码", "税延养老账户编号", "报税校验码", "年度保费", "月度保费", "本期扣除金额");
|
||||
endowmentInsuranceRowList.add(endowmentInsuranceTitle);
|
||||
endowmentInsuranceList.forEach(dto -> {
|
||||
List<Object> row = new ArrayList<>();
|
||||
row.add(dto.getUsername());
|
||||
row.add(dto.getTaxAgentName());
|
||||
row.add(dto.getDepartmentName());
|
||||
row.add(dto.getMobile());
|
||||
row.add(dto.getJobNum());
|
||||
row.add(dto.getIdNo());
|
||||
row.add(dto.getAccountNumber());
|
||||
row.add(dto.getCheckCode());
|
||||
row.add(dto.getYearPremium());
|
||||
row.add(dto.getMonthPremium());
|
||||
row.add(dto.getCurrentDeduction());
|
||||
endowmentInsuranceRowList.add(row);
|
||||
});
|
||||
map.put("税延养老保险", endowmentInsuranceRowList);
|
||||
|
||||
List<List<Object>> grantDonationRowList = new ArrayList<>();
|
||||
List<Object> grantDonationTitle = Arrays.asList("姓名", "个税扣缴义务人", "部门", "手机号", "工号", "证件号码", "受赠单位名称", "受赠单位纳税人识别号", "凭证号", "捐赠日期", "捐赠金额", "扣除比例", "实际扣除金额");
|
||||
grantDonationRowList.add(grantDonationTitle);
|
||||
grantDonationList.forEach(dto -> {
|
||||
List<Object> row = new ArrayList<>();
|
||||
row.add(dto.getUsername());
|
||||
row.add(dto.getTaxAgentName());
|
||||
row.add(dto.getDepartmentName());
|
||||
row.add(dto.getMobile());
|
||||
row.add(dto.getJobNum());
|
||||
row.add(dto.getIdNo());
|
||||
row.add(dto.getRecipientName());
|
||||
row.add(dto.getTaxCode());
|
||||
row.add(dto.getDonationNumber());
|
||||
row.add(dto.getDonateDate());
|
||||
row.add(dto.getDonateAmount());
|
||||
row.add(dto.getDeductionProportion());
|
||||
row.add(dto.getActualDeduction());
|
||||
grantDonationRowList.add(row);
|
||||
});
|
||||
map.put("准予扣除的捐赠额", grantDonationRowList);
|
||||
|
||||
List<List<Object>> derateDeductionRowList = new ArrayList<>();
|
||||
List<Object> derateDeductionTitle = Arrays.asList("姓名", "个税扣缴义务人", "部门", "手机号", "工号", "证件号码", "减免事项", "减免性质", "减免金额");
|
||||
derateDeductionRowList.add(derateDeductionTitle);
|
||||
derateDeductionList.forEach(dto -> {
|
||||
List<Object> row = new ArrayList<>();
|
||||
row.add(dto.getUsername());
|
||||
row.add(dto.getTaxAgentName());
|
||||
row.add(dto.getDepartmentName());
|
||||
row.add(dto.getMobile());
|
||||
row.add(dto.getJobNum());
|
||||
row.add(dto.getIdNo());
|
||||
row.add(dto.getDerateItem());
|
||||
row.add(dto.getDerateProperty());
|
||||
row.add(dto.getDerateAmount());
|
||||
derateDeductionRowList.add(row);
|
||||
});
|
||||
map.put("减免税额", derateDeductionRowList);
|
||||
|
||||
List<List<Object>> otherDerateDeductionRowList = new ArrayList<>();
|
||||
List<Object> otherDerateDeductionTitle = Arrays.asList("姓名", "个税扣缴义务人", "部门", "手机号", "工号", "证件号码", "其他免税扣除金额", "备注");
|
||||
otherDerateDeductionRowList.add(otherDerateDeductionTitle);
|
||||
otherDerateDeductionList.forEach(dto -> {
|
||||
List<Object> row = new ArrayList<>();
|
||||
row.add(dto.getUsername());
|
||||
row.add(dto.getTaxAgentName());
|
||||
row.add(dto.getDepartmentName());
|
||||
row.add(dto.getMobile());
|
||||
row.add(dto.getJobNum());
|
||||
row.add(dto.getIdNo());
|
||||
row.add(dto.getOtherDeduction());
|
||||
row.add(dto.getRemark());
|
||||
otherDerateDeductionRowList.add(row);
|
||||
});
|
||||
map.put("其他", otherDerateDeductionRowList);
|
||||
|
||||
List<List<Object>> personalPensionRowList = new ArrayList<>();
|
||||
List<Object> personalPensionTitle = Arrays.asList("姓名", "个税扣缴义务人", "部门", "手机号", "工号", "证件号码", "凭证类型", "凭证编码", "缴费金额");
|
||||
personalPensionRowList.add(personalPensionTitle);
|
||||
personalPensionList.forEach(dto -> {
|
||||
List<Object> row = new ArrayList<>();
|
||||
row.add(dto.getUsername());
|
||||
row.add(dto.getTaxAgentName());
|
||||
row.add(dto.getDepartmentName());
|
||||
row.add(dto.getMobile());
|
||||
row.add(dto.getJobNum());
|
||||
row.add(dto.getIdNo());
|
||||
row.add(dto.getVoucherTypeName());
|
||||
row.add(dto.getVoucherNo());
|
||||
row.add(dto.getPayAmount());
|
||||
personalPensionRowList.add(row);
|
||||
});
|
||||
map.put("个人养老金", personalPensionRowList);
|
||||
|
||||
XSSFWorkbook book = ExcelUtil.genWorkbookV2(map);
|
||||
return book;
|
||||
|
|
@ -2254,6 +2424,12 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction
|
|||
}
|
||||
List<FreeIncomePO> pos = getFreeIncomeMapper().listSome(build);
|
||||
|
||||
List<FreeIncomeListDTO> listDTOS = freeIncomePO2DTO(pos);
|
||||
return SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), listDTOS, FreeIncomeListDTO.class);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private List<FreeIncomeListDTO> freeIncomePO2DTO(List<FreeIncomePO> pos) {
|
||||
List<Long> empIds = SalaryEntityUtil.properties(pos, FreeIncomePO::getEmployeeId, Collectors.toList());
|
||||
List<DataCollectionEmployee> employeeList = getSalaryEmployeeService(user).listByIds(empIds);
|
||||
Map<Long, DataCollectionEmployee> employeeMap = SalaryEntityUtil.convert2Map(employeeList, DataCollectionEmployee::getEmployeeId);
|
||||
|
|
@ -2272,7 +2448,7 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction
|
|||
dto.setIdNo(employee.getIdNo());
|
||||
return dto;
|
||||
}).collect(Collectors.toList());
|
||||
return SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), listDTOS, FreeIncomeListDTO.class);
|
||||
return listDTOS;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -2285,6 +2461,11 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction
|
|||
}
|
||||
|
||||
List<DerateDeductionPO> pos = getDerateDeductionMapper().listSome(build);
|
||||
List<DerateDeductionListDTO> listDTOS = derateDeductionPO2DTO(pos);
|
||||
return SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), listDTOS, DerateDeductionListDTO.class);
|
||||
}
|
||||
|
||||
private List<DerateDeductionListDTO> derateDeductionPO2DTO(List<DerateDeductionPO> pos) {
|
||||
List<Long> empIds = SalaryEntityUtil.properties(pos, DerateDeductionPO::getEmployeeId, Collectors.toList());
|
||||
List<DataCollectionEmployee> employeeList = getSalaryEmployeeService(user).listByIds(empIds);
|
||||
Map<Long, DataCollectionEmployee> employeeMap = SalaryEntityUtil.convert2Map(employeeList, DataCollectionEmployee::getEmployeeId);
|
||||
|
|
@ -2303,7 +2484,7 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction
|
|||
dto.setIdNo(employee.getIdNo());
|
||||
return dto;
|
||||
}).collect(Collectors.toList());
|
||||
return SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), listDTOS, DerateDeductionListDTO.class);
|
||||
return listDTOS;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -2316,6 +2497,13 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction
|
|||
}
|
||||
|
||||
List<EndowmentInsurancePO> pos = getEndowmentInsuranceMapper().listSome(build);
|
||||
|
||||
List<EndowmentInsuranceListDTO> listDTOS = endowmentInsurancePO2DTO(pos);
|
||||
return SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), listDTOS, EndowmentInsuranceListDTO.class);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private List<EndowmentInsuranceListDTO> endowmentInsurancePO2DTO(List<EndowmentInsurancePO> pos) {
|
||||
List<Long> empIds = SalaryEntityUtil.properties(pos, EndowmentInsurancePO::getEmployeeId, Collectors.toList());
|
||||
List<DataCollectionEmployee> employeeList = getSalaryEmployeeService(user).listByIds(empIds);
|
||||
Map<Long, DataCollectionEmployee> employeeMap = SalaryEntityUtil.convert2Map(employeeList, DataCollectionEmployee::getEmployeeId);
|
||||
|
|
@ -2334,7 +2522,7 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction
|
|||
dto.setIdNo(employee.getIdNo());
|
||||
return dto;
|
||||
}).collect(Collectors.toList());
|
||||
return SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), listDTOS, EndowmentInsuranceListDTO.class);
|
||||
return listDTOS;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -2347,6 +2535,12 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction
|
|||
}
|
||||
|
||||
List<GrantDonationPO> pos = getGrantDonationMapper().listSome(build);
|
||||
List<GrantDonationListDTO> listDTOS = grantDonationPO2DTO(pos);
|
||||
return SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), listDTOS, GrantDonationListDTO.class);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private List<GrantDonationListDTO> grantDonationPO2DTO(List<GrantDonationPO> pos) {
|
||||
List<Long> empIds = SalaryEntityUtil.properties(pos, GrantDonationPO::getEmployeeId, Collectors.toList());
|
||||
List<DataCollectionEmployee> employeeList = getSalaryEmployeeService(user).listByIds(empIds);
|
||||
Map<Long, DataCollectionEmployee> employeeMap = SalaryEntityUtil.convert2Map(employeeList, DataCollectionEmployee::getEmployeeId);
|
||||
|
|
@ -2365,7 +2559,7 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction
|
|||
dto.setIdNo(employee.getIdNo());
|
||||
return dto;
|
||||
}).collect(Collectors.toList());
|
||||
return SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), listDTOS, GrantDonationListDTO.class);
|
||||
return listDTOS;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -2378,6 +2572,12 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction
|
|||
}
|
||||
|
||||
List<HealthInsurancePO> pos = getHealthInsuranceMapper().listSome(build);
|
||||
List<HealthInsuranceListDTO> listDTOS = healthInsurancePO2DTO(pos);
|
||||
return SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), listDTOS, HealthInsuranceListDTO.class);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private List<HealthInsuranceListDTO> healthInsurancePO2DTO(List<HealthInsurancePO> pos) {
|
||||
List<Long> empIds = SalaryEntityUtil.properties(pos, HealthInsurancePO::getEmployeeId, Collectors.toList());
|
||||
List<DataCollectionEmployee> employeeList = getSalaryEmployeeService(user).listByIds(empIds);
|
||||
Map<Long, DataCollectionEmployee> employeeMap = SalaryEntityUtil.convert2Map(employeeList, DataCollectionEmployee::getEmployeeId);
|
||||
|
|
@ -2396,7 +2596,7 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction
|
|||
dto.setIdNo(employee.getIdNo());
|
||||
return dto;
|
||||
}).collect(Collectors.toList());
|
||||
return SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), listDTOS, HealthInsuranceListDTO.class);
|
||||
return listDTOS;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -2409,6 +2609,12 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction
|
|||
}
|
||||
|
||||
List<OtherDerateDeductionPO> pos = getOtherDerateDeductionMapper().listSome(build);
|
||||
List<OtherDerateDeductionListDTO> listDTOS = otherDerateDeductionPO2DTO(pos);
|
||||
return SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), listDTOS, OtherDerateDeductionListDTO.class);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private List<OtherDerateDeductionListDTO> otherDerateDeductionPO2DTO(List<OtherDerateDeductionPO> pos) {
|
||||
List<Long> empIds = SalaryEntityUtil.properties(pos, OtherDerateDeductionPO::getEmployeeId, Collectors.toList());
|
||||
List<DataCollectionEmployee> employeeList = getSalaryEmployeeService(user).listByIds(empIds);
|
||||
Map<Long, DataCollectionEmployee> employeeMap = SalaryEntityUtil.convert2Map(employeeList, DataCollectionEmployee::getEmployeeId);
|
||||
|
|
@ -2427,7 +2633,7 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction
|
|||
dto.setIdNo(employee.getIdNo());
|
||||
return dto;
|
||||
}).collect(Collectors.toList());
|
||||
return SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), listDTOS, OtherDerateDeductionListDTO.class);
|
||||
return listDTOS;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -2440,6 +2646,12 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction
|
|||
}
|
||||
|
||||
List<PersonalPensionPO> pos = getPersonalPensionMapper().listSome(build);
|
||||
List<PersonalPensionListDTO> listDTOS = personalPensionPO2DTO(pos);
|
||||
return SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), listDTOS, PersonalPensionListDTO.class);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private List<PersonalPensionListDTO> personalPensionPO2DTO(List<PersonalPensionPO> pos) {
|
||||
List<Long> empIds = SalaryEntityUtil.properties(pos, PersonalPensionPO::getEmployeeId, Collectors.toList());
|
||||
List<DataCollectionEmployee> employeeList = getSalaryEmployeeService(user).listByIds(empIds);
|
||||
Map<Long, DataCollectionEmployee> employeeMap = SalaryEntityUtil.convert2Map(employeeList, DataCollectionEmployee::getEmployeeId);
|
||||
|
|
@ -2458,7 +2670,7 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction
|
|||
dto.setIdNo(employee.getIdNo());
|
||||
return dto;
|
||||
}).collect(Collectors.toList());
|
||||
return SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), listDTOS, PersonalPensionListDTO.class);
|
||||
return listDTOS;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -2547,6 +2759,8 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction
|
|||
|
||||
getFreeIncomeMapper().updateIgnoreNull(po);
|
||||
}
|
||||
|
||||
syncMain(mainId, Collections.singletonList(TaxFreeTypeEnum.FREE_INCOME));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -2598,6 +2812,8 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction
|
|||
|
||||
getEndowmentInsuranceMapper().updateIgnoreNull(po);
|
||||
}
|
||||
|
||||
syncMain(mainId, Collections.singletonList(TaxFreeTypeEnum.ENDOWMENT_INSURANCE));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -2651,6 +2867,8 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction
|
|||
|
||||
getGrantDonationMapper().updateIgnoreNull(po);
|
||||
}
|
||||
|
||||
syncMain(mainId, Collections.singletonList(TaxFreeTypeEnum.GRANT_DONATION));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -2700,6 +2918,8 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction
|
|||
|
||||
getHealthInsuranceMapper().updateIgnoreNull(po);
|
||||
}
|
||||
|
||||
syncMain(mainId, Collections.singletonList(TaxFreeTypeEnum.HEALTH_INSURANCE));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -2743,6 +2963,8 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction
|
|||
|
||||
getOtherDerateDeductionMapper().updateIgnoreNull(po);
|
||||
}
|
||||
|
||||
syncMain(mainId, Collections.singletonList(TaxFreeTypeEnum.OTHER_DERATE_DEDUCTION));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -2788,6 +3010,8 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction
|
|||
|
||||
getDerateDeductionMapper().updateIgnoreNull(po);
|
||||
}
|
||||
|
||||
syncMain(mainId, Collections.singletonList(TaxFreeTypeEnum.DERATE_DEDUCTION));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -2833,41 +3057,136 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction
|
|||
|
||||
getPersonalPensionMapper().updateIgnoreNull(po);
|
||||
}
|
||||
|
||||
syncMain(mainId, Collections.singletonList(TaxFreeTypeEnum.PERSONAL_PENSION));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteFreeIncome(OtherDeductionDetailDeleteParam param) {
|
||||
getFreeIncomeMapper().deleteByIds(param.getIds());
|
||||
syncMain(param.getMainId(), Collections.singletonList(TaxFreeTypeEnum.FREE_INCOME));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteEndowmentInsurance(OtherDeductionDetailDeleteParam param) {
|
||||
getEndowmentInsuranceMapper().deleteByIds(param.getIds());
|
||||
syncMain(param.getMainId(), Collections.singletonList(TaxFreeTypeEnum.ENDOWMENT_INSURANCE));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteGrantDonation(OtherDeductionDetailDeleteParam param) {
|
||||
getGrantDonationMapper().deleteByIds(param.getIds());
|
||||
syncMain(param.getMainId(), Collections.singletonList(TaxFreeTypeEnum.GRANT_DONATION));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteHealthInsurance(OtherDeductionDetailDeleteParam param) {
|
||||
getHealthInsuranceMapper().deleteByIds(param.getIds());
|
||||
syncMain(param.getMainId(), Collections.singletonList(TaxFreeTypeEnum.HEALTH_INSURANCE));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteOtherDerateDeduction(OtherDeductionDetailDeleteParam param) {
|
||||
getOtherDerateDeductionMapper().deleteByIds(param.getIds());
|
||||
syncMain(param.getMainId(), Collections.singletonList(TaxFreeTypeEnum.OTHER_DERATE_DEDUCTION));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteDerateDeduction(OtherDeductionDetailDeleteParam param) {
|
||||
getDerateDeductionMapper().deleteByIds(param.getIds());
|
||||
syncMain(param.getMainId(), Collections.singletonList(TaxFreeTypeEnum.DERATE_DEDUCTION));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deletePersonalPension(OtherDeductionDetailDeleteParam param) {
|
||||
getPersonalPensionMapper().deleteByIds(param.getIds());
|
||||
syncMain(param.getMainId(), Collections.singletonList(TaxFreeTypeEnum.PERSONAL_PENSION));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void syncMain(Long mainId, List<TaxFreeTypeEnum> taxFreeTypes) {
|
||||
OtherDeductionPO deductionPO = getById(mainId);
|
||||
if (deductionPO == null) {
|
||||
throw new SalaryRunTimeException("主表不存在!");
|
||||
}
|
||||
|
||||
if (taxFreeTypes.contains(TaxFreeTypeEnum.FREE_INCOME)) {
|
||||
syncFreeIncome(deductionPO);
|
||||
}
|
||||
if (taxFreeTypes.contains(TaxFreeTypeEnum.HEALTH_INSURANCE)) {
|
||||
syncHealthInsurance(deductionPO);
|
||||
}
|
||||
if (taxFreeTypes.contains(TaxFreeTypeEnum.ENDOWMENT_INSURANCE)) {
|
||||
syncEndowmentInsurance(deductionPO);
|
||||
}
|
||||
if (taxFreeTypes.contains(TaxFreeTypeEnum.GRANT_DONATION)) {
|
||||
syncGrantDonation(deductionPO);
|
||||
}
|
||||
if (taxFreeTypes.contains(TaxFreeTypeEnum.DERATE_DEDUCTION)) {
|
||||
syncDerateDeduction(deductionPO);
|
||||
}
|
||||
if (taxFreeTypes.contains(TaxFreeTypeEnum.OTHER_DERATE_DEDUCTION)) {
|
||||
syncOtherDerateDeduction(deductionPO);
|
||||
}
|
||||
if (taxFreeTypes.contains(TaxFreeTypeEnum.PERSONAL_PENSION)) {
|
||||
syncPersonalPension(deductionPO);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void syncFreeIncome(OtherDeductionPO mainPO) {
|
||||
List<FreeIncomePO> freeIncomePOS = getFreeIncomeMapper().listSome(FreeIncomePO.builder().mainId(mainPO.getId()).build());
|
||||
String sum = freeIncomePOS.stream().filter(po -> NumberUtil.isNumber(po.getFreeAmount())).map(po -> new BigDecimal(po.getFreeAmount())).reduce(BigDecimal.ZERO, BigDecimal::add).toPlainString();
|
||||
mainPO.setFreeIncome(sum);
|
||||
getOtherDeductionMapper().updateData(Collections.singletonList(mainPO));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void syncEndowmentInsurance(OtherDeductionPO mainPO) {
|
||||
List<EndowmentInsurancePO> endowmentInsurancePOS = getEndowmentInsuranceMapper().listSome(EndowmentInsurancePO.builder().mainId(mainPO.getId()).build());
|
||||
String sum = endowmentInsurancePOS.stream().filter(po -> NumberUtil.isNumber(po.getCurrentDeduction())).map(po -> new BigDecimal(po.getCurrentDeduction())).reduce(BigDecimal.ZERO, BigDecimal::add).toPlainString();
|
||||
mainPO.setTaxDelayEndowmentInsurance(sum);
|
||||
getOtherDeductionMapper().updateData(Collections.singletonList(mainPO));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void syncGrantDonation(OtherDeductionPO mainPO) {
|
||||
List<GrantDonationPO> grantDonationPOS = getGrantDonationMapper().listSome(GrantDonationPO.builder().mainId(mainPO.getId()).build());
|
||||
String sum = grantDonationPOS.stream().filter(po -> NumberUtil.isNumber(po.getActualDeduction())).map(po -> new BigDecimal(po.getActualDeduction())).reduce(BigDecimal.ZERO, BigDecimal::add).toPlainString();
|
||||
mainPO.setDeductionAllowedDonation(sum);
|
||||
getOtherDeductionMapper().updateData(Collections.singletonList(mainPO));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void syncHealthInsurance(OtherDeductionPO mainPO) {
|
||||
List<HealthInsurancePO> healthInsurancePOS = getHealthInsuranceMapper().listSome(HealthInsurancePO.builder().mainId(mainPO.getId()).build());
|
||||
String sum = healthInsurancePOS.stream().filter(po -> NumberUtil.isNumber(po.getCurrentDeduction())).map(po -> new BigDecimal(po.getCurrentDeduction())).reduce(BigDecimal.ZERO, BigDecimal::add).toPlainString();
|
||||
mainPO.setBusinessHealthyInsurance(sum);
|
||||
getOtherDeductionMapper().updateData(Collections.singletonList(mainPO));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void syncOtherDerateDeduction(OtherDeductionPO mainPO) {
|
||||
List<OtherDerateDeductionPO> otherDerateDeductionPOS = getOtherDerateDeductionMapper().listSome(OtherDerateDeductionPO.builder().mainId(mainPO.getId()).build());
|
||||
String sum = otherDerateDeductionPOS.stream().filter(po -> NumberUtil.isNumber(po.getOtherDeduction())).map(po -> new BigDecimal(po.getOtherDeduction())).reduce(BigDecimal.ZERO, BigDecimal::add).toPlainString();
|
||||
mainPO.setOtherDeduction(sum);
|
||||
getOtherDeductionMapper().updateData(Collections.singletonList(mainPO));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void syncDerateDeduction(OtherDeductionPO mainPO) {
|
||||
List<DerateDeductionPO> derateDeductionPOS = getDerateDeductionMapper().listSome(DerateDeductionPO.builder().mainId(mainPO.getId()).build());
|
||||
String sum = derateDeductionPOS.stream().filter(po -> NumberUtil.isNumber(po.getDerateAmount())).map(po -> new BigDecimal(po.getDerateAmount())).reduce(BigDecimal.ZERO, BigDecimal::add).toPlainString();
|
||||
mainPO.setDerateDeduction(sum);
|
||||
getOtherDeductionMapper().updateData(Collections.singletonList(mainPO));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void syncPersonalPension(OtherDeductionPO mainPO) {
|
||||
List<PersonalPensionPO> personalPensionPOS = getPersonalPensionMapper().listSome(PersonalPensionPO.builder().mainId(mainPO.getId()).build());
|
||||
String sum = personalPensionPOS.stream().filter(po -> NumberUtil.isNumber(po.getPayAmount())).map(po -> new BigDecimal(po.getPayAmount())).reduce(BigDecimal.ZERO, BigDecimal::add).toPlainString();
|
||||
mainPO.setPrivatePension(sum);
|
||||
getOtherDeductionMapper().updateData(Collections.singletonList(mainPO));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue