From 338f2f5afc7762dabf2409f296d5d023462ed4b5 Mon Sep 17 00:00:00 2001
From: heheng <475597332@qq.com>
Date: 星期四, 28 八月 2025 17:18:25 +0800
Subject: [PATCH] 部分新功能

---
 multi-system/src/main/java/com/gkhy/exam/system/domain/DocumentChangesInvalidatedEvaluate.java              |   74 +
 multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/SixInspectionController.java                   |   69 
 multi-system/src/main/resources/mapper/system/DocumentDistributionCollectionMapper.xml                      |   14 
 multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/AnnualVerificationPlanController.java          |   70 
 multi-system/src/main/java/com/gkhy/exam/system/domain/AnnualVerificationDevice.java                        |   98 +
 multi-system/src/main/java/com/gkhy/exam/system/domain/CalibrationMonitoringEquipment.java                  |  116 +
 multi-system/src/main/java/com/gkhy/exam/system/mapper/DocumentChangesInvalidatedIssueMapper.java           |   18 
 multi-system/src/main/java/com/gkhy/exam/system/service/ExternalKnowledgeService.java                       |   25 
 multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/DocumentDestructionApplyController.java        |   63 
 multi-system/src/main/java/com/gkhy/exam/system/domain/InternalKnowledge.java                               |   88 +
 multi-system/src/main/java/com/gkhy/exam/system/domain/SixInspectionContent.java                            |   78 +
 multi-system/src/main/java/com/gkhy/exam/system/domain/DocumentDestructionApply.java                        |  146 ++
 multi-system/src/main/java/com/gkhy/exam/system/domain/DocumentBorrowCopyRecord.java                        |  109 +
 multi-system/src/main/resources/mapper/system/DocumentBorrowCopyMapper.xml                                  |   14 
 multi-system/src/main/java/com/gkhy/exam/system/service/DocumentChangesInvalidatedService.java              |   25 
 multi-system/src/main/java/com/gkhy/exam/system/service/impl/CalibrationMonitoringEquipmentServiceImpl.java |   66 
 multi-system/src/main/java/com/gkhy/exam/system/mapper/DocumentChangesInvalidatedEvaluateMapper.java        |   18 
 multi-system/src/main/resources/mapper/system/DocumentBorrowCopyRecordMapper.xml                            |    5 
 multi-system/src/main/java/com/gkhy/exam/system/mapper/DocumentDestructionApplyMapper.java                  |   21 
 multi-system/src/main/java/com/gkhy/exam/system/mapper/AnnualVerificationPlanMapper.java                    |   22 
 multi-system/src/main/java/com/gkhy/exam/system/mapper/SixInspectionMapper.java                             |   22 
 multi-system/src/main/java/com/gkhy/exam/system/mapper/InternalKnowledgeMapper.java                         |   21 
 multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/DocumentChangesInvalidatedController.java      |   67 
 multi-system/src/main/java/com/gkhy/exam/system/service/CalibrationMonitoringEquipmentService.java          |   25 
 multi-system/src/main/java/com/gkhy/exam/system/mapper/DocumentBorrowCopyMapper.java                        |   22 
 multi-system/src/main/java/com/gkhy/exam/system/mapper/DocumentDistributionCollectionRecordMapper.java      |   18 
 multi-system/src/main/java/com/gkhy/exam/system/domain/DocumentDistributionCollectionRecord.java            |  109 +
 multi-system/src/main/resources/mapper/system/AnnualVerificationPlanMapper.xml                              |   16 
 multi-system/src/main/java/com/gkhy/exam/system/service/DocumentBorrowCopyService.java                      |   27 
 multi-system/src/main/java/com/gkhy/exam/system/service/impl/ExternalKnowledgeServiceImpl.java              |   66 
 multi-system/src/main/resources/mapper/system/AnnualVerificationDeviceMapper.xml                            |    5 
 multi-system/src/main/java/com/gkhy/exam/system/service/InternalKnowledgeService.java                       |   24 
 multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysUserServiceImpl.java                        |  240 ++
 multi-system/src/main/java/com/gkhy/exam/system/domain/AnnualVerificationPlan.java                          |  118 +
 multi-system/src/main/java/com/gkhy/exam/system/mapper/DocumentChangesInvalidatedMapper.java                |   21 
 multi-system/src/main/java/com/gkhy/exam/system/service/impl/DocumentChangesInvalidatedServiceImpl.java     |  162 ++
 multi-system/src/main/java/com/gkhy/exam/system/service/impl/DocumentDistributionCollectionServiceImpl.java |  127 +
 multi-system/src/main/java/com/gkhy/exam/system/domain/DocumentBorrowCopy.java                              |   95 +
 multi-system/src/main/resources/mapper/system/DocumentChangesInvalidatedIssueMapper.xml                     |    5 
 multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/DocumentDistributionCollectionController.java  |   69 
 multi-system/src/main/java/com/gkhy/exam/system/mapper/DocumentBorrowCopyRecordMapper.java                  |   18 
 multi-system/src/main/resources/mapper/system/SixInspectionProblemMapper.xml                                |    5 
 multi-common/src/main/java/com/gkhy/exam/common/domain/entity/SysUser.java                                  |   16 
 multi-system/src/main/java/com/gkhy/exam/system/domain/DocumentDistributionCollection.java                  |   95 +
 multi-system/src/main/java/com/gkhy/exam/system/mapper/SixInspectionContentMapper.java                      |   18 
 multi-admin/src/main/java/com/gkhy/exam/admin/controller/system/SysUserController.java                      |   20 
 multi-system/src/main/java/com/gkhy/exam/system/mapper/SixInspectionProblemMapper.java                      |   18 
 multi-system/src/main/resources/mapper/system/DocumentChangesInvalidatedEvaluateMapper.xml                  |    5 
 multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/ExternalKnowledgeController.java               |   59 
 multi-system/src/main/java/com/gkhy/exam/system/mapper/ExternalKnowledgeMapper.java                         |   21 
 multi-system/src/main/java/com/gkhy/exam/system/mapper/AnnualVerificationDeviceMapper.java                  |   18 
 multi-system/src/main/resources/mapper/system/SixInspectionMapper.xml                                       |   16 
 multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/CalibrationMonitoringEquipmentController.java  |   63 
 multi-system/src/main/java/com/gkhy/exam/system/service/DocumentDestructionApplyService.java                |   26 
 multi-system/src/main/java/com/gkhy/exam/system/service/SysUserService.java                                 |   15 
 multi-system/src/main/java/com/gkhy/exam/system/domain/DocumentChangesInvalidatedIssue.java                 |   78 +
 multi-system/src/main/java/com/gkhy/exam/system/mapper/DocumentDistributionCollectionMapper.java            |   22 
 multi-system/src/main/resources/mapper/system/CalibrationMonitoringEquipmentMapper.xml                      |   14 
 multi-system/src/main/java/com/gkhy/exam/system/service/impl/DocumentBorrowCopyServiceImpl.java             |  126 +
 multi-system/src/main/resources/mapper/system/DocumentDistributionCollectionRecordMapper.xml                |    5 
 multi-system/src/main/java/com/gkhy/exam/system/domain/SixInspectionProblem.java                            |   74 +
 multi-system/src/main/java/com/gkhy/exam/system/service/impl/InternalKnowledgeServiceImpl.java              |   64 
 multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/DocumentBorrowCopyController.java              |   69 
 multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/InternalKnowledgeController.java               |   58 
 multi-system/src/main/java/com/gkhy/exam/system/service/impl/SixInspectionServiceImpl.java                  |  161 ++
 multi-system/src/main/resources/mapper/system/SysUserMapper.xml                                             |   20 
 multi-system/src/main/java/com/gkhy/exam/system/domain/SixInspection.java                                   |  121 +
 multi-system/src/main/java/com/gkhy/exam/system/service/impl/AnnualVerificationPlanServiceImpl.java         |  131 +
 multi-system/src/main/resources/mapper/system/InternalKnowledgeMapper.xml                                   |   11 
 multi-system/src/main/resources/mapper/system/DocumentChangesInvalidatedMapper.xml                          |   14 
 multi-system/src/main/resources/mapper/system/SixInspectionContentMapper.xml                                |    5 
 multi-system/src/main/java/com/gkhy/exam/system/service/DocumentDistributionCollectionService.java          |   25 
 multi-system/src/main/java/com/gkhy/exam/system/service/SixInspectionService.java                           |   25 
 multi-system/src/main/resources/mapper/system/ExternalKnowledgeMapper.xml                                   |   12 
 multi-system/src/main/java/com/gkhy/exam/system/service/impl/DocumentDestructionApplyServiceImpl.java       |   64 
 multi-system/src/main/java/com/gkhy/exam/system/domain/ExternalKnowledge.java                               |   87 +
 multi-system/src/main/resources/mapper/system/DocumentDestructionApplyMapper.xml                            |   14 
 multi-system/src/main/java/com/gkhy/exam/system/domain/DocumentChangesInvalidated.java                      |  194 ++
 multi-system/src/main/java/com/gkhy/exam/system/mapper/CalibrationMonitoringEquipmentMapper.java            |   21 
 multi-system/src/main/java/com/gkhy/exam/system/service/AnnualVerificationPlanService.java                  |   25 
 80 files changed, 4,185 insertions(+), 66 deletions(-)

diff --git a/multi-admin/src/main/java/com/gkhy/exam/admin/controller/system/SysUserController.java b/multi-admin/src/main/java/com/gkhy/exam/admin/controller/system/SysUserController.java
index 207d34d..6adfa08 100644
--- a/multi-admin/src/main/java/com/gkhy/exam/admin/controller/system/SysUserController.java
+++ b/multi-admin/src/main/java/com/gkhy/exam/admin/controller/system/SysUserController.java
@@ -18,6 +18,8 @@
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.Map;
+
 @Api(tags = "用户前端控制器")
 @RestController
 @RequestMapping("/system/user")
@@ -96,6 +98,24 @@
         return CommonResult.success();
     }
 
+
+  @RepeatSubmit
+  @ApiOperation(value = "特殊作业人员证书")
+  @PutMapping(value = "/specialCertificate")
+  public CommonResult specialCertificate(@RequestBody SysUser user){
+    sysUserService.updateSpecialCertificate(user);
+    return CommonResult.success();
+  }
+
+  @RepeatSubmit
+  @ApiOperation(value = "单位人员情况分析")
+  @GetMapping(value = "/getUserData")
+  public CommonResult getUserData(@RequestParam Long companyId){
+    Map<String, Object> userData = sysUserService.getUserData(companyId);
+    return CommonResult.success(userData);
+  }
+
+
   @ApiOperation(value = "岗位任职管理(分页)")
   @ApiImplicitParams({
           @ApiImplicitParam(paramType = "query", name = "pageNum", dataType = "int", required = false, value = "当前页,默认1"),
diff --git a/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/AnnualVerificationPlanController.java b/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/AnnualVerificationPlanController.java
new file mode 100644
index 0000000..96072d2
--- /dev/null
+++ b/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/AnnualVerificationPlanController.java
@@ -0,0 +1,70 @@
+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.AnnualVerificationPlan;
+import com.gkhy.exam.system.domain.OutsourcedReview;
+import com.gkhy.exam.system.service.AnnualVerificationPlanService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * <p>
+ * 年度检定计划主表 前端控制器
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+@RestController
+@RequestMapping("/system/annualVerificationPlan")
+@Api(tags = "年度检定计划管理")
+public class AnnualVerificationPlanController {
+
+    @Autowired
+    private AnnualVerificationPlanService annualVerificationPlanService;
+
+
+
+    @ApiOperation(value = "年度检定计划列表(分页)")
+    @ApiImplicitParams({
+            @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("/selectAnnualVerificationPlanList")
+    public CommonResult selectAnnualVerificationPlanList(AnnualVerificationPlan annualVerificationPlan){
+        return CommonResult.success(annualVerificationPlanService.selectAnnualVerificationPlanList(annualVerificationPlan));
+    }
+    @RepeatSubmit
+    @ApiOperation(value = "新增编辑年度检定计划")
+    @PostMapping("/saveAnnualVerificationPlan")
+    public CommonResult saveAnnualVerificationPlan(@RequestBody @Validated AnnualVerificationPlan annualVerificationPlan){
+        return annualVerificationPlanService.saveAnnualVerificationPlan(annualVerificationPlan);
+    }
+    @ApiOperation(value = "年度检定计划详情")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "query", name = "id", dataType = "int", required = true, value = "id"),
+    })
+    @GetMapping("/getAnnualVerificationPlan")
+    public CommonResult getAnnualVerificationPlan(@RequestParam Long id){
+        return annualVerificationPlanService.getAnnualVerificationPlan(id);
+    }
+    @ApiOperation(value = "删除年度检定计划")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "query", name = "id", dataType = "int", required = true, value = "id"),
+    })
+    @GetMapping("/deletedAnnualVerificationPlan")
+    public CommonResult deletedAnnualVerificationPlan(@RequestParam Long id){
+        return annualVerificationPlanService.deletedAnnualVerificationPlan(id);
+    }
+
+}
diff --git a/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/CalibrationMonitoringEquipmentController.java b/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/CalibrationMonitoringEquipmentController.java
new file mode 100644
index 0000000..8139f43
--- /dev/null
+++ b/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/CalibrationMonitoringEquipmentController.java
@@ -0,0 +1,63 @@
+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.AnnualVerificationPlan;
+import com.gkhy.exam.system.domain.CalibrationMonitoringEquipment;
+import com.gkhy.exam.system.service.CalibrationMonitoringEquipmentService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * <p>
+ * 监测和测量设备校准确认表	 前端控制器
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+@RestController
+@RequestMapping("/system/calibrationMonitoringEquipment")
+@Api(tags = "监测和测量设备校准确认管理")
+public class CalibrationMonitoringEquipmentController {
+
+    @Autowired
+    private CalibrationMonitoringEquipmentService calibrationMonitoringEquipmentService;
+
+
+
+
+    @ApiOperation(value = "监测和测量设备校准确认列表(分页)")
+    @ApiImplicitParams({
+            @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"),
+
+    })
+    @GetMapping("/selectCalibrationMonitoringEquipmentList")
+    public CommonResult selectCalibrationMonitoringEquipmentList(CalibrationMonitoringEquipment calibrationMonitoringEquipment){
+        return CommonResult.success(calibrationMonitoringEquipmentService.selectCalibrationMonitoringEquipmentList(calibrationMonitoringEquipment));
+    }
+    @RepeatSubmit
+    @ApiOperation(value = "新增编辑监测和测量设备校准确认")
+    @PostMapping("/saveCalibrationMonitoringEquipment")
+    public CommonResult saveCalibrationMonitoringEquipment(@RequestBody @Validated CalibrationMonitoringEquipment calibrationMonitoringEquipment){
+        return calibrationMonitoringEquipmentService.saveCalibrationMonitoringEquipment(calibrationMonitoringEquipment);
+    }
+
+    @ApiOperation(value = "删除监测和测量设备校准确认")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "query", name = "id", dataType = "int", required = true, value = "id"),
+    })
+    @GetMapping("/deletedCalibrationMonitoringEquipment")
+    public CommonResult deletedCalibrationMonitoringEquipment(@RequestParam Long id){
+        return calibrationMonitoringEquipmentService.deletedCalibrationMonitoringEquipment(id);
+    }
+
+}
diff --git a/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/DocumentBorrowCopyController.java b/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/DocumentBorrowCopyController.java
new file mode 100644
index 0000000..4cfe559
--- /dev/null
+++ b/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/DocumentBorrowCopyController.java
@@ -0,0 +1,69 @@
+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.AnnualVerificationPlan;
+import com.gkhy.exam.system.domain.DocumentBorrowCopy;
+import com.gkhy.exam.system.service.DocumentBorrowCopyService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * <p>
+ * 文件借阅复制申请主表 前端控制器
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+@RestController
+@RequestMapping("/system/documentBorrowCopy")
+@Api(tags = "文件借阅复制申请管理")
+public class DocumentBorrowCopyController {
+
+    @Autowired
+    private DocumentBorrowCopyService documentBorrowCopyService;
+
+
+    @ApiOperation(value = "文件借阅复制申请列表(分页)")
+    @ApiImplicitParams({
+            @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"),
+
+    })
+    @GetMapping("/selectDocumentBorrowCopyList")
+    public CommonResult selectDocumentBorrowCopyList(DocumentBorrowCopy documentBorrowCopy){
+        return CommonResult.success(documentBorrowCopyService.selectDocumentBorrowCopyList(documentBorrowCopy));
+    }
+    @RepeatSubmit
+    @ApiOperation(value = "新增编辑文件借阅复制申请")
+    @PostMapping("/saveDocumentBorrowCopy")
+    public CommonResult saveDocumentBorrowCopy(@RequestBody @Validated DocumentBorrowCopy documentBorrowCopy){
+        return documentBorrowCopyService.saveDocumentBorrowCopy(documentBorrowCopy);
+    }
+    @ApiOperation(value = "文件借阅复制申请详情")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "query", name = "id", dataType = "int", required = true, value = "id"),
+    })
+    @GetMapping("/getDocumentBorrowCopy")
+    public CommonResult getDocumentBorrowCopy(@RequestParam Long id){
+        return documentBorrowCopyService.getDocumentBorrowCopy(id);
+    }
+    @ApiOperation(value = "删除文件借阅复制申请")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "query", name = "id", dataType = "int", required = true, value = "id"),
+    })
+    @GetMapping("/deletedDocumentBorrowCopy")
+    public CommonResult deletedDocumentBorrowCopy(@RequestParam Long id){
+        return documentBorrowCopyService.deletedDocumentBorrowCopy(id);
+    }
+
+
+}
diff --git a/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/DocumentChangesInvalidatedController.java b/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/DocumentChangesInvalidatedController.java
new file mode 100644
index 0000000..bfb05f3
--- /dev/null
+++ b/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/DocumentChangesInvalidatedController.java
@@ -0,0 +1,67 @@
+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.DocumentBorrowCopy;
+import com.gkhy.exam.system.domain.DocumentChangesInvalidated;
+import com.gkhy.exam.system.service.DocumentChangesInvalidatedService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * <p>
+ * 文件更改作废申请主表	 前端控制器
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+@RestController
+@RequestMapping("/system/documentChangesInvalidated")
+@Api(tags = "文件更改作废申请")
+public class DocumentChangesInvalidatedController {
+
+    @Autowired
+    private DocumentChangesInvalidatedService documentChangesInvalidatedService;
+
+    @ApiOperation(value = "文件更改作废申请列表(分页)")
+    @ApiImplicitParams({
+            @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"),
+
+    })
+    @GetMapping("/selectDocumentChangesInvalidatedList")
+    public CommonResult selectDocumentChangesInvalidatedList(DocumentChangesInvalidated documentChangesInvalidated){
+        return CommonResult.success(documentChangesInvalidatedService.selectDocumentChangesInvalidatedList(documentChangesInvalidated));
+    }
+    @RepeatSubmit
+    @ApiOperation(value = "新增编辑文件更改作废申请")
+    @PostMapping("/saveDocumentChangesInvalidated")
+    public CommonResult saveDocumentChangesInvalidated(@RequestBody @Validated DocumentChangesInvalidated documentChangesInvalidated){
+        return documentChangesInvalidatedService.saveDocumentChangesInvalidated(documentChangesInvalidated);
+    }
+    @ApiOperation(value = "文件更改作废申请详情")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "query", name = "id", dataType = "int", required = true, value = "id"),
+    })
+    @GetMapping("/getDocumentChangesInvalidated")
+    public CommonResult getDocumentChangesInvalidated(@RequestParam Long id){
+        return documentChangesInvalidatedService.getDocumentChangesInvalidated(id);
+    }
+    @ApiOperation(value = "删除文件更改作废申请")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "query", name = "id", dataType = "int", required = true, value = "id"),
+    })
+    @GetMapping("/deletedDocumentChangesInvalidated")
+    public CommonResult deletedDocumentChangesInvalidated(@RequestParam Long id){
+        return documentChangesInvalidatedService.deletedDocumentChangesInvalidated(id);
+    }
+
+}
diff --git a/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/DocumentDestructionApplyController.java b/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/DocumentDestructionApplyController.java
new file mode 100644
index 0000000..96a9c7a
--- /dev/null
+++ b/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/DocumentDestructionApplyController.java
@@ -0,0 +1,63 @@
+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.CalibrationMonitoringEquipment;
+import com.gkhy.exam.system.domain.DocumentDestructionApply;
+import com.gkhy.exam.system.service.DocumentDestructionApplyService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * <p>
+ * 文件销毁申请主表	 前端控制器
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+@RestController
+@RequestMapping("/system/documentDestructionApply")
+@Api(tags = "文件销毁申请")
+public class DocumentDestructionApplyController {
+
+    @Autowired
+    private DocumentDestructionApplyService documentDestructionApplyService;
+
+
+
+
+    @ApiOperation(value = "文件销毁申请列表(分页)")
+    @ApiImplicitParams({
+            @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"),
+
+    })
+    @GetMapping("/selectDocumentDestructionApplyList")
+    public CommonResult selectDocumentDestructionApplyList(DocumentDestructionApply documentDestructionApply){
+        return CommonResult.success(documentDestructionApplyService.selectDocumentDestructionApplyList(documentDestructionApply));
+    }
+    @RepeatSubmit
+    @ApiOperation(value = "新增编辑文件销毁申请")
+    @PostMapping("/saveDocumentDestructionApply")
+    public CommonResult saveDocumentDestructionApply(@RequestBody @Validated DocumentDestructionApply documentDestructionApply){
+        return documentDestructionApplyService.saveDocumentDestructionApply(documentDestructionApply);
+    }
+
+    @ApiOperation(value = "删除文件销毁申请")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "query", name = "id", dataType = "int", required = true, value = "id"),
+    })
+    @GetMapping("/deletedDocumentDestructionApply")
+    public CommonResult deletedDocumentDestructionApply(@RequestParam Long id){
+        return documentDestructionApplyService.deletedDocumentDestructionApply(id);
+    }
+
+}
diff --git a/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/DocumentDistributionCollectionController.java b/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/DocumentDistributionCollectionController.java
new file mode 100644
index 0000000..08f58b1
--- /dev/null
+++ b/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/DocumentDistributionCollectionController.java
@@ -0,0 +1,69 @@
+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.DocumentBorrowCopy;
+import com.gkhy.exam.system.domain.DocumentDistributionCollection;
+import com.gkhy.exam.system.service.DocumentBorrowCopyService;
+import com.gkhy.exam.system.service.DocumentDistributionCollectionService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * <p>
+ * 文件发放回收主表 前端控制器
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+@RestController
+@RequestMapping("/system/documentDistributionCollection")
+@Api( tags ="文件发放回收主表")
+public class DocumentDistributionCollectionController {
+
+    @Autowired
+    private DocumentDistributionCollectionService documentDistributionCollectionService;
+
+
+    @ApiOperation(value = "文件发放回收列表(分页)")
+    @ApiImplicitParams({
+            @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"),
+
+    })
+    @GetMapping("/selectDocumentDistributionCollectionList")
+    public CommonResult selectDocumentDistributionCollectionList(DocumentDistributionCollection documentDistributionCollection){
+        return CommonResult.success(documentDistributionCollectionService.selectDocumentDistributionCollectionList(documentDistributionCollection));
+    }
+    @RepeatSubmit
+    @ApiOperation(value = "新增编辑文件发放回收")
+    @PostMapping("/saveDocumentDistributionCollection")
+    public CommonResult saveDocumentDistributionCollection(@RequestBody @Validated DocumentDistributionCollection documentDistributionCollection){
+        return documentDistributionCollectionService.saveDocumentDistributionCollection(documentDistributionCollection);
+    }
+    @ApiOperation(value = "文件发放回收详情")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "query", name = "id", dataType = "int", required = true, value = "id"),
+    })
+    @GetMapping("/getDocumentDistributionCollection")
+    public CommonResult getDocumentDistributionCollection(@RequestParam Long id){
+        return documentDistributionCollectionService.getDocumentDistributionCollection(id);
+    }
+    @ApiOperation(value = "删除文件发放回收")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "query", name = "id", dataType = "int", required = true, value = "id"),
+    })
+    @GetMapping("/deletedDocumentDistributionCollection")
+    public CommonResult deletedDocumentDistributionCollection(@RequestParam Long id){
+        return documentDistributionCollectionService.deletedDocumentDistributionCollection(id);
+    }
+
+}
diff --git a/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/ExternalKnowledgeController.java b/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/ExternalKnowledgeController.java
new file mode 100644
index 0000000..9a0f57a
--- /dev/null
+++ b/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/ExternalKnowledgeController.java
@@ -0,0 +1,59 @@
+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.ExternalKnowledge;
+import com.gkhy.exam.system.domain.OutsourcedCommon;
+import com.gkhy.exam.system.service.ExternalKnowledgeService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * <p>
+ * 外部知识 前端控制器
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+@RestController
+@RequestMapping("/system/externalKnowledge")
+@Api(tags = "外部知识管理")
+public class ExternalKnowledgeController {
+
+    @Autowired
+    private ExternalKnowledgeService externalKnowledgeService;
+
+
+    @ApiOperation(value = "外部知识记录列表(分页)")
+    @ApiImplicitParams({
+            @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"),
+    })
+    @GetMapping("/selectExternalKnowledgeList")
+    public CommonResult selectExternalKnowledgeList(ExternalKnowledge externalKnowledge){
+        return CommonResult.success(externalKnowledgeService.selectExternalKnowledgeList(externalKnowledge));
+    }
+    @RepeatSubmit
+    @ApiOperation(value = "新增编辑外部知识记录")
+    @PostMapping("/saveExternalKnowledge")
+    public CommonResult saveExternalKnowledge(@RequestBody @Validated ExternalKnowledge externalKnowledge){
+        return externalKnowledgeService.saveExternalKnowledge(externalKnowledge);
+    }
+
+    @ApiOperation(value = "删除外部知识记录")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "query", name = "id", dataType = "int", required = true, value = "id"),
+    })
+    @GetMapping("/deletedExternalKnowledge")
+    public CommonResult deletedExternalKnowledge(@RequestParam Integer id){
+        return externalKnowledgeService.deletedExternalKnowledge(id);
+    }
+}
diff --git a/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/InternalKnowledgeController.java b/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/InternalKnowledgeController.java
new file mode 100644
index 0000000..e80989b
--- /dev/null
+++ b/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/InternalKnowledgeController.java
@@ -0,0 +1,58 @@
+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.ExternalKnowledge;
+import com.gkhy.exam.system.domain.InternalKnowledge;
+import com.gkhy.exam.system.service.InternalKnowledgeService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * <p>
+ * 内部知识 前端控制器
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+@RestController
+@RequestMapping("/system/internal-knowledge")
+@Api(tags = "内部知识管理")
+public class InternalKnowledgeController {
+
+    @Autowired
+    private InternalKnowledgeService internalKnowledgeService;
+
+    @ApiOperation(value = "内部知识记录列表(分页)")
+    @ApiImplicitParams({
+            @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"),
+    })
+    @GetMapping("/selectInternalKnowledgeList")
+    public CommonResult selectInternalKnowledgeList(InternalKnowledge internalKnowledge){
+        return CommonResult.success(internalKnowledgeService.selectInternalKnowledgeList(internalKnowledge));
+    }
+    @RepeatSubmit
+    @ApiOperation(value = "新增编辑内部知识记录")
+    @PostMapping("/saveInternalKnowledge")
+    public CommonResult saveInternalKnowledge(@RequestBody @Validated InternalKnowledge internalKnowledge){
+        return internalKnowledgeService.saveInternalKnowledge(internalKnowledge);
+    }
+
+    @ApiOperation(value = "删除内部知识记录")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "query", name = "id", dataType = "int", required = true, value = "id"),
+    })
+    @GetMapping("/deletedInternalKnowledge")
+    public CommonResult deletedInternalKnowledge(@RequestParam Integer id){
+        return internalKnowledgeService.deletedInternalKnowledge(id);
+    }
+}
diff --git a/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/SixInspectionController.java b/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/SixInspectionController.java
new file mode 100644
index 0000000..37bb2dc
--- /dev/null
+++ b/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/SixInspectionController.java
@@ -0,0 +1,69 @@
+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.AnnualVerificationPlan;
+import com.gkhy.exam.system.domain.SixInspection;
+import com.gkhy.exam.system.service.SixInspectionService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * <p>
+ * 6s检查主表 前端控制器
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+@RestController
+@RequestMapping("/system/sixInspection")
+@Api(tags = "6s检查管理")
+public class SixInspectionController {
+
+    @Autowired
+    private SixInspectionService sixInspectionService;
+
+
+    @ApiOperation(value = "6s检查列表(分页)")
+    @ApiImplicitParams({
+            @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("/selectSixInspectionList")
+    public CommonResult selectSixInspectionList(SixInspection sixInspection){
+        return CommonResult.success(sixInspectionService.selectSixInspectionList(sixInspection));
+    }
+    @RepeatSubmit
+    @ApiOperation(value = "新增编辑6s检查")
+    @PostMapping("/saveSixInspection")
+    public CommonResult saveSixInspection(@RequestBody @Validated SixInspection sixInspection){
+        return sixInspectionService.saveSixInspection(sixInspection);
+    }
+    @ApiOperation(value = "6s检查详情")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "query", name = "id", dataType = "int", required = true, value = "id"),
+    })
+    @GetMapping("/getSixInspection")
+    public CommonResult getSixInspection(@RequestParam Long id){
+        return sixInspectionService.getSixInspection(id);
+    }
+    @ApiOperation(value = "删除6s检查")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "query", name = "id", dataType = "int", required = true, value = "id"),
+    })
+    @GetMapping("/deletedSixInspection")
+    public CommonResult deletedSixInspection(@RequestParam Long id){
+        return sixInspectionService.deletedSixInspection(id);
+    }
+
+}
diff --git a/multi-common/src/main/java/com/gkhy/exam/common/domain/entity/SysUser.java b/multi-common/src/main/java/com/gkhy/exam/common/domain/entity/SysUser.java
index d0878a5..b8c16f3 100644
--- a/multi-common/src/main/java/com/gkhy/exam/common/domain/entity/SysUser.java
+++ b/multi-common/src/main/java/com/gkhy/exam/common/domain/entity/SysUser.java
@@ -73,13 +73,13 @@
     @TableField("age")
     private Integer age;
 
