From c26e227abe288476c11b0a8b7875045e71efa14c Mon Sep 17 00:00:00 2001
From: “djh” <“3298565835@qq.com”>
Date: Thu, 30 Apr 2026 17:30:00 +0800
Subject: [PATCH] 新增修改

---
 multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/InternalAuditController.java       |   32 +++
 multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/ManagementPlanController.java      |   12 +
 multi-system/src/main/java/com/gkhy/exam/system/service/InternalAuditCarryService.java          |    2 
 multi-system/src/main/java/com/gkhy/exam/system/service/ManagementReviewService.java            |    4 
 multi-system/src/main/java/com/gkhy/exam/system/service/impl/ManagementReviewServiceImpl.java   |   76 ++++++++
 multi-system/src/main/resources/mapper/system/ManagementReviewMapper.xml                        |    3 
 multi-system/src/main/java/com/gkhy/exam/system/mapper/ManagementReviewMapper.java              |    2 
 multi-system/src/main/java/com/gkhy/exam/system/service/ManagementPlanService.java              |    2 
 multi-system/src/main/resources/mapper/system/ExPhaseStudentMapper.xml                          |    3 
 multi-system/src/main/java/com/gkhy/exam/system/service/impl/InternalAuditCarryServiceImpl.java |   89 +++++++++
 multi-system/src/main/java/com/gkhy/exam/system/service/impl/InternalAuditCheckServiceImpl.java |   84 +++++++++
 multi-system/src/main/java/com/gkhy/exam/system/service/impl/InternalAuditPlanServiceImpl.java  |   66 +++++++
 multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/ManagementReviewController.java    |   24 ++
 multi-system/src/main/java/com/gkhy/exam/system/service/impl/ManagementPlanServiceImpl.java     |   77 ++++++++
 multi-system/src/main/resources/mapper/system/InternalAuditCarryMapper.xml                      |    3 
 multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/InternalAuditCheckController.java  |   20 ++
 multi-system/src/main/resources/mapper/system/InternalAuditCheckMapper.xml                      |    3 
 multi-system/src/main/resources/mapper/system/InternalAuditPlanMapper.xml                       |    3 
 multi-system/src/main/java/com/gkhy/exam/system/mapper/InternalAuditCheckMapper.java            |    2 
 multi-system/src/main/java/com/gkhy/exam/system/service/InternalAuditCheckService.java          |    4 
 multi-system/src/main/java/com/gkhy/exam/system/service/InternalAuditPlanService.java           |    2 
 21 files changed, 499 insertions(+), 14 deletions(-)

diff --git a/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/InternalAuditCheckController.java b/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/InternalAuditCheckController.java
index cd77dfc..f8ac9f5 100644
--- a/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/InternalAuditCheckController.java
+++ b/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/InternalAuditCheckController.java
@@ -35,10 +35,11 @@
             @ApiImplicitParam(paramType = "query", name = "pageNum", dataType = "int", required = false, value = "当前页,默认1"),
             @ApiImplicitParam(paramType = "query", name = "pageSize", dataType = "int", required = false, value = "每页数目,默认10"),
             @ApiImplicitParam(paramType = "query", name = "companyId", dataType = "int", required = false, value = "公司id"),
+            @ApiImplicitParam(paramType = "query", name = "year", dataType = "String" , required = false, value = "年份")
     })
     @GetMapping("/selectInternalAuditCheckList")
-    public CommonResult selectInternalAuditCheckList(Integer companyId){
-        return CommonResult.success(internalAuditCheckService.selectInternalAuditCheckList(companyId));
+    public CommonResult selectInternalAuditCheckList(Integer companyId, String year){
+        return CommonResult.success(internalAuditCheckService.selectInternalAuditCheckList(companyId,year));
     }
     @RepeatSubmit
     @ApiOperation(value = "新增内审检查")
@@ -60,6 +61,21 @@
         return internalAuditCheckService.deletedInternalAuditCheck(id);
     }
 
+
+    @RepeatSubmit
+    @ApiOperation(value = "一键复制内审检查")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "query", name = "companyId", dataType = "int", required = false, value = "公司id,不传则使用当前登录用户公司"),
+            @ApiImplicitParam(paramType = "query", name = "sourceYear", dataType = "String", required = true, value = "源年份"),
+            @ApiImplicitParam(paramType = "query", name = "targetYear", dataType = "String", required = true, value = "目标年份"),
+    })
+    @GetMapping("/copyInternalAuditCheck")
+    public CommonResult copyInternalAuditCheck(
+            @RequestParam(required = false) Integer companyId,
+            @RequestParam String sourceYear,
+            @RequestParam String targetYear) {
+        return internalAuditCheckService.copyInternalAuditCheck(companyId, sourceYear, targetYear);
+    }
 //    @ApiOperation(value = "内审检查详情")
 //    @ApiImplicitParams({
 //            @ApiImplicitParam(paramType = "query", name = "id", dataType = "int", required = true, value = "id"),
diff --git a/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/InternalAuditController.java b/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/InternalAuditController.java
index 4343dff..87ee6d3 100644
--- a/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/InternalAuditController.java
+++ b/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/InternalAuditController.java
@@ -1,5 +1,6 @@
 package com.gkhy.exam.admin.controller.web;
 
+import com.gkhy.exam.common.annotation.RepeatSubmit;
 import com.gkhy.exam.common.api.CommonResult;
 import com.gkhy.exam.system.domain.*;
 import com.gkhy.exam.system.service.*;
