From f3d5c380c2e99cff05dfef25ff91cde2fcb54503 Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期五, 16 一月 2026 17:47:09 +0800
Subject: [PATCH] 重构员工台账

---
 src/main/java/com/ruoyi/staff/dto/StaffOnJobDto.java                     |   16 +
 src/main/java/com/ruoyi/staff/mapper/StaffContractMapper.java            |   25 ++
 src/main/java/com/ruoyi/staff/mapper/StaffOnJobMapper.java               |    3 
 src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java    |  111 ++++++++++-
 src/main/java/com/ruoyi/staff/pojo/StaffContract.java                    |   49 +++++
 src/main/java/com/ruoyi/staff/mapper/StaffLeaveMapper.java               |   10 +
 src/main/java/com/ruoyi/staff/service/IStaffOnJobService.java            |    9 
 src/main/java/com/ruoyi/staff/pojo/StaffLeave.java                       |   35 +++
 doc/20260116_create_table_staff_leave.sql                                |   13 +
 src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java       |   45 ++++
 doc/20260116_create_table_staff_contract.sql                             |   13 +
 src/main/java/com/ruoyi/staff/controller/StaffContractController.java    |   34 +++
 src/main/java/com/ruoyi/staff/service/impl/StaffContractServiceImpl.java |   23 ++
 src/main/java/com/ruoyi/staff/pojo/StaffOnJob.java                       |   42 ++--
 src/main/java/com/ruoyi/staff/dto/StaffContractDto.java                  |    9 +
 src/main/java/com/ruoyi/staff/service/impl/StaffLeaveServiceImpl.java    |   15 +
 src/main/resources/mapper/staff/StaffOnJobMapper.xml                     |    9 
 src/main/java/com/ruoyi/staff/service/StaffContractService.java          |   19 ++
 src/main/resources/mapper/staff/StaffContractMapper.xml                  |   15 +
 src/main/java/com/ruoyi/staff/service/StaffLeaveService.java             |    7 
 20 files changed, 455 insertions(+), 47 deletions(-)

diff --git a/doc/20260116_create_table_staff_contract.sql b/doc/20260116_create_table_staff_contract.sql
new file mode 100644
index 0000000..f8fc20a
--- /dev/null
+++ b/doc/20260116_create_table_staff_contract.sql
@@ -0,0 +1,13 @@
+# 鍛樺伐鍚堝悓琛�
+drop table if exists staff_contract;
+create table staff_contract
+(
+    id                  bigint auto_increment primary key,
+    staff_on_job_id     bigint not null default 0 comment '鍛樺伐鍦ㄨ亴id',
+    contract_start_time datetime null comment '鍚堝悓寮�濮嬫椂闂�',
+    contract_end_time   datetime null comment '鍚堝悓缁撴潫鏃堕棿',
+    contract_term       int    not null default 0 comment '鍚堝悓鏈熼檺',
+    tenant_id           bigint not null comment '绉熸埛id',
+    create_time         datetime null comment '褰曞叆鏃堕棿',
+    update_time         datetime null comment '鏇存柊鏃堕棿'
+);
diff --git a/doc/20260116_create_table_staff_leave.sql b/doc/20260116_create_table_staff_leave.sql
new file mode 100644
index 0000000..7e4b1cf
--- /dev/null
+++ b/doc/20260116_create_table_staff_leave.sql
@@ -0,0 +1,13 @@
+#鍛樺伐绂昏亴琛�
+drop table if exists staff_join_leave_record;
+drop table if exists staff_leave;
+create table staff_leave
+(
+    id              bigint auto_increment primary key,
+    staff_on_job_id bigint not null default 0 comment '鍛樺伐鍦ㄨ亴id',
+    reason          varchar(255) null comment '绂昏亴鍘熷洜',
+    remark          text null comment '绂昏亴澶囨敞',
+    tenant_id       bigint not null comment '绉熸埛id',
+    create_time     datetime null comment '褰曞叆鏃堕棿',
+    update_time     datetime null comment '鏇存柊鏃堕棿'
+);
diff --git a/src/main/java/com/ruoyi/staff/controller/StaffContractController.java b/src/main/java/com/ruoyi/staff/controller/StaffContractController.java
new file mode 100644
index 0000000..af4c90c
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/controller/StaffContractController.java
@@ -0,0 +1,34 @@
+package com.ruoyi.staff.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.staff.pojo.StaffContract;
+import com.ruoyi.staff.service.StaffContractService;
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+/**
+ * 鍛樺伐鍙拌处/鍚堝悓绠$悊
+ */
+@RestController
+@RequestMapping("/staff/staffContract")
+@Api(tags = "鍛樺伐鍙拌处/鍚堝悓绠$悊")
+public class StaffContractController {
+
+    @Resource
+    private StaffContractService staffContractService;
+
+
+    /**
+     * 鍛樺伐鍚堝悓鍒嗛〉鏌ヨ
+     * @param page
+     * @param staffContract
+     * @return
+     */
+    @GetMapping("/listPage")
+    public AjaxResult staffContractListPage(Page page, StaffContract staffContract) {
+        return AjaxResult.success(staffContractService.staffContractListPage(page, staffContract));
+    }
+}
diff --git a/src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java b/src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java
index 7ddf17d..55a93b2 100644
--- a/src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java
+++ b/src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java
@@ -4,6 +4,7 @@
 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.StaffOnJobDto;
 import com.ruoyi.staff.pojo.StaffJoinLeaveRecord;
 import com.ruoyi.staff.pojo.StaffOnJob;
 import com.ruoyi.staff.service.IStaffJoinLeaveRecordService;
