diff --git a/src/com/engine/salary/entity/taxagent/bo/TaxAgentTaxReturnBO.java b/src/com/engine/salary/entity/taxagent/bo/TaxAgentTaxReturnBO.java index fab88eda0..b14674d76 100644 --- a/src/com/engine/salary/entity/taxagent/bo/TaxAgentTaxReturnBO.java +++ b/src/com/engine/salary/entity/taxagent/bo/TaxAgentTaxReturnBO.java @@ -96,8 +96,8 @@ public class TaxAgentTaxReturnBO { requestMap.put("djxhid", taxAgentTaxReturn.getTaxRegistrationNumber()); requestMap.put("nsrsbh", taxAgentTaxReturn.getTaxCode()); requestMap.put("areaid", taxAgentTaxReturn.getAreaCode()); - requestMap.put("bmbh", ""); - requestMap.put("bmmc", ""); + requestMap.put("bmbh", taxAgentTaxReturn.getDepartmentCode()); + requestMap.put("bmmc", taxAgentTaxReturn.getDepartmentName()); return requestMap; } diff --git a/src/com/engine/salary/service/EmployeeDeclareExcelService.java b/src/com/engine/salary/service/EmployeeDeclareExcelService.java new file mode 100644 index 000000000..6b0f75775 --- /dev/null +++ b/src/com/engine/salary/service/EmployeeDeclareExcelService.java @@ -0,0 +1,54 @@ +package com.engine.salary.service; + +import com.engine.salary.entity.employeedeclare.param.EmployeeDeclareListQueryParam; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; + +/** + * @description: 人员报送(人员)导入导出 + * @author: xiajun + * @modified By: xiajun + * @date: Created in 9/5/22 10:22 AM + * @version:v1.0 + */ +public interface EmployeeDeclareExcelService { + + /** + * 导出下载模板 + * + * @param importParam + * @return + */ +// Map exportTemplate(EmployeeDeclareImportParam importParam); + + /** + * 导出人员信息采集-全部 + * + * @param queryParam + * @return + */ + XSSFWorkbook export(EmployeeDeclareListQueryParam queryParam); + +// /** +// * 导出人员信息采集-本月新增 +// * +// * @param queryParam +// * @return +// */ +// XSSFWorkbook export4Add(EmployeeDeclareAddListQueryParam queryParam); +// +// /** +// * 导出人员信息采集-本月信息变动 +// * +// * @param queryParam +// * @return +// */ +// XSSFWorkbook export4Update(EmployeeDeclareListQueryParam queryParam); +// +// /** +// * 导出人员信息采集-本月报送失败 +// * +// * @param queryParam +// * @return +// */ +// XSSFWorkbook export4Fail(EmployeeDeclareFailListQueryParam queryParam); +} diff --git a/src/com/engine/salary/service/impl/AbstractTaxAgentTaxReturnCheckService.java b/src/com/engine/salary/service/impl/AbstractTaxAgentTaxReturnCheckService.java index 296100b7a..f5d2422e6 100644 --- a/src/com/engine/salary/service/impl/AbstractTaxAgentTaxReturnCheckService.java +++ b/src/com/engine/salary/service/impl/AbstractTaxAgentTaxReturnCheckService.java @@ -134,7 +134,21 @@ public abstract class AbstractTaxAgentTaxReturnCheckService extends Service impl for (int i = 1; i <= registerInfos.size(); i++) { CompanyRegisterInfoResponse.CompanyRegisterInfo registerInfo = registerInfos.get(i - 1); SalaryAssert.notNull(registerInfo.getFbmba(), "税局接口异常,请稍后重试"); - TaxAgentTaxReturnCheckFormDTO checkFormDTO = TaxAgentTaxReturnCheckFormDTO.builder().taxAgentName(registerInfo.getQymc()).taxAgentId(saveParam.getTaxAgentId()).taxCode(saveParam.getTaxCode()).businessAddress(registerInfo.getScjydz()).legalPersonName(registerInfo.getFrxm()).mobile(registerInfo.getLxdh()).industryName(registerInfo.getHymc()).taxAuthorities(registerInfo.getZgswjgmc()).taxBranch(registerInfo.getZgswjgskmc()).taxRegistrationNumber(registerInfo.getDjxhid()).divideFiling(SalaryOnOffEnum.parseByValue(Integer.parseInt(registerInfo.getFbmba()))).index((long) i).build(); + TaxAgentTaxReturnCheckFormDTO checkFormDTO = TaxAgentTaxReturnCheckFormDTO + .builder() + .taxAgentName(registerInfo.getQymc()) + .taxAgentId(saveParam.getTaxAgentId()) + .taxCode(saveParam.getTaxCode()) + .businessAddress(registerInfo.getScjydz()) + .legalPersonName(registerInfo.getFrxm()) + .mobile(registerInfo.getLxdh()) + .industryName(registerInfo.getHymc()) + .taxAuthorities(registerInfo.getZgswjgmc()) + .taxBranch(registerInfo.getZgswjgskmc()) + .taxRegistrationNumber(registerInfo.getDjxhid()) + .divideFiling(SalaryOnOffEnum.parseByValue(Integer.parseInt(registerInfo.getFbmba()))) + .index((long) i) + .build(); checkFormDTOList.add(checkFormDTO); } return checkFormDTOList; diff --git a/src/com/engine/salary/service/impl/EmployeeDeclareExcelServiceImpl.java b/src/com/engine/salary/service/impl/EmployeeDeclareExcelServiceImpl.java new file mode 100644 index 000000000..bdf2bfb67 --- /dev/null +++ b/src/com/engine/salary/service/impl/EmployeeDeclareExcelServiceImpl.java @@ -0,0 +1,649 @@ +package com.engine.salary.service.impl; + +import com.engine.common.util.ServiceUtil; +import com.engine.core.impl.Service; +import com.engine.salary.annotation.SalaryTableColumn; +import com.engine.salary.entity.employeedeclare.dto.EmployeeDeclareListDTO; +import com.engine.salary.entity.employeedeclare.param.EmployeeDeclareListQueryParam; +import com.engine.salary.entity.employeedeclare.po.EmployeeDeclarePO; +import com.engine.salary.service.EmployeeDeclareExcelService; +import com.engine.salary.service.EmployeeDeclareService; +import com.engine.salary.service.SalaryEmployeeService; +import com.engine.salary.service.TaxAgentService; +import com.engine.salary.util.JsonUtil; +import com.engine.salary.util.excel.ExcelUtil; +import com.google.common.collect.Lists; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import weaver.hrm.User; + +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @description: 人员报送(人员)导入导出 + * @author: xiajun + * @modified By: xiajun + * @date: Created in 9/7/22 5:39 PM + * @version:v1.0 + */ +@Slf4j +public class EmployeeDeclareExcelServiceImpl extends Service implements EmployeeDeclareExcelService { + + + private EmployeeDeclareService getEmployeeDeclareService(User user) { + return ServiceUtil.getService(EmployeeDeclareServiceImpl.class, user); + } + private SalaryEmployeeService getSalaryEmployeeService(User user) { + return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user); + } +// private ExtEmployeeService extEmployeeService; + + private TaxAgentService getTaxAgentService(User user) { + return ServiceUtil.getService(TaxAgentServiceImpl.class, user); + } + +// @Override +// public Map exportTemplate( EmployeeDeclareImportParam importParam) { +// String tenantKey = simpleEmployee.getTenantKey(); +// Long currentEmployeeId = simpleEmployee.getEmployeeId(); +// // 查询人员 +// List employeeDeclares = Collections.emptyList(); +// if (StringUtils.equalsIgnoreCase(importParam.getExportData(), "true")) { +// employeeDeclares = getEmployeeDeclareService(user).listByParam(importParam); +// } +// String yesI18 = SalaryI18nUtil.getI18nLabel( 84967, "是"); +// String noI18 = SalaryI18nUtil.getI18nLabel( 84968, "否"); +// List> rows = Lists.newArrayList(); +// for (EmployeeDeclarePO employeeDeclare : employeeDeclares) { +// EmploymentStatusEnum employmentStatusEnum = SalaryEnumUtil.enumMatchByValue(employeeDeclare.getEmploymentStatus(), EmploymentStatusEnum.class); +// EmploymentTypeEnum employmentTypeEnum = SalaryEnumUtil.enumMatchByValue(employeeDeclare.getEmploymentType(), EmploymentTypeEnum.class); +// List row = Lists.newArrayList(); +// row.add(employeeDeclare.getJobNum()); +// row.add(employeeDeclare.getEmployeeName()); +// row.add(CardTypeEnum.RESIDENT_IDENTITY_CARDS.getDefaultLabel()); +// row.add(employeeDeclare.getCardNum()); +// row.add(employmentStatusEnum == null ? "" : employmentStatusEnum.getDefaultLabel()); +// row.add(employmentTypeEnum == null ? "" : employmentTypeEnum.getDefaultLabel()); +// row.add(employeeDeclare.getEmploymentFirstYear()); +// row.add(employeeDeclare.getMobile()); +// row.add(Util.null2String(employeeDeclare.getEmploymentDate())); +// row.add(Util.null2String(employeeDeclare.getDismissDate())); +// row.add(Objects.equals(employeeDeclare.getDisability(), 1) ? yesI18 : noI18); +// row.add(employeeDeclare.getDisabilityCardNo()); +// row.add(Objects.equals(employeeDeclare.getMartyrDependents(), 1) ? yesI18 : noI18); +// row.add(employeeDeclare.getMartyrDependentsCardNo()); +// row.add(Objects.equals(employeeDeclare.getLonelyOld(), 1) ? yesI18 : noI18); +// row.add(Objects.equals(employeeDeclare.getDeductExpenses(), 1) ? yesI18 : noI18); +// rows.add(row); +// } +// // 组装excel导出数据 +// String[] headers = getImportHeader(currentEmployeeId, tenantKey).toArray(new String[0]); +// ExcelSheetData excelSheetData = new ExcelSheetData(); +// excelSheetData.setSheetName(SalaryI18nUtil.getI18nLabel( 156425, "人员信息采集")); +// excelSheetData.setHeaders(Collections.singletonList(headers)); +// excelSheetData.setRows(rows); +// ExportExcelInfo exportExcelInfo = ExportExcelInfo.builder() +// .fileName(SalaryI18nUtil.getI18nLabel( 156424, "人员信息采集导入模板") + "-" + SalaryDateUtil.getFormatLocalDate(LocalDateTime.now())) +// .dataType(SalaryI18nUtil.getI18nLabel( 156424, "人员信息采集导入模板")) +// .function(excelExportParam.getFunction()) +// .handlerName("exportEmployeeDeclareTemplate") +// .flag(true) +// .bizId(excelExportParam.getBiz()) +// .module(excelExportParam.getModule()) +// .userId(simpleEmployee.getEmployeeId()) +// .tenantKey(simpleEmployee.getTenantKey()) +// .operator(simpleEmployee.getUsername()) +// .eteamsId(TenantRpcContext.getEteamsId()) +// .build(); +// return salaryBatchService.simpleExportExcel(exportExcelInfo, Collections.singletonList(excelSheetData)); +// } +// +// @BatchExportHandler("exportEmployeeDeclareTemplate") +// private void exportEmployeeDeclareTemplate() { +// BatchCallbackMessage message = BatchExportContext.getBatchCallbackMessage(); +// log.info("导出结束:{}", JsonUtil.toJsonString(message)); +// } + + @Override + public XSSFWorkbook export(EmployeeDeclareListQueryParam queryParam) { + // 查询需要报送的人员 + List employeeDeclares = getEmployeeDeclareService(user).listByParam(queryParam); + // 转换成dto + List dtoList = getEmployeeDeclareService(user).convert(employeeDeclares); + // 需要导出的数据 + List> excelSheetData = getExcelSheetData(EmployeeDeclareListDTO.class, dtoList); + + return ExcelUtil.genWorkbookV2(excelSheetData, "人员信息采集"); + } + +// @Override +// public XSSFWorkbook export4Add(EmployeeDeclareAddListQueryParam queryParam) { +// String tenantKey = simpleEmployee.getTenantKey(); +// Long currentEmployeeId = simpleEmployee.getEmployeeId(); +// // 查询需要报送的人员 +// List employeeDeclares = getEmployeeDeclareService(user).list4AddByParam(queryParam); +// // 转换成dto +// List dtoList = getEmployeeDeclareService(user).convert(employeeDeclares); +// // 需要导出的数据 +// ExcelSheetData excelSheetData = getExcelSheetData(EmployeeDeclareListDTO.class, dtoList); +// CustomExportUtil.customColumnsBuild(false, queryParam.getCustomColumns(), excelSheetData); +// ExportExcelInfo exportExcelInfo = ExportExcelInfo.builder() +// .fileName(SalaryI18nUtil.getI18nLabel(156426, "人员信息采集本月新增") + "-" + SalaryDateUtil.getFormatLocalDate(LocalDateTime.now())) +// .dataType(SalaryI18nUtil.getI18nLabel(156426, "人员信息采集本月新增")) +// .function(excelExportParam.getFunction()) +// .handlerName("exportEmployeeDeclare4Add") +// .flag(true) +// .bizId(excelExportParam.getBiz()) +// .module(excelExportParam.getModule()) +// .userId(simpleEmployee.getEmployeeId()) +// .tenantKey(simpleEmployee.getTenantKey()) +// .operator(simpleEmployee.getUsername()) +// .eteamsId(TenantRpcContext.getEteamsId()) +// .build(); +// return salaryBatchService.simpleExportExcel(exportExcelInfo, Collections.singletonList(excelSheetData)); +// } +// +// @BatchExportHandler("exportEmployeeDeclare4Add") +// private void exportEmployeeDeclare4Add() { +// BatchCallbackMessage message = BatchExportContext.getBatchCallbackMessage(); +// log.info("导出结束:{}", JsonUtil.toJsonString(message)); +// } +// +// @Override +// public XSSFWorkbook export4Update(EmployeeDeclareListQueryParam queryParam) { +// String tenantKey = simpleEmployee.getTenantKey(); +// Long currentEmployeeId = simpleEmployee.getEmployeeId(); +// // 查询需要报送的人员 +// List employeeDeclares = getEmployeeDeclareService(user).list4UpdateByParam(queryParam); +// // 转换成dto +// List dtoList = getEmployeeDeclareService(user).convert(employeeDeclares); +// // 需要导出的数据 +// ExcelSheetData excelSheetData = getExcelSheetData(EmployeeDeclareListDTO.class, dtoList); +// CustomExportUtil.customColumnsBuild(false, queryParam.getCustomColumns(), excelSheetData); +// ExportExcelInfo exportExcelInfo = ExportExcelInfo.builder() +// .fileName(SalaryI18nUtil.getI18nLabel(156427, "人员信息采集本月信息变动") + "-" + SalaryDateUtil.getFormatLocalDate(LocalDateTime.now())) +// .dataType(SalaryI18nUtil.getI18nLabel(156427, "人员信息采集本月信息变动")) +// .function(excelExportParam.getFunction()) +// .handlerName("exportEmployeeDeclare4Update") +// .flag(true) +// .bizId(excelExportParam.getBiz()) +// .module(excelExportParam.getModule()) +// .userId(simpleEmployee.getEmployeeId()) +// .tenantKey(simpleEmployee.getTenantKey()) +// .operator(simpleEmployee.getUsername()) +// .eteamsId(TenantRpcContext.getEteamsId()) +// .build(); +// return salaryBatchService.simpleExportExcel(exportExcelInfo, Collections.singletonList(excelSheetData)); +// } +// +// @BatchExportHandler("exportEmployeeDeclare4Update") +// private void exportEmployeeDeclare4Update() { +// BatchCallbackMessage message = BatchExportContext.getBatchCallbackMessage(); +// log.info("导出结束:{}", JsonUtil.toJsonString(message)); +// } +// +// @Override +// public XSSFWorkbook export4Fail(EmployeeDeclareFailListQueryParam queryParam) { +// String tenantKey = simpleEmployee.getTenantKey(); +// Long currentEmployeeId = simpleEmployee.getEmployeeId(); +// // 查询需要报送的人员 +// List employeeDeclares = getEmployeeDeclareService(user).list4FailByParam(queryParam); +// // 转换成dto +// List dtos = getEmployeeDeclareService(user).convert2FailListDTO(employeeDeclares); +// // 需要导出的数据 +// ExcelSheetData excelSheetData = getExcelSheetData(EmployeeDeclareFailListDTO.class, dtos); +// ExportExcelInfo exportExcelInfo = ExportExcelInfo.builder() +// .fileName(SalaryI18nUtil.getI18nLabel(156428, "人员信息采集本月报送失败") + "-" + SalaryDateUtil.getFormatLocalDate(LocalDateTime.now())) +// .dataType(SalaryI18nUtil.getI18nLabel(156428, "人员信息采集本月报送失败")) +// .function(excelExportParam.getFunction()) +// .handlerName("exportEmployeeDeclare4Fail") +// .flag(true) +// .bizId(excelExportParam.getBiz()) +// .module(excelExportParam.getModule()) +// .userId(simpleEmployee.getEmployeeId()) +// .tenantKey(simpleEmployee.getTenantKey()) +// .operator(simpleEmployee.getUsername()) +// .eteamsId(TenantRpcContext.getEteamsId()) +// .build(); +// return salaryBatchService.simpleExportExcel(exportExcelInfo, Collections.singletonList(excelSheetData)); +// } + + + private List> getExcelSheetData(Class clazz, List dtoList) { + // 导出的表头 + Map> headerMap = getHeader(clazz); + // 导出的数据 + List> rows = new ArrayList<>(); + rows.add(headerMap.get("header")); + dtoList.forEach(dto -> { + Map map = JsonUtil.parseMap(dto, Object.class); + List row = Lists.newArrayListWithExpectedSize(headerMap.get("dataIndex").size()); + headerMap.get("dataIndex").forEach(dataIndex -> row.add(map.get(dataIndex))); + rows.add(row); + }); + return rows; + } +// +// @Transactional(rollbackFor = Exception.class) +// @BatchImportHandler("importEmployeeDeclare") +// public void importEmployeeDeclare() { +// BatchDocumentMessage message = BatchImportContext.getBatchDocumentMessage(); +// Long employeeId = message.getUserId(); +// String tenantKey = message.getTenantKey(); +// try { +// LocalDateTime now = LocalDateTime.now(); +// Map paramMap = JsonUtil.parseMap(message.getUploadSet().getCustomData(), Object.class); +// // 个税扣缴义务人id +// Long taxAgentId = Util.getLongValue(Util.null2String(paramMap.get("taxAgentId"))); +// TaxAgentPO taxAgent = getTaxAgentService(user).getById(taxAgentId, employeeId, tenantKey); +// if (taxAgent == null) { +// salaryBatchService.sendImportCallBackInfo(message, SalaryI18nUtil.getI18nLabel(employeeId, 187469, "参数错误,无法找到个税扣缴义务人")); +// return; +// } +// // 税款所属期 +// String taxCycle = Util.null2String(paramMap.get("taxCycle")); +// if (!SalaryDateUtil.checkYearMonth(taxCycle)) { +// salaryBatchService.sendImportCallBackInfo(message, SalaryI18nUtil.getI18nLabel(employeeId, 156384, "参数错误,税款所属期参数格式错误")); +// return; +// } +// +// // 导出模板中的表头 +// List headerList = getImportHeader(employeeId, tenantKey); +// // 查询所有的人员 +// List orgEmployeeIds = hrmCommonEmployeeService.getAllEmployee(tenantKey); +// List simpleEmployees = hrmCommonEmployeeService.getEmployeeByIds(orgEmployeeIds, tenantKey); +// // 查询所有的外部人员 +// List extEmployees = extEmployeeService.listAll(tenantKey); +// // 查询人员报送表的人员 +// List employeeDeclares = getEmployeeDeclareService(user).listByTaxCycleAndTaxAgentId(YearMonth.parse(taxCycle), +// taxAgentId, tenantKey); +// // 校验字段 +// String checkType = Util.null2String(paramMap.getOrDefault("checkType", "jobNum")); +// Map extEmployeeMap = Maps.newHashMap(); +// Map simpleEmployeeMap = Maps.newHashMap(); +// Map employeeDeclareMap = Maps.newHashMapWithExpectedSize(employeeDeclares.size()); +// if (Objects.equals(checkType, "jobNum")) { +// extEmployeeMap = Collections.emptyMap(); +// simpleEmployeeMap = SalaryEntityUtil.convert2Map(simpleEmployees, SimpleEmployee::getJobNum); +// employeeDeclareMap = SalaryEntityUtil.convert2Map(employeeDeclares, EmployeeDeclarePO::getJobNum); +// } else { +// // 查询所有人员的个人信息 +// List simpleUserInfos = getSalaryEmployeeService(user).listByEmployeeIds(orgEmployeeIds, tenantKey); +// Map idKeySimpleEmployeeMap = SalaryEntityUtil.convert2Map(simpleEmployees, SimpleEmployee::getId); +// for (SimpleUserInfo simpleUserInfo : simpleUserInfos) { +// if (idKeySimpleEmployeeMap.containsKey(simpleUserInfo.getEmployeeId())) { +// simpleEmployeeMap.put(simpleUserInfo.getIdNo(), idKeySimpleEmployeeMap.get(simpleUserInfo.getEmployeeId())); +// } +// } +// extEmployeeMap = SalaryEntityUtil.convert2Map(extEmployees, ExtEmployeePO::getCardNum); +// employeeDeclareMap = SalaryEntityUtil.convert2Map(employeeDeclares, EmployeeDeclarePO::getCardNum); +// +// } +// // 需要新增的报送人员 +// List needAddEmployeeDeclares = Lists.newArrayList(); +// // 需要更新的报送人员 +// List needUpdateEmployeeDeclares = Lists.newArrayList(); +// // 索引(用于计算进度) +// int index = 0; +// // 失败的数量 +// int failCount = 0; +// // 成功的数量 +// int successCount = 0; +// // 错误行的索引 +// int failRowIndex = 1; +// // 包含错误提示信息的sheet页 +// List errorExcelSheets = Lists.newArrayList(); +// for (ExcelSheet excelSheet : message.getBatchFile().getExcelSheets()) { +// if (CollectionUtils.isEmpty(excelSheet.getHeader())) { +// continue; +// } +// // 表头 +// List headers = excelSheet.getHeader().stream() +// .map(m -> Util.null2String(m.get("key"))) +// .collect(Collectors.toList()); +// // 检查表头 +// boolean isCorrectHeader = checkHeader(message, headers, headerList); +// if (!isCorrectHeader) { +// return; +// } +// // 表头每一列的位置 +// Map columnIndexMap = Maps.newHashMap(); +// for (int i = 0; i < headers.size(); i++) { +// columnIndexMap.put(headers.get(i), i); +// } +// // 数据 +// List> data = excelSheet.getData(); +// if (CollectionUtils.isEmpty(data)) { +// continue; +// } +// // 错误提示信息 +// List excelComments = Lists.newArrayList(); +// // 存在错误的那行数据 +// List> errorData = Lists.newArrayList(); +// for (int i = 0; i < data.size(); i++) { +// Map map = data.get(i); +// // 数据是否存在错误 +// boolean isError = false; +// EmployeeDeclareExcelDTO employeeDeclareExcel = new EmployeeDeclareExcelDTO(); +// for (String dataKey : getImportHeader(employeeId, tenantKey)) { +// Integer j = columnIndexMap.get(dataKey); +// String dataValue = Util.null2String(map.get(dataKey)); +// if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(employeeId, 86317, "工号"))) { +// if (StringUtils.equals(checkType, "jobNum") && StringUtils.isEmpty(dataValue)) { +// isError = true; +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(employeeId, 136250, "工号不能为空"), failRowIndex, failRowIndex, j, j); +// } +// employeeDeclareExcel.setJobNum(dataValue); +// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(employeeId, 85429, "姓名"))) { +// if (StringUtils.isEmpty(dataValue)) { +// isError = true; +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(employeeId, 102838, "姓名不能为空"), failRowIndex, failRowIndex, j, j); +// } else { +// employeeDeclareExcel.setEmployeeName(dataValue); +// } +// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(employeeId, 105139, "证件类型"))) { +// employeeDeclareExcel.setCardType(CardTypeEnum.RESIDENT_IDENTITY_CARDS.getValue()); +// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(employeeId, 86318, "证件号码"))) { +// if (StringUtils.isEmpty(dataValue)) { +// isError = true; +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(employeeId, 156386, "证件号码不能为空"), failRowIndex, failRowIndex, j, j); +// } else if (!SalaryCardUtil.checkIdNum(dataValue)) { +// isError = true; +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(employeeId, 156429, "证件号码格式不正确"), failRowIndex, failRowIndex, j, j); +// } else { +// employeeDeclareExcel.setCardNum(dataValue); +// employeeDeclareExcel.setGender(SalaryCardUtil.judgeGender(dataValue).getValue()); +// employeeDeclareExcel.setBirthday(SalaryCardUtil.judgeBirthday(dataValue)); +// } +// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(employeeId, 156394, "人员状态"))) { +// boolean legalDataValue = false; +// for (EmploymentStatusEnum employmentStatusEnum : EmploymentStatusEnum.values()) { +// if (StringUtils.equals(dataValue, employmentStatusEnum.getDefaultLabel())) { +// legalDataValue = true; +// employeeDeclareExcel.setEmploymentStatus(employmentStatusEnum.getValue()); +// break; +// } +// } +// if (!legalDataValue) { +// isError = true; +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(employeeId, 156430, "人员状态只能填写正常或非正常"), failRowIndex, failRowIndex, j, j); +// } +// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(employeeId, 156396, "任职受雇从业类型"))) { +// boolean legalDataValue = false; +// for (EmploymentTypeEnum employmentTypeEnum : EmploymentTypeEnum.values()) { +// if (StringUtils.equals(dataValue, employmentTypeEnum.getDefaultLabel())) { +// legalDataValue = true; +// employeeDeclareExcel.setEmploymentType(employmentTypeEnum.getValue()); +// break; +// } +// } +// if (!legalDataValue) { +// isError = true; +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(employeeId, 156431, "任职受雇从业类型填写错误"), failRowIndex, failRowIndex, j, j); +// } +// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(employeeId, 187374, "入职年度就业情形"))) { +// employeeDeclareExcel.setEmploymentFirstYear(dataValue); +// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(employeeId, 98621, "手机号码"))) { +// if (StringUtils.isEmpty(dataValue)) { +// isError = true; +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(employeeId, 106429, "手机号码不能为空"), failRowIndex, failRowIndex, j, j); +// } else if (!SalaryCardUtil.checkMobile(dataValue)) { +// isError = true; +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(employeeId, 160510, "手机号码格式不正确"), failRowIndex, failRowIndex, j, j); +// } else { +// employeeDeclareExcel.setMobile(dataValue); +// } +// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(employeeId, 156409, "任职受雇从业日期"))) { +// if (StringUtils.isEmpty(dataValue)) { +// if (!Objects.equals(employeeDeclareExcel.getEmploymentType(), EmploymentTypeEnum.OTHER.getValue())) { +// isError = true; +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(employeeId, 160511, "任职受雇从业类型不为「其他」时,任职受雇从业日期为必填"), failRowIndex, failRowIndex, j, j); +// } +// } else { +// if (!SalaryDateUtil.checkDay(dataValue)) { +// isError = true; +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(employeeId, 156432, "日期格式不正确"), failRowIndex, failRowIndex, j, j); +// } else { +// employeeDeclareExcel.setEmploymentDate(LocalDate.parse(dataValue)); +// } +// } +// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(employeeId, 95228, "离职日期"))) { +// if (StringUtils.isEmpty(dataValue)) { +// if (Objects.equals(employeeDeclareExcel.getEmploymentStatus(), EmploymentStatusEnum.ABNORMAL.getValue())) { +// isError = true; +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(employeeId, 160512, "人员状态为非正常时,离职日期必填"), failRowIndex, failRowIndex, j, j); +// } +// } else { +// if (!SalaryDateUtil.checkDay(dataValue)) { +// isError = true; +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(employeeId, 156432, "日期格式不正确"), failRowIndex, failRowIndex, j, j); +// } else { +// employeeDeclareExcel.setDismissDate(LocalDate.parse(dataValue)); +// } +// } +// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(employeeId, 156399, "是否残疾"))) { +// if (StringUtils.equals(dataValue, SalaryOnOffEnum.ON.getDefaultLabel())) { +// employeeDeclareExcel.setDisability(SalaryOnOffEnum.ON.getValue()); +// } else if (StringUtils.equals(dataValue, SalaryOnOffEnum.OFF.getDefaultLabel())) { +// employeeDeclareExcel.setDisability(SalaryOnOffEnum.OFF.getValue()); +// } else { +// isError = true; +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(employeeId, 156433, "是否残疾只能填写是与否"), failRowIndex, failRowIndex, j, j); +// } +// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(employeeId, 156412, "残疾证号"))) { +// if (StringUtils.isEmpty(dataValue)) { +// if (Objects.equals(employeeDeclareExcel.getDisability(), SalaryOnOffEnum.ON.getValue())) { +// isError = true; +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(employeeId, 160513, "「是否残疾」填「是」时,残疾证号必填"), failRowIndex, failRowIndex, j, j); +// } +// } else { +// employeeDeclareExcel.setDisabilityCardNo(dataValue); +// } +// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(employeeId, 187385, "是否烈属"))) { +// if (StringUtils.equals(dataValue, SalaryOnOffEnum.ON.getDefaultLabel())) { +// employeeDeclareExcel.setMartyrDependents(SalaryOnOffEnum.ON.getValue()); +// } else if (StringUtils.equals(dataValue, SalaryOnOffEnum.OFF.getDefaultLabel())) { +// employeeDeclareExcel.setMartyrDependents(SalaryOnOffEnum.OFF.getValue()); +// } else { +// isError = true; +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(employeeId, 156433, "是否烈属只能填写是与否"), failRowIndex, failRowIndex, j, j); +// } +// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(employeeId, 156413, "烈属证号"))) { +// if (StringUtils.isEmpty(dataValue)) { +// if (Objects.equals(employeeDeclareExcel.getMartyrDependents(), SalaryOnOffEnum.ON.getValue())) { +// isError = true; +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(employeeId, 160514, "「是否烈属」填「是」时,烈属证号必填"), failRowIndex, failRowIndex, j, j); +// } +// } else { +// employeeDeclareExcel.setMartyrDependentsCardNo(dataValue); +// } +// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(employeeId, 156400, "是否孤老"))) { +// if (StringUtils.equals(dataValue, SalaryOnOffEnum.ON.getDefaultLabel())) { +// employeeDeclareExcel.setLonelyOld(SalaryOnOffEnum.ON.getValue()); +// } else if (StringUtils.equals(dataValue, SalaryOnOffEnum.OFF.getDefaultLabel())) { +// employeeDeclareExcel.setLonelyOld(SalaryOnOffEnum.OFF.getValue()); +// } else { +// isError = true; +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(employeeId, 156434, "是否孤老只能填写是与否"), failRowIndex, failRowIndex, j, j); +// } +// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(employeeId, 156402, "是否扣除减除费用"))) { +// if (StringUtils.equals(dataValue, SalaryOnOffEnum.ON.getDefaultLabel())) { +// employeeDeclareExcel.setDeductExpenses(SalaryOnOffEnum.ON.getValue()); +// } else if (StringUtils.equals(dataValue, SalaryOnOffEnum.OFF.getDefaultLabel())) { +// employeeDeclareExcel.setDeductExpenses(SalaryOnOffEnum.OFF.getValue()); +// } else { +// isError = true; +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(employeeId, 156435, "是否扣除减除费用只能填写是与否"), failRowIndex, failRowIndex, j, j); +// } +// } +// } +// if (!isError) { +// if (StringUtils.equals(checkType, "jobNum")) { +// EmployeeDeclarePO employeeDeclare = employeeDeclareMap.get(employeeDeclareExcel.getJobNum()); +// if (employeeDeclare == null) { +// ExtEmployeePO extEmployee = extEmployeeMap.get(employeeDeclareExcel.getJobNum()); +// SimpleEmployee simpleEmployee = simpleEmployeeMap.get(employeeDeclareExcel.getJobNum()); +// if (extEmployee == null && simpleEmployee == null) { +// isError = true; +// String jobNumI18 = SalaryI18nUtil.getI18nLabel(employeeId, 86317, "工号"); +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(employeeId, 156436, "系统内的人员不存在该工号"), failRowIndex, failRowIndex, headers.indexOf(jobNumI18), headers.indexOf(jobNumI18)); +// } else { +// needAddEmployeeDeclares.add(buildEmployeeDeclare(extEmployee, simpleEmployee, +// employeeDeclareExcel, taxAgentId, taxCycle, now, employeeId, tenantKey)); +// } +// } else { +// EmployeeDeclarePO newEmployeeDeclare = new EmployeeDeclarePO(); +// BeanUtils.copyProperties(employeeDeclare, newEmployeeDeclare); +// BeanUtils.copyProperties(employeeDeclareExcel, newEmployeeDeclare); +// newEmployeeDeclare.setNewEmployeeInfo(StringUtils.equals(employeeDeclare.toCompareString(), newEmployeeDeclare.toCompareString()) ? 0 : 1) +// .setUpdateTime(now); +// needUpdateEmployeeDeclares.add(newEmployeeDeclare); +// if (Objects.equals(newEmployeeDeclare.getNewEmployeeInfo(), 1)) { +// newEmployeeDeclare.setDeclareStatus(DeclareStatusEnum.NOT_DECLARE.getValue()); +// newEmployeeDeclare.setDeclareErrorMsg(""); +// } +// } +// } else { +// EmployeeDeclarePO employeeDeclare = employeeDeclareMap.get(employeeDeclareExcel.getCardNum()); +// if (employeeDeclare == null) { +// ExtEmployeePO extEmployee = extEmployeeMap.get(employeeDeclareExcel.getCardNum()); +// SimpleEmployee simpleEmployee = simpleEmployeeMap.get(employeeDeclareExcel.getCardNum()); +// if (extEmployee == null && simpleEmployee == null) { +// isError = true; +// String cardNoI18 = SalaryI18nUtil.getI18nLabel(employeeId, 86318, "证件号码"); +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(employeeId, 156437, "系统内的人员不存在该证件号码"), failRowIndex, failRowIndex, headers.indexOf(cardNoI18), headers.indexOf(cardNoI18)); +// } else { +// needAddEmployeeDeclares.add(buildEmployeeDeclare(extEmployee, simpleEmployee, +// employeeDeclareExcel, taxAgentId, taxCycle, now, employeeId, tenantKey)); +// } +// } else { +// EmployeeDeclarePO newEmployeeDeclare = new EmployeeDeclarePO(); +// BeanUtils.copyProperties(employeeDeclare, newEmployeeDeclare); +// BeanUtils.copyProperties(employeeDeclareExcel, newEmployeeDeclare); +// newEmployeeDeclare.setNewEmployeeInfo(StringUtils.equals(employeeDeclare.toCompareString(), newEmployeeDeclare.toCompareString()) ? 0 : 1) +// .setUpdateTime(now); +// if (Objects.equals(newEmployeeDeclare.getNewEmployeeInfo(), 1)) { +// newEmployeeDeclare.setDeclareStatus(DeclareStatusEnum.NOT_DECLARE.getValue()); +// newEmployeeDeclare.setDeclareErrorMsg(""); +// } +// needUpdateEmployeeDeclares.add(newEmployeeDeclare); +// } +// } +// } +// if (isError) { +// failCount++; +// failRowIndex++; +// errorData.add(map); +// continue; +// } +// successCount++; +// } +// // 如果sheet包含错误数据 +// if (CollectionUtils.isNotEmpty(errorData)) { +// salaryBatchService.createErrorExcelSheet(excelSheet.getHeader(), errorData, excelSheet.getName(), excelComments, errorExcelSheets); +// } +// } +// if (CollectionUtils.isNotEmpty(needAddEmployeeDeclares)) { +// getEmployeeDeclareService(user).saveBatch(needAddEmployeeDeclares); +// } +// if (CollectionUtils.isNotEmpty(needUpdateEmployeeDeclares)) { +// getEmployeeDeclareService(user).updateBatchById(needUpdateEmployeeDeclares); +// } +// // 发送导入回调信息 +// salaryBatchService.sendImportCallBackInfo(message, successCount, failCount, errorExcelSheets); +// } catch (Exception e) { +// log.error("人员报送信息导入失败:{}", e.getMessage(), e); +// salaryBatchService.sendImportCallBackInfo(message, SalaryI18nUtil.getI18nLabel(employeeId, 156438, "人员报送信息导入失败:") + e.getMessage()); +// } +// } +// +// private EmployeeDeclarePO buildEmployeeDeclare(ExtEmployeePO extEmployee, +// EmployeeDeclareExcelDTO employeeDeclareExcel, Long taxAgentId, +// String taxCycle, LocalDateTime now, Long employeeId, String tenantKey) { +// EmployeeDeclarePO employeeDeclare = new EmployeeDeclarePO() +// .setId(IdGenerator.generate()) +// .setTaxAgentId(taxAgentId) +// .setTaxCycle(taxCycle) +// .setTenantKey(tenantKey) +// .setCreator(employeeId) +// .setDeleteType(DeleteTypeEnum.NOT_DELETED.getValue()) +// .setCreateTime(now) +// .setUpdateTime(now); +// BeanUtils.copyProperties(employeeDeclareExcel, employeeDeclare); +// if (extEmployee != null) { +// employeeDeclare.setEmployeeId(extEmployee.getId()) +// .setEmployeeType(EmployeeTypeEnum.EXT_EMPLOYEE.getValue()); +// } +// if (simpleEmployee != null) { +// employeeDeclare.setEmployeeId(simpleEmployee.getEmployeeId()) +// .setEmployeeType(EmployeeTypeEnum.ORGANIZATION.getValue()); +// } +// return employeeDeclare; +// } +// +// private List getImportHeader(Long employeeId, String tenantKey) { +// return Lists.newArrayList( +// SalaryI18nUtil.getI18nLabel(employeeId, 86317, "工号"), +// SalaryI18nUtil.getI18nLabel(employeeId, 85429, "姓名"), +// SalaryI18nUtil.getI18nLabel(employeeId, 105139, "证件类型"), +// SalaryI18nUtil.getI18nLabel(employeeId, 86318, "证件号码"), +// SalaryI18nUtil.getI18nLabel(employeeId, 156394, "人员状态"), +// SalaryI18nUtil.getI18nLabel(employeeId, 156396, "任职受雇从业类型"), +// SalaryI18nUtil.getI18nLabel(employeeId, 187374, "入职年度就业情形"), +// SalaryI18nUtil.getI18nLabel(employeeId, 98621, "手机号码"), +// SalaryI18nUtil.getI18nLabel(employeeId, 156409, "任职受雇从业日期"), +// SalaryI18nUtil.getI18nLabel(employeeId, 95228, "离职日期"), +// SalaryI18nUtil.getI18nLabel(employeeId, 156399, "是否残疾"), +// SalaryI18nUtil.getI18nLabel(employeeId, 156412, "残疾证号"), +// SalaryI18nUtil.getI18nLabel(employeeId, 187385, "是否烈属"), +// SalaryI18nUtil.getI18nLabel(employeeId, 156413, "烈属证号"), +// SalaryI18nUtil.getI18nLabel(employeeId, 156400, "是否孤老"), +// SalaryI18nUtil.getI18nLabel(employeeId, 156402, "是否扣除减除费用")); +// } + + private Map> getHeader(Class clazz) { + Map> headerMap = new HashMap<>(); + // 导出的表头 + List headerList = Lists.newArrayList(); + List dataIndexList = Lists.newArrayList(); + Field[] declaredFields = clazz.getDeclaredFields(); + for (Field declaredField : declaredFields) { + if (!declaredField.isAnnotationPresent(SalaryTableColumn.class)) { + continue; + } + SalaryTableColumn annotation = declaredField.getAnnotation(SalaryTableColumn.class); + headerList.add(annotation.text()); + dataIndexList.add(annotation.column()); + } + headerMap.put("header", headerList); + headerMap.put("dataIndex", dataIndexList); + return headerMap; + } + +// /** +// * 检查表头 +// * +// * @param message +// * @param headers +// * @return +// */ +// private boolean checkHeader(BatchDocumentMessage message, List headers, List headerList) { +// Long employeeId = message.getUserId(); +// String tenantKey = message.getTenantKey(); +// // 缺少的列 +// List lackHeaders = headerList.stream() +// .filter(header -> !headers.contains(header)) +// .collect(Collectors.toList()); +// if (CollectionUtils.isNotEmpty(lackHeaders)) { +// // 发送导入回调信息 +// String errorMsg = SalaryI18nUtil.getI18nLabel(employeeId, 101850, "缺少如下列,请检查:") + Joiner.on(",").join(lackHeaders); +// salaryBatchService.sendImportCallBackInfo(message, errorMsg); +// return false; +// } +// return true; +// } +} diff --git a/src/com/engine/salary/service/impl/EmployeeDeclareServiceImpl.java b/src/com/engine/salary/service/impl/EmployeeDeclareServiceImpl.java index fbb34e775..32bf9a06b 100644 --- a/src/com/engine/salary/service/impl/EmployeeDeclareServiceImpl.java +++ b/src/com/engine/salary/service/impl/EmployeeDeclareServiceImpl.java @@ -244,8 +244,12 @@ public class EmployeeDeclareServiceImpl extends Service implements EmployeeDecla employeeDeclare.setId(originEmployeeDeclare.getId()); employeeDeclare.setEmployeeId(originEmployeeDeclare.getEmployeeId()); employeeDeclare.setEmployeeType(originEmployeeDeclare.getEmployeeType()); - employeeDeclare.setSuccessfullyDeclared(originEmployeeDeclare.getSuccessfullyDeclared()); + employeeDeclare.setTenantKey(originEmployeeDeclare.getTenantKey()); + employeeDeclare.setCreator(originEmployeeDeclare.getCreator()); + employeeDeclare.setDeleteType(DeleteTypeEnum.NOT_DELETED.getValue()); + employeeDeclare.setCreateTime(originEmployeeDeclare.getCreateTime()); employeeDeclare.setUpdateTime(now); + employeeDeclare.setSuccessfullyDeclared(originEmployeeDeclare.getSuccessfullyDeclared()); // 判断本次编辑是否有修改人员信息 if (!StringUtils.equals(employeeDeclare.toCompareString(), originEmployeeDeclare.toCompareString())) { employeeDeclare.setNewEmployeeInfo(1); diff --git a/src/com/engine/salary/web/EmployeeDeclareController.java b/src/com/engine/salary/web/EmployeeDeclareController.java index bd8b5bbb3..97f338abf 100644 --- a/src/com/engine/salary/web/EmployeeDeclareController.java +++ b/src/com/engine/salary/web/EmployeeDeclareController.java @@ -12,6 +12,8 @@ import com.engine.salary.util.page.PageInfo; import com.engine.salary.wrapper.EmployeeDeclareWrapper; import io.swagger.v3.oas.annotations.parameters.RequestBody; import lombok.extern.slf4j.Slf4j; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; import weaver.hrm.HrmUserVarify; import weaver.hrm.User; @@ -20,6 +22,11 @@ import javax.servlet.http.HttpServletResponse; import javax.ws.rs.*; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; +import javax.ws.rs.core.StreamingOutput; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.time.LocalDate; import java.util.Collection; import java.util.Map; @@ -265,19 +272,38 @@ public class EmployeeDeclareController { return new ResponseResult(user).run(getEmployeeDeclareWrapper(user)::getCompanyEmployee, param); } -// /** -// * 人员报送-导出全部人员 -// * -// * @param queryParam 导出参数 -// * @return -// */ -// @POST -// @Path("/export") -// @Produces(MediaType.APPLICATION_JSON) -// public String export(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody EmployeeDeclareListQueryParam queryParam) { -// Map exportMap = employeeDeclareWrapper.export(queryParam, UserContext.getCurrentUser()); -// return WeaResult.success(exportMap); -// } + /** + * 人员报送-导出全部人员 + * + * @param queryParam 导出参数 + * @return + */ + @POST + @Path("/export") + @Produces(MediaType.APPLICATION_OCTET_STREAM) + public Response export(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody EmployeeDeclareListQueryParam queryParam) { + + try { + User user = HrmUserVarify.getUser(request, response); + XSSFWorkbook workbook = getEmployeeDeclareWrapper(user).export(queryParam); + String fileName = "人员信息采集-" + LocalDate.now(); + try { + fileName = URLEncoder.encode(fileName + ".xlsx", "UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + + StreamingOutput output = outputStream -> { + workbook.write(outputStream); + outputStream.flush(); + }; + response.setContentType("application/octet-stream"); + return Response.ok(output).header("Content-disposition", "attachment;filename=" + fileName).header("Cache-Control", "no-cache").build(); + } catch (Exception e) { + log.error("人员报送-导出全部人员异常", e); + throw e; + } + } // /** // * 人员报送-导出本月新增人员 diff --git a/src/com/engine/salary/wrapper/EmployeeDeclareWrapper.java b/src/com/engine/salary/wrapper/EmployeeDeclareWrapper.java index 57442d505..5c8fb6c19 100644 --- a/src/com/engine/salary/wrapper/EmployeeDeclareWrapper.java +++ b/src/com/engine/salary/wrapper/EmployeeDeclareWrapper.java @@ -5,7 +5,6 @@ import com.cloudstore.eccom.result.WeaResultMsg; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.cache.SalaryCacheKey; -import com.engine.salary.remote.tax.client.EmployeeClient; import com.engine.salary.component.SalaryWeaTable; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.employeedeclare.bo.EmployeeDeclareList; @@ -17,6 +16,7 @@ import com.engine.salary.enums.SalaryOnOffEnum; import com.engine.salary.enums.employeedeclare.*; import com.engine.salary.enums.salaryaccounting.EmployeeTypeEnum; import com.engine.salary.exception.SalaryRunTimeException; +import com.engine.salary.remote.tax.client.EmployeeClient; import com.engine.salary.remote.tax.response.employee.GetCompanyEmployeeResponse; import com.engine.salary.service.*; import com.engine.salary.service.impl.*; @@ -35,6 +35,7 @@ import com.weaver.util.threadPool.constant.ModulePoolEnum; import com.weaver.util.threadPool.entity.LocalRunnable; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; import weaver.hrm.User; import java.util.*; @@ -71,6 +72,12 @@ public class EmployeeDeclareWrapper extends Service { return ServiceUtil.getService(SalaryCacheServiceImpl.class, user); } + private EmployeeDeclareExcelService employeeDeclareExcelService; + + private EmployeeDeclareExcelService getEmployeeDeclareExcelService(User user) { + return ServiceUtil.getService(EmployeeDeclareExcelServiceImpl.class, user); + } + /** * 人员报送的个税扣缴义务人列表 * @@ -550,28 +557,16 @@ public class EmployeeDeclareWrapper extends Service { return companyEmployee; } -// /** -// * 人员报送-导出本月全部的人员 -// * -// * @param queryParam -// * @param simpleEmployee -// * @return -// */ -// public Map export(EmployeeDeclareListQueryParam queryParam, SimpleEmployee simpleEmployee) { -// ExcelExportParam excelExportParam = new ExcelExportParam() -// .setBiz(String.valueOf(IdGenerator.generate())) -// .setModule(EntityType.hrmsalary.name()) -// .setFunction("exportEmployeeDeclare"); -// LocalRunnable localRunnable = new LocalRunnable() { -// @Override -// public void execute() { -// employeeDeclareExcelService.export(excelExportParam, queryParam, simpleEmployee); -// } -// }; -// ThreadPoolUtil.fixedPoolExecute(ModulePoolEnum.OTHER, "exportEmployeeDeclare", localRunnable); -// return JsonUtil.parseMap(excelExportParam, Object.class); -// } -// + /** + * 人员报送-导出本月全部的人员 + * + * @param queryParam + * @return + */ + public XSSFWorkbook export(EmployeeDeclareListQueryParam queryParam) { + return getEmployeeDeclareExcelService(user).export(queryParam); + } + // /** // * 人员报送-导出本月新增的人员 // *