This commit is contained in:
钱涛 2025-01-14 14:56:36 +08:00
parent d48f6131e0
commit 0bb2abc281
3 changed files with 150 additions and 5 deletions

View File

@ -23,4 +23,6 @@ public class OtherDeductionDetailDeleteParam {
// 主键id // 主键id
private List<Long> ids; private List<Long> ids;
private Long mainId;
} }

View File

@ -3,6 +3,7 @@ package com.engine.salary.service;
import com.engine.salary.entity.datacollection.dto.*; import com.engine.salary.entity.datacollection.dto.*;
import com.engine.salary.entity.datacollection.param.*; import com.engine.salary.entity.datacollection.param.*;
import com.engine.salary.entity.datacollection.po.*; import com.engine.salary.entity.datacollection.po.*;
import com.engine.salary.enums.datacollection.TaxFreeTypeEnum;
import com.engine.salary.util.page.PageInfo; import com.engine.salary.util.page.PageInfo;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook;
@ -125,35 +126,75 @@ public interface OtherDeductionService {
String extendToLastMonth(OtherDeductionExtendLastParam param); String extendToLastMonth(OtherDeductionExtendLastParam param);
PageInfo<FreeIncomeListDTO> freeIncomeList(OtherDeductionDetailQueryParam param); PageInfo<FreeIncomeListDTO> freeIncomeList(OtherDeductionDetailQueryParam param);
PageInfo<DerateDeductionListDTO> derateDeductionList(OtherDeductionDetailQueryParam param); PageInfo<DerateDeductionListDTO> derateDeductionList(OtherDeductionDetailQueryParam param);
PageInfo<EndowmentInsuranceListDTO> endowmentInsuranceList(OtherDeductionDetailQueryParam param); PageInfo<EndowmentInsuranceListDTO> endowmentInsuranceList(OtherDeductionDetailQueryParam param);
PageInfo<GrantDonationListDTO> grantDonationList(OtherDeductionDetailQueryParam param); PageInfo<GrantDonationListDTO> grantDonationList(OtherDeductionDetailQueryParam param);
PageInfo<HealthInsuranceListDTO> healthInsuranceList(OtherDeductionDetailQueryParam param); PageInfo<HealthInsuranceListDTO> healthInsuranceList(OtherDeductionDetailQueryParam param);
PageInfo<OtherDerateDeductionListDTO> otherDerateDeductionList(OtherDeductionDetailQueryParam param); PageInfo<OtherDerateDeductionListDTO> otherDerateDeductionList(OtherDeductionDetailQueryParam param);
PageInfo<PersonalPensionListDTO> personalPensionList(OtherDeductionDetailQueryParam param); PageInfo<PersonalPensionListDTO> personalPensionList(OtherDeductionDetailQueryParam param);
List<FreeIncomePO> queryFreeIncomes(OtherDeductionFreeListQueryParam param); List<FreeIncomePO> queryFreeIncomes(OtherDeductionFreeListQueryParam param);
List<DerateDeductionPO> queryDerateDeductions(OtherDeductionFreeListQueryParam param); List<DerateDeductionPO> queryDerateDeductions(OtherDeductionFreeListQueryParam param);
List<EndowmentInsurancePO> queryEndowmentInsurances(OtherDeductionFreeListQueryParam param); List<EndowmentInsurancePO> queryEndowmentInsurances(OtherDeductionFreeListQueryParam param);
List<GrantDonationPO> queryGrantDonations(OtherDeductionFreeListQueryParam param); List<GrantDonationPO> queryGrantDonations(OtherDeductionFreeListQueryParam param);
List<HealthInsurancePO> queryHealthInsurances(OtherDeductionFreeListQueryParam param); List<HealthInsurancePO> queryHealthInsurances(OtherDeductionFreeListQueryParam param);
List<OtherDerateDeductionPO> queryOtherDerateDeductions(OtherDeductionFreeListQueryParam param); List<OtherDerateDeductionPO> queryOtherDerateDeductions(OtherDeductionFreeListQueryParam param);
List<PersonalPensionPO> queryPersonalPensions(OtherDeductionFreeListQueryParam param); List<PersonalPensionPO> queryPersonalPensions(OtherDeductionFreeListQueryParam param);
void saveFreeIncome(FreeIncomeSaveParam param); void saveFreeIncome(FreeIncomeSaveParam param);
void saveEndowmentInsurance(EndowmentInsuranceSaveParam param); void saveEndowmentInsurance(EndowmentInsuranceSaveParam param);
void saveGrantDonation(GrantDonationSaveParam param); void saveGrantDonation(GrantDonationSaveParam param);
void saveHealthInsurance(HealthInsuranceSaveParam param); void saveHealthInsurance(HealthInsuranceSaveParam param);
void saveOtherDerateDeduction(OtherDerateDeductionSaveParam param); void saveOtherDerateDeduction(OtherDerateDeductionSaveParam param);
void saveDerateDeduction(DerateDeductionSaveParam param); void saveDerateDeduction(DerateDeductionSaveParam param);
void savePersonalPension(PersonalPensionSaveParam param); void savePersonalPension(PersonalPensionSaveParam param);
void deleteFreeIncome(OtherDeductionDetailDeleteParam param); void deleteFreeIncome(OtherDeductionDetailDeleteParam param);
void deleteEndowmentInsurance(OtherDeductionDetailDeleteParam param); void deleteEndowmentInsurance(OtherDeductionDetailDeleteParam param);
void deleteGrantDonation(OtherDeductionDetailDeleteParam param); void deleteGrantDonation(OtherDeductionDetailDeleteParam param);
void deleteHealthInsurance(OtherDeductionDetailDeleteParam param); void deleteHealthInsurance(OtherDeductionDetailDeleteParam param);
void deleteOtherDerateDeduction(OtherDeductionDetailDeleteParam param); void deleteOtherDerateDeduction(OtherDeductionDetailDeleteParam param);
void deleteDerateDeduction(OtherDeductionDetailDeleteParam param); void deleteDerateDeduction(OtherDeductionDetailDeleteParam param);
void deletePersonalPension(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);
} }

