From 3e451c90f8734835743e9cebcf02ce30e577c28d Mon Sep 17 00:00:00 2001
From: maven <2163098428@qq.com>
Date: 星期一, 24 十一月 2025 11:27:18 +0800
Subject: [PATCH] yys 1.新增入职导入,下载模板

---
 src/main/resources/mapper/staff/StaffJoinLeaveRecordMapper.xml                  |    2 
 src/main/java/com/ruoyi/staff/controller/StaffJoinLeaveRecordController.java    |   25 ++++++
 src/main/java/com/ruoyi/staff/pojo/StaffJoinLeaveRecord.java                    |    2 
 src/main/java/com/ruoyi/staff/dto/StaffJoinLeaveRecordExcelDto.java             |  125 +++++++++++++++++++++++++++++++
 src/main/java/com/ruoyi/staff/service/impl/StaffJoinLeaveRecordServiceImpl.java |   28 +++++++
 src/main/java/com/ruoyi/staff/service/IStaffJoinLeaveRecordService.java         |    2 
 6 files changed, 182 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/ruoyi/staff/controller/StaffJoinLeaveRecordController.java b/src/main/java/com/ruoyi/staff/controller/StaffJoinLeaveRecordController.java
index 7e37a91..9755c31 100644
--- a/src/main/java/com/ruoyi/staff/controller/StaffJoinLeaveRecordController.java
+++ b/src/main/java/com/ruoyi/staff/controller/StaffJoinLeaveRecordController.java
@@ -4,9 +4,11 @@
 import com.ruoyi.basic.dto.SupplierManageDto;
 import com.ruoyi.basic.pojo.SupplierManage;
 import com.ruoyi.basic.service.ISupplierService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.framework.aspectj.lang.annotation.Log;
 import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
 import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.staff.dto.StaffJoinLeaveRecordExcelDto;
 import com.ruoyi.staff.pojo.StaffJoinLeaveRecord;
 import com.ruoyi.staff.service.IStaffJoinLeaveRecordService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -92,5 +94,28 @@
         staffJoinLeaveRecordService.staffJoinLeaveRecordExport(response, staffJoinLeaveRecord);
     }
 
+    /**
+     * 鏂板鍏ヨ亴涓嬭浇妯℃澘
+     */
+    @PostMapping("/importTemplate")
+    @Log(title = "鏂板鍏ヨ亴涓嬭浇妯℃澘", businessType = BusinessType.EXPORT)
+    public void importTemplate(HttpServletResponse response){
+        ExcelUtil<StaffJoinLeaveRecordExcelDto> util = new ExcelUtil<>(StaffJoinLeaveRecordExcelDto.class);
+        util.importTemplateExcel(response, "鏂板鍏ヨ亴妯℃澘");
+    }
+
+    /**
+     * 鏂板鍏ヨ亴瀵煎叆
+     */
+    @PostMapping("/import")
+    @Log(title = "鏂板鍏ヨ亴瀵煎叆", businessType = BusinessType.IMPORT)
+    public AjaxResult importData(@RequestPart("file") MultipartFile file) throws  Exception{
+        Boolean b = staffJoinLeaveRecordService.importData(file);
+        if (b) {
+            return AjaxResult.success("瀵煎叆鎴愬姛");
+        }
+        return AjaxResult.error("瀵煎叆澶辫触");
+    }
+
 
 }
