Browse Source

员工关系附件

zhaopeiqing 7 months ago
parent
commit
f9b3b4fad2
25 changed files with 372 additions and 45 deletions
  1. 1 2
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/contract/RelationsContractController.java
  2. 6 0
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/contract/vo/RelationsContractRespVO.java
  3. 1 2
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/conversion/RelationsConversionController.java
  4. 4 2
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/conversion/vo/RelationsConversionRespVO.java
  5. 3 0
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/conversion/vo/RelationsConversionSaveReqVO.java
  6. 1 2
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/entry/RelationsEntryController.java
  7. 4 2
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/entry/vo/RelationsEntryRespVO.java
  8. 3 0
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/entry/vo/RelationsEntrySaveReqVO.java
  9. 2 2
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/renew/RelationsRenewController.java
  10. 6 0
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/renew/vo/RelationsRenewRespVO.java
  11. 4 0
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/renew/vo/RelationsRenewSaveReqVO.java
  12. 1 2
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/turnover/RelationsTurnoverController.java
  13. 4 2
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/turnover/vo/RelationsTurnoverRespVO.java
  14. 3 0
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/turnover/vo/RelationsTurnoverSaveReqVO.java
  15. 9 0
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/service/contract/RelationsContractService.java
  16. 43 12
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/service/contract/RelationsContractServiceImpl.java
  17. 8 2
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/service/conversion/RelationsConversionService.java
  18. 60 0
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/service/conversion/RelationsConversionServiceImpl.java
  19. 8 2
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/service/entry/RelationsEntryService.java
  20. 58 2
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/service/entry/RelationsEntryServiceImpl.java
  21. 8 2
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/service/renew/RelationsRenewService.java
  22. 60 0
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/service/renew/RelationsRenewServiceImpl.java
  23. 8 2
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/service/turnover/RelationsTurnoverService.java
  24. 60 0
      yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/service/turnover/RelationsTurnoverServiceImpl.java
  25. 7 7
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/permission/MenuTenantRelateController.java

+ 1 - 2
yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/contract/RelationsContractController.java

@@ -70,8 +70,7 @@ public class RelationsContractController {
     @Parameter(name = "id", description = "编号", required = true, example = "1024")
     @PreAuthorize("@ss.hasPermission('relations:contract:query')")
     public CommonResult<RelationsContractRespVO> getContractInfo(@RequestParam("id") Long id) {
-        RelationsContractDO contractInfo = contractInfoService.getContractInfo(id);
-        return success(BeanUtils.toBean(contractInfo, RelationsContractRespVO.class));
+        return success(contractInfoService.getById(id));
     }
 
     @GetMapping("/page")

+ 6 - 0
yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/controller/admin/contract/vo/RelationsContractRespVO.java

@@ -1,10 +1,13 @@
 package cn.iocoder.yudao.module.relations.controller.admin.contract.vo;
 
+import cn.iocoder.yudao.module.infra.api.file.dto.FileDTO;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.util.List;
+
 import com.alibaba.excel.annotation.*;
 
 @Schema(description = "管理后台 - 员工合同信息 Response VO")
@@ -76,4 +79,7 @@ public class RelationsContractRespVO {
     @ExcelProperty("租户编号")
     private Long tenantId;
 
+    @Schema(description = "附件列表")
+    private List<FileDTO> fileList;
+
 }

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

@@ -67,8 +67,7 @@ public class RelationsConversionController {
     @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));
+        return success(conversionService.getById(id));
     }
 
     @GetMapping("/page")

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

@@ -1,10 +1,9 @@
 package cn.iocoder.yudao.module.relations.controller.admin.conversion.vo;
 
+import cn.iocoder.yudao.module.infra.api.file.dto.FileDTO;
 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.*;
 
@@ -105,4 +104,7 @@ public class RelationsConversionRespVO {
     @ExcelProperty("租户编号")
     private Long tenantId;
 
+    @Schema(description = "附件列表")
+    private List<FileDTO> fileList;
+
 }

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

@@ -78,4 +78,7 @@ public class RelationsConversionSaveReqVO {
     @NotNull(message = "租户编号不能为空")
     private Long tenantId;
 
+    @Schema(description = "附件主键id", example = "[1, 2]")
+    private List<Long> fileIdList;
+
 }

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

@@ -67,8 +67,7 @@ public class RelationsEntryController {
     @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));
+        return success(entryService.getById(id));
     }
 
     @GetMapping("/page")

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

@@ -1,10 +1,9 @@
 package cn.iocoder.yudao.module.relations.controller.admin.entry.vo;
 
+import cn.iocoder.yudao.module.infra.api.file.dto.FileDTO;
 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.*;
 
@@ -93,4 +92,7 @@ public class RelationsEntryRespVO {
     @ExcelProperty("租户编号")
     private Long tenantId;
 
+    @Schema(description = "附件列表")
+    private List<FileDTO> fileList;
+
 }

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

