From 9af5090f5d4597fbcfdf53a71189175892d29109 Mon Sep 17 00:00:00 2001
From: maven <2163098428@qq.com>
Date: 星期四, 05 三月 2026 17:44:35 +0800
Subject: [PATCH] yys 人力资源-员工台账模块优化

---
 src/main/java/com/ruoyi/staff/dto/StaffOnJobDto.java                             |    3 
 src/main/java/com/ruoyi/staff/service/StaffWorkExperienceService.java            |   16 +
 src/main/resources/mapper/staff/StaffEmergencyContactMapper.xml                  |   19 +
 src/main/java/com/ruoyi/staff/service/StaffEducationService.java                 |   16 +
 src/main/java/com/ruoyi/staff/service/StaffEmergencyContactService.java          |   16 +
 src/main/java/com/ruoyi/staff/controller/StaffEducationController.java           |   18 +
 src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java            |   91 +++++++
 src/main/java/com/ruoyi/staff/controller/StaffWorkExperienceController.java      |   18 +
 src/main/java/com/ruoyi/staff/service/impl/StaffEducationServiceImpl.java        |   20 +
 src/main/java/com/ruoyi/staff/pojo/StaffEmergencyContact.java                    |   65 +++++
 src/main/java/com/ruoyi/staff/pojo/StaffWorkExperience.java                      |   79 +++++++
 src/main/resources/mapper/staff/StaffWorkExperienceMapper.xml                    |   21 +
 src/main/resources/mapper/staff/StaffEducationMapper.xml                         |   21 +
 src/main/java/com/ruoyi/staff/mapper/StaffEducationMapper.java                   |   18 +
 src/main/java/com/ruoyi/staff/mapper/StaffEmergencyContactMapper.java            |   18 +
 src/main/java/com/ruoyi/staff/pojo/StaffOnJob.java                               |   38 +++
 src/main/java/com/ruoyi/staff/controller/StaffEmergencyContactController.java    |   18 +
 src/main/java/com/ruoyi/staff/service/impl/StaffEmergencyContactServiceImpl.java |   20 +
 src/main/java/com/ruoyi/staff/mapper/StaffWorkExperienceMapper.java              |   18 +
 src/main/java/com/ruoyi/staff/pojo/StaffEducation.java                           |   79 +++++++
 src/main/java/com/ruoyi/staff/service/impl/StaffWorkExperienceServiceImpl.java   |   20 +
 21 files changed, 624 insertions(+), 8 deletions(-)

diff --git a/src/main/java/com/ruoyi/staff/controller/StaffEducationController.java b/src/main/java/com/ruoyi/staff/controller/StaffEducationController.java
new file mode 100644
index 0000000..21c4972
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/controller/StaffEducationController.java
@@ -0,0 +1,18 @@
+package com.ruoyi.staff.controller;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 鍛樺伐鏁欒偛缁忓巻琛� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-03-05 04:33:08
+ */
+@RestController
+@RequestMapping("/staffEducation")
+public class StaffEducationController {
+
+}
diff --git a/src/main/java/com/ruoyi/staff/controller/StaffEmergencyContactController.java b/src/main/java/com/ruoyi/staff/controller/StaffEmergencyContactController.java
new file mode 100644
index 0000000..45abcdc
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/controller/StaffEmergencyContactController.java
@@ -0,0 +1,18 @@
+package com.ruoyi.staff.controller;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 鍛樺伐绱ф�ヨ仈绯讳汉琛� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-03-05 04:34:17
+ */
+@RestController
+@RequestMapping("/staffEmergencyContact")
+public class StaffEmergencyContactController {
+
+}
diff --git a/src/main/java/com/ruoyi/staff/controller/StaffWorkExperienceController.java b/src/main/java/com/ruoyi/staff/controller/StaffWorkExperienceController.java
new file mode 100644
index 0000000..60a71ba
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/controller/StaffWorkExperienceController.java
@@ -0,0 +1,18 @@
+package com.ruoyi.staff.controller;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 鍛樺伐宸ヤ綔缁忓巻琛� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-03-05 04:33:36
+ */
+@RestController
+@RequestMapping("/staffWorkExperience")
+public class StaffWorkExperienceController {
+
+}
diff --git a/src/main/java/com/ruoyi/staff/dto/StaffOnJobDto.java b/src/main/java/com/ruoyi/staff/dto/StaffOnJobDto.java
index 7afd407..0a2c0ae 100644
--- a/src/main/java/com/ruoyi/staff/dto/StaffOnJobDto.java
+++ b/src/main/java/com/ruoyi/staff/dto/StaffOnJobDto.java
@@ -4,6 +4,7 @@
 import com.ruoyi.framework.aspectj.lang.annotation.Excel;
 import com.ruoyi.staff.pojo.StaffOnJob;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.util.Date;
 