-    @ApiModelProperty(value = "人员类别1技术2管理3行政",required = true)
+    @ApiModelProperty(value = "人员类别1技术2管理3行政4特殊作业",required = true)
     @NotNull(message = "人员类别1技术2管理3行政")
     @TableField("person_type")
     private Integer personType;
 
     @NotBlank(message = "职称不能为空")
-    @ApiModelProperty("职称")
+    @ApiModelProperty("职称1、初级2中级3高级")
     @TableField("positional")
     private String positional;
 
@@ -134,8 +134,9 @@
     @TableField("duty")
     private String duty;
 
-    @ApiModelProperty("专业")
+    @ApiModelProperty(value = "专业",required = true)
     @TableField("post")
+    @NotBlank(message = "专业不能为空")
     private String post;
 
     @ApiModelProperty("身份证号")
@@ -150,6 +151,15 @@
     @TableField("resign_time")
     private LocalDate resignTime;
 
+    @ApiModelProperty(value = "学历1、高中及以下2、专科3、本科4、硕士5、博士及以上",required = true)
+    @NotNull(message = "学历不能为空")
+    @TableField("qualification")
+    private Integer qualification;
+
+    @ApiModelProperty("特殊作业证书")
+    @TableField("operation_certificate")
+    private String operationCertificate;
+
     @ApiModelProperty("公司名称")
     @TableField(exist = false)
     private String companyName;
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/domain/AnnualVerificationDevice.java b/multi-system/src/main/java/com/gkhy/exam/system/domain/AnnualVerificationDevice.java
new file mode 100644
index 0000000..b193024
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/domain/AnnualVerificationDevice.java
@@ -0,0 +1,98 @@
+package com.gkhy.exam.system.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 年度检定计划设备表
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+@Getter
+@Setter
+@TableName("annual_verification_device")
+@ApiModel(value = "AnnualVerificationDevice对象", description = "年度检定计划设备表")
+public class AnnualVerificationDevice implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    @ApiModelProperty("主表id")
+    @TableField("annual_verification_id")
+    private Long annualVerificationId;
+
+    @ApiModelProperty("编号")
+    @TableField("device_number")
+    private String deviceNumber;
+
+    @ApiModelProperty("设备名称")
+    @TableField("device_name")
+    private String deviceName;
+
+    @ApiModelProperty("型号")
+    @TableField("model")
+    private String model;
+
+    @ApiModelProperty("校准周期")
+    @TableField("calibration_cycle")
+    private String calibrationCycle;
+
+    @ApiModelProperty("下次校准时间")
+    @TableField("next_calibration_time")
+    private LocalDateTime nextCalibrationTime;
+
+    @ApiModelProperty("实际检定日期")
+    @TableField("act_calibration_time")
+    private LocalDateTime actCalibrationTime;
+
+    @ApiModelProperty("校准人")
+    @TableField("calibration_user")
+    private String calibrationUser;
+
+    @ApiModelProperty("使用人")
+    @TableField("use_user")
+    private String useUser;
+
+    @ApiModelProperty("目前状态")
+    @TableField("status")
+    private String status;
+
+    @ApiModelProperty("删除标志(0为删除,1删除,默认0)")
+    @TableField("del_flag")
+    private Integer delFlag;
+
+    @ApiModelProperty("创建时间")
+    @TableField("create_time")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("创建人")
+    @TableField("create_by")
+    private String createBy;
+
+    @ApiModelProperty("更新时间")
+    @TableField("update_time")
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty("更新人")
+    @TableField("update_by")
+    private String updateBy;
+
+    @ApiModelProperty("乐观锁")
+    @TableField("version")
+    private Integer version;
+
+
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/domain/AnnualVerificationPlan.java b/multi-system/src/main/java/com/gkhy/exam/system/domain/AnnualVerificationPlan.java
new file mode 100644
index 0000000..59d263a
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/domain/AnnualVerificationPlan.java
@@ -0,0 +1,118 @@
+package com.gkhy.exam.system.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * <p>
+ * 年度检定计划主表
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+@Getter
+@Setter
+@TableName("annual_verification_plan")
+@ApiModel(value = "AnnualVerificationPlan对象", description = "年度检定计划主表")
+public class AnnualVerificationPlan implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    @ApiModelProperty(value = "企业id",required = true)
+    @TableField("company_id")
+    @NotNull(message = "企业id不能为空")
+    private Integer companyId;
+
+    @ApiModelProperty(value = "名称",required = true)
+    @TableField("name")
+    @NotBlank(message = "名称不能为空")
+    private String name;
+
+    @ApiModelProperty(value = "年",required = true)
+    @TableField("year")
+    @NotBlank(message = "年不能为空")
+    private String year;
+
+    @ApiModelProperty(value = "编制",required = true)
+    @TableField("establishment_id")
+    @NotNull(message = "编制不能为空")
+    private Long establishmentId;
+
+    @ApiModelProperty("编制人")
+    @TableField("establishment_name")
+    private String establishmentName;
+
+    @ApiModelProperty(value = "编制日期",required = true)
+    @NotNull(message = "编制日期不能为空")
+    @TableField("establishment_time")
+    private LocalDateTime establishmentTime;
+
+    @ApiModelProperty(value = "审核",required = true)
+    @TableField("process_id")
+    @NotNull(message = "审核不能为空")
+    private Long processId;
+
+    @ApiModelProperty("审核人")
+    @TableField("process_name")
+    private String processName;
+
+    @ApiModelProperty(value = "审核日期",required = true)
+    @TableField("process_time")
+    @NotNull(message = "审核日期不能为空")
+    private LocalDateTime processTime;
+
+    @ApiModelProperty("检定证书")
+    @TableField("certificate")
+    private String certificate;
+
+    @ApiModelProperty("删除标志(0为删除,1删除,默认0)")
+    @TableField("del_flag")
+    private Integer delFlag;
+
+    @ApiModelProperty("创建时间")
+    @TableField("create_time")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("创建人")
+    @TableField("create_by")
+    private String createBy;
+
+    @ApiModelProperty("更新时间")
+    @TableField("update_time")
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty("更新人")
+    @TableField("update_by")
+    private String updateBy;
+
+    @ApiModelProperty("乐观锁")
+    @TableField("version")
+    private Integer version;
+
+    @TableField(exist = false)
+    @ApiModelProperty("年度检定计划设备表")
+    private List<AnnualVerificationDevice> annualVerificationDevices;
+
+    @TableField(exist = false)
+    @ApiModelProperty("年度检定计划设备表删除数据")
+    private List<Long> delData;
+
+
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/domain/CalibrationMonitoringEquipment.java b/multi-system/src/main/java/com/gkhy/exam/system/domain/CalibrationMonitoringEquipment.java
new file mode 100644
index 0000000..027473d
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/domain/CalibrationMonitoringEquipment.java
@@ -0,0 +1,116 @@
+package com.gkhy.exam.system.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * <p>
+ * 监测和测量设备校准确认表	
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+@Getter
+@Setter
+@TableName("calibration_monitoring_equipment")
+@ApiModel(value = "CalibrationMonitoringEquipment对象", description = "监测和测量设备校准确认表	")
+public class CalibrationMonitoringEquipment implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    @ApiModelProperty(value = "企业id",required = true)
+    @TableField("company_id")
+    @NotNull(message = "企业id不能为空")
+    private Integer companyId;
+
+    @ApiModelProperty(value = "设备名称",required = true)
+    @TableField("device_name")
+    @NotBlank(message = "设备名称不能为空")
+    private String deviceName;
+
+    @ApiModelProperty(value = "设备编号",required = true)
+    @TableField("device_number")
+    @NotBlank(message = "设备编号不能为空")
+    private String deviceNumber;
+
+    @ApiModelProperty(value = "校准证书编号",required = true)
+    @TableField("calibration_number")
+    @NotBlank(message = "校准证书编号不能为空")
+    private String calibrationNumber;
+
+    @ApiModelProperty(value = "校准日期",required = true)
+    @TableField("calibration_time")
+    @NotNull(message = "校准日期不能为空")
+    private LocalDateTime calibrationTime;
+
+    @ApiModelProperty(value = "校准单位",required = true)
+    @TableField("calibration_company")
+    @NotBlank(message = "校准单位不能为空")
+    private String calibrationCompany;
+
+    @ApiModelProperty(value = "校准结果1满足使用2不满足",required = true)
+    @TableField("calibration_result")
+    @NotNull(message = "校准结果不能为空")
+    private Integer calibrationResult;
+
+    @ApiModelProperty(value = "确认人",required = true)
+    @TableField("confirm_user")
+    @NotBlank(message = "确认人不能为空")
+    private String confirmUser;
+
+    @ApiModelProperty(value = "确认日期",required = true)
+    @TableField("confirm_time")
+    @NotNull(message = "确认日期不能为空")
+    private LocalDateTime confirmTime;
+
+    @ApiModelProperty(value = "管理人员",required = true)
+    @TableField("executive_user")
+    @NotBlank(message = "管理人员不能为空")
+    private String executiveUser;
+
+    @ApiModelProperty(value = "管理人日期",required = true)
+    @TableField("executive_time")
+    @NotNull(message = "管理人日期不能为空")
+    private LocalDateTime executiveTime;
+
+    @ApiModelProperty("删除标志(0为删除,1删除,默认0)")
+    @TableField("del_flag")
+    private Integer delFlag;
+
+    @ApiModelProperty("创建时间")
+    @TableField("create_time")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("创建人")
+    @TableField("create_by")
+    private String createBy;
+
+    @ApiModelProperty("更新时间")
+    @TableField("update_time")
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty("更新人")
+    @TableField("update_by")
+    private String updateBy;
+
+    @ApiModelProperty("乐观锁")
+    @TableField("version")
+    private Integer version;
+
+
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/domain/DocumentBorrowCopy.java b/multi-system/src/main/java/com/gkhy/exam/system/domain/DocumentBorrowCopy.java
new file mode 100644
index 0000000..a858bd8
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/domain/DocumentBorrowCopy.java
@@ -0,0 +1,95 @@
+package com.gkhy.exam.system.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * <p>
+ * 文件借阅复制申请主表
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+@Getter
+@Setter
+@TableName("document_borrow_copy")
+@ApiModel(value = "DocumentBorrowCopy对象", description = "文件借阅复制申请主表")
+public class DocumentBorrowCopy implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    @ApiModelProperty(value = "企业id",required = true)
+    @TableField("company_id")
+    @NotNull(message = "企业id不能为空")
+    private Integer companyId;
+
+    @ApiModelProperty(value ="记录名称",required = true)
+    @TableField("name")
+    @NotBlank(message = "记录名称不能为空")
+    private String name;
+
+    @ApiModelProperty(value ="制表人id" ,required = true)
+    @TableField("tabulation_id")
+    @NotNull(message = "制表人id不能为空")
+    private Long tabulationId;
+
+    @ApiModelProperty("制表人")
+    @TableField("tabulation_name")
+    private String tabulationName;
+
+    @ApiModelProperty(value ="制表日期",required = true)
+    @TableField("tabulation_date")
+    @NotNull(message = "制表日期不能为空")
+    private LocalDateTime tabulationDate;
+
+    @ApiModelProperty("删除标志(0为删除,1删除,默认0)")
+    @TableField("del_flag")
+    private Integer delFlag;
+
+    @ApiModelProperty("创建时间")
+    @TableField("create_time")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("创建人")
+    @TableField("create_by")
+    private String createBy;
+
+    @ApiModelProperty("更新时间")
+    @TableField("update_time")
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty("更新人")
+    @TableField("update_by")
+    private String updateBy;
+
+    @ApiModelProperty("乐观锁")
+    @TableField("version")
+    private Integer version;
+
+    @TableField(exist = false)
+    @ApiModelProperty("文件借阅复制申请容表")
+    private List<DocumentBorrowCopyRecord> documentBorrowCopyRecordList;
+
+    @TableField(exist = false)
+    @ApiModelProperty("内容删除数据")
+    private List<Long> deleteIds;
+
+
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/domain/DocumentBorrowCopyRecord.java b/multi-system/src/main/java/com/gkhy/exam/system/domain/DocumentBorrowCopyRecord.java
new file mode 100644
index 0000000..5e50963
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/domain/DocumentBorrowCopyRecord.java
@@ -0,0 +1,109 @@
+package com.gkhy.exam.system.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 文件借阅复制申请容表
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+@Getter
+@Setter
+@TableName("document_borrow_copy_record")
+@ApiModel(value = "DocumentBorrowCopyRecord对象", description = "文件借阅复制申请容表")
+public class DocumentBorrowCopyRecord implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    @TableField("document_borrow_id")
+    private Long documentBorrowId;
+
+    @ApiModelProperty("文件名称")
+    @TableField("file_name")
+    private String fileName;
+
+    @ApiModelProperty("编号")
+    @TableField("number")
+    private String number;
+
+    @ApiModelProperty("发放部门")
+    @TableField("distribution_dept_name")
+    private String distributionDeptName;
+
+    @ApiModelProperty("发放签收")
+    @TableField("distribution_sign")
+    private String distributionSign;
+
+    @ApiModelProperty("发放日期")
+    @TableField("distribution_date")
+    private LocalDateTime distributionDate;
+
+    @ApiModelProperty("回收部门")
+    @TableField("collection_dept_name")
+    private String collectionDeptName;
+
+    @ApiModelProperty("签回")
+    @TableField("collection_sign")
+    private String collectionSign;
+
+    @ApiModelProperty("发放日期")
+    @TableField("collection_date")
+    private LocalDateTime collectionDate;
+
+    @ApiModelProperty("发放份数")
+    @TableField("collection_num")
+    private Integer collectionNum;
+
+    @ApiModelProperty("发放份数")
+    @TableField("distribution_num")
+    private Integer distributionNum;
+
+    @ApiModelProperty("排序")
+    @TableField("sort")
+    private Integer sort;
+
+    @ApiModelProperty("备注版本")
+    @TableField("remark")
+    private String remark;
+
+    @ApiModelProperty("删除标志(0为删除,1删除,默认0)")
+    @TableField("del_flag")
+    private Integer delFlag;
+
+    @ApiModelProperty("创建时间")
+    @TableField("create_time")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("创建人")
+    @TableField("create_by")
+    private String createBy;
+
+    @ApiModelProperty("更新时间")
+    @TableField("update_time")
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty("更新人")
+    @TableField("update_by")
+    private String updateBy;
+
+    @ApiModelProperty("乐观锁")
+    @TableField("version")
+    private Integer version;
+
+
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/domain/DocumentChangesInvalidated.java b/multi-system/src/main/java/com/gkhy/exam/system/domain/DocumentChangesInvalidated.java
new file mode 100644
index 0000000..d59f61a
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/domain/DocumentChangesInvalidated.java
@@ -0,0 +1,194 @@
+package com.gkhy.exam.system.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * <p>
+ * 文件更改作废申请主表	
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+@Getter
+@Setter
+@TableName("document_changes_invalidated")
+@ApiModel(value = "DocumentChangesInvalidated对象", description = "文件更改作废申请主表	")
+public class DocumentChangesInvalidated implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    @ApiModelProperty(value = "企业id",required = true)
+    @TableField("company_id")
+    @NotNull(message = "企业id不能为空")
+    private Integer companyId;
+
+    @ApiModelProperty(value ="文件名称",required = true)
+    @TableField("file_name")
+    @NotBlank(message = "文件名称不能为空")
+    private String fileName;
+
+    @ApiModelProperty(value ="编号",required = true)
+    @TableField("number")
+    @NotBlank(message = "编号不能为空")
+    private String number;
+
+    @ApiModelProperty(value ="提出部门",required = true)
+    @TableField("dept_id")
+    @NotNull(message = "提出部门不能为空")
+    private Long deptId;
+
+    @ApiModelProperty(value ="更改人",required = true)
+    @TableField("modifier_id")
+    @NotNull(message = "更改人不能为空")
+    private Integer modifierId;
+
+    @ApiModelProperty("更改人")
+    @TableField("modifier_name")
+    private String modifierName;
+
+    @ApiModelProperty(value ="页次",required = true)
+    @TableField("page_number")
+    @NotNull(message = "页次不能为空")
+    private Integer pageNumber;
+
+    @ApiModelProperty(value ="原版/次",required = true)
+    @TableField("original_number")
+    @NotNull(message = "原版/次不能为空")
+    private Integer originalNumber;
+
+    @ApiModelProperty(value ="现版/次",required = true)
+    @TableField("current_number")
+    @NotNull(message = "现版/次不能为空")
+    private Integer currentNumber;
+
+    @ApiModelProperty(value ="更改原因",required = true)
+    @TableField("modifier_reason")
+    @NotBlank(message = "更改原因不能为空")
+    private String modifierReason;
+
+    @ApiModelProperty(value ="更改方式1规划2换页3换版",required = true)
+    @TableField("modifier_type")
+    @NotNull(message = "更改方式不能为空")
+    private Integer modifierType;
+
+    @ApiModelProperty(value ="更改日期",required = true)
+    @TableField("modifier_time")
+    @NotNull(message = "更改日期不能为空")
+    private LocalDateTime modifierTime;
+
+    @ApiModelProperty(value ="实施时间",required = true)
+    @TableField("implement_time")
+    @NotNull(message = "实施时间不能为空")
+    private LocalDateTime implementTime;
+
+    @ApiModelProperty(value ="更改前",required = true)
+    @TableField("modifier_front")
+    @NotBlank(message = "更改前不能为空")
+    private String modifierFront;
+
+    @ApiModelProperty(value ="更改后",required = true)
+    @TableField("modifier_back")
+    @NotBlank(message = "更改后不能为空")
+    private String modifierBack;
+
+    @ApiModelProperty(value ="申请人id",required = true)
+    @TableField("apply_id")
+    @NotNull(message = "申请人id不能为空")
+    private Long applyId;
+
+    @ApiModelProperty("申请人")
+    @TableField("apply_name")
+    private String applyName;
+
+    @ApiModelProperty("申请时间")
+    @TableField("apply_date")
+    private LocalDateTime applyDate;
+
+    @ApiModelProperty(value ="批准人id",required = true)
+    @TableField("approval_id")
+    @NotNull(message = "批准人id不能为空")
+    private Long approvalId;
+
+    @ApiModelProperty("批准人")
+    @TableField("approval_name")
+    private String approvalName;
+
+    @ApiModelProperty("批准时间")
+    @TableField("approval_date")
+    private LocalDateTime approvalDate;
+
+    @ApiModelProperty(value ="审核",required = true)
+    @TableField("process_id")
+    @NotNull(message = "审核不能为空")
+    private Long processId;
+
+    @ApiModelProperty("审核人")
+    @TableField("process_name")
+    private String processName;
+
+    @ApiModelProperty("审核时间")
+    @TableField("process_date")
+    private LocalDateTime processDate;
+
+    @ApiModelProperty("备注")
+    @TableField("remark")
+    private String remark;
+
+    @ApiModelProperty("删除标志(0为删除,1删除,默认0)")
+    @TableField("del_flag")
+    private Integer delFlag;
+
+    @ApiModelProperty("创建时间")
+    @TableField("create_time")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("创建人")
+    @TableField("create_by")
+    private String createBy;
+
+    @ApiModelProperty("更新时间")
+    @TableField("update_time")
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty("更新人")
+    @TableField("update_by")
+    private String updateBy;
+
+    @ApiModelProperty("乐观锁")
+    @TableField("version")
+    private Integer version;
+
+    @ApiModelProperty("发放表")
+    @TableField(exist = false)
+    private List<DocumentChangesInvalidatedIssue> documentChangesInvalidatedIssueList;
+
+    @ApiModelProperty("发放表删除数据")
+    @TableField(exist = false)
+    private List<Long> delInvalidatedIssueIds;
+
+    @ApiModelProperty("评价表")
+    @TableField(exist = false)
+    private List<DocumentChangesInvalidatedEvaluate> documentChangesInvalidatedEvaluateList;
+
+    @ApiModelProperty("评价表删除数据")
+    @TableField(exist = false)
+    private List<Long> delEvaluateIds;
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/domain/DocumentChangesInvalidatedEvaluate.java b/multi-system/src/main/java/com/gkhy/exam/system/domain/DocumentChangesInvalidatedEvaluate.java
new file mode 100644
index 0000000..63e81ee
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/domain/DocumentChangesInvalidatedEvaluate.java
@@ -0,0 +1,74 @@
+package com.gkhy.exam.system.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 文件更改作废申请评价其他文件表
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+@Getter
+@Setter
+@TableName("document_changes_invalidated_evaluate")
+@ApiModel(value = "DocumentChangesInvalidatedEvaluate对象", description = "文件更改作废申请评价其他文件表")
+public class DocumentChangesInvalidatedEvaluate implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    @ApiModelProperty("主表id")
+    @TableField("document_changes_id")
+    private Long documentChangesId;
+
+    @ApiModelProperty("序号")
+    @TableField("sort")
+    private Integer sort;
+
+    @ApiModelProperty("文件名称")
+    @TableField("file_name")
+    private String fileName;
+
+    @ApiModelProperty("文件编号")
+    @TableField("file_number")
+    private String fileNumber;
+
+    @ApiModelProperty("删除标志(0为删除,1删除,默认0)")
+    @TableField("del_flag")
+    private Integer delFlag;
+
+    @ApiModelProperty("创建时间")
+    @TableField("create_time")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("创建人")
+    @TableField("create_by")
+    private String createBy;
+
+    @ApiModelProperty("更新时间")
+    @TableField("update_time")
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty("更新人")
+    @TableField("update_by")
+    private String updateBy;
+
+    @ApiModelProperty("乐观锁")
+    @TableField("version")
+    private Integer version;
+
+
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/domain/DocumentChangesInvalidatedIssue.java b/multi-system/src/main/java/com/gkhy/exam/system/domain/DocumentChangesInvalidatedIssue.java
new file mode 100644
index 0000000..8dfd39e
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/domain/DocumentChangesInvalidatedIssue.java
@@ -0,0 +1,78 @@
+package com.gkhy.exam.system.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 文件更改作废申请发放表	
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+@Getter
+@Setter
+@TableName("document_changes_invalidated_issue")
+@ApiModel(value = "DocumentChangesInvalidatedIssue对象", description = "文件更改作废申请发放表	")
+public class DocumentChangesInvalidatedIssue implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    @ApiModelProperty("主表id")
+    @TableField("document_changes_id")
+    private Long documentChangesId;
+
+    @ApiModelProperty("序号")
+    @TableField("sort")
+    private Integer sort;
+
+    @ApiModelProperty("发放部门")
+    @TableField("distribution_dept_name")
+    private String distributionDeptName;
+
+    @ApiModelProperty("签收人")
+    @TableField("distribution_sign")
+    private String distributionSign;
+
+    @ApiModelProperty("日期")
+    @TableField("distribution_date")
+    private LocalDateTime distributionDate;
+
+    @ApiModelProperty("删除标志(0为删除,1删除,默认0)")
+    @TableField("del_flag")
+    private Integer delFlag;
+
+    @ApiModelProperty("创建时间")
+    @TableField("create_time")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("创建人")
+    @TableField("create_by")
+    private String createBy;
+
+    @ApiModelProperty("更新时间")
+    @TableField("update_time")
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty("更新人")
+    @TableField("update_by")
+    private String updateBy;
+
+    @ApiModelProperty("乐观锁")
+    @TableField("version")
+    private Integer version;
+
+
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/domain/DocumentDestructionApply.java b/multi-system/src/main/java/com/gkhy/exam/system/domain/DocumentDestructionApply.java
new file mode 100644
index 0000000..68f4efe
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/domain/DocumentDestructionApply.java
@@ -0,0 +1,146 @@
+package com.gkhy.exam.system.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 文件销毁申请主表	
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+@Getter
+@Setter
+@TableName("document_destruction_apply")
+@ApiModel(value = "DocumentDestructionApply对象", description = "文件销毁申请主表	")
+public class DocumentDestructionApply implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    @ApiModelProperty("企业id")
+    @TableField("company_id")
+    private Integer companyId;
+
+    @ApiModelProperty("文件名称")
+    @TableField("file_name")
+    private String fileName;
+
+    @ApiModelProperty("序号")
+    @TableField("sort")
+    private Integer sort;
+
+    @ApiModelProperty("编号")
+    @TableField("number")
+    private String number;
+
+    @ApiModelProperty("版本")
+    @TableField("edition")
+    private String edition;
+
+    @ApiModelProperty("份数")
+    @TableField("copies")
+    private Integer copies;
+
+    @ApiModelProperty("销毁原因")
+    @TableField("destruction")
+    private String destruction;
+
+    @ApiModelProperty("销毁申请人")
+    @TableField("destruction_apply_id")
+    private Integer destructionApplyId;
+
+    @ApiModelProperty("销毁申请人")
+    @TableField("destruction_apply_name")
+    private String destructionApplyName;
+
+    @ApiModelProperty("销毁申请日期")
+    @TableField("destruction_apply_date")
+    private LocalDateTime destructionApplyDate;
+
+    @ApiModelProperty("所在部门意见")
+    @TableField("dept_opinions")
+    private String deptOpinions;
+
+    @ApiModelProperty("所在部门人员")
+    @TableField("dept_user_id")
+    private Integer deptUserId;
+
+    @ApiModelProperty("所在部门人员")
+    @TableField("dept_user_name")
+    private String deptUserName;
+
+    @ApiModelProperty("所在部门时间")
+    @TableField("dept_date")
+    private LocalDateTime deptDate;
+
+    @ApiModelProperty("文件保管部门意见")
+    @TableField("safekeeping_opinions")
+    private String safekeepingOpinions;
+
+    @ApiModelProperty("文件保管人id")
+    @TableField("safekeeping_id")
+    private Long safekeepingId;
+
+    @ApiModelProperty("文件保管人")
+    @TableField("safekeeping_name")
+    private String safekeepingName;
+
+    @ApiModelProperty("文件保管时间")
+    @TableField("safekeeping_date")
+    private LocalDateTime safekeepingDate;
+
+    @ApiModelProperty("管理者代表意见")
+    @TableField("management_opinions")
+    private String managementOpinions;
+
+    @ApiModelProperty("管理者代表人id")
+    @TableField("management_id")
+    private Long managementId;
+
+    @ApiModelProperty("管理者代表人")
+    @TableField("management_name")
+    private String managementName;
+
+    @ApiModelProperty("管理者代表时间")
+    @TableField("management_date")
+    private LocalDateTime managementDate;
+
+    @ApiModelProperty("删除标志(0为删除,1删除,默认0)")
+    @TableField("del_flag")
+    private Integer delFlag;
+
+    @ApiModelProperty("创建时间")
+    @TableField("create_time")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("创建人")
+    @TableField("create_by")
+    private String createBy;
+
+    @ApiModelProperty("更新时间")
+    @TableField("update_time")
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty("更新人")
+    @TableField("update_by")
+    private String updateBy;
+
+    @ApiModelProperty("乐观锁")
+    @TableField("version")
+    private Integer version;
+
+
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/domain/DocumentDistributionCollection.java b/multi-system/src/main/java/com/gkhy/exam/system/domain/DocumentDistributionCollection.java
new file mode 100644
index 0000000..6d4b3b2
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/domain/DocumentDistributionCollection.java
@@ -0,0 +1,95 @@
+package com.gkhy.exam.system.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * <p>
+ * 文件发放回收主表
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+@Getter
+@Setter
+@TableName("document_distribution_collection")
+@ApiModel(value = "DocumentDistributionCollection对象", description = "文件发放回收主表")
+public class DocumentDistributionCollection implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    @ApiModelProperty(value = "企业id",required = true)
+    @TableField("company_id")
+    @NotNull(message = "企业id不能为空")
+    private Integer companyId;
+
+    @ApiModelProperty(value = "记录名称",required = true)
+    @TableField("name")
+    @NotBlank(message = "记录名称不能为空")
+    private String name;
+
+    @ApiModelProperty(value = "制表人id",required = true)
+    @TableField("tabulation_id")
+    @NotNull(message = "制表人id不能为空")
+    private Long tabulationId;
+
+    @ApiModelProperty("制表人")
+    @TableField("tabulation_name")
+    private String tabulationName;
+
+    @ApiModelProperty(value = "制表日期",required = true)
+    @NotNull(message = "制表日期不能为空")
+    @TableField("tabulation_date")
+    private LocalDateTime tabulationDate;
+
+    @ApiModelProperty("删除标志(0为删除,1删除,默认0)")
+    @TableField("del_flag")
+    private Integer delFlag;
+
+    @ApiModelProperty("创建时间")
+    @TableField("create_time")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("创建人")
+    @TableField("create_by")
+    private String createBy;
+
+    @ApiModelProperty("更新时间")
+    @TableField("update_time")
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty("更新人")
+    @TableField("update_by")
+    private String updateBy;
+
+    @ApiModelProperty("乐观锁")
+    @TableField("version")
+    private Integer version;
+
+
+    @TableField(exist = false)
+    @ApiModelProperty("文件发放回收内容表")
+    private List<DocumentDistributionCollectionRecord> documentDistributionCollectionRecordList;
+
+    @TableField(exist = false)
+    @ApiModelProperty("删除的id")
+    private List<Long> deleteIds;
+
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/domain/DocumentDistributionCollectionRecord.java b/multi-system/src/main/java/com/gkhy/exam/system/domain/DocumentDistributionCollectionRecord.java
new file mode 100644
index 0000000..f17639c
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/domain/DocumentDistributionCollectionRecord.java
@@ -0,0 +1,109 @@
+package com.gkhy.exam.system.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 文件发放回收内容表
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+@Getter
+@Setter
+@TableName("document_distribution_collection_record")
+@ApiModel(value = "DocumentDistributionCollectionRecord对象", description = "文件发放回收内容表")
+public class DocumentDistributionCollectionRecord implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    @TableField("document_id")
+    private Long documentId;
+
+    @ApiModelProperty("排序")
+    @TableField("sort")
+    private Integer sort;
+
+    @ApiModelProperty("文件名称")
+    @TableField("file_name")
+    private String fileName;
+
+    @ApiModelProperty("编号")
+    @TableField("number")
+    private String number;
+
+    @ApiModelProperty("发放部门")
+    @TableField("distribution_dept_name")
+    private String distributionDeptName;
+
+    @ApiModelProperty("发放签收")
+    @TableField("distribution_sign")
+    private String distributionSign;
+
+    @ApiModelProperty("发放日期")
+    @TableField("distribution_date")
+    private LocalDateTime distributionDate;
+
+    @ApiModelProperty("回收部门")
+    @TableField("collection_dept_name")
+    private String collectionDeptName;
+
+    @ApiModelProperty("签回")
+    @TableField("collection_sign")
+    private String collectionSign;
+
+    @ApiModelProperty("发放日期")
+    @TableField("collection_date")
+    private LocalDateTime collectionDate;
+
+    @ApiModelProperty("发放份数")
+    @TableField("collection_num")
+    private Integer collectionNum;
+
+    @ApiModelProperty("发放份数")
+    @TableField("distribution_num")
+    private Integer distributionNum;
+
+    @ApiModelProperty("备注版本")
+    @TableField("remark")
+    private String remark;
+
+    @ApiModelProperty("删除标志(0为删除,1删除,默认0)")
+    @TableField("del_flag")
+    private Integer delFlag;
+
+    @ApiModelProperty("创建时间")
+    @TableField("create_time")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("创建人")
+    @TableField("create_by")
+    private String createBy;
+
+    @ApiModelProperty("更新时间")
+    @TableField("update_time")
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty("更新人")
+    @TableField("update_by")
+    private String updateBy;
+
+    @ApiModelProperty("乐观锁")
+    @TableField("version")
+    private Integer version;
+
+
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/domain/ExternalKnowledge.java b/multi-system/src/main/java/com/gkhy/exam/system/domain/ExternalKnowledge.java
new file mode 100644
index 0000000..ce7de27
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/domain/ExternalKnowledge.java
@@ -0,0 +1,87 @@
+package com.gkhy.exam.system.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * <p>
+ * 外部知识
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+@Getter
+@Setter
+@TableName("external_knowledge")
+@ApiModel(value = "ExternalKnowledge对象", description = "外部知识")
+public class ExternalKnowledge implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    @ApiModelProperty(value = "公司id",required = true)
+    @TableField("company_id")
+    @NotNull(message = "公司id不能为空")
+    private Long companyId;
+
+    @ApiModelProperty(value ="名称",required = true)
+    @TableField("name")
+    @NotBlank(message = "名称不能为空")
+    private String name;
+
+    @ApiModelProperty(value ="1、标准2、规范3、法律法规4、其他",required = true)
+    @TableField("knowledge_type")
+    @NotNull(message = "类型不能为空")
+    private Integer knowledgeType;
+
+    @ApiModelProperty("附件名称")
+    @TableField("file_name")
+    private String fileName;
+
+    @ApiModelProperty("附件地址")
+    @TableField("file_path")
+    private String filePath;
+
+    @ApiModelProperty("格式")
+    @TableField("format")
+    private String format;
+
+    @ApiModelProperty("删除标志(0为删除,1删除,默认0)")
+    @TableField("del_flag")
+    private Integer delFlag;
+
+    @ApiModelProperty("创建时间")
+    @TableField("create_time")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("创建人")
+    @TableField("create_by")
+    private String createBy;
+
+    @ApiModelProperty("更新时间")
+    @TableField("update_time")
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty("更新人")
+    @TableField("update_by")
+    private String updateBy;
+
+    @ApiModelProperty("乐观锁")
+    @TableField("version")
+    @Version
+    private Integer version;
+
+
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/domain/InternalKnowledge.java b/multi-system/src/main/java/com/gkhy/exam/system/domain/InternalKnowledge.java
new file mode 100644
index 0000000..03757fb
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/domain/InternalKnowledge.java
@@ -0,0 +1,88 @@
+package com.gkhy.exam.system.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * <p>
+ * 内部知识
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+@Getter
+@Setter
+@TableName("internal_knowledge")
+@ApiModel(value = "InternalKnowledge对象", description = "内部知识")
+public class InternalKnowledge implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    @ApiModelProperty(value ="公司id",required = true)
+    @TableField("company_id")
+    @NotNull(message = "公司id不能为空")
+    private Long companyId;
+
+    @ApiModelProperty(value ="名称",required = true)
+    @TableField("name")
+    @NotBlank(message = "名称不能为空")
+    private String name;
+
+    @ApiModelProperty(value ="1、体系2、项目3、其他",required = true)
+    @TableField("knowledge_type")
+    @NotNull(message = "类型不能为空")
+    private Integer knowledgeType;
+
+    @ApiModelProperty("附件名称")
+    @TableField("file_name")
+    private String fileName;
+
+    @ApiModelProperty("附件地址")
+    @TableField("file_path")
+    private String filePath;
+
+    @ApiModelProperty("格式")
+    @TableField("format")
+    private String format;
+
+    @ApiModelProperty("删除标志(0为删除,1删除,默认0)")
+    @TableField("del_flag")
+    private Integer delFlag;
+
+    @ApiModelProperty("创建时间")
+    @TableField("create_time")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("创建人")
+    @TableField("create_by")
+    private String createBy;
+
+    @ApiModelProperty("更新时间")
+    @TableField("update_time")
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty("更新人")
+    @TableField("update_by")
+    private String updateBy;
+
+    @ApiModelProperty("乐观锁")
+    @TableField("version")
+    private Integer version;
+
+
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/domain/SixInspection.java b/multi-system/src/main/java/com/gkhy/exam/system/domain/SixInspection.java
new file mode 100644
index 0000000..d26c3bd
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/domain/SixInspection.java
@@ -0,0 +1,121 @@
+package com.gkhy.exam.system.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.List;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * <p>
+ * 6s检查主表
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+@Getter
+@Setter
+@TableName("six_inspection")
+@ApiModel(value = "SixInspection对象", description = "6s检查主表")
+public class SixInspection implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    @ApiModelProperty(value = "企业id",required = true)
+    @TableField("company_id")
+    @NotNull(message = "企业id不能为空")
+    private Integer companyId;
+
+    @ApiModelProperty(value ="检查表名称",required = true)
+    @TableField("inspection_name")
+    @NotNull(message = "检查表名称不能为空")
+    private String inspectionName;
+
+    @ApiModelProperty(value ="检查日期",required = true)
+    @TableField("inspection_date")
+    @NotNull(message = "检查日期不能为空")
+    private LocalDateTime inspectionDate;
+
+    @ApiModelProperty(value ="受检区域",required = true)
+    @TableField("inspection_content")
+    @NotBlank(message = "受检区域不能为空")
+    private String inspectionContent;
+
+    @ApiModelProperty(value ="年份",required = true)
+    @TableField("year")
+    @NotBlank(message = "年份不能为空")
+    private String year;
+
+    @ApiModelProperty(value = "审批人id",required = true)
+    @TableField("approval_id")
+    @NotNull(message = "审批人id不能为空")
+    private Long approvalId;
+
+    @ApiModelProperty("审批人")
+    @TableField("approval_name")
+    private String approvalName;
+
+    @ApiModelProperty(value ="编制",required = true)
+    @TableField("establishment_id")
+    @NotNull(message = "编制不能为空")
+    private Long establishmentId;
+
+    @ApiModelProperty("编制人")
+    @TableField("establishment_name")
+    private String establishmentName;
+
+    @ApiModelProperty("删除标志(0为删除,1删除,默认0)")
+    @TableField("del_flag")
+    private Integer delFlag;
+
+    @ApiModelProperty("创建时间")
+    @TableField("create_time")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("创建人")
+    @TableField("create_by")
+    private String createBy;
+
+    @ApiModelProperty("更新时间")
+    @TableField("update_time")
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty("更新人")
+    @TableField("update_by")
+    private String updateBy;
+
+    @ApiModelProperty("乐观锁")
+    @TableField("version")
+    private Integer version;
+
+    @ApiModelProperty("检查内容")
+    @TableField(exist = false)
+    private List<SixInspectionContent> sixInspectionContentList;
+
+    @ApiModelProperty("删除的内容id")
+    @TableField(exist = false)
+    private List<Long> delContentIds;
+
+        @ApiModelProperty("其他问题")
+    @TableField(exist = false)
+    private List<SixInspectionProblem> sixInspectionProblemList;
+
+    @ApiModelProperty("删除的问题id")
+    @TableField(exist = false)
+    private List<Long> delProblemIds;
+
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/domain/SixInspectionContent.java b/multi-system/src/main/java/com/gkhy/exam/system/domain/SixInspectionContent.java
new file mode 100644
index 0000000..d19bf58
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/domain/SixInspectionContent.java
@@ -0,0 +1,78 @@
+package com.gkhy.exam.system.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 6s检查内容表	
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+@Getter
+@Setter
+@TableName("six_inspection_content")
+@ApiModel(value = "SixInspectionContent对象", description = "6s检查内容表	")
+public class SixInspectionContent implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    @ApiModelProperty("主表id")
+    @TableField("six_inspection_id")
+    private Long sixInspectionId;
+
+    @ApiModelProperty("内容编码1-15")
+    @TableField("sort")
+    private Integer sort;
+
+    @ApiModelProperty("结果1符合2不符合3不涉及")
+    @TableField("content_result")
+    private Integer contentResult;
+
+    @ApiModelProperty("具体问题")
+    @TableField("concrete_problems")
+    private String concreteProblems;
+
+    @ApiModelProperty("责任部门")
+    @TableField("responsible_department")
+    private String responsibleDepartment;
+
+    @ApiModelProperty("删除标志(0为删除,1删除,默认0)")
+    @TableField("del_flag")
+    private Integer delFlag;
+
+    @ApiModelProperty("创建时间")
+    @TableField("create_time")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("创建人")
+    @TableField("create_by")
+    private String createBy;
+
+    @ApiModelProperty("更新时间")
+    @TableField("update_time")
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty("更新人")
+    @TableField("update_by")
+    private String updateBy;
+
+    @ApiModelProperty("乐观锁")
+    @TableField("version")
+    private Integer version;
+
+
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/domain/SixInspectionProblem.java b/multi-system/src/main/java/com/gkhy/exam/system/domain/SixInspectionProblem.java
new file mode 100644
index 0000000..0df741a
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/domain/SixInspectionProblem.java
@@ -0,0 +1,74 @@
+package com.gkhy.exam.system.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 6s检查其他问题表	
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+@Getter
+@Setter
+@TableName("six_inspection_problem")
+@ApiModel(value = "SixInspectionProblem对象", description = "6s检查其他问题表	")
+public class SixInspectionProblem implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    @ApiModelProperty("主表id")
+    @TableField("six_inspection_id")
+    private Long sixInspectionId;
+
+    @ApiModelProperty("序号")
+    @TableField("sort")
+    private Integer sort;
+
+    @ApiModelProperty("问题")
+    @TableField("problems")
+    private String problems;
+
+    @ApiModelProperty("备注")
+    @TableField("remark")
+    private String remark;
+
+    @ApiModelProperty("删除标志(0为删除,1删除,默认0)")
+    @TableField("del_flag")
+    private Integer delFlag;
+
+    @ApiModelProperty("创建时间")
+    @TableField("create_time")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("创建人")
+    @TableField("create_by")
+    private String createBy;
+
+    @ApiModelProperty("更新时间")
+    @TableField("update_time")
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty("更新人")
+    @TableField("update_by")
+    private String updateBy;
+
+    @ApiModelProperty("乐观锁")
+    @TableField("version")
+    private Integer version;
+
+
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/mapper/AnnualVerificationDeviceMapper.java b/multi-system/src/main/java/com/gkhy/exam/system/mapper/AnnualVerificationDeviceMapper.java
new file mode 100644
index 0000000..267768e
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/mapper/AnnualVerificationDeviceMapper.java
@@ -0,0 +1,18 @@
+package com.gkhy.exam.system.mapper;
+
+import com.gkhy.exam.system.domain.AnnualVerificationDevice;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 年度检定计划设备表 Mapper 接口
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+@Mapper
+public interface AnnualVerificationDeviceMapper extends BaseMapper<AnnualVerificationDevice> {
+
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/mapper/AnnualVerificationPlanMapper.java b/multi-system/src/main/java/com/gkhy/exam/system/mapper/AnnualVerificationPlanMapper.java
new file mode 100644
index 0000000..b345f38
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/mapper/AnnualVerificationPlanMapper.java
@@ -0,0 +1,22 @@
+package com.gkhy.exam.system.mapper;
+
+import com.gkhy.exam.system.domain.AnnualVerificationPlan;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 年度检定计划主表 Mapper 接口
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+@Mapper
+public interface AnnualVerificationPlanMapper extends BaseMapper<AnnualVerificationPlan> {
+
+    List<AnnualVerificationPlan> selectAnnualVerificationPlanList(AnnualVerificationPlan annualVerificationPlan);
+
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/mapper/CalibrationMonitoringEquipmentMapper.java b/multi-system/src/main/java/com/gkhy/exam/system/mapper/CalibrationMonitoringEquipmentMapper.java
new file mode 100644
index 0000000..e15288b
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/mapper/CalibrationMonitoringEquipmentMapper.java
@@ -0,0 +1,21 @@
+package com.gkhy.exam.system.mapper;
+
+import com.gkhy.exam.system.domain.CalibrationMonitoringEquipment;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 监测和测量设备校准确认表	 Mapper 接口
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+@Mapper
+public interface CalibrationMonitoringEquipmentMapper extends BaseMapper<CalibrationMonitoringEquipment> {
+
+    List<CalibrationMonitoringEquipment> selectCalibrationMonitoringEquipmentList(CalibrationMonitoringEquipment calibrationMonitoringEquipment);
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/mapper/DocumentBorrowCopyMapper.java b/multi-system/src/main/java/com/gkhy/exam/system/mapper/DocumentBorrowCopyMapper.java
new file mode 100644
index 0000000..ac52414
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/mapper/DocumentBorrowCopyMapper.java
@@ -0,0 +1,22 @@
+package com.gkhy.exam.system.mapper;
+
+import com.gkhy.exam.system.domain.DocumentBorrowCopy;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 文件借阅复制申请主表 Mapper 接口
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+@Mapper
+public interface DocumentBorrowCopyMapper extends BaseMapper<DocumentBorrowCopy> {
+
+    List<DocumentBorrowCopy> selectDocumentBorrowCopyList(DocumentBorrowCopy documentBorrowCopy);
+
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/mapper/DocumentBorrowCopyRecordMapper.java b/multi-system/src/main/java/com/gkhy/exam/system/mapper/DocumentBorrowCopyRecordMapper.java
new file mode 100644
index 0000000..4ab70d6
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/mapper/DocumentBorrowCopyRecordMapper.java
@@ -0,0 +1,18 @@
+package com.gkhy.exam.system.mapper;
+
+import com.gkhy.exam.system.domain.DocumentBorrowCopyRecord;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 文件借阅复制申请容表 Mapper 接口
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+@Mapper
+public interface DocumentBorrowCopyRecordMapper extends BaseMapper<DocumentBorrowCopyRecord> {
+
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/mapper/DocumentChangesInvalidatedEvaluateMapper.java b/multi-system/src/main/java/com/gkhy/exam/system/mapper/DocumentChangesInvalidatedEvaluateMapper.java
new file mode 100644
index 0000000..e50ae99
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/mapper/DocumentChangesInvalidatedEvaluateMapper.java
@@ -0,0 +1,18 @@
+package com.gkhy.exam.system.mapper;
+
+import com.gkhy.exam.system.domain.DocumentChangesInvalidatedEvaluate;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 文件更改作废申请评价其他文件表 Mapper 接口
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+@Mapper
+public interface DocumentChangesInvalidatedEvaluateMapper extends BaseMapper<DocumentChangesInvalidatedEvaluate> {
+
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/mapper/DocumentChangesInvalidatedIssueMapper.java b/multi-system/src/main/java/com/gkhy/exam/system/mapper/DocumentChangesInvalidatedIssueMapper.java
new file mode 100644
index 0000000..f468614
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/mapper/DocumentChangesInvalidatedIssueMapper.java
@@ -0,0 +1,18 @@
+package com.gkhy.exam.system.mapper;
+
+import com.gkhy.exam.system.domain.DocumentChangesInvalidatedIssue;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 文件更改作废申请发放表	 Mapper 接口
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+@Mapper
+public interface DocumentChangesInvalidatedIssueMapper extends BaseMapper<DocumentChangesInvalidatedIssue> {
+
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/mapper/DocumentChangesInvalidatedMapper.java b/multi-system/src/main/java/com/gkhy/exam/system/mapper/DocumentChangesInvalidatedMapper.java
new file mode 100644
index 0000000..9c31840
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/mapper/DocumentChangesInvalidatedMapper.java
@@ -0,0 +1,21 @@
+package com.gkhy.exam.system.mapper;
+
+import com.gkhy.exam.system.domain.DocumentChangesInvalidated;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 文件更改作废申请主表	 Mapper 接口
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+@Mapper
+public interface DocumentChangesInvalidatedMapper extends BaseMapper<DocumentChangesInvalidated> {
+
+    List<DocumentChangesInvalidated> getDocumentChangesInvalidated(DocumentChangesInvalidated documentChangesInvalidated);
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/mapper/DocumentDestructionApplyMapper.java b/multi-system/src/main/java/com/gkhy/exam/system/mapper/DocumentDestructionApplyMapper.java
new file mode 100644
index 0000000..0bdc87d
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/mapper/DocumentDestructionApplyMapper.java
@@ -0,0 +1,21 @@
+package com.gkhy.exam.system.mapper;
+
+import com.gkhy.exam.system.domain.DocumentDestructionApply;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 文件销毁申请主表	 Mapper 接口
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+@Mapper
+public interface DocumentDestructionApplyMapper extends BaseMapper<DocumentDestructionApply> {
+
+    List<DocumentDestructionApply> getDocumentDestructionApply(DocumentDestructionApply documentDestructionApply);
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/mapper/DocumentDistributionCollectionMapper.java b/multi-system/src/main/java/com/gkhy/exam/system/mapper/DocumentDistributionCollectionMapper.java
new file mode 100644
index 0000000..2db6639
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/mapper/DocumentDistributionCollectionMapper.java
@@ -0,0 +1,22 @@
+package com.gkhy.exam.system.mapper;
+
+import com.gkhy.exam.system.domain.DocumentDistributionCollection;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 文件发放回收主表 Mapper 接口
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+@Mapper
+public interface DocumentDistributionCollectionMapper extends BaseMapper<DocumentDistributionCollection> {
+
+    List<DocumentDistributionCollection> selectDocumentDistributionCollectionList(DocumentDistributionCollection documentDistributionCollection);
+
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/mapper/DocumentDistributionCollectionRecordMapper.java b/multi-system/src/main/java/com/gkhy/exam/system/mapper/DocumentDistributionCollectionRecordMapper.java
new file mode 100644
index 0000000..146a763
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/mapper/DocumentDistributionCollectionRecordMapper.java
@@ -0,0 +1,18 @@
+package com.gkhy.exam.system.mapper;
+
+import com.gkhy.exam.system.domain.DocumentDistributionCollectionRecord;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 文件发放回收内容表 Mapper 接口
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+@Mapper
+public interface DocumentDistributionCollectionRecordMapper extends BaseMapper<DocumentDistributionCollectionRecord> {
+
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/mapper/ExternalKnowledgeMapper.java b/multi-system/src/main/java/com/gkhy/exam/system/mapper/ExternalKnowledgeMapper.java
new file mode 100644
index 0000000..6bb8a82
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/mapper/ExternalKnowledgeMapper.java
@@ -0,0 +1,21 @@
+package com.gkhy.exam.system.mapper;
+
+import com.gkhy.exam.system.domain.ExternalKnowledge;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 外部知识 Mapper 接口
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+@Mapper
+public interface ExternalKnowledgeMapper extends BaseMapper<ExternalKnowledge> {
+
+    List<ExternalKnowledge> getExternalKnowledge(ExternalKnowledge externalKnowledge);
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/mapper/InternalKnowledgeMapper.java b/multi-system/src/main/java/com/gkhy/exam/system/mapper/InternalKnowledgeMapper.java
new file mode 100644
index 0000000..d43b756
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/mapper/InternalKnowledgeMapper.java
@@ -0,0 +1,21 @@
+package com.gkhy.exam.system.mapper;
+
+import com.gkhy.exam.system.domain.ExternalKnowledge;
+import com.gkhy.exam.system.domain.InternalKnowledge;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 内部知识 Mapper 接口
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+@Mapper
+public interface InternalKnowledgeMapper extends BaseMapper<InternalKnowledge> {
+    List<InternalKnowledge> getInternalKnowledge(InternalKnowledge internalKnowledge);
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/mapper/SixInspectionContentMapper.java b/multi-system/src/main/java/com/gkhy/exam/system/mapper/SixInspectionContentMapper.java
new file mode 100644
index 0000000..dd2f251
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/mapper/SixInspectionContentMapper.java
@@ -0,0 +1,18 @@
+package com.gkhy.exam.system.mapper;
+
+import com.gkhy.exam.system.domain.SixInspectionContent;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 6s检查内容表	 Mapper 接口
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+@Mapper
+public interface SixInspectionContentMapper extends BaseMapper<SixInspectionContent> {
+
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/mapper/SixInspectionMapper.java b/multi-system/src/main/java/com/gkhy/exam/system/mapper/SixInspectionMapper.java
new file mode 100644
index 0000000..e1b5c10
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/mapper/SixInspectionMapper.java
@@ -0,0 +1,22 @@
+package com.gkhy.exam.system.mapper;
+
+import com.gkhy.exam.system.domain.SixInspection;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 6s检查主表 Mapper 接口
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+@Mapper
+public interface SixInspectionMapper extends BaseMapper<SixInspection> {
+
+    List<SixInspection> selectSixInspectionList(SixInspection sixInspection);
+
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/mapper/SixInspectionProblemMapper.java b/multi-system/src/main/java/com/gkhy/exam/system/mapper/SixInspectionProblemMapper.java
new file mode 100644
index 0000000..f8396b1
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/mapper/SixInspectionProblemMapper.java
@@ -0,0 +1,18 @@
+package com.gkhy.exam.system.mapper;
+
+import com.gkhy.exam.system.domain.SixInspectionProblem;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 6s检查其他问题表	 Mapper 接口
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+@Mapper
+public interface SixInspectionProblemMapper extends BaseMapper<SixInspectionProblem> {
+
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/AnnualVerificationPlanService.java b/multi-system/src/main/java/com/gkhy/exam/system/service/AnnualVerificationPlanService.java
new file mode 100644
index 0000000..fc27fca
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/AnnualVerificationPlanService.java
@@ -0,0 +1,25 @@
+package com.gkhy.exam.system.service;
+
+import com.gkhy.exam.common.api.CommonPage;
+import com.gkhy.exam.common.api.CommonResult;
+import com.gkhy.exam.system.domain.AnnualVerificationPlan;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.gkhy.exam.system.domain.OutsourcedReview;
+
+/**
+ * <p>
+ * 年度检定计划主表 服务类
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+public interface AnnualVerificationPlanService extends IService<AnnualVerificationPlan> {
+    CommonPage selectAnnualVerificationPlanList(AnnualVerificationPlan annualVerificationPlan);
+
+    CommonResult saveAnnualVerificationPlan(AnnualVerificationPlan annualVerificationPlan);
+
+    CommonResult getAnnualVerificationPlan(Long id);
+
+    CommonResult deletedAnnualVerificationPlan(Long id);
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/CalibrationMonitoringEquipmentService.java b/multi-system/src/main/java/com/gkhy/exam/system/service/CalibrationMonitoringEquipmentService.java
new file mode 100644
index 0000000..9654679
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/CalibrationMonitoringEquipmentService.java
@@ -0,0 +1,25 @@
+package com.gkhy.exam.system.service;
+
+import com.gkhy.exam.common.api.CommonPage;
+import com.gkhy.exam.common.api.CommonResult;
+import com.gkhy.exam.system.domain.AnnualVerificationPlan;
+import com.gkhy.exam.system.domain.CalibrationMonitoringEquipment;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 监测和测量设备校准确认表	 服务类
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+public interface CalibrationMonitoringEquipmentService extends IService<CalibrationMonitoringEquipment> {
+
+    CommonPage selectCalibrationMonitoringEquipmentList(CalibrationMonitoringEquipment calibrationMonitoringEquipment);
+
+    CommonResult saveCalibrationMonitoringEquipment(CalibrationMonitoringEquipment calibrationMonitoringEquipment);
+
+    CommonResult deletedCalibrationMonitoringEquipment(Long id);
+
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/DocumentBorrowCopyService.java b/multi-system/src/main/java/com/gkhy/exam/system/service/DocumentBorrowCopyService.java
new file mode 100644
index 0000000..8fadc95
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/DocumentBorrowCopyService.java
@@ -0,0 +1,27 @@
+package com.gkhy.exam.system.service;
+
+import com.gkhy.exam.common.api.CommonPage;
+import com.gkhy.exam.common.api.CommonResult;
+import com.gkhy.exam.system.domain.AnnualVerificationPlan;
+import com.gkhy.exam.system.domain.DocumentBorrowCopy;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 文件借阅复制申请主表 服务类
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+public interface DocumentBorrowCopyService extends IService<DocumentBorrowCopy> {
+
+    CommonPage selectDocumentBorrowCopyList(DocumentBorrowCopy documentBorrowCopy);
+
+    CommonResult saveDocumentBorrowCopy(DocumentBorrowCopy documentBorrowCopy);
+
+    CommonResult getDocumentBorrowCopy(Long id);
+
+    CommonResult deletedDocumentBorrowCopy(Long id);
+
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/DocumentChangesInvalidatedService.java b/multi-system/src/main/java/com/gkhy/exam/system/service/DocumentChangesInvalidatedService.java
new file mode 100644
index 0000000..8447151
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/DocumentChangesInvalidatedService.java
@@ -0,0 +1,25 @@
+package com.gkhy.exam.system.service;
+
+import com.gkhy.exam.common.api.CommonPage;
+import com.gkhy.exam.common.api.CommonResult;
+import com.gkhy.exam.system.domain.AnnualVerificationPlan;
+import com.gkhy.exam.system.domain.DocumentChangesInvalidated;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 文件更改作废申请主表	 服务类
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+public interface DocumentChangesInvalidatedService extends IService<DocumentChangesInvalidated> {
+    CommonPage selectDocumentChangesInvalidatedList(DocumentChangesInvalidated documentChangesInvalidated);
+
+    CommonResult saveDocumentChangesInvalidated(DocumentChangesInvalidated documentChangesInvalidated);
+
+    CommonResult getDocumentChangesInvalidated(Long id);
+
+    CommonResult deletedDocumentChangesInvalidated(Long id);
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/DocumentDestructionApplyService.java b/multi-system/src/main/java/com/gkhy/exam/system/service/DocumentDestructionApplyService.java
new file mode 100644
index 0000000..5478632
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/DocumentDestructionApplyService.java
@@ -0,0 +1,26 @@
+package com.gkhy.exam.system.service;
+
+import com.gkhy.exam.common.api.CommonPage;
+import com.gkhy.exam.common.api.CommonResult;
+import com.gkhy.exam.system.domain.CalibrationMonitoringEquipment;
+import com.gkhy.exam.system.domain.DocumentDestructionApply;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 文件销毁申请主表	 服务类
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+public interface DocumentDestructionApplyService extends IService<DocumentDestructionApply> {
+
+
+    CommonPage selectDocumentDestructionApplyList(DocumentDestructionApply documentDestructionApply);
+
+    CommonResult saveDocumentDestructionApply(DocumentDestructionApply documentDestructionApply);
+
+    CommonResult deletedDocumentDestructionApply(Long id);
+
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/DocumentDistributionCollectionService.java b/multi-system/src/main/java/com/gkhy/exam/system/service/DocumentDistributionCollectionService.java
new file mode 100644
index 0000000..554df8d
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/DocumentDistributionCollectionService.java
@@ -0,0 +1,25 @@
+package com.gkhy.exam.system.service;
+
+import com.gkhy.exam.common.api.CommonPage;
+import com.gkhy.exam.common.api.CommonResult;
+import com.gkhy.exam.system.domain.DocumentBorrowCopy;
+import com.gkhy.exam.system.domain.DocumentDistributionCollection;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 文件发放回收主表 服务类
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+public interface DocumentDistributionCollectionService extends IService<DocumentDistributionCollection> {
+    CommonPage selectDocumentDistributionCollectionList(DocumentDistributionCollection documentDistributionCollection);
+
+    CommonResult saveDocumentDistributionCollection(DocumentDistributionCollection documentDistributionCollection);
+
+    CommonResult getDocumentDistributionCollection(Long id);
+
+    CommonResult deletedDocumentDistributionCollection(Long id);
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/ExternalKnowledgeService.java b/multi-system/src/main/java/com/gkhy/exam/system/service/ExternalKnowledgeService.java
new file mode 100644
index 0000000..bfb2af6
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/ExternalKnowledgeService.java
@@ -0,0 +1,25 @@
+package com.gkhy.exam.system.service;
+
+import com.gkhy.exam.common.api.CommonPage;
+import com.gkhy.exam.common.api.CommonResult;
+import com.gkhy.exam.system.domain.AnnualMaintenance;
+import com.gkhy.exam.system.domain.ExternalKnowledge;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.gkhy.exam.system.domain.vo.AnnualMaintenanceSaveDTOReq;
+
+/**
+ * <p>
+ * 外部知识 服务类
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+public interface ExternalKnowledgeService extends IService<ExternalKnowledge> {
+    CommonPage selectExternalKnowledgeList(ExternalKnowledge externalKnowledge);
+
+    CommonResult saveExternalKnowledge(ExternalKnowledge externalKnowledge);
+
+
+    CommonResult deletedExternalKnowledge(Integer id);
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/InternalKnowledgeService.java b/multi-system/src/main/java/com/gkhy/exam/system/service/InternalKnowledgeService.java
new file mode 100644
index 0000000..2303af8
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/InternalKnowledgeService.java
@@ -0,0 +1,24 @@
+package com.gkhy.exam.system.service;
+
+import com.gkhy.exam.common.api.CommonPage;
+import com.gkhy.exam.common.api.CommonResult;
+import com.gkhy.exam.system.domain.ExternalKnowledge;
+import com.gkhy.exam.system.domain.InternalKnowledge;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 内部知识 服务类
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+public interface InternalKnowledgeService extends IService<InternalKnowledge> {
+    CommonPage selectInternalKnowledgeList(InternalKnowledge internalKnowledge);
+
+    CommonResult saveInternalKnowledge(InternalKnowledge internalKnowledge);
+
+
+    CommonResult deletedInternalKnowledge(Integer id);
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/SixInspectionService.java b/multi-system/src/main/java/com/gkhy/exam/system/service/SixInspectionService.java
new file mode 100644
index 0000000..26e9c1a
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/SixInspectionService.java
@@ -0,0 +1,25 @@
+package com.gkhy.exam.system.service;
+
+import com.gkhy.exam.common.api.CommonPage;
+import com.gkhy.exam.common.api.CommonResult;
+import com.gkhy.exam.system.domain.AnnualVerificationPlan;
+import com.gkhy.exam.system.domain.SixInspection;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 6s检查主表 服务类
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+public interface SixInspectionService extends IService<SixInspection> {
+    CommonPage selectSixInspectionList(SixInspection sixInspection);
+
+    CommonResult saveSixInspection(SixInspection sixInspection);
+
+    CommonResult getSixInspection(Long id);
+
+    CommonResult deletedSixInspection(Long id);
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/SysUserService.java b/multi-system/src/main/java/com/gkhy/exam/system/service/SysUserService.java
index 1a17133..0ca15d8 100644
--- a/multi-system/src/main/java/com/gkhy/exam/system/service/SysUserService.java
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/SysUserService.java
@@ -5,6 +5,7 @@
 import com.gkhy.exam.common.domain.entity.SysUser;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -91,7 +92,12 @@
      */
     int updateUserStatus(SysUser user);
 
-
+    /**
+     * 修改用户状态
+     * @param user
+     * @return
+     */
+    int updateSpecialCertificate(SysUser user);
     /**
      * 修改用户密码信息
      * @param user
@@ -107,6 +113,13 @@
     boolean checkUsernameUnique(SysUser user);
 
     /**
+     * 统计企业人数
+     * @param companyId
+     * @return
+     */
+    Map<String, Object> getUserData(Long companyId);
+
+    /**
      * 校验手机号是否唯一
      * @param user
      * @return
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/AnnualVerificationPlanServiceImpl.java b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/AnnualVerificationPlanServiceImpl.java
new file mode 100644
index 0000000..748a0a8
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/AnnualVerificationPlanServiceImpl.java
@@ -0,0 +1,131 @@
+package com.gkhy.exam.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.gkhy.exam.common.api.CommonPage;
+import com.gkhy.exam.common.api.CommonResult;
+import com.gkhy.exam.common.constant.UserConstant;
+import com.gkhy.exam.common.utils.PageUtils;
+import com.gkhy.exam.common.utils.SecurityUtils;
+import com.gkhy.exam.system.domain.AnnualVerificationDevice;
+import com.gkhy.exam.system.domain.AnnualVerificationPlan;
+import com.gkhy.exam.system.domain.OutsourcedReview;
+import com.gkhy.exam.system.domain.OutsourcedReviewSubsidiary;
+import com.gkhy.exam.system.mapper.AnnualVerificationDeviceMapper;
+import com.gkhy.exam.system.mapper.AnnualVerificationPlanMapper;
+import com.gkhy.exam.system.service.AnnualVerificationPlanService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+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;
+
+/**
+ * <p>
+ * 年度检定计划主表 服务实现类
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+@Service
+public class AnnualVerificationPlanServiceImpl extends ServiceImpl<AnnualVerificationPlanMapper, AnnualVerificationPlan> implements AnnualVerificationPlanService {
+
+    @Autowired
+    private AnnualVerificationPlanMapper annualVerificationPlanMapper;
+
+    @Autowired
+    private AnnualVerificationDeviceMapper annualVerificationDeviceMapper;
+
+    @Override
+    public CommonPage selectAnnualVerificationPlanList(AnnualVerificationPlan annualVerificationPlan) {
+        PageUtils.startPage();
+        List<AnnualVerificationPlan> annualVerificationPlans = annualVerificationPlanMapper.selectAnnualVerificationPlanList(annualVerificationPlan);
+        return CommonPage.restPage(annualVerificationPlans);
+    }
+
+    @Override
+    @Transactional
+    public CommonResult saveAnnualVerificationPlan(AnnualVerificationPlan annualVerificationPlan) {
+
+        List<AnnualVerificationDevice> annualVerificationDevices = annualVerificationPlan.getAnnualVerificationDevices();
+        if (ObjectUtils.isEmpty(annualVerificationDevices)){
+            return CommonResult.failed("保存参数不能为空");
+        }
+        int i = 0;
+        if (annualVerificationPlan.getId() == null){
+            annualVerificationPlan.setCreateBy(SecurityUtils.getUsername());
+            annualVerificationPlan.setCreateTime(LocalDateTime.now());
+            i = annualVerificationPlanMapper.insert(annualVerificationPlan);
+        }else {
+            annualVerificationPlan.setUpdateTime(LocalDateTime.now());
+            annualVerificationPlan.setUpdateBy(SecurityUtils.getUsername());
+            i = annualVerificationPlanMapper.updateById(annualVerificationPlan);
+        }
+        if (i > 0){
+            batchSave(annualVerificationPlan.getId(), annualVerificationDevices, annualVerificationPlan.getDelData());
+        }
+        return i > 0 ? CommonResult.success() : CommonResult.failed();
+    }
+
+    private void batchSave(Long id, List<AnnualVerificationDevice> annualVerificationDevices, List<Long> delData) {
+        if (ObjectUtils.isNotEmpty(delData)){
+            int update = annualVerificationDeviceMapper.update(new AnnualVerificationDevice(),
+                    new LambdaUpdateWrapper<AnnualVerificationDevice>().set(AnnualVerificationDevice::getDelFlag, UserConstant.DEPT_DISABLE)
+                            .set(AnnualVerificationDevice::getUpdateTime, LocalDateTime.now()).set(AnnualVerificationDevice::getUpdateBy, SecurityUtils.getUsername())
+                            .in(AnnualVerificationDevice::getId, delData)
+            );
+            if (update >= 0){
+                throw new RuntimeException("操作失败");
+            }
+        }
+        annualVerificationDevices.forEach(annualVerificationDevice -> {
+            if (annualVerificationDevice.getId() == null){
+                annualVerificationDevice.setAnnualVerificationId(id);
+                annualVerificationDevice.setCreateTime(LocalDateTime.now());
+                annualVerificationDevice.setCreateBy(SecurityUtils.getUsername());
+                annualVerificationDeviceMapper.insert(annualVerificationDevice);
+            }else {
+                annualVerificationDevice.setUpdateTime(LocalDateTime.now());
+                annualVerificationDevice.setUpdateBy(SecurityUtils.getUsername());
+                annualVerificationDeviceMapper.updateById(annualVerificationDevice);
+            }
+
+        });
+    }
+
+
+    @Override
+    public CommonResult getAnnualVerificationPlan(Long id) {
+        AnnualVerificationPlan annualVerificationPlan = annualVerificationPlanMapper.selectById(id);
+        if (annualVerificationPlan != null){
+
+            List<AnnualVerificationDevice> annualVerificationDevices = annualVerificationDeviceMapper.selectList(new LambdaQueryWrapper<>(AnnualVerificationDevice.class).eq(AnnualVerificationDevice::getAnnualVerificationId, id)
+                    .eq(AnnualVerificationDevice::getDelFlag, UserConstant.ENABLE).orderByDesc(AnnualVerificationDevice::getCreateTime));
+            annualVerificationPlan.setAnnualVerificationDevices(annualVerificationDevices);
+        }
+        return CommonResult.success(annualVerificationPlan);
+    }
+
+    @Override
+    @Transactional
+    public CommonResult deletedAnnualVerificationPlan(Long id) {
+
+        int i = annualVerificationPlanMapper.update(new AnnualVerificationPlan(),
+                new LambdaUpdateWrapper<AnnualVerificationPlan>().eq(AnnualVerificationPlan::getId, id).set(AnnualVerificationPlan::getDelFlag, UserConstant.DEPT_DISABLE)
+                        .set(AnnualVerificationPlan::getUpdateTime, LocalDateTime.now()).set(AnnualVerificationPlan::getUpdateBy, SecurityUtils.getUsername())
+        );
+        if (i > 0) {
+            annualVerificationDeviceMapper.update(new AnnualVerificationDevice(),
+                    new LambdaUpdateWrapper<AnnualVerificationDevice>().eq(AnnualVerificationDevice::getAnnualVerificationId, id)
+                            .set(AnnualVerificationDevice::getDelFlag, UserConstant.DEPT_DISABLE)
+                            .set(AnnualVerificationDevice::getUpdateTime, LocalDateTime.now())
+                            .set(AnnualVerificationDevice::getUpdateBy, SecurityUtils.getUsername()));
+        }
+
+        return CommonResult.success();
+    }
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/CalibrationMonitoringEquipmentServiceImpl.java b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/CalibrationMonitoringEquipmentServiceImpl.java
new file mode 100644
index 0000000..cbf0ea0
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/CalibrationMonitoringEquipmentServiceImpl.java
@@ -0,0 +1,66 @@
+package com.gkhy.exam.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.gkhy.exam.common.api.CommonPage;
+import com.gkhy.exam.common.api.CommonResult;
+import com.gkhy.exam.common.constant.UserConstant;
+import com.gkhy.exam.common.utils.PageUtils;
+import com.gkhy.exam.common.utils.SecurityUtils;
+import com.gkhy.exam.system.domain.AnnualVerificationPlan;
+import com.gkhy.exam.system.domain.CalibrationMonitoringEquipment;
+import com.gkhy.exam.system.mapper.CalibrationMonitoringEquipmentMapper;
+import com.gkhy.exam.system.service.CalibrationMonitoringEquipmentService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * <p>
+ * 监测和测量设备校准确认表	 服务实现类
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+@Service
+public class CalibrationMonitoringEquipmentServiceImpl extends ServiceImpl<CalibrationMonitoringEquipmentMapper, CalibrationMonitoringEquipment> implements CalibrationMonitoringEquipmentService {
+
+    @Autowired
+    private CalibrationMonitoringEquipmentMapper calibrationMonitoringEquipmentMapper;
+
+    @Override
+    public CommonPage selectCalibrationMonitoringEquipmentList(CalibrationMonitoringEquipment calibrationMonitoringEquipment) {
+        PageUtils.startPage();
+        List<CalibrationMonitoringEquipment> calibrationMonitoringEquipments = calibrationMonitoringEquipmentMapper.selectCalibrationMonitoringEquipmentList(calibrationMonitoringEquipment);
+        return CommonPage.restPage(calibrationMonitoringEquipments);
+    }
+
+    @Override
+    public CommonResult saveCalibrationMonitoringEquipment(CalibrationMonitoringEquipment calibrationMonitoringEquipment) {
+        int i = 0;
+        if (calibrationMonitoringEquipment.getId() == null){
+            calibrationMonitoringEquipment.setCreateBy(SecurityUtils.getUsername());
+            calibrationMonitoringEquipment.setCreateTime(LocalDateTime.now());
+            i = calibrationMonitoringEquipmentMapper.insert(calibrationMonitoringEquipment);
+        }else {
+            calibrationMonitoringEquipment.setUpdateTime(LocalDateTime.now());
+            calibrationMonitoringEquipment.setUpdateBy(SecurityUtils.getUsername());
+            i = calibrationMonitoringEquipmentMapper.updateById(calibrationMonitoringEquipment);
+        }
+
+        return i > 0 ? CommonResult.success() : CommonResult.failed();
+    }
+
+    @Override
+    public CommonResult deletedCalibrationMonitoringEquipment(Long id) {
+        int i = calibrationMonitoringEquipmentMapper.update(new CalibrationMonitoringEquipment(),
+                new LambdaUpdateWrapper<CalibrationMonitoringEquipment>().eq(CalibrationMonitoringEquipment::getId, id).set(CalibrationMonitoringEquipment::getDelFlag, UserConstant.DEPT_DISABLE)
+                        .set(CalibrationMonitoringEquipment::getUpdateTime, LocalDateTime.now()).set(CalibrationMonitoringEquipment::getUpdateBy, SecurityUtils.getUsername())
+        );
+
+        return CommonResult.success();
+    }
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/DocumentBorrowCopyServiceImpl.java b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/DocumentBorrowCopyServiceImpl.java
new file mode 100644
index 0000000..60656f6
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/DocumentBorrowCopyServiceImpl.java
@@ -0,0 +1,126 @@
+package com.gkhy.exam.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.gkhy.exam.common.api.CommonPage;
+import com.gkhy.exam.common.api.CommonResult;
+import com.gkhy.exam.common.constant.UserConstant;
+import com.gkhy.exam.common.utils.PageUtils;
+import com.gkhy.exam.common.utils.SecurityUtils;
+import com.gkhy.exam.system.domain.AnnualVerificationPlan;
+import com.gkhy.exam.system.domain.DocumentBorrowCopy;
+import com.gkhy.exam.system.domain.DocumentBorrowCopyRecord;
+import com.gkhy.exam.system.mapper.DocumentBorrowCopyMapper;
+import com.gkhy.exam.system.mapper.DocumentBorrowCopyRecordMapper;
+import com.gkhy.exam.system.service.DocumentBorrowCopyService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+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;
+
+/**
+ * <p>
+ * 文件借阅复制申请主表 服务实现类
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+@Service
+public class DocumentBorrowCopyServiceImpl extends ServiceImpl<DocumentBorrowCopyMapper, DocumentBorrowCopy> implements DocumentBorrowCopyService {
+
+    @Autowired
+    private DocumentBorrowCopyMapper documentBorrowCopyMapper;
+
+    @Autowired
+    private DocumentBorrowCopyRecordMapper documentBorrowCopyRecordMapper;
+
+    @Override
+    public CommonPage selectDocumentBorrowCopyList(DocumentBorrowCopy documentBorrowCopy) {
+        PageUtils.startPage();
+        List<DocumentBorrowCopy> documentBorrowCopies = documentBorrowCopyMapper.selectDocumentBorrowCopyList(documentBorrowCopy);
+        return CommonPage.restPage(documentBorrowCopies);
+    }
+
+    @Override
+    @Transactional
+    public CommonResult saveDocumentBorrowCopy(DocumentBorrowCopy documentBorrowCopy) {
+        List<DocumentBorrowCopyRecord> documentBorrowCopyRecordList = documentBorrowCopy.getDocumentBorrowCopyRecordList();
+        if (ObjectUtils.isEmpty(documentBorrowCopyRecordList)){
+            return CommonResult.failed("保存参数不能为空");
+        }
+        int i = 0;
+        if (documentBorrowCopy.getId() == null){
+            documentBorrowCopy.setCreateBy(SecurityUtils.getUsername());
+            documentBorrowCopy.setCreateTime(LocalDateTime.now());
+             i = documentBorrowCopyMapper.insert(documentBorrowCopy);
+        }else {
+            documentBorrowCopy.setUpdateBy(SecurityUtils.getUsername());
+            documentBorrowCopy.setUpdateTime(LocalDateTime.now());
+            i = documentBorrowCopyMapper.updateById(documentBorrowCopy);
+        }
+        if (i > 0){
+            batchSave(documentBorrowCopy.getId(), documentBorrowCopyRecordList,documentBorrowCopy.getDeleteIds());
+        }
+        return i > 0 ? CommonResult.success() : CommonResult.failed();
+    }
+
+    private void batchSave(Long id, List<DocumentBorrowCopyRecord> documentBorrowCopyRecordList,List<Long> delIds) {
+        if (ObjectUtils.isNotEmpty(delIds)) {
+            int update = documentBorrowCopyRecordMapper.update(new DocumentBorrowCopyRecord(),
+                    new LambdaUpdateWrapper<DocumentBorrowCopyRecord>().set(DocumentBorrowCopyRecord::getDelFlag, UserConstant.DEPT_DISABLE)
+                            .set(DocumentBorrowCopyRecord::getUpdateTime, LocalDateTime.now())
+                            .set(DocumentBorrowCopyRecord::getUpdateBy, SecurityUtils.getUsername()).in(DocumentBorrowCopyRecord::getId, delIds)
+            );
+        }
+        if (ObjectUtils.isNotEmpty(documentBorrowCopyRecordList)) {
+          documentBorrowCopyRecordList.forEach(documentBorrowCopyRecord -> {
+              if (documentBorrowCopyRecord.getId() == null){
+                  documentBorrowCopyRecord.setDocumentBorrowId(id);
+                  documentBorrowCopyRecord.setCreateTime(LocalDateTime.now());
+                  documentBorrowCopyRecord.setCreateBy(SecurityUtils.getUsername());
+                  documentBorrowCopyRecordMapper.insert(documentBorrowCopyRecord);
+              }else {
+                  documentBorrowCopyRecord.setUpdateTime(LocalDateTime.now());
+                  documentBorrowCopyRecord.setUpdateBy(SecurityUtils.getUsername());
+                  documentBorrowCopyRecordMapper.updateById(documentBorrowCopyRecord);
+              }
+
+          });
+        }
+    }
+
+    @Override
+    public CommonResult getDocumentBorrowCopy(Long id) {
+        DocumentBorrowCopy documentBorrowCopy = documentBorrowCopyMapper.selectById(id);
+        if (documentBorrowCopy != null){
+            List<DocumentBorrowCopyRecord> documentBorrowCopyRecordList = documentBorrowCopyRecordMapper.selectList(
+                    new LambdaQueryWrapper<>(DocumentBorrowCopyRecord.class).eq(DocumentBorrowCopyRecord::getDocumentBorrowId, id)
+                            .eq(DocumentBorrowCopyRecord::getDelFlag, UserConstant.ENABLE).orderByAsc(DocumentBorrowCopyRecord::getSort)
+            );
+            documentBorrowCopy.setDocumentBorrowCopyRecordList(documentBorrowCopyRecordList);
+        }
+        return CommonResult.success(documentBorrowCopy);
+    }
+
+    @Override
+    @Transactional
+    public CommonResult deletedDocumentBorrowCopy(Long id) {
+        int i = documentBorrowCopyMapper.update(new DocumentBorrowCopy(),
+                new LambdaUpdateWrapper<DocumentBorrowCopy>().set(DocumentBorrowCopy::getDelFlag, UserConstant.DEPT_DISABLE)
+                        .set(DocumentBorrowCopy::getUpdateTime, LocalDateTime.now())
+                        .set(DocumentBorrowCopy::getUpdateBy, SecurityUtils.getUsername()).eq(DocumentBorrowCopy::getId, id)
+        );
+        if (i > 0){
+            documentBorrowCopyRecordMapper.update(new DocumentBorrowCopyRecord(),
+                    new LambdaUpdateWrapper<DocumentBorrowCopyRecord>().set(DocumentBorrowCopyRecord::getDelFlag, UserConstant.DEPT_DISABLE)
+                            .set(DocumentBorrowCopyRecord::getUpdateTime, LocalDateTime.now()).set(DocumentBorrowCopyRecord::getUpdateBy, SecurityUtils.getUsername())
+                            .eq(DocumentBorrowCopyRecord::getDocumentBorrowId, id));
+        }
+        return CommonResult.success();
+    }
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/DocumentChangesInvalidatedServiceImpl.java b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/DocumentChangesInvalidatedServiceImpl.java
new file mode 100644
index 0000000..6f98b85
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/DocumentChangesInvalidatedServiceImpl.java
@@ -0,0 +1,162 @@
+package com.gkhy.exam.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.gkhy.exam.common.api.CommonPage;
+import com.gkhy.exam.common.api.CommonResult;
+import com.gkhy.exam.common.constant.UserConstant;
+import com.gkhy.exam.common.utils.PageUtils;
+import com.gkhy.exam.common.utils.SecurityUtils;
+import com.gkhy.exam.system.domain.AnnualVerificationPlan;
+import com.gkhy.exam.system.domain.DocumentChangesInvalidated;
+import com.gkhy.exam.system.domain.DocumentChangesInvalidatedEvaluate;
+import com.gkhy.exam.system.domain.DocumentChangesInvalidatedIssue;
+import com.gkhy.exam.system.mapper.DocumentChangesInvalidatedEvaluateMapper;
+import com.gkhy.exam.system.mapper.DocumentChangesInvalidatedIssueMapper;
+import com.gkhy.exam.system.mapper.DocumentChangesInvalidatedMapper;
+import com.gkhy.exam.system.service.DocumentChangesInvalidatedService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+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;
+
+/**
+ * <p>
+ * 文件更改作废申请主表	 服务实现类
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+@Service
+public class DocumentChangesInvalidatedServiceImpl extends ServiceImpl<DocumentChangesInvalidatedMapper, DocumentChangesInvalidated> implements DocumentChangesInvalidatedService {
+
+    @Autowired
+    private DocumentChangesInvalidatedMapper documentChangesInvalidatedMapper;
+
+    @Autowired
+    private DocumentChangesInvalidatedIssueMapper documentChangesInvalidatedIssueMapper;
+
+    @Autowired
+    private DocumentChangesInvalidatedEvaluateMapper documentChangesInvalidatedEvaluateMapper;
+
+    @Override
+    public CommonPage selectDocumentChangesInvalidatedList(DocumentChangesInvalidated documentChangesInvalidated) {
+        PageUtils.startPage();
+        List<DocumentChangesInvalidated> documentChangesInvalidated1 = documentChangesInvalidatedMapper.getDocumentChangesInvalidated(documentChangesInvalidated);
+        return CommonPage.restPage(documentChangesInvalidated1);
+    }
+
+    @Override
+    @Transactional
+    public CommonResult saveDocumentChangesInvalidated(DocumentChangesInvalidated documentChangesInvalidated) {
+        int i = 0;
+        if (documentChangesInvalidated.getId() == null){
+            documentChangesInvalidated.setCreateBy(SecurityUtils.getUsername());
+            documentChangesInvalidated.setCreateTime(LocalDateTime.now());
+            i = documentChangesInvalidatedMapper.insert(documentChangesInvalidated);
+        }else {
+            documentChangesInvalidated.setUpdateTime(LocalDateTime.now());
+            documentChangesInvalidated.setUpdateBy(SecurityUtils.getUsername());
+            i = documentChangesInvalidatedMapper.updateById(documentChangesInvalidated);
+        }
+        if (i > 0){
+            batchSave(documentChangesInvalidated.getId(), documentChangesInvalidated.getDocumentChangesInvalidatedEvaluateList()
+                    , documentChangesInvalidated.getDocumentChangesInvalidatedIssueList(),documentChangesInvalidated.getDelEvaluateIds(),documentChangesInvalidated.getDelInvalidatedIssueIds());
+        }
+        return i > 0 ? CommonResult.success() : CommonResult.failed();
+    }
+
+    private void batchSave(Long id, List<DocumentChangesInvalidatedEvaluate> documentChangesInvalidatedEvaluates,
+                           List<DocumentChangesInvalidatedIssue> documentChangesInvalidatedIssues,
+                           List<Long> delEvaluateIds, List<Long> delInvalidatedIssueIds) {
+        if (ObjectUtils.isNotEmpty(delEvaluateIds)){
+
+            int update = documentChangesInvalidatedEvaluateMapper.update(new DocumentChangesInvalidatedEvaluate(),
+                    new LambdaUpdateWrapper<DocumentChangesInvalidatedEvaluate>().set(DocumentChangesInvalidatedEvaluate::getDelFlag, UserConstant.DEPT_DISABLE)
+                            .set(DocumentChangesInvalidatedEvaluate::getUpdateTime, LocalDateTime.now()).set(DocumentChangesInvalidatedEvaluate::getUpdateBy, SecurityUtils.getUsername())
+                            .in(DocumentChangesInvalidatedEvaluate::getId, delEvaluateIds)
+            );
+        }
+        if (ObjectUtils.isNotEmpty(delInvalidatedIssueIds)){
+
+            int update = documentChangesInvalidatedIssueMapper.update(new DocumentChangesInvalidatedIssue(),
+                    new LambdaUpdateWrapper<DocumentChangesInvalidatedIssue>().set(DocumentChangesInvalidatedIssue::getDelFlag, UserConstant.DEPT_DISABLE)
+                            .set(DocumentChangesInvalidatedIssue::getUpdateTime, LocalDateTime.now()).set(DocumentChangesInvalidatedIssue:: getUpdateBy, SecurityUtils.getUsername())
+                    .in(DocumentChangesInvalidatedIssue::getId, delInvalidatedIssueIds)
+            );
+        }
+        if (ObjectUtils.isNotEmpty(documentChangesInvalidatedIssues)){
+            documentChangesInvalidatedIssues.forEach(documentChangesInvalidatedIssue -> {
+                if (documentChangesInvalidatedIssue.getId() == null){
+                    documentChangesInvalidatedIssue.setDocumentChangesId(id);
+                    documentChangesInvalidatedIssue.setCreateTime(LocalDateTime.now());
+                    documentChangesInvalidatedIssue.setCreateBy(SecurityUtils.getUsername());
+                    documentChangesInvalidatedIssueMapper.insert(documentChangesInvalidatedIssue);
+                }else {
+                    documentChangesInvalidatedIssue.setUpdateTime(LocalDateTime.now());
+                    documentChangesInvalidatedIssue.setUpdateBy(SecurityUtils.getUsername());
+                    documentChangesInvalidatedIssueMapper.updateById(documentChangesInvalidatedIssue);
+                }
+            });
+        }
+        if (ObjectUtils.isNotEmpty(documentChangesInvalidatedEvaluates)){
+            documentChangesInvalidatedEvaluates.forEach(documentChangesInvalidatedEvaluate -> {
+
+                if (documentChangesInvalidatedEvaluate.getId() == null){
+                    documentChangesInvalidatedEvaluate.setDocumentChangesId(id);
+                    documentChangesInvalidatedEvaluate.setCreateTime(LocalDateTime.now());
+                    documentChangesInvalidatedEvaluate.setCreateBy(SecurityUtils.getUsername());
+                    documentChangesInvalidatedEvaluateMapper.insert(documentChangesInvalidatedEvaluate);
+                }else {
+                    documentChangesInvalidatedEvaluate.setUpdateTime(LocalDateTime.now());
+                    documentChangesInvalidatedEvaluate.setUpdateBy(SecurityUtils.getUsername());
+                    documentChangesInvalidatedEvaluateMapper.updateById(documentChangesInvalidatedEvaluate);
+                }
+            });
+        }
+
+    }
+
+    @Override
+    public CommonResult getDocumentChangesInvalidated(Long id) {
+        DocumentChangesInvalidated documentChangesInvalidated = documentChangesInvalidatedMapper.selectById(id);
+        if (documentChangesInvalidated != null){
+
+            List<DocumentChangesInvalidatedIssue> documentChangesInvalidatedIssues = documentChangesInvalidatedIssueMapper.selectList(new LambdaQueryWrapper<>(DocumentChangesInvalidatedIssue.class)
+                    .eq(DocumentChangesInvalidatedIssue::getDocumentChangesId, id)
+                    .eq(DocumentChangesInvalidatedIssue::getDelFlag, UserConstant.ENABLE).orderByAsc(DocumentChangesInvalidatedIssue::getSort));
+            documentChangesInvalidated.setDocumentChangesInvalidatedIssueList(documentChangesInvalidatedIssues);
+            documentChangesInvalidated.setDocumentChangesInvalidatedEvaluateList(documentChangesInvalidatedEvaluateMapper.selectList(new LambdaQueryWrapper<>(DocumentChangesInvalidatedEvaluate.class).eq(DocumentChangesInvalidatedEvaluate::getDocumentChangesId, id)
+                    .eq(DocumentChangesInvalidatedEvaluate::getDelFlag, UserConstant.ENABLE).orderByAsc(DocumentChangesInvalidatedEvaluate::getSort)));
+        }
+        return CommonResult.success(documentChangesInvalidated);
+    }
+
+    @Override
+    @Transactional
+    public CommonResult deletedDocumentChangesInvalidated(Long id) {
+        int i = documentChangesInvalidatedMapper.update(new DocumentChangesInvalidated(),
+                new LambdaUpdateWrapper<DocumentChangesInvalidated>().set(DocumentChangesInvalidated::getDelFlag, UserConstant.DEPT_DISABLE)
+                        .set(DocumentChangesInvalidated::getUpdateTime, LocalDateTime.now()).set(DocumentChangesInvalidated::getUpdateBy, SecurityUtils.getUsername())
+                        .eq(DocumentChangesInvalidated::getId, id)
+        );
+        if (i > 0){
+            documentChangesInvalidatedIssueMapper.update(new DocumentChangesInvalidatedIssue(),
+                    new LambdaUpdateWrapper<DocumentChangesInvalidatedIssue>().set(DocumentChangesInvalidatedIssue::getDelFlag, UserConstant.DEPT_DISABLE)
+                            .set(DocumentChangesInvalidatedIssue::getUpdateTime, LocalDateTime.now()).set(DocumentChangesInvalidatedIssue::getUpdateBy, SecurityUtils.getUsername())
+                            .eq(DocumentChangesInvalidatedIssue::getDocumentChangesId, id)
+            );
+            documentChangesInvalidatedEvaluateMapper.update(new DocumentChangesInvalidatedEvaluate(),
+                    new LambdaUpdateWrapper<DocumentChangesInvalidatedEvaluate>().set(DocumentChangesInvalidatedEvaluate::getDelFlag, UserConstant.DEPT_DISABLE)
+                            .set(DocumentChangesInvalidatedEvaluate::getUpdateTime, LocalDateTime.now()).set(DocumentChangesInvalidatedEvaluate::getUpdateBy, SecurityUtils.getUsername())
+                            .eq(DocumentChangesInvalidatedEvaluate::getDocumentChangesId, id)
+            );
+        }
+        return CommonResult.success();
+    }
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/DocumentDestructionApplyServiceImpl.java b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/DocumentDestructionApplyServiceImpl.java
new file mode 100644
index 0000000..7d84ea7
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/DocumentDestructionApplyServiceImpl.java
@@ -0,0 +1,64 @@
+package com.gkhy.exam.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.gkhy.exam.common.api.CommonPage;
+import com.gkhy.exam.common.api.CommonResult;
+import com.gkhy.exam.common.constant.UserConstant;
+import com.gkhy.exam.common.utils.PageUtils;
+import com.gkhy.exam.common.utils.SecurityUtils;
+import com.gkhy.exam.system.domain.CalibrationMonitoringEquipment;
+import com.gkhy.exam.system.domain.DocumentDestructionApply;
+import com.gkhy.exam.system.mapper.DocumentDestructionApplyMapper;
+import com.gkhy.exam.system.service.DocumentDestructionApplyService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * <p>
+ * 文件销毁申请主表	 服务实现类
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+@Service
+public class DocumentDestructionApplyServiceImpl extends ServiceImpl<DocumentDestructionApplyMapper, DocumentDestructionApply> implements DocumentDestructionApplyService {
+
+
+    @Autowired
+    private DocumentDestructionApplyMapper destructionApplyMapper;
+
+    @Override
+    public CommonPage selectDocumentDestructionApplyList(DocumentDestructionApply documentDestructionApply) {
+        PageUtils.startPage();
+        List<DocumentDestructionApply> documentDestructionApply1 = destructionApplyMapper.getDocumentDestructionApply(documentDestructionApply);
+        return CommonPage.restPage(documentDestructionApply1);
+    }
+
+    @Override
+    public CommonResult saveDocumentDestructionApply(DocumentDestructionApply documentDestructionApply) {
+        int i = 0;
+        if (documentDestructionApply.getId() == null) {
+            documentDestructionApply.setCreateBy(SecurityUtils.getUsername());
+            documentDestructionApply.setCreateTime(LocalDateTime.now());
+            i = destructionApplyMapper.insert(documentDestructionApply);
+        } else {
+            documentDestructionApply.setUpdateTime(LocalDateTime.now());
+            documentDestructionApply.setUpdateBy(SecurityUtils.getUsername());
+            i = destructionApplyMapper.updateById(documentDestructionApply);
+        }
+        return i > 0 ? CommonResult.success() : CommonResult.failed();
+    }
+
+    @Override
+    public CommonResult deletedDocumentDestructionApply(Long id) {
+        destructionApplyMapper.update(new DocumentDestructionApply(), new LambdaUpdateWrapper<DocumentDestructionApply>().eq(DocumentDestructionApply::getId, id)
+                .set(DocumentDestructionApply::getDelFlag, UserConstant.DEPT_DISABLE).set(DocumentDestructionApply::getUpdateTime, LocalDateTime.now())
+                .set(DocumentDestructionApply::getUpdateBy, SecurityUtils.getUsername()));
+        return CommonResult.success();
+    }
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/DocumentDistributionCollectionServiceImpl.java b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/DocumentDistributionCollectionServiceImpl.java
new file mode 100644
index 0000000..e6017e2
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/DocumentDistributionCollectionServiceImpl.java
@@ -0,0 +1,127 @@
+package com.gkhy.exam.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.gkhy.exam.common.api.CommonPage;
+import com.gkhy.exam.common.api.CommonResult;
+import com.gkhy.exam.common.constant.UserConstant;
+import com.gkhy.exam.common.utils.PageUtils;
+import com.gkhy.exam.common.utils.SecurityUtils;
+import com.gkhy.exam.system.domain.DocumentBorrowCopy;
+import com.gkhy.exam.system.domain.DocumentBorrowCopyRecord;
+import com.gkhy.exam.system.domain.DocumentDistributionCollection;
+import com.gkhy.exam.system.domain.DocumentDistributionCollectionRecord;
+import com.gkhy.exam.system.mapper.DocumentDistributionCollectionMapper;
+import com.gkhy.exam.system.mapper.DocumentDistributionCollectionRecordMapper;
+import com.gkhy.exam.system.service.DocumentDistributionCollectionService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+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;
+
+/**
+ * <p>
+ * 文件发放回收主表 服务实现类
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+@Service
+public class DocumentDistributionCollectionServiceImpl extends ServiceImpl<DocumentDistributionCollectionMapper, DocumentDistributionCollection> implements DocumentDistributionCollectionService {
+
+    @Autowired
+    private DocumentDistributionCollectionMapper documentDistributionCollectionMapper;
+    @Autowired
+    private DocumentDistributionCollectionRecordMapper documentDistributionCollectionRecordMapper;
+    @Override
+    public CommonPage selectDocumentDistributionCollectionList(DocumentDistributionCollection documentDistributionCollection) {
+        PageUtils.startPage();
+        List<DocumentDistributionCollection> documentDistributionCollections = documentDistributionCollectionMapper.selectDocumentDistributionCollectionList(documentDistributionCollection);
+        return CommonPage.restPage(documentDistributionCollections);
+    }
+
+    @Override
+    @Transactional
+    public CommonResult saveDocumentDistributionCollection(DocumentDistributionCollection documentDistributionCollection) {
+        List<DocumentDistributionCollectionRecord> documentDistributionCollectionRecordList = documentDistributionCollection.getDocumentDistributionCollectionRecordList();
+        if (ObjectUtils.isEmpty(documentDistributionCollectionRecordList)){
+            return CommonResult.failed("保存参数不能为空");
+        }
+        int i = 0;
+        if (documentDistributionCollection.getId() == null){
+            documentDistributionCollection.setCreateBy(SecurityUtils.getUsername());
+            documentDistributionCollection.setCreateTime(LocalDateTime.now());
+            i = documentDistributionCollectionMapper.insert(documentDistributionCollection);
+        }else {
+            documentDistributionCollection.setUpdateBy(SecurityUtils.getUsername());
+            documentDistributionCollection.setUpdateTime(LocalDateTime.now());
+            i = documentDistributionCollectionMapper.updateById(documentDistributionCollection);
+        }
+        if (i > 0){
+            batchSave(documentDistributionCollection.getId(), documentDistributionCollectionRecordList,documentDistributionCollection.getDeleteIds());
+        }
+        return i > 0 ? CommonResult.success() : CommonResult.failed();
+    }
+
+    private void batchSave(Long id, List<DocumentDistributionCollectionRecord> documentDistributionCollectionRecordList,List<Long> delIds) {
+        if (ObjectUtils.isNotEmpty(delIds)) {
+            int update = documentDistributionCollectionRecordMapper.update(new DocumentDistributionCollectionRecord(),
+                    new LambdaUpdateWrapper<DocumentDistributionCollectionRecord>().set(DocumentDistributionCollectionRecord::getDelFlag, UserConstant.DEPT_DISABLE)
+                            .set(DocumentDistributionCollectionRecord::getUpdateTime, LocalDateTime.now())
+                            .set(DocumentDistributionCollectionRecord::getUpdateBy, SecurityUtils.getUsername()).in(DocumentDistributionCollectionRecord::getId, delIds)
+            );
+        }
+        if (ObjectUtils.isNotEmpty(documentDistributionCollectionRecordList)) {
+            documentDistributionCollectionRecordList.forEach(documentDistributionCollectionRecord -> {
+                if (documentDistributionCollectionRecord.getId() == null){
+                    documentDistributionCollectionRecord.setDocumentId(id);
+                    documentDistributionCollectionRecord.setCreateTime(LocalDateTime.now());
+                    documentDistributionCollectionRecord.setCreateBy(SecurityUtils.getUsername());
+                    documentDistributionCollectionRecordMapper.insert(documentDistributionCollectionRecord);
+                }else {
+                    documentDistributionCollectionRecord.setUpdateTime(LocalDateTime.now());
+                    documentDistributionCollectionRecord.setUpdateBy(SecurityUtils.getUsername());
+                    documentDistributionCollectionRecordMapper.updateById(documentDistributionCollectionRecord);
+                }
+
+            });
+        }
+    }
+
+
+
+    @Override
+    public CommonResult getDocumentDistributionCollection(Long id) {
+        DocumentDistributionCollection documentDistributionCollection = documentDistributionCollectionMapper.selectById(id);
+        if (documentDistributionCollection != null){
+            List<DocumentDistributionCollectionRecord> documentBorrowCopyRecordList = documentDistributionCollectionRecordMapper.selectList(
+                    new LambdaQueryWrapper<>(DocumentDistributionCollectionRecord.class).eq(DocumentDistributionCollectionRecord::getDocumentId, id)
+                            .eq(DocumentDistributionCollectionRecord::getDelFlag, UserConstant.ENABLE).orderByAsc(DocumentDistributionCollectionRecord::getSort)
+            );
+            documentDistributionCollection.setDocumentDistributionCollectionRecordList(documentBorrowCopyRecordList);
+        }
+        return CommonResult.success(documentDistributionCollection);
+    }
+
+    @Override
+    @Transactional
+    public CommonResult deletedDocumentDistributionCollection(Long id) {
+        int i = documentDistributionCollectionMapper.update(new DocumentDistributionCollection(),
+                new LambdaUpdateWrapper<DocumentDistributionCollection>().set(DocumentDistributionCollection::getDelFlag, UserConstant.DEPT_DISABLE)
+                        .set(DocumentDistributionCollection::getUpdateTime, LocalDateTime.now())
+                        .set(DocumentDistributionCollection::getUpdateBy, SecurityUtils.getUsername()).eq(DocumentDistributionCollection::getId, id)
+        );
+        if (i > 0){
+            documentDistributionCollectionRecordMapper.update(new DocumentDistributionCollectionRecord(),
+                    new LambdaUpdateWrapper<DocumentDistributionCollectionRecord>().set(DocumentDistributionCollectionRecord::getDelFlag, UserConstant.DEPT_DISABLE)
+                            .set(DocumentDistributionCollectionRecord::getUpdateTime, LocalDateTime.now()).set(DocumentDistributionCollectionRecord::getUpdateBy, SecurityUtils.getUsername())
+                            .eq(DocumentDistributionCollectionRecord::getDocumentId, id));
+        }
+        return CommonResult.success();
+    }
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/ExternalKnowledgeServiceImpl.java b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/ExternalKnowledgeServiceImpl.java
new file mode 100644
index 0000000..f86b5b0
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/ExternalKnowledgeServiceImpl.java
@@ -0,0 +1,66 @@
+package com.gkhy.exam.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.gkhy.exam.common.api.CommonPage;
+import com.gkhy.exam.common.api.CommonResult;
+import com.gkhy.exam.common.constant.UserConstant;
+import com.gkhy.exam.common.utils.PageUtils;
+import com.gkhy.exam.common.utils.SecurityUtils;
+import com.gkhy.exam.system.domain.ExternalKnowledge;
+import com.gkhy.exam.system.mapper.ExternalKnowledgeMapper;
+import com.gkhy.exam.system.service.ExternalKnowledgeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * <p>
+ * 外部知识 服务实现类
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+@Service
+public class ExternalKnowledgeServiceImpl extends ServiceImpl<ExternalKnowledgeMapper, ExternalKnowledge> implements ExternalKnowledgeService {
+
+    @Autowired
+    private ExternalKnowledgeMapper externalKnowledgeMapper;
+
+
+    @Override
+    public CommonPage selectExternalKnowledgeList(ExternalKnowledge externalKnowledge) {
+        PageUtils.startPage();
+        List<ExternalKnowledge> externalKnowledge1 = externalKnowledgeMapper.getExternalKnowledge(externalKnowledge);
+        return CommonPage.restPage(externalKnowledge1);
+    }
+
+    @Override
+    public CommonResult saveExternalKnowledge(ExternalKnowledge externalKnowledge) {
+        int i = 0;
+        if (externalKnowledge.getId() == null){
+            externalKnowledge.setCreateBy(SecurityUtils.getUsername());
+            externalKnowledge.setCreateTime(LocalDateTime.now());
+            i = externalKnowledgeMapper.insert(externalKnowledge);
+
+        }else {
+            externalKnowledge.setUpdateBy(SecurityUtils.getUsername());
+            externalKnowledge.setUpdateTime(LocalDateTime.now());
+            i = externalKnowledgeMapper.updateById(externalKnowledge);
+        }
+        return CommonResult.success();
+    }
+
+    @Override
+    public CommonResult deletedExternalKnowledge(Integer id) {
+        externalKnowledgeMapper.update(new ExternalKnowledge(),
+                new LambdaUpdateWrapper<ExternalKnowledge>().eq(ExternalKnowledge::getId, id)
+                        .set(ExternalKnowledge::getDelFlag, UserConstant.DEPT_DISABLE)
+                        .set(ExternalKnowledge::getUpdateTime, LocalDateTime.now())
+                        .set(ExternalKnowledge::getUpdateBy, SecurityUtils.getUsername()));
+        return CommonResult.success();
+    }
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/InternalKnowledgeServiceImpl.java b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/InternalKnowledgeServiceImpl.java
new file mode 100644
index 0000000..52ec25e
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/InternalKnowledgeServiceImpl.java
@@ -0,0 +1,64 @@
+package com.gkhy.exam.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.gkhy.exam.common.api.CommonPage;
+import com.gkhy.exam.common.api.CommonResult;
+import com.gkhy.exam.common.constant.UserConstant;
+import com.gkhy.exam.common.utils.PageUtils;
+import com.gkhy.exam.common.utils.SecurityUtils;
+import com.gkhy.exam.system.domain.InternalKnowledge;
+import com.gkhy.exam.system.mapper.InternalKnowledgeMapper;
+import com.gkhy.exam.system.service.InternalKnowledgeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * <p>
+ * 内部知识 服务实现类
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+@Service
+public class InternalKnowledgeServiceImpl extends ServiceImpl<InternalKnowledgeMapper, InternalKnowledge> implements InternalKnowledgeService {
+
+    @Autowired
+    private InternalKnowledgeMapper internalKnowledgeMapper;
+    @Override
+    public CommonPage selectInternalKnowledgeList(InternalKnowledge internalKnowledge) {
+        PageUtils.startPage();
+        List<InternalKnowledge> internalKnowledge1 = internalKnowledgeMapper.getInternalKnowledge(internalKnowledge);
+        return CommonPage.restPage(internalKnowledge1);
+    }
+
+    @Override
+    public CommonResult saveInternalKnowledge(InternalKnowledge internalKnowledge) {
+        int i = 0;
+        if (internalKnowledge.getId() == null){
+            internalKnowledge.setCreateBy(SecurityUtils.getUsername());
+            internalKnowledge.setCreateTime(LocalDateTime.now());
+            i = internalKnowledgeMapper.insert(internalKnowledge);
+
+        }else {
+            internalKnowledge.setUpdateBy(SecurityUtils.getUsername());
+            internalKnowledge.setUpdateTime(LocalDateTime.now());
+            i = internalKnowledgeMapper.updateById(internalKnowledge);
+        }
+        return CommonResult.success();
+    }
+
+    @Override
+    public CommonResult deletedInternalKnowledge(Integer id) {
+        internalKnowledgeMapper.update(new InternalKnowledge(),
+                new LambdaUpdateWrapper<InternalKnowledge>().eq(InternalKnowledge::getId, id)
+                        .set(InternalKnowledge::getDelFlag, UserConstant.DEPT_DISABLE)
+                        .set(InternalKnowledge::getUpdateTime, LocalDateTime.now())
+                        .set(InternalKnowledge::getUpdateBy, SecurityUtils.getUsername()));
+        return CommonResult.success();
+    }
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/SixInspectionServiceImpl.java b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/SixInspectionServiceImpl.java
new file mode 100644
index 0000000..a33843a
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/SixInspectionServiceImpl.java
@@ -0,0 +1,161 @@
+package com.gkhy.exam.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.gkhy.exam.common.api.CommonPage;
+import com.gkhy.exam.common.api.CommonResult;
+import com.gkhy.exam.common.constant.UserConstant;
+import com.gkhy.exam.common.utils.PageUtils;
+import com.gkhy.exam.common.utils.SecurityUtils;
+import com.gkhy.exam.system.domain.AnnualVerificationPlan;
+import com.gkhy.exam.system.domain.SixInspection;
+import com.gkhy.exam.system.domain.SixInspectionContent;
+import com.gkhy.exam.system.domain.SixInspectionProblem;
+import com.gkhy.exam.system.mapper.SixInspectionContentMapper;
+import com.gkhy.exam.system.mapper.SixInspectionMapper;
+import com.gkhy.exam.system.mapper.SixInspectionProblemMapper;
+import com.gkhy.exam.system.service.SixInspectionService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+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;
+
+/**
+ * <p>
+ * 6s检查主表 服务实现类
+ * </p>
+ *
+ * @author hh
+ * @since 2025-08-25 15:01:44
+ */
+@Service
+public class SixInspectionServiceImpl extends ServiceImpl<SixInspectionMapper, SixInspection> implements SixInspectionService {
+
+    @Autowired
+    private SixInspectionMapper sixInspectionMapper;
+
+    @Autowired
+    private SixInspectionProblemMapper sixInspectionProblemMapper;
+
+    @Autowired
+    private SixInspectionContentMapper sixInspectionContentMapper;
+
+    @Override
+    public CommonPage selectSixInspectionList(SixInspection sixInspection) {
+        PageUtils.startPage();
+        List<SixInspection> sixInspections = sixInspectionMapper.selectSixInspectionList(sixInspection);
+        return CommonPage.restPage(sixInspections);
+    }
+
+    @Override
+    @Transactional
+    public CommonResult saveSixInspection(SixInspection sixInspection) {
+        List<SixInspectionContent> sixInspectionContentList = sixInspection.getSixInspectionContentList();
+        if (ObjectUtils.isEmpty(sixInspectionContentList)) {
+            return CommonResult.failed("保存参数不能为空");
+        }
+
+        int i = 0;
+        if (sixInspection.getId() == null) {
+            sixInspection.setCreateBy(SecurityUtils.getUsername());
+            sixInspection.setCreateTime(LocalDateTime.now());
+            i = sixInspectionMapper.insert(sixInspection);
+        } else {
+            sixInspection.setUpdateBy(SecurityUtils.getUsername());
+            sixInspection.setUpdateTime(LocalDateTime.now());
+            i = sixInspectionMapper.updateById(sixInspection);
+        }
+        if (i > 0) {
+            batchSave(sixInspection.getId(), sixInspectionContentList, sixInspection.getDelProblemIds(), sixInspection.getDelContentIds(), sixInspection.getSixInspectionProblemList());
+        }
+        return i > 0 ? CommonResult.success() : CommonResult.failed();
+    }
+
+    private void batchSave(Long id, List<SixInspectionContent> sixInspectionContentList,
+                           List<Long> delProblemIds, List<Long> delContentIds, List<SixInspectionProblem> sixInspectionProblemList) {
+        if (ObjectUtils.isNotEmpty(delProblemIds)) {
+            int update = sixInspectionProblemMapper.update(new SixInspectionProblem(),
+                    new LambdaUpdateWrapper<SixInspectionProblem>().set(SixInspectionProblem::getDelFlag, UserConstant.DEPT_DISABLE)
+                            .set(SixInspectionProblem::getUpdateTime, LocalDateTime.now()).set(SixInspectionProblem::getUpdateBy, SecurityUtils.getUsername())
+                            .in(SixInspectionProblem::getId, delProblemIds)
+            );
+        }
+        if (ObjectUtils.isNotEmpty(delContentIds)) {
+            int update = sixInspectionContentMapper.update(new SixInspectionContent(),
+                    new LambdaUpdateWrapper<SixInspectionContent>().set(SixInspectionContent::getDelFlag, UserConstant.DEPT_DISABLE)
+                            .set(SixInspectionContent::getUpdateTime, LocalDateTime.now()).set(SixInspectionContent::getUpdateBy, SecurityUtils.getUsername())
+                            .in(SixInspectionContent::getId, delContentIds)
+            );
+        }
+        if (ObjectUtils.isNotEmpty(sixInspectionContentList)) {
+            sixInspectionContentList.forEach(sixInspectionContent -> {
+                if (sixInspectionContent.getId() == null) {
+                    sixInspectionContent.setSixInspectionId(id);
+                    sixInspectionContent.setCreateTime(LocalDateTime.now());
+                    sixInspectionContent.setCreateBy(SecurityUtils.getUsername());
+                    sixInspectionContentMapper.insert(sixInspectionContent);
+                } else {
+                    sixInspectionContent.setUpdateTime(LocalDateTime.now());
+                    sixInspectionContent.setUpdateBy(SecurityUtils.getUsername());
+                    sixInspectionContentMapper.updateById(sixInspectionContent);
+                }
+            });
+        }
+        if (ObjectUtils.isNotEmpty(sixInspectionProblemList)) {
+            sixInspectionProblemList.forEach(sixInspectionProblem -> {
+                if (sixInspectionProblem.getId() == null) {
+                    sixInspectionProblem.setSixInspectionId(id);
+                    sixInspectionProblem.setCreateTime(LocalDateTime.now());
+                    sixInspectionProblem.setCreateBy(SecurityUtils.getUsername());
+                    sixInspectionProblemMapper.insert(sixInspectionProblem);
+                } else {
+                    sixInspectionProblem.setUpdateTime(LocalDateTime.now());
+                    sixInspectionProblem.setUpdateBy(SecurityUtils.getUsername());
+                    sixInspectionProblemMapper.updateById(sixInspectionProblem);
+                }
+            });
+        }
+    }
+
+    @Override
+    public CommonResult getSixInspection(Long id) {
+        SixInspection sixInspection = sixInspectionMapper.selectById(id);
+        if (sixInspection != null) {
+            List<SixInspectionContent> sixInspectionContentList = sixInspectionContentMapper.selectList(new LambdaQueryWrapper<>(SixInspectionContent.class).eq(SixInspectionContent::getSixInspectionId, id)
+                    .eq(SixInspectionContent::getDelFlag, UserConstant.ENABLE).orderByAsc(SixInspectionContent::getSort));
+            sixInspection.setSixInspectionContentList(sixInspectionContentList);
+            List<SixInspectionProblem> sixInspectionProblemList = sixInspectionProblemMapper.selectList(
+                    new LambdaQueryWrapper<>(SixInspectionProblem.class).eq(SixInspectionProblem::getSixInspectionId, id)
+                            .eq(SixInspectionProblem::getDelFlag, UserConstant.ENABLE).orderByAsc(SixInspectionProblem::getSort)
+            );
+            sixInspection.setSixInspectionProblemList(sixInspectionProblemList);
+        }
+        return CommonResult.success(sixInspection);
+    }
+
+    @Override
+    @Transactional
+    public CommonResult deletedSixInspection(Long id) {
+        int update = sixInspectionMapper.update(new SixInspection(),
+                new LambdaUpdateWrapper<SixInspection>().eq(SixInspection::getId, id)
+                        .set(SixInspection::getDelFlag, UserConstant.DEPT_DISABLE).set(SixInspection::getUpdateTime, LocalDateTime.now())
+                        .set(SixInspection::getUpdateBy, SecurityUtils.getUsername()));
+        if (update > 0) {
+            sixInspectionContentMapper.update(new SixInspectionContent(),
+                    new LambdaUpdateWrapper<SixInspectionContent>().eq(SixInspectionContent::getSixInspectionId, id)
+                            .set(SixInspectionContent::getDelFlag, UserConstant.DEPT_DISABLE).set(SixInspectionContent::getUpdateTime, LocalDateTime.now())
+                            .set(SixInspectionContent::getUpdateBy, SecurityUtils.getUsername())
+            );
+            sixInspectionProblemMapper.update(new SixInspectionProblem(),
+                    new LambdaUpdateWrapper<SixInspectionProblem>().eq(SixInspectionProblem::getSixInspectionId, id)
+                            .set(SixInspectionProblem::getDelFlag, UserConstant.DEPT_DISABLE).set(SixInspectionProblem::getUpdateTime, LocalDateTime.now())
+                            .set(SixInspectionProblem::getUpdateBy, SecurityUtils.getUsername())
+            );
+        }
+        return update > 0 ? CommonResult.success() : CommonResult.failed();
+    }
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysUserServiceImpl.java b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysUserServiceImpl.java
index 04d642e..86d8f7a 100644
--- a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysUserServiceImpl.java
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysUserServiceImpl.java
@@ -2,6 +2,7 @@
 
 import cn.hutool.core.codec.Base64;
 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.annotation.DataScope;
 import com.gkhy.exam.common.api.CommonPage;
@@ -29,6 +30,7 @@
 import javax.validation.Validator;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
 
 
 /**
@@ -56,20 +58,21 @@
 
     @Override
     public CommonPage<SysUser> selectUserList(SysUser user) {
-        SysUser currentUser=SecurityUtils.getLoginUser().getUser();
-        List<SysUser> users=new ArrayList<>();
-        if(!currentUser.getUserType().equals(UserTypeEnum.WORKSHOP_USER.getCode())){
-            if(!currentUser.getUserType().equals(UserTypeEnum.SYSTEM_USER.getCode())){
+        SysUser currentUser = SecurityUtils.getLoginUser().getUser();
+        List<SysUser> users = new ArrayList<>();
+        if (!currentUser.getUserType().equals(UserTypeEnum.WORKSHOP_USER.getCode())) {
+            if (!currentUser.getUserType().equals(UserTypeEnum.SYSTEM_USER.getCode())) {
                 user.setCompanyId(currentUser.getCompanyId());
-                Map<String,Object> paramsMap=new HashMap<>();
+                Map<String, Object> paramsMap = new HashMap<>();
 //                paramsMap.put("userType",currentUser.getUserType());
                 user.setParams(paramsMap);
             }
             PageUtils.startPage();
-            users=baseMapper.userList(user);
+            users = baseMapper.userList(user);
         }
         return CommonPage.restPage(users);
     }
+
     /**
      * 根据条件分页查询已分配用户角色列表
      *
@@ -77,9 +80,8 @@
      * @return 用户信息集合信息
      */
     @Override
-    @DataScope( userAlias = "u")
-    public List<SysUser> selectAllocatedList(SysUser user)
-    {
+    @DataScope(userAlias = "u")
+    public List<SysUser> selectAllocatedList(SysUser user) {
         return baseMapper.selectAllocatedList(user);
     }
 
@@ -90,28 +92,27 @@
      * @return 用户信息集合信息
      */
     @Override
-    @DataScope( userAlias = "u")
-    public List<SysUser> selectUnallocatedList(SysUser user)
-    {
+    @DataScope(userAlias = "u")
+    public List<SysUser> selectUnallocatedList(SysUser user) {
         return baseMapper.selectUnallocatedList(user);
     }
 
 
     @Override
     public SysUser selectUserByUsername(String username) {
-        String key=redisUtils.generateKey(CacheConstant.SYS_ADMIN_USER_NAME+username);
-        SysUser sysUser =null;
-        if(redisUtils.hasKey(key)){
-            sysUser= (SysUser) redisUtils.get(key);
-        }else {
+        String key = redisUtils.generateKey(CacheConstant.SYS_ADMIN_USER_NAME + username);
+        SysUser sysUser = null;
+        if (redisUtils.hasKey(key)) {
+            sysUser = (SysUser) redisUtils.get(key);
+        } else {
             sysUser = baseMapper.getUserByUsername(username);
-            redisUtils.set(key,sysUser,10, TimeUnit.MINUTES);
+            redisUtils.set(key, sysUser, 10, TimeUnit.MINUTES);
         }
         return sysUser;
     }
 
-    public void delCacheByUsername(String username){
-        String key=redisUtils.generateKey(CacheConstant.SYS_ADMIN_USER_NAME+username);
+    public void delCacheByUsername(String username) {
+        String key = redisUtils.generateKey(CacheConstant.SYS_ADMIN_USER_NAME + username);
         redisUtils.del(key);
     }
 
@@ -127,8 +128,8 @@
 
     @Override
     public int deleteUserById(Long userId) {
-        SysUser user=checkUserDataScope(userId);
-        if (user.getId().toString().equals("1")){
+        SysUser user = checkUserDataScope(userId);
+        if (user.getId().toString().equals("1")) {
             throw new ApiException("管理员用户不能被删除");
         }
         delCacheByUsername(user.getUsername());
@@ -150,26 +151,26 @@
         checkUserAllowed(user);
         user.setCreateBy(SecurityUtils.getUsername());
         user.setPassword(SecurityUtils.encryptPassword(Base64.decodeStr(user.getPassword())));
-        int row=baseMapper.insert(user);
+        int row = baseMapper.insert(user);
 
-        batchSaveRole(user.getRoles(),user.getId(),false);
+        batchSaveRole(user.getRoles(), user.getId(), false);
 
         exStudentService.insertStudent(exStudent);
 
-        if(row<1){
+        if (row < 1) {
             throw new ApiException("新增用户失败");
         }
         return row;
     }
 
-    public void batchSaveRole(List<SysRole> roleIds, Long userId, boolean isUpdate){
+    public void batchSaveRole(List<SysRole> roleIds, Long userId, boolean isUpdate) {
 
-        if (isUpdate){
+        if (isUpdate) {
             userRoleMapper.deleteUserRoleByUserId(userId);
         }
 
         List<SysUserRole> userRoleList = new ArrayList<>();
-        if(roleIds != null && !roleIds.isEmpty()){
+        if (roleIds != null && !roleIds.isEmpty()) {
 
             for (SysRole roleId : roleIds) {
                 SysUserRole sysUserRole = new SysUserRole();
@@ -177,7 +178,7 @@
                 sysUserRole.setRoleId(roleId.getRoleId());
                 userRoleList.add(sysUserRole);
             }
-        }else {
+        } else {
             SysUserRole sysUserRole = new SysUserRole();
             sysUserRole.setUserId(userId);
             sysUserRole.setRoleId(2L);
@@ -192,47 +193,60 @@
         checkUserAllowed(user);
         user.setUpdateBy(SecurityUtils.getUsername());
         user.setPassword(null);
-        int row=baseMapper.updateById(user);
-        batchSaveRole(user.getRoles(),user.getId(),true);
+        int row = baseMapper.updateById(user);
+        batchSaveRole(user.getRoles(), user.getId(), true);
 
-        if(row<1){
+        if (row < 1) {
             throw new ApiException("更新用户信息失败");
         }
         delCacheByUsername(user.getUsername());
         return row;
     }
 
-    public void checkRequestData(SysUser user){
-        if(!user.getUserType().equals(UserTypeEnum.SYSTEM_USER.getCode())&&user.getCompanyId()==null){
+    public void checkRequestData(SysUser user) {
+        if (!user.getUserType().equals(UserTypeEnum.SYSTEM_USER.getCode()) && user.getCompanyId() == null) {
             throw new ApiException("所属公司不能为空");
         }
-        if(!checkUsernameUnique(user)){
+        if (!checkUsernameUnique(user)) {
             throw new ApiException("登录账号已存在");
         }
-        if(StringUtils.isNotBlank(user.getPhone())&&!checkPhoneUnique(user)){
+        if (StringUtils.isNotBlank(user.getPhone()) && !checkPhoneUnique(user)) {
             throw new ApiException("手机号已存在");
         }
     }
 
     @Override
     public int updateUserStatus(SysUser user) {
-        SysUser existUser=checkUserDataScope(user.getId());
-        SysUser su=new SysUser().setId(user.getId()).setStatus(user.getStatus());
+        SysUser existUser = checkUserDataScope(user.getId());
+        SysUser su = new SysUser().setId(user.getId()).setStatus(user.getStatus());
         su.setUpdateBy(SecurityUtils.getUsername());
 
-        int row= baseMapper.updateById(su);
-        if(row<1){
+        int row = baseMapper.updateById(su);
+        if (row < 1) {
             throw new ApiException("更新用户状态失败");
         }
         delCacheByUsername(existUser.getUsername());
         return row;
     }
 
+    @Override
+    public int updateSpecialCertificate(SysUser user) {
+        SysUser existUser = checkUserDataScope(user.getId());
+        SysUser su = new SysUser().setId(user.getId()).setOperationCertificate(user.getOperationCertificate());
+        su.setUpdateBy(SecurityUtils.getUsername());
+
+        int row = baseMapper.updateById(su);
+        if (row < 1) {
+            throw new ApiException("更新用户状态失败");
+        }
+        return row;
+    }
+
 
     @Override
     public boolean resetUserPwd(SysUser user) {
-        SysUser existUser=checkUserDataScope(user.getId());
-        SysUser su=new SysUser().setId(user.getId()).setPassword(SecurityUtils.encryptPassword(Base64.decodeStr(user.getPassword())));
+        SysUser existUser = checkUserDataScope(user.getId());
+        SysUser su = new SysUser().setId(user.getId()).setPassword(SecurityUtils.encryptPassword(Base64.decodeStr(user.getPassword())));
         su.setUpdateBy(SecurityUtils.getUsername());
         delCacheByUsername(existUser.getUsername());
         return updateById(su);
@@ -240,21 +254,128 @@
 
     @Override
     public boolean checkUsernameUnique(SysUser user) {
-        Long userId = user.getId()==null? -1L : user.getId();
+        Long userId = user.getId() == null ? -1L : user.getId();
         SysUser info = baseMapper.checkLoginNameUnique(user.getUsername());
-        if (info!=null && info.getId().longValue() != userId.longValue())
-        {
+        if (info != null && info.getId().longValue() != userId.longValue()) {
             return UserConstant.NOT_UNIQUE;
         }
         return UserConstant.UNIQUE;
     }
 
     @Override
+    public Map<String, Object> getUserData(Long companyId) {
+        List<SysUser> sysUsers = baseMapper.selectList(new LambdaQueryWrapper<>(
+                SysUser.class
+        ).eq(SysUser::getCompanyId, companyId).eq(SysUser::getDelFlag, UserConstant.ENABLE));
+        int totalUser = sysUsers.size();
+
+        Map<String, Object> map = new HashMap<>();
+        //总人数
+        map.put("totalUser", totalUser);
+        //专业
+        map.put("post", sysUsers.stream()
+                .map(SysUser::getPost)
+                .filter(Objects::nonNull)
+                .distinct()
+                .collect(Collectors.joining(",")));
+        //学历硕士以上
+        // 统计学历为硕士(4)和博士及以上(5)的人数
+        long count = sysUsers.stream()
+                .filter(user -> user.getQualification() != null)
+                .filter(user -> user.getQualification() >= 4)  // 4: 硕士, 5: 博士及以上
+                .count();
+        map.put("qualification", count);
+
+        long qualification1 = sysUsers.stream()
+                .filter(user -> user.getQualification() != null)
+                .filter(user -> user.getQualification().equals("1"))
+                .count();
+        map.put("qualification1", qualification1);//学历1、高中及以下
+        long qualification2 = sysUsers.stream()
+                .filter(user -> user.getQualification() != null)
+                .filter(user -> user.getQualification().equals("2"))
+                .count();
+        map.put("qualification2", qualification2);//学历2、专科
+        long qualification3 = sysUsers.stream()
+                .filter(user -> user.getQualification() != null)
+                .filter(user -> user.getQualification().equals("3"))
+                .count();
+        map.put("qualification3", qualification3);//学历3本科
+        long qualification4 = sysUsers.stream()
+                .filter(user -> user.getQualification() != null)
+                .filter(user -> user.getQualification().equals("4"))
+                .count();
+        map.put("qualification4", qualification4);//学历4硕士
+
+        long qualification5 = sysUsers.stream()
+                .filter(user -> user.getQualification() != null)
+                .filter(user -> user.getQualification().equals("5"))
+                .count();
+        map.put("qualification5", qualification5);//学历5博士及以上
+
+        //高级职称人数
+        long positionalCount = sysUsers.stream()
+                .filter(user -> user.getPositional() != null)
+                .filter(user -> user.getPositional().equals("3"))  // 4: 硕士, 5: 博士及以上
+                .count();
+        map.put("positional3", positionalCount);
+        long positionalCount2 = sysUsers.stream()
+                .filter(user -> user.getPositional() != null)
+                .filter(user -> user.getPositional().equals("2"))  // 4: 硕士, 5: 博士及以上
+                .count();
+        map.put("positional2", positionalCount2);//中级
+        long positionalCount1 = sysUsers.stream()
+                .filter(user -> user.getPositional() != null)
+                .filter(user -> user.getPositional().equals("1"))  // 4: 硕士, 5: 博士及以上
+                .count();
+        map.put("positional1", positionalCount1);//初级
+
+        map.put("positional12", positionalCount2 + positionalCount1);//中级+初级
+
+        long countBk = sysUsers.stream()
+                .filter(user -> user.getQualification() != null)
+                .filter(user -> user.getQualification() >= 3)  // 本科以上
+                .count();
+        //本科人数
+        map.put("qualificationBK", countBk);
+        double bachelorRatio = totalUser > 0 ? (double) countBk / totalUser * 100 : 0;
+        //本科占比
+        map.put("qualificationBKRatio", String.format("%.2f%%", bachelorRatio));
+
+        long countJS = sysUsers.stream()
+                .filter(user -> user.getPersonType() != null)
+                .filter(user -> user.getPersonType() == 1)  // 技术类
+                .count();
+        map.put("personTypeJS", countJS);
+        double jsRatio = totalUser > 0 ? (double) countJS / totalUser * 100 : 0;
+        map.put("jsRatio", String.format("%.2f%%", jsRatio));
+        double averageAge = sysUsers.stream()
+                .filter(user -> user.getAge() != null)  // 过滤年龄为null的用户
+                .mapToInt(SysUser::getAge)              // 提取年龄值
+                .average()                              // 计算平均值
+                .orElse(0.0);
+        map.put("avgAge", String.format("%.1f", averageAge));//平均年龄
+
+        long countAge40 = sysUsers.stream()
+                .filter(user -> user.getAge() != null)
+                .filter(user -> user.getAge() >= 40)  // 40以上人数
+                .count();
+        map.put("age40", countAge40);
+        double age40Ratio = totalUser > 0 ? (double) countAge40 / totalUser * 100 : 0;
+        map.put("age40Ratio", String.format("%.2f%%", age40Ratio));
+        long countAge30 = totalUser - countAge40;
+        map.put("age1840", countAge30);//18-40
+        double age30Ratio = totalUser > 0 ? (double) countAge30 / totalUser * 100 : 0;
+        map.put("age1840Ratio", String.format("%.2f%%", age30Ratio));
+
+        return Collections.emptyMap();
+    }
+
+    @Override
     public boolean checkPhoneUnique(SysUser user) {
-        Long userId = user.getId()==null ? -1L : user.getId();
+        Long userId = user.getId() == null ? -1L : user.getId();
         SysUser info = baseMapper.checkPhoneUnique(user.getPhone());
-        if (info!=null && info.getId().longValue() != userId.longValue())
-        {
+        if (info != null && info.getId().longValue() != userId.longValue()) {
             return UserConstant.NOT_UNIQUE;
         }
         return UserConstant.UNIQUE;
@@ -263,9 +384,9 @@
 
     @Override
     public void checkUserAllowed(SysUser user) {
-        SysUser currentUser=SecurityUtils.getLoginUser().getUser();
-        Integer currentUserType=currentUser.getUserType();
-        Integer userType=user.getUserType();
+        SysUser currentUser = SecurityUtils.getLoginUser().getUser();
+        Integer currentUserType = currentUser.getUserType();
+        Integer userType = user.getUserType();
         //校验权限,规则:上一级用户可以增加下一级用户类型的用户
 //        if(currentUserType.equals(UserTypeEnum.SYSTEM_USER.getCode())){
 //            if( !userType.equals(UserTypeEnum.SYSTEM_USER.getCode())&&!userType.equals(UserTypeEnum.OTHER_USER.getCode()) &&!userType.equals(UserTypeEnum.COMPANY_USER.getCode())){
@@ -275,16 +396,16 @@
 //                throw new ApiException("管理员用户不能被删除");
 //            }
 //        }else{
-        if(!currentUserType.equals(UserTypeEnum.SYSTEM_USER.getCode())){
-            if(userType.equals(UserTypeEnum.OTHER_USER.getCode())){
+        if (!currentUserType.equals(UserTypeEnum.SYSTEM_USER.getCode())) {
+            if (userType.equals(UserTypeEnum.OTHER_USER.getCode())) {
                 throw new ApiException("没有权限操作或者更新上级用户类型的用户");
             }
-            if(currentUserType.equals(UserTypeEnum.OTHER_USER.getCode()) || currentUserType.equals(UserTypeEnum.COMPANY_ADMIN.getCode())){
-                if(userType<=UserTypeEnum.COMPANY_USER.getCode() && !currentUserType.equals(UserTypeEnum.COMPANY_ADMIN.getCode())){
+            if (currentUserType.equals(UserTypeEnum.OTHER_USER.getCode()) || currentUserType.equals(UserTypeEnum.COMPANY_ADMIN.getCode())) {
+                if (userType <= UserTypeEnum.COMPANY_USER.getCode() && !currentUserType.equals(UserTypeEnum.COMPANY_ADMIN.getCode())) {
                     throw new ApiException("没有权限操作或者更新上级用户类型的用户");
                 }
-            }else{
-                if(userType<currentUserType){
+            } else {
+                if (userType < currentUserType) {
                     throw new ApiException("没有权限操作或者更新上级用户类型的用户");
                 }
             }
@@ -293,12 +414,11 @@
 
     @Override
     public SysUser checkUserDataScope(Long userId) {
-        if(userId==null){
+        if (userId == null) {
             throw new ApiException("用户id为空!");
         }
         SysUser user = getById(userId);
-        if (ObjectUtil.isNull(user))
-        {
+        if (ObjectUtil.isNull(user)) {
             throw new ApiException("用户数据不存在!");
         }
         checkUserAllowed(user);
diff --git a/multi-system/src/main/resources/mapper/system/AnnualVerificationDeviceMapper.xml b/multi-system/src/main/resources/mapper/system/AnnualVerificationDeviceMapper.xml
new file mode 100644
index 0000000..5d08864
--- /dev/null
+++ b/multi-system/src/main/resources/mapper/system/AnnualVerificationDeviceMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.gkhy.exam.system.mapper.AnnualVerificationDeviceMapper">
+
+</mapper>
diff --git a/multi-system/src/main/resources/mapper/system/AnnualVerificationPlanMapper.xml b/multi-system/src/main/resources/mapper/system/AnnualVerificationPlanMapper.xml
new file mode 100644
index 0000000..65f4ce1
--- /dev/null
+++ b/multi-system/src/main/resources/mapper/system/AnnualVerificationPlanMapper.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.gkhy.exam.system.mapper.AnnualVerificationPlanMapper">
+
+    <select id="selectAnnualVerificationPlanList" parameterType="com.gkhy.exam.system.domain.AnnualVerificationPlan" resultType="com.gkhy.exam.system.domain.AnnualVerificationPlan">
+
+        select * from annual_verification_plan where del_flag = 0
+        <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>
diff --git a/multi-system/src/main/resources/mapper/system/CalibrationMonitoringEquipmentMapper.xml b/multi-system/src/main/resources/mapper/system/CalibrationMonitoringEquipmentMapper.xml
new file mode 100644
index 0000000..af9de69
--- /dev/null
+++ b/multi-system/src/main/resources/mapper/system/CalibrationMonitoringEquipmentMapper.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.gkhy.exam.system.mapper.CalibrationMonitoringEquipmentMapper">
+
+
+    <select id="selectCalibrationMonitoringEquipmentList" resultType="com.gkhy.exam.system.domain.CalibrationMonitoringEquipment"
+            parameterType="com.gkhy.exam.system.domain.CalibrationMonitoringEquipment">
+        select * from calibration_monitoring_equipment where del_flag=0
+        <if test="companyId!=null ">
+            and company_id = #{companyId}
+        </if>
+        order by create_time desc
+    </select>
+</mapper>
diff --git a/multi-system/src/main/resources/mapper/system/DocumentBorrowCopyMapper.xml b/multi-system/src/main/resources/mapper/system/DocumentBorrowCopyMapper.xml
new file mode 100644
index 0000000..c2a0f0b
--- /dev/null
+++ b/multi-system/src/main/resources/mapper/system/DocumentBorrowCopyMapper.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.gkhy.exam.system.mapper.DocumentBorrowCopyMapper">
+
+
+    <select id="selectDocumentBorrowCopyList" parameterType="com.gkhy.exam.system.domain.DocumentBorrowCopy" resultType="com.gkhy.exam.system.domain.DocumentBorrowCopy">
+        select * from document_borrow_copy
+        where del_flag = 0
+        <if test="companyId!=null ">
+            and company_id = #{companyId}
+        </if>
+        order by create_time desc
+    </select>
+</mapper>
diff --git a/multi-system/src/main/resources/mapper/system/DocumentBorrowCopyRecordMapper.xml b/multi-system/src/main/resources/mapper/system/DocumentBorrowCopyRecordMapper.xml
new file mode 100644
index 0000000..ecd4641
--- /dev/null
+++ b/multi-system/src/main/resources/mapper/system/DocumentBorrowCopyRecordMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.gkhy.exam.system.mapper.DocumentBorrowCopyRecordMapper">
+
+</mapper>
diff --git a/multi-system/src/main/resources/mapper/system/DocumentChangesInvalidatedEvaluateMapper.xml b/multi-system/src/main/resources/mapper/system/DocumentChangesInvalidatedEvaluateMapper.xml
new file mode 100644
index 0000000..4bc9b79
--- /dev/null
+++ b/multi-system/src/main/resources/mapper/system/DocumentChangesInvalidatedEvaluateMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.gkhy.exam.system.mapper.DocumentChangesInvalidatedEvaluateMapper">
+
+</mapper>
diff --git a/multi-system/src/main/resources/mapper/system/DocumentChangesInvalidatedIssueMapper.xml b/multi-system/src/main/resources/mapper/system/DocumentChangesInvalidatedIssueMapper.xml
new file mode 100644
index 0000000..2273537
--- /dev/null
+++ b/multi-system/src/main/resources/mapper/system/DocumentChangesInvalidatedIssueMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.gkhy.exam.system.mapper.DocumentChangesInvalidatedIssueMapper">
+
+</mapper>
diff --git a/multi-system/src/main/resources/mapper/system/DocumentChangesInvalidatedMapper.xml b/multi-system/src/main/resources/mapper/system/DocumentChangesInvalidatedMapper.xml
new file mode 100644
index 0000000..7bc1605
--- /dev/null
+++ b/multi-system/src/main/resources/mapper/system/DocumentChangesInvalidatedMapper.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.gkhy.exam.system.mapper.DocumentChangesInvalidatedMapper">
+
+
+    <select id="getDocumentChangesInvalidated" parameterType="com.gkhy.exam.system.domain.DocumentChangesInvalidated" resultType="com.gkhy.exam.system.domain.DocumentChangesInvalidated">
+
+        select * from document_changes_invalidated where del_flag=0
+        <if test="companyId!=null ">
+            and company_id = #{companyId}
+        </if>
+        order by create_time desc
+    </select>
+</mapper>
diff --git a/multi-system/src/main/resources/mapper/system/DocumentDestructionApplyMapper.xml b/multi-system/src/main/resources/mapper/system/DocumentDestructionApplyMapper.xml
new file mode 100644
index 0000000..fd4dca9
--- /dev/null
+++ b/multi-system/src/main/resources/mapper/system/DocumentDestructionApplyMapper.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.gkhy.exam.system.mapper.DocumentDestructionApplyMapper">
+
+
+    <select id="getDocumentDestructionApply" resultType="com.gkhy.exam.system.domain.DocumentDestructionApply" parameterType="com.gkhy.exam.system.domain.DocumentDestructionApply">
+
+        SELECT * FROM document_destruction_apply WHERE del_flag = 0
+        <if test="companyId!=null ">
+            and company_id = #{companyId}
+        </if>
+        ORDER BY create_time desc
+    </select>
+</mapper>
diff --git a/multi-system/src/main/resources/mapper/system/DocumentDistributionCollectionMapper.xml b/multi-system/src/main/resources/mapper/system/DocumentDistributionCollectionMapper.xml
new file mode 100644
index 0000000..6f6cc0a
--- /dev/null
+++ b/multi-system/src/main/resources/mapper/system/DocumentDistributionCollectionMapper.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.gkhy.exam.system.mapper.DocumentDistributionCollectionMapper">
+
+
+    <select id="selectDocumentDistributionCollectionList" resultType="com.gkhy.exam.system.domain.DocumentDistributionCollection" parameterType="com.gkhy.exam.system.domain.DocumentDistributionCollection">
+        select * from document_distribution_collection
+        where del_flag = 0
+        <if test="companyId!=null ">
+            and company_id = #{companyId}
+        </if>
+        order by create_time desc
+    </select>
+</mapper>
diff --git a/multi-system/src/main/resources/mapper/system/DocumentDistributionCollectionRecordMapper.xml b/multi-system/src/main/resources/mapper/system/DocumentDistributionCollectionRecordMapper.xml
new file mode 100644
index 0000000..54ce894
--- /dev/null
+++ b/multi-system/src/main/resources/mapper/system/DocumentDistributionCollectionRecordMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.gkhy.exam.system.mapper.DocumentDistributionCollectionRecordMapper">
+
+</mapper>
diff --git a/multi-system/src/main/resources/mapper/system/ExternalKnowledgeMapper.xml b/multi-system/src/main/resources/mapper/system/ExternalKnowledgeMapper.xml
new file mode 100644
index 0000000..51b5947
--- /dev/null
+++ b/multi-system/src/main/resources/mapper/system/ExternalKnowledgeMapper.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.gkhy.exam.system.mapper.ExternalKnowledgeMapper">
+
+    <select id="getExternalKnowledge" parameterType="com.gkhy.exam.system.domain.ExternalKnowledge" resultType="com.gkhy.exam.system.domain.ExternalKnowledge">
+        select * from external_knowledge where del_flag=0
+        <if test="companyId!=null ">
+            and company_id = #{companyId}
+        </if>
+        ORDER BY create_time desc
+    </select>
+</mapper>
diff --git a/multi-system/src/main/resources/mapper/system/InternalKnowledgeMapper.xml b/multi-system/src/main/resources/mapper/system/InternalKnowledgeMapper.xml
new file mode 100644
index 0000000..57a115c
--- /dev/null
+++ b/multi-system/src/main/resources/mapper/system/InternalKnowledgeMapper.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.gkhy.exam.system.mapper.InternalKnowledgeMapper">
+    <select id="getInternalKnowledge" parameterType="com.gkhy.exam.system.domain.InternalKnowledge" resultType="com.gkhy.exam.system.domain.InternalKnowledge">
+        select * from internal_knowledge where del_flag=0
+        <if test="companyId!=null ">
+            and company_id = #{companyId}
+        </if>
+        ORDER BY create_time desc
+    </select>
+</mapper>
diff --git a/multi-system/src/main/resources/mapper/system/SixInspectionContentMapper.xml b/multi-system/src/main/resources/mapper/system/SixInspectionContentMapper.xml
new file mode 100644
index 0000000..4864bc8
--- /dev/null
+++ b/multi-system/src/main/resources/mapper/system/SixInspectionContentMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.gkhy.exam.system.mapper.SixInspectionContentMapper">
+
+</mapper>
diff --git a/multi-system/src/main/resources/mapper/system/SixInspectionMapper.xml b/multi-system/src/main/resources/mapper/system/SixInspectionMapper.xml
new file mode 100644
index 0000000..5c3ece6
--- /dev/null
+++ b/multi-system/src/main/resources/mapper/system/SixInspectionMapper.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.gkhy.exam.system.mapper.SixInspectionMapper">
+
+
+    <select id="selectSixInspectionList" parameterType="com.gkhy.exam.system.domain.SixInspection" resultType="com.gkhy.exam.system.domain.SixInspection">
+        select * from six_inspection where del_flag=0
+        <if test="year != null">
+            and year=#{year}
+        </if>
+        <if test="companyId != null">
+            and company_id=#{companyId}
+        </if>
+        order by create_time desc
+    </select>
+</mapper>
diff --git a/multi-system/src/main/resources/mapper/system/SixInspectionProblemMapper.xml b/multi-system/src/main/resources/mapper/system/SixInspectionProblemMapper.xml
new file mode 100644
index 0000000..389c967
--- /dev/null
+++ b/multi-system/src/main/resources/mapper/system/SixInspectionProblemMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.gkhy.exam.system.mapper.SixInspectionProblemMapper">
+
+</mapper>
diff --git a/multi-system/src/main/resources/mapper/system/SysUserMapper.xml b/multi-system/src/main/resources/mapper/system/SysUserMapper.xml
index 4c0eb6f..106ef79 100644
--- a/multi-system/src/main/resources/mapper/system/SysUserMapper.xml
+++ b/multi-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -36,6 +36,8 @@
         <result property="personType"        column="person_type"          />
         <result property="age"        column="age"          />
         <result property="positional"        column="positional"          />
+        <result property="qualification"        column="qualification"          />
+        <result property="operationCertificate"        column="operation_certificate"          />
 
     </resultMap>
 
@@ -65,7 +67,7 @@
     <select id="userList"  resultMap="SysUserVoResult">
         select u.id,u.username,u.name,u.user_type,u.phone,u.parent_id,u.company_id,u.sex,u.status,u.del_flag,u.version,
                u.login_ip,u.login_date,u.create_by,u.create_time,u.remark,c.name as company_name,su.name as parent_name,
-                u.dept_id,d.dept_name,u.duty,u.post,u.id_card,u.entry_time,u.resign_time,u.person_type,u.age,u.positional
+                u.dept_id,d.dept_name,u.duty,u.post,u.id_card,u.entry_time,u.resign_time,u.person_type,u.age,u.positional,u.qualification,u.operation_certificate
         from sys_user u
         left join sys_company c on c.id=u.company_id
         left join sys_user su on su.id=u.parent_id and u.parent_id!=0
@@ -82,6 +84,12 @@
             <if test="status != null and status != ''">
                 AND u.status = #{status}
             </if>
+            <if test="personType != null">
+                AND u.person_type = #{personType}
+            </if>
+            <if test="qualification != null">
+                AND u.qualification = #{qualification}
+            </if>
             <if test="userType != null">
                 AND u.user_type = #{userType}
             </if>
@@ -93,6 +101,9 @@
             </if>
             <if test="phone != null and phone != ''">
                 AND u.phone like concat('%', #{phone}, '%')
+            </if>
+            <if test="post != null and post != ''">
+                AND u.post like concat('%', #{post}, '%')
             </if>
             <if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 -->
                 AND date_format(u.create_time,'%y%m%d') &gt;= date_format(#{params.beginTime},'%y%m%d')
@@ -109,6 +120,7 @@
             <if test="params.userType != null and params.userType==0">
                 AND u.user_type in (1,2,3,4)
             </if>
+
         </where>
         order by u.id desc
     </select>
@@ -122,7 +134,8 @@
 
     <select id="getUserById" resultMap="SysUserResult">
         select u.id,u.username,u.user_type,u.name,u.phone,u.parent_id,u.company_id,u.status,u.sex,u.del_flag,u.version,c.name as company_name,
-               c.remain_period,su.name as parent_name,u.dept_id,d.dept_name,u.duty,u.post,u.id_card,u.entry_time,u.resign_time,u.person_type,u.age,u.positional
+               c.remain_period,su.name as parent_name,u.dept_id,d.dept_name,u.duty,u.post,u.id_card,u.entry_time,u.resign_time,
+               u.person_type,u.age,u.positional,u.qualification,u.operation_certificate
         from sys_user u
        left join sys_company c on c.id=u.company_id
        left join sys_user su on su.id=u.parent_id and u.parent_id!=0
@@ -174,4 +187,7 @@
         </if>
     </select>
 
+
+
+
 </mapper>

--
Gitblit v1.9.2