@@ -69,4 +69,7 @@ public class RelationsEntrySaveReqVO {
     @NotNull(message = "租户编号不能为空")
     private Long tenantId;
 
+    @Schema(description = "附件主键id", example = "[1, 2]")
+    private List<Long> fileIdList;
+
 }

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

@@ -67,8 +67,8 @@ public class RelationsRenewController {
     @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));
+//        RelationsRenewDO renew = renewService.getRenew(id);
+        return success(renewService.getById(id));
     }
 
     @GetMapping("/page")

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

@@ -1,9 +1,12 @@
 package cn.iocoder.yudao.module.relations.controller.admin.renew.vo;
 
+import cn.iocoder.yudao.module.infra.api.file.dto.FileDTO;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import java.time.LocalDateTime;
+import java.util.List;
+
 import com.alibaba.excel.annotation.*;
 
 @Schema(description = "管理后台 - 续签信息 Response VO")
@@ -111,4 +114,7 @@ public class RelationsRenewRespVO {
     @ExcelProperty("租户编号")
     private Long tenantId;
 
+    @Schema(description = "附件列表")
+    private List<FileDTO> fileList;
+
 }

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

@@ -4,6 +4,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 
 import javax.validation.constraints.NotNull;
+import java.util.List;
 
 @Schema(description = "管理后台 - 续签信息新增/修改 Request VO")
 @Data
@@ -83,4 +84,7 @@ public class RelationsRenewSaveReqVO {
     @NotNull(message = "租户编号不能为空")
     private Long tenantId;
 
+    @Schema(description = "附件主键id", example = "[1, 2]")
+    private List<Long> fileIdList;
+
 }

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

@@ -67,8 +67,7 @@ public class RelationsTurnoverController {
     @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));
+        return success(turnoverService.getById(id));
     }
 
     @GetMapping("/page")

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

@@ -1,10 +1,9 @@
 package cn.iocoder.yudao.module.relations.controller.admin.turnover.vo;
 
+import cn.iocoder.yudao.module.infra.api.file.dto.FileDTO;
 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.*;
 
@@ -97,4 +96,7 @@ public class RelationsTurnoverRespVO {
     @ExcelProperty("租户编号")
     private Long tenantId;
 
+    @Schema(description = "附件列表")
+    private List<FileDTO> fileList;
+
 }

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

@@ -72,4 +72,7 @@ public class RelationsTurnoverSaveReqVO {
     @NotNull(message = "租户编号不能为空")
     private Long tenantId;
 
+    @Schema(description = "附件主键id", example = "[1, 2]")
+    private List<Long> fileIdList;
+
 }

+ 9 - 0
yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/service/contract/RelationsContractService.java

@@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.relations.service.contract;
 
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 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;
 
