From 65f1296728ac4a2c207d411b50659af683628413 Mon Sep 17 00:00:00 2001
From: luoyb <412940104@qq.com>
Date: 星期五, 30 七月 2021 09:22:39 +0800
Subject: [PATCH] fix: 导入新员工时也同步写一条入职记录

---
 febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/service/impl/EmpBaseInfoServiceImpl.java |   25 +++++++++++-
 febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/util/PoiImportExcel.java                 |   91 ++++++++++++++++++++++++---------------------
 2 files changed, 71 insertions(+), 45 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 c2957af..21a2520 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
@@ -103,8 +103,8 @@
         list.forEach(p -> {
             p.setSexName("1".equals(p.getSex()) ? "男" : "女");
             p.setArchivesStatusName("0".equals(p.getArchivesStatus()) ? "未移交" : "已移交");
-            p.setEmpCardStatusName("1".equals(p.getEmpCardStatus()) ? "未发" : "已发");
-            p.setHandbookStatusName("1".equals(p.getHandbookStatus()) ? "未发" : "已发");
+            p.setEmpCardStatusName("0".equals(p.getEmpCardStatus()) ? "未发" : "已发");
+            p.setHandbookStatusName("0".equals(p.getHandbookStatus()) ? "未发" : "已发");
             p.setEmpStatusName("0".equals(p.getEmpStatus()) ? "在职" : "离职");
             //保险类型
             p.setInsuranceTypeName(dicItems.stream()
@@ -210,6 +210,21 @@
         empBaseInfo.setModifier(operatorId);
         this.saveOrUpdate(empBaseInfo);
 
+        addEmpDimissLog(empBaseInfo, operatorId, empId);
+    }
+
+    /**
+     *
+     * 增加员工后同步增加入职记录
+     *
+     * date 2021-07-30 09:12
+     * @author: luoyibo
+     * @param empBaseInfo 员工信息
+     * @param operatorId 操作员Id
+     * @param empId 员工Id
+     * @return void
+     */
+    private void addEmpDimissLog(EmpBaseInfo empBaseInfo, String operatorId, Long empId) {
         EmpDimissionLog dimissionLog = new EmpDimissionLog();
         dimissionLog.setCloseId(SequenceUtil.generateId(0L, ModuleCode.HR_EMPLOYEE));
         dimissionLog.setEmpId(empId);
@@ -474,6 +489,10 @@
                 returnList.add(StrUtil.format("导入员工基本信息异常: 出现位置第{}行, 原因:{}员工编号重复", listObject.indexOf(list) + 1, list.get(1).toString()));
                 continue;
             }
+            if (this.count(new LambdaQueryWrapper<EmpBaseInfo>().eq(EmpBaseInfo::getCertificateNumb, list.get(1).toString()).ne(EmpBaseInfo::getDelFlag, 1)) > 0) {
+                returnList.add(StrUtil.format("导入员工基本信息异常: 出现位置第{}行, 原因:{}身份证号重复", listObject.indexOf(list) + 1, list.get(1).toString()));
+                continue;
+            }
             EmpBaseInfo empBaseInfo = new EmpBaseInfo();
             empBaseInfo.setEmpId(SequenceUtil.generateId(0L, ModuleCode.HR_EMPLOYEE));
             empBaseInfo.setArchivesNumb(list.get(0).toString());
@@ -636,6 +655,8 @@
             }
             empBaseInfo.setEmpStatus("0");
             this.save(empBaseInfo);
+            //新入职员工需要增加一条入职记录
+            this.addEmpDimissLog(empBaseInfo,"2",empBaseInfo.getEmpId());
         }
     }
 
diff --git a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/util/PoiImportExcel.java b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/util/PoiImportExcel.java
index d126f2e..126e63c 100644
--- a/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/util/PoiImportExcel.java
+++ b/febs-server/febs-server-hr/src/main/java/cc/mrbird/febs/server/hr/util/PoiImportExcel.java
@@ -9,6 +9,7 @@
 import java.util.List;
 
 import cn.hutool.core.util.StrUtil;
+import com.esotericsoftware.minlog.Log;
 import org.apache.poi.hssf.usermodel.HSSFDataFormat;
 import org.apache.poi.hssf.usermodel.HSSFDateUtil;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
@@ -111,56 +112,60 @@
 			throw new Exception("创建Excel工作薄为空!");
 		}
 		List<List<List<Object>>> returnList = new ArrayList<List<List<Object>>>();
-		for (Sheet sheet : work) {
-			Row row = null;
-			Cell cell = null;
+		try {
+            for (Sheet sheet : work) {
+                Row row = null;
+                Cell cell = null;
 
-			list = new ArrayList<List<Object>>();
-			if (sheet == null) {
-				continue;
-			}
-			// 取得Excel的总列数,总行数
-			int columns = 0;
-			Row firstRow = sheet.getRow((short) 0);
-			if (firstRow != null) {
-				columns = firstRow.getPhysicalNumberOfCells();
-			}
+                list = new ArrayList<List<Object>>();
+                if (sheet == null) {
+                    continue;
+                }
+                // 取得Excel的总列数,总行数
+                int columns = 0;
+                Row firstRow = sheet.getRow((short) 0);
+                if (firstRow != null) {
+                    columns = firstRow.getPhysicalNumberOfCells();
+                }
 
-			int rows = sheet.getPhysicalNumberOfRows();
-			List<Object> dataRow = null;
+                int rows = sheet.getPhysicalNumberOfRows();
+                List<Object> dataRow = null;
 
-			// 首行为定义标题的行,数据从第2行开始
-			for (int i = 1; i < rows; i++) {
-				dataRow = new ArrayList<Object>();
-				// 获取行
-				row = sheet.getRow(i);
-				if (row == null) {
-					break;
-				}
+                // 首行为定义标题的行,数据从第2行开始
+                for (int i = 1; i < rows; i++) {
+                    dataRow = new ArrayList<Object>();
+                    // 获取行
+                    row = sheet.getRow(i);
+                    if (row == null) {
+                        break;
+                    }
 
-				cell = row.getCell(0);
-				if (StrUtil.isBlank(getCellValue(cell).toString())) {
-					break;
-				}
+                    cell = row.getCell(0);
+                    if (StrUtil.isBlank(getCellValue(cell).toString())) {
+                        break;
+                    }
 
-				if (row != null) {
-					// columns=row.getPhysicalNumberOfCells();//不在这里设置,通过firstRow来获取列数信息。
-					for (int j = 0; j < columns; j++) {
-						// 获取某行某列的某一个单元格
-						cell = row.getCell(j);
+                    if (row != null) {
+                        // columns=row.getPhysicalNumberOfCells();//不在这里设置,通过firstRow来获取列数信息。
+                        for (int j = 0; j < columns; j++) {
+                            // 获取某行某列的某一个单元格
+                            cell = row.getCell(j);
 
-						// 往dataRow存值
-						dataRow.add(getCellValue(cell));
-					}
-					list.add(dataRow);
-				} else {
-					list.add(new ArrayList<>());
-				}
-			}
+                            // 往dataRow存值
+                            dataRow.add(getCellValue(cell));
+                        }
+                        list.add(dataRow);
+                    } else {
+                        list.add(new ArrayList<>());
+                    }
+                }
 
-			work.close();
-			returnList.add(list);
-		}
+                work.close();
+                returnList.add(list);
+            }
+        } catch (Exception e){
+            Log.error(e.getMessage());
+        }
 
 		return returnList;
 	}

--
Gitblit v1.8.0