@@ -18,8 +19,10 @@
     private String contractTerm;
 
     @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
     private Date contractStartTime;
 
     @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
     private Date contractEndTime;
 }
diff --git a/src/main/java/com/ruoyi/staff/mapper/StaffEducationMapper.java b/src/main/java/com/ruoyi/staff/mapper/StaffEducationMapper.java
new file mode 100644
index 0000000..0ebce7e
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/mapper/StaffEducationMapper.java
@@ -0,0 +1,18 @@
+package com.ruoyi.staff.mapper;
+
+import com.ruoyi.staff.pojo.StaffEducation;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 鍛樺伐鏁欒偛缁忓巻琛� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-03-05 04:33:08
+ */
+@Mapper
+public interface StaffEducationMapper extends BaseMapper<StaffEducation> {
+
+}
diff --git a/src/main/java/com/ruoyi/staff/mapper/StaffEmergencyContactMapper.java b/src/main/java/com/ruoyi/staff/mapper/StaffEmergencyContactMapper.java
new file mode 100644
index 0000000..6ef19ed
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/mapper/StaffEmergencyContactMapper.java
@@ -0,0 +1,18 @@
+package com.ruoyi.staff.mapper;
+
+import com.ruoyi.staff.pojo.StaffEmergencyContact;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 鍛樺伐绱ф�ヨ仈绯讳汉琛� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-03-05 04:34:17
+ */
+@Mapper
+public interface StaffEmergencyContactMapper extends BaseMapper<StaffEmergencyContact> {
+
+}
diff --git a/src/main/java/com/ruoyi/staff/mapper/StaffWorkExperienceMapper.java b/src/main/java/com/ruoyi/staff/mapper/StaffWorkExperienceMapper.java
new file mode 100644
index 0000000..9077d40
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/mapper/StaffWorkExperienceMapper.java
@@ -0,0 +1,18 @@
+package com.ruoyi.staff.mapper;
+
+import com.ruoyi.staff.pojo.StaffWorkExperience;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 鍛樺伐宸ヤ綔缁忓巻琛� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-03-05 04:33:36
+ */
+@Mapper
+public interface StaffWorkExperienceMapper extends BaseMapper<StaffWorkExperience> {
+
+}
diff --git a/src/main/java/com/ruoyi/staff/pojo/StaffEducation.java b/src/main/java/com/ruoyi/staff/pojo/StaffEducation.java
new file mode 100644
index 0000000..8f7a35e
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/pojo/StaffEducation.java
@@ -0,0 +1,79 @@
+package com.ruoyi.staff.pojo;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ * <p>
+ * 鍛樺伐鏁欒偛缁忓巻琛�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-03-05 04:33:08
+ */
+@Getter
+@Setter
+@TableName("staff_education")
+@ApiModel(value = "StaffEducation瀵硅薄", description = "鍛樺伐鏁欒偛缁忓巻琛�")
+public class StaffEducation implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("涓婚敭ID")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    @ApiModelProperty("鍏宠仈staff_on_job琛ㄤ富閿甀D")
+    private Long staffOnJobId;
+
+    @ApiModelProperty("瀛﹀巻")
+    private String education;
+
+    @ApiModelProperty("姣曚笟闄㈡牎")
+    private String schoolName;
+
+    @ApiModelProperty("鍏ュ鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private LocalDate enrollTime;
+
+    @ApiModelProperty("姣曚笟鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private LocalDate graduateTime;
+
+    @ApiModelProperty("涓撲笟")
+    private String major;
+
+    @ApiModelProperty("瀛︿綅")
+    private String degree;
+
+    @ApiModelProperty("鍒涘缓鏃堕棿")
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("鍒涘缓鐢ㄦ埛")
+    @TableField(fill = FieldFill.INSERT)
+    private Long createUser;
+
+    @ApiModelProperty("淇敼鏃堕棿")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty("淇敼鐢ㄦ埛")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Long updateUser;
+}
diff --git a/src/main/java/com/ruoyi/staff/pojo/StaffEmergencyContact.java b/src/main/java/com/ruoyi/staff/pojo/StaffEmergencyContact.java
new file mode 100644
index 0000000..1fdeefa
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/pojo/StaffEmergencyContact.java
@@ -0,0 +1,65 @@
+package com.ruoyi.staff.pojo;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 鍛樺伐绱ф�ヨ仈绯讳汉琛�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-03-05 04:34:17
+ */
+@Getter
+@Setter
+@TableName("staff_emergency_contact")
+@ApiModel(value = "StaffEmergencyContact瀵硅薄", description = "鍛樺伐绱ф�ヨ仈绯讳汉琛�")
+public class StaffEmergencyContact implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("涓婚敭ID")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    @ApiModelProperty("鍏宠仈staff_on_job琛ㄤ富閿甀D")
+    private Long staffOnJobId;
+
+    @ApiModelProperty("绱ф�ヨ仈绯讳汉濮撳悕")
+    private String contactName;
+
+    @ApiModelProperty("绱ф�ヨ仈绯讳汉鍏崇郴")
+    private String contactRelation;
+
+    @ApiModelProperty("绱ф�ヨ仈绯讳汉鎵嬫満")
+    private String contactPhone;
+
+    @ApiModelProperty("绱ф�ヨ仈绯讳汉浣忓潃")
+    private String contactAddress;
+
+    @ApiModelProperty("鍒涘缓鏃堕棿")
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("鍒涘缓鐢ㄦ埛")
+    @TableField(fill = FieldFill.INSERT)
+    private Long createUser;
+
+    @ApiModelProperty("淇敼鏃堕棿")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty("淇敼鐢ㄦ埛")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Long updateUser;
+}
diff --git a/src/main/java/com/ruoyi/staff/pojo/StaffOnJob.java b/src/main/java/com/ruoyi/staff/pojo/StaffOnJob.java
index 3ca6fcb..cca0284 100644
--- a/src/main/java/com/ruoyi/staff/pojo/StaffOnJob.java
+++ b/src/main/java/com/ruoyi/staff/pojo/StaffOnJob.java
@@ -12,6 +12,7 @@
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.Date;
+import java.util.List;
 
 /**
  * 浜哄憳绠$悊--鍛樺伐鍙拌处/鍚堝悓绠$悊
@@ -208,5 +209,42 @@
     @TableField(fill = FieldFill.INSERT)
     private Long tenantId;
 
+    @ApiModelProperty(value = "鍒悕")
+    private String alias;
+
+    @ApiModelProperty(value = "鍑虹敓鏃ユ湡")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private Date birthDate;
+
+    @ApiModelProperty(value = "姘戞棌")
+    private String nation;
+
+    @ApiModelProperty(value = "濠氬Щ鐘跺喌")
+    private String maritalStatus;
+
+    @ApiModelProperty(value = "璇曠敤鏈燂紙鏈堬級")
+    private Integer proTerm;
+
+    @ApiModelProperty(value = "杞鏃ユ湡")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private Date positiveDate;
+
+    @ApiModelProperty(value = "鍩烘湰宸ヨ祫")
+    private BigDecimal basicSalary;
+
+    @ApiModelProperty(value = "鍛樺伐鏁欒偛缁忓巻闆嗗悎")
+    @TableField(exist = false)
+    private List<StaffEducation> staffEducationList;
+
+    @ApiModelProperty(value = "鍛樺伐宸ヤ綔缁忓巻闆嗗悎")
+    @TableField(exist = false)
+    private List<StaffWorkExperience> staffWorkExperienceList;
+
+    @ApiModelProperty(value = "鍛樺伐绱ф�ヨ仈绯讳汉闆嗗悎")
+    @TableField(exist = false)
+    private List<StaffEmergencyContact> staffEmergencyContactList;
+
 
 }
diff --git a/src/main/java/com/ruoyi/staff/pojo/StaffWorkExperience.java b/src/main/java/com/ruoyi/staff/pojo/StaffWorkExperience.java
new file mode 100644
index 0000000..6d59f83
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/pojo/StaffWorkExperience.java
@@ -0,0 +1,79 @@
+package com.ruoyi.staff.pojo;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ * <p>
+ * 鍛樺伐宸ヤ綔缁忓巻琛�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-03-05 04:33:36
+ */
+@Getter
+@Setter
+@TableName("staff_work_experience")
+@ApiModel(value = "StaffWorkExperience瀵硅薄", description = "鍛樺伐宸ヤ綔缁忓巻琛�")
+public class StaffWorkExperience implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("涓婚敭ID")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    @ApiModelProperty("鍏宠仈staff_on_job琛ㄤ富閿甀D")
+    private Long staffOnJobId;
+
+    @ApiModelProperty("鍓嶅叕鍙�")
+    private String formerCompany;
+
+    @ApiModelProperty("鍓嶅叕鍙搁儴闂�")
+    private String formerDept;
+
+    @ApiModelProperty("鍓嶅叕鍙歌亴浣�")
+    private String formerPosition;
+
+    @ApiModelProperty("寮�濮嬫棩鏈�")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private LocalDate startDate;
+
+    @ApiModelProperty("缁撴潫鏃ユ湡")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private LocalDate endDate;
+
+    @ApiModelProperty("宸ヤ綔鎻忚堪")
+    private String workDesc;
+
+    @ApiModelProperty("鍒涘缓鏃堕棿")
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("鍒涘缓鐢ㄦ埛")
+    @TableField(fill = FieldFill.INSERT)
+    private Long createUser;
+
+    @ApiModelProperty("淇敼鏃堕棿")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty("淇敼鐢ㄦ埛")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Long updateUser;
+}
diff --git a/src/main/java/com/ruoyi/staff/service/StaffEducationService.java b/src/main/java/com/ruoyi/staff/service/StaffEducationService.java
new file mode 100644
index 0000000..ccafc8b
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/service/StaffEducationService.java
@@ -0,0 +1,16 @@
+package com.ruoyi.staff.service;
+
+import com.ruoyi.staff.pojo.StaffEducation;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 鍛樺伐鏁欒偛缁忓巻琛� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-03-05 04:33:08
+ */
+public interface StaffEducationService extends IService<StaffEducation> {
+
+}
diff --git a/src/main/java/com/ruoyi/staff/service/StaffEmergencyContactService.java b/src/main/java/com/ruoyi/staff/service/StaffEmergencyContactService.java
new file mode 100644
index 0000000..65081f4
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/service/StaffEmergencyContactService.java
@@ -0,0 +1,16 @@
+package com.ruoyi.staff.service;
+
+import com.ruoyi.staff.pojo.StaffEmergencyContact;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 鍛樺伐绱ф�ヨ仈绯讳汉琛� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-03-05 04:34:17
+ */
+public interface StaffEmergencyContactService extends IService<StaffEmergencyContact> {
+
+}
diff --git a/src/main/java/com/ruoyi/staff/service/StaffWorkExperienceService.java b/src/main/java/com/ruoyi/staff/service/StaffWorkExperienceService.java
new file mode 100644
index 0000000..a16d84d
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/service/StaffWorkExperienceService.java
@@ -0,0 +1,16 @@
+package com.ruoyi.staff.service;
+
+import com.ruoyi.staff.pojo.StaffWorkExperience;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 鍛樺伐宸ヤ綔缁忓巻琛� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-03-05 04:33:36
+ */
+public interface StaffWorkExperienceService extends IService<StaffWorkExperience> {
+
+}
diff --git a/src/main/java/com/ruoyi/staff/service/impl/StaffEducationServiceImpl.java b/src/main/java/com/ruoyi/staff/service/impl/StaffEducationServiceImpl.java
new file mode 100644
index 0000000..81acfb9
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/service/impl/StaffEducationServiceImpl.java
@@ -0,0 +1,20 @@
+package com.ruoyi.staff.service.impl;
+
+import com.ruoyi.staff.pojo.StaffEducation;
+import com.ruoyi.staff.mapper.StaffEducationMapper;
+import com.ruoyi.staff.service.StaffEducationService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 鍛樺伐鏁欒偛缁忓巻琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-03-05 04:33:08
+ */
+@Service
+public class StaffEducationServiceImpl extends ServiceImpl<StaffEducationMapper, StaffEducation> implements StaffEducationService {
+
+}
diff --git a/src/main/java/com/ruoyi/staff/service/impl/StaffEmergencyContactServiceImpl.java b/src/main/java/com/ruoyi/staff/service/impl/StaffEmergencyContactServiceImpl.java
new file mode 100644
index 0000000..7a90966
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/service/impl/StaffEmergencyContactServiceImpl.java
@@ -0,0 +1,20 @@
+package com.ruoyi.staff.service.impl;
+
+import com.ruoyi.staff.pojo.StaffEmergencyContact;
+import com.ruoyi.staff.mapper.StaffEmergencyContactMapper;
+import com.ruoyi.staff.service.StaffEmergencyContactService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 鍛樺伐绱ф�ヨ仈绯讳汉琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-03-05 04:34:17
+ */
+@Service
+public class StaffEmergencyContactServiceImpl extends ServiceImpl<StaffEmergencyContactMapper, StaffEmergencyContact> implements StaffEmergencyContactService {
+
+}
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 02253f5..8336f90 100644
--- a/src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java
+++ b/src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java
@@ -16,12 +16,8 @@
 import com.ruoyi.project.system.mapper.SysUserMapper;
 import com.ruoyi.project.system.service.impl.SysUserServiceImpl;
 import com.ruoyi.staff.dto.StaffOnJobDto;