@@ -86,6 +87,21 @@
     @GetMapping("/plan/deleted")
     public CommonResult deletedQuality(@RequestParam("planId") Integer planId){
         return planService.deletedPlan(planId);
+    }
+
+    @RepeatSubmit
+    @ApiOperation(value = "一键复制内审策划")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "query", name = "companyId", dataType = "int", required = false, value = "公司id,不传则使用当前登录用户公司"),
+            @ApiImplicitParam(paramType = "query", name = "sourceYear", dataType = "String", required = true, value = "源年份"),
+            @ApiImplicitParam(paramType = "query", name = "targetYear", dataType = "String", required = true, value = "目标年份"),
+    })
+    @GetMapping("/plan/copy")
+    public CommonResult copyInternalAuditPlan(
+            @RequestParam(required = false) Integer companyId,
+            @RequestParam String sourceYear,
+            @RequestParam String targetYear) {
+        return planService.copyInternalAuditPlan(companyId, sourceYear, targetYear);
     }
 
 
@@ -239,6 +255,22 @@
         return carryService.deletedCarry(carryId);
     }
 
+    @RepeatSubmit
+    @ApiOperation(value = "一键复制内审计划实施")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "query", name = "companyId", dataType = "int", required = false, value = "公司id,不传则使用当前登录用户公司"),
+            @ApiImplicitParam(paramType = "query", name = "sourceYear", dataType = "String", required = true, value = "源年份"),
+            @ApiImplicitParam(paramType = "query", name = "targetYear", dataType = "String", required = true, value = "目标年份"),
+    })
+    @GetMapping("/carry/copy")
+    public CommonResult copyInternalAuditCarry(
+            @RequestParam(required = false) Integer companyId,
+            @RequestParam String sourceYear,
+            @RequestParam String targetYear) {
+        return carryService.copyInternalAuditCarry(companyId, sourceYear, targetYear);
+    }
+
+
 
 
 
diff --git a/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/ManagementPlanController.java b/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/ManagementPlanController.java
index b2f3b57..8c2e195 100644
--- a/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/ManagementPlanController.java
+++ b/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/ManagementPlanController.java
@@ -61,4 +61,16 @@
         return managementPlanService.deletedManagementPlan(id);
     }
 
+    @RepeatSubmit
+    @ApiOperation(value = "一键复制管理审批计划")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "query", name = "companyId", dataType = "int", required = false, value = "公司id,不传则使用当前登录用户公司"),
+            @ApiImplicitParam(paramType = "query", name = "sourceYear", dataType = "String", required = true, value = "源年份"),
+            @ApiImplicitParam(paramType = "query", name = "targetYear", dataType = "String", required = true, value = "目标年份"),
+    })
+    @GetMapping("/copyManagementPlan")
+    public CommonResult copyManagementPlan(@RequestParam(required = false) Integer companyId, @RequestParam String sourceYear, @RequestParam String targetYear) {
+        return managementPlanService.copyManagementPlan(companyId, sourceYear, targetYear);
+    }
+
 }
diff --git a/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/ManagementReviewController.java b/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/ManagementReviewController.java
index 1d7b227..7ee663a 100644
--- a/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/ManagementReviewController.java
+++ b/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/ManagementReviewController.java
@@ -35,11 +35,12 @@
             @ApiImplicitParam(paramType = "query", name = "pageNum", dataType = "int", required = false, value = "当前页,默认1"),
             @ApiImplicitParam(paramType = "query", name = "pageSize", dataType = "int", required = false, value = "每页数目,默认10"),
             @ApiImplicitParam(paramType = "query", name = "companyId", dataType = "int", required = false, value = "公司id"),
-            @ApiImplicitParam(paramType = "query", name = "reviewType", dataType = "int", required = true, value = "1会议、2输入、3报告")
+            @ApiImplicitParam(paramType = "query", name = "reviewType", dataType = "int", required = true, value = "1会议、2输入、3报告"),
+            @ApiImplicitParam(paramType = "query", name = "year", dataType = "int", required = false, value = "年份")
     })
     @GetMapping("/selectMeetingsList")
-    public CommonResult selectMeetingsList(Integer companyId,@RequestParam("reviewType") Integer reviewType){
-        return CommonResult.success(managementReviewService.selectManagementReviewList(companyId,reviewType));
+    public CommonResult selectMeetingsList(Integer companyId,@RequestParam("reviewType") Integer reviewType,String year){
+        return CommonResult.success(managementReviewService.selectManagementReviewList(companyId,reviewType,year));
     }
     @RepeatSubmit
     @ApiOperation(value = "新增管理评审会议、输入、报告")
@@ -61,4 +62,21 @@
         return managementReviewService.deletedManagementReview(id);
     }
 
