//package com.engine.salary.service.impl;
//
//import com.engine.core.impl.Service;
//import com.engine.salary.biz.*;
//import com.engine.salary.common.LocalDateRange;
//import com.engine.salary.constant.SalaryDefaultTenantConstant;
//import com.engine.salary.constant.SalaryItemConstant;
//import com.engine.salary.entity.datacollection.DataCollectionEmployee;
//import com.engine.salary.entity.salaryarchive.bo.SalaryArchiveBO;
//import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveDataDTO;
//import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveInitImportDTO;
//import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveListDTO;
//import com.engine.salary.entity.salaryarchive.param.*;
//import com.engine.salary.entity.salaryarchive.po.SalaryArchiveDimissionPO;
//import com.engine.salary.entity.salaryarchive.po.SalaryArchiveItemPO;
//import com.engine.salary.entity.salaryarchive.po.SalaryArchivePO;
//import com.engine.salary.entity.salaryarchive.po.SalaryArchiveTaxAgentPO;
//import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
//import com.engine.salary.entity.taxrate.TaxAgent;
//import com.engine.salary.enums.SalaryUserStatusEnum;
//import com.engine.salary.enums.salaryarchive.SalaryArchiveImportTypeEnum;
//import com.engine.salary.enums.salaryarchive.SalaryArchiveItemAdjustReasonEnum;
//import com.engine.salary.enums.salaryarchive.SalaryArchiveTaxAgentAdjustReasonEnum;
//import com.engine.salary.exception.SalaryRunTimeException;
//import com.engine.salary.service.SalaryArchiveService;
//import com.engine.salary.util.SalaryDateUtil;
//import com.engine.salary.util.SalaryI18nUtil;
//import com.engine.salary.util.excel.ExcelComment;
//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.page.PageInfo;
//import com.google.common.base.Joiner;
//import com.google.common.collect.Lists;
//import com.google.common.collect.Maps;
//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.ExcelSheet;
//import weaver.file.ImageFileManager;
//
//import java.io.InputStream;
//import java.text.SimpleDateFormat;
//import java.util.*;
//import java.util.concurrent.ExecutorService;
//import java.util.stream.Collectors;
//
//import static com.engine.salary.util.excel.ExcelSupport.EXCEL_TYPE_XLSX;
//
///**
// * 薪资档案
// *
Copyright: Copyright (c) 2022
// * Company: 泛微软件
// *
// * @author qiantao
// * @version 1.0
// **/
//public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveService {
//
// private SalaryArchiveBiz mapper = new SalaryArchiveBiz();
// private EmployBiz employBiz = new EmployBiz();
// private SalaryArchiveItemBiz salaryArchiveItemMapper = new SalaryArchiveItemBiz();
// private SalaryArchiveTaxAgentBiz salaryArchiveTaxAgentMapper = new SalaryArchiveTaxAgentBiz();
// private SalaryArchiveDimissionBiz salaryArchiveDimissionMapper = new SalaryArchiveDimissionBiz();
// private SalaryItemBiz salaryItemMapper = new SalaryItemBiz();
//
//
// // private SalaryBatchService salaryBatchService;
// private TaxAgentBiz taxAgentService = new TaxAgentBiz();
// private ExecutorService taskExecutor;
//
// @Override
// public SalaryArchivePO getById(Long salaryArchiveId) {
// return mapper.getById(salaryArchiveId);
// }
//
// @Override
// public PageInfo listPage(SalaryArchiveQueryParam queryParam) {
// return mapper.listPage(queryParam);
// }
//
// /**
// * 获取薪资档案对应的当前生效的薪资项目
// *
// * @param salaryArchivesIds
// * @return
// */
// @Override
// public List getCurrentEffectiveItemList(Collection salaryArchivesIds, Collection salaryItemIds) {
// // 没有薪资项目时,给个不存在的,否则加载所有不合理 fixme
// salaryItemIds = CollectionUtils.isEmpty(salaryItemIds) ? Collections.singletonList(0L) : salaryItemIds;
// List salaryArchiveItems = salaryArchiveItemMapper.getCurrentEffectiveItemList(SalaryArchiveItemQueryParam.builder().salaryArchivesIds(salaryArchivesIds).salaryItemIds(salaryItemIds).effectiveTime(new Date()).build());
// return salaryArchiveItems.stream()
// .collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(f -> f.getSalaryArchiveId() + "-" + f.getSalaryItemId()))), ArrayList::new));
// }
//
// /**
// * 获取薪资档案对应的当前生效的个税扣缴义务人
// *
// * @param salaryArchivesIds
// * @return
// */
// @Override
// public List getCurrentEffectiveTaxAgentList(Collection salaryArchivesIds) {
//
// List salaryArchiveTaxAgents = salaryArchiveTaxAgentMapper.listByParam(SalaryArchiveTaxAgentQueryParam.builder().salaryArchivesIds(salaryArchivesIds).effectiveTime(new Date()).build());
//
// return salaryArchiveTaxAgents.stream()
// .collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(SalaryArchiveTaxAgentPO::getSalaryArchiveId))), ArrayList::new));
// }
//
// /**
// * 构建薪资档案数据
// *
// * @param salaryArchives
// * @param taxAgentLists
// * @param salaryItems
// * @param isPage
// * @return
// */
// @Override
// public List