-import com.ruoyi.staff.mapper.StaffContractMapper;
-import com.ruoyi.staff.mapper.StaffLeaveMapper;
-import com.ruoyi.staff.mapper.StaffOnJobMapper;
-import com.ruoyi.staff.pojo.StaffContract;
-import com.ruoyi.staff.pojo.StaffLeave;
-import com.ruoyi.staff.pojo.StaffOnJob;
+import com.ruoyi.staff.mapper.*;
+import com.ruoyi.staff.pojo.*;
 import com.ruoyi.staff.service.IStaffOnJobService;
 import freemarker.template.Configuration;
 import freemarker.template.Template;
@@ -64,6 +60,24 @@
     @Autowired
     private SysUserMapper sysUserMapper;
 
+    @Autowired
+    private StaffEducationServiceImpl staffEducationService;
+
+    @Autowired
+    private StaffEducationMapper staffEducationMapper;
+
+    @Autowired
+    private StaffWorkExperienceMapper staffWorkExperienceMapper;
+
+    @Autowired
+    private StaffWorkExperienceServiceImpl staffWorkExperienceServiceImpl;
+
+    @Autowired
+    private StaffEmergencyContactMapper staffEmergencyContactMapper;
+
+    @Autowired
+    private StaffEmergencyContactServiceImpl staffEmergencyContactServiceImpl;
+
 
     //鍦ㄨ亴鍛樺伐鍙拌处鍒嗛〉鏌ヨ
     @Override