@@ -45,6 +46,14 @@ public interface RelationsContractService {
      */
     RelationsContractDO getContractInfo(Long id);
 
+    /**
+     * 通过ID获得工合同信息
+     *
+     * @param id
+     * @return
+     */
+    RelationsContractRespVO getById(Long id);
+
     /**
      * 获得员工合同信息分页
      *

+ 43 - 12
yudao-module-personnel/yudao-module-relations-biz/src/main/java/cn/iocoder/yudao/module/relations/service/contract/RelationsContractServiceImpl.java

@@ -7,7 +7,9 @@ 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.infra.api.file.FileApi;
+import cn.iocoder.yudao.module.infra.api.file.dto.FileDTO;
 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.dal.mysql.contract.RelationsContractMapper;
@@ -35,7 +37,7 @@ import static cn.iocoder.yudao.module.relations.enums.ErrorCodeConstants.RELATIO
 public class RelationsContractServiceImpl implements RelationsContractService {
 
     @Resource
-    private RelationsContractMapper contractInfoMapper;
+    private RelationsContractMapper contractMapper;
     @Resource
     private FileApi fileApi;
 
@@ -43,7 +45,7 @@ public class RelationsContractServiceImpl implements RelationsContractService {
     @TenantIgnore
     public Long createContractInfo(RelationsContractSaveReqVO createReqVO) {
         // 查询该员工是否有合同存在
-        List<RelationsContractDO> list = contractInfoMapper.selectPage(new RelationsContractPageReqVO().setEmployeeId(createReqVO.getEmployeeId())).getList();
+        List<RelationsContractDO> list = contractMapper.selectPage(new RelationsContractPageReqVO().setEmployeeId(createReqVO.getEmployeeId())).getList();
         // 检查查询结果是否为空
         if (!CollUtil.isEmpty(list)) {
             // 更新状态
@@ -54,7 +56,7 @@ public class RelationsContractServiceImpl implements RelationsContractService {
             }
             // 批量更新
             if (!toUpdate.isEmpty()) {
-                contractInfoMapper.updateBatch(toUpdate);
+                contractMapper.updateBatch(toUpdate);
             }
         }
         // 插入
@@ -62,7 +64,7 @@ public class RelationsContractServiceImpl implements RelationsContractService {
         createReqVO.setContractId(infoId);
         RelationsContractDO contractInfo = BeanUtils.toBean(createReqVO, RelationsContractDO.class);
         contractInfo.setStatus(ContractInfoStatusEnum.LATEST.getStatus());
-        contractInfoMapper.insert(contractInfo);
+        contractMapper.insert(contractInfo);
         // 保存业务uuid到附件中
         this.saveFileList(createReqVO.getFileIdList(), infoId);
         // 返回
@@ -78,7 +80,7 @@ public class RelationsContractServiceImpl implements RelationsContractService {
         this.saveFileList(updateReqVO.getFileIdList(), updateReqVO.getContractId());
         // 更新
         RelationsContractDO updateObj = BeanUtils.toBean(updateReqVO, RelationsContractDO.class);
-        contractInfoMapper.updateById(updateObj);
+        contractMapper.updateById(updateObj);
     }
 
     @Override
@@ -87,12 +89,12 @@ public class RelationsContractServiceImpl implements RelationsContractService {
         // 校验存在
         validateContractInfoExists(id);
         // 删除
-        contractInfoMapper.deleteById(id);
+        contractMapper.deleteById(id);
     }
 
     @TenantIgnore
     private void validateContractInfoExists(Long id) {
-        if (contractInfoMapper.selectById(id) == null) {
+        if (contractMapper.selectById(id) == null) {
             throw exception(RELATIONS_CONTRACT_INFO_NOT_EXISTS);
         }
     }
@@ -100,20 +102,48 @@ public class RelationsContractServiceImpl implements RelationsContractService {
     @Override
     @TenantIgnore
     public RelationsContractDO getContractInfo(Long id) {
-        return contractInfoMapper.selectById(id);
+        return contractMapper.selectById(id);
+    }
+
+    @Override
+    @TenantIgnore
+    public RelationsContractRespVO getById(Long id) {
+        // 第一步:检查ID是否为空
+        if (id == null) {
+            throw new IllegalArgumentException("ID cannot be null");
+        }
+        // 第二步:从数据库获取数据
+        RelationsContractDO contractDO = contractMapper.selectById(id);
+        if (contractDO == null) {
+            throw exception(RELATIONS_CONTRACT_INFO_NOT_EXISTS);
+        }
+        // 第三步:将DO对象转换为VO对象
+        RelationsContractRespVO respVO = BeanUtils.toBean(contractDO, RelationsContractRespVO.class);
+        if (respVO == null) {
+            // 理论上BeanUtils.toBean不应该返回null,但为了安全起见,还是检查一下
+            throw new RuntimeException("Failed to convert DO to VO");
+        }
+        // 第四步:获取附件列表
+        List<FileDTO> fileList = fileApi.getFileDTOListByBiz(contractDO.getContractId());
+        if (fileList != null) {
+            // 如果fileList不为null,则设置到VO对象中
+            respVO.setFileList(fileList);
+        }
+        // 第五步:返回VO对象
+        return respVO;
     }
 
     @Override
     @TenantIgnore
     public PageResult<RelationsContractDO> getContractInfoPage(RelationsContractPageReqVO pageReqVO) {
-        return contractInfoMapper.selectPage(pageReqVO);
+        return contractMapper.selectPage(pageReqVO);
     }
 
     @Override
     @TenantIgnore
     public int effectiveContractInfo() {
         // 1. 查询状态为已完成且已到合同开始日期的合同
-        List<RelationsContractDO> doneContracts = contractInfoMapper.selectListByStatusAndEffectiveDateGe(
+        List<RelationsContractDO> doneContracts = contractMapper.selectListByStatusAndEffectiveDateGe(
                 null, LocalDate.now());
         if (CollUtil.isEmpty(doneContracts)) {
             return 0;
@@ -124,7 +154,7 @@ public class RelationsContractServiceImpl implements RelationsContractService {
             employeeIds.add(contract.getEmployeeId());
         }
         // 3. 一次性查询所有员工ID对应的“有效”状态合同
-        List<RelationsContractDO> contracts = contractInfoMapper.selectListByStatusAndEmployeeIds(
+        List<RelationsContractDO> contracts = contractMapper.selectListByStatusAndEmployeeIds(
                 null, employeeIds);
         Map<Long, List<RelationsContractDO>> employeeToEffectiveContracts = contracts.stream()
                 .collect(Collectors.groupingBy(RelationsContractDO::getEmployeeId));
@@ -144,7 +174,7 @@ public class RelationsContractServiceImpl implements RelationsContractService {
         }
         // 5. 批量更新
         if (!toUpdate.isEmpty()) {
-            contractInfoMapper.updateBatch(toUpdate);
+            contractMapper.updateBatch(toUpdate);
         }
         // 返回更新的合同数量
         return doneContracts.size();
@@ -153,6 +183,7 @@ public class RelationsContractServiceImpl implements RelationsContractService {
     /**
      * 保存业务uuid到附件中
      */
+    @TenantIgnore
     private void saveFileList(List<Long> fileIdList, String serviceId) {
         if (CollectionUtil.isNotEmpty(fileIdList) && StrUtil.isNotEmpty(serviceId)) {
             fileApi.updateFileBiz(fileIdList, serviceId);

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

@@ -1,10 +1,8 @@
 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;
 
@@ -45,6 +43,14 @@ public interface RelationsConversionService {
      */
     RelationsConversionDO getConversion(Long id);
 
+    /**
+     * 通过ID获得转正信息
+     *
+     * @param id
+     * @return
+     */
+    RelationsConversionRespVO getById(Long id);
+
     /**
      * 获得转正信息分页
      *

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

@@ -1,5 +1,11 @@
 package cn.iocoder.yudao.module.relations.service.conversion;
 
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.IdUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
+import cn.iocoder.yudao.module.infra.api.file.FileApi;
+import cn.iocoder.yudao.module.infra.api.file.dto.FileDTO;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
@@ -12,6 +18,8 @@ import cn.iocoder.yudao.module.relations.dal.mysql.conversion.RelationsConversio
 
 import javax.annotation.Resource;
 
+import java.util.List;
+
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.iocoder.yudao.module.relations.enums.ErrorCodeConstants.*;
 
@@ -26,26 +34,37 @@ public class RelationsConversionServiceImpl implements RelationsConversionServic
 
     @Resource
     private RelationsConversionMapper conversionMapper;
+    @Resource
+    private FileApi fileApi;
 
     @Override
+    @TenantIgnore
     public Long createConversion(RelationsConversionSaveReqVO createReqVO) {
         // 插入
+        String infoId = IdUtil.fastSimpleUUID();
+        createReqVO.setConversionId(infoId);
         RelationsConversionDO conversion = BeanUtils.toBean(createReqVO, RelationsConversionDO.class);
         conversionMapper.insert(conversion);
+        // 保存业务uuid到附件中
+        this.saveFileList(createReqVO.getFileIdList(), infoId);
         // 返回
         return conversion.getId();
     }
 
     @Override
+    @TenantIgnore
     public void updateConversion(RelationsConversionSaveReqVO updateReqVO) {
         // 校验存在
         validateConversionExists(updateReqVO.getId());
+        // 保存业务uuid到附件中
+        this.saveFileList(updateReqVO.getFileIdList(), updateReqVO.getConversionId());
         // 更新
         RelationsConversionDO updateObj = BeanUtils.toBean(updateReqVO, RelationsConversionDO.class);
         conversionMapper.updateById(updateObj);
     }
 
     @Override
+    @TenantIgnore
     public void deleteConversion(Long id) {
         // 校验存在
         validateConversionExists(id);
@@ -53,6 +72,7 @@ public class RelationsConversionServiceImpl implements RelationsConversionServic
         conversionMapper.deleteById(id);
     }
 
+    @TenantIgnore
     private void validateConversionExists(Long id) {
         if (conversionMapper.selectById(id) == null) {
             throw exception(RELATIONS_CONVERSION_NOT_EXISTS);
@@ -60,13 +80,53 @@ public class RelationsConversionServiceImpl implements RelationsConversionServic
     }
 
     @Override
+    @TenantIgnore
     public RelationsConversionDO getConversion(Long id) {
         return conversionMapper.selectById(id);
     }
 
     @Override
+    @TenantIgnore
+    public RelationsConversionRespVO getById(Long id) {
+        // 第一步:检查ID是否为空
+        if (id == null) {
+            throw new IllegalArgumentException("ID cannot be null");
+        }
+        // 第二步:从数据库获取数据
+        RelationsConversionDO conversionDO = conversionMapper.selectById(id);
+        if (conversionDO == null) {
+            throw exception(RELATIONS_CONVERSION_NOT_EXISTS);
+        }
+        // 第三步:将DO对象转换为VO对象
+        RelationsConversionRespVO respVO = BeanUtils.toBean(conversionDO, RelationsConversionRespVO.class);
+        if (respVO == null) {
+            // 理论上BeanUtils.toBean不应该返回null,但为了安全起见,还是检查一下
+            throw new RuntimeException("Failed to convert DO to VO");
+        }
+        // 第四步:获取附件列表
+        List<FileDTO> fileList = fileApi.getFileDTOListByBiz(conversionDO.getConversionId());
+        if (fileList != null) {
+            // 如果fileList不为null,则设置到VO对象中
+            respVO.setFileList(fileList);
+        }
+        // 第五步:返回VO对象
+        return respVO;
+    }
+
+    @Override
+    @TenantIgnore
     public PageResult<RelationsConversionDO> getConversionPage(RelationsConversionPageReqVO pageReqVO) {
         return conversionMapper.selectPage(pageReqVO);
     }
 
+    /**
+     * 保存业务uuid到附件中
+     */
+    @TenantIgnore
+    private void saveFileList(List<Long> fileIdList, String serviceId) {
+        if (CollectionUtil.isNotEmpty(fileIdList) && StrUtil.isNotEmpty(serviceId)) {
+            fileApi.updateFileBiz(fileIdList, serviceId);
+        }
+    }
+
 }

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

@@ -1,10 +1,8 @@
 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;
 
@@ -45,6 +43,14 @@ public interface RelationsEntryService {
      */
     RelationsEntryDO getEntry(Long id);
 
+    /**
+     * 通过ID获得入职信息
+     *
+     * @param id
+     * @return
+     */
+    RelationsEntryRespVO getById(Long id);
+
     /**
      * 获得入职信息分页
      *

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

@@ -1,14 +1,18 @@
 package cn.iocoder.yudao.module.relations.service.entry;
 
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.IdUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
+import cn.iocoder.yudao.module.infra.api.file.FileApi;
+import cn.iocoder.yudao.module.infra.api.file.dto.FileDTO;
 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;
@@ -29,26 +33,37 @@ public class RelationsEntryServiceImpl implements RelationsEntryService {
 
     @Resource
     private RelationsEntryMapper entryMapper;
+    @Resource
+    private FileApi fileApi;
 
     @Override
+    @TenantIgnore
     public Long createEntry(RelationsEntrySaveReqVO createReqVO) {
         // 插入
+        String infoId = IdUtil.fastSimpleUUID();
+        createReqVO.setEntryId(infoId);
         RelationsEntryDO entry = BeanUtils.toBean(createReqVO, RelationsEntryDO.class);
         entryMapper.insert(entry);
+        // 保存业务uuid到附件中
+        this.saveFileList(createReqVO.getFileIdList(), infoId);
         // 返回
         return entry.getId();
     }
 
     @Override
+    @TenantIgnore
     public void updateEntry(RelationsEntrySaveReqVO updateReqVO) {
         // 校验存在
         validateEntryExists(updateReqVO.getId());
+        // 保存业务uuid到附件中
+        this.saveFileList(updateReqVO.getFileIdList(), updateReqVO.getEntryId());
         // 更新
         RelationsEntryDO updateObj = BeanUtils.toBean(updateReqVO, RelationsEntryDO.class);
         entryMapper.updateById(updateObj);
     }
 
     @Override
+    @TenantIgnore
     public void deleteEntry(Long id) {
         // 校验存在
         validateEntryExists(id);
@@ -56,6 +71,7 @@ public class RelationsEntryServiceImpl implements RelationsEntryService {
         entryMapper.deleteById(id);
     }
 
+    @TenantIgnore
     private void validateEntryExists(Long id) {
         if (entryMapper.selectById(id) == null) {
             throw exception(RELATIONS_ENTRY_NOT_EXISTS);
@@ -63,13 +79,53 @@ public class RelationsEntryServiceImpl implements RelationsEntryService {
     }
 
     @Override
+    @TenantIgnore
     public RelationsEntryDO getEntry(Long id) {
         return entryMapper.selectById(id);
     }
 
     @Override
+    @TenantIgnore
+    public RelationsEntryRespVO getById(Long id) {
+        // 第一步:检查ID是否为空
+        if (id == null) {
+            throw new IllegalArgumentException("ID cannot be null");
+        }
+        // 第二步:从数据库获取数据
+        RelationsEntryDO entryDO = entryMapper.selectById(id);
+        if (entryDO == null) {
+            throw exception(RELATIONS_ENTRY_NOT_EXISTS);
+        }
+        // 第三步:将DO对象转换为VO对象
+        RelationsEntryRespVO respVO = BeanUtils.toBean(entryDO, RelationsEntryRespVO.class);
+        if (respVO == null) {
+            // 理论上BeanUtils.toBean不应该返回null,但为了安全起见,还是检查一下
+            throw new RuntimeException("Failed to convert DO to VO");
+        }
+        // 第四步:获取附件列表
+        List<FileDTO> fileList = fileApi.getFileDTOListByBiz(entryDO.getEntryId());
+        if (fileList != null) {
+            // 如果fileList不为null,则设置到VO对象中
+            respVO.setFileList(fileList);
+        }
+        // 第五步:返回VO对象
+        return respVO;
+    }
+
+    @Override
+    @TenantIgnore
     public PageResult<RelationsEntryDO> getEntryPage(RelationsEntryPageReqVO pageReqVO) {
         return entryMapper.selectPage(pageReqVO);
     }
 
+    /**
+     * 保存业务uuid到附件中
+     */
+    @TenantIgnore
+    private void saveFileList(List<Long> fileIdList, String serviceId) {
+        if (CollectionUtil.isNotEmpty(fileIdList) && StrUtil.isNotEmpty(serviceId)) {
+            fileApi.updateFileBiz(fileIdList, serviceId);
+        }
+    }
+
 }

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

@@ -1,10 +1,8 @@
 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;
 
@@ -45,6 +43,14 @@ public interface RelationsRenewService {
      */
     RelationsRenewDO getRenew(Long id);
 
+    /**
+     * 通过ID获得续签信息
+     *
+     * @param id
+     * @return
+     */
+    RelationsRenewRespVO getById(Long id);
+
     /**
      * 获得续签信息分页
      *

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

@@ -1,5 +1,11 @@
 package cn.iocoder.yudao.module.relations.service.renew;
 
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.IdUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
+import cn.iocoder.yudao.module.infra.api.file.FileApi;
+import cn.iocoder.yudao.module.infra.api.file.dto.FileDTO;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
@@ -12,6 +18,8 @@ import cn.iocoder.yudao.module.relations.dal.mysql.renew.RelationsRenewMapper;
 
 import javax.annotation.Resource;
 
+import java.util.List;
+
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.iocoder.yudao.module.relations.enums.ErrorCodeConstants.*;
 
@@ -26,26 +34,37 @@ public class RelationsRenewServiceImpl implements RelationsRenewService {
 
     @Resource
     private RelationsRenewMapper renewMapper;
+    @Resource
+    private FileApi fileApi;
 
     @Override
+    @TenantIgnore
     public Long createRenew(RelationsRenewSaveReqVO createReqVO) {
         // 插入
+        String infoId = IdUtil.fastSimpleUUID();
+        createReqVO.setRenewId(infoId);
         RelationsRenewDO renew = BeanUtils.toBean(createReqVO, RelationsRenewDO.class);
         renewMapper.insert(renew);
+        // 保存业务uuid到附件中
+        this.saveFileList(createReqVO.getFileIdList(), infoId);
         // 返回
         return renew.getId();
     }
 
     @Override
+    @TenantIgnore
     public void updateRenew(RelationsRenewSaveReqVO updateReqVO) {
         // 校验存在
         validateRenewExists(updateReqVO.getId());
+        // 保存业务uuid到附件中
+        this.saveFileList(updateReqVO.getFileIdList(), updateReqVO.getRenewId());
         // 更新
         RelationsRenewDO updateObj = BeanUtils.toBean(updateReqVO, RelationsRenewDO.class);
         renewMapper.updateById(updateObj);
     }
 
     @Override
+    @TenantIgnore
     public void deleteRenew(Long id) {
         // 校验存在
         validateRenewExists(id);
@@ -53,6 +72,7 @@ public class RelationsRenewServiceImpl implements RelationsRenewService {
         renewMapper.deleteById(id);
     }
 
+    @TenantIgnore
     private void validateRenewExists(Long id) {
         if (renewMapper.selectById(id) == null) {
             throw exception(RELATIONS_RENEW_NOT_EXISTS);
@@ -60,13 +80,53 @@ public class RelationsRenewServiceImpl implements RelationsRenewService {
     }
 
     @Override
+    @TenantIgnore
     public RelationsRenewDO getRenew(Long id) {
         return renewMapper.selectById(id);
     }
 
     @Override
+    @TenantIgnore
+    public RelationsRenewRespVO getById(Long id) {
+        // 第一步:检查ID是否为空
+        if (id == null) {
+            throw new IllegalArgumentException("ID cannot be null");
+        }
+        // 第二步:从数据库获取数据
+        RelationsRenewDO renewDO = renewMapper.selectById(id);
+        if (renewDO == null) {
+            throw exception(RELATIONS_RENEW_NOT_EXISTS);
+        }
+        // 第三步:将DO对象转换为VO对象
+        RelationsRenewRespVO respVO = BeanUtils.toBean(renewDO, RelationsRenewRespVO.class);
+        if (respVO == null) {
+            // 理论上BeanUtils.toBean不应该返回null,但为了安全起见,还是检查一下
+            throw new RuntimeException("Failed to convert DO to VO");
+        }
+        // 第四步:获取附件列表
+        List<FileDTO> fileList = fileApi.getFileDTOListByBiz(renewDO.getRenewId());
+        if (fileList != null) {
+            // 如果fileList不为null,则设置到VO对象中
+            respVO.setFileList(fileList);
+        }
+        // 第五步:返回VO对象
+        return respVO;
+    }
+
+    @Override
+    @TenantIgnore
     public PageResult<RelationsRenewDO> getRenewPage(RelationsRenewPageReqVO pageReqVO) {
         return renewMapper.selectPage(pageReqVO);
     }
 
+    /**
+     * 保存业务uuid到附件中
+     */
+    @TenantIgnore
+    private void saveFileList(List<Long> fileIdList, String serviceId) {
+        if (CollectionUtil.isNotEmpty(fileIdList) && StrUtil.isNotEmpty(serviceId)) {
+            fileApi.updateFileBiz(fileIdList, serviceId);
+        }
+    }
+
 }

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

@@ -1,10 +1,8 @@
 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;
 
@@ -45,6 +43,14 @@ public interface RelationsTurnoverService {
      */
     RelationsTurnoverDO getTurnover(Long id);
 
+    /**
+     * 通过ID获得离职信息
+     *
+     * @param id
+     * @return
+     */
+    RelationsTurnoverRespVO getById(Long id);
+
     /**
      * 获得离职信息分页
      *

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

@@ -1,5 +1,11 @@
 package cn.iocoder.yudao.module.relations.service.turnover;
 
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.IdUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
+import cn.iocoder.yudao.module.infra.api.file.FileApi;
+import cn.iocoder.yudao.module.infra.api.file.dto.FileDTO;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
@@ -12,6 +18,8 @@ import cn.iocoder.yudao.module.relations.dal.mysql.turnover.RelationsTurnoverMap
 
 import javax.annotation.Resource;
 
+import java.util.List;
+
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.iocoder.yudao.module.relations.enums.ErrorCodeConstants.*;
 
@@ -26,26 +34,37 @@ public class RelationsTurnoverServiceImpl implements RelationsTurnoverService {
 
     @Resource
     private RelationsTurnoverMapper turnoverMapper;
+    @Resource
+    private FileApi fileApi;
 
     @Override
+    @TenantIgnore
     public Long createTurnover(RelationsTurnoverSaveReqVO createReqVO) {
         // 插入
+        String infoId = IdUtil.fastSimpleUUID();
+        createReqVO.setTurnoverId(infoId);
         RelationsTurnoverDO turnover = BeanUtils.toBean(createReqVO, RelationsTurnoverDO.class);
         turnoverMapper.insert(turnover);
+        // 保存业务uuid到附件中
+        this.saveFileList(createReqVO.getFileIdList(), infoId);
         // 返回
         return turnover.getId();
     }
 
     @Override
+    @TenantIgnore
     public void updateTurnover(RelationsTurnoverSaveReqVO updateReqVO) {
         // 校验存在
         validateTurnoverExists(updateReqVO.getId());
+        // 保存业务uuid到附件中
+        this.saveFileList(updateReqVO.getFileIdList(), updateReqVO.getTurnoverId());
         // 更新
         RelationsTurnoverDO updateObj = BeanUtils.toBean(updateReqVO, RelationsTurnoverDO.class);
         turnoverMapper.updateById(updateObj);
     }
 
     @Override
+    @TenantIgnore
     public void deleteTurnover(Long id) {
         // 校验存在
         validateTurnoverExists(id);
@@ -53,6 +72,7 @@ public class RelationsTurnoverServiceImpl implements RelationsTurnoverService {
         turnoverMapper.deleteById(id);
     }
 
+    @TenantIgnore
     private void validateTurnoverExists(Long id) {
         if (turnoverMapper.selectById(id) == null) {
             throw exception(RELATIONS_TURNOVER_NOT_EXISTS);
@@ -60,13 +80,53 @@ public class RelationsTurnoverServiceImpl implements RelationsTurnoverService {
     }
 
     @Override
+    @TenantIgnore
     public RelationsTurnoverDO getTurnover(Long id) {
         return turnoverMapper.selectById(id);
     }
 
     @Override
+    @TenantIgnore
+    public RelationsTurnoverRespVO getById(Long id) {
+        // 第一步:检查ID是否为空
+        if (id == null) {
+            throw new IllegalArgumentException("ID cannot be null");
+        }
+        // 第二步:从数据库获取数据
+        RelationsTurnoverDO turnoverDO = turnoverMapper.selectById(id);
+        if (turnoverDO == null) {
+            throw exception(RELATIONS_TURNOVER_NOT_EXISTS);
+        }
+        // 第三步:将DO对象转换为VO对象
+        RelationsTurnoverRespVO respVO = BeanUtils.toBean(turnoverDO, RelationsTurnoverRespVO.class);
+        if (respVO == null) {
+            // 理论上BeanUtils.toBean不应该返回null,但为了安全起见,还是检查一下
+            throw new RuntimeException("Failed to convert DO to VO");
+        }
+        // 第四步:获取附件列表
+        List<FileDTO> fileList = fileApi.getFileDTOListByBiz(turnoverDO.getTurnoverId());
+        if (fileList != null) {
+            // 如果fileList不为null,则设置到VO对象中
+            respVO.setFileList(fileList);
+        }
+        // 第五步:返回VO对象
+        return respVO;
+    }
+
+    @Override
+    @TenantIgnore
     public PageResult<RelationsTurnoverDO> getTurnoverPage(RelationsTurnoverPageReqVO pageReqVO) {
         return turnoverMapper.selectPage(pageReqVO);
     }
 
+    /**
+     * 保存业务uuid到附件中
+     */
+    @TenantIgnore
+    private void saveFileList(List<Long> fileIdList, String serviceId) {
+        if (CollectionUtil.isNotEmpty(fileIdList) && StrUtil.isNotEmpty(serviceId)) {
+            fileApi.updateFileBiz(fileIdList, serviceId);
+        }
+    }
+
 }

+ 7 - 7
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/permission/MenuTenantRelateController.java

@@ -34,7 +34,7 @@ import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
 
 @Tag(name = "管理后台 - 菜单租户关系")
 @RestController
-@RequestMapping("/menu/tenant-relate")
+@RequestMapping("/system/menu-tenant-relate")
 @Validated
 public class MenuTenantRelateController {
 
@@ -43,14 +43,14 @@ public class MenuTenantRelateController {
 
     @PostMapping("/create")
     @Operation(summary = "创建菜单租户关系")
-    @PreAuthorize("@ss.hasPermission('menu:tenant-relate:create')")
+    @PreAuthorize("@ss.hasPermission('system:menu-tenant-relate:create')")
     public CommonResult<Long> createTenantRelate(@Valid @RequestBody MenuTenantRelateSaveReqVO createReqVO) {
         return success(tenantRelateService.createTenantRelate(createReqVO));
     }
 
     @PutMapping("/update")
     @Operation(summary = "更新菜单租户关系")
-    @PreAuthorize("@ss.hasPermission('menu:tenant-relate:update')")
+    @PreAuthorize("@ss.hasPermission('system:menu-tenant-relate:update')")
     public CommonResult<Boolean> updateTenantRelate(@Valid @RequestBody MenuTenantRelateSaveReqVO updateReqVO) {
         tenantRelateService.updateTenantRelate(updateReqVO);
         return success(true);
@@ -59,7 +59,7 @@ public class MenuTenantRelateController {
     @DeleteMapping("/delete")
     @Operation(summary = "删除菜单租户关系")
     @Parameter(name = "id", description = "编号", required = true)
-    @PreAuthorize("@ss.hasPermission('menu:tenant-relate:delete')")
+    @PreAuthorize("@ss.hasPermission('system:menu-tenant-relate:delete')")
     public CommonResult<Boolean> deleteTenantRelate(@RequestParam("id") Long id) {
         tenantRelateService.deleteTenantRelate(id);
         return success(true);
@@ -68,7 +68,7 @@ public class MenuTenantRelateController {
     @GetMapping("/get")
     @Operation(summary = "获得菜单租户关系")
     @Parameter(name = "id", description = "编号", required = true, example = "1024")
-    @PreAuthorize("@ss.hasPermission('menu:tenant-relate:query')")
+    @PreAuthorize("@ss.hasPermission('system:menu-tenant-relate:query')")
     public CommonResult<MenuTenantRelateRespVO> getTenantRelate(@RequestParam("id") Long id) {
         MenuTenantRelateDO tenantRelate = tenantRelateService.getTenantRelate(id);
         return success(BeanUtils.toBean(tenantRelate, MenuTenantRelateRespVO.class));
@@ -76,7 +76,7 @@ public class MenuTenantRelateController {
 
     @GetMapping("/page")
     @Operation(summary = "获得菜单租户关系分页")
-    @PreAuthorize("@ss.hasPermission('menu:tenant-relate:query')")
+    @PreAuthorize("@ss.hasPermission('system:menu-tenant-relate:query')")
     public CommonResult<PageResult<MenuTenantRelateRespVO>> getTenantRelatePage(@Valid MenuTenantRelatePageReqVO pageReqVO) {
         PageResult<MenuTenantRelateDO> pageResult = tenantRelateService.getTenantRelatePage(pageReqVO);
         return success(BeanUtils.toBean(pageResult, MenuTenantRelateRespVO.class));
@@ -84,7 +84,7 @@ public class MenuTenantRelateController {
 
     @GetMapping("/export-excel")
     @Operation(summary = "导出菜单租户关系 Excel")
-    @PreAuthorize("@ss.hasPermission('menu:tenant-relate:export')")
+    @PreAuthorize("@ss.hasPermission('system:menu-tenant-relate:export')")
     @ApiAccessLog(operateType = EXPORT)
     public void exportTenantRelateExcel(@Valid MenuTenantRelatePageReqVO pageReqVO,
               HttpServletResponse response) throws IOException {