//package com.engine.salary.service.impl;
//
//import com.alibaba.fastjson.JSONObject;
//import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
//import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
//import com.engine.salary.biz.SalaryArchiveBiz;
//import com.engine.salary.biz.SalaryArchiveItemBiz;
//import com.engine.salary.biz.SalaryArchiveTaxAgentBiz;
//import com.engine.salary.entity.salaryarchive.param.SalaryArchiveItemQueryParam;
//import com.engine.salary.entity.salaryarchive.param.SalaryArchiveTaxAgentQueryParam;
//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.service.SalaryArchiveService;
//import com.google.common.base.Joiner;
//import com.google.common.collect.Lists;
//import com.google.common.collect.Maps;
//import com.weaver.common.batch.context.BatchExportContext;
//import com.weaver.common.batch.context.BatchImportContext;
//import com.weaver.common.batch.entity.BatchCallbackMessage;
//import com.weaver.common.batch.entity.BatchDocumentMessage;
//import com.weaver.common.batch.entity.ExcelComment;
//import com.weaver.common.batch.entity.ExcelSheet;
//import com.weaver.common.batch.handler.BatchExportHandler;
//import com.weaver.common.batch.handler.BatchImportHandler;
//import com.weaver.common.distribution.genid.IdGenerator;
//import com.weaver.datasecurity.interceptor.DSTenantKeyThreadVar;
//import com.weaver.hrm.salary.common.LocalDateRange;
//import com.weaver.hrm.salary.common.excel.ExcelSheetData;
//import com.weaver.hrm.salary.common.excel.ExportExcelInfo;
//import com.weaver.hrm.salary.constant.SalaryItemConstant;
//import com.weaver.hrm.salary.dao.*;
//import com.weaver.hrm.salary.entity.salaryarchive.bo.SalaryArchiveBO;
//import com.weaver.hrm.salary.entity.salaryarchive.dto.*;
//import com.weaver.hrm.salary.entity.salaryarchive.param.SalaryArchiveDimissionSaveParam;
//import com.weaver.hrm.salary.entity.salaryarchive.param.SalaryArchiveImportHandleParam;
//import com.weaver.hrm.salary.entity.salaryarchive.param.SalaryArchiveQueryParam;
//import com.weaver.hrm.salary.entity.salaryarchive.po.*;
//import com.weaver.hrm.salary.entity.salaryitem.po.SalaryItemPO;
//import com.weaver.hrm.salary.enums.SalaryUserStatusEnum;
//import com.weaver.hrm.salary.enums.salaryarchive.SalaryArchiveImportTypeEnum;
//import com.weaver.hrm.salary.enums.salaryarchive.SalaryArchiveItemAdjustReasonEnum;
//import com.weaver.hrm.salary.enums.salaryarchive.SalaryArchiveTaxAgentAdjustReasonEnum;
//import com.weaver.hrm.salary.service.SalaryArchiveItemService;
//import com.weaver.hrm.salary.service.SalaryBatchService;
//import com.weaver.hrm.salary.service.TaxAgentService;
//import com.weaver.hrm.salary.util.SalaryDateUtil;
//import com.weaver.hrm.salary.util.SalaryI18nUtil;
//import com.weaver.teams.util.StringUtils;
//import org.apache.commons.collections4.CollectionUtils;
//import org.springframework.transaction.annotation.Transactional;
//
//import java.time.LocalDate;
//import java.time.LocalDateTime;
//import java.util.*;
//import java.util.concurrent.ExecutorService;
//import java.util.concurrent.atomic.AtomicInteger;
//import java.util.stream.Collectors;
//
///**
// * 薪资档案
// *
Copyright: Copyright (c) 2022
// * Company: 泛微软件
// *
// * @author qiantao
// * @version 1.0
// **/
//public class SalaryArchiveServiceImpl implements SalaryArchiveService {
//
// private SalaryArchiveBiz mapper = new SalaryArchiveBiz();
// private SalaryArchiveItemBiz salaryArchiveItemMapper;
// private SalaryArchiveTaxAgentBiz salaryArchiveTaxAgentMapper;
// private SalaryArchiveDimissionMapper salaryArchiveDimissionMapper;
// private SalaryArchiveItemService salaryArchiveItemService;
// private SalaryBatchService salaryBatchService;
// private TaxAgentService taxAgentService;
// private ExecutorService taskExecutor;
//
// @Override
// public SalaryArchivePO getById(Long salaryArchiveId) {
// return mapper.getById(salaryArchiveId);
// }
//
//// @Override
//// public Page listPage(Page page, SalaryArchiveQueryParam queryParam, String tenantKey) {
//// mapper.list(page, queryParam, tenantKey);
//// return page;
//// }
//
// /**
// * 获取薪资档案对应的当前生效的薪资项目
// *
// * @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 tenantKey
// * @param isPage
// * @return
// */
// @Override
// public List