@@ -94,13 +108,17 @@
             sysUser1.setNickName(staffOnJobPrams.getStaffName());
             String s = SecurityUtils.encryptPassword("123456");
             sysUser1.setPassword(s);
-            Long[] posts = new Long[]{staffOnJobPrams.getSysPostId().longValue()};
-            sysUser1.setPostIds(posts);
+            if(staffOnJobPrams.getSysPostId() != null){
+                Long[] posts = new Long[]{staffOnJobPrams.getSysPostId().longValue()};
+                sysUser1.setPostIds(posts);
+            }
             sysUser1.setRoleIds(new Long[]{staffOnJobPrams.getRoleId()});
             sysUser1.setDeptIds(new  Long[]{staffOnJobPrams.getSysDeptId()});
             sysUser1.setStatus("0");
             sysUserService.insertUser(sysUser1);
         }
+        // 缁戝畾瀛愯〃鏁版嵁
+        bingingStaffOnJobExtra(staffOnJobPrams.getId(),staffOnJobPrams);
         // 鍒涘缓鍚堝悓璁板綍
         StaffContract staffContract = new StaffContract();
         staffContract.setStaffOnJobId(staffOnJobPrams.getId());
@@ -132,9 +150,57 @@
             staffContractMapper.updateById(contract);
         }
 
