weaver-hrm-salary/src/com/engine/salary/service/impl/TaxDeclarationServiceImpl.java

153 lines
6.4 KiB
Java
Raw Normal View History

2022-03-01 18:49:22 +08:00
package com.engine.salary.service.impl;
2022-05-09 11:46:49 +08:00
import com.engine.common.util.ServiceUtil;
2022-03-01 18:49:22 +08:00
import com.engine.core.impl.Service;
2022-06-02 18:02:27 +08:00
import com.engine.salary.cmd.taxDeclaration.TaxDeclarationDeleteCmd;
import com.engine.salary.cmd.taxDeclaration.TaxDeclarationGetFormCmd;
import com.engine.salary.cmd.taxDeclaration.TaxDeclarationGetTaxDeclarationInfoCmd;
import com.engine.salary.cmd.taxDeclaration.TaxDeclarationUpdateCmd;
2022-04-16 15:33:51 +08:00
import com.engine.salary.common.LocalDateRange;
2022-06-08 16:36:50 +08:00
import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO;
2022-06-02 18:02:27 +08:00
import com.engine.salary.entity.taxagent.po.TaxAgentPO;
2022-04-16 15:33:51 +08:00
import com.engine.salary.entity.taxdeclaration.TaxDeclaration;
import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationListQueryParam;
import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationSaveParam;
import com.engine.salary.entity.taxdeclaration.po.TaxDeclarationPO;
2022-05-09 11:46:49 +08:00
import com.engine.salary.exception.SalaryRunTimeException;
2022-04-16 15:33:51 +08:00
import com.engine.salary.mapper.taxdeclaration.TaxDeclarationMapper;
2022-05-09 11:46:49 +08:00
import com.engine.salary.service.AddUpSituationService;
2022-06-02 18:02:27 +08:00
import com.engine.salary.service.TaxAgentService;
2022-05-09 11:46:49 +08:00
import com.engine.salary.service.TaxDeclarationDetailService;
2022-03-01 18:49:22 +08:00
import com.engine.salary.service.TaxDeclarationService;
2022-04-16 15:33:51 +08:00
import com.engine.salary.util.SalaryDateUtil;
2022-05-09 11:46:49 +08:00
import com.engine.salary.util.SalaryEntityUtil;
import com.engine.salary.util.SalaryI18nUtil;
2022-04-16 15:33:51 +08:00
import com.engine.salary.util.db.MapperProxyFactory;
import com.engine.salary.util.page.PageInfo;
2022-05-25 13:10:03 +08:00
import com.engine.salary.util.page.SalaryPageUtil;
2022-04-16 15:33:51 +08:00
import org.apache.commons.collections4.CollectionUtils;
2022-05-09 11:46:49 +08:00
import weaver.hrm.User;
2022-03-01 18:49:22 +08:00
2022-04-16 15:33:51 +08:00
import java.util.*;
2022-03-01 18:49:22 +08:00
public class TaxDeclarationServiceImpl extends Service implements TaxDeclarationService {
2022-04-16 15:33:51 +08:00
private TaxDeclarationMapper getTaxDeclarationMapper() {
return MapperProxyFactory.getProxy(TaxDeclarationMapper.class);
}
2022-05-09 11:46:49 +08:00
private TaxDeclarationDetailService getTaxDeclarationDetailService(User user) {
2022-06-02 18:02:27 +08:00
return ServiceUtil.getService(TaxDeclarationDetailServiceImpl.class, user);
2022-05-09 11:46:49 +08:00
}
private AddUpSituationService getAddUpSituationService(User user) {
2022-06-02 18:02:27 +08:00
return ServiceUtil.getService(AddUpSituationServiceImpl.class, user);
2022-05-09 11:46:49 +08:00
}
2022-06-02 18:02:27 +08:00
private TaxAgentService getTaxAgentService(User user) {
return ServiceUtil.getService(TaxAgentServiceImpl.class, user);
2022-03-01 18:49:22 +08:00
}
2022-06-02 18:02:27 +08:00
2022-03-01 18:49:22 +08:00
@Override
2022-04-16 15:33:51 +08:00
public PageInfo<TaxDeclarationPO> listPageByParam(TaxDeclarationListQueryParam queryParam) {
2022-06-02 18:02:27 +08:00
long currentEmployeeId = user.getUID();
2022-04-16 15:33:51 +08:00
// 分页参数
TaxDeclarationPO po = TaxDeclarationPO.builder().build();
LocalDateRange localDateRange = new LocalDateRange();
if (Objects.nonNull(queryParam.getFromSalaryMonth())) {
localDateRange.setFromDate(SalaryDateUtil.localDateToDate(queryParam.getFromSalaryMonth().atDay(1)));
}
if (Objects.nonNull(queryParam.getEndSalaryMonth())) {
localDateRange.setEndDate(SalaryDateUtil.localDateToDate(queryParam.getEndSalaryMonth().atEndOfMonth()));
}
po.setSalaryMonths(localDateRange);
2022-06-02 18:02:27 +08:00
// 分权
Boolean openDevolution = getTaxAgentService(user).isNeedAuth(currentEmployeeId);
if (openDevolution) {
// 查询负责管理的个税扣缴义务人
Collection<TaxAgentPO> taxAgentPOS = getTaxAgentService(user).listAllTaxAgents(currentEmployeeId);
if (CollectionUtils.isEmpty(taxAgentPOS)) {
return new PageInfo<>(new ArrayList<>());
}
Set<Long> taxAgentIds = SalaryEntityUtil.properties(taxAgentPOS, TaxAgentPO::getId);
po.setTaxAgentIds(taxAgentIds);
}
2022-04-16 15:33:51 +08:00
// 查询个税申报表
2022-05-25 13:10:03 +08:00
SalaryPageUtil.start(queryParam.getCurrent(), queryParam.getPageSize());
2022-04-16 15:33:51 +08:00
List<TaxDeclarationPO> taxDeclarationPOS = getTaxDeclarationMapper().listSome(po);
2022-06-02 18:02:27 +08:00
return new PageInfo<>(taxDeclarationPOS,TaxDeclarationPO.class);
2022-04-16 15:33:51 +08:00
}
2022-05-09 11:46:49 +08:00
2022-04-16 15:33:51 +08:00
//根据id查询taxAgents
@Override
2022-06-09 19:02:18 +08:00
public List<TaxAgentPO> countByTaxDeclarationId(Collection<Long> taxAgentIds) {
2022-04-16 15:33:51 +08:00
if (CollectionUtils.isEmpty(taxAgentIds)) {
return Collections.emptyList();
}
2022-06-09 19:02:18 +08:00
return getTaxAgentService(user).listByIds(taxAgentIds);
2022-04-16 15:33:51 +08:00
}
2022-05-09 11:46:49 +08:00
2022-04-16 15:33:51 +08:00
//根据id获取TaxDeclaration
@Override
public TaxDeclaration getById(Long id) {
return getTaxDeclarationMapper().getById(id);
}
@Override
public Map<String, Object> getForm(Map<String, Object> params) {
return commandExecutor.execute(new TaxDeclarationGetFormCmd(params, user));
}
@Override
public Map<String, Object> getTaxDeclarationInfo(Map<String, Object> params) {
return commandExecutor.execute(new TaxDeclarationGetTaxDeclarationInfoCmd(params, user));
}
@Override
public void save(TaxDeclarationSaveParam saveParam) {
//return commandExecutor.execute(new TaxDeclarationSaveCmd(saveParam));
return;
2022-03-01 18:49:22 +08:00
}
@Override
public Map<String, Object> update(Map<String, Object> params) {
2022-03-02 09:54:55 +08:00
return commandExecutor.execute(new TaxDeclarationUpdateCmd(params, user));
}
2022-05-09 11:46:49 +08:00
2022-03-02 09:54:55 +08:00
@Override
public Map<String, Object> delete(Map<String, Object> params) {
return commandExecutor.execute(new TaxDeclarationDeleteCmd(params, user));
2022-03-01 18:49:22 +08:00
}
2022-05-09 11:46:49 +08:00
@Override
2022-06-08 16:36:50 +08:00
public void deleteBySalaryMonth(SalaryAcctRecordPO salaryAcctRecordPO) {
2022-05-09 11:46:49 +08:00
// 薪资所属月的日期范围
2022-06-08 16:36:50 +08:00
LocalDateRange salaryMonthDateRange = SalaryDateUtil.localDate2Range(salaryAcctRecordPO.getSalaryMonth());
2022-05-09 11:46:49 +08:00
if (Objects.isNull(salaryMonthDateRange)) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(84026, "参数错误"));
}
List<TaxDeclarationPO> taxDeclarationPOS = listBySalaryMonth(salaryMonthDateRange);
if (CollectionUtils.isEmpty(taxDeclarationPOS)) {
return;
}
// 删除个税申报表
Set<Long> taxDeclarationIds = SalaryEntityUtil.properties(taxDeclarationPOS, TaxDeclarationPO::getId);
getTaxDeclarationMapper().deleteByIds(taxDeclarationIds);
// 删除个税申报表详情
getTaxDeclarationDetailService(user).deleteByTaxDeclarationIds(taxDeclarationIds);
// 删除往期累计情况
2022-06-08 16:36:50 +08:00
getAddUpSituationService(user).deleteAddUpSituationList(salaryAcctRecordPO.getTaxCycle(), Collections.emptyList());
2022-05-09 11:46:49 +08:00
}
public List<TaxDeclarationPO> listBySalaryMonth(LocalDateRange salaryMonthDateRange) {
return getTaxDeclarationMapper().listSome(TaxDeclarationPO.builder().salaryMonths(salaryMonthDateRange).build());
}
2022-03-01 18:49:22 +08:00
}