+    @RepeatSubmit
+    @ApiOperation(value = "一键复制管理评审会议、输入、报告")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "query", name = "companyId", dataType = "int", required = false, value = "公司id,不传则使用当前登录用户公司"),
+            @ApiImplicitParam(paramType = "query", name = "sourceYear", dataType = "String", required = true, value = "源年份"),
+            @ApiImplicitParam(paramType = "query", name = "targetYear", dataType = "String", required = true, value = "目标年份"),
+            @ApiImplicitParam(paramType = "query", name = "reviewType", dataType = "int", required = true, value = "评审类型:1会议、2输入、3报告")
+    })
+    @GetMapping("/copyManagementReview")
+    public CommonResult copyManagementReview(
+            @RequestParam(required = false) Integer companyId,
+            @RequestParam String sourceYear,
+            @RequestParam String targetYear,
+            @RequestParam Integer reviewType) {
+        return managementReviewService.copyManagementReview(companyId, sourceYear, targetYear, reviewType);
+    }
+
 }
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/mapper/InternalAuditCheckMapper.java b/multi-system/src/main/java/com/gkhy/exam/system/mapper/InternalAuditCheckMapper.java
index b213a7a..8b44759 100644
--- a/multi-system/src/main/java/com/gkhy/exam/system/mapper/InternalAuditCheckMapper.java
+++ b/multi-system/src/main/java/com/gkhy/exam/system/mapper/InternalAuditCheckMapper.java
@@ -17,7 +17,7 @@
  */
 @Mapper
 public interface InternalAuditCheckMapper extends BaseMapper<InternalAuditCheck> {
-    List<InternalAuditCheck> selectInternalAuditCheckList(@Param("companyId") Integer companyId);
+    List<InternalAuditCheck> selectInternalAuditCheckList(@Param("companyId") Integer companyId, @Param("year") String year);
 
     int getStatisticData(@Param("companyId") Integer companyId, @Param("startTime") String startTime, @Param("endTime") String endTime);
 
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/mapper/ManagementReviewMapper.java b/multi-system/src/main/java/com/gkhy/exam/system/mapper/ManagementReviewMapper.java
index 9d6c3ed..e83102c 100644
--- a/multi-system/src/main/java/com/gkhy/exam/system/mapper/ManagementReviewMapper.java
+++ b/multi-system/src/main/java/com/gkhy/exam/system/mapper/ManagementReviewMapper.java
@@ -18,5 +18,5 @@
 @Mapper
 public interface ManagementReviewMapper extends BaseMapper<ManagementReview> {
 
-    List<ManagementReview> selectManagementReviewList(@Param("companyId") Integer companyId, @Param("reviewType") Integer reviewType);
+    List<ManagementReview> selectManagementReviewList(@Param("companyId") Integer companyId, @Param("reviewType") Integer reviewType, @Param("year") String year);
 }
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/InternalAuditCarryService.java b/multi-system/src/main/java/com/gkhy/exam/system/service/InternalAuditCarryService.java
index 8aa6c49..06a3b3b 100644
--- a/multi-system/src/main/java/com/gkhy/exam/system/service/InternalAuditCarryService.java
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/InternalAuditCarryService.java
@@ -13,4 +13,6 @@
     CommonResult updateCarry(InternalAuditCarry carry);
 
     CommonResult deletedCarry(Integer carryId);
+
+    CommonResult copyInternalAuditCarry(Integer companyId, String sourceYear, String targetYear);
 }
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/InternalAuditCheckService.java b/multi-system/src/main/java/com/gkhy/exam/system/service/InternalAuditCheckService.java
index 22ca8d8..297c19d 100644
--- a/multi-system/src/main/java/com/gkhy/exam/system/service/InternalAuditCheckService.java
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/InternalAuditCheckService.java
@@ -17,7 +17,7 @@
  * @since 2025-07-10 15:11:50
  */
 public interface InternalAuditCheckService extends IService<InternalAuditCheck> {
-    CommonPage selectInternalAuditCheckList(Integer companyId);
+    CommonPage selectInternalAuditCheckList(Integer companyId, String year);
 
     CommonResult insertInternalAuditCheck(InternalAuditCheck internalAuditCheck);
 
@@ -29,5 +29,7 @@
 
     List<InternalAuditCheck> selectByMap(Map<String, Object> stringObjectHashMap);
 
+    CommonResult copyInternalAuditCheck(Integer companyId, String sourceYear, String targetYear);
+
 //    CommonResult internalAuditCheckInfo(Integer id);
 }
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/InternalAuditPlanService.java b/multi-system/src/main/java/com/gkhy/exam/system/service/InternalAuditPlanService.java
index 03c16c9..4aa2ab0 100644
--- a/multi-system/src/main/java/com/gkhy/exam/system/service/InternalAuditPlanService.java
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/InternalAuditPlanService.java
@@ -13,4 +13,6 @@
     CommonResult updatePlan(InternalAuditPlan plan);
 
     CommonResult deletedPlan(Integer planId);
+
+    CommonResult copyInternalAuditPlan(Integer companyId, String sourceYear, String targetYear);
 }
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/ManagementPlanService.java b/multi-system/src/main/java/com/gkhy/exam/system/service/ManagementPlanService.java
index 5901495..6fb1a6e 100644
--- a/multi-system/src/main/java/com/gkhy/exam/system/service/ManagementPlanService.java
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/ManagementPlanService.java
@@ -23,4 +23,6 @@
 
     CommonResult deletedManagementPlan(Integer id);
 
+    CommonResult copyManagementPlan(Integer companyId, String sourceYear, String targetYear);
+
 }
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/ManagementReviewService.java b/multi-system/src/main/java/com/gkhy/exam/system/service/ManagementReviewService.java
index cb3b65c..e695780 100644
--- a/multi-system/src/main/java/com/gkhy/exam/system/service/ManagementReviewService.java
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/ManagementReviewService.java
@@ -14,11 +14,13 @@
  * @since 2025-07-10 15:11:50
  */
 public interface ManagementReviewService extends IService<ManagementReview> {
-    CommonPage selectManagementReviewList(Integer companyId,Integer reviewType);
+    CommonPage selectManagementReviewList(Integer companyId,Integer reviewType,String year);
 
     CommonResult insertManagementReview(ManagementReview managementReview);
 
     CommonResult updateManagementReview(ManagementReview managementReview);
 
     CommonResult deletedManagementReview(Integer id);
+
+    CommonResult copyManagementReview(Integer companyId, String sourceYear, String targetYear, Integer reviewType);
 }
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/InternalAuditCarryServiceImpl.java b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/InternalAuditCarryServiceImpl.java
index ee96db9..275c285 100644
--- a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/InternalAuditCarryServiceImpl.java
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/InternalAuditCarryServiceImpl.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.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.gkhy.exam.common.api.CommonPage;
@@ -18,6 +21,7 @@
 import com.gkhy.exam.system.service.InternalAuditCheckService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
 import java.time.LocalDate;