+        // 鍒犻櫎鎵�鏈夊瓙琛ㄦ暟鎹�
+        delStaffOnJobExtra(Arrays.asList(id));
+        // 缁戝畾瀛愯〃鏁版嵁
+        bingingStaffOnJobExtra(id,staffOnJobParams);
         // 鏇存柊鍛樺伐鏁版嵁
         staffOnJobParams.setContractExpireTime(staffOnJobParams.getContractEndTime());
         return staffOnJobMapper.updateById(staffOnJobParams);
+    }
+
+    /**
+     * 缁戝畾鍛樺伐瀛愯〃鏁版嵁
+     * @param staffOnJobPrams
+     * @param id
+     */
+    public void bingingStaffOnJobExtra(Long id,StaffOnJob staffOnJobPrams) {
+        // 鏂板鏁欒偛缁忓巻
+        if(CollectionUtils.isNotEmpty(staffOnJobPrams.getStaffEducationList())){
+            staffOnJobPrams.getStaffEducationList().stream()
+                    .filter(Objects::nonNull) // 杩囨护null瀵硅薄锛岄伩鍏嶇┖鎸囬拡
+                    .forEach(staff -> staff.setStaffOnJobId(id)); // 璧嬪��
+            staffEducationService.saveBatch(staffOnJobPrams.getStaffEducationList());
+        }
+        // 鏂板宸ヤ綔缁忓巻
+        if(CollectionUtils.isNotEmpty(staffOnJobPrams.getStaffWorkExperienceList())){
+            staffOnJobPrams.getStaffWorkExperienceList().stream()
+                    .filter(Objects::nonNull) // 杩囨护null瀵硅薄锛岄伩鍏嶇┖鎸囬拡
+                    .forEach(staff -> staff.setStaffOnJobId(id)); // 璧嬪��
+            staffWorkExperienceServiceImpl.saveBatch(staffOnJobPrams.getStaffWorkExperienceList());
+        }
+        // 鏂板绱ф�ヨ仈绯讳汉
+        if(CollectionUtils.isNotEmpty(staffOnJobPrams.getStaffEmergencyContactList())){
+            staffOnJobPrams.getStaffEmergencyContactList().stream()
+                    .filter(Objects::nonNull) // 杩囨护null瀵硅薄锛岄伩鍏嶇┖鎸囬拡
+                    .forEach(staff -> staff.setStaffOnJobId(id)); // 璧嬪��
+            staffEmergencyContactServiceImpl.saveBatch(staffOnJobPrams.getStaffEmergencyContactList());
+        }
+    }
+
+
+    /**
+     * 閫氳繃鍛樺伐id鍒犻櫎鏁欒偛缁忓巻锛屽伐浣滅粡鍘嗭紝绱ф�ヨ仈绯讳汉
+     * @param ids
+     * @return
+     */
+    public void delStaffOnJobExtra(List<Long> ids) {
+        // 鍒犻櫎鏁欒偛缁忓巻
+        staffEducationService.remove(Wrappers.<StaffEducation>lambdaQuery().in(StaffEducation::getStaffOnJobId,ids));
+        // 鍒犻櫎宸ヤ綔缁忓巻
+        staffWorkExperienceServiceImpl.remove(Wrappers.<StaffWorkExperience>lambdaQuery().in(StaffWorkExperience::getStaffOnJobId,ids));
+        // 鍒犻櫎绱ф�ヨ仈绯讳汉
+        staffEmergencyContactServiceImpl.remove(Wrappers.<StaffEmergencyContact>lambdaQuery().in(StaffEmergencyContact::getStaffOnJobId,ids));
     }
 
     //鍒犻櫎鍏ヨ亴
