个税对接,个税申报接口

This commit is contained in:
钱涛 2023-08-14 21:03:40 +08:00
parent 090b100784
commit 81dae66ea2
3 changed files with 334 additions and 408 deletions

View File

@ -1,11 +1,13 @@
package com.engine.salary.entity.taxdeclaration.param;
import com.engine.salary.enums.taxdeclaration.TaxAgentRangeEnum;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.YearMonth;
import java.util.List;
/**
* 生成个税申报表参数
@ -36,6 +38,16 @@ public class TaxDeclarationSaveParam {
*/
private Long taxAgentId;
/**
* 个税扣缴义务人范围
*/
private TaxAgentRangeEnum taxAgentRange;
/**
* 个税扣缴义务人id
*/
private List<Long> taxAgentIds;
/**
* 备注
*/

View File

@ -1,6 +1,8 @@
package com.engine.salary.service.impl;
import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
import com.engine.salary.common.LocalDateRange;
import com.engine.salary.common.YearMonthRange;
import com.engine.salary.constant.SalaryDefaultTenantConstant;
import com.engine.salary.constant.SzyhApiConstant;
@ -41,16 +43,19 @@ import com.engine.salary.mapper.taxdeclaration.TaxDeclareRecordMapper;
import com.engine.salary.service.*;
import com.engine.salary.service.factory.TaxPaymentServiceFactory;
import com.engine.salary.util.*;
import com.engine.salary.util.db.MapperProxyFactory;
import com.engine.salary.util.page.PageInfo;
import com.engine.salary.util.page.SalaryPageUtil;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import dm.jdbc.util.IdGenerator;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.transaction.annotation.Transactional;
import weaver.general.Util;
import weaver.hrm.User;
import java.math.BigDecimal;
import java.time.YearMonth;
@ -68,42 +73,59 @@ import java.util.stream.Collectors;
public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRecordService {
private TaxDeclareRecordMapper taxDeclareRecordMapper;
private TaxDeclarationService taxDeclarationService;
private TaxDeclarationValueService taxDeclarationValueService;
private EmployeeDeclareService employeeDeclareService;
private TaxAgentTaxReturnService taxAgentTaxReturnService;
private TaxAgentService taxAgentService;
private TaxDeclarationApiConfigService taxDeclarationApiConfigService;
private AddUpSituationService addUpSituationService;
private TaxDeclarationApiBillingService taxDeclarationApiBillingService;
private TaxDeclareEmployeeService taxDeclareEmployeeService;
private TaxDeclareFailService taxDeclareFailService;
private SalaryAcctRecordService salaryAcctRecordService;
private TaxDeclareRecordMapper getTaxDeclareRecordMapper() {
return MapperProxyFactory.getProxy(TaxDeclareRecordMapper.class);
}
private TaxDeclarationService getTaxDeclarationService(User user) {
return ServiceUtil.getService(TaxDeclarationServiceImpl.class, user);
}
private TaxDeclarationValueService getTaxDeclarationValueService(User user) {
return ServiceUtil.getService(TaxDeclarationValueServiceImpl.class, user);
}
private EmployeeDeclareService getEmployeeDeclareService(User user) {
return ServiceUtil.getService(EmployeeDeclareServiceImpl.class, user);
}
private TaxAgentTaxReturnService getTaxAgentTaxReturnService(User user) {
return ServiceUtil.getService(TaxAgentTaxReturnServiceImpl.class, user);
}
private TaxAgentService getTaxAgentService(User user) {
return ServiceUtil.getService(TaxAgentServiceImpl.class, user);
}
private TaxDeclarationApiConfigService getTaxDeclarationApiConfigService(User user) {
return ServiceUtil.getService(TaxDeclarationApiConfigServiceImpl.class, user);
}
private AddUpSituationService getAddUpSituationService(User user) {
return ServiceUtil.getService(AddUpSituationServiceImpl.class, user);
}
private TaxDeclarationApiBillingService getTaxDeclarationApiBillingService(User user) {
return ServiceUtil.getService(TaxDeclarationApiBillingServiceImpl.class, user);
}
private TaxDeclareEmployeeService getTaxDeclareEmployeeService(User user) {
return ServiceUtil.getService(TaxDeclareEmployeeServiceImpl.class, user);
}
private TaxDeclareFailService getTaxDeclareFailService(User user) {
return ServiceUtil.getService(TaxDeclareFailServiceImpl.class, user);
}
private SalaryAcctRecordService getSalaryAcctRecordService(User user) {
return ServiceUtil.getService(SalaryAcctRecordServiceImpl.class, user);
}
private SalaryAcctTaxAgentService salaryAcctTaxAgentService;
private SalaryAcctEmployeeService salaryAcctEmployeeService;
private SalaryAcctResultService salaryAcctResultValueService;
private SalaryItemService salaryItemService;
private SalaryAcctEmployeeService getSalaryAcctEmployeeService(User user) {
return ServiceUtil.getService(SalaryAcctEmployeeServiceImpl.class, user);
}
private SalaryAcctResultService getSalaryAcctResultService(User user) {
return ServiceUtil.getService(SalaryAcctResultServiceImpl.class, user);
}
private SalaryItemService getSalaryItemService(User user) {
return ServiceUtil.getService(SalaryItemServiceImpl.class, user);
}
private SalarySobTaxReportRuleService salarySobTaxReportRuleService;
private TaxReportColumnService taxReportColumnService;
private TaxReportColumnService getTaxReportColumnService(User user) {
return ServiceUtil.getService(TaxReportColumnServiceImpl.class, user);
}
private SalarySobAddUpRuleService salarySobAddUpRuleService;
private TaxPaymentServiceFactory taxPaymentServiceFactory;
@ -112,12 +134,12 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe
@Override
public TaxDeclareRecordPO getById(Long id) {
return taxDeclareRecordMapper.getById(id);
return getTaxDeclareRecordMapper().getById(id);
}
@Override
public List<TaxDeclareRecordPO> listByIds(Collection<Long> ids) {
return taxDeclareRecordMapper.listSome(TaxDeclareRecordPO.builder().ids(ids).build());
return getTaxDeclareRecordMapper().listSome(TaxDeclareRecordPO.builder().ids(ids).build());
}
@Override
@ -129,7 +151,7 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe
if (Objects.nonNull(taxCycleRange.getEndMonth())) {
build.setEndDate(taxCycleRange.getEndMonth());
}
return taxDeclareRecordMapper.listSome(build);
return getTaxDeclareRecordMapper().listSome(build);
}
@Override
@ -137,7 +159,7 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe
if (Objects.isNull(taxCycle) || CollectionUtils.isEmpty(taxAgentIds)) {
return Collections.emptyList();
}
return taxDeclareRecordMapper.listSome(TaxDeclareRecordPO.builder().taxAgentIds(taxAgentIds).taxCycle(taxCycle).build());
return getTaxDeclareRecordMapper().listSome(TaxDeclareRecordPO.builder().taxAgentIds(taxAgentIds).taxCycle(taxCycle).build());
}
@Override
@ -145,7 +167,7 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe
if (Objects.isNull(salaryMonth) || CollectionUtils.isEmpty(taxAgentIds)) {
return Collections.emptyList();
}
return taxDeclareRecordMapper.listSome(TaxDeclareRecordPO.builder().taxAgentIds(taxAgentIds).salaryMonth(salaryMonth).build());
return getTaxDeclareRecordMapper().listSome(TaxDeclareRecordPO.builder().taxAgentIds(taxAgentIds).salaryMonth(salaryMonth).build());
}
@Override
@ -161,20 +183,20 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe
}
List<Long> taxAgentIds = new ArrayList<>();
if (StringUtils.isNotEmpty(queryParam.getTaxAgentName())) {
List<TaxAgentPO> taxAgents = taxAgentService.list(TaxAgentQueryParam.builder().name(queryParam.getTaxAgentName()).build());
List<TaxAgentPO> taxAgents = getTaxAgentService(user).list(TaxAgentQueryParam.builder().name(queryParam.getTaxAgentName()).build());
if (CollectionUtils.isEmpty(taxAgents)) {
return pageInfo;
}
taxAgentIds = SalaryEntityUtil.properties(taxAgents, TaxAgentPO::getId, Collectors.toList());
}
// 判断是否开启了分权
Boolean openDevolution = taxAgentService.isOpenDevolution();
Boolean openDevolution = getTaxAgentService(user).isOpenDevolution();
// 判断是否是总管理员
Boolean isChief = taxAgentService.isChief((long) user.getUID());
Boolean isChief = getTaxAgentService(user).isChief((long) user.getUID());
// 可见范围内的个税扣缴义务人
Collection<TaxAgentPO> taxAgents = Lists.newArrayList();
if (openDevolution && !isChief) {
taxAgents = taxAgentService.listAllTaxAgentsAsAdmin((long) user.getUID());
taxAgents = getTaxAgentService(user).listAllTaxAgentsAsAdmin((long) user.getUID());
if (CollectionUtils.isEmpty(taxAgents)) {
return pageInfo;
}
@ -182,107 +204,83 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe
taxAgentIds = taxAgentIds.stream().filter(taxAgentDevolution::contains).collect(Collectors.toList());
}
build.setTaxAgentIds(taxAgentIds);
List<TaxDeclareRecordPO> taxDeclareRecordPOS = taxDeclareRecordMapper.listSome(build);
return SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(),
taxDeclareRecordPOS, TaxDeclareRecordPO.class);
List<TaxDeclareRecordPO> taxDeclareRecordPOS = getTaxDeclareRecordMapper().listSome(build);
return SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), taxDeclareRecordPOS, TaxDeclareRecordPO.class);
}
@Override
public void save(TaxDeclarationSaveParam saveParam) {
// Date now = new Date();
// Set<Long> needDeleteTaxDeclareRecordIds = Sets.newHashSet();
// List<TaxDeclareRecordPO> newTaxDeclareRecords = Lists.newArrayList();
// List<TaxDeclarationPO> newTaxDeclarations = Lists.newArrayList();
// List<TaxDeclarationValuePO> newTaxDeclarationValues = Lists.newArrayList();
// List<AddUpSituation> newAddUpSituations = Lists.newArrayList();
// // 根据个税扣缴义务人范围查询个税扣缴义务人
// List<TaxAgentPO> taxAgents = queryByTaxAgentRange(saveParam);
// Map<Long, String> taxAgentNameMap = SalaryEntityUtil.convert2Map(taxAgents, TaxAgentPO::getId, TaxAgentPO::getName);
// // 查询薪资所属月下的薪资核算记录并按照权限过滤
// LocalDateRange salaryMonthRange = new LocalDateRange()
// .setFromDate(SalaryDateUtil.localDateToDate(saveParam.getSalaryMonth().atDay(1)))
// .setEndDate(SalaryDateUtil.localDateToDate(saveParam.getSalaryMonth().atDay(1)));
// List<SalaryAcctRecordPO> salaryAcctRecords = salaryAcctRecordService.listBySalaryMonth(salaryMonthRange);
// // 查询薪资核算记录关联的个税扣缴义务人
// List<SalaryAcctTaxAgentPO> salaryAcctTaxAgents = salaryAcctRecordService.listBySalaryAcctRecordIds(
// SalaryEntityUtil.properties(salaryAcctRecords, SalaryAcctRecordPO::getId));
// // 按照saveParam中的个税扣缴义务人范围过滤
// Set<Long> taxAgentIds = SalaryEntityUtil.properties(taxAgents, TaxAgentPO::getId);
// salaryAcctTaxAgents = salaryAcctTaxAgents.stream()
// .filter(e -> taxAgentIds.contains(e.getTaxAgentId()))
// .collect(Collectors.toList());
// Set<Long> salaryAcctRecordIds = SalaryEntityUtil.properties(salaryAcctTaxAgents, SalaryAcctTaxAgentPO::getSalaryAcctRecordId);
// salaryAcctRecords = salaryAcctRecords.stream()
// .filter(e -> salaryAcctRecordIds.contains(e.getId()))
// .collect(Collectors.toList());
// // 校验是否可以生成个税申报表
// // 返回目前已经生成的个税申报表
// List<TaxDeclareRecordPO> taxDeclareRecords = checkBeforeSave(saveParam, taxAgentNameMap, salaryAcctRecords, salaryAcctTaxAgents);
// Map<String, TaxDeclareRecordPO> taxDeclareRecordMap = SalaryEntityUtil.convert2Map(taxDeclareRecords, e -> e.getTaxCycle() + "-" + e.getTaxAgentId());
// // 查询薪资核算人员
// List<SalaryAcctEmployeePO> salaryAcctEmployees = salaryAcctEmployeeService.listByRecordIdsAndEmpIdAndTaxAgentId(salaryAcctRecordIds, null, taxAgents.get(0).getId());
// // 薪资核算人员按照税款所属期聚合分类
// Map<Date, List<SalaryAcctEmployeePO>> taxCycleKeyEmployeeMap = SalaryEntityUtil.group2Map(
// salaryAcctEmployees, SalaryAcctEmployeePO::getTaxCycle);
// for (Map.Entry<Date, List<SalaryAcctEmployeePO>> taxCycleEntry : taxCycleKeyEmployeeMap.entrySet()) {
// // 薪资核算人员按照个税扣缴义务人id聚合分类
// Map<Long, List<SalaryAcctEmployeePO>> taxAgentIdKeyEmployeeMap = SalaryEntityUtil.group2Map(
// taxCycleEntry.getValue(), SalaryAcctEmployeePO::getTaxAgentId);
// for (Map.Entry<Long, List<SalaryAcctEmployeePO>> taxAgentIdEntry : taxAgentIdKeyEmployeeMap.entrySet()) {
// TaxDeclareRecordPO oldTaxDeclareRecord = taxDeclareRecordMap.get(taxCycleEntry.getKey() + "-" + taxAgentIdEntry.getKey());
// // 如果已经生成了个税申报表并且个税申报表已经申报过了就跳过
// if (oldTaxDeclareRecord != null) {
// if (!(Objects.equals(oldTaxDeclareRecord.getTaxDeclareType(), TaxDeclareTypeEnum.NORMAL_DECLARE.getValue())
// && Objects.equals(oldTaxDeclareRecord.getTaxDeclareStatus(), TaxDeclareStatusEnum.NOT_DECLARE.getValue()))) {
// continue;
// }
// needDeleteTaxDeclareRecordIds.add(oldTaxDeclareRecord.getId());
// }
// TaxDeclareRecordPO taxDeclareRecord = new TaxDeclareRecordPO()
// .setId(IdGenerator.generate())
// .setTaxAgentId(taxAgentIdEntry.getKey())
// .setSalaryMonth(SalaryDateUtil.localDateToDate(saveParam.getSalaryMonth().atDay(1)))
// .setTaxCycle(taxCycleEntry.getKey())
// .setTaxDeclareType(TaxDeclareTypeEnum.NORMAL_DECLARE.getValue())
// .setTaxDeclareStatus(TaxDeclareStatusEnum.NOT_DECLARE.getValue())
// .setRemark(saveParam.getDescription())
// .setCreator((long)user.getUID())
// .setTenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
// .setDeleteType(DeleteTypeEnum.NOT_DELETED.getValue())
// .setCreateTime(now)
// .setUpdateTime(now);
// newTaxDeclareRecords.add(taxDeclareRecord);
// // 生成个税申报表
// TaxDeclarationResult taxDeclarationResult = generateReportPerRecord(taxDeclareRecord, taxAgentIdEntry.getValue());
// newTaxDeclarations.addAll(taxDeclarationResult.getTaxDeclarations());
// newTaxDeclarationValues.addAll(taxDeclarationResult.getTaxDeclarationValues());
// newAddUpSituations.addAll(taxDeclarationResult.getAddUpSituations());
// }
// }
//
// // 删除原来生成的个税申报记录个税申报表个税申报表明细
// deleteByIds(needDeleteTaxDeclareRecordIds);
// // 保存个税申报记录
// if (CollectionUtils.isNotEmpty(newTaxDeclareRecords)) {
// saveBatch(newTaxDeclareRecords);
// }
// // 保存个税申报表
// if (CollectionUtils.isNotEmpty(newTaxDeclarations)) {
// taxDeclarationService.saveBatch(newTaxDeclarations);
// }
// // 保存个税申报表明细
// if (CollectionUtils.isNotEmpty(newTaxDeclarationValues)) {
// taxDeclarationValueService.batchSave(newTaxDeclarationValues);
// }
// // 保存累计情况
// if (CollectionUtils.isNotEmpty(newAddUpSituations)) {
// Map<String, List<AddUpSituationPO>> addUpSituationMap = SalaryEntityUtil.group2Map(newAddUpSituations, e -> SalaryDateUtil.getFormatYearMonth(e.getTaxYearMonth()));
// for (Map.Entry<String, List<AddUpSituationPO>> entry : addUpSituationMap.entrySet()) {
// addUpSituationService.deleteByTaxYearMonthAndTaxAgentIds(YearMonth.parse(entry.getKey()),
// SalaryEntityUtil.properties(entry.getValue(), AddUpSituationPO::getTaxAgentId));
// addUpSituationService.saveBatch(entry.getValue());
// }
// }
Date now = new Date();
Set<Long> needDeleteTaxDeclareRecordIds = Sets.newHashSet();
List<TaxDeclareRecordPO> newTaxDeclareRecords = Lists.newArrayList();
List<TaxDeclarationPO> newTaxDeclarations = Lists.newArrayList();
List<TaxDeclarationValuePO> newTaxDeclarationValues = Lists.newArrayList();
List<AddUpSituation> newAddUpSituations = Lists.newArrayList();
// 根据个税扣缴义务人范围查询个税扣缴义务人
Collection<TaxAgentPO> taxAgents = queryByTaxAgentRange(saveParam);
Map<Long, String> taxAgentNameMap = SalaryEntityUtil.convert2Map(taxAgents, TaxAgentPO::getId, TaxAgentPO::getName);
// 查询薪资所属月下的薪资核算记录并按照权限过滤
LocalDateRange salaryMonthRange = new LocalDateRange().setFromDate(SalaryDateUtil.localDateToDate(saveParam.getSalaryMonth().atDay(1))).setEndDate(SalaryDateUtil.localDateToDate(saveParam.getSalaryMonth().atDay(1)));
List<SalaryAcctRecordPO> salaryAcctRecords = getSalaryAcctRecordService(user).listBySalaryMonth(salaryMonthRange);
// 查询薪资核算记录关联的个税扣缴义务人
List<SalaryAcctTaxAgentPO> salaryAcctTaxAgents = getSalaryAcctRecordService(user).listBySalaryAcctRecordIds(SalaryEntityUtil.properties(salaryAcctRecords, SalaryAcctRecordPO::getId));
// 按照saveParam中的个税扣缴义务人范围过滤
Set<Long> taxAgentIds = SalaryEntityUtil.properties(taxAgents, TaxAgentPO::getId);
salaryAcctTaxAgents = salaryAcctTaxAgents.stream().filter(e -> taxAgentIds.contains(e.getTaxAgentId())).collect(Collectors.toList());
Set<Long> salaryAcctRecordIds = SalaryEntityUtil.properties(salaryAcctTaxAgents, SalaryAcctTaxAgentPO::getSalaryAcctRecordId);
salaryAcctRecords = salaryAcctRecords.stream().filter(e -> salaryAcctRecordIds.contains(e.getId())).collect(Collectors.toList());
// 校验是否可以生成个税申报表
// 返回目前已经生成的个税申报表
List<TaxDeclareRecordPO> taxDeclareRecords = checkBeforeSave(saveParam, taxAgentNameMap, salaryAcctRecords, salaryAcctTaxAgents);
Map<String, TaxDeclareRecordPO> taxDeclareRecordMap = SalaryEntityUtil.convert2Map(taxDeclareRecords, e -> e.getTaxCycle() + "-" + e.getTaxAgentId());
// 查询薪资核算人员
List<SalaryAcctEmployeePO> salaryAcctEmployees = getSalaryAcctEmployeeService(user).listByRecordIdsAndEmpIdAndTaxAgentId(salaryAcctRecordIds, null, taxAgents.stream().findFirst().orElse(new TaxAgentPO()).getId());
// 薪资核算人员按照税款所属期聚合分类
Map<Date, List<SalaryAcctEmployeePO>> taxCycleKeyEmployeeMap = SalaryEntityUtil.group2Map(salaryAcctEmployees, SalaryAcctEmployeePO::getTaxCycle);
for (Map.Entry<Date, List<SalaryAcctEmployeePO>> taxCycleEntry : taxCycleKeyEmployeeMap.entrySet()) {
// 薪资核算人员按照个税扣缴义务人id聚合分类
Map<Long, List<SalaryAcctEmployeePO>> taxAgentIdKeyEmployeeMap = SalaryEntityUtil.group2Map(taxCycleEntry.getValue(), SalaryAcctEmployeePO::getTaxAgentId);
for (Map.Entry<Long, List<SalaryAcctEmployeePO>> taxAgentIdEntry : taxAgentIdKeyEmployeeMap.entrySet()) {
TaxDeclareRecordPO oldTaxDeclareRecord = taxDeclareRecordMap.get(taxCycleEntry.getKey() + "-" + taxAgentIdEntry.getKey());
// 如果已经生成了个税申报表并且个税申报表已经申报过了就跳过
if (oldTaxDeclareRecord != null) {
if (!(Objects.equals(oldTaxDeclareRecord.getTaxDeclareType(), TaxDeclareTypeEnum.NORMAL_DECLARE.getValue()) && Objects.equals(oldTaxDeclareRecord.getTaxDeclareStatus(), TaxDeclareStatusEnum.NOT_DECLARE.getValue()))) {
continue;
}
needDeleteTaxDeclareRecordIds.add(oldTaxDeclareRecord.getId());
}
TaxDeclareRecordPO taxDeclareRecord = new TaxDeclareRecordPO().setId(IdGenerator.generate()).setTaxAgentId(taxAgentIdEntry.getKey()).setSalaryMonth(SalaryDateUtil.localDateToDate(saveParam.getSalaryMonth().atDay(1))).setTaxCycle(taxCycleEntry.getKey()).setTaxDeclareType(TaxDeclareTypeEnum.NORMAL_DECLARE.getValue()).setTaxDeclareStatus(TaxDeclareStatusEnum.NOT_DECLARE.getValue()).setRemark(saveParam.getDescription()).setCreator((long) user.getUID()).setTenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY).setDeleteType(DeleteTypeEnum.NOT_DELETED.getValue()).setCreateTime(now).setUpdateTime(now);
newTaxDeclareRecords.add(taxDeclareRecord);
// 生成个税申报表
TaxDeclarationResult taxDeclarationResult = generateReportPerRecord(taxDeclareRecord, taxAgentIdEntry.getValue());
newTaxDeclarations.addAll(taxDeclarationResult.getTaxDeclarations());
newTaxDeclarationValues.addAll(taxDeclarationResult.getTaxDeclarationValues());
newAddUpSituations.addAll(taxDeclarationResult.getAddUpSituations());
}
}
// 删除原来生成的个税申报记录个税申报表个税申报表明细
deleteByIds(needDeleteTaxDeclareRecordIds);
// 保存个税申报记录
if (CollectionUtils.isNotEmpty(newTaxDeclareRecords)) {
getTaxDeclareRecordMapper().batchInsert(newTaxDeclareRecords);
}
// 保存个税申报表
if (CollectionUtils.isNotEmpty(newTaxDeclarations)) {
getTaxDeclarationService(user).saveBatch(newTaxDeclarations);
}
// 保存个税申报表明细
if (CollectionUtils.isNotEmpty(newTaxDeclarationValues)) {
getTaxDeclarationValueService(user).batchSave(newTaxDeclarationValues);
}
// 保存累计情况
if (CollectionUtils.isNotEmpty(newAddUpSituations)) {
Map<String, List<AddUpSituation>> addUpSituationMap = SalaryEntityUtil.group2Map(newAddUpSituations, e -> SalaryDateUtil.getFormatYearMonth(e.getTaxYearMonth()));
for (Map.Entry<String, List<AddUpSituation>> entry : addUpSituationMap.entrySet()) {
getAddUpSituationService(user).deleteByTaxYearMonthAndTaxAgentIds(YearMonth.parse(entry.getKey()), SalaryEntityUtil.properties(entry.getValue(), AddUpSituation::getTaxAgentId));
getAddUpSituationService(user).batchSave(entry.getValue());
}
}
// // 记录日志
// for (TaxDeclareRecordPO taxDeclareRecord : newTaxDeclareRecords) {
// LoggerContext<TaxDeclarationPO> loggerContext = new LoggerContext<>();
@ -307,49 +305,41 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe
if (Objects.isNull(taxDeclareRecord)) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(156495, "参数异常,个税申报记录不存在或已被删除"));
}
if (!Objects.equals(taxDeclareRecord.getTaxDeclareStatus(), TaxDeclareStatusEnum.NOT_DECLARE.getValue())
&& !Objects.equals(taxDeclareRecord.getTaxDeclareStatus(), TaxDeclareStatusEnum.DECLARE_FAIL.getValue())) {
if (!Objects.equals(taxDeclareRecord.getTaxDeclareStatus(), TaxDeclareStatusEnum.NOT_DECLARE.getValue()) && !Objects.equals(taxDeclareRecord.getTaxDeclareStatus(), TaxDeclareStatusEnum.DECLARE_FAIL.getValue())) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(182700, "对不起,只有未申报状态下可以刷新数据"));
}
// 查询税款所属期下的薪资核算人员
SalaryAcctEmployeeQueryParam salaryAcctEmployeeQueryParam = SalaryAcctEmployeeQueryParam.builder()
.taxAgentIds(Collections.singletonList(taxDeclareRecord.getTaxAgentId()))
.taxCycle(taxDeclareRecord.getTaxCycle())
.build();
List<SalaryAcctEmployeePO> salaryAcctEmployees = salaryAcctEmployeeService.listByParam(salaryAcctEmployeeQueryParam);
SalaryAcctEmployeeQueryParam salaryAcctEmployeeQueryParam = SalaryAcctEmployeeQueryParam.builder().taxAgentIds(Collections.singletonList(taxDeclareRecord.getTaxAgentId())).taxCycle(taxDeclareRecord.getTaxCycle()).build();
List<SalaryAcctEmployeePO> salaryAcctEmployees = getSalaryAcctEmployeeService(user).listByParam(salaryAcctEmployeeQueryParam);
// 查询薪资核算记录
Set<Long> salaryAcctRecordIds = SalaryEntityUtil.properties(salaryAcctEmployees, SalaryAcctEmployeePO::getSalaryAcctRecordId);
List<SalaryAcctRecordPO> salaryAcctRecords = salaryAcctRecordService.listByIds(salaryAcctRecordIds);
List<SalaryAcctRecordPO> salaryAcctRecords = getSalaryAcctRecordService(user).listByIds(salaryAcctRecordIds);
// 如果存在未归档的薪资核算记录不允许生成个税申报表
boolean notArchived = salaryAcctRecords.stream()
.anyMatch(salaryAcctRecordPO -> Objects.equals(salaryAcctRecordPO.getStatus(), SalaryAcctRecordStatusEnum.NOT_ARCHIVED.getValue()));
boolean notArchived = salaryAcctRecords.stream().anyMatch(salaryAcctRecordPO -> Objects.equals(salaryAcctRecordPO.getStatus(), SalaryAcctRecordStatusEnum.NOT_ARCHIVED.getValue()));
if (notArchived) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98875, "{0}有未归档数据,请全部归档后再申报")
.replace("{0}", SalaryDateUtil.getFormatYearMonth(taxDeclareRecord.getSalaryMonth())));
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98875, "{0}有未归档数据,请全部归档后再申报").replace("{0}", SalaryDateUtil.getFormatYearMonth(taxDeclareRecord.getSalaryMonth())));
}
TaxDeclarationResult taxDeclarationResult = generateReportPerRecord(taxDeclareRecord, salaryAcctEmployees);
// 更新个税申报记录
taxDeclareRecord.setDisplayUpdateIcon(0).setUpdateTime(new Date());
taxDeclareRecordMapper.updateIgnoreNull(taxDeclareRecord);
getTaxDeclareRecordMapper().updateIgnoreNull(taxDeclareRecord);
// 删除原来的申报表保存新生成的
taxDeclarationService.deleteByTaxDeclareRecordIds(Collections.singleton(taxDeclareRecord.getId()));
getTaxDeclarationService(user).deleteByTaxDeclareRecordIds(Collections.singleton(taxDeclareRecord.getId()));
if (CollectionUtils.isNotEmpty(taxDeclarationResult.getTaxDeclarations())) {
taxDeclarationService.saveBatch(taxDeclarationResult.getTaxDeclarations());
getTaxDeclarationService(user).saveBatch(taxDeclarationResult.getTaxDeclarations());
}
// 删除原来的申报表明细保存新生成的
taxDeclarationValueService.deleteByTaxDeclareRecordIds(Collections.singleton(taxDeclareRecord.getId()));
getTaxDeclarationValueService(user).deleteByTaxDeclareRecordIds(Collections.singleton(taxDeclareRecord.getId()));
if (CollectionUtils.isNotEmpty(taxDeclarationResult.getTaxDeclarationValues())) {
taxDeclarationValueService.batchSave(taxDeclarationResult.getTaxDeclarationValues());
getTaxDeclarationValueService(user).batchSave(taxDeclarationResult.getTaxDeclarationValues());
}
// 保存累计情况
if (CollectionUtils.isNotEmpty(taxDeclarationResult.getAddUpSituations())) {
Map<String, List<AddUpSituation>> addUpSituationMap = SalaryEntityUtil.group2Map(taxDeclarationResult.getAddUpSituations(),
e -> SalaryDateUtil.getFormatYearMonth(e.getTaxYearMonth()));
Map<String, List<AddUpSituation>> addUpSituationMap = SalaryEntityUtil.group2Map(taxDeclarationResult.getAddUpSituations(), e -> SalaryDateUtil.getFormatYearMonth(e.getTaxYearMonth()));
for (Map.Entry<String, List<AddUpSituation>> entry : addUpSituationMap.entrySet()) {
addUpSituationService.deleteByTaxYearMonthAndTaxAgentIds(YearMonth.parse(entry.getKey()),
SalaryEntityUtil.properties(entry.getValue(), AddUpSituation::getTaxAgentId));
addUpSituationService.batchSave(entry.getValue());
getAddUpSituationService(user).deleteByTaxYearMonthAndTaxAgentIds(YearMonth.parse(entry.getKey()), SalaryEntityUtil.properties(entry.getValue(), AddUpSituation::getTaxAgentId));
getAddUpSituationService(user).batchSave(entry.getValue());
}
}
}
@ -360,77 +350,42 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe
List<TaxDeclarationValuePO> taxDeclarationValues = Lists.newArrayList();
List<AddUpSituation> addUpSituations = Lists.newArrayList();
// 查询薪资项目
List<SalaryItemPO> salaryItems = salaryItemService.listAll();
List<SalaryItemPO> salaryItems = getSalaryItemService(user).listAll();
// 查询个税申报表列
List<TaxReportColumnPO> taxReportColumns = taxReportColumnService.listAll();
List<TaxReportColumnPO> taxReportColumns = getTaxReportColumnService(user).listAll();
Map<String, List<TaxReportColumnPO>> taxReportColumnMap = SalaryEntityUtil.group2Map(taxReportColumns, TaxReportColumnPO::getIncomeCategory);
// 查询薪资核算记录
Set<Long> salaryAcctRecordIds = SalaryEntityUtil.properties(salaryAcctEmployees, SalaryAcctEmployeePO::getSalaryAcctRecordId);
List<SalaryAcctRecordPO> salaryAcctRecords = salaryAcctRecordService.listByIds(salaryAcctRecordIds);
List<SalaryAcctRecordPO> salaryAcctRecords = getSalaryAcctRecordService(user).listByIds(salaryAcctRecordIds);
Map<Long, SalaryAcctRecordPO> salaryAcctRecordMap = SalaryEntityUtil.convert2Map(salaryAcctRecords, SalaryAcctRecordPO::getId);
// 查询薪资核算结果
Set<Long> salaryAcctEmployeeIds = SalaryEntityUtil.properties(salaryAcctEmployees, SalaryAcctEmployeePO::getId);
List<SalaryAcctResultPO> salaryAcctResultValues = salaryAcctResultValueService.listBySalaryAcctEmployeeIds(salaryAcctEmployeeIds);
List<SalaryAcctResultPO> salaryAcctResultValues = getSalaryAcctResultService(user).listBySalaryAcctEmployeeIds(salaryAcctEmployeeIds);
// 查询薪资账套的累计字段对应关系
Set<Long> salarySobIds = SalaryEntityUtil.properties(salaryAcctEmployees, SalaryAcctEmployeePO::getSalarySobId);
List<SalarySobAddUpRulePO> salarySobAddUpRules = salarySobAddUpRuleService.listBySalarySobIds(salarySobIds);
Map<String, SalarySobAddUpRulePO> salarySobAddUpRuleMap = SalaryEntityUtil.convert2Map(salarySobAddUpRules,
e -> e.getSalarySobId() + "-" + e.getAddUpColumnDataIndex());
Map<String, SalarySobAddUpRulePO> salarySobAddUpRuleMap = SalaryEntityUtil.convert2Map(salarySobAddUpRules, e -> e.getSalarySobId() + "-" + e.getAddUpColumnDataIndex());
// 查询薪资账套的个税申报表对应规则
List<SalarySobTaxReportRulePO> salarySobTaxReportRules = salarySobTaxReportRuleService.listBySalarySobIds(salarySobIds);
Map<String, SalarySobTaxReportRulePO> salarySobTaxReportRuleMap = SalaryEntityUtil.convert2Map(salarySobTaxReportRules, e -> e.getSalarySobId() + "-" + e.getReportColumnDataIndex());
// 薪资核算结果按照薪资核算人员id聚合分类
Map<Long, List<SalaryAcctResultPO>> salaryAcctResultValueMap = SalaryEntityUtil.group2Map(
salaryAcctResultValues, SalaryAcctResultPO::getSalaryAcctEmpId);
Map<Long, List<SalaryAcctResultPO>> salaryAcctResultValueMap = SalaryEntityUtil.group2Map(salaryAcctResultValues, SalaryAcctResultPO::getSalaryAcctEmpId);
// 薪资核算人员按照所得项目聚合分类
Map<String, List<SalaryAcctEmployeePO>> incomeCategoryKeyEmployeeMap = SalaryEntityUtil.group2Map(
salaryAcctEmployees, SalaryAcctEmployeePO::getIncomeCategory);
Map<String, List<SalaryAcctEmployeePO>> incomeCategoryKeyEmployeeMap = SalaryEntityUtil.group2Map(salaryAcctEmployees, SalaryAcctEmployeePO::getIncomeCategory);
for (Map.Entry<String, List<SalaryAcctEmployeePO>> incomeCategoryEntry : incomeCategoryKeyEmployeeMap.entrySet()) {
List<SalaryAcctRecordPO> controlViewSalaryAcctRecords = incomeCategoryEntry.getValue().stream()
.map(e -> salaryAcctRecordMap.get(e.getSalaryAcctRecordId()))
.distinct()
.filter(e -> Objects.equals(e.getControlView(), 1))
.collect(Collectors.toList());
TaxDeclarationPO taxDeclaration = TaxDeclarationPO.builder()
.id(IdGenerator.generate())
.taxDeclareRecordId(taxDeclareRecord.getId())
.incomeCategory(Util.getIntValue(incomeCategoryEntry.getKey()))
.taxAgentId(taxDeclareRecord.getTaxAgentId())
.salaryMonth(taxDeclareRecord.getSalaryMonth())
.taxCycle(taxDeclareRecord.getTaxCycle())
.description(taxDeclareRecord.getRemark())
.controlView(CollectionUtils.isEmpty(controlViewSalaryAcctRecords) ? 0 : 1)
.creator((long) user.getUID())
.createTime(now)
.updateTime(now)
.deleteType(DeleteTypeEnum.NOT_DELETED.getValue())
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
.build();
List<SalaryAcctRecordPO> controlViewSalaryAcctRecords = incomeCategoryEntry.getValue().stream().map(e -> salaryAcctRecordMap.get(e.getSalaryAcctRecordId())).distinct().filter(e -> Objects.equals(e.getControlView(), 1)).collect(Collectors.toList());
TaxDeclarationPO taxDeclaration = TaxDeclarationPO.builder().id(IdGenerator.generate()).taxDeclareRecordId(taxDeclareRecord.getId()).incomeCategory(Util.getIntValue(incomeCategoryEntry.getKey())).taxAgentId(taxDeclareRecord.getTaxAgentId()).salaryMonth(taxDeclareRecord.getSalaryMonth()).taxCycle(taxDeclareRecord.getTaxCycle()).description(taxDeclareRecord.getRemark()).controlView(CollectionUtils.isEmpty(controlViewSalaryAcctRecords) ? 0 : 1).creator((long) user.getUID()).createTime(now).updateTime(now).deleteType(DeleteTypeEnum.NOT_DELETED.getValue()).tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY).build();
taxDeclarations.add(taxDeclaration);
// 薪资核算结果
Set<Long> salaryAcctEmployeeIdSet = SalaryEntityUtil.properties(incomeCategoryEntry.getValue(), SalaryAcctEmployeePO::getId);
List<List<SalaryAcctResultPO>> resultValues = salaryAcctEmployeeIdSet.stream()
.map(salaryAcctResultValueMap::get)
.filter(Objects::nonNull)
.collect(Collectors.toList());
TaxDeclareContext taxDeclareContext = new TaxDeclareContext()
.setSalaryAcctRecordMap(salaryAcctRecordMap)
.setSalaryAcctEmployees(incomeCategoryEntry.getValue())
.setSalaryAcctResultValues(salaryAcctResultValues)
.setTaxDeclaration(taxDeclaration)
.setSalarySobTaxReportRuleMap(salarySobTaxReportRuleMap)
.setSalarySobAddUpRuleMap(salarySobAddUpRuleMap)
.setTaxReportColumns(taxReportColumnMap.get(incomeCategoryEntry.getKey()))
.setSalaryItems(salaryItems);
List<List<SalaryAcctResultPO>> resultValues = salaryAcctEmployeeIdSet.stream().map(salaryAcctResultValueMap::get).filter(Objects::nonNull).collect(Collectors.toList());
TaxDeclareContext taxDeclareContext = new TaxDeclareContext().setSalaryAcctRecordMap(salaryAcctRecordMap).setSalaryAcctEmployees(incomeCategoryEntry.getValue()).setSalaryAcctResultValues(salaryAcctResultValues).setTaxDeclaration(taxDeclaration).setSalarySobTaxReportRuleMap(salarySobTaxReportRuleMap).setSalarySobAddUpRuleMap(salarySobAddUpRuleMap).setTaxReportColumns(taxReportColumnMap.get(incomeCategoryEntry.getKey())).setSalaryItems(salaryItems);
TaxDeclarationStrategy taxDeclarationStrategy = new TaxDeclarationCommon();
TaxDeclarationGenerateResult generateResult = taxDeclarationStrategy.generate(taxDeclareContext, (long) user.getUID());
taxDeclarationValues.addAll(generateResult.getTaxDeclarationValues());
addUpSituations.addAll(generateResult.getAddUpSituations());
}
return new TaxDeclarationResult()
.setTaxDeclarations(taxDeclarations)
.setTaxDeclarationValues(taxDeclarationValues)
.setAddUpSituations(addUpSituations);
return new TaxDeclarationResult().setTaxDeclarations(taxDeclarations).setTaxDeclarationValues(taxDeclarationValues).setAddUpSituations(addUpSituations);
}
/**
@ -441,73 +396,59 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe
* @param salaryAcctRecords
* @param salaryAcctTaxAgents
*/
private List<TaxDeclareRecordPO> checkBeforeSave(TaxDeclarationSaveParam saveParam,
Map<Long, String> taxAgentNameMap,
List<SalaryAcctRecordPO> salaryAcctRecords,
List<SalaryAcctTaxAgentPO> salaryAcctTaxAgents) {
private List<TaxDeclareRecordPO> checkBeforeSave(TaxDeclarationSaveParam saveParam, Map<Long, String> taxAgentNameMap, List<SalaryAcctRecordPO> salaryAcctRecords, List<SalaryAcctTaxAgentPO> salaryAcctTaxAgents) {
List<TaxDeclareRecordPO> resultList = Lists.newArrayList();
// 如果存在未归档的薪资核算记录不允许生成个税申报表
boolean notArchived = salaryAcctRecords.stream()
.anyMatch(salaryAcctRecordPO -> Objects.equals(salaryAcctRecordPO.getStatus(), SalaryAcctRecordStatusEnum.NOT_ARCHIVED.getValue()));
boolean notArchived = salaryAcctRecords.stream().anyMatch(salaryAcctRecordPO -> Objects.equals(salaryAcctRecordPO.getStatus(), SalaryAcctRecordStatusEnum.NOT_ARCHIVED.getValue()));
if (notArchived) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98875, "{0}有未归档数据,请全部归档后再申报")
.replace("{0}", saveParam.getSalaryMonth().toString()));
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98875, "{0}有未归档数据,请全部归档后再申报").replace("{0}", saveParam.getSalaryMonth().toString()));
}
// 查询已归档的薪资核算记录
List<SalaryAcctRecordPO> archivedSalaryAcctRecords = salaryAcctRecords.stream()
.filter(salaryAcctRecordPO -> Objects.equals(salaryAcctRecordPO.getStatus(), SalaryAcctRecordStatusEnum.ARCHIVED.getValue()))
.collect(Collectors.toList());
List<SalaryAcctRecordPO> archivedSalaryAcctRecords = salaryAcctRecords.stream().filter(salaryAcctRecordPO -> Objects.equals(salaryAcctRecordPO.getStatus(), SalaryAcctRecordStatusEnum.ARCHIVED.getValue())).collect(Collectors.toList());
// 无已归档的薪资核算记录不允许生成个税申报表
if (CollectionUtils.isEmpty(archivedSalaryAcctRecords)) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(177860, "{0}无可申报数据")
.replace("{0}", saveParam.getSalaryMonth().toString()));
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(177860, "{0}无可申报数据").replace("{0}", saveParam.getSalaryMonth().toString()));
}
// 查询已归档的薪资核算记录是否已经生成过个税申报表
Map<Date, List<SalaryAcctTaxAgentPO>> taxCycleKeySalaryAcctTaxAgentMap = SalaryEntityUtil.group2Map(salaryAcctTaxAgents, SalaryAcctTaxAgentPO::getTaxCycle);
for (Map.Entry<Date, List<SalaryAcctTaxAgentPO>> taxCycleEntry : taxCycleKeySalaryAcctTaxAgentMap.entrySet()) {
Set<Long> archivedTaxAgentIds = SalaryEntityUtil.properties(taxCycleEntry.getValue(), SalaryAcctTaxAgentPO::getTaxAgentId);
List<TaxDeclareRecordPO> taxDeclareRecords = listBySalaryMonthAndTaxAgentIds(SalaryDateUtil.localDateToDate(saveParam.getSalaryMonth().atDay(1)), archivedTaxAgentIds);
TaxDeclareRecordPO declareSuccessTaxDeclareRecord = taxDeclareRecords.stream()
.filter(taxDeclareRecordPO -> archivedTaxAgentIds.contains(taxDeclareRecordPO.getTaxAgentId())
&& !(Objects.equals(taxDeclareRecordPO.getTaxDeclareStatus(), TaxDeclareStatusEnum.NOT_DECLARE.getValue())
|| Objects.equals(taxDeclareRecordPO.getTaxDeclareStatus(), TaxDeclareStatusEnum.DECLARE_FAIL.getValue())))
.findAny()
.orElse(null);
TaxDeclareRecordPO declareSuccessTaxDeclareRecord = taxDeclareRecords.stream().filter(taxDeclareRecordPO -> archivedTaxAgentIds.contains(taxDeclareRecordPO.getTaxAgentId()) && !(Objects.equals(taxDeclareRecordPO.getTaxDeclareStatus(), TaxDeclareStatusEnum.NOT_DECLARE.getValue()) || Objects.equals(taxDeclareRecordPO.getTaxDeclareStatus(), TaxDeclareStatusEnum.DECLARE_FAIL.getValue()))).findAny().orElse(null);
// 已经申报成功了的个税申报表的个税扣缴义务人不允许重新生成
if (Objects.nonNull(declareSuccessTaxDeclareRecord)) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(160522, "已开启智能算薪业务,个税扣缴义务人{0}的税款所属期{1}的个税申报表正在申报中或者已经申报成功,不可重复生成")
.replace("{0}", taxAgentNameMap.get(declareSuccessTaxDeclareRecord.getTaxAgentId()))
.replace("{1}", SalaryDateUtil.getFormatYearMonth(declareSuccessTaxDeclareRecord.getTaxCycle())));
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(160522, "已开启智能算薪业务,个税扣缴义务人{0}的税款所属期{1}的个税申报表正在申报中或者已经申报成功,不可重复生成").replace("{0}", taxAgentNameMap.get(declareSuccessTaxDeclareRecord.getTaxAgentId())).replace("{1}", SalaryDateUtil.getFormatYearMonth(declareSuccessTaxDeclareRecord.getTaxCycle())));
}
resultList.addAll(taxDeclareRecords);
}
return resultList;
}
// /**
// * 根据个税扣缴义务人范围查询个税扣缴义务人
// *
// * @param saveParam
// * @return
// */
// private List<TaxAgentPO> queryByTaxAgentRange(TaxDeclarationSaveParam saveParam) {
// List<TaxAgentPO> taxAgents;
// if (saveParam.getTaxAgentRange() == TaxAgentRangeEnum.ALL_TAX_AGENT) {
// // 判断当前是否开启了分权
// Boolean openDevolution = taxAgentService.isOpenDevolution(tenantKey);
// // 判断是否是总管理员
// Boolean isChief = taxAgentService.isChief(employeeId);
// if (openDevolution && !isChief) {
// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(160523, "对不起,您不是薪酬模块的总管理员,不具备生成所有个税扣缴义务人的权限"));
// }
// taxAgents = taxAgentService.listAll(tenantKey);
// } else if (saveParam.getTaxAgentRange() == TaxAgentRangeEnum.ADMIN_TAX_AGENT) {
// taxAgents = taxAgentService.listAllTaxAgentsAsAdmin(employeeId);
// } else {
// taxAgents = taxAgentService.listByIds(saveParam.getTaxAgentIds());
// }
// return taxAgents;
// }
/**
* 根据个税扣缴义务人范围查询个税扣缴义务人
*
* @param saveParam
* @return
*/
private Collection<TaxAgentPO> queryByTaxAgentRange(TaxDeclarationSaveParam saveParam) {
Collection<TaxAgentPO> taxAgents;
if (saveParam.getTaxAgentRange() == TaxAgentRangeEnum.ALL_TAX_AGENT) {
// 判断当前是否开启了分权
Boolean openDevolution = getTaxAgentService(user).isOpenDevolution();
// 判断是否是总管理员
Boolean isChief = getTaxAgentService(user).isChief((long) user.getUID());
if (openDevolution && !isChief) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(160523, "对不起,您不是薪酬模块的总管理员,不具备生成所有个税扣缴义务人的权限"));
}
taxAgents = getTaxAgentService(user).listAll();
} else if (saveParam.getTaxAgentRange() == TaxAgentRangeEnum.ADMIN_TAX_AGENT) {
taxAgents = getTaxAgentService(user).listAllTaxAgentsAsAdmin((long) user.getUID());
} else {
taxAgents = getTaxAgentService(user).listByIds(saveParam.getTaxAgentIds());
}
return taxAgents;
}
@Override
public void updateIcon(Long id, Integer displayIcon) {
TaxDeclareRecordPO taxDeclareRecord = getById(id);
@ -516,7 +457,7 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe
}
taxDeclareRecord.setDisplayUpdateIcon(displayIcon);
taxDeclareRecord.setUpdateTime(new Date());
taxDeclareRecordMapper.update(taxDeclareRecord);
getTaxDeclareRecordMapper().update(taxDeclareRecord);
}
@Override
@ -531,7 +472,7 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe
Date now = new Date();
taxDeclareRecords.forEach(e -> {
e.setDisplayUpdateIcon(1).setUpdateTime(now);
taxDeclareRecordMapper.update(e);
getTaxDeclareRecordMapper().update(e);
});
}
@ -542,16 +483,16 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe
// return false;
// }
// // 判断是否开启了分权
// Boolean openDevolution = taxAgentService.isOpenDevolution(tenantKey);
// Boolean openDevolution = getTaxAgentService(user).isOpenDevolution(tenantKey);
// // 判断是否是总管理员
// Boolean isChief = taxAgentService.isChief(employeeId);
// Boolean isChief = getTaxAgentService(user).isChief(employeeId);
// // 可见范围内的个税扣缴义务人
// List<TaxAgentPO> taxAgents = Lists.newArrayList();
// if (openDevolution) {
// if (isChief) {
// taxAgents = taxAgentService.listAsChief(true, true);
// taxAgents = getTaxAgentService(user).listAsChief(true, true);
// } else {
// taxAgents = taxAgentService.listAllTaxAgentsAsAdmin(employeeId);
// taxAgents = getTaxAgentService(user).listAllTaxAgentsAsAdmin(employeeId);
// }
// if (CollectionUtils.isEmpty(taxAgents)) {
// return false;
@ -572,25 +513,22 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe
if (CollectionUtils.isEmpty(taxDeclareRecords)) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(160524, "个税申报表不存在或已被删除"));
}
List<TaxDeclareRecordPO> cantDeleteTaxDeclareRecords = taxDeclareRecords.stream()
.filter(e -> !(Objects.equals(e.getTaxDeclareType(), TaxDeclareTypeEnum.NORMAL_DECLARE.getValue())
&& Objects.equals(e.getTaxDeclareStatus(), TaxDeclareStatusEnum.NOT_DECLARE.getValue())))
.collect(Collectors.toList());
List<TaxDeclareRecordPO> cantDeleteTaxDeclareRecords = taxDeclareRecords.stream().filter(e -> !(Objects.equals(e.getTaxDeclareType(), TaxDeclareTypeEnum.NORMAL_DECLARE.getValue()) && Objects.equals(e.getTaxDeclareStatus(), TaxDeclareStatusEnum.NOT_DECLARE.getValue()))).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(cantDeleteTaxDeclareRecords)) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(177854, "个税申报表已经申报,无法删除"));
}
taxDeclareRecordMapper.deleteByIds(ids);
getTaxDeclareRecordMapper().deleteByIds(ids);
// 删除个税申报表
taxDeclarationService.deleteByTaxDeclareRecordIds(ids);
getTaxDeclarationService(user).deleteByTaxDeclareRecordIds(ids);
// 删除个税申报表明细
taxDeclarationValueService.deleteByTaxDeclareRecordIds(ids);
getTaxDeclarationValueService(user).deleteByTaxDeclareRecordIds(ids);
// 记录日志
// writeDeleteLog(taxDeclareRecords);
}
// private void writeDeleteLog(List<TaxDeclareRecordPO> taxDeclareRecords) {
// // 记录日志
// List<TaxAgentPO> taxAgents = taxAgentService.listByIds(SalaryEntityUtil.properties(taxDeclareRecords, TaxDeclareRecordPO::getTaxAgentId));
// List<TaxAgentPO> taxAgents = getTaxAgentService(user).listByIds(SalaryEntityUtil.properties(taxDeclareRecords, TaxDeclareRecordPO::getTaxAgentId));
// Map<Long, String> taxAgentNameMap = SalaryEntityUtil.convert2Map(taxAgents, TaxAgentPO::getId, TaxAgentPO::getName);
// for (TaxDeclareRecordPO taxDeclareRecord : taxDeclareRecords) {
// LoggerContext<TaxDeclarationPO> loggerContext = new LoggerContext<>();
@ -617,37 +555,31 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe
}
// 查询个税申报表
List<TaxDeclarationPO> taxDeclarations = taxDeclarationService.listByTaxCycleAndTaxAgentIds(SalaryDateUtil.localDate2YearMonth(taxDeclareRecord.getTaxCycle()), Collections.singleton(taxDeclareRecord.getTaxAgentId()));
List<TaxDeclarationPO> taxDeclarations = getTaxDeclarationService(user).listByTaxCycleAndTaxAgentIds(SalaryDateUtil.localDate2YearMonth(taxDeclareRecord.getTaxCycle()), Collections.singleton(taxDeclareRecord.getTaxAgentId()));
if (CollectionUtils.isEmpty(taxDeclarations)) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(156494, "当前无可申报的数据"));
}
AbnormalEmployeeListQueryParam queryParam = new AbnormalEmployeeListQueryParam()
.setTaxDeclareRecordId(taxDeclareRecord.getId())
.setTaxAgentId(taxDeclareRecord.getTaxAgentId())
.setTaxCycle(taxDeclareRecord.getTaxCycle());
AbnormalEmployeeListQueryParam queryParam = new AbnormalEmployeeListQueryParam().setTaxDeclareRecordId(taxDeclareRecord.getId()).setTaxAgentId(taxDeclareRecord.getTaxAgentId()).setTaxCycle(taxDeclareRecord.getTaxCycle());
// 查询是否存在有未报送的人
List<TaxDeclareEmployeePO> notDeclareTaxDeclareEmployees = taxDeclareEmployeeService.list4NotDeclareByParam(queryParam);
List<TaxDeclareEmployeePO> notDeclareTaxDeclareEmployees = getTaxDeclareEmployeeService(user).list4NotDeclareByParam(queryParam);
if (CollectionUtils.isNotEmpty(notDeclareTaxDeclareEmployees)) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(162125, "存在有未报送的人,请先报送相关人员后再申报个税"));
}
// 查询是否存在没有申报数据的人
List<TaxDeclareEmployeePO> noValueTaxDeclareEmployees = taxDeclareEmployeeService.list4NoValueByParam(queryParam);
List<TaxDeclareEmployeePO> noValueTaxDeclareEmployees = getTaxDeclareEmployeeService(user).list4NoValueByParam(queryParam);
if (CollectionUtils.isNotEmpty(noValueTaxDeclareEmployees)) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(160535, "存在没有申报数据的人,请重新核算这些人的薪资后再来申报个税"));
}
// 查询个税申报表的申报数据
Set<Long> taxDeclarationIds = SalaryEntityUtil.properties(taxDeclarations, TaxDeclarationPO::getId);
List<TaxDeclarationValuePO> taxDeclarationValues = taxDeclarationValueService.listByTaxDeclarationIds(taxDeclarationIds);
List<TaxDeclarationValuePO> taxDeclarationValues = getTaxDeclarationValueService(user).listByTaxDeclarationIds(taxDeclarationIds);
// 查询本税款所属期内报送成功的人员
List<EmployeeDeclarePO> employeeDeclares = employeeDeclareService.listByTaxCycleAndTaxAgentId(taxDeclareRecord.getTaxCycle(),
taxDeclareRecord.getTaxAgentId());
employeeDeclares = employeeDeclares.stream()
.filter(e -> Objects.equals(e.getDeclareStatus(), DeclareStatusEnum.DECLARE_SUCCESS.getValue()))
.collect(Collectors.toList());
List<EmployeeDeclarePO> employeeDeclares = getEmployeeDeclareService(user).listByTaxCycleAndTaxAgentId(taxDeclareRecord.getTaxCycle(), taxDeclareRecord.getTaxAgentId());
employeeDeclares = employeeDeclares.stream().filter(e -> Objects.equals(e.getDeclareStatus(), DeclareStatusEnum.DECLARE_SUCCESS.getValue())).collect(Collectors.toList());
TaxDeclarationApiConfigPO apiConfig = taxDeclareRequest.getTaxDeclarationApiConfig();
// 查询个税申报表的表头
List<TaxReportColumnPO> taxReportColumns = taxReportColumnService.listAll();
List<TaxReportColumnPO> taxReportColumns = getTaxReportColumnService(user).listAll();
// 注册的企业信息-->请求参数
Map<String, Object> requestParam = taxDeclareRequest.getRequestParam();
// 税款所属期
@ -675,9 +607,9 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe
taxDeclareRecord.setTaxDeclareStatus(TaxDeclareStatusEnum.DECLARING.getValue());
taxDeclareRecord.setRequestId(declareTaxResponse.getBody().getRequestId());
taxDeclareRecord.setUpdateTime(new Date());
taxDeclareRecordMapper.updateIgnoreNull(taxDeclareRecord);
getTaxDeclareRecordMapper().updateIgnoreNull(taxDeclareRecord);
// 删除个税申报申报失败的数据
taxDeclareFailService.deleteByTaxDeclareRecordIds(Collections.singleton(taxDeclareRecord.getId()));
getTaxDeclareFailService(user).deleteByTaxDeclareRecordIds(Collections.singleton(taxDeclareRecord.getId()));
// 记录日志
// TaxAgentPO taxAgent = taxDeclareRequest.getTaxAgent();
@ -721,14 +653,10 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(156509, "服务异常,接口返回数据有误"));
}
// 查询报送的人员
List<EmployeeDeclarePO> employeeDeclares = employeeDeclareService.listByTaxCycleAndTaxAgentId(
taxDeclareRecord.getTaxCycle(),
taxDeclareRecord.getTaxAgentId());
Map<String, EmployeeDeclarePO> employeeInfoMap = SalaryEntityUtil.convert2Map(employeeDeclares,
e -> e.getEmployeeName() + "-" + e.getCardNum());
List<EmployeeDeclarePO> employeeDeclares = getEmployeeDeclareService(user).listByTaxCycleAndTaxAgentId(taxDeclareRecord.getTaxCycle(), taxDeclareRecord.getTaxAgentId());
Map<String, EmployeeDeclarePO> employeeInfoMap = SalaryEntityUtil.convert2Map(employeeDeclares, e -> e.getEmployeeName() + "-" + e.getCardNum());
// 流量统计
TaxDeclarationApiBillingServiceImpl.ApiFlowUpdateWrapper apiFlowUpdateWrapper
= new TaxDeclarationApiBillingServiceImpl.ApiFlowUpdateWrapper(taxDeclareRecord.getTaxCycle(), apiConfig, EnumDeclareApiBusinessType.TAX_DECLARATION);
TaxDeclarationApiBillingServiceImpl.ApiFlowUpdateWrapper apiFlowUpdateWrapper = new TaxDeclarationApiBillingServiceImpl.ApiFlowUpdateWrapper(taxDeclareRecord.getTaxCycle(), apiConfig, EnumDeclareApiBusinessType.TAX_DECLARATION);
Date now = new Date();
List<String> errorMsg = Lists.newArrayList();
@ -745,19 +673,7 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe
String employeeName = Util.null2String(detail.get(0));
String cardNum = Util.null2String(detail.get(2));
String incomeCategoryCode = Util.null2String(detail.get(4));
TaxDeclareFailPO taxDeclareFailPO = TaxDeclareFailPO.builder()
.id(IdGenerator.generate())
.taxDeclareRecordId(taxDeclareRecord.getId())
.employeeName(employeeName)
.cardNum(cardNum)
.incomeCategory(incomeCategoryCode)
.errorMsg(msg)
.tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
.creator((long) user.getUID())
.deleteType(DeleteTypeEnum.NOT_DELETED.getValue())
.createTime(now)
.updateTime(now)
.build();
TaxDeclareFailPO taxDeclareFailPO = TaxDeclareFailPO.builder().id(IdGenerator.generate()).taxDeclareRecordId(taxDeclareRecord.getId()).employeeName(employeeName).cardNum(cardNum).incomeCategory(incomeCategoryCode).errorMsg(msg).tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY).creator((long) user.getUID()).deleteType(DeleteTypeEnum.NOT_DELETED.getValue()).createTime(now).updateTime(now).build();
taxDeclareFails.add(taxDeclareFailPO);
// 流量使用记录
EmployeeDeclarePO employeeDeclarePO = employeeInfoMap.get(employeeName + "-" + cardNum);
@ -790,8 +706,7 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe
taxDeclareRecord.setUpdateTime(new Date());
BigDecimal purePaidAmount = SalaryEntityUtil.empty2Zero(taxDeclareRecord.getTaxPurePaidAmount());
BigDecimal payAmount = SalaryEntityUtil.empty2Zero(taxDeclareRecord.getTaxPayAmount());
if (TaxDeclareStatusEnum.DECLARE_SUCCESS_PAID.equals(taxDeclareStatusEnum)
|| TaxDeclareStatusEnum.DECLARE_SUCCESS_NO_PAY.equals(taxDeclareStatusEnum)) {
if (TaxDeclareStatusEnum.DECLARE_SUCCESS_PAID.equals(taxDeclareStatusEnum) || TaxDeclareStatusEnum.DECLARE_SUCCESS_NO_PAY.equals(taxDeclareStatusEnum)) {
// 如果是已缴纳状态则更新已缴纳金额判断是否需要线下退税
if (purePaidAmount.compareTo(payAmount) > 0) {
taxDeclareRecord.setTaxPayAmount(payAmount.subtract(purePaidAmount).toString());
@ -808,10 +723,10 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe
taxDeclareRecord.setTaxPayAmount(payAmount.subtract(purePaidAmount).toString());
}
// 更新个税申报记录
taxDeclareRecordMapper.updateIgnoreNull(taxDeclareRecord);
getTaxDeclareRecordMapper().updateIgnoreNull(taxDeclareRecord);
// 如果申报失败
if (CollectionUtils.isNotEmpty(taxDeclareFails)) {
taxDeclareFailService.saveBatch(taxDeclareFails);
getTaxDeclareFailService(user).saveBatch(taxDeclareFails);
}
// 更新流量使用记录
employeeInfoMap.forEach((key, value) -> {
@ -819,7 +734,7 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe
flowDetailPO.setResultStatus(TaxAgentTaxReturnStatusEnum.SUCCESS.getValue());
apiFlowUpdateWrapper.getApiFlowDetailPOList().add(flowDetailPO);
});
taxDeclarationApiBillingService.updateApiFlowInfo(apiFlowUpdateWrapper);
getTaxDeclarationApiBillingService(user).updateApiFlowInfo(apiFlowUpdateWrapper);
// 记录日志
// TaxAgentPO taxAgent = taxDeclareRequest.getTaxAgent();
@ -844,8 +759,7 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(182701, "更正申报后不允许作废"));
}
// 只有申报成功无需缴款/申报成功未缴款的状态才能作废
if (!Objects.equals(taxDeclareRecord.getTaxDeclareStatus(), TaxDeclareStatusEnum.DECLARE_SUCCESS_NO_PAY.getValue())
&& !Objects.equals(taxDeclareRecord.getTaxDeclareStatus(), TaxDeclareStatusEnum.DECLARE_SUCCESS_UNPAID.getValue())) {
if (!Objects.equals(taxDeclareRecord.getTaxDeclareStatus(), TaxDeclareStatusEnum.DECLARE_SUCCESS_NO_PAY.getValue()) && !Objects.equals(taxDeclareRecord.getTaxDeclareStatus(), TaxDeclareStatusEnum.DECLARE_SUCCESS_UNPAID.getValue())) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(156497, "只有申报成功,无需缴款/申报成功,未缴款的状态才能作废"));
}
// 供应商信息
@ -878,7 +792,7 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe
taxDeclareRecord.setTaxDeclareStatus(TaxDeclareStatusEnum.DECLARE_CANCELLING.getValue());
taxDeclareRecord.setRequestId(declareTaxResponse.getBody().getRequestId());
taxDeclareRecord.setUpdateTime(new Date());
taxDeclareRecordMapper.updateIgnoreNull(taxDeclareRecord);
getTaxDeclareRecordMapper().updateIgnoreNull(taxDeclareRecord);
// // 记录日志
// TaxAgentPO taxAgent = taxDeclareRequest.getTaxAgent();
@ -898,8 +812,7 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe
public void getCancelFeedback(Long id, TaxDeclarationRateDTO taxDeclarationRate) {
TaxDeclareRequest taxDeclareRequest = buildTaxDeclareRequest(id);
TaxDeclareRecordPO taxDeclareRecord = taxDeclareRequest.getTaxDeclareRecord();
if (!Objects.equals(taxDeclareRecord.getTaxDeclareStatus(), TaxDeclareStatusEnum.DECLARE_CANCELLING.getValue())
|| StringUtils.isEmpty(taxDeclareRecord.getRequestId())) {
if (!Objects.equals(taxDeclareRecord.getTaxDeclareStatus(), TaxDeclareStatusEnum.DECLARE_CANCELLING.getValue()) || StringUtils.isEmpty(taxDeclareRecord.getRequestId())) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(156500, "请先点击「作废申报」后再来点击「申报反馈」按钮获取结果"));
}
// 供应商信息
@ -917,24 +830,20 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe
throw new SalaryRunTimeException(cancelDeclareFeedbackResponse.getHead().getMsg());
}
// 作废是否成功
CancelDeclareStatusEnum cancelDeclareStatusEnum = SalaryEnumUtil.enumMatchByValue(
SalaryEntityUtil.getIntValue(cancelDeclareFeedbackResponse.getBody().get("fkztbj"), 10), CancelDeclareStatusEnum.class);
CancelDeclareStatusEnum cancelDeclareStatusEnum = SalaryEnumUtil.enumMatchByValue(SalaryEntityUtil.getIntValue(cancelDeclareFeedbackResponse.getBody().get("fkztbj"), 10), CancelDeclareStatusEnum.class);
if (cancelDeclareStatusEnum == CancelDeclareStatusEnum.CANCEL_FAIL) {
String feedbackBody = Util.null2String(cancelDeclareFeedbackResponse.getBody().get("fknr")).replace("\\", "");
List<String> errorMsgList = JsonUtil.parseList(feedbackBody, Map.class).stream()
.map(e -> Util.null2String(e.get("msg")))
.collect(Collectors.toList());
List<String> errorMsgList = JsonUtil.parseList(feedbackBody, Map.class).stream().map(e -> Util.null2String(e.get("msg"))).collect(Collectors.toList());
taxDeclarationRate.setStatus(false).setMsg(SalaryI18nUtil.getI18nLabel(156508, "作废失败:") + StringUtils.join(errorMsgList, ","));
}
TaxDeclareStatusEnum taxDeclareStatusEnum = SalaryEnumUtil.enumMatchByValue(
SalaryEntityUtil.getIntValue(cancelDeclareFeedbackResponse.getBody().get("sbztbj"), 1), TaxDeclareStatusEnum.class);
TaxDeclareStatusEnum taxDeclareStatusEnum = SalaryEnumUtil.enumMatchByValue(SalaryEntityUtil.getIntValue(cancelDeclareFeedbackResponse.getBody().get("sbztbj"), 1), TaxDeclareStatusEnum.class);
if (taxDeclareStatusEnum == null) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(156509, "服务异常,接口返回数据有误"));
}
taxDeclareRecord.setTaxDeclareStatus(taxDeclareStatusEnum.getValue());
taxDeclareRecord.setRequestId("");
taxDeclareRecord.setUpdateTime(new Date());
taxDeclareRecordMapper.updateIgnoreNull(taxDeclareRecord);
getTaxDeclareRecordMapper().updateIgnoreNull(taxDeclareRecord);
// 记录日志
// TaxAgentPO taxAgent = taxDeclareRequest.getTaxAgent();
@ -954,11 +863,7 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe
public void updateDeclare(Long id) {
TaxDeclareRequest taxDeclareRequest = buildTaxDeclareRequest(id);
TaxDeclareRecordPO taxDeclareRecord = taxDeclareRequest.getTaxDeclareRecord();
List<Integer> taxDeclareStatusEnumValueList = Lists.newArrayList(
TaxDeclareStatusEnum.DECLARE_SUCCESS_UNPAID.getValue(),
TaxDeclareStatusEnum.DECLARE_SUCCESS_NO_PAY.getValue(),
TaxDeclareStatusEnum.DECLARE_SUCCESS_PAID.getValue(),
TaxDeclareStatusEnum.DECLARE_SUCCESS_PAYING.getValue());
List<Integer> taxDeclareStatusEnumValueList = Lists.newArrayList(TaxDeclareStatusEnum.DECLARE_SUCCESS_UNPAID.getValue(), TaxDeclareStatusEnum.DECLARE_SUCCESS_NO_PAY.getValue(), TaxDeclareStatusEnum.DECLARE_SUCCESS_PAID.getValue(), TaxDeclareStatusEnum.DECLARE_SUCCESS_PAYING.getValue());
if (!taxDeclareStatusEnumValueList.contains(taxDeclareRecord.getTaxDeclareStatus())) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(182702, "对不起,只有申报成功后才允许更正申报"));
}
@ -989,7 +894,7 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe
taxDeclareRecord.setTaxDeclareStatus(TaxDeclareStatusEnum.NOT_DECLARE.getValue());
taxDeclareRecord.setRequestId("");
taxDeclareRecord.setUpdateTime(new Date());
taxDeclareRecordMapper.updateIgnoreNull(taxDeclareRecord);
getTaxDeclareRecordMapper().updateIgnoreNull(taxDeclareRecord);
// 记录日志
// TaxAgentPO taxAgent = taxDeclareRequest.getTaxAgent();
@ -1051,7 +956,7 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe
private TaxDeclareRequest buildTaxDeclareRequest(Long id) {
// 查询供应商信息
TaxDeclarationApiConfigPO apiConfig = taxDeclarationApiConfigService.getConfig(true);
TaxDeclarationApiConfigPO apiConfig = getTaxDeclarationApiConfigService(user).getConfig(true);
if (apiConfig == null) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(160525, "接口流量不足,暂无法使用该功能,请先购买智能算薪接口流量"));
}
@ -1061,18 +966,15 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(156495, "参数异常,个税申报记录不存在或已被删除"));
}
// 查询个税扣缴义务人
TaxAgentPO taxAgent = taxAgentService.getById(taxDeclareRecord.getTaxAgentId());
TaxAgentPO taxAgent = getTaxAgentService(user).getById(taxDeclareRecord.getTaxAgentId());
// 查询个税扣缴义务人关联的企业信息
TaxAgentTaxReturnPO taxAgentTaxReturn = taxAgentTaxReturnService.getByTaxAgentId(taxDeclareRecord.getTaxAgentId());
TaxAgentTaxReturnPO taxAgentTaxReturn = getTaxAgentTaxReturnService(user).getByTaxAgentId(taxDeclareRecord.getTaxAgentId());
if (Objects.isNull(taxAgentTaxReturn) || !Objects.equals(taxAgentTaxReturn.getCheckStatus(), TaxAgentTaxReturnStatusEnum.SUCCESS.getValue())) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(156469, "个税扣缴义务人的报税信息验证未通过,请先维护好个税扣缴义务人的报税信息"));
}
// 注册的企业信息-->请求参数
Map<String, Object> requestParam = TaxAgentTaxReturnBO.convert2RequestMap(taxAgent, taxAgentTaxReturn);
return new TaxDeclareRequest().setTaxDeclarationApiConfig(apiConfig)
.setTaxAgent(taxAgent)
.setTaxDeclareRecord(taxDeclareRecord)
.setRequestParam(requestParam);
return new TaxDeclareRequest().setTaxDeclarationApiConfig(apiConfig).setTaxAgent(taxAgent).setTaxDeclareRecord(taxDeclareRecord).setRequestParam(requestParam);
}
}

