zhaopeiqing 7 місяців тому
батько
коміт
2791243fa8
50 змінених файлів з 2827 додано та 141 видалено
  1. 4 0
      yudao-module-personnel/yudao-module-relations-api/src/main/java/cn/iocoder/yudao/module/relations/enums/ErrorCodeConstants.java
  2. 1 1
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/api/contractinfo/RelationsApiImpl.java
  3. 20 20
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/contractinfo/RelationsContractInfoController.java
  4. 6 3
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/contractinfo/vo/RelationsContractInfoPageReqVO.java
  5. 7 6
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/contractinfo/vo/RelationsContractInfoRespVO.java
  6. 11 3
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/contractinfo/vo/RelationsContractInfoSaveReqVO.java
  7. 95 0
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/conversion/RelationsConversionController.java
  8. 88 0
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/conversion/vo/RelationsConversionPageReqVO.java
  9. 108 0
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/conversion/vo/RelationsConversionRespVO.java
  10. 81 0
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/conversion/vo/RelationsConversionSaveReqVO.java
  11. 95 0
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/entry/RelationsEntryController.java
  12. 77 0
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/entry/vo/RelationsEntryPageReqVO.java
  13. 96 0
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/entry/vo/RelationsEntryRespVO.java
  14. 72 0
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/entry/vo/RelationsEntrySaveReqVO.java
  15. 95 0
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/renew/RelationsRenewController.java
  16. 94 0
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/renew/vo/RelationsRenewPageReqVO.java
  17. 114 0
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/renew/vo/RelationsRenewRespVO.java
  18. 86 0
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/renew/vo/RelationsRenewSaveReqVO.java
  19. 95 0
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/turnover/RelationsTurnoverController.java
  20. 81 0
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/turnover/vo/RelationsTurnoverPageReqVO.java
  21. 100 0
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/turnover/vo/RelationsTurnoverRespVO.java
  22. 75 0
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/turnover/vo/RelationsTurnoverSaveReqVO.java
  23. 11 6
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/dal/dataobject/contractinfo/RelationsContractInfoDO.java
  24. 115 0
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/dal/dataobject/conversion/RelationsConversionDO.java
  25. 103 0
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/dal/dataobject/entry/RelationsEntryDO.java
  26. 123 0
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/dal/dataobject/renew/RelationsRenewDO.java
  27. 107 0
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/dal/dataobject/turnover/RelationsTurnoverDO.java
  28. 60 0
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/dal/mysql/contract/RelationsContractMapper.java
  29. 0 58
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/dal/mysql/contractinfo/RelationsContractInfoMapper.java
  30. 47 0
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/dal/mysql/conversion/RelationsConversionMapper.java
  31. 44 0
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/dal/mysql/entry/RelationsEntryMapper.java
  32. 49 0
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/dal/mysql/renew/RelationsRenewMapper.java
  33. 45 0
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/dal/mysql/turnover/RelationsTurnoverMapper.java
  34. 4 6
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/job/contractinfo/RelationsContractInfoEffectiveJob.java
  35. 9 9
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/service/contractinfo/RelationsContractInfoService.java
  36. 44 27
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/service/contractinfo/RelationsContractInfoServiceImpl.java
  37. 56 0
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/service/conversion/RelationsConversionService.java
  38. 72 0
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/service/conversion/RelationsConversionServiceImpl.java
  39. 56 0
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/service/entry/RelationsEntryService.java
  40. 75 0
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/service/entry/RelationsEntryServiceImpl.java
  41. 56 0
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/service/renew/RelationsRenewService.java
  42. 72 0
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/service/renew/RelationsRenewServiceImpl.java
  43. 56 0
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/service/turnover/RelationsTurnoverService.java
  44. 72 0
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/service/turnover/RelationsTurnoverServiceImpl.java
  45. 1 1
      yudao-module-personnel/yudao-module-relations-biz/src/main/resources/mapper/contractinfo/RelationsContractInfoMapper.xml
  46. 12 0
      yudao-module-personnel/yudao-module-relations-biz/src/main/resources/mapper/conversion/RelationsConversionMapper.xml
  47. 12 0
      yudao-module-personnel/yudao-module-relations-biz/src/main/resources/mapper/entry/RelationsEntryMapper.xml
  48. 12 0
      yudao-module-personnel/yudao-module-relations-biz/src/main/resources/mapper/renew/RelationsRenewMapper.xml
  49. 12 0
      yudao-module-personnel/yudao-module-relations-biz/src/main/resources/mapper/turnover/RelationsTurnoverMapper.xml
  50. 1 1
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/permission/MenuDO.java

+ 4 - 0
yudao-module-personnel/yudao-module-relations-api/src/main/java/cn/iocoder/yudao/module/relations/enums/ErrorCodeConstants.java

@@ -12,5 +12,9 @@ public interface ErrorCodeConstants {
 
     // ========== 员工关系模块 1-011-000-000 ==========
     ErrorCode RELATIONS_CONTRACT_INFO_NOT_EXISTS = new ErrorCode(1_011_000_000, "员工合同信息不存在");
+    ErrorCode RELATIONS_ENTRY_NOT_EXISTS = new ErrorCode(1_011_000_001, "入职信息不存在");
+    ErrorCode RELATIONS_CONVERSION_NOT_EXISTS = new ErrorCode(1_011_000_002, "转正信息不存在");
+    ErrorCode RELATIONS_RENEW_NOT_EXISTS = new ErrorCode(1_011_000_003, "续签信息不存在");
+    ErrorCode RELATIONS_TURNOVER_NOT_EXISTS = new ErrorCode(1_011_000_004, "离职信息不存在");
 
 }

+ 1 - 1
yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/api/contractinfo/RelationsApiImpl.java

@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.module.relations.api.contractinfo;
+package cn.iocoder.yudao.module.relations.api.contract;
 
 import cn.iocoder.yudao.module.relations.api.RelationsApi;
 import org.springframework.stereotype.Service;

+ 20 - 20
yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/contractinfo/RelationsContractInfoController.java

@@ -1,11 +1,11 @@
-package cn.iocoder.yudao.module.relations.controller.admin.contractinfo;
+package cn.iocoder.yudao.module.relations.controller.admin.contract;
 
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.module.relations.controller.admin.contractinfo.vo.RelationsContractInfoPageReqVO;
-import cn.iocoder.yudao.module.relations.controller.admin.contractinfo.vo.RelationsContractInfoRespVO;
-import cn.iocoder.yudao.module.relations.controller.admin.contractinfo.vo.RelationsContractInfoSaveReqVO;
-import cn.iocoder.yudao.module.relations.dal.dataobject.contractinfo.RelationsContractInfoDO;
-import cn.iocoder.yudao.module.relations.service.contractinfo.RelationsContractInfoService;
+import cn.iocoder.yudao.module.relations.controller.admin.contract.vo.RelationsContractPageReqVO;
+import cn.iocoder.yudao.module.relations.controller.admin.contract.vo.RelationsContractRespVO;
+import cn.iocoder.yudao.module.relations.controller.admin.contract.vo.RelationsContractSaveReqVO;
+import cn.iocoder.yudao.module.relations.dal.dataobject.contract.RelationsContractDO;
+import cn.iocoder.yudao.module.relations.service.contract.RelationsContractService;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -36,22 +36,22 @@ import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
 @RestController
 @RequestMapping("/presonnel/relations/contract-info")
 @Validated