@@ -156,6 +222,8 @@
             Long[] longs = sysUsers.stream().map(SysUser::getUserId).toArray(Long[]::new);
             sysUserService.deleteUserByIds(longs);
         }
+        // 鍒犻櫎瀛愯〃鏁版嵁
+        delStaffOnJobExtra(ids.stream().map(Integer::longValue).collect(Collectors.toList()));
 
         // 鍒犻櫎鍚堝悓鏁版嵁
         return staffContractMapper.delete(Wrappers.<StaffContract>lambdaQuery().in(StaffContract::getStaffOnJobId, ids));
@@ -213,6 +281,13 @@
             staffOnJobDto.setContractStartTime(contract.getContractStartTime());
             staffOnJobDto.setContractEndTime(contract.getContractEndTime());
         }
+        // 鑾峰彇瀛愯〃鏁版嵁
+        staffOnJobDto.setStaffEducationList(staffEducationMapper.selectList(Wrappers.<StaffEducation>lambdaQuery()
+                .eq(StaffEducation::getStaffOnJobId, staffOnJob.getId())));
+        staffOnJobDto.setStaffWorkExperienceList(staffWorkExperienceMapper.selectList(Wrappers.<StaffWorkExperience>lambdaQuery()
+                .eq(StaffWorkExperience::getStaffOnJobId, staffOnJob.getId())));
+        staffOnJobDto.setStaffEmergencyContactList(staffEmergencyContactMapper.selectList(Wrappers.<StaffEmergencyContact>lambdaQuery()
+                .eq(StaffEmergencyContact::getStaffOnJobId, staffOnJob.getId())));
         return staffOnJobDto;
     }
 
