weaver-hrm-salary/src/com/engine/salary/service/impl/TaxDeclarationExcelServiceI...

85 lines
4.1 KiB
Java
Raw Normal View History

2022-04-18 18:56:17 +08:00
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;
2022-04-19 20:58:30 +08:00
import com.engine.salary.entity.salaryarchive.dto.SalaryItemAdjustRecordListDTO;
import com.engine.salary.entity.salaryarchive.param.SalaryItemAdjustRecordQueryParam;
2022-04-18 18:56:17 +08:00
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;
2022-04-19 20:58:30 +08:00
import com.engine.salary.enums.UserStatusEnum;
import com.engine.salary.enums.salaryarchive.SalaryArchiveItemAdjustReasonEnum;
2022-04-18 18:56:17 +08:00
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;
2022-04-19 20:58:30 +08:00
import java.text.SimpleDateFormat;
2022-04-18 18:56:17 +08:00
import java.time.LocalDateTime;
import java.util.*;
2022-04-19 20:58:30 +08:00
import java.util.stream.Collectors;
2022-04-18 18:56:17 +08:00
/**
* @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<WeaTableColumn> weaTableColumns = TaxDeclarationDetailListColumn.listTableColumn();
List<Object> 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<List<Object>> rows = Lists.newArrayListWithExpectedSize(count);
rows.add(headerList);
for (int i = 0; i < totalPages; i++) {
TaxDeclarationDetailListQueryParam queryParam = new TaxDeclarationDetailListQueryParam().setTaxDeclarationId(taxDeclarationId);
queryParam.setCurrent(i);
queryParam.setPageSize(1000);
PageInfo<TaxDeclarationDetailListDTO> dtoPage = getTaxDeclarationDetailService(user).listDtoPageByParam(queryParam);
for (Object taxDeclarationDetailListDTO : dtoPage.getList()) {
List<Object> row = Lists.newArrayListWithExpectedSize(headerList.size());
Map<String, Object> map = JsonUtil.parseMap(taxDeclarationDetailListDTO, Object.class);
for (Object weaTableColumn : headerList) {
row.add(map.get(weaTableColumn));
}
rows.add(row);
}
}
return ExcelUtil.genWorkbookV2(rows, sheetName);
}
}