@@ -297,4 +301,89 @@
         carryMapper.updateById(internalAuditCarry);
         return CommonResult.success();
     }
+
+
+    @Override
+    @Transactional
+    public CommonResult copyInternalAuditCarry(Integer companyId, String sourceYear, String targetYear) {
+        if (companyId == null) {
+            companyId = SecurityUtils.getCompanyId().intValue();
+        }
+
+        if (sourceYear == null || sourceYear.trim().isEmpty()) {
+            return CommonResult.failed("源年份不能为空");
+        }
+
+        if (targetYear == null || targetYear.trim().isEmpty()) {
+            return CommonResult.failed("目标年份不能为空");
+        }
+
+        LambdaUpdateWrapper<InternalAuditCarry> deleteWrapper = new LambdaUpdateWrapper<>();
+        deleteWrapper.eq(InternalAuditCarry::getCompanyId, companyId)
+                .eq(InternalAuditCarry::getYear, targetYear)
+                .eq(InternalAuditCarry::getDelFlag, 1)
+                .set(InternalAuditCarry::getDelFlag, 2)
+                .set(InternalAuditCarry::getUpdateBy, SecurityUtils.getUsername())
+                .set(InternalAuditCarry::getUpdateTime, LocalDateTime.now());
+        carryMapper.update(new InternalAuditCarry(), deleteWrapper);
+
+        LambdaQueryWrapper<InternalAuditCarry> queryWrapperSource = new LambdaQueryWrapper<>();
+        queryWrapperSource.eq(InternalAuditCarry::getCompanyId, companyId)
+                .eq(InternalAuditCarry::getYear, sourceYear)
+                .eq(InternalAuditCarry::getDelFlag, 1);
+        List<InternalAuditCarry> sourceCarries = carryMapper.selectList(queryWrapperSource);
+
+        if (ObjectUtil.isEmpty(sourceCarries)) {
+            return CommonResult.success("源年份无相关数据");
+        }
+
+        for (InternalAuditCarry sourceCarry : sourceCarries) {
+            InternalAuditCarry newCarry = new InternalAuditCarry();
+            newCarry.setCompanyId(sourceCarry.getCompanyId());
+            newCarry.setYear(targetYear);
+            newCarry.setAuditPurpose(sourceCarry.getAuditPurpose());
+            newCarry.setReviewBasis(sourceCarry.getReviewBasis());
+            newCarry.setReviewScope(sourceCarry.getReviewScope());
+            newCarry.setReviewStart(sourceCarry.getReviewStart());
+            newCarry.setReviewEnd(sourceCarry.getReviewEnd());
+            newCarry.setReviewPerson(sourceCarry.getReviewPerson());
+            newCarry.setFirstStarttime(sourceCarry.getFirstStarttime());
+            newCarry.setFirstEndtime(sourceCarry.getFirstEndtime());
+            newCarry.setLastStarttime(sourceCarry.getLastStarttime());
+            newCarry.setLastEndtime(sourceCarry.getLastEndtime());
+            newCarry.setCompilationId(sourceCarry.getCompilationId());
+            newCarry.setProofreadId(sourceCarry.getProofreadId());
+            newCarry.setCheckId(sourceCarry.getCheckId());
+            newCarry.setRatifyId(sourceCarry.getRatifyId());
+            newCarry.setDelFlag(1);
+            newCarry.setCreateBy(SecurityUtils.getUsername());
+            newCarry.setCreateTime(LocalDateTime.now());
+            newCarry.setUpdateBy(SecurityUtils.getUsername());
+            newCarry.setUpdateTime(LocalDateTime.now());
+
+            int insert = carryMapper.insert(newCarry);
+            if (insert <= 0) {
+                throw new RuntimeException("复制内审计划实施主表数据失败");
+            }
+
+            List<InternalAuditCarryDept> sourceDeptList = carryMapper.selectCarryDeptList(sourceCarry.getId());
+            if (ObjectUtil.isNotEmpty(sourceDeptList)) {
+                List<InternalAuditCarryDept> newDeptList = new ArrayList<>();
+                for (InternalAuditCarryDept sourceDept : sourceDeptList) {
+                    InternalAuditCarryDept newDept = new InternalAuditCarryDept();
+                    newDept.setCarryId(newCarry.getId());
+                    newDept.setDeptId(sourceDept.getDeptId());
+                    newDept.setCheckId(sourceDept.getCheckId());
+                    newDept.setDate(sourceDept.getDate());
+                    newDept.setStartTime(sourceDept.getStartTime());
+                    newDept.setEndTime(sourceDept.getEndTime());
+                    newDeptList.add(newDept);
+                }
+                carryMapper.insertCarryDept(newDeptList);
+            }
+        }
+
+        return CommonResult.success("成功从年份[" + sourceYear + "]复制到年份[" + targetYear + "]");
+    }
+
 }
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/InternalAuditCheckServiceImpl.java b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/InternalAuditCheckServiceImpl.java
index 10e00bf..d3ea65d 100644
--- a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/InternalAuditCheckServiceImpl.java
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/InternalAuditCheckServiceImpl.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;
@@ -15,6 +18,7 @@
 import org.springframework.util.CollectionUtils;
 
 import java.time.LocalDateTime;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -45,9 +49,9 @@
     @Autowired
     private SysDeptMapper sysDeptMapper;
     @Override