View File

@ -1,5 +1,6 @@
package com.engine.salary.wrapper;
import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
import com.engine.salary.cache.SalaryCacheKey;
import com.engine.salary.entity.datacollection.DataCollectionEmployee;
@ -15,6 +16,7 @@ import com.engine.salary.enums.taxdeclaration.TaxDeclareStatusEnum;
import com.engine.salary.enums.taxdeclaration.TaxDeclareTypeEnum;
import com.engine.salary.exception.SalaryRunTimeException;
import com.engine.salary.service.*;
import com.engine.salary.service.impl.*;
import com.engine.salary.util.SalaryDateUtil;
import com.engine.salary.util.SalaryEntityUtil;
import com.engine.salary.util.SalaryEnumUtil;
@ -32,6 +34,7 @@ import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import org.springframework.stereotype.Component;
import weaver.general.Util;
import weaver.hrm.User;
import java.util.*;
import java.util.stream.Collectors;
@ -48,24 +51,33 @@ import java.util.stream.Collectors;
public class TaxDeclareRecordWrapper extends Service {
private TaxDeclareRecordService taxDeclareRecordService;
private TaxAgentService taxAgentService;
private SalaryEmployeeService hrmCommonEmployeeService;
private SalaryCacheService salaryCacheService;
private TaxDeclarationService taxDeclarationService;
private TaxDeclarationValueService taxDeclarationValueService;
private TaxDeclarationExcelService taxDeclarationExcelService;
private TaxDeclareEmployeeService taxDeclareEmployeeService;
private TaxDeclareFailService taxDeclareFailService;
private TaxDeclareRecordService getTaxDeclareRecordService(User user) {
return ServiceUtil.getService(TaxDeclareRecordServiceImpl.class, user);
}
private TaxAgentService getTaxAgentService(User user) {
return ServiceUtil.getService(TaxAgentServiceImpl.class, user);
}
private SalaryEmployeeService getSalaryEmployeeService(User user) {
return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user);
}
private SalaryCacheService getSalaryCacheService(User user) {
return ServiceUtil.getService(SalaryCacheServiceImpl.class, user);
}
private TaxDeclarationService getTaxDeclarationService(User user) {
return ServiceUtil.getService(TaxDeclarationServiceImpl.class, user);
}
private TaxDeclarationValueService getTaxDeclarationValueService(User user) {
return ServiceUtil.getService(TaxDeclarationValueServiceImpl.class, user);
}
private TaxDeclarationExcelService getTaxDeclarationExcelService(User user) {
return ServiceUtil.getService(TaxDeclarationExcelServiceImpl.class, user);
}
private TaxDeclareEmployeeService getTaxDeclareEmployeeService(User user) {
return ServiceUtil.getService(TaxDeclareEmployeeServiceImpl.class, user);
}
private TaxDeclareFailService getTaxDeclareFailService(User user) {
return ServiceUtil.getService(TaxDeclareFailServiceImpl.class, user);
}
/**
* 个税申报记录列表
*
@ -73,17 +85,17 @@ public class TaxDeclareRecordWrapper extends Service {
* @return
*/
public PageInfo<TaxDeclareRecordListDTO> listPage(TaxDeclarationListQueryParam queryParam) {
PageInfo<TaxDeclareRecordPO> page = taxDeclareRecordService.listPageByParam(queryParam);
PageInfo<TaxDeclareRecordPO> page = getTaxDeclareRecordService(user).listPageByParam(queryParam);
List<TaxDeclareRecordPO> list = page.getList();
PageInfo<TaxDeclareRecordListDTO> dtoPage = SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), TaxDeclareRecordListDTO.class);
if (CollectionUtils.isNotEmpty(list)) {
// 查询个税扣缴义务人
Set<Long> taxAgentIds = SalaryEntityUtil.properties(list, TaxDeclareRecordPO::getTaxAgentId);
List<TaxAgentPO> taxAgents = taxAgentService.listByIds(taxAgentIds);
List<TaxAgentPO> taxAgents = getTaxAgentService(user).listByIds(taxAgentIds);
// 查询人员姓名
List<Long> employeeIds = SalaryEntityUtil.properties(list, TaxDeclareRecordPO::getCreator, Collectors.toList());
List<DataCollectionEmployee> simpleEmployees = hrmCommonEmployeeService.getEmployeeByIds(employeeIds);
List<DataCollectionEmployee> simpleEmployees = getSalaryEmployeeService(user).getEmployeeByIds(employeeIds);
List<TaxDeclareRecordListDTO> dtoList = Lists.newArrayList();
Map<Long, String> taxAgentNameMap = SalaryEntityUtil.convert2Map(taxAgents, TaxAgentPO::getId, TaxAgentPO::getName);
@ -122,15 +134,15 @@ public class TaxDeclareRecordWrapper extends Service {
*/
public PageInfo listValuePage(TaxDeclarationValueListQueryParam queryParam) {
// 查询个税申报表
TaxDeclarationPO taxDeclaration = taxDeclarationService.getById(queryParam.getTaxDeclarationId());
TaxDeclarationPO taxDeclaration = getTaxDeclarationService(user).getById(queryParam.getTaxDeclarationId());
// 判断是否有权限查看
boolean canSee = taxDeclareRecordService.checkByAuthority(taxDeclaration);
boolean canSee = getTaxDeclareRecordService(user).checkByAuthority(taxDeclaration);
if (!canSee) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(156515, "对不起,您暂时没有权限查看"));
}
// 查询个税申报表详情
PageInfo<TaxDeclarationValuePO> page = taxDeclarationValueService.listPageByTaxDeclarationIds(queryParam,Collections.singleton(queryParam.getTaxDeclarationId()));
TaxDeclarationValueListDTO taxDeclarationValueListDTO = taxDeclarationValueService.convert2List(taxDeclaration, page.getList());
PageInfo<TaxDeclarationValuePO> page = getTaxDeclarationValueService(user).listPageByTaxDeclarationIds(queryParam,Collections.singleton(queryParam.getTaxDeclarationId()));
TaxDeclarationValueListDTO taxDeclarationValueListDTO = getTaxDeclarationValueService(user).convert2List(taxDeclaration, page.getList());
PageInfo<Map<String, Object>> dtoPage = new PageInfo();
dtoPage.setList(taxDeclarationValueListDTO.getData());
return dtoPage;
@ -164,41 +176,41 @@ public class TaxDeclareRecordWrapper extends Service {
*/
public PageInfo<FailEmployeeListDTO> listEmployeePage4Fail(AbnormalEmployeeListQueryParam queryParam) {
// 查询个税申报记录
TaxDeclareRecordPO taxDeclareRecord = taxDeclareRecordService.getById(queryParam.getTaxDeclareRecordId());
TaxDeclareRecordPO taxDeclareRecord = getTaxDeclareRecordService(user).getById(queryParam.getTaxDeclareRecordId());
// 查询申报失败的数据
List<TaxDeclareFailPO> taxDeclareFailPOPageInfo = taxDeclareFailService.listPageByTaxDeclareRecordIds(Collections.singleton(taxDeclareRecord.getId()));
List<TaxDeclareFailPO> taxDeclareFailPOPageInfo = getTaxDeclareFailService(user).listPageByTaxDeclareRecordIds(Collections.singleton(taxDeclareRecord.getId()));
// 转换成dto
PageInfo<FailEmployeeListDTO> dtoPage = SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), FailEmployeeListDTO.class);
dtoPage.setList(taxDeclareFailService.convert2FailEmployeeList(taxDeclareRecord, taxDeclareFailPOPageInfo));
dtoPage.setList(getTaxDeclareFailService(user).convert2FailEmployeeList(taxDeclareRecord, taxDeclareFailPOPageInfo));
// 转成前端所需的格式
return dtoPage;
}
private PageInfo<AbnormalEmployeeListDTO> listEmployeePage(String key, AbnormalEmployeeListQueryParam queryParam) {
// 查询个税申报记录
TaxDeclareRecordPO taxDeclareRecord = taxDeclareRecordService.getById(queryParam.getTaxDeclareRecordId());
TaxDeclareRecordPO taxDeclareRecord = getTaxDeclareRecordService(user).getById(queryParam.getTaxDeclareRecordId());
queryParam.setTaxAgentId(taxDeclareRecord.getTaxAgentId());
queryParam.setTaxCycle(taxDeclareRecord.getTaxCycle());
if (StringUtils.isEmpty(queryParam.getKeyword())) {
// 查询个税申报记录的人员
PageInfo<TaxDeclareEmployeePO> page = SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), TaxDeclareEmployeePO.class);
if (StringUtils.equals("NotDeclare", key)) {
page = taxDeclareEmployeeService.listPage4NotDeclareByParam(queryParam);
page = getTaxDeclareEmployeeService(user).listPage4NotDeclareByParam(queryParam);
} else if (StringUtils.equals("NoValue", key)) {
page = taxDeclareEmployeeService.listPage4NoValueByParam(queryParam);
page = getTaxDeclareEmployeeService(user).listPage4NoValueByParam(queryParam);
}
PageInfo<AbnormalEmployeeListDTO> dtoPage = SalaryPageUtil.buildPage(queryParam.getCurrent(), queryParam.getPageSize(), AbnormalEmployeeListDTO.class);
dtoPage.setList(taxDeclareEmployeeService.convert2AbnormalEmployeeList(taxDeclareRecord, page.getList()));
dtoPage.setList(getTaxDeclareEmployeeService(user).convert2AbnormalEmployeeList(taxDeclareRecord, page.getList()));
return dtoPage;
} else {
// 查询条件中包含"keyword"不好通过SQL分页所以在内存中分页
List<TaxDeclareEmployeePO> taxDeclareEmployees = Collections.emptyList();
if (StringUtils.equals("NotDeclare", key)) {
taxDeclareEmployees = taxDeclareEmployeeService.list4NotDeclareByParam(queryParam);
taxDeclareEmployees = getTaxDeclareEmployeeService(user).list4NotDeclareByParam(queryParam);
} else if (StringUtils.equals("NoValue", key)) {
taxDeclareEmployees = taxDeclareEmployeeService.list4NoValueByParam(queryParam);
taxDeclareEmployees = getTaxDeclareEmployeeService(user).list4NoValueByParam(queryParam);
}
List<AbnormalEmployeeListDTO> dtos = taxDeclareEmployeeService.convert2AbnormalEmployeeList(taxDeclareRecord, taxDeclareEmployees)
List<AbnormalEmployeeListDTO> dtos = getTaxDeclareEmployeeService(user).convert2AbnormalEmployeeList(taxDeclareRecord, taxDeclareEmployees)
.stream()
.filter(e -> StringUtils.contains(e.getEmployeeName(), queryParam.getKeyword())
|| StringUtils.contains(e.getJobNum(), queryParam.getKeyword())
@ -219,8 +231,8 @@ public class TaxDeclareRecordWrapper extends Service {
// TaxDeclareRecordFormDTO formDTO = new TaxDeclareRecordFormDTO();
// formDTO.setTaxAgentRange(TaxAgentRangeEnum.SELECT_TAX_AGENT);
// // 判断当前是否开启了分权
// Boolean openDevolution = taxAgentService.isOpenDevolution();
// Boolean isChief = taxAgentService.isChief((long)user.getUID());
// Boolean openDevolution = getTaxAgentService(user).isOpenDevolution();
// Boolean isChief = getTaxAgentService(user).isChief((long)user.getUID());
// // 转换成前端所需的数据格式
// WeaForm weaForm = SalaryFormatUtil.<TaxDeclareRecordFormDTO>getInstance().buildForm(TaxDeclareRecordFormDTO.class, formDTO);
// weaForm.getItems().forEach((k, v) -> {
@ -249,9 +261,9 @@ public class TaxDeclareRecordWrapper extends Service {
*/
public List<TaxDeclarationTabDTO> getTaxDeclarationTab(Long id) {
// 查询个税申报记录
TaxDeclareRecordPO taxDeclareRecord = taxDeclareRecordService.getById(id);
TaxDeclareRecordPO taxDeclareRecord = getTaxDeclareRecordService(user).getById(id);
// 查询个税申报记录下的个税申报表
List<TaxDeclarationPO> taxDeclarations = taxDeclarationService.listByTaxCycleAndTaxAgentIds(SalaryDateUtil.localDate2YearMonth(taxDeclareRecord.getTaxCycle()),
List<TaxDeclarationPO> taxDeclarations = getTaxDeclarationService(user).listByTaxCycleAndTaxAgentIds(SalaryDateUtil.localDate2YearMonth(taxDeclareRecord.getTaxCycle()),
Collections.singleton(taxDeclareRecord.getTaxAgentId()));
taxDeclarations = taxDeclarations.stream()
.filter(e -> Objects.equals(e.getControlView(), 0) || Objects.equals(e.getCreator(), (long)user.getUID()))
@ -279,7 +291,7 @@ public class TaxDeclareRecordWrapper extends Service {
*/
public TaxDeclarationInfoDTO getTaxDeclarationInfoById(Long id) {
// 查询个税申报表
TaxDeclareRecordPO taxDeclareRecord = taxDeclareRecordService.getById(id);
TaxDeclareRecordPO taxDeclareRecord = getTaxDeclareRecordService(user).getById(id);
if (Objects.isNull(taxDeclareRecord)) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98877, "个税申报表不存在或已删除"));
}
@ -288,13 +300,13 @@ public class TaxDeclareRecordWrapper extends Service {
.setTaxAgentId(taxDeclareRecord.getTaxAgentId())
.setTaxCycle(taxDeclareRecord.getTaxCycle());
// 查询是否存在有未报送的人
List<TaxDeclareEmployeePO> notDeclareTaxDeclareEmployees = taxDeclareEmployeeService.list4NotDeclareByParam(queryParam);
List<TaxDeclareEmployeePO> notDeclareTaxDeclareEmployees = getTaxDeclareEmployeeService(user).list4NotDeclareByParam(queryParam);
// 查询是否存在没有申报数据的人
List<TaxDeclareEmployeePO> noValueTaxDeclareEmployees = taxDeclareEmployeeService.list4NoValueByParam(queryParam);
List<TaxDeclareEmployeePO> noValueTaxDeclareEmployees = getTaxDeclareEmployeeService(user).list4NoValueByParam(queryParam);
// 查询是否存在申报失败的人
List<TaxDeclareFailPO> taxDeclareFails = taxDeclareFailService.listByTaxDeclareRecordIds(Collections.singleton(taxDeclareRecord.getId()));
List<TaxDeclareFailPO> taxDeclareFails = getTaxDeclareFailService(user).listByTaxDeclareRecordIds(Collections.singleton(taxDeclareRecord.getId()));
// 查询个税扣缴义务人
TaxAgentPO taxAgentPO = taxAgentService.getById(taxDeclareRecord.getTaxAgentId());
TaxAgentPO taxAgentPO = getTaxAgentService(user).getById(taxDeclareRecord.getTaxAgentId());
TaxDeclareTypeEnum taxDeclareTypeEnum = SalaryEnumUtil.enumMatchByValue(taxDeclareRecord.getTaxDeclareType(), TaxDeclareTypeEnum.class);
TaxDeclareStatusEnum taxDeclareStatusEnum = SalaryEnumUtil.enumMatchByValue(taxDeclareRecord.getTaxDeclareStatus(), TaxDeclareStatusEnum.class);
return TaxDeclarationInfoDTO.builder()
@ -323,12 +335,12 @@ public class TaxDeclareRecordWrapper extends Service {
TaxDeclarationRateDTO taxDeclarationRate = new TaxDeclarationRateDTO().setStatus(true)
.setIndex(Util.null2String(IdGenerator.generate()))
.setMsg(SalaryI18nUtil.getI18nLabel(95836, "生成申报表"));
salaryCacheService.set(SalaryCacheKey.TAX_DECLARATION + taxDeclarationRate.getIndex(), taxDeclarationRate);
getSalaryCacheService(user).set(SalaryCacheKey.TAX_DECLARATION + taxDeclarationRate.getIndex(), taxDeclarationRate);
LocalRunnable localRunnable = new LocalRunnable() {
@Override
public void execute() {
try {
taxDeclareRecordService.save(saveParam);
getTaxDeclareRecordService(user).save(saveParam);
taxDeclarationRate.setStatus(true).setFinish(true);
} catch (SalaryRunTimeException e) {
taxDeclarationRate.setStatus(false).setFinish(true).setMsg(e.getMessage());
@ -336,7 +348,7 @@ public class TaxDeclareRecordWrapper extends Service {
log.error("个税申报表生成报错:{}", e.getMessage(), e);
taxDeclarationRate.setStatus(false).setFinish(true).setMsg(SalaryI18nUtil.getI18nLabel(187276, "个税申报表生成报错:") + e.getMessage());
} finally {
salaryCacheService.set(SalaryCacheKey.TAX_DECLARATION + taxDeclarationRate.getIndex(), taxDeclarationRate);
getSalaryCacheService(user).set(SalaryCacheKey.TAX_DECLARATION + taxDeclarationRate.getIndex(), taxDeclarationRate);
}
}
};
@ -350,7 +362,7 @@ public class TaxDeclareRecordWrapper extends Service {
* @param id
*/
public void updateIcon(Long id) {
taxDeclareRecordService.updateIcon(id, NumberUtils.INTEGER_ZERO);
getTaxDeclareRecordService(user).updateIcon(id, NumberUtils.INTEGER_ZERO);
}
/**
@ -359,7 +371,7 @@ public class TaxDeclareRecordWrapper extends Service {
* @param ids
*/
public void delete(Collection<Long> ids) {
taxDeclareRecordService.deleteByIds(ids);
getTaxDeclareRecordService(user).deleteByIds(ids);
}
/**
@ -369,7 +381,7 @@ public class TaxDeclareRecordWrapper extends Service {
* @return
*/
public TaxDeclarationRateDTO getRate(String index) {
return salaryCacheService.get(SalaryCacheKey.TAX_DECLARATION + index);
return getSalaryCacheService(user).get(SalaryCacheKey.TAX_DECLARATION + index);
}
/**
@ -381,12 +393,12 @@ public class TaxDeclareRecordWrapper extends Service {
checkBefore(id);
TaxDeclarationRateDTO taxDeclarationRate = new TaxDeclarationRateDTO().setStatus(true).setIndex(Util.null2String(id))
.setMsg(SalaryI18nUtil.getI18nLabel(156454, "在线申报"));
salaryCacheService.set(SalaryCacheKey.TAX_DECLARATION + taxDeclarationRate.getIndex(), taxDeclarationRate);
getSalaryCacheService(user).set(SalaryCacheKey.TAX_DECLARATION + taxDeclarationRate.getIndex(), taxDeclarationRate);
LocalRunnable localRunnable = new LocalRunnable() {
@Override
public void execute() {
try {
taxDeclareRecordService.declare(id);
getTaxDeclareRecordService(user).declare(id);
taxDeclarationRate.setFinish(true);
} catch (SalaryRunTimeException e) {
taxDeclarationRate.setStatus(false).setFinish(true).setMsg(e.getMessage());
@ -394,7 +406,7 @@ public class TaxDeclareRecordWrapper extends Service {
log.error("在线申报失败:{}", e.getMessage(), e);
taxDeclarationRate.setStatus(false).setFinish(true).setMsg(SalaryI18nUtil.getI18nLabel(187274, "在线申报失败:") + e.getMessage());
} finally {
salaryCacheService.set(SalaryCacheKey.TAX_DECLARATION + taxDeclarationRate.getIndex(), taxDeclarationRate);
getSalaryCacheService(user).set(SalaryCacheKey.TAX_DECLARATION + taxDeclarationRate.getIndex(), taxDeclarationRate);
}
}
};
@ -411,12 +423,12 @@ public class TaxDeclareRecordWrapper extends Service {
checkBefore(id);
TaxDeclarationRateDTO taxDeclarationRate = new TaxDeclarationRateDTO().setStatus(true).setIndex(Util.null2String(id))
.setMsg(SalaryI18nUtil.getI18nLabel(182680, "获取申报反馈"));
salaryCacheService.set(SalaryCacheKey.TAX_DECLARATION + taxDeclarationRate.getIndex(), taxDeclarationRate);
getSalaryCacheService(user).set(SalaryCacheKey.TAX_DECLARATION + taxDeclarationRate.getIndex(), taxDeclarationRate);
LocalRunnable localRunnable = new LocalRunnable() {
@Override
public void execute() {
try {
taxDeclareRecordService.getDeclareFeedback(id, taxDeclarationRate);
getTaxDeclareRecordService(user).getDeclareFeedback(id, taxDeclarationRate);
taxDeclarationRate.setFinish(true);
} catch (SalaryRunTimeException e) {
taxDeclarationRate.setStatus(false).setFinish(true).setMsg(e.getMessage());
@ -424,7 +436,7 @@ public class TaxDeclareRecordWrapper extends Service {
log.error("获取申报反馈失败:{}", e.getMessage(), e);
taxDeclarationRate.setStatus(false).setFinish(true).setMsg(SalaryI18nUtil.getI18nLabel(187255, "获取申报反馈失败:") + e.getMessage());
} finally {
salaryCacheService.set(SalaryCacheKey.TAX_DECLARATION + taxDeclarationRate.getIndex(), taxDeclarationRate);
getSalaryCacheService(user).set(SalaryCacheKey.TAX_DECLARATION + taxDeclarationRate.getIndex(), taxDeclarationRate);
}
}
};
@ -441,12 +453,12 @@ public class TaxDeclareRecordWrapper extends Service {
checkBefore(id);
TaxDeclarationRateDTO taxDeclarationRate = new TaxDeclarationRateDTO().setStatus(true).setIndex(Util.null2String(id))
.setMsg(SalaryI18nUtil.getI18nLabel(158842, "作废申报"));
salaryCacheService.set(SalaryCacheKey.TAX_DECLARATION + taxDeclarationRate.getIndex(), taxDeclarationRate);
getSalaryCacheService(user).set(SalaryCacheKey.TAX_DECLARATION + taxDeclarationRate.getIndex(), taxDeclarationRate);
LocalRunnable localRunnable = new LocalRunnable() {
@Override
public void execute() {
try {
taxDeclareRecordService.cancelDeclare(id);
getTaxDeclareRecordService(user).cancelDeclare(id);
taxDeclarationRate.setFinish(true);
} catch (SalaryRunTimeException e) {
taxDeclarationRate.setStatus(false).setFinish(true).setMsg(e.getMessage());
@ -454,7 +466,7 @@ public class TaxDeclareRecordWrapper extends Service {
log.error("作废申报失败:{}", e.getMessage(), e);
taxDeclarationRate.setStatus(false).setFinish(true).setMsg(SalaryI18nUtil.getI18nLabel(187272, "作废申报失败:") + e.getMessage());
} finally {
salaryCacheService.set(SalaryCacheKey.TAX_DECLARATION + taxDeclarationRate.getIndex(), taxDeclarationRate);
getSalaryCacheService(user).set(SalaryCacheKey.TAX_DECLARATION + taxDeclarationRate.getIndex(), taxDeclarationRate);
}
}
};
@ -471,12 +483,12 @@ public class TaxDeclareRecordWrapper extends Service {
checkBefore(id);
TaxDeclarationRateDTO taxDeclarationRate = new TaxDeclarationRateDTO().setStatus(true).setIndex(Util.null2String(id))
.setMsg(SalaryI18nUtil.getI18nLabel(182681, "获取作废申报反馈"));
salaryCacheService.set(SalaryCacheKey.TAX_DECLARATION + taxDeclarationRate.getIndex(), taxDeclarationRate);
getSalaryCacheService(user).set(SalaryCacheKey.TAX_DECLARATION + taxDeclarationRate.getIndex(), taxDeclarationRate);
LocalRunnable localRunnable = new LocalRunnable() {
@Override
public void execute() {
try {
taxDeclareRecordService.getCancelFeedback(id, taxDeclarationRate);
getTaxDeclareRecordService(user).getCancelFeedback(id, taxDeclarationRate);
taxDeclarationRate.setFinish(true);
} catch (SalaryRunTimeException e) {
taxDeclarationRate.setStatus(false).setFinish(true).setMsg(e.getMessage());
@ -484,7 +496,7 @@ public class TaxDeclareRecordWrapper extends Service {
log.error("获取作废反馈结果失败:{}", e.getMessage(), e);
taxDeclarationRate.setStatus(false).setFinish(true).setMsg(SalaryI18nUtil.getI18nLabel(187270, "获取作废反馈结果失败:") + e.getMessage());
} finally {
salaryCacheService.set(SalaryCacheKey.TAX_DECLARATION + taxDeclarationRate.getIndex(), taxDeclarationRate);
getSalaryCacheService(user).set(SalaryCacheKey.TAX_DECLARATION + taxDeclarationRate.getIndex(), taxDeclarationRate);
}
}
};
@ -502,12 +514,12 @@ public class TaxDeclareRecordWrapper extends Service {
checkBefore(id);
TaxDeclarationRateDTO taxDeclarationRate = new TaxDeclarationRateDTO().setStatus(true).setIndex(Util.null2String(id))
.setMsg(SalaryI18nUtil.getI18nLabel(177637, "更正申报"));
salaryCacheService.set(SalaryCacheKey.TAX_DECLARATION + taxDeclarationRate.getIndex(), taxDeclarationRate);
getSalaryCacheService(user).set(SalaryCacheKey.TAX_DECLARATION + taxDeclarationRate.getIndex(), taxDeclarationRate);
LocalRunnable localRunnable = new LocalRunnable() {
@Override
public void execute() {
try {
taxDeclareRecordService.updateDeclare(id);
getTaxDeclareRecordService(user).updateDeclare(id);
taxDeclarationRate.setFinish(true);
} catch (SalaryRunTimeException e) {
taxDeclarationRate.setStatus(false).setFinish(true).setMsg(e.getMessage());
@ -515,7 +527,7 @@ public class TaxDeclareRecordWrapper extends Service {
log.error("更正申报失败:{}", e.getMessage(), e);
taxDeclarationRate.setStatus(false).setFinish(true).setMsg(SalaryI18nUtil.getI18nLabel(187269, "更正申报失败:") + e.getMessage());
} finally {
salaryCacheService.set(SalaryCacheKey.TAX_DECLARATION + taxDeclarationRate.getIndex(), taxDeclarationRate);
getSalaryCacheService(user).set(SalaryCacheKey.TAX_DECLARATION + taxDeclarationRate.getIndex(), taxDeclarationRate);
}
}
};
@ -530,7 +542,7 @@ public class TaxDeclareRecordWrapper extends Service {
* @return
*/
public String queryDeclareStatus(Long id) {
return taxDeclareRecordService.queryDeclareStatus(id);
return getTaxDeclareRecordService(user).queryDeclareStatus(id);
}
/**
@ -540,7 +552,7 @@ public class TaxDeclareRecordWrapper extends Service {
* @return
*/
public String queryCompanyIncomes(Long id) {
return taxDeclareRecordService.queryCompanyIncomes(id);
return getTaxDeclareRecordService(user).queryCompanyIncomes(id);
}
/**
@ -553,12 +565,12 @@ public class TaxDeclareRecordWrapper extends Service {
checkBefore(id);
TaxDeclarationRateDTO taxDeclarationRate = new TaxDeclarationRateDTO().setStatus(true).setIndex(Util.null2String(id))
.setMsg(SalaryI18nUtil.getI18nLabel(156447, "刷新数据"));
salaryCacheService.set(SalaryCacheKey.TAX_DECLARATION + taxDeclarationRate.getIndex(), taxDeclarationRate);
getSalaryCacheService(user).set(SalaryCacheKey.TAX_DECLARATION + taxDeclarationRate.getIndex(), taxDeclarationRate);
LocalRunnable localRunnable = new LocalRunnable() {
@Override
public void execute() {
try {
taxDeclareRecordService.refreshData(id);
getTaxDeclareRecordService(user).refreshData(id);
taxDeclarationRate.setFinish(true);
} catch (SalaryRunTimeException e) {
taxDeclarationRate.setStatus(false).setFinish(true).setMsg(e.getMessage());
@ -566,7 +578,7 @@ public class TaxDeclareRecordWrapper extends Service {
log.error("刷新数据失败:{}", e.getMessage(), e);
taxDeclarationRate.setStatus(false).setFinish(true).setMsg(SalaryI18nUtil.getI18nLabel(187268, "刷新数据失败:") + e.getMessage());
} finally {
salaryCacheService.set(SalaryCacheKey.TAX_DECLARATION + taxDeclarationRate.getIndex(), taxDeclarationRate);
getSalaryCacheService(user).set(SalaryCacheKey.TAX_DECLARATION + taxDeclarationRate.getIndex(), taxDeclarationRate);
}
}
};
@ -575,7 +587,7 @@ public class TaxDeclareRecordWrapper extends Service {
}
private void checkBefore(Long id) {
TaxDeclarationRateDTO taxDeclarationRate = salaryCacheService.get(SalaryCacheKey.TAX_DECLARATION + Util.null2String(id));
TaxDeclarationRateDTO taxDeclarationRate = getSalaryCacheService(user).get(SalaryCacheKey.TAX_DECLARATION + Util.null2String(id));
if (taxDeclarationRate != null && !taxDeclarationRate.isFinish()) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(182691, "当前正处于「{0}」中,请稍后再试").replace("{0}", taxDeclarationRate.getMsg()));
}
@ -595,7 +607,7 @@ public class TaxDeclareRecordWrapper extends Service {
// LocalRunnable localRunnable = new LocalRunnable() {
// @Override
// public void execute() {
// taxDeclarationExcelService.exportTaxDeclarationValue(excelExportParam, queryParam, simpleEmployee);
// getTaxDeclarationExcelService(user).exportTaxDeclarationValue(excelExportParam, queryParam, simpleEmployee);
// }
// };
// ThreadPoolUtil.fixedPoolExecute(ModulePoolEnum.OTHER, "exportTaxDeclarationValue", localRunnable);
@ -617,7 +629,7 @@ public class TaxDeclareRecordWrapper extends Service {
// LocalRunnable localRunnable = new LocalRunnable() {
// @Override
// public void execute() {
// taxDeclarationExcelService.exportEmployee4NotDeclare(excelExportParam, queryParam, simpleEmployee);
// getTaxDeclarationExcelService(user).exportEmployee4NotDeclare(excelExportParam, queryParam, simpleEmployee);
// }
// };
// ThreadPoolUtil.fixedPoolExecute(ModulePoolEnum.OTHER, "exportEmployee4NotDeclare", localRunnable);
@ -639,7 +651,7 @@ public class TaxDeclareRecordWrapper extends Service {
// LocalRunnable localRunnable = new LocalRunnable() {
// @Override
// public void execute() {
// taxDeclarationExcelService.exportEmployee4NoValue(excelExportParam, queryParam, simpleEmployee);
// getTaxDeclarationExcelService(user).exportEmployee4NoValue(excelExportParam, queryParam, simpleEmployee);
// }
// };
// ThreadPoolUtil.fixedPoolExecute(ModulePoolEnum.OTHER, "exportEmployee4NoValue", localRunnable);
@ -661,7 +673,7 @@ public class TaxDeclareRecordWrapper extends Service {
// LocalRunnable localRunnable = new LocalRunnable() {
// @Override
// public void execute() {
// taxDeclarationExcelService.exportEmployee4Fail(excelExportParam, queryParam, simpleEmployee);
// getTaxDeclarationExcelService(user).exportEmployee4Fail(excelExportParam, queryParam, simpleEmployee);
// }
// };
// ThreadPoolUtil.fixedPoolExecute(ModulePoolEnum.OTHER, "exportEmployee4Fail", localRunnable);