From 3134991a6c9315421ff3d4b3b4f1bd76bb5dbdc9 Mon Sep 17 00:00:00 2001
From: heheng <475597332@qq.com>
Date: Tue, 28 Apr 2026 17:01:08 +0800
Subject: [PATCH] 复制功能

---
 multi-system/src/main/java/com/gkhy/exam/system/service/impl/QualityServiceImpl.java              |  135 +++++++++++++++++++++++++-
 multi-system/src/main/java/com/gkhy/exam/system/service/QualityService.java                       |    2 
 multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/EnvironmentDemandRiskController.java |   12 ++
 multi-system/src/main/java/com/gkhy/exam/system/service/ExpectEvaluateService.java                |    3 
 multi-system/src/main/java/com/gkhy/exam/system/service/impl/ExpectDiscrenServiceImpl.java        |   92 ++++++++++++++++++
 multi-system/src/main/java/com/gkhy/exam/system/service/impl/ExpectEvaluateServiceImpl.java       |    1 
 multi-system/src/main/java/com/gkhy/exam/system/service/ExpectDiscrenService.java                 |    3 
 multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/QualityController.java               |   13 ++
 8 files changed, 252 insertions(+), 9 deletions(-)

diff --git a/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/EnvironmentDemandRiskController.java b/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/EnvironmentDemandRiskController.java
index a908e25..189f5c0 100644
--- a/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/EnvironmentDemandRiskController.java
+++ b/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/EnvironmentDemandRiskController.java
@@ -155,6 +155,18 @@
     }
 
 