diff --git a/src/main/java/com/ruoyi/staff/dto/StaffJoinLeaveRecordExcelDto.java b/src/main/java/com/ruoyi/staff/dto/StaffJoinLeaveRecordExcelDto.java
new file mode 100644
index 0000000..bd35390
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/dto/StaffJoinLeaveRecordExcelDto.java
@@ -0,0 +1,125 @@
+package com.ruoyi.staff.dto;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author :yys
+ * @date : 2025/11/24 11:09
+ */
+@Data
+public class StaffJoinLeaveRecordExcelDto {
+    /**
+     * 璇曠敤鏈燂紙鏈堬級
+     */
+    @Excel(name = "璇曠敤鏈燂紙鏈堬級")
+    private Integer probationPeriod;
+
+
+
+    /**
+     * 鍛樺伐缂栧彿
+     */
+    @Excel(name = "鍛樺伐缂栧彿")
+    private String staffNo;
+
+    /**
+     * 鍛樺伐濮撳悕
+     */
+    @Excel(name = "鍛樺伐濮撳悕")
+    private String staffName;
+
+    /**
+     * 鎬у埆
+     */
+    @Excel(name = "鎬у埆")
+    private String sex;
+
+    /**
+     * 绫嶈疮
+     */
+    @Excel(name = "绫嶈疮")
+    private String nativePlace;
+
+    /**
+     * 閮ㄩ棬宀椾綅id
+     */
+//    @Excel(name = "宀椾綅")
+    private Long deptPositionId;
+
+    @TableField(exist = false)
+    @Excel(name = "宀椾綅")
+    private String deptPositionName;
+
+    /**
+     * 瀹跺涵浣忓潃
+     */
+    @Excel(name = "瀹跺涵浣忓潃")
+    private String adress;
+
+    /**
+     * 绗竴瀛﹀巻
+     */
+    @Excel(name = "绗竴瀛﹀巻")
+    private String firstStudy;
+
+    /**
+     * 涓撲笟
+     */
+    @Excel(name = "涓撲笟")
+    private String profession;
+
+    /**
+     * 韬唤璇佸彿鐮�
+     */
+    @Excel(name = "韬唤璇佸彿鐮�")
+    private String identityCard;
+
+    /**
+     * 骞撮緞
+     */
+    @Excel(name = "骞撮緞")
+    private String age;
+
+    /**
+     * 鑱旂郴鐢佃瘽
+     */
+    @Excel(name = "鑱旂郴鐢佃瘽")
+    private String phone;
+
+    /**
+     * 绱ф�ヨ仈绯讳汉
+     */
+    @Excel(name = "绱ф�ヨ仈绯讳汉")
+    private String emergencyContact;
+
+    /**
+     * 绱ф�ヨ仈绯讳汉鐢佃瘽
+     */
+    @Excel(name = "绱ф�ヨ仈绯讳汉鐢佃瘽")
+    private String emergencyContactPhone;
+
+    /**
+     * 鍚堝悓骞撮檺
+     */
+    @Excel(name = "鍚堝悓骞撮檺")
+    private String contractTerm;
+
+    /**
+     * 鍚堝悓寮�濮嬫棩鏈�
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "鍚堝悓寮�濮嬫棩鏈�", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date contractStartTime;
+
+    /**
+     * 鍚堝悓缁撴潫鏃ユ湡
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "鍚堝悓缁撴潫鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date contractEndTime;
+}
diff --git a/src/main/java/com/ruoyi/staff/pojo/StaffJoinLeaveRecord.java b/src/main/java/com/ruoyi/staff/pojo/StaffJoinLeaveRecord.java
index 4ee26a7..db79027 100644
--- a/src/main/java/com/ruoyi/staff/pojo/StaffJoinLeaveRecord.java
+++ b/src/main/java/com/ruoyi/staff/pojo/StaffJoinLeaveRecord.java
@@ -71,7 +71,7 @@
      * 閮ㄩ棬宀椾綅id
      */
 //    @Excel(name = "宀椾綅")
-    private Integer deptPositionId;
+    private Long deptPositionId;
 
     @TableField(exist = false)
     @Excel(name = "宀椾綅")
diff --git a/src/main/java/com/ruoyi/staff/service/IStaffJoinLeaveRecordService.java b/src/main/java/com/ruoyi/staff/service/IStaffJoinLeaveRecordService.java
index 56875b3..44ba864 100644
--- a/src/main/java/com/ruoyi/staff/service/IStaffJoinLeaveRecordService.java
+++ b/src/main/java/com/ruoyi/staff/service/IStaffJoinLeaveRecordService.java
@@ -23,4 +23,6 @@
     int delStaffJoinLeaveRecord(List<Integer> ids);
 
     int updateStaffJoinLeaveRecord(StaffJoinLeaveRecord staffJoinLeaveRecord);
+
+    Boolean importData(MultipartFile file) throws Exception;
 }
