From 8ca3c6594a0f5bad30c13bc7c73ab613888f5688 Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期五, 06 三月 2026 15:01:56 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_New' into dev_New

---
 src/main/java/com/ruoyi/staff/dto/StaffOnJobDto.java                               |    3 
 src/main/resources/mapper/staff/StaffEmergencyContactMapper.xml                    |   19 +
 src/main/java/com/ruoyi/purchase/mapper/PurchaseReturnOrdersMapper.java            |   18 +
 src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java              |   91 +++++
 src/main/java/com/ruoyi/purchase/service/impl/PurchaseReturnOrdersServiceImpl.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 +
 pom.xml                                                                            |    7 
 src/main/resources/mapper/staff/StaffEducationMapper.xml                           |   21 +
 src/main/java/com/ruoyi/purchase/controller/PurchaseReturnOrdersController.java    |   18 +
 src/main/resources/mapper/purchase/PurchaseReturnOrdersMapper.xml                  |   22 +
 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/purchase/pojo/PurchaseReturnOrders.java                    |   71 ++++
 src/main/java/com/ruoyi/staff/service/StaffWorkExperienceService.java              |   16 +
 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/projectManagement/dto/RoleDto.java                         |   12 
 src/main/java/com/ruoyi/purchase/service/PurchaseReturnOrdersService.java          |   16 +
 src/main/java/com/ruoyi/projectManagement/service/impl/RolesServiceImpl.java       |   14 
 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/projectManagement/pojo/Roles.java                          |    4 
 src/main/java/com/ruoyi/staff/pojo/StaffOnJob.java                                 |   38 ++
 src/main/java/com/ruoyi/projectManagement/controller/RolesController.java          |   11 
 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 +++++
 doc/20260306_craete_purchase_return_orders.sql                                     |   33 ++
 src/main/java/com/ruoyi/staff/service/impl/StaffWorkExperienceServiceImpl.java     |   20 +
 33 files changed, 859 insertions(+), 19 deletions(-)

diff --git a/doc/20260306_craete_purchase_return_orders.sql b/doc/20260306_craete_purchase_return_orders.sql
new file mode 100644
index 0000000..6e31d78
--- /dev/null
+++ b/doc/20260306_craete_purchase_return_orders.sql
@@ -0,0 +1,33 @@
+#浜у搧閫�璐у崟琛�
+drop table if exists purchase_return_orders;
+create table purchase_return_orders
+(
+    id                 bigint auto_increment primary key,
+    no                 varchar(255) null comment '閫�璐у崟缂栧彿',
+    return_type        tinyint not null default 0 comment '閫�璐ф柟寮� 0閫�璐ч��娆� 1鎷掓敹',
+    supplier_id        bigint  not null default 0 comment '渚涘簲鍟唅d',
+    project_id         bigint  not null default 0 comment '椤圭洰id',
+    project_phase      tinyint not null default 0 comment '椤圭洰闃舵',
+    prepared_at        datetime null comment '鍒跺崟鏃ユ湡',
+    prepared_user_id   bigint  not null default 0 comment '鍒跺崟浜篿d',
+    return_user_id     bigint  not null default 0 comment '閫�鏂欎汉id',
+    purchase_ledger_id bigint  not null default 0 comment '閲囪喘璁㈠崟id',
+    remark             text null comment '澶囨敞',
+    create_time        datetime null comment '褰曞叆鏃堕棿',
+    update_time        datetime null comment '鏇存柊鏃堕棿',
+    index              idx_purchase_ledger_id (purchase_ledger_id),
+    index              idx_project_id (project_id)
+);
+
+#浜у搧閫�璐у崟涓庨噰璐骇鍝佸叧鑱旇〃
+drop table if exists purchase_return_order_products;
+create table purchase_return_order_products
+(
+    id                       bigint auto_increment primary key,
+    purchase_return_order_id bigint not null default 0 comment '閫�璐у崟id',
+    sales_ledger_product_id  bigint not null default 0 comment '閲囪喘浜у搧id',
+    create_time              datetime null comment '褰曞叆鏃堕棿',
+    update_time              datetime null comment '鏇存柊鏃堕棿',
+    index                    idx_purchase_return_order_id (purchase_return_order_id),
+    index                    idx_sales_ledger_product_id (sales_ledger_product_id)
+);
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 25bd9fe..1a23c26 100644
--- a/pom.xml
+++ b/pom.xml
@@ -315,6 +315,13 @@
             <scope>compile</scope>
         </dependency>
 
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-all</artifactId>
+            <version>5.8.43</version>
+        </dependency>
+
+
     </dependencies>
 
     <build>
diff --git a/src/main/java/com/ruoyi/projectManagement/controller/RolesController.java b/src/main/java/com/ruoyi/projectManagement/controller/RolesController.java
index dc4284a..d19b4fc 100644
--- a/src/main/java/com/ruoyi/projectManagement/controller/RolesController.java
+++ b/src/main/java/com/ruoyi/projectManagement/controller/RolesController.java
@@ -5,6 +5,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.utils.OrderUtils;
 import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.projectManagement.dto.RoleDto;
 import com.ruoyi.projectManagement.mapper.RolesMapper;
 import com.ruoyi.projectManagement.pojo.Roles;
 import com.ruoyi.projectManagement.service.RolesService;
