package com.engine.salary.wrapper; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.component.WeaFormOption; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.entity.taxdeclaration.bo.TaxDeclarationBO; import com.engine.salary.entity.taxdeclaration.dto.TaxDeclarationFormDTO; import com.engine.salary.entity.taxdeclaration.dto.TaxDeclarationInfoDTO; import com.engine.salary.entity.taxdeclaration.dto.TaxDeclarationListDTO; import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationBatParam; import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationListQueryParam; import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationSaveParam; import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationSaveParamNew; import com.engine.salary.entity.taxdeclaration.po.TaxDeclarationPO; import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.service.SalaryEmployeeService; import com.engine.salary.service.TaxAgentService; import com.engine.salary.service.TaxDeclarationService; import com.engine.salary.service.impl.SalaryEmployeeServiceImpl; import com.engine.salary.service.impl.TaxAgentServiceImpl; import com.engine.salary.service.impl.TaxDeclarationServiceImpl; import com.engine.salary.util.SalaryDateUtil; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.page.PageInfo; import com.google.common.collect.Lists; import org.apache.commons.collections4.CollectionUtils; import weaver.hrm.User; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; /** * 个税申报表 *

Copyright: Copyright (c) 2022

*

Company: 泛微软件

* * @author qiantao * @version 1.0 **/ public class TaxDeclarationWrapper extends Service { private TaxDeclarationService getTaxDeclarationService(User user) { return ServiceUtil.getService(TaxDeclarationServiceImpl.class, user); } private TaxAgentService getTaxAgentService(User user) { return ServiceUtil.getService(TaxAgentServiceImpl.class, user); } private SalaryEmployeeService getSalaryEmployeeService(User user) { return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user); } /** * 个税申报表列表 * * @param queryParam 列表查询条件 * @param * @return */ public PageInfo listPage(TaxDeclarationListQueryParam queryParam) { // 询个税申报表(分页) PageInfo page = getTaxDeclarationService(user).listPageByParam(queryParam); PageInfo dtoPage = new PageInfo(TaxDeclarationListDTO.class); dtoPage.setPageNum(queryParam.getCurrent()); dtoPage.setPageSize(queryParam.getPageSize()); dtoPage.setTotal(page.getTotal()); List list = page.getList(); if (CollectionUtils.isNotEmpty(list)) { // 查询人员 List employeeIds = SalaryEntityUtil.properties(list, TaxDeclarationPO::getCreator, Collectors.toList()); List employeeComInfos = getSalaryEmployeeService(user).getEmployeeByIdsAll(employeeIds); // 查询个税扣缴义务人 Set taxAgentIds = SalaryEntityUtil.properties(list, TaxDeclarationPO::getTaxAgentId); List taxAgentPOS = getTaxDeclarationService(user).countByTaxDeclarationId(taxAgentIds); // 转换成列表dto List taxDeclarationListDTOS = TaxDeclarationBO.convert2ListDTO(list, employeeComInfos, taxAgentPOS); dtoPage.setList(taxDeclarationListDTOS); } return dtoPage; } public TaxDeclarationFormDTO getForm(Long id) { TaxDeclarationFormDTO formDTO = new TaxDeclarationFormDTO(); if (Objects.nonNull(id)) { // 查询个税申报表 TaxDeclarationPO taxDeclaration = getTaxDeclarationService(user).getById(id); if (Objects.isNull(taxDeclaration)) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98877, "个税申报表不存在或已删除")); } // 查询个税扣缴义务人 TaxAgentPO taxAgent = getTaxAgentService(user).getById(id); //日期转换 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM"); String transformDate = simpleDateFormat.format(taxDeclaration.getSalaryMonth()); // 转换成个税申报表详情dto formDTO = TaxDeclarationFormDTO.builder().salaryMonth(SalaryDateUtil.String2YearMonth(transformDate)).taxAgentId(taxDeclaration.getTaxAgentId()).taxAgentName(Optional.ofNullable(taxAgent).map(TaxAgentPO::getName).orElse("")).description(taxDeclaration.getDescription()).build(); } // 转换成前端所需的数据格式 // WeaForm weaForm = SalaryFormatUtil.getInstance().buildForm(TaxDeclarationFormDTO.class, formDTO); // 查询租户所有的个税扣缴义务人 Collection taxAgentListDTOS = getTaxAgentService(user).listAll(); // 表单中个税扣缴义务人的可选项 List weaFormOptions = Lists.newArrayListWithExpectedSize(taxAgentListDTOS.size()); for (TaxAgentPO taxAgent : taxAgentListDTOS) { weaFormOptions.add(new WeaFormOption("" + taxAgent.getId(), taxAgent.getName())); } // weaForm.getItems().forEach((k, v) -> { // if (StringUtils.equals("taxAgentId", k)) { // v.setOptions(weaFormOptions); // } // if (StringUtils.equals("salaryMonth", k)) { // Map otherParams = new HashMap<>(); // otherParams.put("type", "month"); // v.setOtherParams(otherParams); // } // }); return formDTO; } /** * 查询个税申报表的基本信息 * * @param id 个税申报表id * @return */ public TaxDeclarationInfoDTO getTaxDeclarationInfoById(Long id) { // 查询个税申报表 TaxDeclarationPO taxDeclaration = getTaxDeclarationService(user).getById(id); if (Objects.isNull(taxDeclaration)) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98877, "个税申报表不存在或已删除")); } //日期转换 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM"); String transformDate = simpleDateFormat.format(taxDeclaration.getSalaryMonth()); // 查询个税扣缴义务人 TaxAgentPO taxAgentPO = getTaxAgentService(user).getById(taxDeclaration.getTaxAgentId()); return TaxDeclarationInfoDTO.builder().salaryMonth(SalaryDateUtil.String2YearMonth(transformDate)).taxAgentId(taxDeclaration.getTaxAgentId()).taxAgentName(Optional.ofNullable(taxAgentPO).map(TaxAgentPO::getName).orElse("")).build(); } /** * 保存 * * @param saveParam 保存参数 */ public void save(TaxDeclarationSaveParamNew saveParam) { getTaxDeclarationService(user).save(saveParam); } /** * 撤回个税申报 * @param taxDeclarationId */ public void withDrawTaxDeclaration(Long taxDeclarationId) { getTaxDeclarationService(user).withDrawTaxDeclaration(taxDeclarationId); } public void batSave(TaxDeclarationBatParam param) { List taxAgentIds = param.getTaxAgentIds(); for (int i = 0; i < taxAgentIds.size(); i++) { Long taxAgentId = taxAgentIds.get(i); TaxDeclarationSaveParamNew saveParam = TaxDeclarationSaveParamNew.builder() .salaryMonth(param.getSalaryMonth()) .taxAgentId(String.valueOf(taxAgentId)) .description(param.getDescription()) .taxCycle(param.getTaxCycle()) .salaryDate(param.getSalaryDate()) .build(); save(saveParam); } } /** * 批量撤回个税申报 * @param param */ public void batchDeleteTaxDeclaration(TaxDeclarationSaveParamNew param) { getTaxDeclarationService(user).batchDeleteTaxDeclaration(param); } }