+    @ApiOperation(value = "相关方需求和期望识别~评价复制")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "query", name = "companyId", dataType = "long", required = false, value = "公司id"),
+            @ApiImplicitParam(paramType = "query", name = "sourceYear", dataType = "String", required = true, value = "资源年份"),
+            @ApiImplicitParam(paramType = "query", name = "sourceMonth", dataType = "targetYear", required = true, value = "目标年份"),
+    })
+    @GetMapping("/expect/discren/copyExpectDiscren")
+    public CommonResult copyExpectDiscren(Long companyId,@RequestParam("sourceYear") String sourceYear, @RequestParam("targetYear")String targetYear){
+        return expectDiscrenService.copyExpectDiscren(companyId,sourceYear,targetYear);
+    }
+
+
     /**
      * 相关方需求识别新增
      * @param expectDiscren
diff --git a/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/QualityController.java b/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/QualityController.java
index 3fa5fbb..41e6a99 100644
--- a/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/QualityController.java
+++ b/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/QualityController.java
@@ -66,7 +66,16 @@
     public CommonResult listQualityAll(Quality quality){
         return CommonResult.success(qualityService.selectQualityListAll(quality));
     }
-
+    @ApiOperation(value = "质量目标等复制")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "query", name = "companyId", dataType = "long", required = false, value = "公司id"),
+            @ApiImplicitParam(paramType = "query", name = "sourceYear", dataType = "String", required = true, value = "资源年份"),
+            @ApiImplicitParam(paramType = "query", name = "sourceMonth", dataType = "targetYear", required = true, value = "目标年份"),
+    })
+    @GetMapping("/policy/copyQuality")
+    public CommonResult copyQuality(Long companyId,@RequestParam("sourceYear") String sourceYear, @RequestParam("targetYear")String targetYear){
+        return qualityService.copyQuality(companyId,sourceYear,targetYear);
+    }
     /**
      * 质量目标新增
      * @param qualityTargetReq
@@ -164,6 +173,8 @@
         return CommonResult.success(qualityAccomplishService.selectQualityAccomplishList(qualityReq));
     }
 
+
+
     /**
      * 质量目标完成情况新增
      * @param qualityAccomplish
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/ExpectDiscrenService.java b/multi-system/src/main/java/com/gkhy/exam/system/service/ExpectDiscrenService.java
index c631c10..c7bd8d3 100644
--- a/multi-system/src/main/java/com/gkhy/exam/system/service/ExpectDiscrenService.java
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/ExpectDiscrenService.java
@@ -16,4 +16,7 @@
 
     CommonResult selectExpectDiscrenListAll(ExpectDiscren expectDiscren);
 
+
+    CommonResult copyExpectDiscren(Long companyId,String sourceYear,String targetYear);
+
 }
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/ExpectEvaluateService.java b/multi-system/src/main/java/com/gkhy/exam/system/service/ExpectEvaluateService.java
index 9abab27..1bb3b26 100644
--- a/multi-system/src/main/java/com/gkhy/exam/system/service/ExpectEvaluateService.java
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/ExpectEvaluateService.java
@@ -13,4 +13,7 @@
     CommonResult updateExpectEvaluate(ExpectEvaluate expectEvaluate);
 
     CommonResult deletedExpectEvaluate(Integer expectEvaluateId);
+
+
+
 }
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/QualityService.java b/multi-system/src/main/java/com/gkhy/exam/system/service/QualityService.java
index 33b053a..a6fe458 100644
--- a/multi-system/src/main/java/com/gkhy/exam/system/service/QualityService.java
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/QualityService.java
@@ -16,4 +16,6 @@
     CommonResult deletedQuality(Integer qualityId);
 
     CommonResult selectQualityListAll(Quality quality);
+
+    CommonResult copyQuality(Long companyId,String sourceYear,String targetYear);
 }
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/ExpectDiscrenServiceImpl.java b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/ExpectDiscrenServiceImpl.java
index fec0d0c..588ae22 100644
--- a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/ExpectDiscrenServiceImpl.java
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/ExpectDiscrenServiceImpl.java
@@ -1,5 +1,8 @@
 package com.gkhy.exam.system.service.impl;
 
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.gkhy.exam.common.api.CommonPage;
 import com.gkhy.exam.common.api.CommonResult;
@@ -9,8 +12,10 @@
 import com.gkhy.exam.system.domain.ExpectContent;
 import com.gkhy.exam.system.domain.ExpectContentMess;
 import com.gkhy.exam.system.domain.ExpectDiscren;
+import com.gkhy.exam.system.domain.ExpectEvaluate;
 import com.gkhy.exam.system.mapper.ExpectContentMapper;
 import com.gkhy.exam.system.mapper.ExpectDiscrenMapper;
+import com.gkhy.exam.system.mapper.ExpectEvaluateMapper;
 import com.gkhy.exam.system.service.ExpectDiscrenService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -28,6 +33,9 @@
 
     @Autowired
     private ExpectContentMapper expectContentMapper;
+
+    @Autowired
+    private ExpectEvaluateMapper expectEvaluateMapper;
 
 
     @Override
@@ -125,4 +133,88 @@
         }
         return CommonResult.success(expectDiscrens);
     }
+
+    @Override
+    @Transactional
+    public CommonResult copyExpectDiscren(Long companyId,String sourceYear, String targetYear) {
+        if (companyId==null){
+         companyId = SecurityUtils.getCompanyId();
+        }
+        LambdaQueryWrapper<ExpectDiscren> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(ExpectDiscren::getCompanyId, companyId)
+                .eq(ExpectDiscren::getDelFlag, 1).eq(ExpectDiscren::getYear, targetYear);
+        List<ExpectDiscren> expectDiscrensTarget = expectDiscrenMapper.selectList(queryWrapper);
+        if (ObjectUtil.isNotEmpty(expectDiscrensTarget)){
+            for (ExpectDiscren expectDiscren : expectDiscrensTarget) {
+                deletedExpectDiscren(expectDiscren.getId());
+                LambdaQueryWrapper<ExpectContent> queryWrapperContent = new LambdaQueryWrapper<>();
+                queryWrapperContent.eq(ExpectContent::getExpectDiscrenId, expectDiscren.getId());
+                List<ExpectContent> expectContents = expectContentMapper.selectList(queryWrapperContent);
+                expectContentMapper.deletedByDiscrenId(expectDiscren.getId());
+                if (ObjectUtil.isNotEmpty(expectContents)){
+                    expectContentMapper.deletedByConentId(expectDiscren.getId());
+                }
+
+                LambdaUpdateWrapper<ExpectEvaluate> updateWrapper = new LambdaUpdateWrapper<>();
+                updateWrapper.set(ExpectEvaluate::getDelFlag, 2).set(ExpectEvaluate::getUpdateBy, SecurityUtils.getUsername())
+                        .eq(ExpectEvaluate::getUpdateTime, LocalDateTime.now()).eq(ExpectEvaluate::getExpectDiscrenId, expectDiscren.getId());
+                expectEvaluateMapper.update(new ExpectEvaluate(), updateWrapper);
+            }
+        }
+
+        LambdaQueryWrapper<ExpectDiscren> queryWrapperSource = new LambdaQueryWrapper<>();
+        queryWrapperSource.eq(ExpectDiscren::getCompanyId, companyId)
+                .eq(ExpectDiscren::getDelFlag, 1).eq(ExpectDiscren::getYear, sourceYear);
+        List<ExpectDiscren> expectDiscrens = expectDiscrenMapper.selectList(queryWrapperSource);
+        if (ObjectUtil.isEmpty(expectDiscrens)){
+            return CommonResult.success("无相关数据");
+        }
+        for (ExpectDiscren expectDiscren : expectDiscrens) {
+            Integer oldId = expectDiscren.getId();
+            expectDiscren.setId(null);
+            expectDiscren.setYear(targetYear);
+            expectDiscren.setCreateBy(SecurityUtils.getUsername());
+            expectDiscren.setCreateTime(LocalDateTime.now());
+            expectDiscren.setUpdateBy(SecurityUtils.getUsername());
+            expectDiscren.setUpdateTime(LocalDateTime.now());
+            expectDiscren.setFictionTime(LocalDateTime.now());
+            expectDiscrenMapper.insert(expectDiscren);
+            List<ExpectContent> expectContents = expectContentMapper.selectByDiscrenId(oldId);
+            if (ObjectUtil.isNotEmpty(expectContents)){
+                for (ExpectContent expectContent : expectContents) {
+                    List<ExpectContentMess> expectContentMesses = expectContentMapper.selectByContentId(expectContent.getId());
+                    expectContent.setId(null);
+                    expectContent.setExpectDiscrenId(expectDiscren.getId());
+                    expectContentMapper.insert(expectContent);
+
+                    if (ObjectUtil.isNotEmpty(expectContentMesses)){
+                        for (ExpectContentMess expectContentMess : expectContentMesses) {
+                            expectContentMess.setId(null);
+                            expectContentMess.setExpectContentId(expectContent.getId());
+                        }
+                        expectContentMapper.insertContentMess(expectContentMesses);
+                    }
+
+                }
+            }
+
+            LambdaQueryWrapper<ExpectEvaluate> queryWrapper1 = new LambdaQueryWrapper<>();
+            queryWrapper1.eq(ExpectEvaluate::getExpectDiscrenId, oldId).eq(ExpectEvaluate::getDelFlag, 1);
+            List<ExpectEvaluate> expectEvaluates = expectEvaluateMapper.selectList(queryWrapper1);
+            if (ObjectUtil.isNotEmpty(expectEvaluates)){
+                for (ExpectEvaluate expectEvaluate : expectEvaluates) {
+                    expectEvaluate.setId(null);
+                    expectEvaluate.setExpectDiscrenId(expectDiscren.getId());
+                    expectEvaluate.setCreateBy(SecurityUtils.getUsername());
+                    expectEvaluate.setCreateTime(LocalDateTime.now());
+                    expectEvaluate.setUpdateBy(SecurityUtils.getUsername());
+                    expectEvaluate.setUpdateTime(LocalDateTime.now());
+                    expectEvaluate.setEvaluateTime(LocalDateTime.now());
+                    expectEvaluateMapper.insert(expectEvaluate);
+                }
+            }
+
+        }
+        return CommonResult.success();
+    }
 }
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/ExpectEvaluateServiceImpl.java b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/ExpectEvaluateServiceImpl.java
index 52a9f15..7e31a11 100644
--- a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/ExpectEvaluateServiceImpl.java
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/ExpectEvaluateServiceImpl.java
@@ -90,4 +90,5 @@
         expectEvaluateMapper.updateById(expectEvaluate);
         return CommonResult.success();
     }
+
 }
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/QualityServiceImpl.java b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/QualityServiceImpl.java
index c51f153..19bc034 100644
--- a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/QualityServiceImpl.java
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/QualityServiceImpl.java
@@ -1,5 +1,8 @@
 package com.gkhy.exam.system.service.impl;
 
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.gkhy.exam.common.api.CommonPage;
 import com.gkhy.exam.common.api.CommonResult;
@@ -8,21 +11,16 @@
 import com.gkhy.exam.common.exception.ApiException;
 import com.gkhy.exam.common.utils.PageUtils;
 import com.gkhy.exam.common.utils.SecurityUtils;
-import com.gkhy.exam.system.domain.Quality;
-import com.gkhy.exam.system.domain.QualityTarget;
-import com.gkhy.exam.system.domain.QualityTargetMess;
-import com.gkhy.exam.system.domain.SysCompany;
+import com.gkhy.exam.system.domain.*;
 import com.gkhy.exam.system.domain.req.QualityTargetReq;
 import com.gkhy.exam.system.domain.vo.QualityTargetVo;
-import com.gkhy.exam.system.mapper.QualityDecomposeMapper;
-import com.gkhy.exam.system.mapper.QualityMapper;
-import com.gkhy.exam.system.mapper.QualityTargetMapper;
-import com.gkhy.exam.system.mapper.SysDeptMapper;
+import com.gkhy.exam.system.mapper.*;
 import com.gkhy.exam.system.service.QualityService;
 import com.gkhy.exam.system.service.SysCompanyService;
 import org.springframework.beans.BeanUtils;
 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.List;
@@ -40,6 +38,8 @@
     private SysCompanyService sysCompanyService;
     @Autowired
     private SysDeptMapper sysDeptMapper;
+    @Autowired
+    private QualityAccomplishMapper qualityAccomplishMapper;
 
     @Override
     public CommonPage selectQualityList(Quality quality) {
@@ -147,4 +147,123 @@
         }
         return CommonResult.success(qualityTargetVos);
     }
+
+    @Override
+    @Transactional
+    public CommonResult copyQuality(Long companyId, String sourceYear, String targetYear) {
+        if (companyId == null){
+            companyId = SecurityUtils.getCompanyId();
+        }
+
+        LambdaQueryWrapper<Quality> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(Quality::getCompanyId,companyId)
+                .eq(Quality::getYear,targetYear).eq(Quality::getDelFlag,1);
+        List<Quality> qualitys = qualityMapper.selectList(queryWrapper);
+        if (ObjectUtil.isNotEmpty(qualitys)){
+            for (Quality quality : qualitys) {
+                deletedQuality(quality.getId());
+                LambdaQueryWrapper<QualityTarget> queryWrapper1 = new LambdaQueryWrapper<>();
+                queryWrapper1.eq(QualityTarget::getQualityId,quality.getId()).eq(QualityTarget::getDelFlag,1);
+                List<QualityTarget> qualityTargets = qualityTargetMapper.selectList(queryWrapper1);
+                qualityTargetMapper.deleteByQualityIds(quality.getId());
+                if (ObjectUtil.isNotEmpty(qualityTargets)){
+                    qualityTargetMapper.deletedByQualityTargetId(quality.getId());
+                }
+                LambdaUpdateWrapper<QualityDecompose> updateWrapper = new LambdaUpdateWrapper<>();
+                updateWrapper.eq(QualityDecompose::getQualityId,quality.getId()).eq(QualityDecompose::getDelFlag,1)
+                        .set(QualityDecompose::getDelFlag,2).set(QualityDecompose::getUpdateTime,LocalDateTime.now())
+                        .set(QualityDecompose::getUpdateBy,SecurityUtils.getUsername());
+                qualityDecomposeMapper.update(new QualityDecompose(),updateWrapper);
+                LambdaUpdateWrapper<QualityAccomplish> updateWrapper1 = new LambdaUpdateWrapper<>();
+                updateWrapper1.eq(QualityAccomplish::getQualityId,quality.getId()).eq(QualityAccomplish::getDelFlag,1)
+                        .set(QualityAccomplish::getDelFlag,2).set(QualityAccomplish::getUpdateTime,LocalDateTime.now())
+                        .set(QualityAccomplish::getUpdateBy,SecurityUtils.getUsername());
+                qualityAccomplishMapper.update(new QualityAccomplish(),updateWrapper1);
+            }
+        }
+        LambdaQueryWrapper<Quality> queryWrapperSource = new LambdaQueryWrapper<>();
+        queryWrapperSource.eq(Quality::getCompanyId,companyId)
+                .eq(Quality::getYear,sourceYear).eq(Quality::getDelFlag,1);
+
+        List<Quality> qualitys1 = qualityMapper.selectList(queryWrapperSource);
+        if (ObjectUtil.isNotEmpty(qualitys1)){
+
+            for (Quality quality : qualitys1) {
+                Integer oldId = quality.getId();
+                quality.setId( null);
+                quality.setYear(targetYear);
+                quality.setCreateBy(SecurityUtils.getUsername());
+                quality.setCreateTime(LocalDateTime.now());
+                quality.setUpdateBy(SecurityUtils.getUsername());
+                quality.setUpdateTime(LocalDateTime.now());
+                quality.setDelFlag(1);
+                quality.setCompilationTime(LocalDateTime.now());
+                quality.setQualityTime(LocalDateTime.now());
+                qualityMapper.insert(quality);
+                List<QualityTarget> qualityTargets = qualityTargetMapper.selectByQualityId(oldId);
+                if (ObjectUtil.isNotEmpty(qualityTargets)){
+                    for (QualityTarget qualityTarget : qualityTargets) {
+                        List<QualityTargetMess> qualityTargetMesses = qualityTargetMapper.selectBYQualityTargetId(qualityTarget.getId());
+                        qualityTarget.setId(null);
+                        qualityTarget.setQualityId(quality.getId());
+                        qualityTarget.setCreateBy(SecurityUtils.getUsername());
+                        qualityTarget.setCreateTime(LocalDateTime.now());
+                        qualityTarget.setUpdateBy(SecurityUtils.getUsername());
+                        qualityTarget.setUpdateTime(LocalDateTime.now());
+                        qualityTargetMapper.insert(qualityTarget);
+
+                        if (ObjectUtil.isNotEmpty(qualityTargetMesses)){
+                            for (QualityTargetMess qualityTargetMess : qualityTargetMesses) {
+                                qualityTargetMess.setId(null);
+                                qualityTargetMess.setQualityTargetId(qualityTarget.getId());
+                            }
+                            qualityTargetMapper.insertQualityTargetMess(qualityTargetMesses);
+                        }
+                    }
+                }
+
+                LambdaQueryWrapper<QualityDecompose> queryWrapper1 = new LambdaQueryWrapper<>();
+                queryWrapper1.eq(QualityDecompose::getQualityId,oldId).eq(QualityDecompose::getDelFlag,1);
+                List<QualityDecompose> qualityDecomposes = qualityDecomposeMapper.selectList(queryWrapper1);
+                if (ObjectUtil.isNotEmpty(qualityDecomposes)){
+                    for (QualityDecompose qualityDecompose : qualityDecomposes) {
+                        qualityDecompose.setId(null);
+                        qualityDecompose.setQualityId(quality.getId());
+                        qualityDecompose.setCreateBy(SecurityUtils.getUsername());
+                        qualityDecompose.setCreateTime(LocalDateTime.now());
+                        qualityDecompose.setUpdateBy(SecurityUtils.getUsername());
+                        qualityDecompose.setUpdateTime(LocalDateTime.now());
+                        qualityDecompose.setDelFlag(1);
+                        qualityDecompose.setCheckTime(LocalDateTime.now());
+                        qualityDecompose.setRatifyTime(LocalDateTime.now());
+                        qualityDecomposeMapper.insert(qualityDecompose);
+                    }
+                }
+
+                LambdaQueryWrapper<QualityAccomplish> queryWrapper2 = new LambdaQueryWrapper<>();
+                queryWrapper2.eq(QualityAccomplish::getQualityId,oldId).eq(QualityAccomplish::getDelFlag,1);
+                List<QualityAccomplish> qualityAccomplishes = qualityAccomplishMapper.selectList(queryWrapper2);
+                if (ObjectUtil.isNotEmpty(qualityAccomplishes)){
+                    for (QualityAccomplish qualityAccomplish : qualityAccomplishes) {
+                        qualityAccomplish.setId(null);
+                        qualityAccomplish.setQualityId(quality.getId());
+                        qualityAccomplish.setCreateBy(SecurityUtils.getUsername());
+                        qualityAccomplish.setCreateTime(LocalDateTime.now());
+                        qualityAccomplish.setUpdateBy(SecurityUtils.getUsername());
+                        qualityAccomplish.setUpdateTime(LocalDateTime.now());
+                        qualityAccomplish.setDelFlag(1);
+                        qualityAccomplish.setChargeTime(LocalDateTime.now());
+                        qualityAccomplishMapper.insert(qualityAccomplish);
+                    }
+                }
+
+            }
+
+
+
+        }
+
+
+        return CommonResult.success();
+    }
 }

--
Gitblit v1.9.2