@@ -17,7 +18,7 @@
 
 @RestController
 @AllArgsConstructor
-@RequestMapping("/roles")
+@RequestMapping("/projectManagement/roles")
 @Api(value = "Roles", tags = "")
 public class RolesController {
 
@@ -32,9 +33,11 @@
 
     @PostMapping("/add")
     @ApiOperation("鏂板")
-    public AjaxResult add(@RequestBody Roles role) {
-        role.setNo(OrderUtils.countTodayByCreateTime(rolesMapper, "XMJS"));
-        return AjaxResult.success(rolesservice.save(role));
+    public AjaxResult add(@RequestBody RoleDto roleDto) {
+        if (roleDto.getIsDefaultNo()) {
+            roleDto.setNo(OrderUtils.countTodayByCreateTime(rolesMapper, "XMJS"));
+        }
+        return AjaxResult.success(rolesservice.save(roleDto));
     }
 
     @PostMapping("/update")
diff --git a/src/main/java/com/ruoyi/projectManagement/dto/RoleDto.java b/src/main/java/com/ruoyi/projectManagement/dto/RoleDto.java
new file mode 100644
index 0000000..a93b483
--- /dev/null
+++ b/src/main/java/com/ruoyi/projectManagement/dto/RoleDto.java
@@ -0,0 +1,12 @@
+package com.ruoyi.projectManagement.dto;
+
+import com.ruoyi.projectManagement.pojo.Roles;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class RoleDto extends Roles {
+    // 鏄惁浣跨敤绯荤粺缂栧彿
+    @ApiModelProperty("鏄惁浣跨敤绯荤粺缂栧彿")
+    private Boolean isDefaultNo;
+}
diff --git a/src/main/java/com/ruoyi/projectManagement/pojo/Roles.java b/src/main/java/com/ruoyi/projectManagement/pojo/Roles.java
index 9cd9dfa..c284f13 100644
--- a/src/main/java/com/ruoyi/projectManagement/pojo/Roles.java
+++ b/src/main/java/com/ruoyi/projectManagement/pojo/Roles.java
@@ -38,10 +38,6 @@
     @ApiModelProperty(value="鐘舵��(1:鍚敤, 0:绂佺敤)")
     private Integer status;
 
-    @ApiModelProperty(value = "绉熸埛ID")
-    @TableField(fill = FieldFill.INSERT)
-    private Long tenantId;
-
     @ApiModelProperty(value = "鍒涘缓鏃堕棿")
     @TableField(fill = FieldFill.INSERT)
     private LocalDateTime createTime;
diff --git a/src/main/java/com/ruoyi/projectManagement/service/impl/RolesServiceImpl.java b/src/main/java/com/ruoyi/projectManagement/service/impl/RolesServiceImpl.java
index f58c4ed..405084a 100644
--- a/src/main/java/com/ruoyi/projectManagement/service/impl/RolesServiceImpl.java
+++ b/src/main/java/com/ruoyi/projectManagement/service/impl/RolesServiceImpl.java
@@ -1,24 +1,32 @@
 package com.ruoyi.projectManagement.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 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.projectManagement.mapper.RolesMapper;
 import com.ruoyi.projectManagement.pojo.Roles;
 import com.ruoyi.projectManagement.service.RolesService;
+import lombok.AllArgsConstructor;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+@AllArgsConstructor
 @Service
-@RequiredArgsConstructor
-@Transactional(rollbackFor = Exception.class)
 public class RolesServiceImpl extends ServiceImpl<RolesMapper, Roles> implements RolesService {
 
     private final RolesMapper rolesmapper;
 
     @Override
     public IPage<Roles> listPage(Page<Roles> page, Roles roles) {
-        return rolesmapper.selectPage(page, null);
+        LambdaQueryWrapper<Roles> queryWrapper = new LambdaQueryWrapper<>();
+        if (roles.getName() != null) {
+            queryWrapper.like(Roles::getName, roles.getName());
+        }
+        if (roles.getStatus() != null) {
+            queryWrapper.eq(Roles::getStatus, roles.getStatus());
+        }
+        return rolesmapper.selectPage(page, queryWrapper);
     }
 }
diff --git a/src/main/java/com/ruoyi/purchase/controller/PurchaseReturnOrdersController.java b/src/main/java/com/ruoyi/purchase/controller/PurchaseReturnOrdersController.java
new file mode 100644
index 0000000..42363af
--- /dev/null
+++ b/src/main/java/com/ruoyi/purchase/controller/PurchaseReturnOrdersController.java
@@ -0,0 +1,18 @@
+package com.ruoyi.purchase.controller;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-03-06 11:44:38
+ */
+@RestController
+@RequestMapping("/purchaseReturnOrders")
+public class PurchaseReturnOrdersController {
+
+}
diff --git a/src/main/java/com/ruoyi/purchase/mapper/PurchaseReturnOrdersMapper.java b/src/main/java/com/ruoyi/purchase/mapper/PurchaseReturnOrdersMapper.java
new file mode 100644
index 0000000..d2c1747
--- /dev/null
+++ b/src/main/java/com/ruoyi/purchase/mapper/PurchaseReturnOrdersMapper.java
@@ -0,0 +1,18 @@
+package com.ruoyi.purchase.mapper;
+
+import com.ruoyi.purchase.pojo.PurchaseReturnOrders;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-03-06 11:44:38
+ */
+@Mapper
+public interface PurchaseReturnOrdersMapper extends BaseMapper<PurchaseReturnOrders> {
+
+}
diff --git a/src/main/java/com/ruoyi/purchase/pojo/PurchaseReturnOrders.java b/src/main/java/com/ruoyi/purchase/pojo/PurchaseReturnOrders.java
new file mode 100644
index 0000000..c2004c3
--- /dev/null
+++ b/src/main/java/com/ruoyi/purchase/pojo/PurchaseReturnOrders.java
@@ -0,0 +1,71 @@
+package com.ruoyi.purchase.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-06 11:44:38
+ */
+@Getter
+@Setter
+@TableName("purchase_return_orders")
+@ApiModel(value = "PurchaseReturnOrders瀵硅薄", description = "閲囪喘閫�璐у崟")
+public class PurchaseReturnOrders implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    @ApiModelProperty("閫�璐у崟缂栧彿")
+    private String no;
+
+    @ApiModelProperty("閫�璐ф柟寮� 0閫�璐ч��娆� 1鎷掓敹")
+    private Integer returnType;
+
+    @ApiModelProperty("渚涘簲鍟唅d")
+    private Long supplierId;
+
+    @ApiModelProperty("椤圭洰id")
+    private Long projectId;
+
+    @ApiModelProperty("椤圭洰闃舵")
+    private Integer projectPhase;
+
+    @ApiModelProperty("鍒跺崟鏃ユ湡")
+    private LocalDateTime preparedAt;
+
+    @ApiModelProperty("鍒跺崟浜篿d")
+    private Long preparedUserId;
+
+    @ApiModelProperty("閫�鏂欎汉id")
+    private Long returnUserId;
+
+    @ApiModelProperty("閲囪喘璁㈠崟id")
+    private Long purchaseLedgerId;
+
+    @ApiModelProperty("澶囨敞")
+    private String remark;
+
+    @ApiModelProperty("褰曞叆鏃堕棿")
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("鏇存柊鏃堕棿")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+}
diff --git a/src/main/java/com/ruoyi/purchase/service/PurchaseReturnOrdersService.java b/src/main/java/com/ruoyi/purchase/service/PurchaseReturnOrdersService.java
new file mode 100644
index 0000000..6f165e1
--- /dev/null
+++ b/src/main/java/com/ruoyi/purchase/service/PurchaseReturnOrdersService.java
@@ -0,0 +1,16 @@
+package com.ruoyi.purchase.service;
+
+import com.ruoyi.purchase.pojo.PurchaseReturnOrders;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-03-06 11:44:38
+ */
+public interface PurchaseReturnOrdersService extends IService<PurchaseReturnOrders> {
+
+}
diff --git a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseReturnOrdersServiceImpl.java b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseReturnOrdersServiceImpl.java
new file mode 100644
index 0000000..f052d45
--- /dev/null
+++ b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseReturnOrdersServiceImpl.java
@@ -0,0 +1,20 @@
+package com.ruoyi.purchase.service.impl;
+
+import com.ruoyi.purchase.pojo.PurchaseReturnOrders;
+import com.ruoyi.purchase.mapper.PurchaseReturnOrdersMapper;
+import com.ruoyi.purchase.service.PurchaseReturnOrdersService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-03-06 11:44:38
+ */
+@Service
+public class PurchaseReturnOrdersServiceImpl extends ServiceImpl<PurchaseReturnOrdersMapper, PurchaseReturnOrders> implements PurchaseReturnOrdersService {
+
+}
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/purchase/PurchaseReturnOrdersMapper.xml b/src/main/resources/mapper/purchase/PurchaseReturnOrdersMapper.xml
new file mode 100644
index 0000000..8d23060
--- /dev/null
+++ b/src/main/resources/mapper/purchase/PurchaseReturnOrdersMapper.xml
@@ -0,0 +1,22 @@
+<?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.purchase.mapper.PurchaseReturnOrdersMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.ruoyi.purchase.pojo.PurchaseReturnOrders">
+        <id column="id" property="id" />
+        <result column="no" property="no" />
+        <result column="return_type" property="returnType" />
+        <result column="supplier_id" property="supplierId" />
+        <result column="project_id" property="projectId" />
+        <result column="project_phase" property="projectPhase" />
+        <result column="prepared_at" property="preparedAt" />
+        <result column="prepared_user_id" property="preparedUserId" />
+        <result column="return_user_id" property="returnUserId" />
+        <result column="purchase_ledger_id" property="purchaseLedgerId" />
+        <result column="remark" property="remark" />
+        <result column="create_time" property="createTime" />
+        <result column="update_time" property="updateTime" />
+    </resultMap>
+
+</mapper>
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