-    public CommonPage selectInternalAuditCheckList(Integer companyId) {
+    public CommonPage selectInternalAuditCheckList(Integer companyId,String year) {
         PageUtils.startPage();
-        List<InternalAuditCheck> internalAuditChecks = internalAuditCheckMapper.selectInternalAuditCheckList(companyId);
+        List<InternalAuditCheck> internalAuditChecks = internalAuditCheckMapper.selectInternalAuditCheckList(companyId, year);
         if (!CollectionUtils.isEmpty(internalAuditChecks)) {
             batchLoadCheckDetails(internalAuditChecks);
         }
@@ -187,6 +191,82 @@
         return internalAuditCheckMapper.selectByMap(stringObjectHashMap);
     }
 
+
+    @Override
+    @Transactional
+    public CommonResult copyInternalAuditCheck(Integer companyId, String sourceYear, String targetYear) {
+        if (companyId == null) {
+            companyId = SecurityUtils.getCompanyId().intValue();
+        }
+
+        if (sourceYear == null || sourceYear.trim().isEmpty()) {
+            return CommonResult.failed("源年份不能为空");
+        }
+
+        if (targetYear == null || targetYear.trim().isEmpty()) {
+            return CommonResult.failed("目标年份不能为空");
+        }
+
+        LambdaUpdateWrapper<InternalAuditCheck> deleteWrapper = new LambdaUpdateWrapper<>();
+        deleteWrapper.eq(InternalAuditCheck::getCompanyId, companyId)
+                .eq(InternalAuditCheck::getYear, targetYear)
+                .eq(InternalAuditCheck::getDelFlag, 0)
+                .set(InternalAuditCheck::getDelFlag, 2)
+                .set(InternalAuditCheck::getUpdateBy, SecurityUtils.getUsername())
+                .set(InternalAuditCheck::getUpdateTime, LocalDateTime.now());
+        internalAuditCheckMapper.update(new InternalAuditCheck(), deleteWrapper);
+
+        LambdaQueryWrapper<InternalAuditCheck> queryWrapperSource = new LambdaQueryWrapper<>();
+        queryWrapperSource.eq(InternalAuditCheck::getCompanyId, companyId)
+                .eq(InternalAuditCheck::getYear, sourceYear)
+                .eq(InternalAuditCheck::getDelFlag, 0);
+        List<InternalAuditCheck> sourceChecks = internalAuditCheckMapper.selectList(queryWrapperSource);
+
+        if (ObjectUtil.isEmpty(sourceChecks)) {
+            return CommonResult.success("源年份无相关数据");
+        }
+
+        batchLoadCheckDetails(sourceChecks);
+
+        for (InternalAuditCheck sourceCheck : sourceChecks) {
+            InternalAuditCheck newCheck = new InternalAuditCheck();
+            newCheck.setCompanyId(sourceCheck.getCompanyId());
+            newCheck.setYear(targetYear);
+            newCheck.setDeptId(sourceCheck.getDeptId());
+            newCheck.setPersonId(sourceCheck.getPersonId());
+            newCheck.setCheckTime(sourceCheck.getCheckTime());
+            newCheck.setStartTime(sourceCheck.getStartTime());
+            newCheck.setEndTime(sourceCheck.getEndTime());
+            newCheck.setDelFlag(0);
+            newCheck.setCreateBy(SecurityUtils.getUsername());
+            newCheck.setCreateTime(LocalDateTime.now());
+            newCheck.setUpdateBy(SecurityUtils.getUsername());
+            newCheck.setUpdateTime(LocalDateTime.now());
+
+            int insert = internalAuditCheckMapper.insert(newCheck);
+            if (insert <= 0) {
+                throw new RuntimeException("复制内审检查主表数据失败");
+            }
+
+            List<InternalAuditCheckCatalogue> sourceCatalogues = sourceCheck.getCheckCatalogues();
+            if (ObjectUtil.isNotEmpty(sourceCatalogues)) {
+                List<InternalAuditCheckCatalogue> newCatalogues = new ArrayList<>();
+                for (InternalAuditCheckCatalogue sourceCatalogue : sourceCatalogues) {
+                    InternalAuditCheckCatalogue newCatalogue = new InternalAuditCheckCatalogue();
+                    newCatalogue.setCheckId(newCheck.getId());
+                    newCatalogue.setCatalogueId(sourceCatalogue.getCatalogueId());
+                    newCatalogue.setPointKey(sourceCatalogue.getPointKey());
+                    newCatalogue.setResult(sourceCatalogue.getResult());
+                    newCatalogue.setFind(sourceCatalogue.getFind());
+                    newCatalogues.add(newCatalogue);
+                }
+                checkCatalogueMapper.insertBatch(newCatalogues);
+            }
+        }
+
+        return CommonResult.success("复制成功");
+    }
+
 //    @Override
 //    public CommonResult internalAuditCheckInfo(Integer id) {
 //        InternalAuditCheck internalAuditCheck = internalAuditCheckMapper.selectById(id);
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/InternalAuditPlanServiceImpl.java b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/InternalAuditPlanServiceImpl.java
index 4d87073..877f502 100644
--- a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/InternalAuditPlanServiceImpl.java
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/InternalAuditPlanServiceImpl.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.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.gkhy.exam.common.api.CommonPage;
@@ -12,6 +15,7 @@
 import com.gkhy.exam.system.service.InternalAuditPlanService;
 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;
@@ -71,4 +75,66 @@
         planMapper.updateById(internalAuditPlan);
         return CommonResult.success();
     }
