From 0e17b5575d653f6e10a1d312e8b0d23efc1bb35d Mon Sep 17 00:00:00 2001
From: heheng <475597332@qq.com>
Date: Tue, 10 Feb 2026 08:46:33 +0800
Subject: [PATCH] 条款区分公司

---
 multi-system/src/main/java/com/gkhy/exam/system/domain/SysClauseManagement.java                    |    3 +
 multi-admin/src/main/java/com/gkhy/exam/admin/controller/system/SysClauseManagementController.java |   17 +++++++-
 multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysDeptServiceImpl.java               |    5 ++
 multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysClauseManagementServiceImpl.java   |   59 +++++++++++++++++++++++++----
 multi-system/src/main/java/com/gkhy/exam/system/service/SysClauseManagementService.java            |    5 ++
 5 files changed, 76 insertions(+), 13 deletions(-)

diff --git a/multi-admin/src/main/java/com/gkhy/exam/admin/controller/system/SysClauseManagementController.java b/multi-admin/src/main/java/com/gkhy/exam/admin/controller/system/SysClauseManagementController.java
index d2fadb7..f38049d 100644
--- a/multi-admin/src/main/java/com/gkhy/exam/admin/controller/system/SysClauseManagementController.java
+++ b/multi-admin/src/main/java/com/gkhy/exam/admin/controller/system/SysClauseManagementController.java
@@ -29,8 +29,8 @@
 
     @ApiOperation(value = "获取条款")
     @GetMapping("/getSysClauseManagements")
-    public CommonResult getSysClauseManagements(){
-        return CommonResult.success(sysClauseManagementService.getSysClauseManagements());
+    public CommonResult getSysClauseManagements(@RequestParam("companyId") Long companyId){
+        return CommonResult.success(sysClauseManagementService.getSysClauseManagements(companyId));
     }
 
     @ApiOperation(value = "删除条款")
@@ -42,4 +42,17 @@
         return CommonResult.success(sysClauseManagementService.delSysClauseManagement(id));
     }
 
+
+    @ApiOperation(value = "复制条款")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "query", name = "sourceCompanyId", dataType = "long", required = true, value = "资源公司Id"),
+            @ApiImplicitParam(paramType = "query", name = "targetCompanyId", dataType = "long", required = true, value = "目标公司Id"),
+    })
+    @GetMapping("/copySysClauseManagements")
+    public CommonResult copySysClauseManagements(@RequestParam(value = "sourceCompanyId") Long sourceCompanyId,
+                                                 @RequestParam(value = "targetCompanyId") Long targetCompanyId) {
+        sysClauseManagementService.copySysClauseManagements(sourceCompanyId, targetCompanyId);
+        return CommonResult.success();
+    }
+
 }
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/domain/SysClauseManagement.java b/multi-system/src/main/java/com/gkhy/exam/system/domain/SysClauseManagement.java
index f8b02eb..18d9927 100644
--- a/multi-system/src/main/java/com/gkhy/exam/system/domain/SysClauseManagement.java
+++ b/multi-system/src/main/java/com/gkhy/exam/system/domain/SysClauseManagement.java
@@ -27,6 +27,9 @@
     @ApiModelProperty("审核要点")
     private String points;
 
+    @ApiModelProperty("公司id")
+    private Long companyId;
+
     /** 删除标志(0代表存在 2代表删除) */
     private String delFlag;
 
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/SysClauseManagementService.java b/multi-system/src/main/java/com/gkhy/exam/system/service/SysClauseManagementService.java
index 40a1808..165bc0b 100644
--- a/multi-system/src/main/java/com/gkhy/exam/system/service/SysClauseManagementService.java
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/SysClauseManagementService.java
@@ -6,9 +6,12 @@
 
 public interface SysClauseManagementService {
 
-    List<SysClauseManagement> getSysClauseManagements();
+    List<SysClauseManagement> getSysClauseManagements(Long companyId);
 
     int saveSysClauseManagement(SysClauseManagement sysClauseManagement);
 
     int delSysClauseManagement(Long id);
+
+
+    void copySysClauseManagements(Long sourceCompanyId, Long targetCompanyId);
 }
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysClauseManagementServiceImpl.java b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysClauseManagementServiceImpl.java
index a9811d1..8d15cae 100644
--- a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysClauseManagementServiceImpl.java
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysClauseManagementServiceImpl.java
@@ -12,8 +12,10 @@
 import com.gkhy.exam.system.service.SysClauseManagementService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDateTime;
+import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.List;
 
@@ -23,9 +25,11 @@
    private SysClauseManagementMapper sysClauseManagementMapper;
 
     @Override