diff --git a/src/main/java/com/ruoyi/staff/service/impl/StaffWorkExperienceServiceImpl.java b/src/main/java/com/ruoyi/staff/service/impl/StaffWorkExperienceServiceImpl.java
new file mode 100644
index 0000000..7d04d43
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/service/impl/StaffWorkExperienceServiceImpl.java
@@ -0,0 +1,20 @@
+package com.ruoyi.staff.service.impl;
+
+import com.ruoyi.staff.pojo.StaffWorkExperience;
+import com.ruoyi.staff.mapper.StaffWorkExperienceMapper;
+import com.ruoyi.staff.service.StaffWorkExperienceService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 鍛樺伐宸ヤ綔缁忓巻琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-03-05 04:33:36
+ */
+@Service
+public class StaffWorkExperienceServiceImpl extends ServiceImpl<StaffWorkExperienceMapper, StaffWorkExperience> implements StaffWorkExperienceService {
+
+}
diff --git a/src/main/resources/mapper/staff/StaffEducationMapper.xml b/src/main/resources/mapper/staff/StaffEducationMapper.xml
new file mode 100644
index 0000000..ddcba2d
--- /dev/null
+++ b/src/main/resources/mapper/staff/StaffEducationMapper.xml
@@ -0,0 +1,21 @@
+<?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.StaffEducationMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.ruoyi.staff.pojo.StaffEducation">
+        <id column="id" property="id" />
+        <result column="staff_on_job_id" property="staffOnJobId" />
+        <result column="education" property="education" />
+        <result column="school_name" property="schoolName" />
+        <result column="enroll_time" property="enrollTime" />
+        <result column="graduate_time" property="graduateTime" />
+        <result column="major" property="major" />
+        <result column="degree" property="degree" />
+        <result column="create_time" property="createTime" />
+        <result column="create_user" property="createUser" />
+        <result column="update_time" property="updateTime" />
+        <result column="update_user" property="updateUser" />
+    </resultMap>
+
+</mapper>
diff --git a/src/main/resources/mapper/staff/StaffEmergencyContactMapper.xml b/src/main/resources/mapper/staff/StaffEmergencyContactMapper.xml
new file mode 100644
index 0000000..b5cc93f
--- /dev/null
+++ b/src/main/resources/mapper/staff/StaffEmergencyContactMapper.xml
@@ -0,0 +1,19 @@
+<?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.StaffEmergencyContactMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.ruoyi.staff.pojo.StaffEmergencyContact">
+        <id column="id" property="id" />
+        <result column="staff_on_job_id" property="staffOnJobId" />
+        <result column="contact_name" property="contactName" />
+        <result column="contact_relation" property="contactRelation" />
+        <result column="contact_phone" property="contactPhone" />
+        <result column="contact_address" property="contactAddress" />
+        <result column="create_time" property="createTime" />
+        <result column="create_user" property="createUser" />
+        <result column="update_time" property="updateTime" />
+        <result column="update_user" property="updateUser" />
+    </resultMap>
+
+</mapper>
diff --git a/src/main/resources/mapper/staff/StaffWorkExperienceMapper.xml b/src/main/resources/mapper/staff/StaffWorkExperienceMapper.xml
new file mode 100644
index 0000000..1c4b9e5
--- /dev/null
+++ b/src/main/resources/mapper/staff/StaffWorkExperienceMapper.xml
@@ -0,0 +1,21 @@
+<?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.StaffWorkExperienceMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.ruoyi.staff.pojo.StaffWorkExperience">
+        <id column="id" property="id" />
+        <result column="staff_on_job_id" property="staffOnJobId" />
+        <result column="former_company" property="formerCompany" />
+        <result column="former_dept" property="formerDept" />
+        <result column="former_position" property="formerPosition" />
+        <result column="start_date" property="startDate" />
+        <result column="end_date" property="endDate" />
+        <result column="work_desc" property="workDesc" />
+        <result column="create_time" property="createTime" />
+        <result column="create_user" property="createUser" />
+        <result column="update_time" property="updateTime" />
+        <result column="update_user" property="updateUser" />
+    </resultMap>
+
+</mapper>

--
Gitblit v1.9.3