From 57cd4d6f53f9fd6ba1122de5fa80196b5664f1dc Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期一, 19 一月 2026 16:09:46 +0800
Subject: [PATCH] 员工台账-续签合同

---
 src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java |   38 +++++++++++++++++++++++++++++++++-----
 1 files changed, 33 insertions(+), 5 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..21f4c2b 100644
--- a/src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java
+++ b/src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java
@@ -69,6 +69,7 @@
             throw new BaseException("缂栧彿涓�"+staffOnJobPrams.getStaffNo()+"鐨勫憳宸ュ凡缁忓瓨鍦�,鏃犳硶鏂板!!!");
         }
         // 鍒涘缓鍏ヨ亴鏁版嵁
+        staffOnJobPrams.setContractExpireTime(staffOnJobPrams.getContractEndTime());
         staffOnJobMapper.insert(staffOnJobPrams);
 
         // 鍒涘缓鍚堝悓璁板綍
@@ -90,20 +91,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);
     }
 
     //鍒犻櫎鍏ヨ亴
@@ -116,6 +119,30 @@
         staffLeaveMapper.delete(Wrappers.<StaffLeave>lambdaQuery().in(StaffLeave::getStaffOnJobId, ids));
         // 鍒犻櫎鍚堝悓鏁版嵁
         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;
     }
 
     //鍦ㄨ亴鍛樺伐璇︽儏
@@ -131,6 +158,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());

--
Gitblit v1.9.3