+
+    @Override
+    @Transactional
+    public CommonResult copyInternalAuditPlan(Integer companyId, String sourceYear, String targetYear) {
+        if (companyId == null) {
+            companyId = SecurityUtils.getCompanyId().intValue();
+        }
+
+        if (sourceYear == null || sourceYear.trim().isEmpty()) {
+            return CommonResult.failed("源年份不能为空");
+        }
+
+        if (targetYear == null || targetYear.trim().isEmpty()) {
+            return CommonResult.failed("目标年份不能为空");
+        }
+
+        LambdaUpdateWrapper<InternalAuditPlan> deleteWrapper = new LambdaUpdateWrapper<>();
+        deleteWrapper.eq(InternalAuditPlan::getCompanyId, companyId)
+                .eq(InternalAuditPlan::getYear, targetYear)
+                .eq(InternalAuditPlan::getDelFlag, 1)
+                .set(InternalAuditPlan::getDelFlag, 2)
+                .set(InternalAuditPlan::getUpdateBy, SecurityUtils.getUsername())
+                .set(InternalAuditPlan::getUpdateTime, LocalDateTime.now());
+        planMapper.update(new InternalAuditPlan(), deleteWrapper);
+
+        LambdaQueryWrapper<InternalAuditPlan> queryWrapperSource = new LambdaQueryWrapper<>();
+        queryWrapperSource.eq(InternalAuditPlan::getCompanyId, companyId)
+                .eq(InternalAuditPlan::getYear, sourceYear)
+                .eq(InternalAuditPlan::getDelFlag, 1);
+        List<InternalAuditPlan> sourcePlans = planMapper.selectList(queryWrapperSource);
+
+        if (ObjectUtil.isEmpty(sourcePlans)) {
+            return CommonResult.success("源年份无相关数据");
+        }
+
+        for (InternalAuditPlan sourcePlan : sourcePlans) {
+            InternalAuditPlan newPlan = new InternalAuditPlan();
+            newPlan.setCompanyId(sourcePlan.getCompanyId());
+            newPlan.setYear(targetYear);
+            newPlan.setPurpose(sourcePlan.getPurpose());
+            newPlan.setAuditPurpose(sourcePlan.getAuditPurpose());
+            newPlan.setReviewBasis(sourcePlan.getReviewBasis());
+            newPlan.setReviewScope(sourcePlan.getReviewScope());
+            newPlan.setReviewCarry(sourcePlan.getReviewCarry());
+            newPlan.setReviewConstitute(sourcePlan.getReviewConstitute());
+            newPlan.setReviewRequire(sourcePlan.getReviewRequire());
+            newPlan.setCompilationId(sourcePlan.getCompilationId());
+            newPlan.setProofreadId(sourcePlan.getProofreadId());
+            newPlan.setCheckId(sourcePlan.getCheckId());
+            newPlan.setRatifyId(sourcePlan.getRatifyId());
+            newPlan.setDelFlag(1);
+            newPlan.setCreateBy(SecurityUtils.getUsername());
+            newPlan.setCreateTime(LocalDateTime.now());
+
+            int insert = planMapper.insert(newPlan);
+            if (insert <= 0) {
+                throw new RuntimeException("复制内审策划数据失败");
+            }
+        }
+
+        return CommonResult.success("成功从年份[" + sourceYear + "]复制到年份[" + targetYear + "]");
+    }
 }
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/ManagementPlanServiceImpl.java b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/ManagementPlanServiceImpl.java
index 9d1e178..3c27f59 100644
--- a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/ManagementPlanServiceImpl.java
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/ManagementPlanServiceImpl.java
@@ -1,6 +1,7 @@
 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.extension.service.impl.ServiceImpl;
 import com.gkhy.exam.common.api.CommonPage;
 import com.gkhy.exam.common.api.CommonResult;
@@ -11,6 +12,7 @@
 import com.gkhy.exam.system.service.ManagementPlanService;
 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;
@@ -79,4 +81,79 @@
         }
         return CommonResult.failed();
     }