View File

@ -21,6 +21,7 @@ import com.engine.salary.entity.taxagent.po.TaxAgentPO;
import com.engine.salary.enums.OperateTypeEnum; import com.engine.salary.enums.OperateTypeEnum;
import com.engine.salary.enums.UserStatusEnum; import com.engine.salary.enums.UserStatusEnum;
import com.engine.salary.enums.datacollection.DataCollectionEmployeeTypeEnum; 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.enums.sicategory.DeleteTypeEnum;
import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.exception.SalaryRunTimeException;
import com.engine.salary.mapper.datacollection.*; import com.engine.salary.mapper.datacollection.*;
@ -2550,11 +2551,7 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction
getFreeIncomeMapper().updateIgnoreNull(po); getFreeIncomeMapper().updateIgnoreNull(po);
} }
List<FreeIncomePO> freeIncomePOS = getFreeIncomeMapper().listSome(FreeIncomePO.builder().mainId(mainId).build()); syncMain(mainId, Collections.singletonList(TaxFreeTypeEnum.FREE_INCOME));
String sum = freeIncomePOS.stream().filter(po -> NumberUtil.isNumber(po.getFreeAmount())).map(po -> new BigDecimal(po.getFreeAmount())).reduce(BigDecimal.ZERO, BigDecimal::add).toPlainString();
deductionPO.setFreeIncome(sum);
// getOtherDeductionMapper().updateData();
} }
@Override @Override
@ -2606,6 +2603,8 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction
getEndowmentInsuranceMapper().updateIgnoreNull(po); getEndowmentInsuranceMapper().updateIgnoreNull(po);
} }
syncMain(mainId, Collections.singletonList(TaxFreeTypeEnum.ENDOWMENT_INSURANCE));
} }
@Override @Override
@ -2659,6 +2658,8 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction
getGrantDonationMapper().updateIgnoreNull(po); getGrantDonationMapper().updateIgnoreNull(po);
} }
syncMain(mainId, Collections.singletonList(TaxFreeTypeEnum.GRANT_DONATION));
} }
@Override @Override
@ -2708,6 +2709,8 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction
getHealthInsuranceMapper().updateIgnoreNull(po); getHealthInsuranceMapper().updateIgnoreNull(po);
} }
syncMain(mainId, Collections.singletonList(TaxFreeTypeEnum.HEALTH_INSURANCE));
} }
@Override @Override
@ -2751,6 +2754,8 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction
getOtherDerateDeductionMapper().updateIgnoreNull(po); getOtherDerateDeductionMapper().updateIgnoreNull(po);
} }
syncMain(mainId, Collections.singletonList(TaxFreeTypeEnum.OTHER_DERATE_DEDUCTION));
} }
@Override @Override
@ -2796,6 +2801,8 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction
getDerateDeductionMapper().updateIgnoreNull(po); getDerateDeductionMapper().updateIgnoreNull(po);
} }
syncMain(mainId, Collections.singletonList(TaxFreeTypeEnum.DERATE_DEDUCTION));
} }
@Override @Override
@ -2841,41 +2848,136 @@ public class OtherDeductionServiceImpl extends Service implements OtherDeduction
getPersonalPensionMapper().updateIgnoreNull(po); getPersonalPensionMapper().updateIgnoreNull(po);
} }
syncMain(mainId, Collections.singletonList(TaxFreeTypeEnum.PERSONAL_PENSION));
} }
@Override @Override
public void deleteFreeIncome(OtherDeductionDetailDeleteParam param) { public void deleteFreeIncome(OtherDeductionDetailDeleteParam param) {
getFreeIncomeMapper().deleteByIds(param.getIds()); getFreeIncomeMapper().deleteByIds(param.getIds());
syncMain(param.getMainId(), Collections.singletonList(TaxFreeTypeEnum.FREE_INCOME));
} }
@Override @Override
public void deleteEndowmentInsurance(OtherDeductionDetailDeleteParam param) { public void deleteEndowmentInsurance(OtherDeductionDetailDeleteParam param) {
getEndowmentInsuranceMapper().deleteByIds(param.getIds()); getEndowmentInsuranceMapper().deleteByIds(param.getIds());
syncMain(param.getMainId(), Collections.singletonList(TaxFreeTypeEnum.ENDOWMENT_INSURANCE));
} }
@Override @Override
public void deleteGrantDonation(OtherDeductionDetailDeleteParam param) { public void deleteGrantDonation(OtherDeductionDetailDeleteParam param) {
getGrantDonationMapper().deleteByIds(param.getIds()); getGrantDonationMapper().deleteByIds(param.getIds());
syncMain(param.getMainId(), Collections.singletonList(TaxFreeTypeEnum.GRANT_DONATION));
} }
@Override @Override
public void deleteHealthInsurance(OtherDeductionDetailDeleteParam param) { public void deleteHealthInsurance(OtherDeductionDetailDeleteParam param) {
getHealthInsuranceMapper().deleteByIds(param.getIds()); getHealthInsuranceMapper().deleteByIds(param.getIds());
syncMain(param.getMainId(), Collections.singletonList(TaxFreeTypeEnum.HEALTH_INSURANCE));
} }
@Override @Override
public void deleteOtherDerateDeduction(OtherDeductionDetailDeleteParam param) { public void deleteOtherDerateDeduction(OtherDeductionDetailDeleteParam param) {
getOtherDerateDeductionMapper().deleteByIds(param.getIds()); getOtherDerateDeductionMapper().deleteByIds(param.getIds());
syncMain(param.getMainId(), Collections.singletonList(TaxFreeTypeEnum.OTHER_DERATE_DEDUCTION));
} }
@Override @Override
public void deleteDerateDeduction(OtherDeductionDetailDeleteParam param) { public void deleteDerateDeduction(OtherDeductionDetailDeleteParam param) {
getDerateDeductionMapper().deleteByIds(param.getIds()); getDerateDeductionMapper().deleteByIds(param.getIds());
syncMain(param.getMainId(), Collections.singletonList(TaxFreeTypeEnum.DERATE_DEDUCTION));
} }
@Override @Override
public void deletePersonalPension(OtherDeductionDetailDeleteParam param) { public void deletePersonalPension(OtherDeductionDetailDeleteParam param) {
getPersonalPensionMapper().deleteByIds(param.getIds()); 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)){
syncEndowmentInsurance(deductionPO);
}
if(taxFreeTypes.contains(TaxFreeTypeEnum.ENDOWMENT_INSURANCE)){
syncGrantDonation(deductionPO);
}
if(taxFreeTypes.contains(TaxFreeTypeEnum.GRANT_DONATION)){
syncHealthInsurance(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));
} }
} }