package com.engine.salary.service.impl; import com.cloudstore.eccom.pc.table.WeaTableColumn; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.entity.salaryarchive.dto.SalaryItemAdjustRecordListDTO; import com.engine.salary.entity.salaryarchive.param.SalaryItemAdjustRecordQueryParam; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.taxdeclaration.bo.TaxDeclarationDetailListColumn; import com.engine.salary.entity.taxdeclaration.dto.TaxDeclarationDetailListDTO; import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationDetailListQueryParam; import com.engine.salary.enums.UserStatusEnum; import com.engine.salary.enums.salaryarchive.SalaryArchiveItemAdjustReasonEnum; import com.engine.salary.mapper.taxdeclaration.TaxDeclarationDetailMapper; import com.engine.salary.mapper.taxdeclaration.TaxDeclarationMapper; import com.engine.salary.service.TaxDeclarationDetailService; import com.engine.salary.service.TaxDeclarationExcelService; import com.engine.salary.service.TaxDeclarationService; import com.engine.salary.util.JsonUtil; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.excel.ExcelUtil; import com.engine.salary.util.page.PageInfo; import com.fapiao.neon.model.in.Page; import com.google.common.collect.Lists; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import weaver.hrm.User; import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; /** * @description: 个税申报表导出 * @author: xiajun * @modified By: xiajun * @date: Created in 1/4/22 4:17 PM * @version:v1.0 */ @Slf4j public class TaxDeclarationExcelServiceImpl extends Service implements TaxDeclarationExcelService { private TaxDeclarationDetailService getTaxDeclarationDetailService(User user) { return (TaxDeclarationDetailService) ServiceUtil.getService(TaxDeclarationDetailServiceImpl.class, user); } private TaxDeclarationDetailMapper getTaxDeclarationDetailMapper(User user) { return MapperProxyFactory.getProxy(TaxDeclarationDetailMapper.class); } @Override public XSSFWorkbook exportTaxDeclaration(Long taxDeclarationId) { // 1.工作簿名称 String sheetName = SalaryI18nUtil.getI18nLabel(85368, "个税申报表"); //表头字段 String[] headers = TaxDeclarationDetailListColumn.listHeader(); // 解析表头 //List weaTableColumns = TaxDeclarationDetailListColumn.listTableColumn(); List headerList = new ArrayList<>(Arrays.asList(headers)); // 查询当前个税申报表一共有多少人员 int count = getTaxDeclarationDetailMapper(user).countEmployeeId(taxDeclarationId); // 以1000个人员一页,一共有多少页 // int totalPages = (count % 1000 == 0) ? (count / 1000) : (count / 1000 + 1); //总页数 // excel导出的数据 List> rows = Lists.newArrayListWithExpectedSize(count); rows.add(headerList); //查询数据 TaxDeclarationDetailListQueryParam queryParam = new TaxDeclarationDetailListQueryParam().setTaxDeclarationId(taxDeclarationId); PageInfo dtoPage = getTaxDeclarationDetailService(user).listDtoPageByParam(queryParam); List list = dtoPage.getList(); for (TaxDeclarationDetailListDTO dto : list) { List row = new ArrayList<>(); row.add(dto.getSeq()); row.add(dto.getEmployeeName()); row.add(dto.getIdCardNo()); row.add(dto.getTaxpayerIdNo()); row.add(dto.getResidentType()); row.add(dto.getIncomeType()); row.add(dto.getIncome()); row.add(dto.getFee()); row.add(dto.getTaxFreeIncome()); row.add(dto.getSubtraction()); row.add(dto.getEndowmentInsurance()); row.add(dto.getMedicalInsurance()); row.add(dto.getUnemploymentInsurance()); row.add(dto.getHousingProvidentFund()); row.add(dto.getAnnuity()); row.add(dto.getCommercialHealthInsurance()); row.add(dto.getTaxDeferredEndowmentInsurance()); row.add(dto.getOriginalValueOfProperty()); row.add(dto.getDeductedTax()); row.add(dto.getOther()); row.add(dto.getAddUpIncome()); row.add(dto.getAddUpSubtraction()); row.add(dto.getAddUpSpecialDeduction()); row.add(dto.getAddUpChildEducation()); row.add(dto.getAddUpContinuingEducation()); row.add(dto.getAddUpHousingLoanInterest()); row.add(dto.getAddUpHousingRent()); row.add(dto.getAddUpSupportElderly()); row.add(dto.getAddUpOther()); row.add(dto.getLessTaxProportion()); row.add(dto.getAllowedDonation()); row.add(dto.getTaxableIncome()); row.add(dto.getTaxRate()); row.add(dto.getQuickDeductionFactor()); row.add(dto.getTaxPayable()); row.add(dto.getTaxSavings()); row.add(dto.getTaxWithheld()); row.add(dto.getRefundedOrSupplementedTax()); row.add(dto.getDescription()); rows.add(row); } return ExcelUtil.genWorkbookV2(rows, sheetName); } }