package com.engine.salary.service.impl; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.entity.deductionamount.param.DeductionAmountAddParam; import com.engine.salary.entity.deductionamount.param.DeductionAmountOnlineQueryParam; import com.engine.salary.entity.deductionamount.po.DeductionAmountPO; import com.engine.salary.entity.employeedeclare.po.EmployeeDeclarePO; import com.engine.salary.mapper.deductionamount.DeductionAmountMapper; import com.engine.salary.mapper.employeedeclare.EmployeeDeclareMapper; import com.engine.salary.remote.tax.client.DeductionAmountClient; import com.engine.salary.service.*; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.valid.ValidUtil; import lombok.extern.slf4j.Slf4j; import weaver.hrm.User; import java.util.List; import java.util.stream.Collectors; /** * 年收入不足6万元的纳税人暂不预扣预缴税款扣除名单 *

Copyright: Copyright (c) 2023

*

Company: 泛微软件

* * @author qiantao * @version 1.0 **/ @Slf4j public class DeductionAmountServiceImpl extends Service implements DeductionAmountService { private DeductionAmountMapper getDeductionAmountMapper() { return MapperProxyFactory.getProxy(DeductionAmountMapper.class); } private EmployeeDeclareMapper getEmployeeDeclareMapper() { return MapperProxyFactory.getProxy(EmployeeDeclareMapper.class); } private TaxAgentService getTaxAgentService(User user) { return ServiceUtil.getService(TaxAgentServiceImpl.class, user); } private SalaryEmployeeService getSalaryEmployeeService(User user) { return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user); } private SalaryArchiveService getSalaryArchiveService(User user) { return ServiceUtil.getService(SalaryArchiveServiceImpl.class, user); } private TaxDeclarationApiConfigService getTaxDeclarationApiConfigService(User user) { return ServiceUtil.getService(TaxDeclarationApiConfigServiceImpl.class, user); } private TaxAgentTaxReturnService getTaxAgentTaxReturnService(User user) { return ServiceUtil.getService(TaxAgentTaxReturnServiceImpl.class, user); } private EmployeeDeclareRecordService getEmployeeDeclareRecordService(User user) { return ServiceUtil.getService(EmployeeDeclareRecordServiceImpl.class, user); } private TaxDeclarationApiBillingService getTaxDeclarationApiBillingService(User user) { return ServiceUtil.getService(TaxDeclarationApiBillingServiceImpl.class, user); } @Override public Object query(DeductionAmountOnlineQueryParam queryParam) { Long taxAgentId = queryParam.getTaxAgentId(); DeductionAmountClient deductionAmountClient = new DeductionAmountClient(taxAgentId); return deductionAmountClient.query(queryParam.getYear()); } @Override public void add(DeductionAmountAddParam param) { ValidUtil.doValidator(param); //已存在 List deductionAmountPOS = getDeductionAmountMapper().listSome(DeductionAmountPO.builder().taxAgentId(param.getTaxAgentId()).year(param.getYear()).build()); List oldIds = SalaryEntityUtil.properties(deductionAmountPOS, DeductionAmountPO::getEmployeeId, Collectors.toList()); //本次新增 List employeeDeclareIds = param.getEmployeeDeclareIds(); List employeeDeclarePOS = getEmployeeDeclareMapper().listSome(EmployeeDeclarePO.builder().ids(employeeDeclareIds).build()); // employeeDeclarePOS.stream() // .filter(employeeDeclarePO -> !oldIds.contains(employeeDeclarePO.getEmployeeId())) // .map(employeeDeclarePO -> { // DeductionAmountPO.builder() // .id(employeeDeclarePO.getEmployeeId()) // .taxAgentId(employeeDeclarePO.getEmployeeId()) // .year(param.getYear()) // .employeeId(employeeDeclarePO.getEmployeeId()) // .employeeName(employeeDeclarePO.getEmployeeName()) // .employeeType(employeeDeclarePO.getEmployeeId()) // .jobNum(employeeDeclarePO.getEmployeeId()) // .cardNum(employeeDeclarePO.getEmployeeId()) // .cardType(employeeDeclarePO.getEmployeeId()) // .declareStatus(employeeDeclarePO.getEmployeeId()) // .deductFlag(employeeDeclarePO.getEmployeeId()) // .successfullyDeclared(employeeDeclarePO.getEmployeeId()) // .creator(employeeId) // .createTime(now) // .updateTime(now) // .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) // .deleteType(NumberUtils.INTEGER_ZERO) // }); } }