-public class RelationsContractInfoController {
+public class RelationsContractController {
 
     @Resource
-    private RelationsContractInfoService contractInfoService;
+    private RelationsContractService contractInfoService;
 
     @PostMapping("/create")
     @Operation(summary = "创建员工合同信息")
     @PreAuthorize("@ss.hasPermission('relations:contract-info:create')")
-    public CommonResult<Long> createContractInfo(@Valid @RequestBody RelationsContractInfoSaveReqVO createReqVO) {
+    public CommonResult<Long> createContractInfo(@Valid @RequestBody RelationsContractSaveReqVO createReqVO) {
         return success(contractInfoService.createContractInfo(createReqVO));
     }
 
     @PutMapping("/update")
     @Operation(summary = "更新员工合同信息")
     @PreAuthorize("@ss.hasPermission('relations:contract-info:update')")
-    public CommonResult<Boolean> updateContractInfo(@Valid @RequestBody RelationsContractInfoSaveReqVO updateReqVO) {
+    public CommonResult<Boolean> updateContractInfo(@Valid @RequestBody RelationsContractSaveReqVO updateReqVO) {
         contractInfoService.updateContractInfo(updateReqVO);
         return success(true);
     }
@@ -69,30 +69,30 @@ public class RelationsContractInfoController {
     @Operation(summary = "获得员工合同信息")
     @Parameter(name = "id", description = "编号", required = true, example = "1024")
     @PreAuthorize("@ss.hasPermission('relations:contract-info:query')")
-    public CommonResult<RelationsContractInfoRespVO> getContractInfo(@RequestParam("id") Long id) {
-        RelationsContractInfoDO contractInfo = contractInfoService.getContractInfo(id);
-        return success(BeanUtils.toBean(contractInfo, RelationsContractInfoRespVO.class));
+    public CommonResult<RelationsContractRespVO> getContractInfo(@RequestParam("id") Long id) {
+        RelationsContractDO contractInfo = contractInfoService.getContractInfo(id);
+        return success(BeanUtils.toBean(contractInfo, RelationsContractRespVO.class));
     }
 
     @GetMapping("/page")
     @Operation(summary = "获得员工合同信息分页")
     @PreAuthorize("@ss.hasPermission('relations:contract-info:query')")
-    public CommonResult<PageResult<RelationsContractInfoRespVO>> getContractInfoPage(@Valid RelationsContractInfoPageReqVO pageReqVO) {
-        PageResult<RelationsContractInfoDO> pageResult = contractInfoService.getContractInfoPage(pageReqVO);
-        return success(BeanUtils.toBean(pageResult, RelationsContractInfoRespVO.class));
+    public CommonResult<PageResult<RelationsContractRespVO>> getContractInfoPage(@Valid RelationsContractPageReqVO pageReqVO) {
+        PageResult<RelationsContractDO> pageResult = contractInfoService.getContractInfoPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, RelationsContractRespVO.class));
     }
 
     @GetMapping("/export-excel")
     @Operation(summary = "导出员工合同信息 Excel")
     @PreAuthorize("@ss.hasPermission('relations:contract-info:export')")
     @ApiAccessLog(operateType = EXPORT)
-    public void exportContractInfoExcel(@Valid RelationsContractInfoPageReqVO pageReqVO,
+    public void exportContractInfoExcel(@Valid RelationsContractPageReqVO pageReqVO,
               HttpServletResponse response) throws IOException {
         pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<RelationsContractInfoDO> list = contractInfoService.getContractInfoPage(pageReqVO).getList();
+        List<RelationsContractDO> list = contractInfoService.getContractInfoPage(pageReqVO).getList();
         // 导出 Excel
-        ExcelUtils.write(response, "员工合同信息.xls", "数据", RelationsContractInfoRespVO.class,
-                        BeanUtils.toBean(list, RelationsContractInfoRespVO.class));
+        ExcelUtils.write(response, "员工合同信息.xls", "数据", RelationsContractRespVO.class,
+                        BeanUtils.toBean(list, RelationsContractRespVO.class));
     }
 
 }

+ 6 - 3
yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/contractinfo/vo/RelationsContractInfoPageReqVO.java

@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.module.relations.controller.admin.contractinfo.vo;
+package cn.iocoder.yudao.module.relations.controller.admin.contract.vo;
 
 import lombok.*;
 
@@ -14,10 +14,10 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_
 @Data
 @EqualsAndHashCode(callSuper = true)
 @ToString(callSuper = true)
-public class RelationsContractInfoPageReqVO extends PageParam {
+public class RelationsContractPageReqVO extends PageParam {
 
     @Schema(description = "业务UUID", example = "17794")
-    private String infoId;
+    private String contractId;
 
     @Schema(description = "姓名", example = "芋艿")
     private String name;
@@ -61,4 +61,7 @@ public class RelationsContractInfoPageReqVO extends PageParam {
     @Schema(description = "员工ID", example = "31256")
     private Long employeeId;
 
+    @Schema(description = "租户编号", example = "4014")
+    private Long tenantId;
+
 }

+ 7 - 6
yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/contractinfo/vo/RelationsContractInfoRespVO.java

@@ -1,19 +1,16 @@
-package cn.iocoder.yudao.module.relations.controller.admin.contractinfo.vo;
+package cn.iocoder.yudao.module.relations.controller.admin.contract.vo;
 
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import java.time.LocalDate;
-import java.util.*;
-import java.util.*;
-import org.springframework.format.annotation.DateTimeFormat;
 import java.time.LocalDateTime;
 import com.alibaba.excel.annotation.*;
 
 @Schema(description = "管理后台 - 员工合同信息 Response VO")
 @Data
 @ExcelIgnoreUnannotated
-public class RelationsContractInfoRespVO {
+public class RelationsContractRespVO {
 
     @Schema(description = "自增ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "28961")
     @ExcelProperty("自增ID")
@@ -21,7 +18,7 @@ public class RelationsContractInfoRespVO {
 
     @Schema(description = "业务UUID", requiredMode = Schema.RequiredMode.REQUIRED, example = "17794")
     @ExcelProperty("业务UUID")
-    private String infoId;
+    private String contractId;
 
     @Schema(description = "姓名", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
     @ExcelProperty("姓名")
@@ -75,4 +72,8 @@ public class RelationsContractInfoRespVO {
     @ExcelProperty("员工ID")
     private Long employeeId;
 
+    @Schema(description = "租户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "4014")
+    @ExcelProperty("租户编号")
+    private Long tenantId;
+
 }

+ 11 - 3
yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/contractinfo/vo/RelationsContractInfoSaveReqVO.java

@@ -1,22 +1,23 @@
-package cn.iocoder.yudao.module.relations.controller.admin.contractinfo.vo;
+package cn.iocoder.yudao.module.relations.controller.admin.contract.vo;
 
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import java.time.LocalDate;
+import java.util.List;
 
 import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
 
 @Schema(description = "管理后台 - 员工合同信息新增/修改 Request VO")
 @Data
-public class RelationsContractInfoSaveReqVO {
+public class RelationsContractSaveReqVO {
 
     @Schema(description = "自增ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "28961")
     private Long id;
 
     @Schema(description = "业务UUID", requiredMode = Schema.RequiredMode.REQUIRED, example = "17794")
-    private String infoId;
+    private String contractId;
 
     @Schema(description = "姓名", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
     @NotEmpty(message = "姓名不能为空")
@@ -60,4 +61,11 @@ public class RelationsContractInfoSaveReqVO {
     @NotNull(message = "员工ID不能为空")
     private Long employeeId;
 
+    @Schema(description = "租户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "4014")
+    @NotNull(message = "租户编号不能为空")
+    private Long tenantId;
+
+    @Schema(description = "附件主键id", example = "[1, 2]")
+    private List<Long> fileIdList;
+
 }

+ 95 - 0
yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/conversion/RelationsConversionController.java

@@ -0,0 +1,95 @@
+package cn.iocoder.yudao.module.relations.controller.admin.conversion;
+
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import java.util.*;
+import java.io.IOException;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import cn.iocoder.yudao.module.relations.controller.admin.conversion.vo.*;
+import cn.iocoder.yudao.module.relations.dal.dataobject.conversion.RelationsConversionDO;
+import cn.iocoder.yudao.module.relations.service.conversion.RelationsConversionService;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+@Tag(name = "管理后台 - 转正信息")
+@RestController
+@RequestMapping("/relations/conversion")
+@Validated
+public class RelationsConversionController {
+
+    @Resource
+    private RelationsConversionService conversionService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建转正信息")
+    @PreAuthorize("@ss.hasPermission('relations:conversion:create')")
+    public CommonResult<Long> createConversion(@Valid @RequestBody RelationsConversionSaveReqVO createReqVO) {
+        return success(conversionService.createConversion(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新转正信息")
+    @PreAuthorize("@ss.hasPermission('relations:conversion:update')")
+    public CommonResult<Boolean> updateConversion(@Valid @RequestBody RelationsConversionSaveReqVO updateReqVO) {
+        conversionService.updateConversion(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除转正信息")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('relations:conversion:delete')")
+    public CommonResult<Boolean> deleteConversion(@RequestParam("id") Long id) {
+        conversionService.deleteConversion(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得转正信息")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('relations:conversion:query')")
+    public CommonResult<RelationsConversionRespVO> getConversion(@RequestParam("id") Long id) {
+        RelationsConversionDO conversion = conversionService.getConversion(id);
+        return success(BeanUtils.toBean(conversion, RelationsConversionRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得转正信息分页")
+    @PreAuthorize("@ss.hasPermission('relations:conversion:query')")
+    public CommonResult<PageResult<RelationsConversionRespVO>> getConversionPage(@Valid RelationsConversionPageReqVO pageReqVO) {
+        PageResult<RelationsConversionDO> pageResult = conversionService.getConversionPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, RelationsConversionRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出转正信息 Excel")
+    @PreAuthorize("@ss.hasPermission('relations:conversion:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportConversionExcel(@Valid RelationsConversionPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<RelationsConversionDO> list = conversionService.getConversionPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "转正信息.xls", "数据", RelationsConversionRespVO.class,
+                        BeanUtils.toBean(list, RelationsConversionRespVO.class));
+    }
+
+}

+ 88 - 0
yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/conversion/vo/RelationsConversionPageReqVO.java

@@ -0,0 +1,88 @@
+package cn.iocoder.yudao.module.relations.controller.admin.conversion.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 转正信息分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class RelationsConversionPageReqVO extends PageParam {
+
+    @Schema(description = "uuid", example = "182")
+    private String conversionId;
+
+    @Schema(description = "转正人id", example = "16390")
+    private Long employeeId;
+
+    @Schema(description = "转正人uuid", example = "11168")
+    private String employeeUuid;
+
+    @Schema(description = "转正员工姓名", example = "芋艿")
+    private String employeeName;
+
+    @Schema(description = "转正员工手机号")
+    private String employeePhone;
+
+    @Schema(description = "用户账号id", example = "5018")
+    private Long userId;
+
+    @Schema(description = "用户账号uuid", example = "21562")
+    private String userUuid;
+
+    @Schema(description = "部门id", example = "2507")
+    private Long deptId;
+
+    @Schema(description = "部门uuid", example = "11190")
+    private String deptUuid;
+
+    @Schema(description = "职位")
+    private String position;
+
+    @Schema(description = "入职日期")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private String[] entryDate;
+
+    @Schema(description = "试用期结束日期")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private String[] probationEndDate;
+
+    @Schema(description = "转正日期")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private String[] conversionDate;
+
+    @Schema(description = "转正申请理由", example = "不香")
+    private String conversionReason;
+
+    @Schema(description = "工作总结")
+    private String workSummary;
+
+    @Schema(description = "备注")
+    private String remarks;
+
+    @Schema(description = "状态", example = "2")
+    private Integer status;
+
+    @Schema(description = "数据来源,0流程添加、1手动添加")
+    private String infoSource;
+
+    @Schema(description = "创建人员工id", example = "11670")
+    private Long creatorEmployeeId;
+
+    @Schema(description = "创建人员工姓名", example = "赵六")
+    private String creatorEmployeeName;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+    @Schema(description = "租户编号", example = "4014")
+    private Long tenantId;
+
+}

+ 108 - 0
yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/conversion/vo/RelationsConversionRespVO.java

@@ -0,0 +1,108 @@
+package cn.iocoder.yudao.module.relations.controller.admin.conversion.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import com.alibaba.excel.annotation.*;
+
+@Schema(description = "管理后台 - 转正信息 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class RelationsConversionRespVO {
+
+    @Schema(description = "转正表单主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "15594")
+    @ExcelProperty("转正表单主键")
+    private Long id;
+
+    @Schema(description = "uuid", example = "182")
+    @ExcelProperty("uuid")
+    private String conversionId;
+
+    @Schema(description = "转正人id", example = "16390")
+    @ExcelProperty("转正人id")
+    private Long employeeId;
+
+    @Schema(description = "转正人uuid", example = "11168")
+    @ExcelProperty("转正人uuid")
+    private String employeeUuid;
+
+    @Schema(description = "转正员工姓名", example = "芋艿")
+    @ExcelProperty("转正员工姓名")
+    private String employeeName;
+
+    @Schema(description = "转正员工手机号")
+    @ExcelProperty("转正员工手机号")
+    private String employeePhone;
+
+    @Schema(description = "用户账号id", example = "5018")
+    @ExcelProperty("用户账号id")
+    private Long userId;
+
+    @Schema(description = "用户账号uuid", example = "21562")
+    @ExcelProperty("用户账号uuid")
+    private String userUuid;
+
+    @Schema(description = "部门id", example = "2507")
+    @ExcelProperty("部门id")
+    private Long deptId;
+
+    @Schema(description = "部门uuid", example = "11190")
+    @ExcelProperty("部门uuid")
+    private String deptUuid;
+
+    @Schema(description = "职位")
+    @ExcelProperty("职位")
+    private String position;
+
+    @Schema(description = "入职日期")
+    @ExcelProperty("入职日期")
+    private String entryDate;
+
+    @Schema(description = "试用期结束日期")
+    @ExcelProperty("试用期结束日期")
+    private String probationEndDate;
+
+    @Schema(description = "转正日期")
+    @ExcelProperty("转正日期")
+    private String conversionDate;
+
+    @Schema(description = "转正申请理由", example = "不香")
+    @ExcelProperty("转正申请理由")
+    private String conversionReason;
+
+    @Schema(description = "工作总结")
+    @ExcelProperty("工作总结")
+    private String workSummary;
+
+    @Schema(description = "备注")
+    @ExcelProperty("备注")
+    private String remarks;
+
+    @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
+    @ExcelProperty("状态")
+    private Integer status;
+
+    @Schema(description = "数据来源,0流程添加、1手动添加")
+    @ExcelProperty("数据来源,0流程添加、1手动添加")
+    private String infoSource;
+
+    @Schema(description = "创建人员工id", example = "11670")
+    @ExcelProperty("创建人员工id")
+    private Long creatorEmployeeId;
+
+    @Schema(description = "创建人员工姓名", example = "赵六")
+    @ExcelProperty("创建人员工姓名")
+    private String creatorEmployeeName;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+    @Schema(description = "租户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "4014")
+    @ExcelProperty("租户编号")
+    private Long tenantId;
+
+}

+ 81 - 0
yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/conversion/vo/RelationsConversionSaveReqVO.java

@@ -0,0 +1,81 @@
+package cn.iocoder.yudao.module.relations.controller.admin.conversion.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+
+import javax.validation.constraints.NotNull;
+
+@Schema(description = "管理后台 - 转正信息新增/修改 Request VO")
+@Data
+public class RelationsConversionSaveReqVO {
+
+    @Schema(description = "转正表单主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "15594")
+    private Long id;
+
+    @Schema(description = "uuid", example = "182")
+    private String conversionId;
+
+    @Schema(description = "转正人id", example = "16390")
+    private Long employeeId;
+
+    @Schema(description = "转正人uuid", example = "11168")
+    private String employeeUuid;
+
+    @Schema(description = "转正员工姓名", example = "芋艿")
+    private String employeeName;
+
+    @Schema(description = "转正员工手机号")
+    private String employeePhone;
+
+    @Schema(description = "用户账号id", example = "5018")
+    private Long userId;
+
+    @Schema(description = "用户账号uuid", example = "21562")
+    private String userUuid;
+
+    @Schema(description = "部门id", example = "2507")
+    private Long deptId;
+
+    @Schema(description = "部门uuid", example = "11190")
+    private String deptUuid;
+
+    @Schema(description = "职位")
+    private String position;
+
+    @Schema(description = "入职日期")
+    private String entryDate;
+
+    @Schema(description = "试用期结束日期")
+    private String probationEndDate;
+
+    @Schema(description = "转正日期")
+    private String conversionDate;
+
+    @Schema(description = "转正申请理由", example = "不香")
+    private String conversionReason;
+
+    @Schema(description = "工作总结")
+    private String workSummary;
+
+    @Schema(description = "备注")
+    private String remarks;
+
+    @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
+    @NotNull(message = "状态不能为空")
+    private Integer status;
+
+    @Schema(description = "数据来源,0流程添加、1手动添加")
+    private String infoSource;
+
+    @Schema(description = "创建人员工id", example = "11670")
+    private Long creatorEmployeeId;
+
+    @Schema(description = "创建人员工姓名", example = "赵六")
+    private String creatorEmployeeName;
+
+    @Schema(description = "租户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "4014")
+    @NotNull(message = "租户编号不能为空")
+    private Long tenantId;
+
+}

+ 95 - 0
yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/entry/RelationsEntryController.java

@@ -0,0 +1,95 @@
+package cn.iocoder.yudao.module.relations.controller.admin.entry;
+
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import java.util.*;
+import java.io.IOException;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import cn.iocoder.yudao.module.relations.controller.admin.entry.vo.*;
+import cn.iocoder.yudao.module.relations.dal.dataobject.entry.RelationsEntryDO;
+import cn.iocoder.yudao.module.relations.service.entry.RelationsEntryService;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+@Tag(name = "管理后台 - 入职信息")
+@RestController
+@RequestMapping("/relations/entry")
+@Validated
+public class RelationsEntryController {
+
+    @Resource
+    private RelationsEntryService entryService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建入职信息")
+    @PreAuthorize("@ss.hasPermission('relations:entry:create')")
+    public CommonResult<Long> createEntry(@Valid @RequestBody RelationsEntrySaveReqVO createReqVO) {
+        return success(entryService.createEntry(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新入职信息")
+    @PreAuthorize("@ss.hasPermission('relations:entry:update')")
+    public CommonResult<Boolean> updateEntry(@Valid @RequestBody RelationsEntrySaveReqVO updateReqVO) {
+        entryService.updateEntry(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除入职信息")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('relations:entry:delete')")
+    public CommonResult<Boolean> deleteEntry(@RequestParam("id") Long id) {
+        entryService.deleteEntry(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得入职信息")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('relations:entry:query')")
+    public CommonResult<RelationsEntryRespVO> getEntry(@RequestParam("id") Long id) {
+        RelationsEntryDO entry = entryService.getEntry(id);
+        return success(BeanUtils.toBean(entry, RelationsEntryRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得入职信息分页")
+    @PreAuthorize("@ss.hasPermission('relations:entry:query')")
+    public CommonResult<PageResult<RelationsEntryRespVO>> getEntryPage(@Valid RelationsEntryPageReqVO pageReqVO) {
+        PageResult<RelationsEntryDO> pageResult = entryService.getEntryPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, RelationsEntryRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出入职信息 Excel")
+    @PreAuthorize("@ss.hasPermission('relations:entry:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportEntryExcel(@Valid RelationsEntryPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<RelationsEntryDO> list = entryService.getEntryPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "入职信息.xls", "数据", RelationsEntryRespVO.class,
+                        BeanUtils.toBean(list, RelationsEntryRespVO.class));
+    }
+
+}

+ 77 - 0
yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/entry/vo/RelationsEntryPageReqVO.java

@@ -0,0 +1,77 @@
+package cn.iocoder.yudao.module.relations.controller.admin.entry.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 入职信息分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class RelationsEntryPageReqVO extends PageParam {
+
+    @Schema(description = "uuid", example = "20723")
+    private String entryId;
+
+    @Schema(description = "入职人", example = "王五")
+    private String entryName;
+
+    @Schema(description = "部门", example = "24059")
+    private String deptId;
+
+    @Schema(description = "职位")
+    private String position;
+
+    @Schema(description = "员工类型", example = "2")
+    private String employeeType;
+
+    @Schema(description = "性别")
+    private String gender;
+
+    @Schema(description = "出身日期")
+    private String birthday;
+
+    @Schema(description = "联系电话")
+    private String contactNumber;
+
+    @Schema(description = "电子邮箱")
+    private String email;
+
+    @Schema(description = "教育背景")
+    private String education;
+
+    @Schema(description = "工作经验")
+    private String workExperience;
+
+    @Schema(description = "入职日期")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private String[] entryDate;
+
+    @Schema(description = "备注")
+    private String remarks;
+
+    @Schema(description = "状态", example = "2")
+    private Integer status;
+
+    @Schema(description = "数据来源,0流程添加、1手动添加")
+    private String infoSource;
+
+    @Schema(description = "创建人员工id", example = "11779")
+    private Long creatorEmployeeId;
+
+    @Schema(description = "创建人员工姓名", example = "赵六")
+    private String creatorEmployeeName;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+    @Schema(description = "租户编号", example = "17470")
+    private Long tenantId;
+
+}

+ 96 - 0
yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/entry/vo/RelationsEntryRespVO.java

@@ -0,0 +1,96 @@
+package cn.iocoder.yudao.module.relations.controller.admin.entry.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import com.alibaba.excel.annotation.*;
+
+@Schema(description = "管理后台 - 入职信息 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class RelationsEntryRespVO {
+
+    @Schema(description = "入职表单主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "30064")
+    @ExcelProperty("入职表单主键")
+    private Long id;
+
+    @Schema(description = "uuid", example = "20723")
+    @ExcelProperty("uuid")
+    private String entryId;
+
+    @Schema(description = "入职人", example = "王五")
+    @ExcelProperty("入职人")
+    private String entryName;
+
+    @Schema(description = "部门", example = "24059")
+    @ExcelProperty("部门")
+    private String deptId;
+
+    @Schema(description = "职位")
+    @ExcelProperty("职位")
+    private String position;
+
+    @Schema(description = "员工类型", example = "2")
+    @ExcelProperty("员工类型")
+    private String employeeType;
+
+    @Schema(description = "性别")
+    @ExcelProperty("性别")
+    private String gender;
+
+    @Schema(description = "出身日期")
+    @ExcelProperty("出身日期")
+    private String birthday;
+
+    @Schema(description = "联系电话")
+    @ExcelProperty("联系电话")
+    private String contactNumber;
+
+    @Schema(description = "电子邮箱")
+    @ExcelProperty("电子邮箱")
+    private String email;
+
+    @Schema(description = "教育背景")
+    @ExcelProperty("教育背景")
+    private String education;
+
+    @Schema(description = "工作经验")
+    @ExcelProperty("工作经验")
+    private String workExperience;
+
+    @Schema(description = "入职日期")
+    @ExcelProperty("入职日期")
+    private String entryDate;
+
+    @Schema(description = "备注")
+    @ExcelProperty("备注")
+    private String remarks;
+
+    @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
+    @ExcelProperty("状态")
+    private Integer status;
+
+    @Schema(description = "数据来源,0流程添加、1手动添加")
+    @ExcelProperty("数据来源,0流程添加、1手动添加")
+    private String infoSource;
+
+    @Schema(description = "创建人员工id", example = "11779")
+    @ExcelProperty("创建人员工id")
+    private Long creatorEmployeeId;
+
+    @Schema(description = "创建人员工姓名", example = "赵六")
+    @ExcelProperty("创建人员工姓名")
+    private String creatorEmployeeName;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+    @Schema(description = "租户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "17470")
+    @ExcelProperty("租户编号")
+    private Long tenantId;
+
+}

+ 72 - 0
yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/entry/vo/RelationsEntrySaveReqVO.java

@@ -0,0 +1,72 @@
+package cn.iocoder.yudao.module.relations.controller.admin.entry.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+
+import javax.validation.constraints.NotNull;
+import java.util.*;
+
+@Schema(description = "管理后台 - 入职信息新增/修改 Request VO")
+@Data
+public class RelationsEntrySaveReqVO {
+
+    @Schema(description = "入职表单主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "30064")
+    private Long id;
+
+    @Schema(description = "uuid", example = "20723")
+    private String entryId;
+
+    @Schema(description = "入职人", example = "王五")
+    private String entryName;
+
+    @Schema(description = "部门", example = "24059")
+    private String deptId;
+
+    @Schema(description = "职位")
+    private String position;
+
+    @Schema(description = "员工类型", example = "2")
+    private String employeeType;
+
+    @Schema(description = "性别")
+    private String gender;
+
+    @Schema(description = "出身日期")
+    private String birthday;
+
+    @Schema(description = "联系电话")
+    private String contactNumber;
+
+    @Schema(description = "电子邮箱")
+    private String email;
+
+    @Schema(description = "教育背景")
+    private String education;
+
+    @Schema(description = "工作经验")
+    private String workExperience;
+
+    @Schema(description = "入职日期")
+    private String entryDate;
+
+    @Schema(description = "备注")
+    private String remarks;
+
+    @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
+    @NotNull(message = "状态不能为空")
+    private Integer status;
+
+    @Schema(description = "数据来源,0流程添加、1手动添加")
+    private String infoSource;
+
+    @Schema(description = "创建人员工id", example = "11779")
+    private Long creatorEmployeeId;
+
+    @Schema(description = "创建人员工姓名", example = "赵六")
+    private String creatorEmployeeName;
+
+    @Schema(description = "租户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "17470")
+    @NotNull(message = "租户编号不能为空")
+    private Long tenantId;
+
+}

+ 95 - 0
yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/renew/RelationsRenewController.java

@@ -0,0 +1,95 @@
+package cn.iocoder.yudao.module.relations.controller.admin.renew;
+
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import java.util.*;
+import java.io.IOException;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import cn.iocoder.yudao.module.relations.controller.admin.renew.vo.*;
+import cn.iocoder.yudao.module.relations.dal.dataobject.renew.RelationsRenewDO;
+import cn.iocoder.yudao.module.relations.service.renew.RelationsRenewService;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+@Tag(name = "管理后台 - 续签信息")
+@RestController
+@RequestMapping("/relations/renew")
+@Validated
+public class RelationsRenewController {
+
+    @Resource
+    private RelationsRenewService renewService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建续签信息")
+    @PreAuthorize("@ss.hasPermission('relations:renew:create')")
+    public CommonResult<Long> createRenew(@Valid @RequestBody RelationsRenewSaveReqVO createReqVO) {
+        return success(renewService.createRenew(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新续签信息")
+    @PreAuthorize("@ss.hasPermission('relations:renew:update')")
+    public CommonResult<Boolean> updateRenew(@Valid @RequestBody RelationsRenewSaveReqVO updateReqVO) {
+        renewService.updateRenew(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除续签信息")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('relations:renew:delete')")
+    public CommonResult<Boolean> deleteRenew(@RequestParam("id") Long id) {
+        renewService.deleteRenew(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得续签信息")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('relations:renew:query')")
+    public CommonResult<RelationsRenewRespVO> getRenew(@RequestParam("id") Long id) {
+        RelationsRenewDO renew = renewService.getRenew(id);
+        return success(BeanUtils.toBean(renew, RelationsRenewRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得续签信息分页")
+    @PreAuthorize("@ss.hasPermission('relations:renew:query')")
+    public CommonResult<PageResult<RelationsRenewRespVO>> getRenewPage(@Valid RelationsRenewPageReqVO pageReqVO) {
+        PageResult<RelationsRenewDO> pageResult = renewService.getRenewPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, RelationsRenewRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出续签信息 Excel")
+    @PreAuthorize("@ss.hasPermission('relations:renew:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportRenewExcel(@Valid RelationsRenewPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<RelationsRenewDO> list = renewService.getRenewPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "续签信息.xls", "数据", RelationsRenewRespVO.class,
+                        BeanUtils.toBean(list, RelationsRenewRespVO.class));
+    }
+
+}

+ 94 - 0
yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/renew/vo/RelationsRenewPageReqVO.java

@@ -0,0 +1,94 @@
+package cn.iocoder.yudao.module.relations.controller.admin.renew.vo;
+
+import lombok.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 续签信息分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class RelationsRenewPageReqVO extends PageParam {
+
+    @Schema(description = "uuid", example = "14155")
+    private String renewId;
+
+    @Schema(description = "续签人id", example = "18481")
+    private Long employeeId;
+
+    @Schema(description = "续签人uuid", example = "15219")
+    private String employeeUuid;
+
+    @Schema(description = "续签员工姓名", example = "李四")
+    private String employeeName;
+
+    @Schema(description = "续签员工手机号")
+    private String employeePhone;
+
+    @Schema(description = "用户账号id", example = "12361")
+    private Long userId;
+
+    @Schema(description = "用户账号uuid", example = "2148")
+    private String userUuid;
+
+    @Schema(description = "部门id", example = "9504")
+    private Long deptId;
+
+    @Schema(description = "部门uuid", example = "7043")
+    private String deptUuid;
+
+    @Schema(description = "职位")
+    private String position;
+
+    @Schema(description = "原合同开始日期")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private String[] oldContractStartDate;
+
+    @Schema(description = "原合同结束日期")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private String[] oldContractEndDate;
+
+    @Schema(description = "续签合同期限")
+    private String renewPeriod;
+
+    @Schema(description = "续签开始日期")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private String[] renewContractStartDate;
+
+    @Schema(description = "续签结束日期")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private String[] renewContractEndDate;
+
+    @Schema(description = "续签理由", example = "不好")
+    private String renewReason;
+
+    @Schema(description = "工作表现")
+    private String workPerformance;
+
+    @Schema(description = "备注")
+    private String remarks;
+
+    @Schema(description = "状态", example = "1")
+    private Integer status;
+
+    @Schema(description = "数据来源,0流程添加、1手动添加")
+    private String infoSource;
+
+    @Schema(description = "创建人员工id", example = "27141")
+    private Long creatorEmployeeId;
+
+    @Schema(description = "创建人员工姓名", example = "李四")
+    private String creatorEmployeeName;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+    @Schema(description = "租户编号", example = "618")
+    private Long tenantId;
+
+}

+ 114 - 0
yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/renew/vo/RelationsRenewRespVO.java

@@ -0,0 +1,114 @@
+package cn.iocoder.yudao.module.relations.controller.admin.renew.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+
+import java.time.LocalDateTime;
+import com.alibaba.excel.annotation.*;
+
+@Schema(description = "管理后台 - 续签信息 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class RelationsRenewRespVO {
+
+    @Schema(description = "续签表单主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "25101")
+    @ExcelProperty("续签表单主键")
+    private Long id;
+
+    @Schema(description = "uuid", example = "14155")
+    @ExcelProperty("uuid")
+    private String renewId;
+
+    @Schema(description = "续签人id", example = "18481")
+    @ExcelProperty("续签人id")
+    private Long employeeId;
+
+    @Schema(description = "续签人uuid", example = "15219")
+    @ExcelProperty("续签人uuid")
+    private String employeeUuid;
+
+    @Schema(description = "续签员工姓名", example = "李四")
+    @ExcelProperty("续签员工姓名")
+    private String employeeName;
+
+    @Schema(description = "续签员工手机号")
+    @ExcelProperty("续签员工手机号")
+    private String employeePhone;
+
+    @Schema(description = "用户账号id", example = "12361")
+    @ExcelProperty("用户账号id")
+    private Long userId;
+
+    @Schema(description = "用户账号uuid", example = "2148")
+    @ExcelProperty("用户账号uuid")
+    private String userUuid;
+
+    @Schema(description = "部门id", example = "9504")
+    @ExcelProperty("部门id")
+    private Long deptId;
+
+    @Schema(description = "部门uuid", example = "7043")
+    @ExcelProperty("部门uuid")
+    private String deptUuid;
+
+    @Schema(description = "职位")
+    @ExcelProperty("职位")
+    private String position;
+
+    @Schema(description = "原合同开始日期")
+    @ExcelProperty("原合同开始日期")
+    private String oldContractStartDate;
+
+    @Schema(description = "原合同结束日期")
+    @ExcelProperty("原合同结束日期")
+    private String oldContractEndDate;
+
+    @Schema(description = "续签合同期限")
+    @ExcelProperty("续签合同期限")
+    private String renewPeriod;
+
+    @Schema(description = "续签开始日期")
+    @ExcelProperty("续签开始日期")
+    private String renewContractStartDate;
+
+    @Schema(description = "续签结束日期")
+    @ExcelProperty("续签结束日期")
+    private String renewContractEndDate;
+
+    @Schema(description = "续签理由", example = "不好")
+    @ExcelProperty("续签理由")
+    private String renewReason;
+
+    @Schema(description = "工作表现")
+    @ExcelProperty("工作表现")
+    private String workPerformance;
+
+    @Schema(description = "备注")
+    @ExcelProperty("备注")
+    private String remarks;
+
+    @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @ExcelProperty("状态")
+    private Integer status;
+
+    @Schema(description = "数据来源,0流程添加、1手动添加")
+    @ExcelProperty("数据来源,0流程添加、1手动添加")
+    private String infoSource;
+
+    @Schema(description = "创建人员工id", example = "27141")
+    @ExcelProperty("创建人员工id")
+    private Long creatorEmployeeId;
+
+    @Schema(description = "创建人员工姓名", example = "李四")
+    @ExcelProperty("创建人员工姓名")
+    private String creatorEmployeeName;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+    @Schema(description = "租户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "618")
+    @ExcelProperty("租户编号")
+    private Long tenantId;
+
+}

+ 86 - 0
yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/renew/vo/RelationsRenewSaveReqVO.java

@@ -0,0 +1,86 @@
+package cn.iocoder.yudao.module.relations.controller.admin.renew.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+
+import javax.validation.constraints.NotNull;
+
+@Schema(description = "管理后台 - 续签信息新增/修改 Request VO")
+@Data
+public class RelationsRenewSaveReqVO {
+
+    @Schema(description = "续签表单主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "25101")
+    private Long id;
+
+    @Schema(description = "uuid", example = "14155")
+    private String renewId;
+
+    @Schema(description = "续签人id", example = "18481")
+    private Long employeeId;
+
+    @Schema(description = "续签人uuid", example = "15219")
+    private String employeeUuid;
+
+    @Schema(description = "续签员工姓名", example = "李四")
+    private String employeeName;
+
+    @Schema(description = "续签员工手机号")
+    private String employeePhone;
+
+    @Schema(description = "用户账号id", example = "12361")
+    private Long userId;
+
+    @Schema(description = "用户账号uuid", example = "2148")
+    private String userUuid;
+
+    @Schema(description = "部门id", example = "9504")
+    private Long deptId;
+
+    @Schema(description = "部门uuid", example = "7043")
+    private String deptUuid;
+
+    @Schema(description = "职位")
+    private String position;
+
+    @Schema(description = "原合同开始日期")
+    private String oldContractStartDate;
+
+    @Schema(description = "原合同结束日期")
+    private String oldContractEndDate;
+
+    @Schema(description = "续签合同期限")
+    private String renewPeriod;
+
+    @Schema(description = "续签开始日期")
+    private String renewContractStartDate;
+
+    @Schema(description = "续签结束日期")
+    private String renewContractEndDate;
+
+    @Schema(description = "续签理由", example = "不好")
+    private String renewReason;
+
+    @Schema(description = "工作表现")
+    private String workPerformance;
+
+    @Schema(description = "备注")
+    private String remarks;
+
+    @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    @NotNull(message = "状态不能为空")
+    private Integer status;
+
+    @Schema(description = "数据来源,0流程添加、1手动添加")
+    private String infoSource;
+
+    @Schema(description = "创建人员工id", example = "27141")
+    private Long creatorEmployeeId;
+
+    @Schema(description = "创建人员工姓名", example = "李四")
+    private String creatorEmployeeName;
+
+    @Schema(description = "租户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "618")
+    @NotNull(message = "租户编号不能为空")
+    private Long tenantId;
+
+}

+ 95 - 0
yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/turnover/RelationsTurnoverController.java

@@ -0,0 +1,95 @@
+package cn.iocoder.yudao.module.relations.controller.admin.turnover;
+
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import java.util.*;
+import java.io.IOException;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
+
+import cn.iocoder.yudao.module.relations.controller.admin.turnover.vo.*;
+import cn.iocoder.yudao.module.relations.dal.dataobject.turnover.RelationsTurnoverDO;
+import cn.iocoder.yudao.module.relations.service.turnover.RelationsTurnoverService;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+@Tag(name = "管理后台 - 离职信息")
+@RestController
+@RequestMapping("/relations/turnover")
+@Validated
+public class RelationsTurnoverController {
+
+    @Resource
+    private RelationsTurnoverService turnoverService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建离职信息")
+    @PreAuthorize("@ss.hasPermission('relations:turnover:create')")
+    public CommonResult<Long> createTurnover(@Valid @RequestBody RelationsTurnoverSaveReqVO createReqVO) {
+        return success(turnoverService.createTurnover(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新离职信息")
+    @PreAuthorize("@ss.hasPermission('relations:turnover:update')")
+    public CommonResult<Boolean> updateTurnover(@Valid @RequestBody RelationsTurnoverSaveReqVO updateReqVO) {
+        turnoverService.updateTurnover(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除离职信息")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('relations:turnover:delete')")
+    public CommonResult<Boolean> deleteTurnover(@RequestParam("id") Long id) {
+        turnoverService.deleteTurnover(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得离职信息")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('relations:turnover:query')")
+    public CommonResult<RelationsTurnoverRespVO> getTurnover(@RequestParam("id") Long id) {
+        RelationsTurnoverDO turnover = turnoverService.getTurnover(id);
+        return success(BeanUtils.toBean(turnover, RelationsTurnoverRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得离职信息分页")
+    @PreAuthorize("@ss.hasPermission('relations:turnover:query')")
+    public CommonResult<PageResult<RelationsTurnoverRespVO>> getTurnoverPage(@Valid RelationsTurnoverPageReqVO pageReqVO) {
+        PageResult<RelationsTurnoverDO> pageResult = turnoverService.getTurnoverPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, RelationsTurnoverRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出离职信息 Excel")
+    @PreAuthorize("@ss.hasPermission('relations:turnover:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportTurnoverExcel(@Valid RelationsTurnoverPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<RelationsTurnoverDO> list = turnoverService.getTurnoverPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "离职信息.xls", "数据", RelationsTurnoverRespVO.class,
+                        BeanUtils.toBean(list, RelationsTurnoverRespVO.class));
+    }
+
+}

+ 81 - 0
yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/turnover/vo/RelationsTurnoverPageReqVO.java

@@ -0,0 +1,81 @@
+package cn.iocoder.yudao.module.relations.controller.admin.turnover.vo;
+
+import lombok.*;
+import java.util.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 离职信息分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class RelationsTurnoverPageReqVO extends PageParam {
+
+    @Schema(description = "uuid", example = "25144")
+    private String turnoverId;
+
+    @Schema(description = "离职人id", example = "28288")
+    private Long employeeId;
+
+    @Schema(description = "离职人uuid", example = "32274")
+    private String employeeUuid;
+
+    @Schema(description = "离职员工姓名", example = "张三")
+    private String employeeName;
+
+    @Schema(description = "续签员工手机号")
+    private String employeePhone;
+
+    @Schema(description = "用户账号id", example = "31092")
+    private Long userId;
+
+    @Schema(description = "用户账号uuid", example = "17689")
+    private String userUuid;
+
+    @Schema(description = "部门id", example = "19364")
+    private Long deptId;
+
+    @Schema(description = "部门uuid", example = "6524")
+    private String deptUuid;
+
+    @Schema(description = "职位")
+    private String position;
+
+    @Schema(description = "入职日期")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private String[] entryDate;
+
+    @Schema(description = "离职日期")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private String[] turnoverDate;
+
+    @Schema(description = "离职原因", example = "不对")
+    private String turnoverReason;
+
+    @Schema(description = "备注")
+    private String remarks;
+
+    @Schema(description = "状态", example = "2")
+    private Integer status;
+
+    @Schema(description = "数据来源,0流程添加、1手动添加")
+    private String infoSource;
+
+    @Schema(description = "创建人员工id", example = "29636")
+    private Long creatorEmployeeId;
+
+    @Schema(description = "创建人员工姓名", example = "王五")
+    private String creatorEmployeeName;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+    @Schema(description = "租户编号", example = "23947")
+    private Long tenantId;
+
+}

+ 100 - 0
yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/turnover/vo/RelationsTurnoverRespVO.java

@@ -0,0 +1,100 @@
+package cn.iocoder.yudao.module.relations.controller.admin.turnover.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import com.alibaba.excel.annotation.*;
+
+@Schema(description = "管理后台 - 离职信息 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class RelationsTurnoverRespVO {
+
+    @Schema(description = "离职表单主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "5207")
+    @ExcelProperty("离职表单主键")
+    private Long id;
+
+    @Schema(description = "uuid", example = "25144")
+    @ExcelProperty("uuid")
+    private String turnoverId;
+
+    @Schema(description = "离职人id", example = "28288")
+    @ExcelProperty("离职人id")
+    private Long employeeId;
+
+    @Schema(description = "离职人uuid", example = "32274")
+    @ExcelProperty("离职人uuid")
+    private String employeeUuid;
+
+    @Schema(description = "离职员工姓名", example = "张三")
+    @ExcelProperty("离职员工姓名")
+    private String employeeName;
+
+    @Schema(description = "续签员工手机号")
+    @ExcelProperty("续签员工手机号")
+    private String employeePhone;
+
+    @Schema(description = "用户账号id", example = "31092")
+    @ExcelProperty("用户账号id")
+    private Long userId;
+
+    @Schema(description = "用户账号uuid", example = "17689")
+    @ExcelProperty("用户账号uuid")
+    private String userUuid;
+
+    @Schema(description = "部门id", example = "19364")
+    @ExcelProperty("部门id")
+    private Long deptId;
+
+    @Schema(description = "部门uuid", example = "6524")
+    @ExcelProperty("部门uuid")
+    private String deptUuid;
+
+    @Schema(description = "职位")
+    @ExcelProperty("职位")
+    private String position;
+
+    @Schema(description = "入职日期")
+    @ExcelProperty("入职日期")
+    private String entryDate;
+
+    @Schema(description = "离职日期")
+    @ExcelProperty("离职日期")
+    private String turnoverDate;
+
+    @Schema(description = "离职原因", example = "不对")
+    @ExcelProperty("离职原因")
+    private String turnoverReason;
+
+    @Schema(description = "备注")
+    @ExcelProperty("备注")
+    private String remarks;
+
+    @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
+    @ExcelProperty("状态")
+    private Integer status;
+
+    @Schema(description = "数据来源,0流程添加、1手动添加")
+    @ExcelProperty("数据来源,0流程添加、1手动添加")
+    private String infoSource;
+
+    @Schema(description = "创建人员工id", example = "29636")
+    @ExcelProperty("创建人员工id")
+    private Long creatorEmployeeId;
+
+    @Schema(description = "创建人员工姓名", example = "王五")
+    @ExcelProperty("创建人员工姓名")
+    private String creatorEmployeeName;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+    @Schema(description = "租户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "23947")
+    @ExcelProperty("租户编号")
+    private Long tenantId;
+
+}

+ 75 - 0
yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/turnover/vo/RelationsTurnoverSaveReqVO.java

@@ -0,0 +1,75 @@
+package cn.iocoder.yudao.module.relations.controller.admin.turnover.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+
+import javax.validation.constraints.NotNull;
+
+@Schema(description = "管理后台 - 离职信息新增/修改 Request VO")
+@Data
+public class RelationsTurnoverSaveReqVO {
+
+    @Schema(description = "离职表单主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "5207")
+    private Long id;
+
+    @Schema(description = "uuid", example = "25144")
+    private String turnoverId;
+
+    @Schema(description = "离职人id", example = "28288")
+    private Long employeeId;
+
+    @Schema(description = "离职人uuid", example = "32274")
+    private String employeeUuid;
+
+    @Schema(description = "离职员工姓名", example = "张三")
+    private String employeeName;
+
+    @Schema(description = "续签员工手机号")
+    private String employeePhone;
+
+    @Schema(description = "用户账号id", example = "31092")
+    private Long userId;
+
+    @Schema(description = "用户账号uuid", example = "17689")
+    private String userUuid;
+
+    @Schema(description = "部门id", example = "19364")
+    private Long deptId;
+
+    @Schema(description = "部门uuid", example = "6524")
+    private String deptUuid;
+
+    @Schema(description = "职位")
+    private String position;
+
+    @Schema(description = "入职日期")
+    private String entryDate;
+
+    @Schema(description = "离职日期")
+    private String turnoverDate;
+
+    @Schema(description = "离职原因", example = "不对")
+    private String turnoverReason;
+
+    @Schema(description = "备注")
+    private String remarks;
+
+    @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
+    @NotNull(message = "状态不能为空")
+    private Integer status;
+
+    @Schema(description = "数据来源,0流程添加、1手动添加")
+    private String infoSource;
+
+    @Schema(description = "创建人员工id", example = "29636")
+    private Long creatorEmployeeId;
+
+    @Schema(description = "创建人员工姓名", example = "王五")
+    private String creatorEmployeeName;
+
+    @Schema(description = "租户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "23947")
+    @NotNull(message = "租户编号不能为空")
+    private Long tenantId;
+
+}

+ 11 - 6
yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/dal/dataobject/contractinfo/RelationsContractInfoDO.java

@@ -1,14 +1,15 @@
-package cn.iocoder.yudao.module.relations.dal.dataobject.contractinfo;
+package cn.iocoder.yudao.module.relations.dal.dataobject.contract;
 
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import java.time.LocalDate;
-import java.util.*;
-import java.time.LocalDateTime;
-import java.time.LocalDateTime;
+
 import com.baomidou.mybatisplus.annotation.*;
 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
 
+import javax.validation.constraints.NotNull;
+
 /**
  * 员工合同信息 DO
  *
@@ -22,7 +23,7 @@ import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
 @Builder
 @NoArgsConstructor
 @AllArgsConstructor
-public class RelationsContractInfoDO extends BaseDO {
+public class RelationsContractDO extends BaseDO {
 
     /**
      * 自增ID
@@ -32,7 +33,7 @@ public class RelationsContractInfoDO extends BaseDO {
     /**
      * 业务UUID
      */
-    private String infoId;
+    private String contractId;
     /**
      * 姓名
      */
@@ -81,5 +82,9 @@ public class RelationsContractInfoDO extends BaseDO {
      * 员工ID
      */
     private Long employeeId;
+    /**
+     * 租户编号
+     */
+    private Long tenantId;
 
 }

+ 115 - 0
yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/dal/dataobject/conversion/RelationsConversionDO.java

@@ -0,0 +1,115 @@
+package cn.iocoder.yudao.module.relations.dal.dataobject.conversion;
+
+import lombok.*;
+import java.util.*;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.*;
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * 转正信息 DO
+ *
+ * @author zhaopq
+ */
+@TableName("relations_conversion")
+@KeySequence("relations_conversion_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class RelationsConversionDO extends BaseDO {
+
+    /**
+     * 转正表单主键
+     */
+    @TableId
+    private Long id;
+    /**
+     * uuid
+     */
+    private String conversionId;
+    /**
+     * 转正人id
+     */
+    private Long employeeId;
+    /**
+     * 转正人uuid
+     */
+    private String employeeUuid;
+    /**
+     * 转正员工姓名
+     */
+    private String employeeName;
+    /**
+     * 转正员工手机号
+     */
+    private String employeePhone;
+    /**
+     * 用户账号id
+     */
+    private Long userId;
+    /**
+     * 用户账号uuid
+     */
+    private String userUuid;
+    /**
+     * 部门id
+     */
+    private Long deptId;
+    /**
+     * 部门uuid
+     */
+    private String deptUuid;
+    /**
+     * 职位
+     */
+    private String position;
+    /**
+     * 入职日期
+     */
+    private String entryDate;
+    /**
+     * 试用期结束日期
+     */
+    private String probationEndDate;
+    /**
+     * 转正日期
+     */
+    private String conversionDate;
+    /**
+     * 转正申请理由
+     */
+    private String conversionReason;
+    /**
+     * 工作总结
+     */
+    private String workSummary;
+    /**
+     * 备注
+     */
+    private String remarks;
+    /**
+     * 状态
+     */
+    private Integer status;
+    /**
+     * 数据来源,0流程添加、1手动添加
+     */
+    private String infoSource;
+    /**
+     * 创建人员工id
+     */
+    private Long creatorEmployeeId;
+    /**
+     * 创建人员工姓名
+     */
+    private String creatorEmployeeName;
+    /**
+     * 租户编码
+     */
+    private Long tenantId;
+
+}

+ 103 - 0
yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/dal/dataobject/entry/RelationsEntryDO.java

@@ -0,0 +1,103 @@
+package cn.iocoder.yudao.module.relations.dal.dataobject.entry;
+
+import lombok.*;
+import java.util.*;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.*;
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * 入职信息 DO
+ *
+ * @author zhaopq
+ */
+@TableName("relations_entry")
+@KeySequence("relations_entry_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class RelationsEntryDO extends BaseDO {
+
+    /**
+     * 入职表单主键
+     */
+    @TableId
+    private Long id;
+    /**
+     * uuid
+     */
+    private String entryId;
+    /**
+     * 入职人
+     */
+    private String entryName;
+    /**
+     * 部门
+     */
+    private String deptId;
+    /**
+     * 职位
+     */
+    private String position;
+    /**
+     * 员工类型
+     */
+    private String employeeType;
+    /**
+     * 性别
+     */
+    private String gender;
+    /**
+     * 出身日期
+     */
+    private String birthday;
+    /**
+     * 联系电话
+     */
+    private String contactNumber;
+    /**
+     * 电子邮箱
+     */
+    private String email;
+    /**
+     * 教育背景
+     */
+    private String education;
+    /**
+     * 工作经验
+     */
+    private String workExperience;
+    /**
+     * 入职日期
+     */
+    private String entryDate;
+    /**
+     * 备注
+     */
+    private String remarks;
+    /**
+     * 状态
+     */
+    private Integer status;
+    /**
+     * 数据来源,0流程添加、1手动添加
+     */
+    private String infoSource;
+    /**
+     * 创建人员工id
+     */
+    private Long creatorEmployeeId;
+    /**
+     * 创建人员工姓名
+     */
+    private String creatorEmployeeName;
+    /**
+     * 租户编码
+     */
+    private Long tenantId;
+
+}

+ 123 - 0
yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/dal/dataobject/renew/RelationsRenewDO.java

@@ -0,0 +1,123 @@
+package cn.iocoder.yudao.module.relations.dal.dataobject.renew;
+
+import lombok.*;
+import java.util.*;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.*;
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * 续签信息 DO
+ *
+ * @author zhaopq
+ */
+@TableName("relations_renew")
+@KeySequence("relations_renew_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class RelationsRenewDO extends BaseDO {
+
+    /**
+     * 续签表单主键
+     */
+    @TableId
+    private Long id;
+    /**
+     * uuid
+     */
+    private String renewId;
+    /**
+     * 续签人id
+     */
+    private Long employeeId;
+    /**
+     * 续签人uuid
+     */
+    private String employeeUuid;
+    /**
+     * 续签员工姓名
+     */
+    private String employeeName;
+    /**
+     * 续签员工手机号
+     */
+    private String employeePhone;
+    /**
+     * 用户账号id
+     */
+    private Long userId;
+    /**
+     * 用户账号uuid
+     */
+    private String userUuid;
+    /**
+     * 部门id
+     */
+    private Long deptId;
+    /**
+     * 部门uuid
+     */
+    private String deptUuid;
+    /**
+     * 职位
+     */
+    private String position;
+    /**
+     * 原合同开始日期
+     */
+    private String oldContractStartDate;
+    /**
+     * 原合同结束日期
+     */
+    private String oldContractEndDate;
+    /**
+     * 续签合同期限
+     */
+    private String renewPeriod;
+    /**
+     * 续签开始日期
+     */
+    private String renewContractStartDate;
+    /**
+     * 续签结束日期
+     */
+    private String renewContractEndDate;
+    /**
+     * 续签理由
+     */
+    private String renewReason;
+    /**
+     * 工作表现
+     */
+    private String workPerformance;
+    /**
+     * 备注
+     */
+    private String remarks;
+    /**
+     * 状态
+     */
+    private Integer status;
+    /**
+     * 数据来源,0流程添加、1手动添加
+     */
+    private String infoSource;
+    /**
+     * 创建人员工id
+     */
+    private Long creatorEmployeeId;
+    /**
+     * 创建人员工姓名
+     */
+    private String creatorEmployeeName;
+    /**
+     * 租户编码
+     */
+    private Long tenantId;
+
+}

+ 107 - 0
yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/dal/dataobject/turnover/RelationsTurnoverDO.java

@@ -0,0 +1,107 @@
+package cn.iocoder.yudao.module.relations.dal.dataobject.turnover;
+
+import lombok.*;
+import java.util.*;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.*;
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * 离职信息 DO
+ *
+ * @author zhaopq
+ */
+@TableName("relations_turnover")
+@KeySequence("relations_turnover_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class RelationsTurnoverDO extends BaseDO {
+
+    /**
+     * 离职表单主键
+     */
+    @TableId
+    private Long id;
+    /**
+     * uuid
+     */
+    private String turnoverId;
+    /**
+     * 离职人id
+     */
+    private Long employeeId;
+    /**
+     * 离职人uuid
+     */
+    private String employeeUuid;
+    /**
+     * 离职员工姓名
+     */
+    private String employeeName;
+    /**
+     * 续签员工手机号
+     */
+    private String employeePhone;
+    /**
+     * 用户账号id
+     */
+    private Long userId;
+    /**
+     * 用户账号uuid
+     */
+    private String userUuid;
+    /**
+     * 部门id
+     */
+    private Long deptId;
+    /**
+     * 部门uuid
+     */
+    private String deptUuid;
+    /**
+     * 职位
+     */
+    private String position;
+    /**
+     * 入职日期
+     */
+    private String entryDate;
+    /**
+     * 离职日期
+     */
+    private String turnoverDate;
+    /**
+     * 离职原因
+     */
+    private String turnoverReason;
+    /**
+     * 备注
+     */
+    private String remarks;
+    /**
+     * 状态
+     */
+    private Integer status;
+    /**
+     * 数据来源,0流程添加、1手动添加
+     */
+    private String infoSource;
+    /**
+     * 创建人员工id
+     */
+    private Long creatorEmployeeId;
+    /**
+     * 创建人员工姓名
+     */
+    private String creatorEmployeeName;
+    /**
+     * 租户编码
+     */
+    private Long tenantId;
+
+}

+ 60 - 0
yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/dal/mysql/contract/RelationsContractMapper.java

@@ -0,0 +1,60 @@
+package cn.iocoder.yudao.module.relations.dal.mysql.contract;
+
+import java.time.LocalDate;
+import java.util.*;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.module.relations.controller.admin.contract.vo.RelationsContractPageReqVO;
+import cn.iocoder.yudao.module.relations.dal.dataobject.contract.RelationsContractDO;
+import cn.iocoder.yudao.module.relations.dal.dataobject.conversion.RelationsConversionDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 员工合同信息 Mapper
+ *
+ * @author zhaopq
+ */
+@Mapper
+public interface RelationsContractMapper extends BaseMapperX<RelationsContractDO> {
+
+    default PageResult<RelationsContractDO> selectPage(RelationsContractPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<RelationsContractDO>()
+                .eqIfPresent(RelationsContractDO::getContractId, reqVO.getContractId())
+                .likeIfPresent(RelationsContractDO::getName, reqVO.getName())
+                .eqIfPresent(RelationsContractDO::getDeptId, reqVO.getDeptId())
+                .likeIfPresent(RelationsContractDO::getDeptName, reqVO.getDeptName())
+                .eqIfPresent(RelationsContractDO::getPostId, reqVO.getPostId())
+                .eqIfPresent(RelationsContractDO::getPosition, reqVO.getPosition())
+                .eqIfPresent(RelationsContractDO::getEmployeeNumber, reqVO.getEmployeeNumber())
+                .betweenIfPresent(RelationsContractDO::getContractStartDate, reqVO.getContractStartDate())
+                .betweenIfPresent(RelationsContractDO::getContractEndDate, reqVO.getContractEndDate())
+                .eqIfPresent(RelationsContractDO::getContractDeadline, reqVO.getContractDeadline())
+                .eqIfPresent(RelationsContractDO::getRemarks, reqVO.getRemarks())
+                .eqIfPresent(RelationsContractDO::getStatus, reqVO.getStatus())
+                .betweenIfPresent(RelationsContractDO::getCreateTime, reqVO.getCreateTime())
+                .eqIfPresent(RelationsContractDO::getEmployeeId, reqVO.getEmployeeId())
+                .eqIfPresent(RelationsContractDO::getTenantId, reqVO.getTenantId())
+                .orderByDesc(RelationsContractDO::getId));
+    }
+
+    default List<RelationsContractDO> selectListByStatusAndEmployeeId(Integer status, Long employeeId) {
+        return selectList(new LambdaQueryWrapperX<RelationsContractDO>()
+                .eqIfPresent(RelationsContractDO::getStatus, status)
+                .eqIfPresent(RelationsContractDO::getEmployeeId, employeeId));
+    }
+
+    default List<RelationsContractDO> selectListByStatusAndEffectiveDateGe(Integer status, LocalDate now) {
+        return selectList(new LambdaQueryWrapperX<RelationsContractDO>()
+                .eqIfPresent(RelationsContractDO::getStatus, status)
+                .geIfPresent(RelationsContractDO::getContractStartDate, now));
+    }
+
+    default List<RelationsContractDO> selectListByStatusAndEmployeeIds(Integer status, Set<Long> employeeIds) {
+            return selectList(new LambdaQueryWrapperX<RelationsContractDO>()
+                    .eqIfPresent(RelationsContractDO::getStatus, status)
+                    .inIfPresent(RelationsContractDO::getEmployeeId, employeeIds));
+    }
+
+}

+ 0 - 58
yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/dal/mysql/contractinfo/RelationsContractInfoMapper.java

@@ -1,58 +0,0 @@
-package cn.iocoder.yudao.module.relations.dal.mysql.contractinfo;
-
-import java.time.LocalDate;
-import java.util.*;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
-import cn.iocoder.yudao.module.relations.controller.admin.contractinfo.vo.RelationsContractInfoPageReqVO;
-import cn.iocoder.yudao.module.relations.dal.dataobject.contractinfo.RelationsContractInfoDO;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * 员工合同信息 Mapper
- *
- * @author zhaopq
- */
-@Mapper
-public interface RelationsContractInfoMapper extends BaseMapperX<RelationsContractInfoDO> {
-
-    default PageResult<RelationsContractInfoDO> selectPage(RelationsContractInfoPageReqVO reqVO) {
-        return selectPage(reqVO, new LambdaQueryWrapperX<RelationsContractInfoDO>()
-                .eqIfPresent(RelationsContractInfoDO::getInfoId, reqVO.getInfoId())
-                .likeIfPresent(RelationsContractInfoDO::getName, reqVO.getName())
-                .eqIfPresent(RelationsContractInfoDO::getDeptId, reqVO.getDeptId())
-                .likeIfPresent(RelationsContractInfoDO::getDeptName, reqVO.getDeptName())
-                .eqIfPresent(RelationsContractInfoDO::getPostId, reqVO.getPostId())
-                .eqIfPresent(RelationsContractInfoDO::getPosition, reqVO.getPosition())
-                .eqIfPresent(RelationsContractInfoDO::getEmployeeNumber, reqVO.getEmployeeNumber())
-                .betweenIfPresent(RelationsContractInfoDO::getContractStartDate, reqVO.getContractStartDate())
-                .betweenIfPresent(RelationsContractInfoDO::getContractEndDate, reqVO.getContractEndDate())
-                .eqIfPresent(RelationsContractInfoDO::getContractDeadline, reqVO.getContractDeadline())
-                .eqIfPresent(RelationsContractInfoDO::getRemarks, reqVO.getRemarks())
-                .eqIfPresent(RelationsContractInfoDO::getStatus, reqVO.getStatus())
-                .betweenIfPresent(RelationsContractInfoDO::getCreateTime, reqVO.getCreateTime())
-                .eqIfPresent(RelationsContractInfoDO::getEmployeeId, reqVO.getEmployeeId())
-                .orderByDesc(RelationsContractInfoDO::getId));
-    }
-
-    default List<RelationsContractInfoDO> selectListByStatusAndEmployeeId(Integer status, Long employeeId) {
-        return selectList(new LambdaQueryWrapperX<RelationsContractInfoDO>()
-                .eqIfPresent(RelationsContractInfoDO::getStatus, status)
-                .eqIfPresent(RelationsContractInfoDO::getEmployeeId, employeeId));
-    }
-
-    default List<RelationsContractInfoDO> selectListByStatusAndEffectiveDateGe(Integer status, LocalDate now) {
-        return selectList(new LambdaQueryWrapperX<RelationsContractInfoDO>()
-                .eqIfPresent(RelationsContractInfoDO::getStatus, status)
-                .geIfPresent(RelationsContractInfoDO::getContractStartDate, now));
-    }
-
-    default List<RelationsContractInfoDO> selectListByStatusAndEmployeeIds(Integer status, Set<Long> employeeIds) {
-            return selectList(new LambdaQueryWrapperX<RelationsContractInfoDO>()
-                    .eqIfPresent(RelationsContractInfoDO::getStatus, status)
-                    .inIfPresent(RelationsContractInfoDO::getEmployeeId, employeeIds));
-    }
-
-}

+ 47 - 0
yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/dal/mysql/conversion/RelationsConversionMapper.java

@@ -0,0 +1,47 @@
+package cn.iocoder.yudao.module.relations.dal.mysql.conversion;
+
+import java.util.*;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.module.relations.dal.dataobject.conversion.RelationsConversionDO;
+import org.apache.ibatis.annotations.Mapper;
+import cn.iocoder.yudao.module.relations.controller.admin.conversion.vo.*;
+
+/**
+ * 转正信息 Mapper
+ *
+ * @author zhaopq
+ */
+@Mapper
+public interface RelationsConversionMapper extends BaseMapperX<RelationsConversionDO> {
+
+    default PageResult<RelationsConversionDO> selectPage(RelationsConversionPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<RelationsConversionDO>()
+                .eqIfPresent(RelationsConversionDO::getConversionId, reqVO.getConversionId())
+                .eqIfPresent(RelationsConversionDO::getEmployeeId, reqVO.getEmployeeId())
+                .eqIfPresent(RelationsConversionDO::getEmployeeUuid, reqVO.getEmployeeUuid())
+                .likeIfPresent(RelationsConversionDO::getEmployeeName, reqVO.getEmployeeName())
+                .eqIfPresent(RelationsConversionDO::getEmployeePhone, reqVO.getEmployeePhone())
+                .eqIfPresent(RelationsConversionDO::getUserId, reqVO.getUserId())
+                .eqIfPresent(RelationsConversionDO::getUserUuid, reqVO.getUserUuid())
+                .eqIfPresent(RelationsConversionDO::getDeptId, reqVO.getDeptId())
+                .eqIfPresent(RelationsConversionDO::getDeptUuid, reqVO.getDeptUuid())
+                .eqIfPresent(RelationsConversionDO::getPosition, reqVO.getPosition())
+                .betweenIfPresent(RelationsConversionDO::getEntryDate, reqVO.getEntryDate())
+                .betweenIfPresent(RelationsConversionDO::getProbationEndDate, reqVO.getProbationEndDate())
+                .betweenIfPresent(RelationsConversionDO::getConversionDate, reqVO.getConversionDate())
+                .eqIfPresent(RelationsConversionDO::getConversionReason, reqVO.getConversionReason())
+                .eqIfPresent(RelationsConversionDO::getWorkSummary, reqVO.getWorkSummary())
+                .eqIfPresent(RelationsConversionDO::getRemarks, reqVO.getRemarks())
+                .eqIfPresent(RelationsConversionDO::getStatus, reqVO.getStatus())
+                .eqIfPresent(RelationsConversionDO::getInfoSource, reqVO.getInfoSource())
+                .eqIfPresent(RelationsConversionDO::getCreatorEmployeeId, reqVO.getCreatorEmployeeId())
+                .likeIfPresent(RelationsConversionDO::getCreatorEmployeeName, reqVO.getCreatorEmployeeName())
+                .betweenIfPresent(RelationsConversionDO::getCreateTime, reqVO.getCreateTime())
+                .eqIfPresent(RelationsConversionDO::getTenantId, reqVO.getTenantId())
+                .orderByDesc(RelationsConversionDO::getId));
+    }
+
+}

+ 44 - 0
yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/dal/mysql/entry/RelationsEntryMapper.java

@@ -0,0 +1,44 @@
+package cn.iocoder.yudao.module.relations.dal.mysql.entry;
+
+import java.util.*;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.module.relations.dal.dataobject.entry.RelationsEntryDO;
+import org.apache.ibatis.annotations.Mapper;
+import cn.iocoder.yudao.module.relations.controller.admin.entry.vo.*;
+
+/**
+ * 入职信息 Mapper
+ *
+ * @author zhaopq
+ */
+@Mapper
+public interface RelationsEntryMapper extends BaseMapperX<RelationsEntryDO> {
+
+    default PageResult<RelationsEntryDO> selectPage(RelationsEntryPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<RelationsEntryDO>()
+                .eqIfPresent(RelationsEntryDO::getEntryId, reqVO.getEntryId())
+                .likeIfPresent(RelationsEntryDO::getEntryName, reqVO.getEntryName())
+                .eqIfPresent(RelationsEntryDO::getDeptId, reqVO.getDeptId())
+                .eqIfPresent(RelationsEntryDO::getPosition, reqVO.getPosition())
+                .eqIfPresent(RelationsEntryDO::getEmployeeType, reqVO.getEmployeeType())
+                .eqIfPresent(RelationsEntryDO::getGender, reqVO.getGender())
+                .eqIfPresent(RelationsEntryDO::getBirthday, reqVO.getBirthday())
+                .eqIfPresent(RelationsEntryDO::getContactNumber, reqVO.getContactNumber())
+                .eqIfPresent(RelationsEntryDO::getEmail, reqVO.getEmail())
+                .eqIfPresent(RelationsEntryDO::getEducation, reqVO.getEducation())
+                .eqIfPresent(RelationsEntryDO::getWorkExperience, reqVO.getWorkExperience())
+                .betweenIfPresent(RelationsEntryDO::getEntryDate, reqVO.getEntryDate())
+                .eqIfPresent(RelationsEntryDO::getRemarks, reqVO.getRemarks())
+                .eqIfPresent(RelationsEntryDO::getStatus, reqVO.getStatus())
+                .eqIfPresent(RelationsEntryDO::getInfoSource, reqVO.getInfoSource())
+                .eqIfPresent(RelationsEntryDO::getCreatorEmployeeId, reqVO.getCreatorEmployeeId())
+                .likeIfPresent(RelationsEntryDO::getCreatorEmployeeName, reqVO.getCreatorEmployeeName())
+                .betweenIfPresent(RelationsEntryDO::getCreateTime, reqVO.getCreateTime())
+                .eqIfPresent(RelationsEntryDO::getTenantId, reqVO.getTenantId())
+                .orderByDesc(RelationsEntryDO::getId));
+    }
+
+}

+ 49 - 0
yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/dal/mysql/renew/RelationsRenewMapper.java

@@ -0,0 +1,49 @@
+package cn.iocoder.yudao.module.relations.dal.mysql.renew;
+
+import java.util.*;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.module.relations.dal.dataobject.renew.RelationsRenewDO;
+import org.apache.ibatis.annotations.Mapper;
+import cn.iocoder.yudao.module.relations.controller.admin.renew.vo.*;
+
+/**
+ * 续签信息 Mapper
+ *
+ * @author zhaopq
+ */
+@Mapper
+public interface RelationsRenewMapper extends BaseMapperX<RelationsRenewDO> {
+
+    default PageResult<RelationsRenewDO> selectPage(RelationsRenewPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<RelationsRenewDO>()
+                .eqIfPresent(RelationsRenewDO::getRenewId, reqVO.getRenewId())
+                .eqIfPresent(RelationsRenewDO::getEmployeeId, reqVO.getEmployeeId())
+                .eqIfPresent(RelationsRenewDO::getEmployeeUuid, reqVO.getEmployeeUuid())
+                .likeIfPresent(RelationsRenewDO::getEmployeeName, reqVO.getEmployeeName())
+                .eqIfPresent(RelationsRenewDO::getEmployeePhone, reqVO.getEmployeePhone())
+                .eqIfPresent(RelationsRenewDO::getUserId, reqVO.getUserId())
+                .eqIfPresent(RelationsRenewDO::getUserUuid, reqVO.getUserUuid())
+                .eqIfPresent(RelationsRenewDO::getDeptId, reqVO.getDeptId())
+                .eqIfPresent(RelationsRenewDO::getDeptUuid, reqVO.getDeptUuid())
+                .eqIfPresent(RelationsRenewDO::getPosition, reqVO.getPosition())
+                .betweenIfPresent(RelationsRenewDO::getOldContractStartDate, reqVO.getOldContractStartDate())
+                .betweenIfPresent(RelationsRenewDO::getOldContractEndDate, reqVO.getOldContractEndDate())
+                .eqIfPresent(RelationsRenewDO::getRenewPeriod, reqVO.getRenewPeriod())
+                .betweenIfPresent(RelationsRenewDO::getRenewContractStartDate, reqVO.getRenewContractStartDate())
+                .betweenIfPresent(RelationsRenewDO::getRenewContractEndDate, reqVO.getRenewContractEndDate())
+                .eqIfPresent(RelationsRenewDO::getRenewReason, reqVO.getRenewReason())
+                .eqIfPresent(RelationsRenewDO::getWorkPerformance, reqVO.getWorkPerformance())
+                .eqIfPresent(RelationsRenewDO::getRemarks, reqVO.getRemarks())
+                .eqIfPresent(RelationsRenewDO::getStatus, reqVO.getStatus())
+                .eqIfPresent(RelationsRenewDO::getInfoSource, reqVO.getInfoSource())
+                .eqIfPresent(RelationsRenewDO::getCreatorEmployeeId, reqVO.getCreatorEmployeeId())
+                .likeIfPresent(RelationsRenewDO::getCreatorEmployeeName, reqVO.getCreatorEmployeeName())
+                .betweenIfPresent(RelationsRenewDO::getCreateTime, reqVO.getCreateTime())
+                .eqIfPresent(RelationsRenewDO::getTenantId, reqVO.getTenantId())
+                .orderByDesc(RelationsRenewDO::getId));
+    }
+
+}

+ 45 - 0
yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/dal/mysql/turnover/RelationsTurnoverMapper.java

@@ -0,0 +1,45 @@
+package cn.iocoder.yudao.module.relations.dal.mysql.turnover;
+
+import java.util.*;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.module.relations.dal.dataobject.turnover.RelationsTurnoverDO;
+import org.apache.ibatis.annotations.Mapper;
+import cn.iocoder.yudao.module.relations.controller.admin.turnover.vo.*;
+
+/**
+ * 离职信息 Mapper
+ *
+ * @author zhaopq
+ */
+@Mapper
+public interface RelationsTurnoverMapper extends BaseMapperX<RelationsTurnoverDO> {
+
+    default PageResult<RelationsTurnoverDO> selectPage(RelationsTurnoverPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<RelationsTurnoverDO>()
+                .eqIfPresent(RelationsTurnoverDO::getTurnoverId, reqVO.getTurnoverId())
+                .eqIfPresent(RelationsTurnoverDO::getEmployeeId, reqVO.getEmployeeId())
+                .eqIfPresent(RelationsTurnoverDO::getEmployeeUuid, reqVO.getEmployeeUuid())
+                .likeIfPresent(RelationsTurnoverDO::getEmployeeName, reqVO.getEmployeeName())
+                .eqIfPresent(RelationsTurnoverDO::getEmployeePhone, reqVO.getEmployeePhone())
+                .eqIfPresent(RelationsTurnoverDO::getUserId, reqVO.getUserId())
+                .eqIfPresent(RelationsTurnoverDO::getUserUuid, reqVO.getUserUuid())
+                .eqIfPresent(RelationsTurnoverDO::getDeptId, reqVO.getDeptId())
+                .eqIfPresent(RelationsTurnoverDO::getDeptUuid, reqVO.getDeptUuid())
+                .eqIfPresent(RelationsTurnoverDO::getPosition, reqVO.getPosition())
+                .betweenIfPresent(RelationsTurnoverDO::getEntryDate, reqVO.getEntryDate())
+                .betweenIfPresent(RelationsTurnoverDO::getTurnoverDate, reqVO.getTurnoverDate())
+                .eqIfPresent(RelationsTurnoverDO::getTurnoverReason, reqVO.getTurnoverReason())
+                .eqIfPresent(RelationsTurnoverDO::getRemarks, reqVO.getRemarks())
+                .eqIfPresent(RelationsTurnoverDO::getStatus, reqVO.getStatus())
+                .eqIfPresent(RelationsTurnoverDO::getInfoSource, reqVO.getInfoSource())
+                .eqIfPresent(RelationsTurnoverDO::getCreatorEmployeeId, reqVO.getCreatorEmployeeId())
+                .likeIfPresent(RelationsTurnoverDO::getCreatorEmployeeName, reqVO.getCreatorEmployeeName())
+                .betweenIfPresent(RelationsTurnoverDO::getCreateTime, reqVO.getCreateTime())
+                .eqIfPresent(RelationsTurnoverDO::getTenantId, reqVO.getTenantId())
+                .orderByDesc(RelationsTurnoverDO::getId));
+    }
+
+}

+ 4 - 6
yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/job/contractinfo/RelationsContractInfoEffectiveJob.java

@@ -1,11 +1,9 @@
-package cn.iocoder.yudao.module.relations.job.contractinfo;
+package cn.iocoder.yudao.module.relations.job.contract;
 
 import cn.hutool.core.util.StrUtil;
 import cn.iocoder.yudao.framework.quartz.core.handler.JobHandler;
-import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
 import cn.iocoder.yudao.framework.tenant.core.job.TenantJob;
-import cn.iocoder.yudao.module.relations.service.contractinfo.RelationsContractInfoService;
-import org.springframework.stereotype.Component;
+import cn.iocoder.yudao.module.relations.service.contract.RelationsContractService;
 
 import javax.annotation.Resource;
 
@@ -17,10 +15,10 @@ import javax.annotation.Resource;
  * @author zhaopq
  */
 //@Component
-public class RelationsContractInfoEffectiveJob implements JobHandler {
+public class RelationsContractEffectiveJob implements JobHandler {
 
     @Resource
-    private RelationsContractInfoService infoService;
+    private RelationsContractService infoService;
 
     @Override
     @TenantJob

+ 9 - 9
yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/service/contractinfo/RelationsContractInfoService.java

@@ -1,10 +1,10 @@
-package cn.iocoder.yudao.module.relations.service.contractinfo;
+package cn.iocoder.yudao.module.relations.service.contract;
 
 
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.module.relations.controller.admin.contractinfo.vo.RelationsContractInfoPageReqVO;
-import cn.iocoder.yudao.module.relations.controller.admin.contractinfo.vo.RelationsContractInfoSaveReqVO;
-import cn.iocoder.yudao.module.relations.dal.dataobject.contractinfo.RelationsContractInfoDO;
+import cn.iocoder.yudao.module.relations.controller.admin.contract.vo.RelationsContractPageReqVO;
+import cn.iocoder.yudao.module.relations.controller.admin.contract.vo.RelationsContractSaveReqVO;
+import cn.iocoder.yudao.module.relations.dal.dataobject.contract.RelationsContractDO;
 
 import javax.validation.Valid;
 
@@ -13,7 +13,7 @@ import javax.validation.Valid;
  *
  * @author zhaopq
  */
-public interface RelationsContractInfoService {
+public interface RelationsContractService {
 
     /**
      * 创建员工合同信息
@@ -21,14 +21,14 @@ public interface RelationsContractInfoService {
      * @param createReqVO 创建信息
      * @return 编号
      */
-    Long createContractInfo(@Valid RelationsContractInfoSaveReqVO createReqVO);
+    Long createContractInfo(@Valid RelationsContractSaveReqVO createReqVO);
 
     /**
      * 更新员工合同信息
      *
      * @param updateReqVO 更新信息
      */
-    void updateContractInfo(@Valid RelationsContractInfoSaveReqVO updateReqVO);
+    void updateContractInfo(@Valid RelationsContractSaveReqVO updateReqVO);
 
     /**
      * 删除员工合同信息
@@ -43,7 +43,7 @@ public interface RelationsContractInfoService {
      * @param id 编号
      * @return 员工合同信息
      */
-    RelationsContractInfoDO getContractInfo(Long id);
+    RelationsContractDO getContractInfo(Long id);
 
     /**
      * 获得员工合同信息分页
@@ -51,7 +51,7 @@ public interface RelationsContractInfoService {
      * @param pageReqVO 分页查询
      * @return 员工合同信息分页
      */
-    PageResult<RelationsContractInfoDO> getContractInfoPage(RelationsContractInfoPageReqVO pageReqVO);
+    PageResult<RelationsContractDO> getContractInfoPage(RelationsContractPageReqVO pageReqVO);
 
     /**
      * 将已过期的合同,状态修改为失效

+ 44 - 27
yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/service/contractinfo/RelationsContractInfoServiceImpl.java

@@ -1,13 +1,16 @@
-package cn.iocoder.yudao.module.relations.service.contractinfo;
+package cn.iocoder.yudao.module.relations.service.contract;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.IdUtil;
+import cn.hutool.core.util.StrUtil;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
-import cn.iocoder.yudao.module.relations.controller.admin.contractinfo.vo.RelationsContractInfoPageReqVO;
-import cn.iocoder.yudao.module.relations.controller.admin.contractinfo.vo.RelationsContractInfoSaveReqVO;
-import cn.iocoder.yudao.module.relations.dal.dataobject.contractinfo.RelationsContractInfoDO;
-import cn.iocoder.yudao.module.relations.dal.mysql.contractinfo.RelationsContractInfoMapper;
+import cn.iocoder.yudao.module.infra.api.file.FileApi;
+import cn.iocoder.yudao.module.relations.controller.admin.contract.vo.RelationsContractPageReqVO;
+import cn.iocoder.yudao.module.relations.controller.admin.contract.vo.RelationsContractSaveReqVO;
+import cn.iocoder.yudao.module.relations.dal.dataobject.contract.RelationsContractDO;
+import cn.iocoder.yudao.module.relations.dal.mysql.contract.RelationsContractMapper;
 import cn.iocoder.yudao.module.relations.enums.contractinfo.ContractInfoStatusEnum;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
@@ -29,21 +32,23 @@ import static cn.iocoder.yudao.module.relations.enums.ErrorCodeConstants.RELATIO
  */
 @Service
 @Validated
-public class RelationsContractInfoServiceImpl implements RelationsContractInfoService {
+public class RelationsContractServiceImpl implements RelationsContractService {
 
     @Resource
-    private RelationsContractInfoMapper contractInfoMapper;
+    private RelationsContractMapper contractInfoMapper;
+    @Resource
+    private FileApi fileApi;
 
     @Override
     @TenantIgnore
-    public Long createContractInfo(RelationsContractInfoSaveReqVO createReqVO) {
+    public Long createContractInfo(RelationsContractSaveReqVO createReqVO) {
         // 查询该员工是否有合同存在
-        List<RelationsContractInfoDO> list = contractInfoMapper.selectPage(new RelationsContractInfoPageReqVO().setEmployeeId(createReqVO.getEmployeeId())).getList();
+        List<RelationsContractDO> list = contractInfoMapper.selectPage(new RelationsContractPageReqVO().setEmployeeId(createReqVO.getEmployeeId())).getList();
         // 检查查询结果是否为空
         if (!CollUtil.isEmpty(list)) {
             // 更新状态
-            List<RelationsContractInfoDO> toUpdate = new ArrayList<>();
-            for (RelationsContractInfoDO contract : list) {
+            List<RelationsContractDO> toUpdate = new ArrayList<>();
+            for (RelationsContractDO contract : list) {
                 contract.setStatus(ContractInfoStatusEnum.HISTORY.getStatus());
                 toUpdate.add(contract);
             }
@@ -53,22 +58,26 @@ public class RelationsContractInfoServiceImpl implements RelationsContractInfoSe
             }
         }
         // 插入
-        // 生成id
-        createReqVO.setInfoId(IdUtil.fastSimpleUUID());
-        RelationsContractInfoDO contractInfo = BeanUtils.toBean(createReqVO, RelationsContractInfoDO.class);
+        String infoId = IdUtil.fastSimpleUUID();
+        createReqVO.setContractId(infoId);
+        RelationsContractDO contractInfo = BeanUtils.toBean(createReqVO, RelationsContractDO.class);
         contractInfo.setStatus(ContractInfoStatusEnum.LATEST.getStatus());
         contractInfoMapper.insert(contractInfo);
+        // 保存业务uuid到附件中
+        this.saveFileList(createReqVO.getFileIdList(), infoId);
         // 返回
         return contractInfo.getId();
     }
 
     @Override
     @TenantIgnore
-    public void updateContractInfo(RelationsContractInfoSaveReqVO updateReqVO) {
+    public void updateContractInfo(RelationsContractSaveReqVO updateReqVO) {
         // 校验存在
         validateContractInfoExists(updateReqVO.getId());
+        // 保存业务uuid到附件中
+        this.saveFileList(updateReqVO.getFileIdList(), updateReqVO.getContractId());
         // 更新
-        RelationsContractInfoDO updateObj = BeanUtils.toBean(updateReqVO, RelationsContractInfoDO.class);
+        RelationsContractDO updateObj = BeanUtils.toBean(updateReqVO, RelationsContractDO.class);
         contractInfoMapper.updateById(updateObj);
     }
 
@@ -90,13 +99,13 @@ public class RelationsContractInfoServiceImpl implements RelationsContractInfoSe
 
     @Override
     @TenantIgnore
-    public RelationsContractInfoDO getContractInfo(Long id) {
+    public RelationsContractDO getContractInfo(Long id) {
         return contractInfoMapper.selectById(id);
     }
 
     @Override
     @TenantIgnore
-    public PageResult<RelationsContractInfoDO> getContractInfoPage(RelationsContractInfoPageReqVO pageReqVO) {
+    public PageResult<RelationsContractDO> getContractInfoPage(RelationsContractPageReqVO pageReqVO) {
         return contractInfoMapper.selectPage(pageReqVO);
     }
 
@@ -104,28 +113,28 @@ public class RelationsContractInfoServiceImpl implements RelationsContractInfoSe
     @TenantIgnore
     public int effectiveContractInfo() {
         // 1. 查询状态为已完成且已到合同开始日期的合同
-        List<RelationsContractInfoDO> doneContracts = contractInfoMapper.selectListByStatusAndEffectiveDateGe(
+        List<RelationsContractDO> doneContracts = contractInfoMapper.selectListByStatusAndEffectiveDateGe(
                 null, LocalDate.now());
         if (CollUtil.isEmpty(doneContracts)) {
             return 0;
         }
         // 2. 收集所有需要查询的员工ID
         Set<Long> employeeIds = new HashSet<>();
-        for (RelationsContractInfoDO contract : doneContracts) {
+        for (RelationsContractDO contract : doneContracts) {
             employeeIds.add(contract.getEmployeeId());
         }
         // 3. 一次性查询所有员工ID对应的“有效”状态合同
-        List<RelationsContractInfoDO> contracts = contractInfoMapper.selectListByStatusAndEmployeeIds(
+        List<RelationsContractDO> contracts = contractInfoMapper.selectListByStatusAndEmployeeIds(
                 null, employeeIds);
-        Map<Long, List<RelationsContractInfoDO>> employeeToEffectiveContracts = contracts.stream()
-                .collect(Collectors.groupingBy(RelationsContractInfoDO::getEmployeeId));
+        Map<Long, List<RelationsContractDO>> employeeToEffectiveContracts = contracts.stream()
+                .collect(Collectors.groupingBy(RelationsContractDO::getEmployeeId));
         // 4. 更新状态
-        List<RelationsContractInfoDO> toUpdate = new ArrayList<>();
-        for (RelationsContractInfoDO contract : doneContracts) {
-            List<RelationsContractInfoDO> effectives = employeeToEffectiveContracts.getOrDefault(contract.getEmployeeId(), Collections.emptyList());
+        List<RelationsContractDO> toUpdate = new ArrayList<>();
+        for (RelationsContractDO contract : doneContracts) {
+            List<RelationsContractDO> effectives = employeeToEffectiveContracts.getOrDefault(contract.getEmployeeId(), Collections.emptyList());
 //            List<RelationsContractInfoDO> effectives = contractInfoMapper.selectListByStatusAndEmployeeId(ContractInfoStatusEnum.EFFECTIVE.getStatus(), contract.getEmployeeId());
             // 标记所有当前有效的合同为已弃用
-            for (RelationsContractInfoDO effective : effectives) {
+            for (RelationsContractDO effective : effectives) {
                 effective.setStatus(ContractInfoStatusEnum.HISTORY.getStatus());
                 toUpdate.add(effective);
             }
@@ -141,5 +150,13 @@ public class RelationsContractInfoServiceImpl implements RelationsContractInfoSe
         return doneContracts.size();
     }
 
+    /**
+     * 保存业务uuid到附件中
+     */
+    private void saveFileList(List<Long> fileIdList, String serviceId) {
+        if (CollectionUtil.isNotEmpty(fileIdList) && StrUtil.isNotEmpty(serviceId)) {
+            fileApi.updateFileBiz(fileIdList, serviceId);
+        }
+    }
 
 }

+ 56 - 0
yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/service/conversion/RelationsConversionService.java

@@ -0,0 +1,56 @@
+package cn.iocoder.yudao.module.relations.service.conversion;
+
+import java.util.*;
+import cn.iocoder.yudao.module.relations.controller.admin.conversion.vo.*;
+import cn.iocoder.yudao.module.relations.dal.dataobject.conversion.RelationsConversionDO;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+
+import javax.validation.Valid;
+
+/**
+ * 转正信息 Service 接口
+ *
+ * @author zhaopq
+ */
+public interface RelationsConversionService {
+
+    /**
+     * 创建转正信息
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createConversion(@Valid RelationsConversionSaveReqVO createReqVO);
+
+    /**
+     * 更新转正信息
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateConversion(@Valid RelationsConversionSaveReqVO updateReqVO);
+
+    /**
+     * 删除转正信息
+     *
+     * @param id 编号
+     */
+    void deleteConversion(Long id);
+
+    /**
+     * 获得转正信息
+     *
+     * @param id 编号
+     * @return 转正信息
+     */
+    RelationsConversionDO getConversion(Long id);
+
+    /**
+     * 获得转正信息分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 转正信息分页
+     */
+    PageResult<RelationsConversionDO> getConversionPage(RelationsConversionPageReqVO pageReqVO);
+
+}

+ 72 - 0
yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/service/conversion/RelationsConversionServiceImpl.java

@@ -0,0 +1,72 @@
+package cn.iocoder.yudao.module.relations.service.conversion;
+
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import cn.iocoder.yudao.module.relations.controller.admin.conversion.vo.*;
+import cn.iocoder.yudao.module.relations.dal.dataobject.conversion.RelationsConversionDO;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+
+import cn.iocoder.yudao.module.relations.dal.mysql.conversion.RelationsConversionMapper;
+
+import javax.annotation.Resource;
+
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.iocoder.yudao.module.relations.enums.ErrorCodeConstants.*;
+
+/**
+ * 转正信息 Service 实现类
+ *
+ * @author zhaopq
+ */
+@Service
+@Validated
+public class RelationsConversionServiceImpl implements RelationsConversionService {
+
+    @Resource
+    private RelationsConversionMapper conversionMapper;
+
+    @Override
+    public Long createConversion(RelationsConversionSaveReqVO createReqVO) {
+        // 插入
+        RelationsConversionDO conversion = BeanUtils.toBean(createReqVO, RelationsConversionDO.class);
+        conversionMapper.insert(conversion);
+        // 返回
+        return conversion.getId();
+    }
+
+    @Override
+    public void updateConversion(RelationsConversionSaveReqVO updateReqVO) {
+        // 校验存在
+        validateConversionExists(updateReqVO.getId());
+        // 更新
+        RelationsConversionDO updateObj = BeanUtils.toBean(updateReqVO, RelationsConversionDO.class);
+        conversionMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteConversion(Long id) {
+        // 校验存在
+        validateConversionExists(id);
+        // 删除
+        conversionMapper.deleteById(id);
+    }
+
+    private void validateConversionExists(Long id) {
+        if (conversionMapper.selectById(id) == null) {
+            throw exception(RELATIONS_CONVERSION_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public RelationsConversionDO getConversion(Long id) {
+        return conversionMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<RelationsConversionDO> getConversionPage(RelationsConversionPageReqVO pageReqVO) {
+        return conversionMapper.selectPage(pageReqVO);
+    }
+
+}

+ 56 - 0
yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/service/entry/RelationsEntryService.java

@@ -0,0 +1,56 @@
+package cn.iocoder.yudao.module.relations.service.entry;
+
+import java.util.*;
+import cn.iocoder.yudao.module.relations.controller.admin.entry.vo.*;
+import cn.iocoder.yudao.module.relations.dal.dataobject.entry.RelationsEntryDO;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+
+import javax.validation.Valid;
+
+/**
+ * 入职信息 Service 接口
+ *
+ * @author zhaopq
+ */
+public interface RelationsEntryService {
+
+    /**
+     * 创建入职信息
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createEntry(@Valid RelationsEntrySaveReqVO createReqVO);
+
+    /**
+     * 更新入职信息
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateEntry(@Valid RelationsEntrySaveReqVO updateReqVO);
+
+    /**
+     * 删除入职信息
+     *
+     * @param id 编号
+     */
+    void deleteEntry(Long id);
+
+    /**
+     * 获得入职信息
+     *
+     * @param id 编号
+     * @return 入职信息
+     */
+    RelationsEntryDO getEntry(Long id);
+
+    /**
+     * 获得入职信息分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 入职信息分页
+     */
+    PageResult<RelationsEntryDO> getEntryPage(RelationsEntryPageReqVO pageReqVO);
+
+}

+ 75 - 0
yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/service/entry/RelationsEntryServiceImpl.java

@@ -0,0 +1,75 @@
+package cn.iocoder.yudao.module.relations.service.entry;
+
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+import cn.iocoder.yudao.module.relations.controller.admin.entry.vo.*;
+import cn.iocoder.yudao.module.relations.dal.dataobject.entry.RelationsEntryDO;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+
+import cn.iocoder.yudao.module.relations.dal.mysql.entry.RelationsEntryMapper;
+
+import javax.annotation.Resource;
+
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.iocoder.yudao.module.relations.enums.ErrorCodeConstants.*;
+
+/**
+ * 入职信息 Service 实现类
+ *
+ * @author zhaopq
+ */
+@Service
+@Validated
+public class RelationsEntryServiceImpl implements RelationsEntryService {
+
+    @Resource
+    private RelationsEntryMapper entryMapper;
+
+    @Override
+    public Long createEntry(RelationsEntrySaveReqVO createReqVO) {
+        // 插入
+        RelationsEntryDO entry = BeanUtils.toBean(createReqVO, RelationsEntryDO.class);
+        entryMapper.insert(entry);
+        // 返回
+        return entry.getId();
+    }
+
+    @Override
+    public void updateEntry(RelationsEntrySaveReqVO updateReqVO) {
+        // 校验存在
+        validateEntryExists(updateReqVO.getId());
+        // 更新
+        RelationsEntryDO updateObj = BeanUtils.toBean(updateReqVO, RelationsEntryDO.class);
+        entryMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteEntry(Long id) {
+        // 校验存在
+        validateEntryExists(id);
+        // 删除
+        entryMapper.deleteById(id);
+    }
+
+    private void validateEntryExists(Long id) {
+        if (entryMapper.selectById(id) == null) {
+            throw exception(RELATIONS_ENTRY_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public RelationsEntryDO getEntry(Long id) {
+        return entryMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<RelationsEntryDO> getEntryPage(RelationsEntryPageReqVO pageReqVO) {
+        return entryMapper.selectPage(pageReqVO);
+    }
+
+}

+ 56 - 0
yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/service/renew/RelationsRenewService.java

@@ -0,0 +1,56 @@
+package cn.iocoder.yudao.module.relations.service.renew;
+
+import java.util.*;
+import cn.iocoder.yudao.module.relations.controller.admin.renew.vo.*;
+import cn.iocoder.yudao.module.relations.dal.dataobject.renew.RelationsRenewDO;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+
+import javax.validation.Valid;
+
+/**
+ * 续签信息 Service 接口
+ *
+ * @author zhaopq
+ */
+public interface RelationsRenewService {
+
+    /**
+     * 创建续签信息
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createRenew(@Valid RelationsRenewSaveReqVO createReqVO);
+
+    /**
+     * 更新续签信息
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateRenew(@Valid RelationsRenewSaveReqVO updateReqVO);
+
+    /**
+     * 删除续签信息
+     *
+     * @param id 编号
+     */
+    void deleteRenew(Long id);
+
+    /**
+     * 获得续签信息
+     *
+     * @param id 编号
+     * @return 续签信息
+     */
+    RelationsRenewDO getRenew(Long id);
+
+    /**
+     * 获得续签信息分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 续签信息分页
+     */
+    PageResult<RelationsRenewDO> getRenewPage(RelationsRenewPageReqVO pageReqVO);
+
+}

+ 72 - 0
yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/service/renew/RelationsRenewServiceImpl.java

@@ -0,0 +1,72 @@
+package cn.iocoder.yudao.module.relations.service.renew;
+
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import cn.iocoder.yudao.module.relations.controller.admin.renew.vo.*;
+import cn.iocoder.yudao.module.relations.dal.dataobject.renew.RelationsRenewDO;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+
+import cn.iocoder.yudao.module.relations.dal.mysql.renew.RelationsRenewMapper;
+
+import javax.annotation.Resource;
+
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.iocoder.yudao.module.relations.enums.ErrorCodeConstants.*;
+
+/**
+ * 续签信息 Service 实现类
+ *
+ * @author zhaopq
+ */
+@Service
+@Validated
+public class RelationsRenewServiceImpl implements RelationsRenewService {
+
+    @Resource
+    private RelationsRenewMapper renewMapper;
+
+    @Override
+    public Long createRenew(RelationsRenewSaveReqVO createReqVO) {
+        // 插入
+        RelationsRenewDO renew = BeanUtils.toBean(createReqVO, RelationsRenewDO.class);
+        renewMapper.insert(renew);
+        // 返回
+        return renew.getId();
+    }
+
+    @Override
+    public void updateRenew(RelationsRenewSaveReqVO updateReqVO) {
+        // 校验存在
+        validateRenewExists(updateReqVO.getId());
+        // 更新
+        RelationsRenewDO updateObj = BeanUtils.toBean(updateReqVO, RelationsRenewDO.class);
+        renewMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteRenew(Long id) {
+        // 校验存在
+        validateRenewExists(id);
+        // 删除
+        renewMapper.deleteById(id);
+    }
+
+    private void validateRenewExists(Long id) {
+        if (renewMapper.selectById(id) == null) {
+            throw exception(RELATIONS_RENEW_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public RelationsRenewDO getRenew(Long id) {
+        return renewMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<RelationsRenewDO> getRenewPage(RelationsRenewPageReqVO pageReqVO) {
+        return renewMapper.selectPage(pageReqVO);
+    }
+
+}

+ 56 - 0
yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/service/turnover/RelationsTurnoverService.java

@@ -0,0 +1,56 @@
+package cn.iocoder.yudao.module.relations.service.turnover;
+
+import java.util.*;
+import cn.iocoder.yudao.module.relations.controller.admin.turnover.vo.*;
+import cn.iocoder.yudao.module.relations.dal.dataobject.turnover.RelationsTurnoverDO;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+
+import javax.validation.Valid;
+
+/**
+ * 离职信息 Service 接口
+ *
+ * @author zhaopq
+ */
+public interface RelationsTurnoverService {
+
+    /**
+     * 创建离职信息
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createTurnover(@Valid RelationsTurnoverSaveReqVO createReqVO);
+
+    /**
+     * 更新离职信息
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateTurnover(@Valid RelationsTurnoverSaveReqVO updateReqVO);
+
+    /**
+     * 删除离职信息
+     *
+     * @param id 编号
+     */
+    void deleteTurnover(Long id);
+
+    /**
+     * 获得离职信息
+     *
+     * @param id 编号
+     * @return 离职信息
+     */
+    RelationsTurnoverDO getTurnover(Long id);
+
+    /**
+     * 获得离职信息分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 离职信息分页
+     */
+    PageResult<RelationsTurnoverDO> getTurnoverPage(RelationsTurnoverPageReqVO pageReqVO);
+
+}

+ 72 - 0
yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/service/turnover/RelationsTurnoverServiceImpl.java

@@ -0,0 +1,72 @@
+package cn.iocoder.yudao.module.relations.service.turnover;
+
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import cn.iocoder.yudao.module.relations.controller.admin.turnover.vo.*;
+import cn.iocoder.yudao.module.relations.dal.dataobject.turnover.RelationsTurnoverDO;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+
+import cn.iocoder.yudao.module.relations.dal.mysql.turnover.RelationsTurnoverMapper;
+
+import javax.annotation.Resource;
+
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.iocoder.yudao.module.relations.enums.ErrorCodeConstants.*;
+
+/**
+ * 离职信息 Service 实现类
+ *
+ * @author zhaopq
+ */
+@Service
+@Validated
+public class RelationsTurnoverServiceImpl implements RelationsTurnoverService {
+
+    @Resource
+    private RelationsTurnoverMapper turnoverMapper;
+
+    @Override
+    public Long createTurnover(RelationsTurnoverSaveReqVO createReqVO) {
+        // 插入
+        RelationsTurnoverDO turnover = BeanUtils.toBean(createReqVO, RelationsTurnoverDO.class);
+        turnoverMapper.insert(turnover);
+        // 返回
+        return turnover.getId();
+    }
+
+    @Override
+    public void updateTurnover(RelationsTurnoverSaveReqVO updateReqVO) {
+        // 校验存在
+        validateTurnoverExists(updateReqVO.getId());
+        // 更新
+        RelationsTurnoverDO updateObj = BeanUtils.toBean(updateReqVO, RelationsTurnoverDO.class);
+        turnoverMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteTurnover(Long id) {
+        // 校验存在
+        validateTurnoverExists(id);
+        // 删除
+        turnoverMapper.deleteById(id);
+    }
+
+    private void validateTurnoverExists(Long id) {
+        if (turnoverMapper.selectById(id) == null) {
+            throw exception(RELATIONS_TURNOVER_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public RelationsTurnoverDO getTurnover(Long id) {
+        return turnoverMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<RelationsTurnoverDO> getTurnoverPage(RelationsTurnoverPageReqVO pageReqVO) {
+        return turnoverMapper.selectPage(pageReqVO);
+    }
+
+}

+ 1 - 1
yudao-module-personnel/yudao-module-relations-biz/src/main/resources/mapper/contractinfo/RelationsContractInfoMapper.xml

@@ -1,6 +1,6 @@
 <?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="cn.iocoder.yudao.module.relations.dal.mysql.contractinfo.RelationsContractInfoMapper">
+<mapper namespace="cn.iocoder.yudao.module.relations.dal.mysql.contract.RelationsContractMapper">
 
     <!--
         一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。

+ 12 - 0
yudao-module-personnel/yudao-module-relations-biz/src/main/resources/mapper/conversion/RelationsConversionMapper.xml

@@ -0,0 +1,12 @@
+<?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="cn.iocoder.yudao.module.relations.dal.mysql.conversion.RelationsConversionMapper">
+
+    <!--
+        一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
+        无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
+        代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
+        文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
+     -->
+
+</mapper>

+ 12 - 0
yudao-module-personnel/yudao-module-relations-biz/src/main/resources/mapper/entry/RelationsEntryMapper.xml

@@ -0,0 +1,12 @@
+<?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="cn.iocoder.yudao.module.relations.dal.mysql.entry.RelationsEntryMapper">
+
+    <!--
+        一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
+        无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
+        代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
+        文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
+     -->
+
+</mapper>

+ 12 - 0
yudao-module-personnel/yudao-module-relations-biz/src/main/resources/mapper/renew/RelationsRenewMapper.xml

@@ -0,0 +1,12 @@
+<?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="cn.iocoder.yudao.module.relations.dal.mysql.renew.RelationsRenewMapper">
+
+    <!--
+        一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
+        无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
+        代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
+        文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
+     -->
+
+</mapper>

+ 12 - 0
yudao-module-personnel/yudao-module-relations-biz/src/main/resources/mapper/turnover/RelationsTurnoverMapper.xml

@@ -0,0 +1,12 @@
+<?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="cn.iocoder.yudao.module.relations.dal.mysql.turnover.RelationsTurnoverMapper">
+
+    <!--
+        一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
+        无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
+        代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
+        文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
+     -->
+
+</mapper>

+ 1 - 1
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/permission/MenuDO.java

@@ -14,7 +14,7 @@ import lombok.EqualsAndHashCode;
  *
  * @author ruoyi
  */
-@TableName("system_menu_copy1")
+@TableName("system_menu")
 @KeySequence("system_menu_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
 @Data
 @EqualsAndHashCode(callSuper = true)