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/ExpectDiscrenServiceImpl.java |   92 ++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 92 insertions(+), 0 deletions(-)

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();
+    }
 }

--
Gitblit v1.9.2