@@ -52,14 +53,48 @@
     }
 
     /**
-     * 鍦ㄨ亴鍛樺伐璇︽儏
-     * @param staffNo
+     * 鏂板鍏ヨ亴
+     * @param staffOnJob
      * @return
      */
-    @GetMapping("/staffNo")
-    public AjaxResult staffOnJobDetail(String staffNo) {
-        return AjaxResult.success(staffOnJobService.staffOnJobDetail(staffNo));
+    @PostMapping("")
+    public AjaxResult add(@RequestBody StaffOnJobDto staffOnJob) {
+        return AjaxResult.success(staffOnJobService.add(staffOnJob));
     }
+
+    /**
+     * 鏇存柊鍏ヨ亴淇℃伅
+     * @param staffOnJobDto
+     * @return
+     */
+    @PutMapping("/{id}")
+    public AjaxResult update(@PathVariable("id") Long id, @RequestBody StaffOnJobDto staffOnJobDto) {
+        return AjaxResult.success(staffOnJobService.update(id, staffOnJobDto));
+    }
+
+    /**
+     * 鍒犻櫎鍏ヨ亴
+     * @param ids
+     * @return
+     */
+    @DeleteMapping("/del")
+    public AjaxResult delStaffOnJobs(@RequestBody List<Integer> ids) {
+        if(CollectionUtils.isEmpty(ids)){
+            return AjaxResult.error("璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�");
+        }
+        return AjaxResult.success(staffOnJobService.delStaffOnJobs(ids));
+    }
+
+    /**
+     * 鍦ㄨ亴鍛樺伐璇︽儏
+     * @param id
+     * @return
+     */
+    @GetMapping("/{id}")
+    public AjaxResult staffJoinLeaveRecordDetail(@PathVariable("id") Long id) {
+        return AjaxResult.success(staffOnJobService.staffOnJobDetail(id));
+    }
+
     /**
      * 鍦ㄨ亴鍛樺伐瀵煎叆
      */
diff --git a/src/main/java/com/ruoyi/staff/dto/StaffContractDto.java b/src/main/java/com/ruoyi/staff/dto/StaffContractDto.java
new file mode 100644
index 0000000..3d74c67
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/dto/StaffContractDto.java
@@ -0,0 +1,9 @@
+package com.ruoyi.staff.dto;
+
+import com.ruoyi.staff.pojo.StaffContract;
+import lombok.Data;
+
+@Data
+public class StaffContractDto extends StaffContract {
+    private String staffName;
+}
diff --git a/src/main/java/com/ruoyi/staff/dto/StaffOnJobDto.java b/src/main/java/com/ruoyi/staff/dto/StaffOnJobDto.java
index 13c2051..04f5169 100644
--- a/src/main/java/com/ruoyi/staff/dto/StaffOnJobDto.java
+++ b/src/main/java/com/ruoyi/staff/dto/StaffOnJobDto.java
@@ -1,10 +1,26 @@
 package com.ruoyi.staff.dto;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
 import com.ruoyi.staff.pojo.StaffJoinLeaveRecord;
 import com.ruoyi.staff.pojo.StaffOnJob;
 import lombok.Data;
 
+import java.util.Date;
+
 @Data
 public class StaffOnJobDto extends StaffOnJob {
+    @Excel(name = "宀椾綅",sort = 7)
     private String postName;
+
+    @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/mapper/StaffContractMapper.java b/src/main/java/com/ruoyi/staff/mapper/StaffContractMapper.java
new file mode 100644
index 0000000..9545082
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/mapper/StaffContractMapper.java
@@ -0,0 +1,25 @@
+package com.ruoyi.staff.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.staff.dto.StaffContractDto;
+import com.ruoyi.staff.dto.StaffOnJobDto;
+import com.ruoyi.staff.pojo.StaffContract;
+import com.ruoyi.staff.pojo.StaffOnJob;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface StaffContractMapper extends BaseMapper<StaffContract> {
+    /**
+     * 鍛樺伐鍚堝悓鍒嗛〉鏌ヨ
+     * @param page
+     * @param staffContract
+     * @return
+     */
+    IPage<StaffContractDto> staffContractListPage(Page page, @Param("staffContract") StaffContract staffContract);
+
+}
diff --git a/src/main/java/com/ruoyi/staff/mapper/StaffLeaveMapper.java b/src/main/java/com/ruoyi/staff/mapper/StaffLeaveMapper.java
new file mode 100644
index 0000000..d8fce17
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/mapper/StaffLeaveMapper.java
@@ -0,0 +1,10 @@
+package com.ruoyi.staff.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.staff.pojo.StaffLeave;
+import org.apache.ibatis.annotations.Mapper;
+
+
+@Mapper
+public interface StaffLeaveMapper extends BaseMapper<StaffLeave> {
+}
diff --git a/src/main/java/com/ruoyi/staff/mapper/StaffOnJobMapper.java b/src/main/java/com/ruoyi/staff/mapper/StaffOnJobMapper.java
index b11847e..1451487 100644
--- a/src/main/java/com/ruoyi/staff/mapper/StaffOnJobMapper.java
+++ b/src/main/java/com/ruoyi/staff/mapper/StaffOnJobMapper.java
@@ -4,7 +4,6 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.staff.dto.StaffOnJobDto;
-import com.ruoyi.staff.pojo.StaffJoinLeaveRecord;
 import com.ruoyi.staff.pojo.StaffOnJob;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -16,5 +15,5 @@
 
     IPage<StaffOnJobDto> staffOnJobListPage(Page page, @Param("staffOnJob") StaffOnJob staffOnJob);
 
-    List<StaffOnJob> staffOnJobList(@Param("staffOnJob") StaffOnJob staffOnJob);
+    List<StaffOnJobDto> staffOnJobList(@Param("staffOnJob") StaffOnJob staffOnJob);
 }
diff --git a/src/main/java/com/ruoyi/staff/pojo/StaffContract.java b/src/main/java/com/ruoyi/staff/pojo/StaffContract.java
new file mode 100644
index 0000000..9b2afee
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/pojo/StaffContract.java
@@ -0,0 +1,49 @@
+package com.ruoyi.staff.pojo;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+
+@TableName("staff_contract")
+@Data
+public class StaffContract {
+
+    @ApiModelProperty(value = "搴忓彿")
+    private Long id;
+
+    @ApiModelProperty(value = "鍦ㄨ亴鍛樺伐ID")
+    private Long staffOnJobId;
+
+    @ApiModelProperty(value = "鍚堝悓鏈熼檺")
+    private String contractTerm;
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty(value = "鍚堝悓寮�濮嬫椂闂�")
+    private Date contractStartTime;
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty(value = "鍚堝悓缁撴潫鏃堕棿")
+    private Date contractEndTime;
+
+    @ApiModelProperty(value = "绉熸埛ID")
+    @TableField(fill = FieldFill.INSERT)
+    private Long tenantId;
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    @TableField(fill = FieldFill.UPDATE)
+    private LocalDateTime updateTime;
+}
diff --git a/src/main/java/com/ruoyi/staff/pojo/StaffLeave.java b/src/main/java/com/ruoyi/staff/pojo/StaffLeave.java
new file mode 100644
index 0000000..9965c6d
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/pojo/StaffLeave.java
@@ -0,0 +1,35 @@
+package com.ruoyi.staff.pojo;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+
+@TableName("staff_leave")
+@Data
+public class StaffLeave {
+
+    @ApiModelProperty(value = "搴忓彿")
+    private Long id;
+
+    @ApiModelProperty(value = "鍦ㄨ亴鍛樺伐ID")
+    private Long staffOnJobId;
+
+    @ApiModelProperty(value = "绉熸埛ID")
+    @TableField(fill = FieldFill.INSERT)
+    private Long tenantId;
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    @TableField(fill = FieldFill.UPDATE)
+    private LocalDateTime updateTime;
+}
diff --git a/src/main/java/com/ruoyi/staff/pojo/StaffOnJob.java b/src/main/java/com/ruoyi/staff/pojo/StaffOnJob.java
index 1cee908..2db3869 100644
--- a/src/main/java/com/ruoyi/staff/pojo/StaffOnJob.java
+++ b/src/main/java/com/ruoyi/staff/pojo/StaffOnJob.java
@@ -31,98 +31,97 @@
     /**
      * 鐘舵��(0:绂昏亴;1:鍦ㄨ亴)
      */
-    @Excel(name = "鐘舵��",readConverterExp = "0=绂昏亴,1=鍦ㄨ亴")
+    @Excel(name = "鐘舵��", readConverterExp = "0=绂昏亴,1=鍦ㄨ亴", sort = 1)
     private Integer staffState;
 
     /**
      * 鍛樺伐缂栧彿
      */
-    @Excel(name = "鍛樺伐缂栧彿", type = Excel.Type.EXPORT, cellType = Excel.ColumnType.STRING)
+    @Excel(name = "鍛樺伐缂栧彿", type = Excel.Type.EXPORT, cellType = Excel.ColumnType.STRING, sort = 2)
     private String staffNo;
 
     /**
      * 鍛樺伐濮撳悕
      */
-    @Excel(name = "鍛樺伐濮撳悕")
+    @Excel(name = "鍛樺伐濮撳悕", sort = 3)
     private String staffName;
 
     /**
      * 鎬у埆
      */
-    @Excel(name = "鎬у埆")
+    @Excel(name = "鎬у埆", sort = 4)
     private String sex;
 
     /**
      * 绫嶈疮
      */
-    @Excel(name = "绫嶈疮")
+    @Excel(name = "绫嶈疮", sort = 5)
     private String nativePlace;
 
     /**
      * 宀椾綅
      */
-    @Excel(name = "宀椾綅")
     private Integer sysPostId;
 
     /**
      * 瀹跺涵浣忓潃
      */
-    @Excel(name = "瀹跺涵浣忓潃")
+    @Excel(name = "瀹跺涵浣忓潃", sort = 6)
     private String adress;
 
     /**
      * 绗竴瀛﹀巻
      */
-    @Excel(name = "绗竴瀛﹀巻")
+    @Excel(name = "绗竴瀛﹀巻", sort = 8)
     private String firstStudy;
 
     /**
      * 涓撲笟
      */
-    @Excel(name = "涓撲笟")
+    @Excel(name = "涓撲笟", sort = 9)
     private String profession;
 
     /**
      * 韬唤璇佸彿鐮�
      */
-    @Excel(name = "韬唤璇佸彿鐮�")
+    @Excel(name = "韬唤璇佸彿鐮�", sort = 10)
     private String identityCard;
 
     /**
      * 骞撮緞
      */
-    @Excel(name = "骞撮緞")
+    @Excel(name = "骞撮緞", sort = 11)
     private String age;
 
     /**
      * 鑱旂郴鐢佃瘽
      */
-    @Excel(name = "鑱旂郴鐢佃瘽")
+    @Excel(name = "鑱旂郴鐢佃瘽", sort = 12)
     private String phone;
 
     /**
      * 绱ф�ヨ仈绯讳汉
      */
-    @Excel(name = "绱ф�ヨ仈绯讳汉")
+    @Excel(name = "绱ф�ヨ仈绯讳汉", sort = 13)
     private String emergencyContact;
 
     /**
      * 绱ф�ヨ仈绯讳汉鐢佃瘽
      */
-    @Excel(name = "绱ф�ヨ仈绯讳汉鐢佃瘽")
+    @Excel(name = "绱ф�ヨ仈绯讳汉鐢佃瘽", sort = 14)
     private String emergencyContactPhone;
 
     /**
      * 鍚堝悓骞撮檺
      */
-    @Excel(name = "鍚堝悓骞撮檺")
+    @Excel(name = "鍚堝悓骞撮檺", sort = 15)
     private String contractTerm;
 
     /**
      * 鍚堝悓鍒版湡鏃ユ湡
      */
     @JsonFormat(pattern = "yyyy-MM-dd")
-    @Excel(name = "鍚堝悓鍒版湡鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd")
+    @Excel(name = "鍚堝悓鍒版湡鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd", sort = 16)
     @DateTimeFormat(pattern = "yyyy-MM-dd")
     private Date contractExpireTime;
 
@@ -130,7 +129,7 @@
      * 缁撴潫璇曠敤鏃堕棿
      */
     @JsonFormat(pattern = "yyyy-MM-dd")
-    @Excel(name = "缁撴潫璇曠敤鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd")
+    @Excel(name = "缁撴潫璇曠敤鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd", sort = 17)
     @DateTimeFormat(pattern = "yyyy-MM-dd")
     private Date trialEndDate;
 
@@ -138,7 +137,7 @@
      * 寮�濮嬭瘯鐢ㄦ棩鏈�
      */
     @JsonFormat(pattern = "yyyy-MM-dd")
-    @Excel(name = "寮�濮嬭瘯鐢ㄦ棩鏈�", width = 30, dateFormat = "yyyy-MM-dd")
+    @Excel(name = "寮�濮嬭瘯鐢ㄦ棩鏈�", width = 30, dateFormat = "yyyy-MM-dd", sort = 18)
     @DateTimeFormat(pattern = "yyyy-MM-dd")
     private Date trialStartDate;
 
@@ -146,7 +145,7 @@
      * 绛捐鏃堕棿
      */
     @JsonFormat(pattern = "yyyy-MM-dd")
-    @Excel(name = "绛捐鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd")
+    @Excel(name = "绛捐鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd", sort = 19)
     @DateTimeFormat(pattern = "yyyy-MM-dd")
     private Date signDate;
 
@@ -159,7 +158,7 @@
     /**
      * 璇曠敤鏈熷伐璧�
      */
-    @Excel(name = "璇曠敤鏈熷伐璧�")
+    @Excel(name = "璇曠敤鏈熷伐璧�", sort = 20)
     private BigDecimal proSalary;
 
     /**
@@ -171,9 +170,8 @@
     /**
      * 澶囨敞锛堢鍒╁緟閬囷級
      */
-    @Excel(name = "澶囨敞锛堢鍒╁緟閬囷級")
+    @Excel(name = "澶囨敞锛堢鍒╁緟閬囷級", sort = 21)
     private String remark;
-
 
 
     @ApiModelProperty(value = "鍒涘缓鏃堕棿")
diff --git a/src/main/java/com/ruoyi/staff/service/IStaffOnJobService.java b/src/main/java/com/ruoyi/staff/service/IStaffOnJobService.java
index 419e2f4..e6e5a40 100644
--- a/src/main/java/com/ruoyi/staff/service/IStaffOnJobService.java
+++ b/src/main/java/com/ruoyi/staff/service/IStaffOnJobService.java
@@ -6,6 +6,7 @@
 import com.ruoyi.staff.dto.StaffOnJobDto;
 import com.ruoyi.staff.pojo.StaffJoinLeaveRecord;
 import com.ruoyi.staff.pojo.StaffOnJob;
+import org.bouncycastle.crypto.digests.LongDigest;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
@@ -16,7 +17,13 @@
 
     IPage<StaffOnJobDto> staffOnJobListPage(Page page, StaffOnJob staffOnJob);
 
-    List<StaffJoinLeaveRecord> staffOnJobDetail(String staffNo);
+     StaffOnJobDto staffOnJobDetail(Long id);
+
+    int add(StaffOnJobDto staffOnJob);
+
+    int update(Long id, StaffOnJobDto staffOnJob);
+
+    int delStaffOnJobs(List<Integer> ids);
 
     void staffOnJobExport(HttpServletResponse response, StaffOnJob staffOnJob);
 
diff --git a/src/main/java/com/ruoyi/staff/service/StaffContractService.java b/src/main/java/com/ruoyi/staff/service/StaffContractService.java
new file mode 100644
index 0000000..5c2319c
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/service/StaffContractService.java
@@ -0,0 +1,19 @@
+package com.ruoyi.staff.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.staff.dto.StaffContractDto;
+import com.ruoyi.staff.dto.StaffOnJobDto;
+import com.ruoyi.staff.pojo.StaffContract;
+import com.ruoyi.staff.pojo.StaffJoinLeaveRecord;
+import com.ruoyi.staff.pojo.StaffOnJob;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+public interface StaffContractService extends IService<StaffContract> {
+
+    IPage<StaffContractDto> staffContractListPage(Page page, StaffContract staffContract);
+}
diff --git a/src/main/java/com/ruoyi/staff/service/StaffLeaveService.java b/src/main/java/com/ruoyi/staff/service/StaffLeaveService.java
new file mode 100644
index 0000000..67aede2
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/service/StaffLeaveService.java
@@ -0,0 +1,7 @@
+package com.ruoyi.staff.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.staff.pojo.StaffLeave;
+
+public interface StaffLeaveService extends IService<StaffLeave> {
+}
diff --git a/src/main/java/com/ruoyi/staff/service/impl/StaffContractServiceImpl.java b/src/main/java/com/ruoyi/staff/service/impl/StaffContractServiceImpl.java
new file mode 100644
index 0000000..ba6e123
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/service/impl/StaffContractServiceImpl.java
@@ -0,0 +1,23 @@
+package com.ruoyi.staff.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.staff.dto.StaffContractDto;
+import com.ruoyi.staff.mapper.StaffContractMapper;
+import com.ruoyi.staff.pojo.StaffContract;
+import com.ruoyi.staff.service.StaffContractService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+@AllArgsConstructor
+@Service
+public class StaffContractServiceImpl extends ServiceImpl<StaffContractMapper, StaffContract> implements StaffContractService {
+    private StaffContractMapper staffContractMapper;
+
+    @Override
+    public IPage<StaffContractDto> staffContractListPage(Page page, StaffContract staffContract) {
+        return staffContractMapper.staffContractListPage(page,staffContract);
+    }
+}
+
diff --git a/src/main/java/com/ruoyi/staff/service/impl/StaffLeaveServiceImpl.java b/src/main/java/com/ruoyi/staff/service/impl/StaffLeaveServiceImpl.java
new file mode 100644
index 0000000..0fc3807
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/service/impl/StaffLeaveServiceImpl.java
@@ -0,0 +1,15 @@
+package com.ruoyi.staff.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.staff.mapper.StaffLeaveMapper;
+import com.ruoyi.staff.service.StaffLeaveService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+import com.ruoyi.staff.pojo.StaffLeave;
+
+@AllArgsConstructor
+@Service
+public class StaffLeaveServiceImpl extends ServiceImpl<StaffLeaveMapper, StaffLeave> implements StaffLeaveService {
+
+}
+
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 437eede..69e0638 100644
--- a/src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java
+++ b/src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java
@@ -1,40 +1,44 @@
 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;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.exception.base.BaseException;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.dto.WordDateDto;
+import com.ruoyi.project.system.domain.SysPost;
+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.IStaffJoinLeaveRecordService;
 import com.ruoyi.staff.service.IStaffOnJobService;
 import freemarker.template.Configuration;
 import freemarker.template.Template;
-import freemarker.template.TemplateException;
 import lombok.AllArgsConstructor;
 
 import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
 
-import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 import java.io.*;
-import java.math.BigDecimal;
 import java.nio.charset.StandardCharsets;
 import java.time.Instant;
 import java.time.LocalDate;
 import java.time.ZoneId;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+
+import static com.ruoyi.common.enums.StaffJoinLeaveRecordDimissionReason.StaffJoinLeaveRecordDimissionReasonOther;
 
 @AllArgsConstructor
 @Service
@@ -43,7 +47,12 @@
 
     private StaffOnJobMapper staffOnJobMapper;
 
+    private SysPostMapper sysPostMapper;
+
     private StaffJoinLeaveRecordMapper staffJoinLeaveRecordMapper;
+    private StaffContractMapper staffContractMapper;
+    private StaffLeaveMapper staffLeaveMapper;
+
 
     //鍦ㄨ亴鍛樺伐鍙拌处鍒嗛〉鏌ヨ
     @Override
@@ -51,19 +60,93 @@
         return staffOnJobMapper.staffOnJobListPage(page,staffOnJob);
     }
 