+
+    @Override
+    @Transactional
+    public CommonResult copyManagementPlan(Integer companyId, String sourceYear, String targetYear) {
+        if (companyId == null) {
+            companyId = SecurityUtils.getCompanyId().intValue();
+        }
+
+        if (sourceYear == null || sourceYear.trim().isEmpty()) {
+            return CommonResult.failed("源年份不能为空");
+        }
+
+        if (targetYear == null || targetYear.trim().isEmpty()) {
+            return CommonResult.failed("目标年份不能为空");
+        }
+
+        LambdaQueryWrapper<ManagementPlan> queryWrapperTarget = new LambdaQueryWrapper<>();
+        queryWrapperTarget.eq(ManagementPlan::getCompanyId, companyId)
+                .eq(ManagementPlan::getYear, targetYear)
+                .eq(ManagementPlan::getDelFlag, 0);
+        List<ManagementPlan> existingPlans = managementPlanMapper.selectList(queryWrapperTarget);
+
+        if (ObjectUtil.isNotEmpty(existingPlans)) {
+            for (ManagementPlan existingPlan : existingPlans) {
+                ManagementPlan deletePlan = new ManagementPlan();
+                deletePlan.setId(existingPlan.getId());
+                deletePlan.setDelFlag(1);
+                deletePlan.setUpdateBy(SecurityUtils.getUsername());
+                deletePlan.setUpdateTime(LocalDateTime.now());
+                managementPlanMapper.updateById(deletePlan);
+            }
+        }
+
+        LambdaQueryWrapper<ManagementPlan> queryWrapperSource = new LambdaQueryWrapper<>();
+        queryWrapperSource.eq(ManagementPlan::getCompanyId, companyId)
+                .eq(ManagementPlan::getYear, sourceYear)
+                .eq(ManagementPlan::getDelFlag, 0);
+        List<ManagementPlan> sourcePlans = managementPlanMapper.selectList(queryWrapperSource);
+
+        if (ObjectUtil.isEmpty(sourcePlans)) {
+            return CommonResult.success("源年份无相关数据");
+        }
+
+        for (ManagementPlan sourcePlan : sourcePlans) {
+            ManagementPlan newPlan = new ManagementPlan();
+            newPlan.setCompanyId(sourcePlan.getCompanyId());
+            newPlan.setNumber(sourcePlan.getNumber());
+            newPlan.setYear(targetYear);
+            newPlan.setFictionId(sourcePlan.getFictionId());
+            newPlan.setFictionName(sourcePlan.getFictionName());
+            newPlan.setFictionTime(sourcePlan.getFictionTime());
+            newPlan.setCheckId(sourcePlan.getCheckId());
+            newPlan.setCheckName(sourcePlan.getCheckName());
+            newPlan.setCheckTime(sourcePlan.getCheckTime());
+            newPlan.setRatifyId(sourcePlan.getRatifyId());
+            newPlan.setRatifyName(sourcePlan.getRatifyName());
+            newPlan.setRatifyTime(sourcePlan.getRatifyTime());
+            newPlan.setContent(sourcePlan.getContent());
+            newPlan.setObjective(sourcePlan.getObjective());
+            newPlan.setLocation(sourcePlan.getLocation());
+            newPlan.setStaff(sourcePlan.getStaff());
+            newPlan.setReport(sourcePlan.getReport());
+            newPlan.setDelFlag(0);
+            newPlan.setCreateBy(SecurityUtils.getUsername());
+            newPlan.setCreateTime(LocalDateTime.now());
+
+            int insert = managementPlanMapper.insert(newPlan);
+            if (insert <= 0) {
+                throw new RuntimeException("复制管理审批计划失败");
+            }
+        }
+
+        return CommonResult.success("复制成功");
+    }
+
 }
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/ManagementReviewServiceImpl.java b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/ManagementReviewServiceImpl.java
index 3abcea1..f451e51 100644
--- a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/ManagementReviewServiceImpl.java
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/ManagementReviewServiceImpl.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;
@@ -10,6 +13,7 @@
 import com.gkhy.exam.system.service.ManagementReviewService;
 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;
@@ -28,9 +32,9 @@
     @Autowired
     private ManagementReviewMapper managementReviewMapper;
     @Override
-    public CommonPage selectManagementReviewList(Integer companyId, Integer reviewType) {
+    public CommonPage selectManagementReviewList(Integer companyId, Integer reviewType,String year) {
         PageUtils.startPage();
-        List<ManagementReview> managementReviews = managementReviewMapper.selectManagementReviewList(companyId,reviewType);
+        List<ManagementReview> managementReviews = managementReviewMapper.selectManagementReviewList(companyId,reviewType,year);
         return CommonPage.restPage(managementReviews);
     }
 
@@ -67,4 +71,72 @@
         }
         return CommonResult.failed();
     }
+
+
+    @Override
+    @Transactional
+    public CommonResult copyManagementReview(Integer companyId, String sourceYear, String targetYear, Integer reviewType) {
+        if (companyId == null) {
+            companyId = SecurityUtils.getCompanyId().intValue();
+        }
+
+        if (sourceYear == null || sourceYear.trim().isEmpty()) {
+            return CommonResult.failed("源年份不能为空");
+        }
+
+        if (targetYear == null || targetYear.trim().isEmpty()) {
+            return CommonResult.failed("目标年份不能为空");
+        }
+
+        if (reviewType == null) {
+            return CommonResult.failed("评审类型不能为空");
+        }
+
+        if (reviewType != 1 && reviewType != 2 && reviewType != 3) {
+            return CommonResult.failed("评审类型无效,只能是1会议、2输入、3报告");
+        }
+
+        LambdaUpdateWrapper<ManagementReview> deleteWrapper = new LambdaUpdateWrapper<>();
+        deleteWrapper.eq(ManagementReview::getCompanyId, companyId)
+                .eq(ManagementReview::getYear, targetYear)
+                .eq(ManagementReview::getReviewType, reviewType)
+                .eq(ManagementReview::getDelFlag, 0)
+                .set(ManagementReview::getDelFlag, 1)
+                .set(ManagementReview::getUpdateBy, SecurityUtils.getUsername())
+                .set(ManagementReview::getUpdateTime, LocalDateTime.now());
+        managementReviewMapper.update(new ManagementReview(), deleteWrapper);
+
+        LambdaQueryWrapper<ManagementReview> queryWrapperSource = new LambdaQueryWrapper<>();
+        queryWrapperSource.eq(ManagementReview::getCompanyId, companyId)
+                .eq(ManagementReview::getYear, sourceYear)
+                .eq(ManagementReview::getReviewType, reviewType)
+                .eq(ManagementReview::getDelFlag, 0);
+        List<ManagementReview> sourceReviews = managementReviewMapper.selectList(queryWrapperSource);
+
+        if (ObjectUtil.isEmpty(sourceReviews)) {
+            return CommonResult.success("源年份无相关数据");
+        }
+
+        for (ManagementReview sourceReview : sourceReviews) {
+            ManagementReview newReview = new ManagementReview();
+            newReview.setCompanyId(sourceReview.getCompanyId());
+            newReview.setCompanyName(sourceReview.getCompanyName());
+            newReview.setReviewName(sourceReview.getReviewName());
+            newReview.setReviewType(sourceReview.getReviewType());
+            newReview.setFilePath(sourceReview.getFilePath());
+            newReview.setFormat(sourceReview.getFormat());
+            newReview.setYear(targetYear);
+            newReview.setDelFlag(0);
+            newReview.setCreateBy(SecurityUtils.getUsername());
+            newReview.setCreateTime(LocalDateTime.now());
+
+            int insert = managementReviewMapper.insert(newReview);
+            if (insert <= 0) {
+                throw new RuntimeException("复制管理评审数据失败");
+            }
+        }
+
+        return CommonResult.success("成功从年份[" + sourceYear + "]复制到年份[" + targetYear + "]");
+    }
+
 }
