//package com.engine.salary.entity.salaryacct.bo;
//
//import com.weaver.excel.formula.api.entity.ExpressFormula;
//import com.weaver.hrm.salary.entity.salaryacct.dto.SalaryCheckResultListDTO;
//import com.weaver.hrm.salary.entity.salaryacct.dto.SalaryCheckResultRecordCountDTO;
//import com.weaver.hrm.salary.entity.salaryacct.dto.SalaryCheckResultRecordListDTO;
//import com.weaver.hrm.salary.entity.salaryacct.po.SalaryCheckResultPO;
//import com.weaver.hrm.salary.entity.salaryacct.po.SalaryCheckResultRecordPO;
//import com.weaver.hrm.salary.entity.salarysob.po.SalarySobCheckRulePO;
//import com.weaver.hrm.salary.util.SalaryEntityUtil;
//import com.weaver.teams.domain.user.DataCollectionEmployee;
//import org.apache.commons.collections4.CollectionUtils;
//import org.apache.commons.lang3.StringUtils;
//import org.apache.commons.lang3.math.NumberUtils;
//
//import java.util.Collections;
//import java.util.List;
//import java.util.Map;
//import java.util.stream.Collectors;
//
///**
// * @description: 薪资核算校验结果
// * @author: xiajun
// * @modified By: xiajun
// * @date: Created in 12/7/21 1:52 PM
// * @version:v1.0
// */
//public class SalaryCheckResultBO {
//
//    /**
//     * 转换成校验异常列表dto
//     *
//     * @param salaryCheckResults
//     * @param salarySobCheckRules
//     * @param expressFormulas
//     * @param salaryCheckResultRecordCountDTOS
//     * @return
//     */
//    public static List<SalaryCheckResultListDTO> convert2ListDTO(List<SalaryCheckResultPO> salaryCheckResults,
//                                                                 List<SalarySobCheckRulePO> salarySobCheckRules,
//                                                                 List<ExpressFormula> expressFormulas,
//                                                                 List<SalaryCheckResultRecordCountDTO> salaryCheckResultRecordCountDTOS) {
//        if (CollectionUtils.isEmpty(salaryCheckResults)) {
//            return Collections.emptyList();
//        }
//        Map<Long, String> formulaMap = SalaryEntityUtil.convert2Map(expressFormulas, ExpressFormula::getId, ExpressFormula::getFormula);
//        Map<Long, String> checkRuleMap = SalaryEntityUtil.convert2Map(salarySobCheckRules, SalarySobCheckRulePO::getId, SalarySobCheckRulePO::getName);
//        Map<Long, Long> ckResultRecordCountMap = SalaryEntityUtil.convert2Map(salaryCheckResultRecordCountDTOS, SalaryCheckResultRecordCountDTO::getSalaryCheckResultId,
//                SalaryCheckResultRecordCountDTO::getCountBySalaryCheckResultId);
//        return salaryCheckResults.stream()
//                .map(e -> SalaryCheckResultListDTO.builder()
//                        .id(e.getId())
//                        .checkRuleId(e.getSalaryCheckRuleId())
//                        .checkRuleName(checkRuleMap.getOrDefault(e.getSalaryCheckRuleId(), StringUtils.EMPTY))
//                        .employeeSize(ckResultRecordCountMap.getOrDefault(e.getId(), NumberUtils.LONG_ZERO))
//                        .formulaId(e.getFormulaId())
//                        .formulaContent(formulaMap.getOrDefault(e.getFormulaId(), StringUtils.EMPTY))
//                        .build())
//                .collect(Collectors.toList());
//    }
//
//    /**
//     * 转换成校验异常明细列表dto
//     *
//     * @param salaryCheckResultRecords
//     * @param salarySobCheckRules
//     * @param expressFormulas
//     * @param simpleEmployees
//     * @return
//     */
//    public static List<SalaryCheckResultRecordListDTO> convert2RecordListDTO(List<SalaryCheckResultRecordPO> salaryCheckResultRecords,
//                                                                             List<SalarySobCheckRulePO> salarySobCheckRules,
//                                                                             List<ExpressFormula> expressFormulas,
//                                                                             List<DataCollectionEmployee> simpleEmployees) {
//        if (CollectionUtils.isEmpty(salaryCheckResultRecords)) {
//            return Collections.emptyList();
//        }
//        Map<Long, String> formulaMap = SalaryEntityUtil.convert2Map(expressFormulas, ExpressFormula::getId, ExpressFormula::getFormula);
//        Map<Long, String> checkRuleMap = SalaryEntityUtil.convert2Map(salarySobCheckRules, SalarySobCheckRulePO::getId, SalarySobCheckRulePO::getName);
//        Map<Long, String> employeeMap = SalaryEntityUtil.convert2Map(simpleEmployees, DataCollectionEmployee::getEmployeeId, DataCollectionEmployee::getName);
//        return salaryCheckResultRecords.stream()
//                .map(e -> SalaryCheckResultRecordListDTO.builder()
//                        .id(e.getId())
//                        .checkRuleId(e.getSalaryCheckRuleId())
//                        .checkRuleName(checkRuleMap.getOrDefault(e.getSalaryCheckRuleId(), ""))
//                        .formulaId(e.getFormulaId())
//                        .formulaContent(formulaMap.getOrDefault(e.getFormulaId(), ""))
//                        .employeeId(e.getEmployeeId())
//                        .employeeName(employeeMap.getOrDefault(e.getEmployeeId(), ""))
//                        .build())
//                .collect(Collectors.toList());
//    }
//}
