package com.engine.salary.service.impl; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.entity.taxagent.dto.TaxAgentManageRangeEmployeeListDTO; import com.engine.salary.entity.taxagent.param.TaxAgentImportParam; import com.engine.salary.entity.taxagent.param.TaxAgentRangeDownloadTemplateParam; import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.service.TaxAgentExcelService; import com.engine.salary.service.TaxAgentService; import com.engine.salary.util.SalaryI18nUtil; import com.engine.salary.util.excel.ExcelComment; import com.engine.salary.util.excel.ExcelParseHelper; import com.engine.salary.util.excel.ExcelUtil; import com.google.common.collect.Lists; import org.apache.commons.lang3.Validate; import org.apache.poi.util.IOUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import weaver.file.ImageFileManager; import weaver.general.Util; import weaver.hrm.User; import java.io.InputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @author Harryxzy * @date 2023/01/05 15:11 * @description */ public class TaxAgentExcelServiceImpl extends Service implements TaxAgentExcelService { public TaxAgentService getTaxAgentService(User user) { return ServiceUtil.getService(TaxAgentServiceImpl.class, user); } @Override public XSSFWorkbook downloadTemplateRange(TaxAgentRangeDownloadTemplateParam downloadTemplateParam, int currentEmployeeId) { // 没有传递TaxAgentId就是当前登录人能够导入自己所能管理的个税扣缴义务人 TaxAgentPO taxAgent = downloadTemplateParam.getTaxAgentId() == null ? null : getTaxAgentService(user).getById(downloadTemplateParam.getTaxAgentId()); //获取操作按钮资源 List> rowList = getExcelRowList(taxAgent); // 注释 List excelComments = Lists.newArrayList(); excelComments.add(new ExcelComment(0, 0, 1, 2, SalaryI18nUtil.getI18nLabel(100344, "必填"))); excelComments.add(new ExcelComment(4, 0, 6, 3, SalaryI18nUtil.getI18nLabel(100344, "若不填,默认全部员工状态。指定员工状态格式:试用、正式、临时、试用延期"))); //获取excel return ExcelUtil.genWorkbookV2(rowList, "个税扣缴义务人人员范围", excelComments); } @Override public Map preview(TaxAgentImportParam importParam) { Map apidatas = new HashMap(); //excel文件id String imageId = Util.null2String(importParam.getImageId()); Validate.notBlank(imageId, "imageId为空"); InputStream fileInputStream = null; try { fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(imageId)); List taxAgentManageRangeEmployees = ExcelParseHelper.parse2Map(fileInputStream, TaxAgentManageRangeEmployeeListDTO.class, 0, 1, 5, "TaxAgentEmployee.xlsx"); apidatas.put("preview", taxAgentManageRangeEmployees); } finally { IOUtils.closeQuietly(fileInputStream); } return apidatas; } /** * @description 获取excel数据行 * @return List> * @author Harryxzy * @date 2023/1/5 15:47 */ private List> getExcelRowList(TaxAgentPO taxAgent) { // 表头 List headers = Lists.newArrayList(); if (taxAgent == null) { headers.add(SalaryI18nUtil.getI18nLabel( 86184, "个税扣缴义务人")); } headers.add(SalaryI18nUtil.getI18nLabel( 85429, "姓名")); headers.add(SalaryI18nUtil.getI18nLabel( 86185, "部门")); headers.add(SalaryI18nUtil.getI18nLabel(86186, "手机号")); headers.add(SalaryI18nUtil.getI18nLabel(86317, "工号")); headers.add(SalaryI18nUtil.getI18nLabel(86318, "员工状态")); List> rowList = new ArrayList<>(); rowList.add(headers); return rowList; } }