//package com.engine.salary.service.impl;
//
//import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
//import com.engine.core.impl.Service;
//import com.engine.salary.service.SalaryComparisonResultService;
//import com.google.common.collect.Sets;
//import com.weaver.common.component.table.column.WeaTableColumn;
//import com.weaver.common.component.table.page.Page;
//import com.weaver.common.hrm.service.HrmCommonEmployeeService;
//import com.weaver.excel.formula.api.entity.ExpressFormula;
//import com.weaver.hrm.salary.dao.ExcelAcctResultMapper;
//import com.weaver.hrm.salary.entity.salaryacct.bo.SalaryAcctResultBO;
//import com.weaver.hrm.salary.entity.salaryacct.dto.SalaryComparisonResultListDTO;
//import com.weaver.hrm.salary.entity.salaryacct.param.SalaryAcctEmployeeQueryParam;
//import com.weaver.hrm.salary.entity.salaryacct.param.SalaryComparisonResultQueryParam;
//import com.weaver.hrm.salary.entity.salaryacct.po.ExcelAcctResultPO;
//import com.weaver.hrm.salary.entity.salaryacct.po.SalaryAcctEmployeePO;
//import com.weaver.hrm.salary.entity.salaryacct.po.SalaryAcctRecordPO;
//import com.weaver.hrm.salary.entity.salaryacct.po.SalaryAcctResultPO;
//import com.weaver.hrm.salary.entity.salaryarchive.po.TaxAgentPO;
//import com.weaver.hrm.salary.entity.salaryitem.po.SalaryItemPO;
//import com.weaver.hrm.salary.entity.salarysob.bo.SalarySobItemAggregateBO;
//import com.weaver.hrm.salary.entity.salarysob.dto.SalarySobItemAggregateDTO;
//import com.weaver.hrm.salary.entity.salarysob.po.SalarySobEmpFieldPO;
//import com.weaver.hrm.salary.entity.salarysob.po.SalarySobItemGroupPO;
//import com.weaver.hrm.salary.entity.salarysob.po.SalarySobItemPO;
//import com.weaver.hrm.salary.entity.salarysob.po.SalarySobPO;
//import com.weaver.hrm.salary.exception.SalaryRunTimeException;
//import com.weaver.hrm.salary.service.*;
//import com.weaver.hrm.salary.util.SalaryEntityUtil;
//import com.weaver.hrm.salary.util.SalaryI18nUtil;
//import com.weaver.hrm.salary.util.SalaryPageUtil;
//import com.weaver.teams.domain.user.SimpleEmployee;
//import org.apache.commons.collections4.CollectionUtils;
//import org.apache.commons.lang3.BooleanUtils;
//import org.apache.commons.lang3.StringUtils;
//import org.apache.commons.lang3.math.NumberUtils;
//
//import java.util.*;
//import java.util.stream.Collectors;
//
///**
// * 薪资核算的线下对比结果
// *
Copyright: Copyright (c) 2022
// * Company: 泛微软件
// *
// * @author qiantao
// * @version 1.0
// **/
//public class SalaryComparisonResultServiceImpl extends Service implements SalaryComparisonResultService {
//
//
// private ExcelAcctResultMapper excelAcctResultMapper;
//
// private SalaryAcctResultService salaryAcctResultService;
//
// private SalaryAcctEmployeeService salaryAcctEmployeeService;
//
// private SalarySobItemService salarySobItemService;
//
// private SalaryAcctRecordService salaryAcctRecordService;
//
// private SalarySobEmpFieldService salarySobEmpFieldService;
//
// private HrmCommonEmployeeService hrmCommonEmployeeService;
//
// private TaxAgentService taxAgentService;
//
// private SalaryFormulaService salaryFormulaService;
//
// private SalaryItemService salaryItemService;
//
// private SalarySobService salarySobService;
//
// private SalarySobItemGroupService salarySobItemGroupService;
//
// @Override
// public List listBySalaryAcctRecordId(Long salaryAcctRecordId, String tenantKey) {
// return new LambdaQueryChainWrapper<>(excelAcctResultMapper)
// .eq(ExcelAcctResultPO::getTenantKey, tenantKey)
// .eq(ExcelAcctResultPO::getDeleteType, 0)
// .eq(ExcelAcctResultPO::getSalaryAcctRecordId, salaryAcctRecordId)
// .list();
// }
//
// @Override
// public List listBySalaryAcctEmployeeIds(Collection salaryAcctEmployeeIds, String tenantKey) {
// if (CollectionUtils.isEmpty(salaryAcctEmployeeIds)) {
// return Collections.emptyList();
// }
// return new LambdaQueryChainWrapper<>(excelAcctResultMapper)
// .eq(ExcelAcctResultPO::getTenantKey, tenantKey)
// .eq(ExcelAcctResultPO::getDeleteType, 0)
// .in(ExcelAcctResultPO::getSalaryAcctEmpId, salaryAcctEmployeeIds)
// .list();
// }
//
// @Override
// public SalaryComparisonResultListDTO listPageByParam(SalaryComparisonResultQueryParam queryParam, String tenantKey) {
// return listByParam(true, queryParam, tenantKey);
// }
//
// @Override
// public SalaryComparisonResultListDTO listByParam(SalaryComparisonResultQueryParam queryParam, String tenantKey) {
// return listByParam(false, queryParam, tenantKey);
// }
//
// /**
// * 根据薪资核算人员查询薪资核算线下对比结果
// *
// * @param queryParam 列表查询条件
// * @param tenantKey 租户key
// * @return
// */
// private SalaryComparisonResultListDTO listByParam(boolean needPage, SalaryComparisonResultQueryParam queryParam, String tenantKey) {
// // 查询薪资核算记录
// SalaryAcctRecordPO salaryAcctRecordPO = salaryAcctRecordService.getById(queryParam.getSalaryAcctRecordId(), tenantKey);
// if (Objects.isNull(salaryAcctRecordPO)) {
// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "薪资核算记录不存在或已被删除"));
// }
// // 查询薪资核算所用薪资账套
// SalarySobPO salarySobPO = salarySobService.getById(salaryAcctRecordPO.getSalarySobId(), tenantKey);
// // 查询薪资核算所用的薪资账套的员工信息字段
// List salarySobEmpFieldPOS = salarySobEmpFieldService.listBySalarySobId(salaryAcctRecordPO.getSalarySobId(), tenantKey);
// // 查询薪资账套的薪资项目分类
// List salarySobItemGroupPOS = salarySobItemGroupService.listBySalarySobId(salaryAcctRecordPO.getSalarySobId(), tenantKey);
// // 查询薪资核算所用薪资账套的薪资项目副本
// List salarySobItemPOS = salarySobItemService.listBySalarySobId(salaryAcctRecordPO.getSalarySobId(), tenantKey);
// // 查询公式详情
// Set formulaIds = SalaryEntityUtil.properties(salarySobItemPOS, SalarySobItemPO::getFormulaId);
// List expressFormulas = salaryFormulaService.listExpressFormula(formulaIds, tenantKey);
// // 转换成
// Map expressFormulaMap = SalaryEntityUtil.convert2Map(expressFormulas, ExpressFormula::getId, ExpressFormula::getFormula);
// Map customParameters = SalaryEntityUtil.convert2Map(salarySobItemPOS, SalarySobItemPO::getSalaryItemId, salarySobItemPO -> {
// if (salarySobItemPO.getFormulaId() <= 0) {
// return SalaryI18nUtil.getI18nLabel(92004, "输入/导入");
// }
// return expressFormulaMap.getOrDefault(salarySobItemPO.getFormulaId(), StringUtils.EMPTY);
// });
// // 查询薪资项目
// Set salaryItemIds = SalaryEntityUtil.properties(salarySobItemPOS, SalarySobItemPO::getSalaryItemId);
// List salaryItemPOS = salaryItemService.listByIds(salaryItemIds, tenantKey);
// // 转换成聚合dto
// SalarySobItemAggregateBO salarySobItemAggregateBO = new SalarySobItemAggregateBO(salarySobPO, salarySobEmpFieldPOS,
// salarySobItemGroupPOS, salarySobItemPOS, expressFormulas, salaryItemPOS);
// SalarySobItemAggregateDTO salarySobItemAggregateDTO = salarySobItemAggregateBO.convert2AggregateDTO();
//
// // 薪资核算人员
// List salaryAcctEmployeePOS = salaryAcctEmployeeService.listByResultQueryParam(queryParam, tenantKey);
// if (CollectionUtils.isEmpty(salaryAcctEmployeePOS)) {
// // 构建薪资核算结果列表表头
// List weaTableColumns = SalaryAcctResultBO.buildTableColumns4ComparisonResult(salarySobItemAggregateDTO, Collections.emptySet());
// // 构建列表数据
// Page