+    //鏂板鍏ヨ亴
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int add(StaffOnJobDto staffOnJobPrams) {
+        String[] ignoreProperties = {"id"};//鎺掗櫎id灞炴��
+        // 鍒ゆ柇缂栧彿鏄惁瀛樺湪
+        List<StaffOnJob> staffOnJobs = staffOnJobMapper.selectList(Wrappers.<StaffOnJob>lambdaQuery().eq(StaffOnJob::getStaffNo, staffOnJobPrams.getStaffNo()));
+        if (staffOnJobs.size()>0){
+            throw new BaseException("缂栧彿涓�"+staffOnJobPrams.getStaffNo()+"鐨勫憳宸ュ凡缁忓瓨鍦�,鏃犳硶鏂板!!!");
+        }
+        // 鍒涘缓鍏ヨ亴鏁版嵁
+        staffOnJobMapper.insert(staffOnJobPrams);
+
+        // 鍒涘缓鍚堝悓璁板綍
+        StaffContract staffContract = new StaffContract();
+        staffContract.setStaffOnJobId(staffOnJobPrams.getId());
+        staffContract.setContractTerm(staffOnJobPrams.getContractTerm());
+        staffContract.setContractStartTime(staffOnJobPrams.getContractStartTime());
+        staffContract.setContractEndTime(staffOnJobPrams.getContractEndTime());
+        return staffContractMapper.insert(staffContract);
+    }
+
+    //鏇存柊鍏ヨ亴淇℃伅
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int update(Long id, StaffOnJobDto staffOnJobParams) {
+        // 鍒ゆ柇瀵硅薄鏄惁瀛樺湪
+        StaffOnJob job = staffOnJobMapper.selectById(id);
+        if (job == null){
+            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)
+                .orderByDesc(StaffContract::getId));
+        if (contract != null){
+            BeanUtils.copyProperties(staffOnJobParams,contract,ignoreProperties);
+            return staffContractMapper.updateById(contract);
+        }
+        return 0;
+    }
+
+    //鍒犻櫎鍏ヨ亴
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int delStaffOnJobs(List<Integer> ids) {
+        // 鍒犻櫎鍏ヨ亴鏁版嵁
+        staffOnJobMapper.deleteBatchIds(ids);
+        // 鍒犻櫎绂昏亴鏁版嵁
+        staffLeaveMapper.delete(Wrappers.<StaffLeave>lambdaQuery().in(StaffLeave::getStaffOnJobId, ids));
+        // 鍒犻櫎鍚堝悓鏁版嵁
+        return staffContractMapper.delete(Wrappers.<StaffContract>lambdaQuery().in(StaffContract::getStaffOnJobId, ids));
+    }
+
     //鍦ㄨ亴鍛樺伐璇︽儏
     @Override
