From c2cbdce9ecfcea4ce6a94ce302c6207e8311e044 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Tue, 19 Apr 2022 17:21:27 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85=E5=88=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/SalaryAcctExcelServiceImpl.java | 454 ++++++++++-------- .../impl/SalaryAcctRecordServiceImpl.java | 17 +- 2 files changed, 255 insertions(+), 216 deletions(-) diff --git a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java index 7eb434617..d9abbb9b9 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java @@ -4,6 +4,7 @@ import com.cloudstore.eccom.pc.table.WeaTableColumn; import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.biz.TaxAgentBiz; +import com.engine.salary.constant.SalaryDefaultTenantConstant; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.salaryacct.bo.SalaryAcctEmployeeBO; import com.engine.salary.entity.salaryacct.bo.SalaryAcctResultBO; @@ -11,8 +12,10 @@ import com.engine.salary.entity.salaryacct.dto.SalaryAccEmployeeListDTO; import com.engine.salary.entity.salaryacct.dto.SalaryAcctImportFieldDTO; import com.engine.salary.entity.salaryacct.dto.SalaryComparisonResultListDTO; import com.engine.salary.entity.salaryacct.param.*; +import com.engine.salary.entity.salaryacct.po.ExcelAcctResultPO; import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; +import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salarysob.dto.SalarySobItemAggregateDTO; import com.engine.salary.entity.salarysob.dto.SalarySobItemDTO; @@ -25,18 +28,27 @@ import com.engine.salary.exception.SalaryRunTimeException; import com.engine.salary.service.*; import com.engine.salary.util.SalaryEntityUtil; import com.engine.salary.util.SalaryI18nUtil; +import com.engine.salary.util.excel.ExcelParseHelper; +import com.engine.salary.util.excel.ExcelSupport; import com.engine.salary.util.excel.ExcelUtil; import com.engine.salary.util.valid.ValidUtil; import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import com.google.common.collect.Sets; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import weaver.file.ImageFileManager; import weaver.hrm.User; +import java.io.InputStream; import java.util.*; import java.util.stream.Collectors; +import static com.engine.salary.util.excel.ExcelSupport.EXCEL_TYPE_XLSX; + /** * 薪资核算导入导出 *

Copyright: Copyright (c) 2022

@@ -444,235 +456,259 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc // } // } -// private void batchImport(SalaryAcctImportParam param, String importType) { -// ValidUtil.doValidator(param); -// LocalDateTime now = LocalDateTime.now(); -// -// // 薪资核算记录的id -// Long salaryAcctRecordId = param.getSalaryAcctRecordId(); -// // 薪资核算记录 -// SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(salaryAcctRecordId); -// if (salaryAcctRecordPO == null) { -// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "薪资核算记录不存在或已被删除")); -// } -// // 薪资账套下的薪资项目副本 -// List salarySobItemPOS = getSalarySobItemService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId()); -// // 薪资项目 -// Set salaryItemIds = SalaryEntityUtil.properties(salarySobItemPOS, SalarySobItemPO::getSalaryItemId); -// List salaryItems = getSalaryItemService(user).listByIds(salaryItemIds); -// Map salaryItemMap = SalaryEntityUtil.convert2Map(salaryItems, SalaryItemPO::getName, SalaryItemPO::getId); -// // 薪资核算确认的人员 -// List salaryAcctEmployees = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordId(salaryAcctRecordId); -// Map salaryAcctEmployeeMap = SalaryEntityUtil.convert2Map(salaryAcctEmployees, e -> e.getEmployeeId() + "-" + e.getTaxAgentId()); -// // 租户下所有的人员 -// List salaryEmployees = getSalaryEmployeeService(user).listAll(); -// Map salaryEmployeeMap = SalaryEntityUtil.convert2Map(salaryEmployees, DataCollectionEmployee::getUsername, DataCollectionEmployee::getEmployeeId); -// // 租户下所有的个税扣缴义务人 -// List taxAgents = taxAgentService.listAll(); -// Map taxAgentNameMap = SalaryEntityUtil.convert2Map(taxAgents, TaxAgent::getName, TaxAgent::getId); -// -// // 索引(用于计算进度) -// int index = 0; -// // 失败的数量 -// int failCount = 0; -// // 成功的数量 -// int successCount = 0; -// // 总数 + private Map batchImport(SalaryAcctImportParam param, String importType) { + ValidUtil.doValidator(param); + Date now = new Date(); + + Long currentEmployeeId = (long) user.getUID(); + + // 薪资核算记录的id + Long salaryAcctRecordId = param.getSalaryAcctRecordId(); + // 薪资核算记录 + SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(salaryAcctRecordId); + if (salaryAcctRecordPO == null) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "薪资核算记录不存在或已被删除")); + } + // 薪资账套下的薪资项目副本 + List salarySobItemPOS = getSalarySobItemService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId()); + // 薪资项目 + Set salaryItemIds = SalaryEntityUtil.properties(salarySobItemPOS, SalarySobItemPO::getSalaryItemId); + List salaryItems = getSalaryItemService(user).listByIds(salaryItemIds); + Map salaryItemMap = SalaryEntityUtil.convert2Map(salaryItems, SalaryItemPO::getName, SalaryItemPO::getId); + // 薪资核算确认的人员 + List salaryAcctEmployees = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordId(salaryAcctRecordId); + Map salaryAcctEmployeeMap = SalaryEntityUtil.convert2Map(salaryAcctEmployees, e -> e.getEmployeeId() + "-" + e.getTaxAgentId()); + // 租户下所有的人员 + List salaryEmployees = getSalaryEmployeeService(user).listAll(); + Map salaryEmployeeMap = SalaryEntityUtil.convert2Map(salaryEmployees, DataCollectionEmployee::getUsername, DataCollectionEmployee::getEmployeeId); + // 租户下所有的个税扣缴义务人 + List taxAgents = taxAgentService.listAll(); + Map taxAgentNameMap = SalaryEntityUtil.convert2Map(taxAgents, TaxAgent::getName, TaxAgent::getId); + + // 索引(用于计算进度) + int index = 0; + // 失败的数量 + int failCount = 0; + // 成功的数量 + int successCount = 0; + // 总数 // int total = message.getBatchFile().getExcelSheets().stream() // .filter(e -> CollectionUtils.isNotEmpty(e.getHeader()) && CollectionUtils.isNotEmpty(e.getData())) // .map(e -> BigDecimal.valueOf(e.getData().size())) // .reduce(BigDecimal.ZERO, BigDecimal::add) // .intValue(); -// // 包含错误提示信息的sheet页 -// List> errorExcelSheets = Lists.newArrayList(); -// // 解析excel -// Set salaryAcctEmpIds = Sets.newHashSet(); -// // excel导入了哪些薪资项目 -// Set excelSalaryItemIds = Sets.newHashSet(); -// List salaryAcctResults = Lists.newArrayList(); -// List newSalaryAcctEmployees = Lists.newArrayList(); -// -// List excelAcctResults = Lists.newArrayList(); -// -// InputStream fileInputStream = null; -// fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(param.getImageId())); -// -// Sheet sheet = ExcelSupport.parseFile(fileInputStream, 0, EXCEL_TYPE_XLSX); -// List headers = ExcelSupport.getSheetHeader(sheet, 0); -// -// if (CollectionUtils.isEmpty(headers)) { -// return; -// } -// // 错误提示信息 -// List excelComments = Lists.newArrayList(); -// // 存在错误的那行数据 -// List> errorDatas = Lists.newArrayList(); -// // 表头 -// List headers = excelSheet.getHeader(); -// // 处理数值 -// List> data = excelSheet.getData(); -// if (CollectionUtils.isEmpty(data)) { -// continue; -// } -// for (int i = 0; i < data.size(); i++) { -// int usernameIndex = 0; -// boolean isError = false; -// Map map = data.get(i); -// Long employeeId = 0L; -// Long taxAgentId = 0L; -// List salaryAcctResultsOfOneEmp = Lists.newArrayListWithExpectedSize(headers.size() - 1); -// List excelAcctResultsOfOneEmp = Lists.newArrayListWithExpectedSize(headers.size() - 1); -// for (int j = 0; j < headers.size(); j++) { -// Map header = headers.get(j); -// Object dataKey = header.get("key"); -// if (dataKey == null) { -// continue; -// } -// String dataValue = (String) map.getOrDefault(dataKey.toString(), ""); -// if (StringUtils.equals(SalaryI18nUtil.getI18nLabel(85429, "姓名"), dataKey.toString())) { -// usernameIndex = j; -// if (StringUtils.isEmpty(dataValue)) { -// isError = true; -// salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(102838, "姓名不能为空"), i, i, j, j); -// } else { -// employeeId = salaryEmployeeMap.getOrDefault(dataValue, 0L); -// if (employeeId == null || employeeId <= 0) { -// isError = true; + // 包含错误提示信息的sheet页 + List> errorExcelSheets = Lists.newArrayList(); + // 解析excel + Set salaryAcctEmpIds = Sets.newHashSet(); + // excel导入了哪些薪资项目 + Set excelSalaryItemIds = Sets.newHashSet(); + List salaryAcctResults = Lists.newArrayList(); + List newSalaryAcctEmployees = Lists.newArrayList(); + + List excelAcctResults = Lists.newArrayList(); + + InputStream fileInputStream = null; + fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(param.getImageId())); + + Sheet sheet = ExcelSupport.parseFile(fileInputStream, 0, EXCEL_TYPE_XLSX); + + + // 错误提示信息 + List excelComments = Lists.newArrayList(); + // 存在错误的那行数据 + List> errorDatas = Lists.newArrayList(); + // 表头 + List headers = ExcelSupport.getSheetHeader(sheet, 0); + ; + // 处理数值 + List> data = ExcelParseHelper.parse2Map(sheet, 1); + if (CollectionUtils.isEmpty(headers)) { + throw new RuntimeException("表头为空"); + } + if (CollectionUtils.isEmpty(data)) { + throw new RuntimeException(""); + } + for (int i = 0; i < data.size(); i++) { + int usernameIndex = 0; + boolean isError = false; + Map map = data.get(i); + Long employeeId = 0L; + Long taxAgentId = 0L; + List salaryAcctResultsOfOneEmp = Lists.newArrayListWithExpectedSize(headers.size() - 1); + List excelAcctResultsOfOneEmp = Lists.newArrayListWithExpectedSize(headers.size() - 1); + for (int j = 0; j < headers.size(); j++) { + String header = headers.get(j); + String dataKey = header; + if (dataKey == null) { + continue; + } + String dataValue = (String) map.getOrDefault(dataKey.toString(), ""); + if (StringUtils.equals(SalaryI18nUtil.getI18nLabel(85429, "姓名"), dataKey.toString())) { + usernameIndex = j; + if (StringUtils.isEmpty(dataValue)) { + isError = true; + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", SalaryI18nUtil.getI18nLabel(102838, "姓名不能为空")); + excelComments.add(errorMessageMap); + //salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(102838, "姓名不能为空"), i, i, j, j); + } else { + employeeId = salaryEmployeeMap.getOrDefault(dataValue, 0L); + if (employeeId == null || employeeId <= 0) { + isError = true; + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", SalaryI18nUtil.getI18nLabel(100579, "姓名错误,系统内不存在该姓名")); + excelComments.add(errorMessageMap); // salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(100579, "姓名错误,系统内不存在该姓名"), i, i, j, j); -// } -// } -// } else if (StringUtils.equals(SalaryI18nUtil.getI18nLabel(86184, "个税扣缴义务人"), dataKey.toString())) { -// if (StringUtils.isEmpty(dataValue)) { -// isError = true; + } + } + } else if (StringUtils.equals(SalaryI18nUtil.getI18nLabel(86184, "个税扣缴义务人"), dataKey.toString())) { + if (StringUtils.isEmpty(dataValue)) { + isError = true; + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", SalaryI18nUtil.getI18nLabel(100579, SalaryI18nUtil.getI18nLabel(102839, "个税扣缴义务人不能为空"))); + excelComments.add(errorMessageMap); // salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(102839, "个税扣缴义务人不能为空"), i, i, j, j); -// } else { -// taxAgentId = taxAgentNameMap.getOrDefault(dataValue, 0L); -// if (taxAgentId == null || taxAgentId <= 0) { -// isError = true; + } else { + taxAgentId = taxAgentNameMap.getOrDefault(dataValue, 0L); + if (taxAgentId == null || taxAgentId <= 0) { + isError = true; + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", SalaryI18nUtil.getI18nLabel(100579, SalaryI18nUtil.getI18nLabel(102840, "个税扣缴义务人错误,系统内不存在该个税扣缴义务人"))); + excelComments.add(errorMessageMap); // salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(102840, "个税扣缴义务人错误,系统内不存在该个税扣缴义务人"), i, i, j, j); -// } -// } -// } else { -// Long salaryItemId = salaryItemMap.get(dataKey.toString()); -// if (salaryItemId == null || salaryItemId <= 0) { -// isError = true; + } + } + } else { + Long salaryItemId = salaryItemMap.get(dataKey.toString()); + if (salaryItemId == null || salaryItemId <= 0) { + isError = true; + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", SalaryI18nUtil.getI18nLabel(100579, SalaryI18nUtil.getI18nLabel(102840, "本次核算所用账套不包含该薪资项目"))); + excelComments.add(errorMessageMap); // salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(102841, "表头错误,本次核算所用账套不包含该薪资项目"), i, i, j, j); -// } else { -// excelSalaryItemIds.add(salaryItemId); -// if (StringUtils.equals("importExcelAcctResult", importType)) { -// ExcelAcctResultPO excelAcctResult = ExcelAcctResultPO.builder() + } else { + excelSalaryItemIds.add(salaryItemId); + if (StringUtils.equals("importExcelAcctResult", importType)) { + ExcelAcctResultPO excelAcctResult = ExcelAcctResultPO.builder() // .id(IdGenerator.generate()) -// .salaryAcctRecordId(salaryAcctRecordPO.getId()) -// .salarySobId(salaryAcctRecordPO.getSalarySobId()) -// .salaryItemId(salaryItemId) -// .resultValue(dataValue) -// .creator(currentEmployeeId) -// .createTime(now) -// .updateTime(now) -// .deleteType(0) -// .tenantKey(tenantKey) -// .build(); -// excelAcctResultsOfOneEmp.add(excelAcctResult); -// } -// if (StringUtils.equals("importSalaryAcctResult", importType)) { -// SalaryAcctResultPO salaryAcctResult = SalaryAcctResultPO.builder() + .salaryAcctRecordId(salaryAcctRecordPO.getId()) + .salarySobId(salaryAcctRecordPO.getSalarySobId()) + .salaryItemId(salaryItemId) + .resultValue(dataValue) + .creator(currentEmployeeId) + .createTime(now) + .updateTime(now) + .deleteType(0) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build(); + excelAcctResultsOfOneEmp.add(excelAcctResult); + } + if (StringUtils.equals("importSalaryAcctResult", importType)) { + SalaryAcctResultPO salaryAcctResult = SalaryAcctResultPO.builder() // .id(IdGenerator.generate()) -// .salaryAcctRecordId(salaryAcctRecordPO.getId()) -// .salarySobId(salaryAcctRecordPO.getSalarySobId()) -// .salaryItemId(salaryItemId) -// .resultValue(dataValue) -// .creator(currentEmployeeId) -// .createTime(now) -// .updateTime(now) -// .deleteType(0) -// .tenantKey(tenantKey) -// .build(); -// salaryAcctResultsOfOneEmp.add(salaryAcctResult); -// } -// } -// } -// // (如果是线下对比)如果个税扣缴义务人+人员目前不在核算人员里面,不支持导入 -// if (StringUtils.equals("importExcelAcctResult", importType) -// && (employeeId != null && employeeId > 0) -// && (taxAgentId != null && taxAgentId > 0) -// && i == data.size() - 1 -// && !salaryAcctEmployeeMap.containsKey(employeeId + "-" + taxAgentId)) { -// isError = true; + .salaryAcctRecordId(salaryAcctRecordPO.getId()) + .salarySobId(salaryAcctRecordPO.getSalarySobId()) + .salaryItemId(salaryItemId) + .resultValue(dataValue) + .creator(currentEmployeeId) + .createTime(now) + .updateTime(now) + .deleteType(0) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build(); + salaryAcctResultsOfOneEmp.add(salaryAcctResult); + } + } + } + // (如果是线下对比)如果个税扣缴义务人+人员目前不在核算人员里面,不支持导入 + if (StringUtils.equals("importExcelAcctResult", importType) + && (employeeId != null && employeeId > 0) + && (taxAgentId != null && taxAgentId > 0) + && i == data.size() - 1 + && !salaryAcctEmployeeMap.containsKey(employeeId + "-" + taxAgentId)) { + isError = true; + Map errorMessageMap = Maps.newHashMap(); + errorMessageMap.put("message", SalaryI18nUtil.getI18nLabel(100579, SalaryI18nUtil.getI18nLabel(102840, "本次薪资核算不包含该人员"))); + excelComments.add(errorMessageMap); // salaryBatchService.createExcelComment(excelComments, SalaryI18nUtil.getI18nLabel(102842, "本次薪资核算不包含该人员"), i, i, usernameIndex, usernameIndex); -// } -// } -// // 每处理50个数据更新一次进度 -// index++; + } + } + // 每处理50个数据更新一次进度 + index++; // if (index % 50 == 0 || index >= total) { // salaryBatchService.sendImportRate(message.getBizId(), total, index); // } -// if (isError) { -// failCount++; -// errorDatas.add(map); -// continue; -// } -// SalaryAcctEmployeePO salaryAcctEmployee = salaryAcctEmployeeMap.get(employeeId + "-" + taxAgentId); -// Long salaryAcctEmpId = Optional.ofNullable(salaryAcctEmployee).map(SalaryAcctEmployeePO::getId).orElse(0L); -// if (StringUtils.equals("importExcelAcctResult", importType)) { -// for (ExcelAcctResultPO excelAcctResultPO : excelAcctResultsOfOneEmp) { -// excelAcctResultPO.setEmployeeId(employeeId); -// excelAcctResultPO.setTaxAgentId(taxAgentId); -// excelAcctResultPO.setSalaryAcctEmpId(salaryAcctEmpId); -// } -// excelAcctResults.addAll(excelAcctResultsOfOneEmp); -// } -// if (StringUtils.equals("importSalaryAcctResult", importType)) { -// if (salaryAcctEmpId <= 0) { -// SalaryAcctEmployeePO acctEmployee = SalaryAcctEmployeePO.builder() + if (isError) { + failCount++; + errorDatas.add(map); + continue; + } + SalaryAcctEmployeePO salaryAcctEmployee = salaryAcctEmployeeMap.get(employeeId + "-" + taxAgentId); + Long salaryAcctEmpId = Optional.ofNullable(salaryAcctEmployee).map(SalaryAcctEmployeePO::getId).orElse(0L); + if (StringUtils.equals("importExcelAcctResult", importType)) { + for (ExcelAcctResultPO excelAcctResultPO : excelAcctResultsOfOneEmp) { + excelAcctResultPO.setEmployeeId(employeeId); + excelAcctResultPO.setTaxAgentId(taxAgentId); + excelAcctResultPO.setSalaryAcctEmpId(salaryAcctEmpId); + } + excelAcctResults.addAll(excelAcctResultsOfOneEmp); + } + if (StringUtils.equals("importSalaryAcctResult", importType)) { + if (salaryAcctEmpId <= 0) { + SalaryAcctEmployeePO acctEmployee = SalaryAcctEmployeePO.builder() // .id(IdGenerator.generate()) -// .employeeId(employeeId) -// .salaryAcctRecordId(salaryAcctRecordId) -// .salarySobId(salaryAcctRecordPO.getSalarySobId()) -// .salaryMonth(salaryAcctRecordPO.getSalaryMonth()) -// .taxAgentId(taxAgentId) -// .creator(currentEmployeeId) -// .createTime(now) -// .updateTime(now) -// .deleteType(0) -// .tenantKey(tenantKey) -// .build(); -// newSalaryAcctEmployees.add(acctEmployee); -// salaryAcctEmpId = acctEmployee.getId(); -// } -// for (SalaryAcctResultPO salaryAcctResultPO : salaryAcctResultsOfOneEmp) { -// salaryAcctResultPO.setEmployeeId(employeeId); -// salaryAcctResultPO.setTaxAgentId(taxAgentId); -// salaryAcctResultPO.setSalaryAcctEmpId(salaryAcctEmpId); -// } -// salaryAcctEmpIds.add(salaryAcctEmpId); -// salaryAcctResults.addAll(salaryAcctResultsOfOneEmp); -// } -// successCount++; -// } -// // 如果sheet包含错误数据 + .employeeId(employeeId) + .salaryAcctRecordId(salaryAcctRecordId) + .salarySobId(salaryAcctRecordPO.getSalarySobId()) + .salaryMonth(salaryAcctRecordPO.getSalaryMonth()) + .taxAgentId(taxAgentId) + .creator(currentEmployeeId) + .createTime(now) + .updateTime(now) + .deleteType(0) + .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY) + .build(); + newSalaryAcctEmployees.add(acctEmployee); + salaryAcctEmpId = acctEmployee.getId(); + } + for (SalaryAcctResultPO salaryAcctResultPO : salaryAcctResultsOfOneEmp) { + salaryAcctResultPO.setEmployeeId(employeeId); + salaryAcctResultPO.setTaxAgentId(taxAgentId); + salaryAcctResultPO.setSalaryAcctEmpId(salaryAcctEmpId); + } + salaryAcctEmpIds.add(salaryAcctEmpId); + salaryAcctResults.addAll(salaryAcctResultsOfOneEmp); + } + successCount++; + } + // 如果sheet包含错误数据 // if (CollectionUtils.isNotEmpty(errorDatas)) { // salaryBatchService.createErrorExcelSheet(headers, errorDatas, excelSheet.getName(), excelComments, errorExcelSheets); // } -// if (StringUtils.equals("importExcelAcctResult", importType)) { -// getSalaryComparisonResultService(user).deleteBySalaryAcctRecordIds(Collections.singleton(salaryAcctRecordId)); -// if (CollectionUtils.isNotEmpty(excelAcctResults)) { -// getSalaryComparisonResultService(user).batchSave(excelAcctResults); -// } -// } -// if (StringUtils.equals("importSalaryAcctResult", importType)) { -// if (CollectionUtils.isNotEmpty(salaryAcctEmpIds)) { -// getSalaryAcctResultService(user).deleteByAcctEmployeeIdsAndSalaryItemIds(salaryAcctEmpIds, excelSalaryItemIds); -// } -// if (CollectionUtils.isNotEmpty(salaryAcctResults)) { -// getSalaryAcctResultService(user).batchSave(salaryAcctResults); -// } -// if (CollectionUtils.isNotEmpty(newSalaryAcctEmployees)) { -// getSalaryAcctEmployeeService(user).batchSave(newSalaryAcctEmployees); -// } -// } -// // 发送导入回调信息 + if (StringUtils.equals("importExcelAcctResult", importType)) { + getSalaryComparisonResultService(user).deleteBySalaryAcctRecordIds(Collections.singleton(salaryAcctRecordId)); + if (CollectionUtils.isNotEmpty(excelAcctResults)) { + getSalaryComparisonResultService(user).batchSave(excelAcctResults); + } + } + if (StringUtils.equals("importSalaryAcctResult", importType)) { + if (CollectionUtils.isNotEmpty(salaryAcctEmpIds)) { + getSalaryAcctResultService(user).deleteByAcctEmployeeIdsAndSalaryItemIds(salaryAcctEmpIds, excelSalaryItemIds); + } + if (CollectionUtils.isNotEmpty(salaryAcctResults)) { + getSalaryAcctResultService(user).batchSave(salaryAcctResults); + } + if (CollectionUtils.isNotEmpty(newSalaryAcctEmployees)) { + getSalaryAcctEmployeeService(user).batchSave(newSalaryAcctEmployees); + } + } + + + // 发送导入回调信息 // salaryBatchService.sendImportCallBackInfo(message, successCount, failCount, errorExcelSheets); -// } + return null; + } // @Override // public Map exportCheckResult( diff --git a/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java index 08c0a0018..884d2adff 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctRecordServiceImpl.java @@ -8,6 +8,7 @@ import com.engine.salary.entity.salaryacct.param.SalaryAcctRecordQueryParam; import com.engine.salary.entity.salaryacct.param.SalaryAcctRecordSaveParam; import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO; import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO; +import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO; import com.engine.salary.entity.salarysob.dto.SalarySobCycleDTO; import com.engine.salary.entity.salarysob.po.SalarySobPO; import com.engine.salary.enums.salaryaccounting.SalaryAcctRecordStatusEnum; @@ -58,7 +59,10 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe return (SalaryAcctEmployeeService) ServiceUtil.getService(SalaryAcctEmployeeServiceImpl.class, user); } - private SalaryAcctResultService salaryAcctResultService; + + private SalaryAcctResultService getSalaryAcctResultService(User user) { + return (SalaryAcctResultService) ServiceUtil.getService(SalaryAcctResultServiceImpl.class, user); + } // private SalaryCheckResultService salaryCheckResultService; // @@ -306,7 +310,7 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe //todo 删除薪资核算人员 // getSalaryAcctEmployeeService(user).deleteBySalaryAcctRecordIds(ids); // // 删除薪资核算结果 -// salaryAcctResultService.deleteBySalaryAcctRecordIds(ids); +// getSalaryAcctResultService(user).deleteBySalaryAcctRecordIds(ids); // // 删除校验异常 // salaryCheckResultService.deleteBySalaryAcctRecordIds(ids); // // 删除校验异常明细 @@ -349,11 +353,10 @@ public class SalaryAcctRecordServiceImpl extends Service implements SalaryAcctRe // if (CollectionUtils.isNotEmpty(salaryCheckResultPOS)) { // throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98784, "核算结果尚未通过校验规则,请确认是否需要忽略校验异常后再归档")); // } - //todo 查询薪资核算结果 -// List salaryAcctResultPOS = salaryAcctResultService.listBySalaryAcctRecordIds(Collections.singleton(salaryAcctRecordId)); -// if (CollectionUtils.isEmpty(salaryAcctResultPOS)) { -// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(99691, "尚未核算,请先核算后再归档")); -// } + List salaryAcctResultPOS = getSalaryAcctResultService(user).listBySalaryAcctRecordIds(Collections.singleton(salaryAcctRecordId)); + if (CollectionUtils.isEmpty(salaryAcctResultPOS)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(99691, "尚未核算,请先核算后再归档")); + } // 更新薪资核算记录的状态 salaryAcctRecordPO.setStatus(SalaryAcctRecordStatusEnum.ARCHIVED.getValue()); salaryAcctRecordPO.setUpdateTime(new Date());