处理外籍人员

This commit is contained in:
钱涛 2024-04-01 17:07:36 +08:00
parent 8e2ff975a9
commit 57a0030cc8
5 changed files with 65 additions and 67 deletions

View File

@ -1,5 +1,6 @@
package com.engine.salary.entity.taxdeclaration.param;
import com.engine.salary.enums.salarysob.DeclareReportTypeEnum;
import lombok.Data;
/**
@ -18,6 +19,7 @@ public class TaxDeclareRecordParam {
/**
* 申报类型
* @see DeclareReportTypeEnum
*/
private Integer reportType;
}

View File

@ -194,5 +194,5 @@ public interface TaxDeclareRecordService {
void updateById(TaxDeclareRecordPO taxDeclareRecord);
void getTaxReportType(Long id);
List<TaxDeclareStatusPO> getTaxReports(Long id);
}

View File

@ -642,22 +642,7 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe
DeclareReportTypeEnum declareReportType = DeclareReportTypeEnum.parseByValue(reportType);
TaxDeclareStatusPO declareStatus = getTaxDeclareStatus(id, reportType);
if (declareStatus == null) {
declareStatus = TaxDeclareStatusPO.builder()
.id(IdGenerator.generate())
.taxDeclareRecordId(id)
.reportType(reportType)
.taxDeclareType(TaxDeclareTypeEnum.NORMAL_DECLARE.getValue())
.taxDeclareStatus(TaxDeclareStatusEnum.NOT_DECLARE.getValue())
.taxDeclareErrorMsg("")
.personNum(0)
.taxPayAmount("")
.taxPaidAmount("")
.taxPurePaidAmount("")
.deleteType(0)
.build();
getTaxDeclareStatusMapper().insertIgnoreNull(declareStatus);
}
TaxDeclareRequest taxDeclareRequest = buildTaxDeclareRequest(id);
TaxDeclareRecordPO taxDeclareRecord = taxDeclareRequest.getTaxDeclareRecord();
@ -757,7 +742,7 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe
}
@Override
public List<TaxDeclareStatusPO> getTaxDeclareStatusByTaxDeclareRecordId(Long taxDeclareRecordId) {
public List<TaxDeclareStatusPO> getTaxDeclareStatusByTaxDeclareRecordId(Long taxDeclareRecordId) {
return getTaxDeclareStatusMapper().listSome(TaxDeclareStatusPO.builder().taxDeclareRecordId(taxDeclareRecordId).build());
}
@ -1200,28 +1185,7 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe
}
@Override
public void getTaxReportType(Long id) {
List<TaxDeclareStatusPO> taxDeclareStatusByTaxDeclareRecordId = getTaxDeclareStatusByTaxDeclareRecordId(id);
DeclareReportTypeEnum declareReportType = DeclareReportTypeEnum.parseByValue(reportType);
TaxDeclareStatusPO declareStatus = getTaxDeclareStatus(id, reportType);
if (declareStatus == null) {
declareStatus = TaxDeclareStatusPO.builder()
.id(IdGenerator.generate())
.taxDeclareRecordId(id)
.reportType(reportType)
.taxDeclareType(TaxDeclareTypeEnum.NORMAL_DECLARE.getValue())
.taxDeclareStatus(TaxDeclareStatusEnum.NOT_DECLARE.getValue())
.taxDeclareErrorMsg("")
.personNum(0)
.taxPayAmount("")
.taxPaidAmount("")
.taxPurePaidAmount("")
.deleteType(0)
.build();
getTaxDeclareStatusMapper().insertIgnoreNull(declareStatus);
}
public List<TaxDeclareStatusPO> getTaxReports(Long id) {
// 查询个税申报记录
TaxDeclareRecordPO taxDeclareRecord = getById(id);
@ -1235,9 +1199,37 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(156494, "当前无可申报的数据"));
}
taxDeclarations.forEach(taxDeclarationPO -> {
Set<Integer> reportTypes = new HashSet<>();
taxDeclarations.forEach(taxDeclarationPO -> {
reportTypes.add(IncomeCategoryEnum.parseByValue(taxDeclarationPO.getIncomeCategory()).getReportType().getValue());
});
List<TaxDeclareStatusPO> statuses = new ArrayList<>();
reportTypes.forEach(reportType -> {
TaxDeclareStatusPO declareStatus = getTaxDeclareStatus(id, reportType);
if (declareStatus == null) {
declareStatus = TaxDeclareStatusPO.builder()
.id(IdGenerator.generate())
.taxDeclareRecordId(id)
.reportType(reportType)
.taxDeclareType(taxDeclareRecord.getTaxDeclareType())
.taxDeclareStatus(taxDeclareRecord.getTaxDeclareStatus())
.taxDeclareErrorMsg(taxDeclareRecord.getTaxDeclareErrorMsg())
.personNum(taxDeclareRecord.getPersonNum())
.taxPayAmount(taxDeclareRecord.getTaxPayAmount())
.taxPaidAmount(taxDeclareRecord.getTaxPaidAmount())
.taxPurePaidAmount(taxDeclareRecord.getTaxPaidAmount())
.deleteType(0)
.build();
getTaxDeclareStatusMapper().insertIgnoreNull(declareStatus);
}
statuses.add(declareStatus);
});
return statuses;
}

View File

@ -3,6 +3,7 @@ package com.engine.salary.web;
import com.engine.common.util.ServiceUtil;
import com.engine.salary.entity.taxdeclaration.dto.*;
import com.engine.salary.entity.taxdeclaration.param.*;
import com.engine.salary.entity.taxdeclaration.po.TaxDeclareStatusPO;
import com.engine.salary.enums.salarysob.IncomeCategoryEnum;
import com.engine.salary.service.TaxDeclarationExcelService;
import com.engine.salary.service.TaxDeclarationService;
@ -98,25 +99,24 @@ public class TaxDeclarationController {
* @return
*/
@GET
@Path("/getTaxReportType")
@Path("/getTaxReports")
@Produces(MediaType.APPLICATION_JSON)
public String getTaxReportType(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "id") Long id) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<Long, Object>(user).run(getTaxDeclareRecordWrapper(user)::getTaxReportType, id);
return new ResponseResult<Long, List<TaxDeclareStatusPO>>(user).run(getTaxDeclareRecordWrapper(user)::getTaxReports, id);
}
/**
* 个税申报表相关信息
*
* @param id 个税申报记录id
* @return
*/
@GET
@POST
@Path("/getTaxDeclarationInfo")
@Produces(MediaType.APPLICATION_JSON)
public String getTaxDeclarationInfo(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "id") Long id) {
public String getTaxDeclarationInfo(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxDeclareRecordParam param) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<Long, TaxDeclarationInfoDTO>(user).run(getTaxDeclareRecordWrapper(user)::getTaxDeclarationInfoById, id);
return new ResponseResult<TaxDeclareRecordParam, TaxDeclarationInfoDTO>(user).run(getTaxDeclareRecordWrapper(user)::getTaxDeclarationInfoById, param);
}
/**
@ -179,15 +179,14 @@ public class TaxDeclarationController {
/**
* 获取个税申报记录下的个税申报表TAB
*
* @param id 个税申报记录id
* @return
*/
@GET
@POST
@Path("/getTaxDeclarationTab")
@Produces(MediaType.APPLICATION_JSON)
public String getTaxDeclarationTab(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "id") Long id) {
public String getTaxDeclarationTab(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxDeclareRecordParam param) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<Long, List<TaxDeclarationTabDTO>>(user).run(getTaxDeclareRecordWrapper(user)::getTaxDeclarationTab, id);
return new ResponseResult<TaxDeclareRecordParam, List<TaxDeclarationTabDTO>>(user).run(getTaxDeclareRecordWrapper(user)::getTaxDeclarationTab, param);
}
/**
@ -199,7 +198,7 @@ public class TaxDeclarationController {
@POST
@Path("/addTaxDeclaration")
@Produces(MediaType.APPLICATION_JSON)
public String addTaxDeclarationTab(@Context HttpServletRequest request, @Context HttpServletResponse response, TaxDeclarationAddParam param) {
public String addTaxDeclarationTab(@Context HttpServletRequest request, @Context HttpServletResponse response,@RequestBody TaxDeclarationAddParam param) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<TaxDeclarationAddParam, String>(user).run(getTaxDeclareRecordWrapper(user)::addTaxDeclaration, param);
}
@ -215,7 +214,7 @@ public class TaxDeclarationController {
@POST
@Path("/deleteTaxDeclaration")
@Produces(MediaType.APPLICATION_JSON)
public String deleteTaxDeclaration(@Context HttpServletRequest request, @Context HttpServletResponse response, TaxDeclarationDeleteParam param) {
public String deleteTaxDeclaration(@Context HttpServletRequest request, @Context HttpServletResponse response,@RequestBody TaxDeclarationDeleteParam param) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<TaxDeclarationDeleteParam, String>(user).run(getTaxDeclareRecordWrapper(user)::deleteTaxDeclaration, param);
}

View File

@ -17,6 +17,7 @@ import com.engine.salary.enums.OperateTypeEnum;
import com.engine.salary.enums.employeedeclare.CardTypeEnum;
import com.engine.salary.enums.employeedeclare.DeclareStatusEnum;
import com.engine.salary.enums.employeedeclare.EmploymentStatusEnum;
import com.engine.salary.enums.salarysob.DeclareReportTypeEnum;
import com.engine.salary.enums.salarysob.IncomeCategoryEnum;
import com.engine.salary.enums.taxdeclaration.TaxDeclareStatusEnum;
import com.engine.salary.enums.taxdeclaration.TaxDeclareTypeEnum;
@ -287,18 +288,20 @@ public class TaxDeclareRecordWrapper extends Service {
/**
* 获取个税申报记录下的个税申报表TAB
*
* @param id
* @return
*/
public List<TaxDeclarationTabDTO> getTaxDeclarationTab(Long id) {
public List<TaxDeclarationTabDTO> getTaxDeclarationTab(TaxDeclareRecordParam param) {
// 查询个税申报记录
TaxDeclareRecordPO taxDeclareRecord = getTaxDeclareRecordService(user).getById(id);
TaxDeclareRecordPO taxDeclareRecord = getTaxDeclareRecordService(user).getById(param.getTaxDeclareRecordId());
// 查询个税申报记录下的个税申报表
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()))
// .collect(Collectors.toList());
//筛选申报类型
DeclareReportTypeEnum declareReportTypeEnum = DeclareReportTypeEnum.parseByValue(param.getReportType());
taxDeclarations = taxDeclarations.stream().filter(po -> IncomeCategoryEnum.parseByValue(po.getIncomeCategory()).getReportType() == declareReportTypeEnum).collect(Collectors.toList());
Map<Integer, TaxDeclarationPO> taxDeclarationMap = SalaryEntityUtil.convert2Map(taxDeclarations, TaxDeclarationPO::getIncomeCategory);
List<TaxDeclarationTabDTO> tabs = Lists.newArrayList();
for (IncomeCategoryEnum incomeCategoryEnum : IncomeCategoryEnum.values()) {
@ -331,12 +334,12 @@ public class TaxDeclareRecordWrapper extends Service {
/**
* 查询个税申报表的基本信息
*
* @param id 个税申报表id
* @return
*/
public TaxDeclarationInfoDTO getTaxDeclarationInfoById(Long id) {
public TaxDeclarationInfoDTO getTaxDeclarationInfoById(TaxDeclareRecordParam param) {
// 查询个税申报表
TaxDeclareRecordPO taxDeclareRecord = getTaxDeclareRecordService(user).getById(id);
Long taxDeclareRecordId = param.getTaxDeclareRecordId();
TaxDeclareRecordPO taxDeclareRecord = getTaxDeclareRecordService(user).getById(taxDeclareRecordId);
if (Objects.isNull(taxDeclareRecord)) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98877, "个税申报表不存在或已删除"));
}
@ -352,8 +355,10 @@ public class TaxDeclareRecordWrapper extends Service {
List<TaxDeclareFailPO> taxDeclareFails = getTaxDeclareFailService(user).listByTaxDeclareRecordIds(Collections.singleton(taxDeclareRecord.getId()));
// 查询个税扣缴义务人
TaxAgentPO taxAgentPO = getTaxAgentService(user).getById(taxDeclareRecord.getTaxAgentId());
TaxDeclareTypeEnum taxDeclareTypeEnum = SalaryEnumUtil.enumMatchByValue(taxDeclareRecord.getTaxDeclareType(), TaxDeclareTypeEnum.class);
TaxDeclareStatusEnum taxDeclareStatusEnum = SalaryEnumUtil.enumMatchByValue(taxDeclareRecord.getTaxDeclareStatus(), TaxDeclareStatusEnum.class);
TaxDeclareStatusPO taxDeclareStatus = getTaxDeclareRecordService(user).getTaxDeclareStatus(taxDeclareRecordId, param.getReportType());
TaxDeclareTypeEnum taxDeclareTypeEnum = SalaryEnumUtil.enumMatchByValue(taxDeclareStatus.getTaxDeclareType(), TaxDeclareTypeEnum.class);
TaxDeclareStatusEnum taxDeclareStatusEnum = SalaryEnumUtil.enumMatchByValue(taxDeclareStatus.getTaxDeclareStatus(), TaxDeclareStatusEnum.class);
return TaxDeclarationInfoDTO.builder()
.salaryMonth(taxDeclareRecord.getSalaryMonth())
@ -364,7 +369,7 @@ public class TaxDeclareRecordWrapper extends Service {
.declareTypeDesc(taxDeclareTypeEnum == null ? "" : SalaryI18nUtil.getI18nLabel(taxDeclareTypeEnum.getLabelId(), taxDeclareTypeEnum.getDefaultLabel()))
.declareStatus(taxDeclareStatusEnum)
.declareStatusDesc(taxDeclareStatusEnum == null ? "" : SalaryI18nUtil.getI18nLabel(taxDeclareStatusEnum.getLabelId(), taxDeclareStatusEnum.getDefaultLabel()))
.declareErrorMsg(taxDeclareRecord.getTaxDeclareErrorMsg())
.declareErrorMsg(taxDeclareStatus.getTaxDeclareErrorMsg())
.displayIcon(Objects.equals(taxDeclareRecord.getDisplayUpdateIcon(), 1))
.declareFailSize(taxDeclareFails.size())
.abnormalSize(notDeclareTaxDeclareEmployees.size() + noValueTaxDeclareEmployees.size())
@ -871,7 +876,7 @@ public class TaxDeclareRecordWrapper extends Service {
SalaryElogConfig.taxDeclarationLoggerTemplate.write(loggerContext);
}
public void getTaxReportType(Long id) {
getTaxDeclareRecordService(user).getTaxReportType(id);
public List<TaxDeclareStatusPO> getTaxReports(Long id) {
return getTaxDeclareRecordService(user).getTaxReports(id);
}
}