-    public List<StaffJoinLeaveRecord> staffOnJobDetail(String staffNo) {
-        return staffJoinLeaveRecordMapper.selectList(Wrappers.<StaffJoinLeaveRecord>lambdaQuery()
-                .eq(StaffJoinLeaveRecord::getStaffState,1)
-                .eq(StaffJoinLeaveRecord::getStaffNo,staffNo));
+    public StaffOnJobDto staffOnJobDetail(Long id) {
+        StaffOnJob staffOnJob  = staffOnJobMapper.selectById(id);
+        StaffOnJobDto staffOnJobDto = new StaffOnJobDto();
+        BeanUtils.copyProperties(staffOnJob, staffOnJobDto);
+        // 鏌ヨ宀椾綅鍚嶇О
+        SysPost post = sysPostMapper.selectPostById((long) staffOnJob.getSysPostId());
+        staffOnJobDto.setPostName(post.getPostName());
+
+        // 鏌ヨ鍚堝悓淇℃伅
+        StaffContract contract = staffContractMapper.selectOne(Wrappers.<StaffContract>lambdaQuery()
+                .eq(StaffContract::getStaffOnJobId, staffOnJob.getId())
+                .orderByDesc(StaffContract::getId));
+        if (contract != null){
+            staffOnJobDto.setContractTerm(contract.getContractTerm());
+            staffOnJobDto.setContractStartTime(contract.getContractStartTime());
+            staffOnJobDto.setContractEndTime(contract.getContractEndTime());
+        }
+        return staffOnJobDto;
     }
 
     //鍦ㄨ亴鍛樺伐瀵煎嚭
     @Override
     public void staffOnJobExport(HttpServletResponse response, StaffOnJob staffOnJob) {
-        List<StaffOnJob> staffOnJobs = staffOnJobMapper.staffOnJobList(staffOnJob);
-        ExcelUtil<StaffOnJob> util = new ExcelUtil<StaffOnJob>(StaffOnJob.class);
+        List<StaffOnJobDto> staffOnJobs = staffOnJobMapper.staffOnJobList(staffOnJob);
+        ExcelUtil<StaffOnJobDto> util = new ExcelUtil<StaffOnJobDto>(StaffOnJobDto.class);
         util.exportExcel(response, staffOnJobs, "鍦ㄨ亴鍛樺伐鍙拌处瀵煎嚭");
     }
 
diff --git a/src/main/resources/mapper/staff/StaffContractMapper.xml b/src/main/resources/mapper/staff/StaffContractMapper.xml
new file mode 100644
index 0000000..ac2ad70
--- /dev/null
+++ b/src/main/resources/mapper/staff/StaffContractMapper.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.ruoyi.staff.mapper.StaffContractMapper">
+    <select id="staffContractListPage" resultType="com.ruoyi.staff.dto.StaffContractDto">
+        SELECT
+        sc.*
+        FROM staff_contract as sc
+        LEFT JOIN
+        staff_on_job soj ON soj.id = sc.staff_on_job_id
+        where 1=1
+        <if test="staffContract.staffOnJobId != null">
+            AND soj.id = #{staffContract.staffOnJobId}
+        </if>
+    </select>
+</mapper>
diff --git a/src/main/resources/mapper/staff/StaffOnJobMapper.xml b/src/main/resources/mapper/staff/StaffOnJobMapper.xml
index 71eb981..6e0a956 100644
--- a/src/main/resources/mapper/staff/StaffOnJobMapper.xml
+++ b/src/main/resources/mapper/staff/StaffOnJobMapper.xml
@@ -22,12 +22,15 @@
             AND  contract_expire_time &lt;= DATE_FORMAT(#{staffOnJob.entryDateEnd},'%Y-%m-%d')
         </if>
     </select>
-    <select id="staffOnJobList" resultType="com.ruoyi.staff.pojo.StaffOnJob">
+    <select id="staffOnJobList" resultType="com.ruoyi.staff.dto.StaffOnJobDto">
         SELECT
-        *
+        staff_on_job.*,
+        sp.post_name as postName
         FROM staff_on_job
+        LEFT JOIN
+        sys_post sp ON sp.post_id = staff_on_job.sys_post_id
         where 1=1
-        <if test="staffOnJob.staffState != null and staffOnJob.staffState != '' ">
+        <if test="staffOnJob.staffState != null">
             AND staff_state = #{staffOnJob.staffState}
         </if>
         <if test="staffOnJob.staffName != null and staffOnJob.staffName != '' ">

--
Gitblit v1.9.3