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