diff --git a/src/main/java/com/ruoyi/staff/service/impl/StaffJoinLeaveRecordServiceImpl.java b/src/main/java/com/ruoyi/staff/service/impl/StaffJoinLeaveRecordServiceImpl.java
index f82ecc8..50b1090 100644
--- a/src/main/java/com/ruoyi/staff/service/impl/StaffJoinLeaveRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/staff/service/impl/StaffJoinLeaveRecordServiceImpl.java
@@ -7,7 +7,10 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 
 import com.ruoyi.common.exception.base.BaseException;
+import com.ruoyi.common.utils.excel.ExcelUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.lavorissue.mapper.DeptPositionMapper;
+import com.ruoyi.lavorissue.pojo.DeptPosition;
 import com.ruoyi.staff.mapper.StaffJoinLeaveRecordMapper;
 import com.ruoyi.staff.mapper.StaffOnJobMapper;
 import com.ruoyi.staff.pojo.StaffJoinLeaveRecord;
@@ -17,6 +20,8 @@
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import javax.servlet.ServletException;
@@ -166,4 +171,27 @@
         }
         return staffJoinLeaveRecordMapper.updateById(staffJoinLeaveRecord);
     }
+
+    private final DeptPositionMapper deptPositionMapper;
+
+    @Override
+    public Boolean importData(MultipartFile file) throws Exception{
+        ExcelUtil<StaffJoinLeaveRecord> util = new ExcelUtil<>(StaffJoinLeaveRecord.class);
+        List<StaffJoinLeaveRecord> staffJoinLeaveRecords = util.importExcel(file.getInputStream());
+        if(CollectionUtils.isEmpty(staffJoinLeaveRecords)){
+            return false;
+        }
+        List<DeptPosition> deptPositions = deptPositionMapper.selectList(null);
+        if(CollectionUtils.isEmpty(deptPositions)){
+            return false;
+        }
+        // 閫氳繃閮ㄩ棬鍚嶇О鏌ヨ閮ㄩ棬id
+        for (StaffJoinLeaveRecord staffJoinLeaveRecord : staffJoinLeaveRecords) {
+            staffJoinLeaveRecord.setStaffState(1);
+            Optional<DeptPosition> deptPosition = deptPositions.stream().filter(deptPosition1 -> deptPosition1.getName().equals(staffJoinLeaveRecord.getDeptPositionName())).findFirst();
+            deptPosition.ifPresent(position -> staffJoinLeaveRecord.setDeptPositionId(position.getId()));
+            add(staffJoinLeaveRecord);
+        }
+        return true;
+    }
 }
diff --git a/src/main/resources/mapper/staff/StaffJoinLeaveRecordMapper.xml b/src/main/resources/mapper/staff/StaffJoinLeaveRecordMapper.xml
index fde6af6..991e1b6 100644
--- a/src/main/resources/mapper/staff/StaffJoinLeaveRecordMapper.xml
+++ b/src/main/resources/mapper/staff/StaffJoinLeaveRecordMapper.xml
@@ -8,7 +8,7 @@
         FROM staff_join_leave_record t1
         left join dept_position  t2 on t1.dept_position_id = t2.id and t2.type = 2
         where
-        staff_state = #{staffJoinLeaveRecord.staffState}
+        t1.staff_state = #{staffJoinLeaveRecord.staffState}
         <if test="staffJoinLeaveRecord.staffName != null and staffJoinLeaveRecord.staffName != '' ">
             AND t1.staff_name LIKE CONCAT('%',#{staffJoinLeaveRecord.staffName},'%')
         </if>

--
Gitblit v1.9.3