From c5a10bec4d25f25464105233bebfaf8c791aba17 Mon Sep 17 00:00:00 2001
From: 孔祥富 <kongxf@daryun.com>
Date: 星期一, 08 三月 2021 17:12:12 +0800
Subject: [PATCH] 提交

---
 febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpBaseInfoServiceImpl.java |  199 ++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 147 insertions(+), 52 deletions(-)

diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpBaseInfoServiceImpl.java b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpBaseInfoServiceImpl.java
index c1393a7..9df2048 100644
--- a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpBaseInfoServiceImpl.java
+++ b/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
@@ -845,6 +855,12 @@
         } else {
             queryWrapper.in("a.EmpStatus", 0);
         }
+        if (StringUtils.isNotBlank(empBaseInfo.getEmpCardStatus())) {
+            queryWrapper.in("a.empCardStatus", empBaseInfo.getEmpCardStatus().split(","));
+        }
+        if (StringUtils.isNotBlank(empBaseInfo.getHandbookStatus())) {
+            queryWrapper.in("a.handBookStatus", empBaseInfo.getHandbookStatus().split(","));
+        }
         // 下面的条件就是人员的属性条件,条件之间是或的关系
         if (this.checkQueryCondition(empBaseInfo)) {
             queryWrapper.and(p -> {
@@ -859,48 +875,6 @@
                 }
                 if (StringUtils.isNotBlank(empBaseInfo.getCertificateNumb())) {
                     p.or().like("a.CertificateNumb", empBaseInfo.getCertificateNumb());
-                }
-                if (StringUtils.isNotBlank(empBaseInfo.getEntryDateStr())) {
-                    p.or().between("a.EntryDate", empBaseInfo.getEntryDateStr().split(",")[0], empBaseInfo.getEntryDateStr().split(",")[1]);
-                }
-                if (StringUtils.isNotBlank(empBaseInfo.getDimissionDateStr())) {
-                    p.or().between("a.DimissionDate", empBaseInfo.getDimissionDateStr().split(",")[0], empBaseInfo.getDimissionDateStr().split(",")[1]);
-                }
-                if (StringUtils.isNotBlank(empBaseInfo.getSex())) {
-                    p.or().in("a.Sex", empBaseInfo.getSex().split(","));
-                }
-                if (StringUtils.isNotBlank(empBaseInfo.getEducation())) {
-                    p.or().in("a.Education", empBaseInfo.getEducation().split(","));
-                }
-                if (StringUtils.isNotBlank(empBaseInfo.getPolitics())) {
-                    p.or().in("a.Politics", empBaseInfo.getPolitics().split(","));
-                }
-                if (StringUtils.isNotBlank(empBaseInfo.getAgeStr())) {
-                    String[] ages = empBaseInfo.getAgeStr().split(",");
-                    Consumer<QueryWrapper<EmpBaseInfo>> consumer = new Consumer<QueryWrapper<EmpBaseInfo>>() {
-                        public void accept(QueryWrapper<EmpBaseInfo> wrapper) {
-                            for (int i = 0; i < ages.length; i++) {
-                                String ageBtn = ages[i];
-                                wrapper.or().between("a.Age", ageBtn.split("-")[0], ageBtn.split("-")[1]);
-                            }
-                        }
-                    };
-                    p.or().and(consumer);
-                }
-                if (StringUtils.isNotBlank(empBaseInfo.getArchivesStatus())) {
-                    p.or().in("a.ArchivesStatus", empBaseInfo.getArchivesStatus().split(","));
-                }
-                if (StringUtils.isNotBlank(empBaseInfo.getInsuranceType())) {
-                    p.or().in("a.InsuranceType", empBaseInfo.getInsuranceType().split(","));
-                }
-                if (StringUtils.isNotBlank(empBaseInfo.getHandbookStatus())) {
-                    p.or().in("a.HandbookStatus", empBaseInfo.getHandbookStatus().split(","));
-                }
-                if (StringUtils.isNotBlank(empBaseInfo.getEmpCardStatus())) {
-                    p.or().in("a.EmpCardStatus", empBaseInfo.getEmpCardStatus().split(","));
-                }
-                if (StringUtils.isNotBlank(empBaseInfo.getEmpType())) {
-                    p.or().in("a.empType", empBaseInfo.getEmpType().split(","));
                 }
             });
         }
@@ -938,4 +912,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);
+    }
 }

--
Gitblit v1.8.0