孔祥富
2021-03-07 98f527638b35bce0d513a62ce2d954c14b10774d
febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpBaseInfoServiceImpl.java
@@ -1,11 +1,9 @@
package cc.mrbird.febs.server.hr.service.impl;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.*;
import java.util.*;
import java.util.function.Consumer;
import java.util.stream.Collectors;
import cc.mrbird.febs.common.core.entity.constant.StringConstant;
import cc.mrbird.febs.common.core.entity.system.SysConfig;
@@ -13,16 +11,17 @@
import cc.mrbird.febs.common.core.utils.MyUtil;
import cc.mrbird.febs.server.hr.entity.EmpDimissionLog;
import cc.mrbird.febs.server.hr.entity.EmpJobChange;
import cc.mrbird.febs.server.hr.feign.IRemoteDicItemService;
import cc.mrbird.febs.server.hr.feign.IRemoteUserService;
import cc.mrbird.febs.server.hr.mapper.EmpContractInfoMapper;
import cc.mrbird.febs.server.hr.mapper.*;
import cc.mrbird.febs.server.hr.properties.FebsServerHrProperties;
import cc.mrbird.febs.server.hr.service.IEmpContractInfoService;
import cc.mrbird.febs.server.hr.service.IEmpDimissionLogService;
import cc.mrbird.febs.server.hr.service.IEmpJobChangeService;
import cc.mrbird.febs.server.hr.service.*;
import cc.mrbird.febs.server.hr.util.PoiExportExcel;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import cc.mrbird.febs.server.hr.entity.*;
import cn.hutool.core.util.StrUtil;
import io.prometheus.client.Collector;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
@@ -45,8 +44,6 @@
import cc.mrbird.febs.common.redis.service.RedisService;
import cc.mrbird.febs.server.hr.entity.EmpBaseInfo;
import cc.mrbird.febs.server.hr.feign.IRemoteDeptService;
import cc.mrbird.febs.server.hr.mapper.EmpBaseInfoMapper;
import cc.mrbird.febs.server.hr.service.IEmpBaseInfoService;
import lombok.RequiredArgsConstructor;
import org.springframework.util.FileSystemUtils;
import org.springframework.validation.annotation.Validated;
@@ -74,6 +71,19 @@
    private final EmpContractInfoMapper empContractInfoMapper;
    private final FebsServerHrProperties properties;
    private final IRemoteDeptService remoteDeptService;
    private final EmpWorkExperienceMapper empWorkExperienceMapper;
    private final EmpPhysicalExamMapper empPhysicalExamMapper;
    private final EmpJobChangeMapper empJobChangeMapper;
    private final EmpLeaveInfoMapper empLeaveInfoMapper;
    private final EmpUnemploymentMapper empUnemploymentMapper;
    private final EmpDimissionAttendMapper empDimissionAttendMapper;
    private final EmpInsuranceMapper empInsuranceMapper;
    private final EmpAccidentCasesMapper empAccidentCasesMapper;
    private final EmpLaborTroubleMapper empLaborTroubleMapper;
    private final EmpBadRecordMapper empBadRecordMapper;
    private final EmpRemarkInfoMapper empRemarkInfoMapper;
    private final IRemoteDicItemService remoteDicItemService;
    private final String operatorId = Optional.of(FebsUtil.getUserId()).orElse("1");
    @Override
