核算导入
This commit is contained in:
parent
c2cbdce9ec
commit
dc008dad5c
|
|
@ -7,6 +7,7 @@ import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO;
|
|||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 薪资核算导入导出
|
||||
|
|
@ -75,6 +76,13 @@ public interface SalaryAcctExcelService {
|
|||
* @return
|
||||
*/
|
||||
XSSFWorkbook exportComparisonResultTemplate(SalaryComparisonResultExportParam exportParam);
|
||||
|
||||
|
||||
Map<String, Object> importSalaryAcctResult(SalaryAcctImportParam param);
|
||||
|
||||
|
||||
Map<String, Object> importExcelAcctResult(SalaryAcctImportParam param);
|
||||
|
||||
//
|
||||
// /**
|
||||
// * 薪资核算结果校验异常导出
|
||||
|
|
|
|||
|
|
@ -39,6 +39,7 @@ 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.util.IOUtils;
|
||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||
import weaver.file.ImageFileManager;
|
||||
import weaver.hrm.User;
|
||||
|
|
@ -419,44 +420,17 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
|
|||
return ExcelUtil.genWorkbookV2(rows, sheetName);
|
||||
}
|
||||
|
||||
public Map<String, Object> importSalaryAcctResult(SalaryAcctImportParam param) {
|
||||
return batchImport(param, "importSalaryAcctResult");
|
||||
}
|
||||
|
||||
//
|
||||
// @BatchImportHandler("importSalaryAcctResult")
|
||||
// @Transactional(rollbackFor = Exception.class)
|
||||
// public void importSalaryAcctResult() {
|
||||
// BatchDocumentMessage message = BatchImportContext.getBatchDocumentMessage();
|
||||
// String tenantKey = message.getTenantKey();
|
||||
// try {
|
||||
// // 加密用
|
||||
// DSTenantKeyThreadVar.tenantKey.set(tenantKey);
|
||||
// // 接收到解析的数据
|
||||
// batchImport(message, "importSalaryAcctResult");
|
||||
// } catch (Exception e) {
|
||||
// log.error("薪资核算结果导入失败:{}", e.getMessage(), e);
|
||||
// } finally {
|
||||
// DSTenantKeyThreadVar.tenantKey.remove();
|
||||
// }
|
||||
// }
|
||||
|
||||
// @BatchImportHandler("importExcelAcctResult")
|
||||
// @Transactional(rollbackFor = Exception.class)
|
||||
// public void importExcelAcctResult() {
|
||||
// BatchDocumentMessage message = BatchImportContext.getBatchDocumentMessage();
|
||||
// String tenantKey = message.getTenantKey();
|
||||
// try {
|
||||
// // 加密用
|
||||
// DSTenantKeyThreadVar.tenantKey.set(tenantKey);
|
||||
// // 接收到解析的数据
|
||||
// batchImport(message, "importExcelAcctResult");
|
||||
// } catch (Exception e) {
|
||||
// log.error("线下核算结果导入失败:{}", e.getMessage(), e);
|
||||
// } finally {
|
||||
// // 加密用
|
||||
// DSTenantKeyThreadVar.tenantKey.remove();
|
||||
// }
|
||||
// }
|
||||
public Map<String, Object> importExcelAcctResult(SalaryAcctImportParam param) {
|
||||
return batchImport(param, "importExcelAcctResult");
|
||||
}
|
||||
|
||||
private Map<String, Object> batchImport(SalaryAcctImportParam param, String importType) {
|
||||
Map<String, Object> apidatas = new HashMap<String, Object>();
|
||||
ValidUtil.doValidator(param);
|
||||
Date now = new Date();
|
||||
|
||||
|
|
@ -509,205 +483,215 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
|
|||
List<ExcelAcctResultPO> excelAcctResults = Lists.newArrayList();
|
||||
|
||||
InputStream fileInputStream = null;
|
||||
fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(param.getImageId()));
|
||||
|
||||
Sheet sheet = ExcelSupport.parseFile(fileInputStream, 0, EXCEL_TYPE_XLSX);
|
||||
try {
|
||||
|
||||
|
||||
// 错误提示信息
|
||||
List<Map> excelComments = Lists.newArrayList();
|
||||
// 存在错误的那行数据
|
||||
List<Map<String, Object>> errorDatas = Lists.newArrayList();
|
||||
// 表头
|
||||
List<String> headers = ExcelSupport.getSheetHeader(sheet, 0);
|
||||
;
|
||||
// 处理数值
|
||||
List<Map<String, Object>> 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<String, Object> map = data.get(i);
|
||||
Long employeeId = 0L;
|
||||
Long taxAgentId = 0L;
|
||||
List<SalaryAcctResultPO> salaryAcctResultsOfOneEmp = Lists.newArrayListWithExpectedSize(headers.size() - 1);
|
||||
List<ExcelAcctResultPO> 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<String, String> 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<String, String> 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;
|
||||
Map<String, String> 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;
|
||||
Map<String, String> 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;
|
||||
Map<String, String> 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()
|
||||
// .id(IdGenerator.generate())
|
||||
.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(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<String, String> 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);
|
||||
}
|
||||
fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(param.getImageId()));
|
||||
|
||||
Sheet sheet = ExcelSupport.parseFile(fileInputStream, 0, EXCEL_TYPE_XLSX);
|
||||
|
||||
|
||||
// 错误提示信息
|
||||
List<Map> excelComments = Lists.newArrayList();
|
||||
// 存在错误的那行数据
|
||||
List<Map<String, Object>> errorDatas = Lists.newArrayList();
|
||||
// 表头
|
||||
List<String> headers = ExcelSupport.getSheetHeader(sheet, 0);
|
||||
|
||||
// 处理数值
|
||||
List<Map<String, Object>> data = ExcelParseHelper.parse2Map(sheet, 1);
|
||||
if (CollectionUtils.isEmpty(headers)) {
|
||||
throw new RuntimeException("表头为空");
|
||||
}
|
||||
// 每处理50个数据更新一次进度
|
||||
index++;
|
||||
if (CollectionUtils.isEmpty(data)) {
|
||||
throw new RuntimeException("无数据");
|
||||
}
|
||||
for (int i = 0; i < data.size(); i++) {
|
||||
int usernameIndex = 0;
|
||||
boolean isError = false;
|
||||
Map<String, Object> map = data.get(i);
|
||||
Long employeeId = 0L;
|
||||
Long taxAgentId = 0L;
|
||||
List<SalaryAcctResultPO> salaryAcctResultsOfOneEmp = Lists.newArrayListWithExpectedSize(headers.size() - 1);
|
||||
List<ExcelAcctResultPO> 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<String, String> 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<String, String> 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;
|
||||
Map<String, String> 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;
|
||||
Map<String, String> 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;
|
||||
Map<String, String> 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()
|
||||
// .id(IdGenerator.generate())
|
||||
.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(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<String, String> 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++;
|
||||
// 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);
|
||||
if (isError) {
|
||||
failCount++;
|
||||
errorDatas.add(map);
|
||||
continue;
|
||||
}
|
||||
excelAcctResults.addAll(excelAcctResultsOfOneEmp);
|
||||
}
|
||||
if (StringUtils.equals("importSalaryAcctResult", importType)) {
|
||||
if (salaryAcctEmpId <= 0) {
|
||||
SalaryAcctEmployeePO acctEmployee = SalaryAcctEmployeePO.builder()
|
||||
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(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
|
||||
.build();
|
||||
newSalaryAcctEmployees.add(acctEmployee);
|
||||
salaryAcctEmpId = acctEmployee.getId();
|
||||
.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);
|
||||
}
|
||||
for (SalaryAcctResultPO salaryAcctResultPO : salaryAcctResultsOfOneEmp) {
|
||||
salaryAcctResultPO.setEmployeeId(employeeId);
|
||||
salaryAcctResultPO.setTaxAgentId(taxAgentId);
|
||||
salaryAcctResultPO.setSalaryAcctEmpId(salaryAcctEmpId);
|
||||
}
|
||||
salaryAcctEmpIds.add(salaryAcctEmpId);
|
||||
salaryAcctResults.addAll(salaryAcctResultsOfOneEmp);
|
||||
successCount++;
|
||||
}
|
||||
successCount++;
|
||||
}
|
||||
// 如果sheet包含错误数据
|
||||
// 如果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("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 (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 (CollectionUtils.isNotEmpty(salaryAcctResults)) {
|
||||
getSalaryAcctResultService(user).batchSave(salaryAcctResults);
|
||||
}
|
||||
if (CollectionUtils.isNotEmpty(newSalaryAcctEmployees)) {
|
||||
getSalaryAcctEmployeeService(user).batchSave(newSalaryAcctEmployees);
|
||||
}
|
||||
}
|
||||
|
||||
apidatas.put("successCount", successCount);
|
||||
apidatas.put("errorCount", failCount);
|
||||
apidatas.put("errorData", excelComments);
|
||||
|
||||
} finally {
|
||||
IOUtils.closeQuietly(fileInputStream);
|
||||
}
|
||||
|
||||
// 发送导入回调信息
|
||||
// salaryBatchService.sendImportCallBackInfo(message, successCount, failCount, errorExcelSheets);
|
||||
return null;
|
||||
return apidatas;
|
||||
}
|
||||
|
||||
// @Override
|
||||
|
|
|
|||
|
|
@ -181,6 +181,9 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
|
|||
// 薪资核算结果的分页结果
|
||||
PageInfo<Map<String, Object>> resultPage = new PageInfo<>();
|
||||
resultPage.setList(data);
|
||||
resultPage.setTotal(page.getTotal());
|
||||
resultPage.setPageNum(page.getPageNum());
|
||||
resultPage.setPageSize(page.getPageSize());
|
||||
return resultPage;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,10 @@
|
|||
package com.engine.salary.web;
|
||||
|
||||
import com.engine.common.util.ServiceUtil;
|
||||
import com.engine.salary.entity.salaryacct.dto.*;
|
||||
import com.engine.salary.entity.salaryacct.dto.ConsolidatedTaxDetailDTO;
|
||||
import com.engine.salary.entity.salaryacct.dto.SalaryAccEmployeeListDTO;
|
||||
import com.engine.salary.entity.salaryacct.dto.SalaryAcctImportFieldDTO;
|
||||
import com.engine.salary.entity.salaryacct.dto.SalaryAcctResultDetailDTO;
|
||||
import com.engine.salary.entity.salaryacct.param.*;
|
||||
import com.engine.salary.entity.salarysob.dto.SalarySobCycleDTO;
|
||||
import com.engine.salary.enums.salarysob.SalaryEmployeeStatusEnum;
|
||||
|
|
@ -89,7 +92,7 @@ public class SalaryAcctController {
|
|||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public String getForm(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam(value = "id") Long id) {
|
||||
User user = HrmUserVarify.getUser(request, response);
|
||||
return new ResponseResult<Long, Map<String,Object>>().run(getSalaryAcctRecordWrapper(user)::getForm, id);
|
||||
return new ResponseResult<Long, Map<String, Object>>().run(getSalaryAcctRecordWrapper(user)::getForm, id);
|
||||
}
|
||||
|
||||
//获取薪资核算的薪资周期、考勤周期等
|
||||
|
|
@ -424,6 +427,15 @@ public class SalaryAcctController {
|
|||
return Response.ok(output).header("Content-disposition", "attachment;filename=" + fileName).header("Cache-Control", "no-cache").build();
|
||||
}
|
||||
|
||||
//导入核算结果
|
||||
@POST
|
||||
@Path("/acctresult/importParams")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public String importSalaryAcctResult(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctImportParam param) {
|
||||
User user = HrmUserVarify.getUser(request, response);
|
||||
return new ResponseResult<SalaryAcctImportParam, Map<String, Object>>().run(getSalaryAcctExcelService(user)::importSalaryAcctResult, param);
|
||||
}
|
||||
|
||||
// **********************************薪资核算结果 end*********************************/
|
||||
|
||||
// **********************************检验异常 start*********************************/
|
||||
|
|
@ -591,7 +603,7 @@ public class SalaryAcctController {
|
|||
public Response exportComparisonResultTemplate(@Context HttpServletRequest request, @Context HttpServletResponse response) {
|
||||
SalaryComparisonResultExportParam param = new SalaryComparisonResultExportParam();
|
||||
String salaryAcctRecordId = request.getParameter("salaryAcctRecordId");
|
||||
if(StringUtils.isNotBlank(salaryAcctRecordId)){
|
||||
if (StringUtils.isNotBlank(salaryAcctRecordId)) {
|
||||
param.setSalaryAcctRecordId(Long.parseLong(salaryAcctRecordId));
|
||||
}
|
||||
|
||||
|
|
@ -612,5 +624,15 @@ public class SalaryAcctController {
|
|||
return Response.ok(output).header("Content-disposition", "attachment;filename=" + fileName).header("Cache-Control", "no-cache").build();
|
||||
}
|
||||
|
||||
//导入线下核算结果
|
||||
@POST
|
||||
@Path("/comparisonresult/importExcelAcctResult")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public String importExcelAcctResult(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctImportParam param) {
|
||||
User user = HrmUserVarify.getUser(request, response);
|
||||
return new ResponseResult<SalaryAcctImportParam, Map<String, Object>>().run(getSalaryAcctExcelService(user)::importExcelAcctResult, param);
|
||||
}
|
||||
|
||||
|
||||
/**********************************线下对比 end*********************************/
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue