From 179ace046094b9d84a8596ea78c9702390d5a56b Mon Sep 17 00:00:00 2001
From: luoyb <412940104@qq.com>
Date: 星期四, 25 三月 2021 15:34:44 +0800
Subject: [PATCH] fix(bug修复): excel导出日期处理

---
 febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpBaseInfoServiceImpl.java |  119 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 108 insertions(+), 11 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 c45db03..c32a5db 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
@@ -22,7 +22,9 @@
 import cc.mrbird.febs.server.hr.service.IEmpDimissionLogService;
 import cc.mrbird.febs.server.hr.service.IEmpJobChangeService;
 import cc.mrbird.febs.server.hr.util.PoiExportExcel;
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.IdcardUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -79,6 +81,9 @@
     private final IRemoteDicItemService remoteDicItemService;
     private final EmpOccupationalMapper empOccupationalMapper;
     private final IRemotePositionService remotePositionService;
+    private final EmpDimissionLogMapper empDimissionLogMapper;
+    private final EmpOpenArchivesMapper empOpenArchivesMapper;
+    private final EmpResignMapper empResignMapper;
 
     @Override
     public IPage<EmpBaseInfo> findEmpBaseInfos(QueryRequest request, EmpBaseInfo empBaseInfo) {
@@ -88,7 +93,7 @@
     @Override
     public IPage<EmpBaseInfo> findZsEmpBaseInfos(QueryRequest request, EmpBaseInfo empBaseInfo) {
         Page<EmpBaseInfo> page = new Page<>(request.getPageNum(), request.getPageSize());
-        SortUtil.handlePageSort(request, page, "createTime", FebsConstant.ORDER_DESC, true);
+        SortUtil.handlePageSort(request, page, "entryDate", FebsConstant.ORDER_ASC, true);
         IPage<EmpBaseInfo> iPage = empBaseInfoMapper.selectPageVo(page, createQueryWrapper(empBaseInfo));
         //设置部门
         // List<EmpBaseInfo> list = setDeptName(iPage.getRecords());
@@ -169,8 +174,11 @@
     public void createEmpBaseInfo(EmpBaseInfo empBaseInfo) {
         String operatorId = Optional.of(FebsUtil.getUserId()).orElse("1");
         EmpBaseInfo dbInfo = this.getEmpBaseInfo(empBaseInfo);
-        if (dbInfo == null) {
-            empBaseInfo.setEmpId(SequenceUtil.generateId(0L, ModuleCode.HR_EMPLOYEE));
+        Long empId = SequenceUtil.generateId(0L, ModuleCode.HR_EMPLOYEE);
+        boolean saveDimissionLog = false;
+         if (dbInfo == null) {
+            empBaseInfo.setEmpId(empId);
+             saveDimissionLog = true;
         } else {
             empBaseInfo.setEmpId(dbInfo.getEmpId());
         }
@@ -184,13 +192,26 @@
         empBaseInfo.setCreator(operatorId);
         empBaseInfo.setModifier(operatorId);
         this.saveOrUpdate(empBaseInfo);
+
+        if(saveDimissionLog) {
+            EmpDimissionLog dimissionLog = new EmpDimissionLog();
+            dimissionLog.setCloseId(SequenceUtil.generateId(0L, ModuleCode.HR_EMPLOYEE));
+            dimissionLog.setEmpId(empId);
+            dimissionLog.setEntryDate(empBaseInfo.getEntryDate());
+            dimissionLog.setDimissionType("20");
+            dimissionLog.setRemark(empBaseInfo.getRemark());
+            dimissionLog.setCreator(operatorId);
+            dimissionLog.setModifier(operatorId);
+
+            dimissionLogService.save(dimissionLog);
+        }
     }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void updateEmpBaseInfo(EmpBaseInfo empBaseInfo) {
         String operatorId = Optional.of(FebsUtil.getUserId()).orElse("1");
-        if (StrUtil.isNotBlank(empBaseInfo.getImagePath())) {
+        if (StrUtil.isNotBlank(empBaseInfo.getImagePath())&&empBaseInfo.getImagePath().indexOf(",")>0) {
             String path = properties.getEmpBaseInfoPath() + empBaseInfo.getEmpId() + ".png";
             if (MyUtil.generateImage(empBaseInfo.getImagePath(), path)) {
                 empBaseInfo.setImagePath(empBaseInfo.getEmpId() + ".png");
@@ -236,6 +257,25 @@
         String[] str = ids.split(",");
         List<String> list = new ArrayList<>(Arrays.asList(str));
         empBaseInfoMapper.logicDeleteByIds(list, operatorId);
+
+        //同步删除关联数据
+        //不良记录
+        empBadRecordMapper.logicDelByUserIds(list,operatorId);
+        empAccidentCasesMapper.logicDelByUserIds(list,operatorId);
+        empContractInfoMapper.logicDelByUserIds(list,operatorId);
+        empDimissionAttendMapper.logicDelByUserIds(list,operatorId);
+        empDimissionLogMapper.logicDelByUserIds(list,operatorId);
+        empInsuranceMapper.logicDelByUserIds(list,operatorId);
+        empJobChangeMapper.logicDelByUserIds(list,operatorId);
+        empLaborTroubleMapper.logicDelByUserIds(list,operatorId);
+        empLeaveInfoMapper.logicDelByUserIds(list,operatorId);
+        empOccupationalMapper.logicDelByUserIds(list,operatorId);
+        empOpenArchivesMapper.logicDelByUserIds(list,operatorId);
+        empPhysicalExamMapper.logicDelByUserIds(list,operatorId);
+        empRemarkInfoMapper.logicDelByUserIds(list,operatorId);
+        empResignMapper.logicDelByUserIds(list,operatorId);
+        empUnemploymentMapper.logicDelByUserIds(list,operatorId);
+        empWorkExperienceMapper.logicDelByUserIds(list,operatorId);
     }
 
     /**
@@ -249,6 +289,9 @@
      */
     private List<EmpBaseInfo> setDeptName(List<EmpBaseInfo> empBaseInfoList) {
         List<Dept> depts = CastUtil.castList(redisService.get("depts"), Dept.class);
+        if(null == depts){
+            depts =remoteDeptService.setDeptRedis();
+        }
         for (EmpBaseInfo empBaseInfo : empBaseInfoList) {
             // 设置部门
             empBaseInfo.setDeptName(depts.stream()
@@ -378,6 +421,7 @@
             saveChange.setOldDeptName(strDeptName[i]);
             saveChange.setOldJobName(strJobName[i]);
             saveChange.setNewDeptName(empJobChange.getNewDeptName());
+            saveChange.setAllDeptName(empJobChange.getAllDeptName());
             saveChange.setNewJobName(empJobChange.getNewJobName());
             saveChange.setChangeType(empJobChange.getChangeType());
             saveChange.setChangeDate(empJobChange.getChangeDate());
@@ -392,6 +436,7 @@
         Map<String, Object> mapParams = new HashMap<>();
         mapParams.put("deptId", empJobChange.getDeptId());
         mapParams.put("deptName", empJobChange.getNewDeptName());
+        mapParams.put("allDeptName", empJobChange.getAllDeptName());
         mapParams.put("jobId", empJobChange.getJobId());
         mapParams.put("jobName", empJobChange.getNewJobName());
         mapParams.put("operatorId", operatorId);
@@ -420,6 +465,12 @@
             empBaseInfo.setEmpNumb(list.get(1).toString());
 
             List<Dept> depts = CastUtil.castList(redisService.get("depts"), Dept.class);
+            if(null == depts){
+                depts =remoteDeptService.setDeptRedis();
+            }
+            if(null == depts){
+               depts =remoteDeptService.setDeptRedis();
+            }
             empBaseInfo.setDeptName(list.get(2).toString());
             Dept dept = depts.stream().filter(d -> d.getDeptName().equals(list.get(2).toString())).findFirst().orElse(null);
             if (null == dept) {
@@ -446,7 +497,22 @@
             empBaseInfo.setJobId(position.getPositionId());
             empBaseInfo.setJobName(list.get(3).toString());
             empBaseInfo.setEmpName(list.get(4).toString());
-            empBaseInfo.setCertificateNumb(list.get(5).toString());
+            try {
+                if(StrUtil.isNotBlank(list.get(5).toString())){
+                    empBaseInfo.setCertificateNumb(list.get(5).toString());
+                    if (IdcardUtil.isValidCard(list.get(5).toString())){
+                        empBaseInfo.setAge(IdcardUtil.getAgeByIdCard(list.get(5).toString()));
+                        empBaseInfo.setBirthdate(IdcardUtil.getBirthDate(list.get(5).toString()));
+                    }
+                }
+
+            }catch (Exception e){
+                log.error("导入人员身份证异常:{}",e);
+                returnList.add(StrUtil.format("导入员工基本信息异常: 出现位置第{}行, 原因:{}检查身份证是否正确", listObject.indexOf(list) + 1, list.get(5).toString()));
+                continue;
+            }
+
+
             empBaseInfo.setSex("男".equals(list.get(6).toString()) ? "1" : "2");
 
             //民族
@@ -492,7 +558,7 @@
 
             empBaseInfo.setCensusAddress(list.get(15).toString());
             empBaseInfo.setCurrentAddress(list.get(16).toString());
-
+            //员工类型
             dicItem =dicItems.parallelStream().filter(j->StrUtil.equalsIgnoreCase(j.getDicCode(),"empType")&&StrUtil.equals(j.getDicItemName(),list.get(17).toString())).findFirst().orElse(null);
             if (null!=dicItem){
                 empBaseInfo.setEmpType(dicItem.getDicItemCode());
@@ -525,13 +591,33 @@
                 empBaseInfo.setEmpCardStatus(dicItem.getDicItemCode());
             }
 
+            //相关证件
+            List<DicItem> dicItemList = new ArrayList<>();
+            String[] certificateList = list.get(30).toString().split(StringConstant.COMMA);
+            if (null != certificateList){
+                for (String s : certificateList) {
+                    dicItem =   dicItems.parallelStream().filter(j->StrUtil.equalsIgnoreCase(j.getDicCode(),"certificateList")&&StrUtil.equals(j.getDicItemName(),s)).findFirst().orElse(null);
+                    if (null!=dicItem){
+                        dicItemList.add(dicItem);
+                    }
+                }
+            }
 
-            empBaseInfo.setCertificateList(list.get(30).toString());
+            if(CollUtil.isNotEmpty(dicItemList)){
+                empBaseInfo.setCertificateList(dicItemList.stream().map(i->i.getDicItemCode()).collect(Collectors.joining(StringConstant.COMMA)));
+            }
+
+
             empBaseInfo.setDelFlag(2);
             //入职类型
             dicItem =dicItems.parallelStream().filter(j->StrUtil.equalsIgnoreCase(j.getDicCode(),"lztype")&&StrUtil.equals(j.getDicItemName(),list.get(31).toString())).findFirst().orElse(null);
             if (null!=dicItem){
                 empBaseInfo.setEntryType(dicItem.getDicItemCode());
+            }
+            //档案情况
+            dicItem =dicItems.parallelStream().filter(j->StrUtil.equalsIgnoreCase(j.getDicCode(),"archivesStatus")&&StrUtil.equals(j.getDicItemName(),list.get(32).toString())).findFirst().orElse(null);
+            if (null!=dicItem){
+                empBaseInfo.setArchivesStatus(dicItem.getDicItemCode());
             }
             empBaseInfo.setEmpStatus("0");
             this.save(empBaseInfo);
@@ -544,7 +630,7 @@
         if (StrUtil.isBlank(empBaseInfo.getImagePath())) {
             return;
         }
-        String path = properties.getEmpBaseInfoPath() + empBaseInfo.getEmpId() + ".png";
+        String path = properties.getEmpBaseInfoPath() + empBaseInfo.getImagePath();
         try (InputStream inputStream = new FileInputStream(path); OutputStream out = response.getOutputStream()) {
 
             //byte数组用于存放图片字节数据
@@ -553,9 +639,19 @@
             inputStream.read(buff);
             inputStream.close();
 
-            //设置发送到客户端的响应内容类型
-            response.setContentType("image/png");
-
+            String  contentType = empBaseInfo.getImagePath().substring(empBaseInfo.getImagePath().indexOf(".")+1);
+            if (contentType.equals("tif")){
+                //设置发送到客户端的响应内容类型
+                response.setContentType("image/tiff");
+            }else if (contentType.equals("bmp")){
+                response.setContentType("application/x-bmp");
+            }else if (contentType.equals("jpg")){
+                response.setContentType("image/jpeg");
+            }else if (contentType.equals("gif")){
+                response.setContentType("image/gif");
+            }else{
+                response.setContentType("image/png");
+            }
             out.write(buff);
         }
     }
@@ -1053,6 +1149,7 @@
     public EmpBaseInfo addInEmpBaseInfo(EmpBaseInfo empBaseInfo) {
         EmpBaseInfo dbEmpInfo = this.getEmpBaseInfo(empBaseInfo);
         if (dbEmpInfo == null) {
+            empBaseInfo.setDelFlag(0);
             this.createEmpBaseInfo(empBaseInfo);
             return null;
         } else {

--
Gitblit v1.8.0