From 0998498b2f9192b3fd04b34dc6074cac63e14985 Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期二, 20 一月 2026 17:43:23 +0800
Subject: [PATCH] 人力资源分析接口

---
 src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java |   57 ++++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 44 insertions(+), 13 deletions(-)

diff --git a/src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java b/src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java
index 3de1ca9..9756f33 100644
--- a/src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java
+++ b/src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java
@@ -1,7 +1,6 @@
 package com.ruoyi.staff.service.impl;
 
 
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -13,11 +12,9 @@
 import com.ruoyi.project.system.mapper.SysPostMapper;
 import com.ruoyi.staff.dto.StaffOnJobDto;
 import com.ruoyi.staff.mapper.StaffContractMapper;
-import com.ruoyi.staff.mapper.StaffJoinLeaveRecordMapper;
 import com.ruoyi.staff.mapper.StaffLeaveMapper;
 import com.ruoyi.staff.mapper.StaffOnJobMapper;
 import com.ruoyi.staff.pojo.StaffContract;
-import com.ruoyi.staff.pojo.StaffJoinLeaveRecord;
 import com.ruoyi.staff.pojo.StaffLeave;
 import com.ruoyi.staff.pojo.StaffOnJob;
 import com.ruoyi.staff.service.IStaffOnJobService;
@@ -26,6 +23,7 @@
 import lombok.AllArgsConstructor;
 
 import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
@@ -42,13 +40,14 @@
 @Service
 public class StaffOnJobServiceImpl extends ServiceImpl<StaffOnJobMapper, StaffOnJob>  implements IStaffOnJobService {
 
-
+    @Autowired
     private StaffOnJobMapper staffOnJobMapper;
-
+    @Autowired
     private SysPostMapper sysPostMapper;
 
-    private StaffJoinLeaveRecordMapper staffJoinLeaveRecordMapper;
+    @Autowired
     private StaffContractMapper staffContractMapper;
+    @Autowired
     private StaffLeaveMapper staffLeaveMapper;
 
 
@@ -69,6 +68,7 @@
             throw new BaseException("缂栧彿涓�"+staffOnJobPrams.getStaffNo()+"鐨勫憳宸ュ凡缁忓瓨鍦�,鏃犳硶鏂板!!!");
         }
         // 鍒涘缓鍏ヨ亴鏁版嵁
+        staffOnJobPrams.setContractExpireTime(staffOnJobPrams.getContractEndTime());
         staffOnJobMapper.insert(staffOnJobPrams);
 
         // 鍒涘缓鍚堝悓璁板綍
@@ -90,20 +90,22 @@
             throw new BaseException("缂栧彿涓�"+staffOnJobParams.getStaffNo()+"鐨勫憳宸ヤ笉瀛樺湪,鏃犳硶鏇存柊!!!");
         }
 
-        // 鏇存柊鍛樺伐鏁版嵁
         String[] ignoreProperties = {"id"};//鎺掗櫎id灞炴��
-        BeanUtils.copyProperties(staffOnJobParams,job,ignoreProperties);
-        staffOnJobMapper.updateById(job);
 
         // 鑾峰彇鏈�鏂板悎鍚屾暟鎹紝骞朵笖鏇存柊
         StaffContract contract = staffContractMapper.selectOne(Wrappers.<StaffContract>lambdaQuery()
                 .eq(StaffContract::getStaffOnJobId, id)
+                .last("limit 1")
                 .orderByDesc(StaffContract::getId));
         if (contract != null){
             BeanUtils.copyProperties(staffOnJobParams,contract,ignoreProperties);
-            return staffContractMapper.updateById(contract);
+            staffContractMapper.updateById(contract);
         }
-        return 0;
+
+        // 鏇存柊鍛樺伐鏁版嵁
+        BeanUtils.copyProperties(staffOnJobParams,job,ignoreProperties);
+        job.setContractExpireTime(staffOnJobParams.getContractEndTime());
+        return staffOnJobMapper.updateById(job);
     }
 
     //鍒犻櫎鍏ヨ亴
@@ -118,10 +120,38 @@
         return staffContractMapper.delete(Wrappers.<StaffContract>lambdaQuery().in(StaffContract::getStaffOnJobId, ids));
     }
 
+    // 缁鍚堝悓
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int renewContract(Long id, StaffContract staffContract) {
+        // 鍒ゆ柇瀵硅薄鏄惁瀛樺湪
+        StaffOnJob job = staffOnJobMapper.selectById(id);
+        if (job == null){
+            throw new BaseException("璇ュ憳宸ヤ笉瀛樺湪,鏃犳硶鏇存柊!!!");
+        }
+
+        // 澧炲姞鍚堝悓
+        StaffContract newStaffContract = new StaffContract();
+        newStaffContract.setStaffOnJobId(id);
+        newStaffContract.setContractTerm(staffContract.getContractTerm());
+        newStaffContract.setContractStartTime(staffContract.getContractStartTime());
+        newStaffContract.setContractEndTime(staffContract.getContractEndTime());
+        staffContractMapper.insert(newStaffContract);
+
+        // 鏇存柊鍛樺伐鍚堝悓杩囨湡鏃堕棿
+        job.setContractExpireTime(staffContract.getContractEndTime());
+        staffOnJobMapper.updateById(job);
+        return 0;
+    }
+
     //鍦ㄨ亴鍛樺伐璇︽儏
     @Override
     public StaffOnJobDto staffOnJobDetail(Long id) {
         StaffOnJob staffOnJob  = staffOnJobMapper.selectById(id);
+        if (staffOnJob == null) {
+            throw new IllegalArgumentException("璇ュ憳宸ヤ笉瀛樺湪");
+        }
+
         StaffOnJobDto staffOnJobDto = new StaffOnJobDto();
         BeanUtils.copyProperties(staffOnJob, staffOnJobDto);
         // 鏌ヨ宀椾綅鍚嶇О
@@ -131,6 +161,7 @@
         // 鏌ヨ鍚堝悓淇℃伅
         StaffContract contract = staffContractMapper.selectOne(Wrappers.<StaffContract>lambdaQuery()
                 .eq(StaffContract::getStaffOnJobId, staffOnJob.getId())
+                .last("limit 1")
                 .orderByDesc(StaffContract::getId));
         if (contract != null){
             staffOnJobDto.setContractTerm(contract.getContractTerm());
@@ -149,8 +180,8 @@
     }
 
     @Override
-    public List<StaffJoinLeaveRecord> staffOnJobList() {
-        return staffJoinLeaveRecordMapper.staffOnJobList();
+    public List<StaffOnJobDto> staffOnJobList(StaffOnJob staffOnJob) {
+        return staffOnJobMapper.staffOnJobList(staffOnJob);
     }
 
     @Override

--
Gitblit v1.9.3