@@ -944,4 +954,125 @@
        }
    }
    @Override
    public void exportEmpAll(HttpServletResponse response, EmpBaseInfo empBaseinfo) throws IOException {
        //获取字典
        List<DicItem> dicItemList = remoteDicItemService.getAllDicitemsAll();
        Map<String, Object> map = new HashMap<>();
        List<Long> itemCode = dicItemList.stream().map(i->i.getDicId()).distinct().collect(Collectors.toList());
        itemCode.stream().forEach(i->{
           List<DicItem> dicItems =  dicItemList.stream().filter(j->j.getDicId().equals(i)).collect(Collectors.toList());
            Map<String, Object> itemMap = new HashMap<>();
            dicItems.stream().forEach(dicItem -> itemMap.put(dicItem.getDicItemCode(),dicItem.getDicItemName()));
            map.put(dicItems.get(0).getDicCode().toLowerCase(),itemMap);
        });
        //基本信息
        QueryRequest request = new QueryRequest();
        request.setPageSize(25535);
        request.setPageNum(1);
        List<EmpBaseInfo> exportList = this.findZsEmpBaseInfos(request, empBaseinfo).getRecords();
        List<Map<String, Object>> listMapDicItem = new ArrayList();
        listMapDicItem.add(map);
        String exportField = FebsUtil. reflectAnnotation(EmpBaseInfo.class);
        List<Map<String, Object>> allList = PoiExportExcel.getDataList(exportField, exportList, listMapDicItem);
        Page<EmpBaseInfo> page = new Page<>(request.getPageNum(), request.getPageSize());
        List<Long> empIds = exportList.stream().map(i->i.getEmpId()).collect(Collectors.toList());
        //工作经历
        IPage<EmpWorkExperience> workExperienceIPage = empWorkExperienceMapper.selectPageVo(page,new QueryWrapper<EmpWorkExperience>().in("a.empId",empIds).ne("a.delFlag",1));
        exportField = FebsUtil. reflectAnnotation(EmpWorkExperience.class);
        List<Map<String, Object>> allListEmpWork = PoiExportExcel.getDataList(exportField, workExperienceIPage.getRecords(), listMapDicItem);
        allList.add(allListEmpWork.get(0));
        //体检信息
        IPage<EmpPhysicalExam> empPhysicalExamIPage = empPhysicalExamMapper.selectPageVo(page,new QueryWrapper<EmpPhysicalExam>().in("a.empId",empIds).ne("a.delFlag",1));
        exportField = FebsUtil. reflectAnnotation(EmpWorkExperience.class);
        List<Map<String, Object>> allListEmpPhysical = PoiExportExcel.getDataList(exportField, empPhysicalExamIPage.getRecords(), listMapDicItem);
        allList.add(allListEmpPhysical.get(0));
        //调岗记录
        IPage<EmpJobChange> jobChangeIPage = empJobChangeMapper.selectPageVoBean(page,new QueryWrapper<EmpJobChange>().in("a.empId",empIds).ne("a.delFlag",1));
        exportField = FebsUtil. reflectAnnotation(EmpJobChange.class);
        List<Map<String, Object>> allListjobChangeI = PoiExportExcel.getDataList(exportField, jobChangeIPage.getRecords(), listMapDicItem);
        allList.add(allListjobChangeI.get(0));
        //合同信息
        IPage<EmpContractInfo> empContractInfoIPage = empContractInfoMapper.selectPageVo(page,new QueryWrapper<EmpContractInfo>().in("a.empId",empIds).ne("a.delFlag",1));
        exportField = FebsUtil. reflectAnnotation(EmpContractInfo.class);
        List<Map<String, Object>> allListEmpContractInfo = PoiExportExcel.getDataList(exportField, empContractInfoIPage.getRecords(), listMapDicItem);
        allList.add(allListEmpContractInfo.get(0));
        //入离职记录
        IPage<EmpDimissionAttend> empDimissionAttendIPage = empDimissionAttendMapper.selectPageVo(page,new QueryWrapper<EmpDimissionAttend>().in("a.empId",empIds).ne("a.delFlag",1));
        exportField = FebsUtil. reflectAnnotation(EmpDimissionAttend.class);
        List<Map<String, Object>> allListEmpDimissionAtt = PoiExportExcel.getDataList(exportField, empDimissionAttendIPage.getRecords(), listMapDicItem);
        allList.add(allListEmpDimissionAtt.get(0));
        //请假记录
        IPage<EmpLeaveInfo> empLeaveInfoIPage = empLeaveInfoMapper.selectPageVo(page,new QueryWrapper<EmpLeaveInfo>().in("a.empId",empIds).ne("a.delFlag",1));
        exportField = FebsUtil. reflectAnnotation(EmpLeaveInfo.class);
        List<Map<String, Object>> allListEmpLoeaveInfo = PoiExportExcel.getDataList(exportField, empLeaveInfoIPage.getRecords(), listMapDicItem);
        allList.add(allListEmpLoeaveInfo.get(0));
        //失业金领取
        IPage<EmpUnemployment> empUnemploymentIPage = empUnemploymentMapper.selectPageVo(page,new QueryWrapper<EmpUnemployment>().in("a.empId",empIds).ne("a.delFlag",1));
        exportField = FebsUtil. reflectAnnotation(EmpUnemployment.class);
        List<Map<String, Object>> allListEmpUnemployment = PoiExportExcel.getDataList(exportField, empUnemploymentIPage.getRecords(), listMapDicItem);
        allList.add(allListEmpUnemployment.get(0));
        //社保申请
        IPage<EmpInsurance> empInsuranceIPage = empInsuranceMapper.selectPageVo(page,new QueryWrapper<EmpInsurance>().in("a.empId",empIds).ne("a.delFlag",1));
        exportField = FebsUtil. reflectAnnotation(EmpInsurance.class);
        List<Map<String, Object>> allListEmpInsurance = PoiExportExcel.getDataList(exportField, empInsuranceIPage.getRecords(), listMapDicItem);
        allList.add(allListEmpInsurance.get(0));
        //意外险案件
        IPage<EmpAccidentCases> empAccidentCasesIPage = empAccidentCasesMapper.selectPageVo(page,new QueryWrapper<EmpInsurance>().in("a.empId",empIds).ne("a.delFlag",1));
        exportField = FebsUtil. reflectAnnotation(EmpAccidentCases.class);
        List<Map<String, Object>> allListEmpAccidentCases = PoiExportExcel.getDataList(exportField, empAccidentCasesIPage.getRecords(), listMapDicItem);
        allList.add(allListEmpAccidentCases.get(0));
        //劳资案件
        IPage<EmpLaborTrouble> empLaborTroubleIPage = empLaborTroubleMapper.selectPageVo(page,new QueryWrapper<EmpInsurance>().in("a.empId",empIds).ne("a.delFlag",1));
        exportField = FebsUtil. reflectAnnotation(EmpLaborTrouble.class);
        List<Map<String, Object>> allListEmpLaborTrouble = PoiExportExcel.getDataList(exportField, empLaborTroubleIPage.getRecords(), listMapDicItem);
        allList.add(allListEmpLaborTrouble.get(0));
        //不良记录
        IPage<EmpBadRecord> empBadRecordIPage = empBadRecordMapper.selectPageVo(page,new QueryWrapper<EmpInsurance>().in("a.empId",empIds).ne("a.delFlag",1));
        exportField = FebsUtil. reflectAnnotation(EmpBadRecord.class);
        List<Map<String, Object>> allListEmpBadRecord = PoiExportExcel.getDataList(exportField, empBadRecordIPage.getRecords(), listMapDicItem);
        allList.add(allListEmpBadRecord.get(0));
        //备注信息
        IPage<EmpRemarkInfo> empRemarkInfoIPage = empRemarkInfoMapper.selectPageVo(page,new QueryWrapper<EmpRemarkInfo>().in("a.empId",empIds).ne("a.delFlag",1));
        exportField = FebsUtil. reflectAnnotation(EmpRemarkInfo.class);
        List<Map<String, Object>> allListEmpRemarkInfo = PoiExportExcel.getDataList(exportField, empRemarkInfoIPage.getRecords(), listMapDicItem);
        allList.add(allListEmpRemarkInfo.get(0));
        List<String> sheetNames = new ArrayList<>();
        sheetNames.add("基本信息");
        sheetNames.add("工作经历");
        sheetNames.add("体检信息");
        sheetNames.add("调岗记录");
        sheetNames.add("合同信息");
        sheetNames.add("入离职记录");
        sheetNames.add("请假记录");
        sheetNames.add("失业金领取");
        sheetNames.add("社保申请");
        sheetNames.add("意外险案件");
        sheetNames.add("工商案件");
        sheetNames.add("劳资案件");
        sheetNames.add("不良记录");
        sheetNames.add("备注信息");
        boolean result = PoiExportExcel.exportCommonExcelMultiSheet(response, "在职员工列表",allList,sheetNames);
    }
}