diff --git a/src/com/engine/salary/entity/employeedeclare/dto/EmployeeDeclareExcelDTO.java b/src/com/engine/salary/entity/employeedeclare/dto/EmployeeDeclareExcelDTO.java new file mode 100644 index 000000000..5e1c658d7 --- /dev/null +++ b/src/com/engine/salary/entity/employeedeclare/dto/EmployeeDeclareExcelDTO.java @@ -0,0 +1,126 @@ +package com.engine.salary.entity.employeedeclare.dto; + +import com.engine.salary.annotation.SalaryTable; +import com.engine.salary.annotation.SalaryTableColumn; +import com.engine.salary.annotation.TableTitle; +import com.engine.salary.enums.employeedeclare.DeclareStatusEnum; +import com.engine.salary.enums.salaryaccounting.EmployeeTypeEnum; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.util.Set; + +/** + * 人员报送(人员)列表 + *

Copyright: Copyright (c) 2023

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Accessors(chain = true) +@SalaryTable(pageId = "a4f89287-289scf07669d7a23de0ef8u8s2710oe7") +public class EmployeeDeclareExcelDTO { + + // 主键id + private Long id; + + // 人员ID + private Long employeeId; + + // 人员类型 + private EmployeeTypeEnum employeeType; + + + // 姓名 + @SalaryTableColumn(text = "姓名", width = "10%", column = "employeeName") + @TableTitle(title = "姓名", dataIndex = "employeeName", key = "employeeName") + private String employeeName; + + // 分部 + @SalaryTableColumn(text = "分部", width = "10%", column = "subCompanyName") + @TableTitle(title = "分部", dataIndex = "subCompanyName", key = "subCompanyName") + private String subCompanyName; + + // 部门 + @SalaryTableColumn(text = "部门", width = "10%", column = "departmentName") + @TableTitle(title = "部门", dataIndex = "departmentName", key = "departmentName") + private String departmentName; + + // 个税扣缴义务人 + @SalaryTableColumn(text = "个税扣缴义务人", width = "10%", column = "taxAgentName") + @TableTitle(title = "个税扣缴义务人", dataIndex = "taxAgentName", key = "taxAgentName") + private String taxAgentName; + + // 工号 + @SalaryTableColumn(text = "工号", width = "10%", column = "jobNum") + @TableTitle(title = "工号", dataIndex = "jobNum", key = "jobNum") + private String jobNum; + + // 证件类型 + @SalaryTableColumn(text = "证件类型", width = "10%", column = "cardType") + @TableTitle(title = "证件类型", dataIndex = "cardType", key = "cardType") + private String cardType; + + // 证件号码 + @SalaryTableColumn(text = "证件号码", width = "10%", column = "cardNum") + @TableTitle(title = "证件号码", dataIndex = "cardNum", key = "cardNum") + private String cardNum; + + // 性别 + @SalaryTableColumn(text = "性别", width = "10%", column = "gender") + @TableTitle(title = "性别", dataIndex = "gender", key = "gender") + private String gender; + + // 出生日期 + @SalaryTableColumn(text = "出生日期", width = "10%", column = "birthday") + @TableTitle(title = "出生日期", dataIndex = "birthday", key = "birthday") + private String birthday; + + // 人员状态 + @SalaryTableColumn(text = "人员状态", width = "10%", column = "employmentStatus") + @TableTitle(title = "人员状态", dataIndex = "employmentStatus", key = "employmentStatus") + private String employmentStatus; + + // 手机号码 + @SalaryTableColumn(text = "手机号码", width = "10%", column = "mobile") + @TableTitle(title = "手机号码", dataIndex = "mobile", key = "mobile") + private String mobile; + + // 任职受雇从业类型 + @SalaryTableColumn(text = "任职受雇从业类型", width = "10%", column = "employmentType") + @TableTitle(title = "任职受雇从业类型", dataIndex = "employmentType", key = "employmentType") + private String employmentType; + + // 任职受雇从业日期 + @SalaryTableColumn(text = "任职受雇从业日期", width = "10%", column = "employmentDate") + @TableTitle(title = "任职受雇从业日期", dataIndex = "employmentDate", key = "employmentDate") + private String employmentDate; + + + // 离职日期 + @SalaryTableColumn(text = "离职日期", width = "10%", column = "dismissDate") + @TableTitle(title = "离职日期", dataIndex = "dismissDate", key = "dismissDate") + private String dismissDate; + + // 申报状态 + private DeclareStatusEnum declareStatus; + + // 申报状态 + @SalaryTableColumn(text = "申报状态", width = "10%", column = "declareStatusDesc") + @TableTitle(title = "申报状态", dataIndex = "declareStatusDesc", key = "declareStatusDesc") + private String declareStatusDesc; + + // 申报失败原因 + private String declareErrorMsg; + + // 编辑过的字段 + private Set updatedDataIndexSet; +} diff --git a/src/com/engine/salary/entity/employeedeclare/param/EmployeeDeclareImportEmployeeParam.java b/src/com/engine/salary/entity/employeedeclare/param/EmployeeDeclareImportEmployeeParam.java new file mode 100644 index 000000000..16f994ee5 --- /dev/null +++ b/src/com/engine/salary/entity/employeedeclare/param/EmployeeDeclareImportEmployeeParam.java @@ -0,0 +1,30 @@ +package com.engine.salary.entity.employeedeclare.param; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * 人员报送(人员)导入参数 + *

Copyright: Copyright (c) 2023

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class EmployeeDeclareImportEmployeeParam { + //上传文件id + String imageId; + + Long taxAgentId; + + Date taxCycle; + +} diff --git a/src/com/engine/salary/entity/employeedeclare/param/EmployeeDeclareImportParam.java b/src/com/engine/salary/entity/employeedeclare/param/EmployeeDeclareImportParam.java new file mode 100644 index 000000000..72a7bd9f3 --- /dev/null +++ b/src/com/engine/salary/entity/employeedeclare/param/EmployeeDeclareImportParam.java @@ -0,0 +1,18 @@ +package com.engine.salary.entity.employeedeclare.param; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: 人员报送导入参数 + * @author: xiajun + * @modified By: xiajun + * @date: Created in 2022/11/21 4:58 PM + * @version:v1.0 + */ +@Data +public class EmployeeDeclareImportParam extends EmployeeDeclareListQueryParam { + + @ApiModelProperty("是否导出现有数据") + private String exportData; +} diff --git a/src/com/engine/salary/service/EmployeeDeclareExcelService.java b/src/com/engine/salary/service/EmployeeDeclareExcelService.java index 6b0f75775..f48aa1199 100644 --- a/src/com/engine/salary/service/EmployeeDeclareExcelService.java +++ b/src/com/engine/salary/service/EmployeeDeclareExcelService.java @@ -1,5 +1,6 @@ package com.engine.salary.service; +import com.engine.salary.entity.employeedeclare.param.EmployeeDeclareImportParam; import com.engine.salary.entity.employeedeclare.param.EmployeeDeclareListQueryParam; import org.apache.poi.xssf.usermodel.XSSFWorkbook; @@ -18,7 +19,7 @@ public interface EmployeeDeclareExcelService { * @param importParam * @return */ -// Map exportTemplate(EmployeeDeclareImportParam importParam); + XSSFWorkbook exportTemplate(EmployeeDeclareImportParam importParam); /** * 导出人员信息采集-全部 diff --git a/src/com/engine/salary/service/impl/EmployeeDeclareExcelServiceImpl.java b/src/com/engine/salary/service/impl/EmployeeDeclareExcelServiceImpl.java index 07490e5e1..15afa6d35 100644 --- a/src/com/engine/salary/service/impl/EmployeeDeclareExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/EmployeeDeclareExcelServiceImpl.java @@ -3,33 +3,50 @@ package com.engine.salary.service.impl; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.entity.employeedeclare.dto.EmployeeDeclareListDTO; +import com.engine.salary.entity.employeedeclare.param.EmployeeDeclareImportParam; import com.engine.salary.entity.employeedeclare.param.EmployeeDeclareListQueryParam; import com.engine.salary.entity.employeedeclare.po.EmployeeDeclarePO; +import com.engine.salary.enums.employeedeclare.CardTypeEnum; +import com.engine.salary.enums.employeedeclare.EmploymentStatusEnum; +import com.engine.salary.enums.employeedeclare.EmploymentTypeEnum; 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.SalaryEnumUtil; +import com.engine.salary.util.SalaryI18nUtil; +import com.engine.salary.util.excel.ExcelSheetData; import com.engine.salary.util.excel.ExcelUtil; +import com.google.common.base.Joiner; +import com.google.common.collect.Lists; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import weaver.general.Util; import weaver.hrm.User; +import java.util.ArrayList; +import java.util.Collections; import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; /** - * @description: 人员报送(人员)导入导出 - * @author: xiajun - * @modified By: xiajun - * @date: Created in 9/7/22 5:39 PM - * @version:v1.0 - */ + * 人员报送(人员)导入导出 + *

Copyright: Copyright (c) 2023

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.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); } @@ -39,67 +56,45 @@ public class EmployeeDeclareExcelServiceImpl extends Service implements Employee 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 exportTemplate(EmployeeDeclareImportParam importParam) { + // 查询人员 + 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导出数据 + ExcelSheetData excelSheetData = new ExcelSheetData(); + excelSheetData.setSheetName(SalaryI18nUtil.getI18nLabel(156425, "人员信息采集")); + excelSheetData.setHeaders(getImportHeader()); + excelSheetData.setRows(rows); + return ExcelUtil.genWorkbook(excelSheetData); + } @Override public XSSFWorkbook export(EmployeeDeclareListQueryParam queryParam) { @@ -206,59 +201,46 @@ public class EmployeeDeclareExcelServiceImpl extends Service implements Employee // } -// -// @Transactional(rollbackFor = Exception.class) -// @BatchImportHandler("importEmployeeDeclare") -// public void importEmployeeDeclare() { -// BatchDocumentMessage message = BatchImportContext.getBatchDocumentMessage(); -// Long employeeId = message.getUserId(); -// String tenantKey = message.getTenantKey(); +// public Map importEmployeeDeclare(EmployeeDeclareImportEmployeeParam param) { // try { -// LocalDateTime now = LocalDateTime.now(); -// Map paramMap = JsonUtil.parseMap(message.getUploadSet().getCustomData(), Object.class); +// Date now = new Date(); // // 个税扣缴义务人id -// Long taxAgentId = Util.getLongValue(Util.null2String(paramMap.get("taxAgentId"))); -// TaxAgentPO taxAgent = getTaxAgentService(user).getById(taxAgentId, employeeId, tenantKey); +// Long taxAgentId = param.getTaxAgentId(); +// TaxAgentPO taxAgent = getTaxAgentService(user).getById(taxAgentId); // if (taxAgent == null) { -// salaryBatchService.sendImportCallBackInfo(message, SalaryI18nUtil.getI18nLabel(employeeId, 187469, "参数错误,无法找到个税扣缴义务人")); -// return; +// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(111111, "参数错误,无法找到个税扣缴义务人")); // } // // 税款所属期 -// String taxCycle = Util.null2String(paramMap.get("taxCycle")); -// if (!SalaryDateUtil.checkYearMonth(taxCycle)) { -// salaryBatchService.sendImportCallBackInfo(message, SalaryI18nUtil.getI18nLabel(employeeId, 156384, "参数错误,税款所属期参数格式错误")); -// return; +// Date taxCycle = param.getTaxCycle(); +// if (taxCycle == null) { +// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(111111, "参数错误,税款所属期参数格式错误")); // } // +// InputStream fileInputStream = null; +// fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(param.getImageId())); +// // // 导出模板中的表头 -// List headerList = getImportHeader(employeeId, tenantKey); +// List headerList = getImportHeader(); // // 查询所有的人员 -// List orgEmployeeIds = hrmCommonEmployeeService.getAllEmployee(tenantKey); -// List simpleEmployees = hrmCommonEmployeeService.getEmployeeByIds(orgEmployeeIds, tenantKey); -// // 查询所有的外部人员 -// List extEmployees = extEmployeeService.listAll(tenantKey); +// List simpleEmployees = getSalaryEmployeeService(user).listAll(UseEmployeeTypeEnum.ALL); // // 查询人员报送表的人员 -// List employeeDeclares = getEmployeeDeclareService(user).listByTaxCycleAndTaxAgentId(YearMonth.parse(taxCycle), -// taxAgentId, tenantKey); +// List employeeDeclares = getEmployeeDeclareService(user).listByTaxCycleAndTaxAgentId(taxCycle, taxAgentId); // // 校验字段 // String checkType = Util.null2String(paramMap.getOrDefault("checkType", "jobNum")); -// Map extEmployeeMap = Maps.newHashMap(); -// Map simpleEmployeeMap = 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); +// List simpleUserInfos = getSalaryEmployeeService(user).listByEmployeeIds(orgEmployeeIds); +// 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); // // } @@ -269,263 +251,308 @@ public class EmployeeDeclareExcelServiceImpl extends Service implements Employee // // 索引(用于计算进度) // int index = 0; // // 失败的数量 -// int failCount = 0; +// int errorCount = 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> excelComments = new ArrayList<>(); +// // 错误excel内容 +// List errorData = new ArrayList<>(); +// +// Sheet sheet = ExcelSupport.parseFile(fileInputStream, 0, EXCEL_TYPE_XLSX); +// // 表头 +// List headers = ExcelSupport.getSheetHeader(sheet, 0); +// +// // 检查表头 +// String isValidHeader = checkHeader(headers, headerList); +// if (StringUtils.isNotBlank(isValidHeader)) { +// Map apidatas = new HashMap(); +// apidatas.put("successCount", successCount); +// apidatas.put("errorCount", errorCount); +// +// Map errorMessageMap = Maps.newHashMap(); +// errorMessageMap.put("message", isValidHeader); +// excelComments.add(errorMessageMap); +// apidatas.put("errorData", excelComments); +// return apidatas; +// } +// +// // 数据 +// List data = ExcelParseHelper.parse2Map(fileInputStream, EmployeeDeclareExcelDTO.class, 0, 1, 14, "1.xlsx"); +// if (CollectionUtils.isEmpty(data)) { +// Map apidatas = new HashMap(); +// apidatas.put("successCount", successCount); +// apidatas.put("errorCount", errorCount); +// return apidatas; +// } +// +// for (int i = 0; i < data.size(); i++) { +// EmployeeDeclareExcelDTO employeeDeclareExcelDTO = data.get(i); +// +// employeeDeclareExcelDTO.getEmployeeName() +// +// //筛选导入人员信息可以在人力资源池中匹配到的人员信息 +// List employeeSameIds = getSalaryEmployeeService(user).matchImportEmployee(simpleEmployees, userName, deparmentName, mobile, workcode, null); +// +// if (StringUtils.isBlank(userName) && "0".equals(confValue)) { +// //姓名 不能为空 +// //错误消息对象 +// Map errorMessageMap = Maps.newHashMap(); +// errorMessageMap.put("message", rowIndex + "姓名不能为空"); +// errorData.add(errorMessageMap); +// errorSum += 1; +// } else if (CollectionUtils.isEmpty(employeeSameIds)) { +// Map errorMessageMap = Maps.newHashMap(); +// errorMessageMap.put("message", rowIndex + "员工信息不存在"); +// errorData.add(errorMessageMap); +// errorSum += 1; +// } else if (employeeSameIds.size() > 1) { +// //存在离职和在职状态取在职状态 +// employeeSameIds = employeeSameIds.stream() +// .filter(e -> UserStatusEnum.getNormalStatus().contains(e.getStatus())) +// .collect(Collectors.toList()); +// if (employeeSameIds.size() != 1) { +// Map errorMessageMap = Maps.newHashMap(); +// errorMessageMap.put("message", rowIndex + "员工信息不存在或者存在多个员工"); +// errorData.add(errorMessageMap); +// errorSum += 1; +// } else { +// Long employeeId = CollectionUtils.isNotEmpty(employeeSameIds) && employeeSameIds.size() == 1 ? employeeSameIds.get(0).getEmployeeId() : null; +// addUpDeduction.setEmployeeId(employeeId); +// } +// } else { +// Long employeeId = CollectionUtils.isNotEmpty(employeeSameIds) && employeeSameIds.size() == 1 ? employeeSameIds.get(0).getEmployeeId() : null; +// if (employeeId != null && employeeId > 0) { +// addUpDeduction.setEmployeeId(employeeId); +// } else { +// //姓名错误,系统内不存在该姓名 +// Map errorMessageMap = Maps.newHashMap(); +// errorMessageMap.put("message", rowIndex + "姓名错误,系统内不存在该姓名"); +// errorData.add(errorMessageMap); +// errorSum += 1; +// } // } -// // 表头 -// 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); -// } +// +// +// // 数据是否存在错误 +// boolean isError = false; +// if (StringUtils.equals(employeeDeclareExcelDTO.getJobNum(), SalaryI18nUtil.getI18nLabel(86317, "工号"))) { +// if (StringUtils.isEmpty(employeeDeclareExcelDTO.getJobNum()) ) { +// isError = true; +// +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(136250, "工号不能为空"), failRowIndex, failRowIndex, j, j); +// } +// employeeDeclareExcel.setJobNum(dataValue); +// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(85429, "姓名"))) { +// if (StringUtils.isEmpty(dataValue)) { +// isError = true; +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(102838, "姓名不能为空"), failRowIndex, failRowIndex, j, j); +// } else { +// employeeDeclareExcel.setEmployeeName(dataValue); +// } +// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(105139, "证件类型"))) { +// employeeDeclareExcel.setCardType(CardTypeEnum.RESIDENT_IDENTITY_CARDS.getValue()); +// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(86318, "证件号码"))) { +// if (StringUtils.isEmpty(dataValue)) { +// isError = true; +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(156386, "证件号码不能为空"), failRowIndex, failRowIndex, j, j); +// } else if (!SalaryCardUtil.checkIdNum(dataValue)) { +// isError = true; +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(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(156394, "人员状态"))) { +// boolean legalDataValue = false; +// for (EmploymentStatusEnum employmentStatusEnum : EmploymentStatusEnum.values()) { +// if (StringUtils.equals(dataValue, employmentStatusEnum.getDefaultLabel())) { +// legalDataValue = true; +// employeeDeclareExcel.setEmploymentStatus(employmentStatusEnum.getValue()); +// break; // } // } -// 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)); -// } +// if (!legalDataValue) { +// isError = true; +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(156430, "人员状态只能填写正常或非正常"), failRowIndex, failRowIndex, j, j); +// } +// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(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(156431, "任职受雇从业类型填写错误"), failRowIndex, failRowIndex, j, j); +// } +// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(187374, "入职年度就业情形"))) { +// employeeDeclareExcel.setEmploymentFirstYear(dataValue); +// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(98621, "手机号码"))) { +// if (StringUtils.isEmpty(dataValue)) { +// isError = true; +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(106429, "手机号码不能为空"), failRowIndex, failRowIndex, j, j); +// } else if (!SalaryCardUtil.checkMobile(dataValue)) { +// isError = true; +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(160510, "手机号码格式不正确"), failRowIndex, failRowIndex, j, j); +// } else { +// employeeDeclareExcel.setMobile(dataValue); +// } +// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(156409, "任职受雇从业日期"))) { +// if (StringUtils.isEmpty(dataValue)) { +// if (!Objects.equals(employeeDeclareExcel.getEmploymentType(), EmploymentTypeEnum.OTHER.getValue())) { +// isError = true; +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(160511, "任职受雇从业类型不为「其他」时,任职受雇从业日期为必填"), failRowIndex, failRowIndex, j, j); +// } +// } else { +// if (!SalaryDateUtil.checkDay(dataValue)) { +// isError = true; +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(156432, "日期格式不正确"), failRowIndex, failRowIndex, j, j); +// } else { +// employeeDeclareExcel.setEmploymentDate(LocalDate.parse(dataValue)); +// } +// } +// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(95228, "离职日期"))) { +// if (StringUtils.isEmpty(dataValue)) { +// if (Objects.equals(employeeDeclareExcel.getEmploymentStatus(), EmploymentStatusEnum.ABNORMAL.getValue())) { +// isError = true; +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(160512, "人员状态为非正常时,离职日期必填"), failRowIndex, failRowIndex, j, j); +// } +// } else { +// if (!SalaryDateUtil.checkDay(dataValue)) { +// isError = true; +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(156432, "日期格式不正确"), failRowIndex, failRowIndex, j, j); +// } else { +// employeeDeclareExcel.setDismissDate(LocalDate.parse(dataValue)); +// } +// } +// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(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(156433, "是否残疾只能填写是与否"), failRowIndex, failRowIndex, j, j); +// } +// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(156412, "残疾证号"))) { +// if (StringUtils.isEmpty(dataValue)) { +// if (Objects.equals(employeeDeclareExcel.getDisability(), SalaryOnOffEnum.ON.getValue())) { +// isError = true; +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(160513, "「是否残疾」填「是」时,残疾证号必填"), failRowIndex, failRowIndex, j, j); +// } +// } else { +// employeeDeclareExcel.setDisabilityCardNo(dataValue); +// } +// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(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(156433, "是否烈属只能填写是与否"), failRowIndex, failRowIndex, j, j); +// } +// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(156413, "烈属证号"))) { +// if (StringUtils.isEmpty(dataValue)) { +// if (Objects.equals(employeeDeclareExcel.getMartyrDependents(), SalaryOnOffEnum.ON.getValue())) { +// isError = true; +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(160514, "「是否烈属」填「是」时,烈属证号必填"), failRowIndex, failRowIndex, j, j); +// } +// } else { +// employeeDeclareExcel.setMartyrDependentsCardNo(dataValue); +// } +// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(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(156434, "是否孤老只能填写是与否"), failRowIndex, failRowIndex, j, j); +// } +// } else if (StringUtils.equals(dataKey, SalaryI18nUtil.getI18nLabel(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(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(86317, "工号"); +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(156436, "系统内的人员不存在该工号"), failRowIndex, failRowIndex, headers.indexOf(jobNumI18), headers.indexOf(jobNumI18)); // } 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(""); -// } +// needAddEmployeeDeclares.add(buildEmployeeDeclare(extEmployee, simpleEmployee, +// employeeDeclareExcel, taxAgentId, taxCycle, now, employeeId)); // } // } 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); +// 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(86318, "证件号码"); +// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(156437, "系统内的人员不存在该证件号码"), failRowIndex, failRowIndex, headers.indexOf(cardNoI18), headers.indexOf(cardNoI18)); +// } else { +// needAddEmployeeDeclares.add(buildEmployeeDeclare(extEmployee, simpleEmployee, +// employeeDeclareExcel, taxAgentId, taxCycle, now, employeeId)); +// } +// } 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 (isError) { +// errorCount++; +// 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); // } @@ -533,16 +560,16 @@ public class EmployeeDeclareExcelServiceImpl extends Service implements Employee // getEmployeeDeclareService(user).updateBatchById(needUpdateEmployeeDeclares); // } // // 发送导入回调信息 -// salaryBatchService.sendImportCallBackInfo(message, successCount, failCount, errorExcelSheets); +// salaryBatchService.sendImportCallBackInfo(message, successCount, errorCount, errorExcelSheets); // } catch (Exception e) { // log.error("人员报送信息导入失败:{}", e.getMessage(), e); -// salaryBatchService.sendImportCallBackInfo(message, SalaryI18nUtil.getI18nLabel(employeeId, 156438, "人员报送信息导入失败:") + e.getMessage()); +// salaryBatchService.sendImportCallBackInfo(message, SalaryI18nUtil.getI18nLabel(156438, "人员报送信息导入失败:") + e.getMessage()); // } // } // // private EmployeeDeclarePO buildEmployeeDeclare(ExtEmployeePO extEmployee, // EmployeeDeclareExcelDTO employeeDeclareExcel, Long taxAgentId, -// String taxCycle, LocalDateTime now, Long employeeId, String tenantKey) { +// String taxCycle, LocalDateTime now, Long String tenantKey) { // EmployeeDeclarePO employeeDeclare = new EmployeeDeclarePO() // .setId(IdGenerator.generate()) // .setTaxAgentId(taxAgentId) @@ -563,49 +590,47 @@ public class EmployeeDeclareExcelServiceImpl extends Service implements Employee // } // 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 List getImportHeader() { + List headers = new ArrayList<>(); + + headers.add(SalaryI18nUtil.getI18nLabel(86317, "工号")); + headers.add(SalaryI18nUtil.getI18nLabel(85429, "姓名")); + headers.add(SalaryI18nUtil.getI18nLabel(105139, "证件类型")); + headers.add(SalaryI18nUtil.getI18nLabel(86318, "证件号码")); + headers.add(SalaryI18nUtil.getI18nLabel(156394, "人员状态")); + headers.add(SalaryI18nUtil.getI18nLabel(156396, "任职受雇从业类型")); + headers.add(SalaryI18nUtil.getI18nLabel(187374, "入职年度就业情形")); + headers.add(SalaryI18nUtil.getI18nLabel(98621, "手机号码")); + headers.add(SalaryI18nUtil.getI18nLabel(156409, "任职受雇从业日期")); + headers.add(SalaryI18nUtil.getI18nLabel(95228, "离职日期")); + headers.add(SalaryI18nUtil.getI18nLabel(156399, "是否残疾")); + headers.add(SalaryI18nUtil.getI18nLabel(156412, "残疾证号")); + headers.add(SalaryI18nUtil.getI18nLabel(187385, "是否烈属")); + headers.add(SalaryI18nUtil.getI18nLabel(156413, "烈属证号")); + headers.add(SalaryI18nUtil.getI18nLabel(156400, "是否孤老")); + headers.add(SalaryI18nUtil.getI18nLabel(156402, "是否扣除减除费用")); + + return headers; + + } - -// /** -// * 检查表头 -// * -// * @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; -// } + /** + * 检查表头 + * + * @param headers + * @return + */ + private String checkHeader(List headers, List headerList) { + // 缺少的列 + List lackHeaders = headerList.stream() + .filter(header -> !headers.contains(header)) + .collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(lackHeaders)) { + // 发送导入回调信息 + return SalaryI18nUtil.getI18nLabel(101850, "缺少如下列,请检查:") + Joiner.on(",").join((Iterable) lackHeaders); + } + return null; + } } diff --git a/src/com/engine/salary/service/impl/TaxDeclarationExcelServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclarationExcelServiceImpl.java index 8a7e8a3e3..72597d4f2 100644 --- a/src/com/engine/salary/service/impl/TaxDeclarationExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxDeclarationExcelServiceImpl.java @@ -138,7 +138,7 @@ public class TaxDeclarationExcelServiceImpl extends Service implements TaxDeclar private ExcelSheetData getExcelSheetData(Class clazz, List dtoList) { // 导出的表头 - List headerList = Lists.newArrayList(); + List headerList = Lists.newArrayList(); List dataIndexList = Lists.newArrayList(); parseHeader(clazz, headerList, dataIndexList); // 导出的数据 @@ -165,14 +165,14 @@ public class TaxDeclarationExcelServiceImpl extends Service implements TaxDeclar * @param dataIndexList * @param */ - private void parseHeader(Class clazz, List headerList, List dataIndexList) { + private void parseHeader(Class clazz, List headerList, List dataIndexList) { Field[] declaredFields = clazz.getDeclaredFields(); for (Field declaredField : declaredFields) { if (!declaredField.isAnnotationPresent(SalaryTableColumn.class)) { continue; } SalaryTableColumn annotation = declaredField.getAnnotation(SalaryTableColumn.class); - headerList.add(SalaryI18nUtil.getI18nLabel((int) annotation.labelId(), annotation.text())); + headerList.add(SalaryI18nUtil.getI18nLabel(annotation.labelId(), annotation.text())); dataIndexList.add(declaredField.getName()); } } diff --git a/src/com/engine/salary/util/excel/ExcelSheetData.java b/src/com/engine/salary/util/excel/ExcelSheetData.java index f4cf615ea..87a827d55 100644 --- a/src/com/engine/salary/util/excel/ExcelSheetData.java +++ b/src/com/engine/salary/util/excel/ExcelSheetData.java @@ -8,7 +8,7 @@ import java.util.List; public class ExcelSheetData { private String sheetName; - private List headers; + private List headers; private List> rows; diff --git a/src/com/engine/salary/util/excel/ExcelUtil.java b/src/com/engine/salary/util/excel/ExcelUtil.java index 5126cfc96..b9a0c5d2c 100644 --- a/src/com/engine/salary/util/excel/ExcelUtil.java +++ b/src/com/engine/salary/util/excel/ExcelUtil.java @@ -274,7 +274,7 @@ public class ExcelUtil { public static XSSFWorkbook genWorkbook(ExcelSheetData excelSheetData) { List> list = new ArrayList<>(); - list.add(Collections.singletonList(excelSheetData.getHeaders())); + list.add(excelSheetData.getHeaders()); list.addAll(excelSheetData.getRows()); return genWorkbookV2(list, excelSheetData.getSheetName()); } diff --git a/src/com/engine/salary/web/EmployeeDeclareController.java b/src/com/engine/salary/web/EmployeeDeclareController.java index 97f338abf..c2c2703e6 100644 --- a/src/com/engine/salary/web/EmployeeDeclareController.java +++ b/src/com/engine/salary/web/EmployeeDeclareController.java @@ -12,7 +12,6 @@ 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; @@ -272,6 +271,39 @@ public class EmployeeDeclareController { return new ResponseResult(user).run(getEmployeeDeclareWrapper(user)::getCompanyEmployee, param); } + /** + * 人员报送-下载导入模板 + * + * @param queryParam 导出参数 + * @return + */ + @POST + @Path("/exportTemplate") + @Produces(MediaType.APPLICATION_OCTET_STREAM) + public Response exportTemplate(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody EmployeeDeclareImportParam queryParam) { + + try { + User user = HrmUserVarify.getUser(request, response); + XSSFWorkbook workbook = getEmployeeDeclareWrapper(user).exportTemplate(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; + } + } + /** * 人员报送-导出全部人员 * @@ -281,11 +313,11 @@ public class EmployeeDeclareController { @POST @Path("/export") @Produces(MediaType.APPLICATION_OCTET_STREAM) - public Response export(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody EmployeeDeclareListQueryParam queryParam) { + public Response export(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody EmployeeDeclareListQueryParam param) { try { User user = HrmUserVarify.getUser(request, response); - XSSFWorkbook workbook = getEmployeeDeclareWrapper(user).export(queryParam); + XSSFWorkbook workbook = getEmployeeDeclareWrapper(user).export(param); String fileName = "人员信息采集-" + LocalDate.now(); try { fileName = URLEncoder.encode(fileName + ".xlsx", "UTF-8"); diff --git a/src/com/engine/salary/web/TaxDeclarationController.java b/src/com/engine/salary/web/TaxDeclarationController.java index 57dba6fb2..f3e0a89e5 100644 --- a/src/com/engine/salary/web/TaxDeclarationController.java +++ b/src/com/engine/salary/web/TaxDeclarationController.java @@ -218,7 +218,7 @@ public class TaxDeclarationController { } /** - * 人员报送-导出全部人员 + * 申报内置算税结果 * * @return */ diff --git a/src/com/engine/salary/wrapper/EmployeeDeclareWrapper.java b/src/com/engine/salary/wrapper/EmployeeDeclareWrapper.java index 5c8fb6c19..399286e63 100644 --- a/src/com/engine/salary/wrapper/EmployeeDeclareWrapper.java +++ b/src/com/engine/salary/wrapper/EmployeeDeclareWrapper.java @@ -558,13 +558,23 @@ public class EmployeeDeclareWrapper extends Service { } /** - * 人员报送-导出本月全部的人员 + * 人员报送-下载导入模板 * - * @param queryParam + * @param param * @return */ - public XSSFWorkbook export(EmployeeDeclareListQueryParam queryParam) { - return getEmployeeDeclareExcelService(user).export(queryParam); + public XSSFWorkbook exportTemplate(EmployeeDeclareImportParam param) { + return getEmployeeDeclareExcelService(user).exportTemplate(param); + } + + /** + * 人员报送-导出本月全部的人员 + * + * @param param + * @return + */ + public XSSFWorkbook export(EmployeeDeclareListQueryParam param) { + return getEmployeeDeclareExcelService(user).export(param); } // /**