-    public List<SysClauseManagement> getSysClauseManagements() {
+    public List<SysClauseManagement> getSysClauseManagements(Long companyId) {
         LambdaQueryWrapper<SysClauseManagement> lambdaQueryWrapper = Wrappers.<SysClauseManagement>lambdaQuery()
-                .eq(SysClauseManagement::getDelFlag, "0").orderByAsc(SysClauseManagement::getClauseNum);
+                .eq(SysClauseManagement::getDelFlag, "0").eq(SysClauseManagement::getCompanyId, companyId)
+                .orderByAsc(SysClauseManagement::getClauseNum);
+
         List<SysClauseManagement> sysClauseManagements = baseMapper.selectList(lambdaQueryWrapper);
         if (ObjectUtil.isNotEmpty(sysClauseManagements)){
             sysClauseManagements.sort(Comparator.comparing(SysClauseManagement::getClauseNum, new NaturalOrderComparator()));
@@ -36,11 +40,11 @@
 
     @Override
     public int saveSysClauseManagement(SysClauseManagement sysClauseManagement) {
-        if (!SecurityUtils.adminUser()){
-            throw new ApiException("没有权限访问!");
-        }
+        checkPer();
         LambdaQueryWrapper<SysClauseManagement> lambdaQueryWrapper = Wrappers.<SysClauseManagement>lambdaQuery()
-                .eq(SysClauseManagement::getDelFlag, "0").eq(SysClauseManagement::getClauseNum, sysClauseManagement.getClauseNum());
+                .eq(SysClauseManagement::getDelFlag, "0")
+                .eq(SysClauseManagement::getCompanyId, sysClauseManagement.getCompanyId())
+                .eq(SysClauseManagement::getClauseNum, sysClauseManagement.getClauseNum());
         if (sysClauseManagement.getId() == null){
             if (baseMapper.selectCount(lambdaQueryWrapper) > 0){
                 throw new ApiException("条款编号已存在!");
@@ -61,15 +65,52 @@
 
     }
 
+    private void checkPer(){
+        boolean admin = SecurityUtils.adminUser();
+        if (!admin) {
+            Integer userType = SecurityUtils.getLoginUser().getUser().getUserType();
+            if (userType != 6){
+                throw new ApiException("无权操作!");
+            }
+        }
+    }
+
     @Override
     public int delSysClauseManagement(Long id) {
-        if (!SecurityUtils.adminUser()){
-            throw new ApiException("没有权限访问!");
-        }
+        checkPer();
         //todo 校验已使用的?
         SysClauseManagement sysClauseManagement = new SysClauseManagement();
         sysClauseManagement.setDelFlag("1");
         sysClauseManagementMapper.update(sysClauseManagement, Wrappers.<SysClauseManagement>lambdaQuery().eq(SysClauseManagement::getId, id));
         return 1;
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void copySysClauseManagements(Long sourceCompanyId, Long targetCompanyId) {
+        List<SysClauseManagement> targetClauseManagements = baseMapper.selectList(Wrappers.<SysClauseManagement>lambdaQuery()
+                .eq(SysClauseManagement::getDelFlag, "0")
+                .eq(SysClauseManagement::getCompanyId, targetCompanyId));
+        if (ObjectUtil.isNotEmpty(targetClauseManagements)){
+            throw new ApiException("目标公司已存在条款!");
+        }
+
+        List<SysClauseManagement> sysClauseManagements = baseMapper.selectList(Wrappers.<SysClauseManagement>lambdaQuery()
+                .eq(SysClauseManagement::getDelFlag, "0")
+                .eq(SysClauseManagement::getCompanyId, sourceCompanyId));
+
+//        List<SysClauseManagement> add = new ArrayList<>();
+        sysClauseManagements.forEach(sysClauseManagement -> {
+            SysClauseManagement newClauseManagement = new SysClauseManagement();
+            newClauseManagement.setName(sysClauseManagement.getName());
+            newClauseManagement.setClauseNum(sysClauseManagement.getClauseNum());
+            newClauseManagement.setPoints(sysClauseManagement.getPoints());
+            newClauseManagement.setCompanyId(targetCompanyId);
+            newClauseManagement.setCreateBy(SecurityUtils.getUsername());
+            newClauseManagement.setCreateTime(LocalDateTime.now());
+//            add.add(newClauseManagement);
+            sysClauseManagementMapper.insert(newClauseManagement);
+        });
+
+    }
 }
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysDeptServiceImpl.java b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysDeptServiceImpl.java
index 7352de7..f9fa206 100644
--- a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysDeptServiceImpl.java
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysDeptServiceImpl.java
@@ -442,7 +442,8 @@
                 }
                 //加入职能
                 LambdaQueryWrapper<SysClauseManagement> queryWrapper = new LambdaQueryWrapper<>();
-                queryWrapper.select(SysClauseManagement::getClauseNum).eq(SysClauseManagement::getDelFlag, "0").orderByAsc(SysClauseManagement::getClauseNum);
+                queryWrapper.select(SysClauseManagement::getClauseNum).eq(SysClauseManagement::getDelFlag, "0")
+                        .eq(SysClauseManagement::getCompanyId, companyId).orderByAsc(SysClauseManagement::getClauseNum);
                 List<SysClauseManagement> sysClauseManagements = sysClauseManagementMapper.selectList(queryWrapper);
                 if (ObjectUtil.isNotEmpty(sysClauseManagements)){
                     Set<String> clauseNumSetSt = sysClauseManagements.stream()
@@ -476,6 +477,8 @@
 
                         sysFunctionalDistributions.add(sysFunctionalDistribution);
                     }
+                }else {
+                    throw new ApiException("请先初始化条款!");
                 }
 //                for (String s : DEPT_ROOT) {
 //                    SysFunctionalDistribution sysFunctionalDistribution = new SysFunctionalDistribution();

--
Gitblit v1.9.2