diff --git a/multi-system/src/main/resources/mapper/system/ExPhaseStudentMapper.xml b/multi-system/src/main/resources/mapper/system/ExPhaseStudentMapper.xml
index 180dc2f..10f9263 100644
--- a/multi-system/src/main/resources/mapper/system/ExPhaseStudentMapper.xml
+++ b/multi-system/src/main/resources/mapper/system/ExPhaseStudentMapper.xml
@@ -20,6 +20,7 @@
         <id     property="id"       column="course_id"        />
         <result property="name"     column="course_name"      />
         <result property="logo"     column="course_logo"      />
+        <result property="stopTime"     column="stop_time"      />
         <association property="period" javaType="java.lang.Long"  select="getCoursePeriod" column="{courseId=course_id}"/>
     </resultMap>
 
@@ -49,7 +50,7 @@
     </select>
 
     <select id="selectPhaseStudentList" resultMap="ExPhaseStudentResult">
-        select a.*,b.phone as student_phone,b.name as student_name,c.name as phase_name,e.name as create_name,d.id as course_id,d.logo as course_logo,d.name as course_name from ex_phase_student a
+        select a.*,b.phone as student_phone,b.name as student_name,c.name as phase_name,e.name as create_name,d.id as course_id,d.logo as course_logo,d.name as course_name,d.stop_time from ex_phase_student a
         left join ex_student b on a.student_id=b.id
         left join ex_course_phase c on c.id=a.phase_id
         left join ex_course d on d.id=c.course_id
diff --git a/multi-system/src/main/resources/mapper/system/InternalAuditCarryMapper.xml b/multi-system/src/main/resources/mapper/system/InternalAuditCarryMapper.xml
index f7205d0..f3561b9 100644
--- a/multi-system/src/main/resources/mapper/system/InternalAuditCarryMapper.xml
+++ b/multi-system/src/main/resources/mapper/system/InternalAuditCarryMapper.xml
@@ -52,6 +52,9 @@
         <if test="companyId!=null and companyId!=''">
             and iac.company_id = #{companyId}
         </if>
+        <if test="year!=null and year!=''">
+            and iac.year = #{year}
+        </if>
         ORDER BY iac.create_time ASC
     </select>
     <select id="selectCarryDeptList" resultType="com.gkhy.exam.system.domain.InternalAuditCarryDept">
diff --git a/multi-system/src/main/resources/mapper/system/InternalAuditCheckMapper.xml b/multi-system/src/main/resources/mapper/system/InternalAuditCheckMapper.xml
index 28c4c6f..89af1b7 100644
--- a/multi-system/src/main/resources/mapper/system/InternalAuditCheckMapper.xml
+++ b/multi-system/src/main/resources/mapper/system/InternalAuditCheckMapper.xml
@@ -32,6 +32,9 @@
         <if test="companyId!=null">
             and iac.company_id = #{companyId}
         </if>
+        <if test="year!=null and year!=''">
+            and iac.year = #{year}
+        </if>
         GROUP BY iac.`id`
         ORDER BY
             iac.create_time DESC
diff --git a/multi-system/src/main/resources/mapper/system/InternalAuditPlanMapper.xml b/multi-system/src/main/resources/mapper/system/InternalAuditPlanMapper.xml
index 4a82e83..2fcf9a7 100644
--- a/multi-system/src/main/resources/mapper/system/InternalAuditPlanMapper.xml
+++ b/multi-system/src/main/resources/mapper/system/InternalAuditPlanMapper.xml
@@ -38,6 +38,9 @@
         <if test="companyId!=null and companyId!=''">
             and iap.company_id = #{companyId}
         </if>
+        <if test="year!=null and year!=''">
+            and iap.year = #{year}
+        </if>
         ORDER BY create_time ASC
     </select>
 </mapper>
diff --git a/multi-system/src/main/resources/mapper/system/ManagementReviewMapper.xml b/multi-system/src/main/resources/mapper/system/ManagementReviewMapper.xml
index a431466..b2355fd 100644
--- a/multi-system/src/main/resources/mapper/system/ManagementReviewMapper.xml
+++ b/multi-system/src/main/resources/mapper/system/ManagementReviewMapper.xml
@@ -8,6 +8,9 @@
         <if test="companyId != null">
             and company_id = #{companyId}
         </if>
+        <if test="year != null and year !=''">
+            and year = #{year}
+        </if>
         order by create_time desc
     </select>
 </mapper>

--
Gitblit v1.9.2