From 2d27b24029adafdbfc5703b38a519d65beda6a68 Mon Sep 17 00:00:00 2001
From: heheng <heheng@123456>
Date: 星期三, 20 十一月 2024 16:23:23 +0800
Subject: [PATCH] 更改

---
 expert-admin/src/main/java/com/gkhy/web/controller/system/SysProfileController.java                |    4 
 expert-system/src/main/java/com/gkhy/system/domain/SysSettings.java                                |   53 
 expert-admin/src/main/resources/banner.txt                                                         |   22 
 expert-admin/src/main/java/com/gkhy/web/controller/system/SysDeptController.java                   |   65 
 expert-common/src/main/java/com/gkhy/common/core/domain/model/LoginBody.java                       |    3 
 expert-system/src/main/java/com/gkhy/system/domain/SysExpertInfo.java                              |   32 
 expert-system/src/main/java/com/gkhy/system/mapper/SysDeptMapper.java                              |   12 
 expert-framework/src/main/java/com/gkhy/framework/config/SecurityConfig.java                       |    4 
 expert-admin/src/main/java/com/gkhy/web/controller/system/SysRegisterController.java               |   76 
 expert-system/src/main/java/com/gkhy/system/service/ISysDeptService.java                           |    5 
 expert-system/src/main/java/com/gkhy/system/domain/vo/request/ProjectExpertSaveReqDto.java         |  154 -
 expert-system/src/main/java/com/gkhy/system/domain/vo/request/SysExpertInfoRoundReq.java           |   23 
 expert-admin/src/main/java/com/gkhy/web/controller/common/CaptchaController.java                   |   31 
 expert-framework/src/main/java/com/gkhy/framework/config/MybatisPlusConfig.java                    |   45 
 expert-system/src/main/java/com/gkhy/system/service/ISysSettingsService.java                       |   41 
 expert-system/src/main/resources/mapper/system/EvaluationMapper.xml                                |    4 
 expert-admin/src/main/resources/application.yml                                                    |   58 
 ry.sh                                                                                              |    2 
 expert-framework/src/main/java/com/gkhy/framework/config/MyBatisConfig.java                        |  264 +-
 expert-common/src/main/java/com/gkhy/common/enums/OpenFlagEnum.java                                |   10 
 expert-system/src/main/resources/mapper/system/SysSettingsMapper.xml                               |   12 
 expert-system/src/main/java/com/gkhy/system/domain/ProjectExpertDetail.java                        |  151 
 expert-system/src/main/java/com/gkhy/system/domain/ApplyRecord.java                                |  100 
 expert-system/src/main/java/com/gkhy/system/service/IEvaluationService.java                        |    5 
 expert-common/src/main/java/com/gkhy/common/utils/poi/ExcelUtil.java                               |    4 
 expert-system/src/main/java/com/gkhy/system/mapper/ProjectFileMapper.java                          |   11 
 expert-admin/pom.xml                                                                               |   24 
 expert-admin/src/main/java/com/gkhy/web/controller/bussiness/EvaluationController.java             |   86 
 expert-system/src/main/resources/mapper/system/ApplyRecordMapper.xml                               |    7 
 expert-common/src/main/java/com/gkhy/common/utils/file/FileUploadUtils.java                        |    6 
 expert-admin/src/main/java/com/gkhy/web/controller/system/SysLoginController.java                  |    7 
 expert-system/src/main/java/com/gkhy/system/mapper/ApplyRecordMapper.java                          |    9 
 expert-common/src/main/java/com/gkhy/common/enums/DeleteFlagEnum.java                              |    2 
 expert-system/src/main/resources/mapper/system/ProjectExpertMapper.xml                             |   94 
 expert-admin/src/main/java/com/gkhy/web/controller/system/SysSettingsController.java               |  111 
 expert-system/src/main/java/com/gkhy/system/domain/vo/response/ProjectExpertSectionResp.java       |   16 
 expert-system/src/main/resources/mapper/system/SysDeptMapper.xml                                   |   20 
 pom.xml                                                                                            |   99 
 expert-common/src/main/java/com/gkhy/common/core/domain/BaseEntity.java                            |   10 
 expert-common/pom.xml                                                                              |   20 
 sql/ry_20240629.sql                                                                                |    2 
 expert-system/src/main/java/com/gkhy/system/service/SysExpertClassifyService.java                  |    4 
 expert-admin/src/main/java/com/gkhy/ExpertServletInitializer.java                                  |    4 
 expert-common/src/main/java/com/gkhy/common/config/ExpertConfig.java                               |    8 
 expert-system/src/main/resources/mapper/system/SysExpertInfoMapper.xml                             |   48 
 expert-system/src/main/java/com/gkhy/system/service/IProjectManagementService.java                 |   75 
 expert-common/src/main/java/com/gkhy/common/utils/file/ImageUtils.java                             |    4 
 expert-system/src/main/java/com/gkhy/system/service/impl/SysExpertInfoServiceImpl.java             |   71 
 expert-system/src/main/java/com/gkhy/system/service/impl/SysExpertClassifyServiceImpl.java         |   30 
 .github/FUNDING.yml                                                                                |    2 
 expert-system/src/main/java/com/gkhy/system/domain/vo/response/ProjectExpertManagementInfoRes.java |  241 --
 expert-system/src/main/java/com/gkhy/system/domain/vo/response/ProjectExpertEvaluationResp.java    |   23 
 expert-admin/src/main/resources/application-druid.yml                                              |    4 
 expert-system/src/main/java/com/gkhy/system/mapper/ProjectManagementMapper.java                    |   30 
 expert-system/src/main/java/com/gkhy/system/domain/vo/request/ProjectArchiveReq.java               |   34 
 expert-generator/src/main/resources/vm/java/service.java.vm                                        |   20 
 expert-system/src/main/java/com/gkhy/system/mapper/ProjectExpertDetailMapper.java                  |   10 
 expert-system/src/main/resources/mapper/system/SysExpertClassifyMapper.xml                         |    2 
 expert-framework/src/main/java/com/gkhy/framework/config/ResourcesConfig.java                      |    4 
 expert-system/src/main/java/com/gkhy/system/domain/vo/response/ProjectExpertResp.java              |   35 
 expert-admin/src/main/java/com/gkhy/web/controller/bussiness/ExpertInfoController.java             |   98 
 expert-admin/src/main/java/com/gkhy/web/core/config/SwaggerConfig.java                             |    6 
 expert-system/src/main/java/com/gkhy/system/domain/vo/request/ProjectExpertScoreSaveReq.java       |   47 
 expert-generator/src/main/resources/vm/java/mapper.java.vm                                         |   66 
 expert-system/src/main/resources/mapper/system/ProjectExpertDetailMapper.xml                       |   67 
 expert-system/src/main/java/com/gkhy/system/domain/vo/response/ProjectExpertCheckResp.java         |   38 
 expert-system/src/main/java/com/gkhy/system/service/impl/SysDeptServiceImpl.java                   |   18 
 expert-admin/src/main/java/com/gkhy/web/controller/bussiness/ProjectManagementController.java      |  201 +
 expert-system/src/main/java/com/gkhy/system/mapper/EvaluationMapper.java                           |    6 
 expert-system/src/main/java/com/gkhy/system/domain/vo/response/ProjectExpertStateResp.java         |   35 
 expert-system/src/main/java/com/gkhy/system/domain/vo/request/ProjectExpertTeamLeaderReqDto.java   |   18 
 bin/run.bat                                                                                        |    6 
 expert-system/src/main/java/com/gkhy/system/domain/vo/response/SysExpertSearchRep.java             |   20 
 expert-generator/src/main/resources/vm/java/sub-domain.java.vm                                     |  111 
 LICENSE                                                                                            |    2 
 expert-system/src/main/java/com/gkhy/system/domain/vo/request/ProjectCheckReq.java                 |   25 
 expert-system/src/main/resources/mapper/system/ProjectFileMapper.xml                               |   47 
 expert-system/src/main/java/com/gkhy/system/domain/vo/response/ProjectNumResp.java                 |   25 
 ry.bat                                                                                             |   24 
 expert-system/src/main/java/com/gkhy/system/domain/SysExpertClassify.java                          |   10 
 expert-system/src/main/java/com/gkhy/system/domain/vo/request/SysProjectExpertReq.java             |   30 
 README.md                                                                                          |   20 
 expert-system/src/main/java/com/gkhy/system/domain/vo/request/ProjectExpertSaveBatchReqDto.java    |   28 
 expert-admin/src/main/java/com/gkhy/web/controller/common/CommonController.java                    |   42 
 expert-system/src/main/java/com/gkhy/system/domain/ProjectExpert.java                              |  199 +
 expert-system/src/main/java/com/gkhy/system/mapper/ProjectExpertMapper.java                        |   33 
 expert-system/src/main/java/com/gkhy/system/mapper/SysSettingsMapper.java                          |   13 
 expert-system/src/main/java/com/gkhy/system/service/impl/EvaluationServiceImpl.java                |   15 
 expert-admin/src/main/java/com/gkhy/ExpertApplication.java                                         |    4 
 expert-system/src/main/java/com/gkhy/system/mapper/SysExpertInfoMapper.java                        |   25 
 expert-system/src/main/java/com/gkhy/system/domain/ProjectManagement.java                          |  427 ++-
 expert-system/src/main/java/com/gkhy/system/domain/vo/request/ProjectManageSaveReq.java            |   83 
 expert-system/src/main/java/com/gkhy/system/domain/ProjectFile.java                                |  262 +-
 expert-system/pom.xml                                                                              |    5 
 expert-system/src/main/java/com/gkhy/system/service/impl/SysSettingsServiceImpl.java               |  137 
 expert-system/src/main/java/com/gkhy/system/domain/vo/request/SysExpertSearchReqDto.java           |   33 
 expert-common/src/main/java/com/gkhy/common/core/domain/entity/SysDept.java                        |   23 
 expert-system/src/main/java/com/gkhy/system/service/impl/ProjectManagementServiceImpl.java         |  434 ++++
 expert-common/src/main/java/com/gkhy/common/utils/ip/AddressUtils.java                             |    4 
 expert-generator/src/main/resources/vm/java/serviceImpl.java.vm                                    |  183 
 expert-system/src/main/java/com/gkhy/system/domain/Evaluation.java                                 |  159 
 expert-admin/src/main/java/com/gkhy/web/controller/bussiness/ExpertClassifyController.java         |   38 
 expert-system/src/main/java/com/gkhy/system/mapper/SysExpertClassifyMapper.java                    |    4 
 expert-common/src/main/java/com/gkhy/common/utils/file/FileUtils.java                              |    4 
 /dev/null                                                                                          |    0 
 expert-system/src/main/java/com/gkhy/system/domain/vo/request/ProjectExpertStateReq.java           |   27 
 expert-system/src/main/java/com/gkhy/system/service/SysExpertInfoService.java                      |   28 
 expert-system/src/main/resources/mapper/system/ProjectManagementMapper.xml                         |   98 
 expert-generator/src/main/resources/vm/java/domain.java.vm                                         |  167 
 expert-admin/src/main/java/com/gkhy/web/controller/system/SysIndexController.java                  |    6 
 110 files changed, 3,680 insertions(+), 2,074 deletions(-)

diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
index fbcab77..dd340e6 100644
--- a/.github/FUNDING.yml
+++ b/.github/FUNDING.yml
@@ -1 +1 @@
-custom: http://doc.ruoyi.vip/ruoyi-vue/other/donate.html
+custom: http://doc.expert.vip/expert-vue/other/donate.html
diff --git a/LICENSE b/LICENSE
index 8564f29..ba78534 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
 The MIT License (MIT)
 
-Copyright (c) 2018 RuoYi
+Copyright (c) 2018 expert
 
 Permission is hereby granted, free of charge, to any person obtaining a copy of
 this software and associated documentation files (the "Software"), to deal in
diff --git a/README.md b/README.md
index e5a47b8..2bfc07d 100644
--- a/README.md
+++ b/README.md
@@ -1,12 +1,12 @@
 <p align="center">
 	<img alt="logo" src="https://oscimg.oschina.net/oscnet/up-d3d0a9303e11d522a06cd263f3079027715.png">
 </p>
-<h1 align="center" style="margin: 30px 0 30px; font-weight: bold;">RuoYi v3.8.8</h1>
+<h1 align="center" style="margin: 30px 0 30px; font-weight: bold;">expert v3.8.8</h1>
 <h4 align="center">基于SpringBoot+Vue前后端分离的Java快速开发框架</h4>
 <p align="center">
-	<a href="https://gitee.com/y_project/RuoYi-Vue/stargazers"><img src="https://gitee.com/y_project/RuoYi-Vue/badge/star.svg?theme=dark"></a>
-	<a href="https://gitee.com/y_project/RuoYi-Vue"><img src="https://img.shields.io/badge/RuoYi-v3.8.8-brightgreen.svg"></a>
-	<a href="https://gitee.com/y_project/RuoYi-Vue/blob/master/LICENSE"><img src="https://img.shields.io/github/license/mashape/apistatus.svg"></a>
+	<a href="https://gitee.com/y_project/expert-Vue/stargazers"><img src="https://gitee.com/y_project/expert-Vue/badge/star.svg?theme=dark"></a>
+	<a href="https://gitee.com/y_project/expert-Vue"><img src="https://img.shields.io/badge/expert-v3.8.8-brightgreen.svg"></a>
+	<a href="https://gitee.com/y_project/expert-Vue/blob/master/LICENSE"><img src="https://img.shields.io/github/license/mashape/apistatus.svg"></a>
 </p>
 
 ## 平台简介
@@ -18,10 +18,10 @@
 * 权限认证使用Jwt,支持多终端认证系统。
 * 支持加载动态权限菜单,多方式轻松权限控制。
 * 高效率开发,使用代码生成器可以一键生成前后端代码。
-* 提供了技术栈([Vue3](https://v3.cn.vuejs.org) [Element Plus](https://element-plus.org/zh-CN) [Vite](https://cn.vitejs.dev))版本[RuoYi-Vue3](https://github.com/yangzongzhuan/RuoYi-Vue3),保持同步更新。
-* 提供了单应用版本[RuoYi-Vue-fast](https://github.com/yangzongzhuan/RuoYi-Vue-fast),Oracle版本[RuoYi-Vue-Oracle](https://github.com/yangzongzhuan/RuoYi-Vue-Oracle),保持同步更新。
-* 不分离版本,请移步[RuoYi](https://gitee.com/y_project/RuoYi),微服务版本,请移步[RuoYi-Cloud](https://gitee.com/y_project/RuoYi-Cloud)
-* 阿里云折扣场:[点我进入](http://aly.ruoyi.vip),腾讯云秒杀场:[点我进入](http://txy.ruoyi.vip)&nbsp;&nbsp;
+* 提供了技术栈([Vue3](https://v3.cn.vuejs.org) [Element Plus](https://element-plus.org/zh-CN) [Vite](https://cn.vitejs.dev))版本[expert-Vue3](https://github.com/yangzongzhuan/expert-Vue3),保持同步更新。
+* 提供了单应用版本[expert-Vue-fast](https://github.com/yangzongzhuan/expert-Vue-fast),Oracle版本[expert-Vue-Oracle](https://github.com/yangzongzhuan/expert-Vue-Oracle),保持同步更新。
+* 不分离版本,请移步[expert](https://gitee.com/y_project/expert),微服务版本,请移步[expert-Cloud](https://gitee.com/y_project/expert-Cloud)
+* 阿里云折扣场:[点我进入](http://aly.expert.vip),腾讯云秒杀场:[点我进入](http://txy.expert.vip)&nbsp;&nbsp;
 * 阿里云优惠券:[点我领取](https://www.aliyun.com/minisite/goods?userCode=brki8iof&share_source=copy_link),腾讯云优惠券:[点我领取](https://cloud.tencent.com/redirect.php?redirect=1025&cps_key=198c8df2ed259157187173bc7f4f32fd&from=console)&nbsp;&nbsp;
 
 ## 内置功能
@@ -50,8 +50,8 @@
 - admin/admin123  
 - 陆陆续续收到一些打赏,为了更好的体验已用于演示服务器升级。谢谢各位小伙伴。
 
-演示地址:http://vue.ruoyi.vip  
-文档地址:http://doc.ruoyi.vip
+演示地址:http://vue.expert.vip  
+文档地址:http://doc.expert.vip
 
 ## 演示图
 
diff --git a/bin/run.bat b/bin/run.bat
index 99c4992..0905107 100644
--- a/bin/run.bat
+++ b/bin/run.bat
@@ -1,14 +1,14 @@
 @echo off
 echo.
-echo [��Ϣ] ʹ��Jar��������Web���̡�
+echo [��Ϣ] ʹ��Jar��������Web���̡�
 echo.
 
 cd %~dp0
-cd ../ruoyi-admin/target
+cd ../expert-admin/target
 
 set JAVA_OPTS=-Xms256m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m
 
-java -jar %JAVA_OPTS% ruoyi-admin.jar
+java -jar %JAVA_OPTS% expert-admin.jar
 
 cd bin
 pause
\ No newline at end of file
diff --git "a/doc/\350\213\245\344\276\235\347\216\257\345\242\203\344\275\277\347\224\250\346\211\213\345\206\214.docx" "b/doc/\350\213\245\344\276\235\347\216\257\345\242\203\344\275\277\347\224\250\346\211\213\345\206\214.docx"
deleted file mode 100644
index 9e4daef..0000000
--- "a/doc/\350\213\245\344\276\235\347\216\257\345\242\203\344\275\277\347\224\250\346\211\213\345\206\214.docx"
+++ /dev/null
Binary files differ
diff --git a/expert-admin/pom.xml b/expert-admin/pom.xml
index ead0058..b8d2803 100644
--- a/expert-admin/pom.xml
+++ b/expert-admin/pom.xml
@@ -24,18 +24,24 @@
             <optional>true</optional> <!-- 表示依赖不会传递 -->
         </dependency>
 
-        <!-- swagger3-->
         <dependency>
-            <groupId>io.springfox</groupId>
-            <artifactId>springfox-boot-starter</artifactId>
+            <groupId>com.github.xiaoymin</groupId>
+            <artifactId>knife4j-spring-boot-starter</artifactId>
+            <version>3.0.3</version>
         </dependency>
 
-        <!-- 防止进入swagger页面报类型转换错误,排除3.0.0中的引用,手动增加1.6.2版本 -->
-        <dependency>
-            <groupId>io.swagger</groupId>
-            <artifactId>swagger-models</artifactId>
-            <version>1.6.2</version>
-        </dependency>
+<!--        &lt;!&ndash; swagger3&ndash;&gt;-->
+<!--        <dependency>-->
+<!--            <groupId>io.springfox</groupId>-->
+<!--            <artifactId>springfox-boot-starter</artifactId>-->
+<!--        </dependency>-->
+
+<!--        &lt;!&ndash; 防止进入swagger页面报类型转换错误,排除3.0.0中的引用,手动增加1.6.2版本 &ndash;&gt;-->
+<!--        <dependency>-->
+<!--            <groupId>io.swagger</groupId>-->
+<!--            <artifactId>swagger-models</artifactId>-->
+<!--            <version>1.6.2</version>-->
+<!--        </dependency>-->
 
          <!-- Mysql驱动包 -->
         <dependency>
diff --git a/expert-admin/src/main/java/com/gkhy/ExpertApplication.java b/expert-admin/src/main/java/com/gkhy/ExpertApplication.java
index da1fae2..391acb4 100644
--- a/expert-admin/src/main/java/com/gkhy/ExpertApplication.java
+++ b/expert-admin/src/main/java/com/gkhy/ExpertApplication.java
@@ -10,11 +10,11 @@
  * @author expert
  */
 @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
-public class expertApplication
+public class ExpertApplication
 {
     public static void main(String[] args)
     {
         // System.setProperty("spring.devtools.restart.enabled", "false");
-        SpringApplication.run(expertApplication.class, args);
+        SpringApplication.run(ExpertApplication.class, args);
     }
 }
diff --git a/expert-admin/src/main/java/com/gkhy/ExpertServletInitializer.java b/expert-admin/src/main/java/com/gkhy/ExpertServletInitializer.java
index 30d9f31..d0acb4a 100644
--- a/expert-admin/src/main/java/com/gkhy/ExpertServletInitializer.java
+++ b/expert-admin/src/main/java/com/gkhy/ExpertServletInitializer.java
@@ -8,11 +8,11 @@
  * 
  * @author expert
  */
-public class expertServletInitializer extends SpringBootServletInitializer
+public class ExpertServletInitializer extends SpringBootServletInitializer
 {
     @Override
     protected SpringApplicationBuilder configure(SpringApplicationBuilder application)
     {
-        return application.sources(expertApplication.class);
+        return application.sources(ExpertApplication.class);
     }
 }
diff --git a/expert-admin/src/main/java/com/gkhy/web/controller/bussiness/EvaluationController.java b/expert-admin/src/main/java/com/gkhy/web/controller/bussiness/EvaluationController.java
index 3edc911..de8b19f 100644
--- a/expert-admin/src/main/java/com/gkhy/web/controller/bussiness/EvaluationController.java
+++ b/expert-admin/src/main/java/com/gkhy/web/controller/bussiness/EvaluationController.java
@@ -1,36 +1,31 @@
-package com.gkhy.system.controller;
+package com.gkhy.web.controller.bussiness;
 
-import java.util.List;
-import javax.servlet.http.HttpServletResponse;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import com.gkhy.common.annotation.Log;
 import com.gkhy.common.core.controller.BaseController;
 import com.gkhy.common.core.domain.AjaxResult;
-import com.gkhy.common.enums.BusinessType;
+import com.gkhy.common.core.page.TableDataInfo;
 import com.gkhy.system.domain.Evaluation;
 import com.gkhy.system.service.IEvaluationService;
-import com.gkhy.common.utils.poi.ExcelUtil;
-import com.gkhy.common.core.page.TableDataInfo;
+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.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
 
 /**
  * 考评管理Controller
- * 
+ *
  * @author expert
  * @date 2024-11-13
  */
 @RestController
+@Api(tags = "考评管理-考评管理前端控制器")
 @RequestMapping("/system/evaluation")
-public class EvaluationController extends BaseController
-{
+public class EvaluationController extends BaseController {
     @Autowired
     private IEvaluationService evaluationService;
 
@@ -38,45 +33,26 @@
      * 查询考评管理列表
      */
     @PreAuthorize("@ss.hasPermi('system:evaluation:list')")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "query", name = "pageNum", dataType = "int", required = false, value = "当前页,默认1"),
+            @ApiImplicitParam(paramType = "query", name = "pageSize", dataType = "int", required = false, value = "每页数目,默认10,最大50")
+    })
+    @ApiOperation(value = "考评管理列表")
     @GetMapping("/list")
-    public TableDataInfo list(Evaluation evaluation)
-    {
+    public TableDataInfo list(Evaluation evaluation) {
         startPage();
         List<Evaluation> list = evaluationService.selectEvaluationList(evaluation);
         return getDataTable(list);
     }
 
-    /**
-     * 导出考评管理列表
-     */
-    @PreAuthorize("@ss.hasPermi('system:evaluation:export')")
-    @Log(title = "考评管理", businessType = BusinessType.EXPORT)
-    @PostMapping("/export")
-    public void export(HttpServletResponse response, Evaluation evaluation)
-    {
-        List<Evaluation> list = evaluationService.selectEvaluationList(evaluation);
-        ExcelUtil<Evaluation> util = new ExcelUtil<Evaluation>(Evaluation.class);
-        util.exportExcel(response, list, "考评管理数据");
-    }
-
-    /**
-     * 获取考评管理详细信息
-     */
-    @PreAuthorize("@ss.hasPermi('system:evaluation:query')")
-    @GetMapping(value = "/{id}")
-    public AjaxResult getInfo(@PathVariable("id") Long id)
-    {
-        return success(evaluationService.selectEvaluationById(id));
-    }
 
     /**
      * 新增考评管理
      */
     @PreAuthorize("@ss.hasPermi('system:evaluation:add')")
-    @Log(title = "考评管理", businessType = BusinessType.INSERT)
-    @PostMapping
-    public AjaxResult add(@RequestBody Evaluation evaluation)
-    {
+    @PostMapping("/add")
+    @ApiOperation(value = "新增考评管理")
+    public AjaxResult add(@Validated @RequestBody Evaluation evaluation) {
         return toAjax(evaluationService.insertEvaluation(evaluation));
     }
 
@@ -84,10 +60,9 @@
      * 修改考评管理
      */
     @PreAuthorize("@ss.hasPermi('system:evaluation:edit')")
-    @Log(title = "考评管理", businessType = BusinessType.UPDATE)
-    @PutMapping
-    public AjaxResult edit(@RequestBody Evaluation evaluation)
-    {
+    @PutMapping("/edit")
+    @ApiOperation(value = "修改考评管理")
+    public AjaxResult edit(@Validated @RequestBody Evaluation evaluation) {
         return toAjax(evaluationService.updateEvaluation(evaluation));
     }
 
@@ -95,10 +70,9 @@
      * 删除考评管理
      */
     @PreAuthorize("@ss.hasPermi('system:evaluation:remove')")
-    @Log(title = "考评管理", businessType = BusinessType.DELETE)
-	@DeleteMapping("/{ids}")
-    public AjaxResult remove(@PathVariable Long[] ids)
-    {
+    @DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除考评管理")
+    public AjaxResult remove(@PathVariable Long[] ids) {
         return toAjax(evaluationService.deleteEvaluationByIds(ids));
     }
 }
diff --git a/expert-admin/src/main/java/com/gkhy/web/controller/bussiness/ExpertClassifyController.java b/expert-admin/src/main/java/com/gkhy/web/controller/bussiness/ExpertClassifyController.java
index 0291b85..8c669c7 100644
--- a/expert-admin/src/main/java/com/gkhy/web/controller/bussiness/ExpertClassifyController.java
+++ b/expert-admin/src/main/java/com/gkhy/web/controller/bussiness/ExpertClassifyController.java
@@ -1,13 +1,15 @@
-package com.gkhy.assess.admin.controller.web;
+package com.gkhy.web.controller.bussiness;
 
-import com.gkhy.assess.common.annotation.RepeatSubmit;
-import com.gkhy.assess.common.api.CommonResult;
-import com.gkhy.assess.system.domain.SysExpertClassify;
-import com.gkhy.assess.system.service.SysExpertClassifyService;
+
+import com.gkhy.common.annotation.Anonymous;
+import com.gkhy.common.annotation.RepeatSubmit;
+import com.gkhy.common.core.domain.AjaxResult;
+import com.gkhy.system.domain.SysExpertClassify;
+import com.gkhy.system.service.SysExpertClassifyService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
 @Api(tags = "专家库-专家分类前端控制器")
@@ -19,33 +21,35 @@
 
     @ApiOperation(value = "专家分类列表(树形)")
     @GetMapping("/tree")
-    public CommonResult classifyTree(SysExpertClassify expertClassify){
-        return CommonResult.success(expertClassifyService.classifyTree(expertClassify));
+    @Anonymous
+    @RepeatSubmit
+    public AjaxResult classifyTree(SysExpertClassify expertClassify){
+        return AjaxResult.success(expertClassifyService.classifyTree(expertClassify));
     }
 
-    @RequiresPermissions("system:assess:monitor")
+    @PreAuthorize("@ss.hasPermi('system:assess:monitor')")
     @RepeatSubmit
     @ApiOperation(value = "修改专家分类")
     @PutMapping("/mod")
-    public CommonResult modClassify(@RequestBody SysExpertClassify expertClassify){
-        return CommonResult.success(expertClassifyService.modClassify(expertClassify));
+    public AjaxResult modClassify(@RequestBody SysExpertClassify expertClassify){
+        return AjaxResult.success(expertClassifyService.modClassify(expertClassify));
     }
 
-    @RequiresPermissions("system:assess:monitor")
+    @PreAuthorize("@ss.hasPermi('system:assess:monitor')")
     @RepeatSubmit
     @ApiOperation(value = "删除专家分类")
     @DeleteMapping("/del/{classifyId}")
-    public CommonResult delClassify(@PathVariable(value = "classifyId") Long classifyId){
-        return CommonResult.success(expertClassifyService.delClassify(classifyId));
+    public AjaxResult delClassify(@PathVariable(value = "classifyId") Long classifyId){
+        return AjaxResult.success(expertClassifyService.delClassify(classifyId));
     }
 
 
-    @RequiresPermissions("system:assess:monitor")
+    @PreAuthorize("@ss.hasPermi('system:assess:monitor')")
     @RepeatSubmit
     @ApiOperation(value = "新增专家分类")
     @PostMapping("/add")
-    public CommonResult addClassify(@RequestBody SysExpertClassify expertClassify){
-        return CommonResult.success(expertClassifyService.addClassify(expertClassify));
+    public AjaxResult addClassify(@RequestBody SysExpertClassify expertClassify){
+        return AjaxResult.success(expertClassifyService.addClassify(expertClassify));
     }
 
 }
diff --git a/expert-admin/src/main/java/com/gkhy/web/controller/bussiness/ExpertInfoController.java b/expert-admin/src/main/java/com/gkhy/web/controller/bussiness/ExpertInfoController.java
index 09a448f..3079375 100644
--- a/expert-admin/src/main/java/com/gkhy/web/controller/bussiness/ExpertInfoController.java
+++ b/expert-admin/src/main/java/com/gkhy/web/controller/bussiness/ExpertInfoController.java
@@ -1,86 +1,116 @@
-package com.gkhy.assess.admin.controller.web;
+package com.gkhy.web.controller.bussiness;
 
-import com.gkhy.assess.common.annotation.RepeatSubmit;
-import com.gkhy.assess.common.api.CommonResult;
-import com.gkhy.assess.system.domain.SysAgency;
-import com.gkhy.assess.system.domain.SysExpertClassify;
-import com.gkhy.assess.system.domain.SysExpertInfo;
-import com.gkhy.assess.system.domain.SysUser;
-import com.gkhy.assess.system.service.SysExpertInfoService;
+
+import com.gkhy.common.annotation.Anonymous;
+import com.gkhy.common.annotation.RepeatSubmit;
+import com.gkhy.common.core.controller.BaseController;
+import com.gkhy.common.core.domain.AjaxResult;
+import com.gkhy.common.core.domain.R;
+import com.gkhy.common.core.page.TableDataInfo;
+import com.gkhy.system.domain.SysExpertInfo;
+import com.gkhy.system.domain.vo.request.SysExpertInfoRoundReq;
+import com.gkhy.system.domain.vo.request.SysExpertSearchReqDto;
+import com.gkhy.system.domain.vo.response.ProjectExpertSectionResp;
+import com.gkhy.system.domain.vo.response.SysExpertSearchRep;
+import com.gkhy.system.service.SysExpertInfoService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
-import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.List;
+
+/**
+ * @author admin
+ */
 @Api(tags = "专家库-专家信息前端控制器")
 @RestController
 @RequestMapping("/system/expert_info")
-public class ExpertInfoController {
+public class ExpertInfoController extends BaseController {
     @Autowired
     private SysExpertInfoService expertInfoService;
 
-    @RequiresPermissions("system:assess:monitor")
+    // @RequiresPermissions("system:assess:monitor")
     @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,最大50")
     })
     @GetMapping("/list")
-    public CommonResult exportInfoList(SysExpertInfo expertInfo){
-        return CommonResult.success(expertInfoService.exportInfoList(expertInfo));
+    public TableDataInfo exportInfoList(SysExpertInfo expertInfo) {
+        startPage();
+        List<SysExpertInfo> sysExpertInfos = expertInfoService.exportInfoList(expertInfo);
+        return getDataTable(sysExpertInfos);
+
     }
 
-    @RequiresPermissions("system:assess:monitor")
+    // @RequiresPermissions("system:assess:monitor")
     @RepeatSubmit
     @ApiOperation(value = "新增专家信息")
     @PostMapping("/add")
-    public CommonResult addExpertInfo(@RequestBody SysExpertInfo expertInfo){
-        return CommonResult.success(expertInfoService.addExpertInfo(expertInfo));
+    @Anonymous
+    public AjaxResult addExpertInfo(@RequestBody SysExpertInfo expertInfo) {
+        return AjaxResult.success(expertInfoService.addExpertInfo(expertInfo));
     }
 
-    @RequiresPermissions("system:assess:monitor")
+    //@RequiresPermissions("system:assess:monitor")
     @RepeatSubmit
     @ApiOperation(value = "修改专家信息")
     @PutMapping("/mod")
-    public CommonResult modExpertInfo(@RequestBody SysExpertInfo expertInfo){
-        return CommonResult.success(expertInfoService.modExpertInfo(expertInfo));
+    public AjaxResult modExpertInfo(@RequestBody SysExpertInfo expertInfo) {
+        return AjaxResult.success(expertInfoService.modExpertInfo(expertInfo));
     }
 
-    @RequiresPermissions("system:assess:monitor")
+    //@RequiresPermissions("system:assess:monitor")
     @RepeatSubmit
     @ApiOperation(value = "删除专家信息")
     @DeleteMapping("/del/{expertId}")
-    public CommonResult delExpertInfo(@PathVariable(value = "expertId") Long expertId){
-        return CommonResult.success(expertInfoService.delExpertInfo(expertId));
+    public AjaxResult delExpertInfo(@PathVariable(value = "expertId") Long expertId) {
+        return AjaxResult.success(expertInfoService.delExpertInfo(expertId));
     }
 
-    @RequiresPermissions("system:assess:monitor")
+    // @RequiresPermissions("system:assess:monitor")
     @RepeatSubmit
     @ApiOperation(value = "批量删除专家信息")
     @DeleteMapping("/del/batch/{expertIds}")
-    public CommonResult delExpertInfo(@PathVariable(value = "expertIds") Long[] expertIds){
-        return CommonResult.success(expertInfoService.delExpertInfoBatch(expertIds));
+    public AjaxResult delExpertInfo(@PathVariable(value = "expertIds") Long[] expertIds) {
+        return AjaxResult.success(expertInfoService.delExpertInfoBatch(expertIds));
     }
 
-    @RequiresPermissions("system:assess:monitor")
+    // @RequiresPermissions("system:assess:monitor")
     @ApiOperation(value = "根据id获取专家信息")
     @GetMapping("/detail/{expertId}")
-    public CommonResult exportInfoDetail(@PathVariable(value = "expertId") Long expertId){
-        return CommonResult.success(expertInfoService.exportInfoDetail(expertId));
+    public R<SysExpertInfo> exportInfoDetail(@PathVariable(value = "expertId") Long expertId) {
+        return R.ok(expertInfoService.exportInfoDetail(expertId));
     }
-
 
 
     @RepeatSubmit
-    @RequiresPermissions("system:assess:monitor")
-    @ApiOperation(value = "审批状态修改,审批状态(0暂存,1审核中,2审批通过,3审批驳回,4已作废)")
+    //@RequiresPermissions("system:assess:monitor")
+    @ApiOperation(value = "审批状态修改,审批状态(0暂存,1审核中,2审批通过,3审批驳回,4专家库)")
     @PostMapping("/changeApprove")
-    public CommonResult changeApprove(@RequestBody SysExpertInfo expertInfo)
-    {
-        return CommonResult.success(expertInfoService.changeApprove(expertInfo));
+    public AjaxResult changeApprove(@RequestBody SysExpertInfo expertInfo) {
+        return AjaxResult.success(expertInfoService.changeApprove(expertInfo));
+    }
+
+    @RepeatSubmit
+    //@RequiresPermissions("system:assess:monitor")
+    @ApiOperation(value = "专家查询审批结果")
+    @PostMapping("/queryApprove")
+    @Anonymous
+    public R<SysExpertSearchRep> queryApprove(@Validated @RequestBody SysExpertSearchReqDto expertInfo) {
+        return R.ok(expertInfoService.queryApprove(expertInfo));
+    }
+
+    @RepeatSubmit
+    //@RequiresPermissions("system:assess:monitor")
+    @ApiOperation(value = "随机获取专家数据")
+    @PostMapping("/getExpertRound")
+    public R<List<ProjectExpertSectionResp>> getExpertRound(@Validated @RequestBody SysExpertInfoRoundReq expertInfo) {
+        return R.ok(expertInfoService.getExpertRound(expertInfo));
     }
 
 
diff --git a/expert-admin/src/main/java/com/gkhy/web/controller/bussiness/ProjectManagementController.java b/expert-admin/src/main/java/com/gkhy/web/controller/bussiness/ProjectManagementController.java
index 56de2ec..bd5341e 100644
--- a/expert-admin/src/main/java/com/gkhy/web/controller/bussiness/ProjectManagementController.java
+++ b/expert-admin/src/main/java/com/gkhy/web/controller/bussiness/ProjectManagementController.java
@@ -1,25 +1,26 @@
-package com.gkhy.system.controller;
+package com.gkhy.web.controller.bussiness;
 
-import java.util.List;
-import javax.servlet.http.HttpServletResponse;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import com.gkhy.common.annotation.Log;
+import com.gkhy.common.annotation.RepeatSubmit;
 import com.gkhy.common.core.controller.BaseController;
 import com.gkhy.common.core.domain.AjaxResult;
-import com.gkhy.common.enums.BusinessType;
-import com.gkhy.system.domain.ProjectManagement;
-import com.gkhy.system.service.IProjectManagementService;
-import com.gkhy.common.utils.poi.ExcelUtil;
+import com.gkhy.common.core.domain.R;
 import com.gkhy.common.core.page.TableDataInfo;
+import com.gkhy.system.domain.ProjectExpertDetail;
+import com.gkhy.system.domain.ProjectFile;
+import com.gkhy.system.domain.ProjectManagement;
+import com.gkhy.system.domain.vo.request.*;
+import com.gkhy.system.domain.vo.response.*;
+import com.gkhy.system.service.IProjectManagementService;
+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.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
 
 /**
  * 项目管理Controller
@@ -29,6 +30,7 @@
  */
 @RestController
 @RequestMapping("/system/management")
+@Api(tags = "项目管理专家考评-项目管理专家考评前端控制器")
 public class ProjectManagementController extends BaseController
 {
     @Autowired
@@ -37,8 +39,13 @@
     /**
      * 查询项目管理列表
      */
+    @ApiOperation(value = "查询项目管理列表(分页)")
     @PreAuthorize("@ss.hasPermi('system:management:list')")
     @GetMapping("/list")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "query", name = "pageNum", dataType = "int", required = false, value = "当前页,默认1"),
+            @ApiImplicitParam(paramType = "query", name = "pageSize", dataType = "int", required = false, value = "每页数目,默认10,最大50")
+    })
     public TableDataInfo list(ProjectManagement projectManagement)
     {
         startPage();
@@ -46,59 +53,171 @@
         return getDataTable(list);
     }
 
-    /**
-     * 导出项目管理列表
-     */
-    @PreAuthorize("@ss.hasPermi('system:management:export')")
-    @Log(title = "项目管理", businessType = BusinessType.EXPORT)
-    @PostMapping("/export")
-    public void export(HttpServletResponse response, ProjectManagement projectManagement)
-    {
-        List<ProjectManagement> list = projectManagementService.selectProjectManagementList(projectManagement);
-        ExcelUtil<ProjectManagement> util = new ExcelUtil<ProjectManagement>(ProjectManagement.class);
-        util.exportExcel(response, list, "项目管理数据");
-    }
 
     /**
      * 获取项目管理详细信息
      */
     @PreAuthorize("@ss.hasPermi('system:management:query')")
     @GetMapping(value = "/{id}")
-    public AjaxResult getInfo(@PathVariable("id") Long id)
+    @ApiOperation(value = "获取项目管理详细信息")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "query", name = "id", dataType = "int", required = true, value = "当前页,默认1")
+    })
+    public R<ProjectManagement> getInfo(@PathVariable("id") Long id)
     {
-        return success(projectManagementService.selectProjectManagementById(id));
+        return R.ok(projectManagementService.selectProjectManagementById(id));
     }
 
     /**
      * 新增项目管理
      */
     @PreAuthorize("@ss.hasPermi('system:management:add')")
-    @Log(title = "项目管理", businessType = BusinessType.INSERT)
-    @PostMapping
-    public AjaxResult add(@RequestBody ProjectManagement projectManagement)
+    @ApiOperation(value = "新增编辑项目管理")
+    @PostMapping("/saveProject")
+    @RepeatSubmit
+    public R addProject(@Validated @RequestBody ProjectManageSaveReq projectManagement)
     {
-        return toAjax(projectManagementService.insertProjectManagement(projectManagement));
+        return R.ok(projectManagementService.insertProjectManagement(projectManagement));
     }
 
     /**
      * 修改项目管理
      */
     @PreAuthorize("@ss.hasPermi('system:management:edit')")
-    @Log(title = "项目管理", businessType = BusinessType.UPDATE)
-    @PutMapping
-    public AjaxResult edit(@RequestBody ProjectManagement projectManagement)
+    @ApiOperation(value = "项目专家选取保存-修改")
+    @PostMapping("/projectExpert")
+    @RepeatSubmit
+    public R projectExpert(@Validated @RequestBody ProjectExpertSaveBatchReqDto projectManagement)
     {
-        return toAjax(projectManagementService.updateProjectManagement(projectManagement));
+        projectManagementService.updateProjectManagement(projectManagement);
+        return R.ok();
+    }
+
+    @PreAuthorize("@ss.hasPermi('system:management:info')")
+    @ApiOperation(value = "获取项目专家审批用(获取项目信息和专家数据)")
+    @GetMapping("/projectExpertCheckInfo")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "query", name = "id", dataType = "long", required = true, value = "当前页,默认1")
+    })
+    public R<ProjectExpertManagementInfoRes> projectExpertCheckInfo(@RequestParam("id") Long id)
+    {
+        return R.ok(projectManagementService.projectExpertCheckInfo(id));
+    }
+
+    @PreAuthorize("@ss.hasPermi('system:management:edit')")
+    @ApiOperation(value = "项目专家审批")
+    @PostMapping("/projectCheck")
+    @RepeatSubmit
+    public R projectCheck(@Validated @RequestBody ProjectCheckReq req)
+    {
+        projectManagementService.projectCheck(req);
+        return R.ok();
+    }
+
+    @PreAuthorize("@ss.hasPermi('system:management:edit')")
+    @ApiOperation(value = "项目归档")
+    @PostMapping("/projectArchive")
+    @RepeatSubmit
+    public R projectArchive(@Validated @RequestBody ProjectArchiveReq req)
+    {
+        projectManagementService.projectArchive(req);
+        return R.ok();
     }
 
     /**
      * 删除项目管理
      */
     @PreAuthorize("@ss.hasPermi('system:management:remove')")
-    @Log(title = "项目管理", businessType = BusinessType.DELETE)
 	@DeleteMapping("/{ids}")
+    @ApiOperation(value = "删除项目管理")
+    @RepeatSubmit
     public AjaxResult remove(@PathVariable Long[] ids)
     {
         return toAjax(projectManagementService.deleteProjectManagementByIds(ids));
     }
+
+
+    /**
+     * 事后考评列表
+     */
+    @ApiOperation(value = "事后考评——事后考评(分页)")
+    @PreAuthorize("@ss.hasPermi('system:management:list')")
+    @GetMapping("/projectExpertList")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "query", name = "pageNum", dataType = "int", required = false, value = "当前页,默认1"),
+            @ApiImplicitParam(paramType = "query", name = "pageSize", dataType = "int", required = false, value = "每页数目,默认10,最大50")
+    })
+    public TableDataInfo projectExpertList(ProjectExpertStateReq  req)
+    {
+        startPage();
+        List<ProjectExpertStateResp> list = projectManagementService.getProjectExpertSate(req);
+        return getDataTable(list);
+    }
+
+    @ApiOperation(value = "事后考评——项目专家考评列表(分页)")
+    @PreAuthorize("@ss.hasPermi('system:management:list')")
+    @GetMapping("/projectExpertEvaluationList")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "query", name = "pageNum", dataType = "int", required = false, value = "当前页,默认1"),
+            @ApiImplicitParam(paramType = "query", name = "pageSize", dataType = "int", required = false, value = "每页数目,默认10,最大50"),
+            @ApiImplicitParam(paramType = "query", name = "id", dataType = "int", required = true, value = "项目id")
+    })
+    public TableDataInfo projectExpertEvaluationList(@RequestParam("id") Long id)
+    {
+        startPage();
+        List<ProjectExpertEvaluationResp> projectExpertEvaluationResps = projectManagementService.projectExpertEvaluationList(id);
+        return getDataTable(projectExpertEvaluationResps);
+    }
+
+    @PreAuthorize("@ss.hasPermi('system:management:edit')")
+    @ApiOperation(value = "事后考评——项目专家考评")
+    @PostMapping("/ProjectExpertDetailSave")
+    @RepeatSubmit
+    public R projectExpertDetailSave(@Validated @RequestBody ProjectExpertScoreSaveReq req)
+    {
+        projectManagementService.projectExpertDetailSave(req);
+        return R.ok();
+    }
+
+    @ApiOperation(value = "专家考评记录——专家考评记录列表(分页)")
+    @PreAuthorize("@ss.hasPermi('system:management:list')")
+    @GetMapping("/projectExpertEvaList")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "query", name = "pageNum", dataType = "int", required = false, value = "当前页,默认1"),
+            @ApiImplicitParam(paramType = "query", name = "pageSize", dataType = "int", required = false, value = "每页数目,默认10,最大50"),
+    })
+    public TableDataInfo projectExpertEvaList(SysProjectExpertReq req)
+    {
+        startPage();
+        List<ProjectExpertResp> projectExpertResps = projectManagementService.projectExpertEvaList(req);
+        return getDataTable(projectExpertResps);
+    }
+
+    @ApiOperation(value = "专家考评记录——专家考评记明细")
+    @PreAuthorize("@ss.hasPermi('system:management:list')")
+    @GetMapping("/selectProjectExpertDetailList")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "query", name = "projectExpertId", dataType = "long", required = true, value = "项目专家id")
+    })
+    public R<List<ProjectExpertDetail>> selectProjectExpertDetailList(@RequestParam("projectExpertId") Long projectExpertId)
+    {
+        return R.ok(projectManagementService.selectProjectExpertDetailList(projectExpertId));
+    }
+
+    @GetMapping("/selectProjectFileList")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "query", name = "projectId", dataType = "long", required = true, value = "项目id"),
+            @ApiImplicitParam(paramType = "query", name = "module", dataType = "String", required = true, value = "附件类型1审批附件2项目附件")
+    })
+    @ApiOperation(value = "项目附件相关")
+    public R<List<ProjectFile>> selectProjectFileList(@RequestParam("projectId") Long projectId, @RequestParam("module") String module ){
+        return R.ok(projectManagementService.selectProjectFileList(projectId,module));
+    }
+
+    @GetMapping("/getProjectNum")
+    @ApiOperation(value = "项目统计数量")
+    public R<ProjectNumResp> getProjectNum(){
+        return R.ok(projectManagementService.getProjectNum());
+    }
+
 }
diff --git a/expert-admin/src/main/java/com/gkhy/web/controller/common/CaptchaController.java b/expert-admin/src/main/java/com/gkhy/web/controller/common/CaptchaController.java
index 1adc44d..f2c7952 100644
--- a/expert-admin/src/main/java/com/gkhy/web/controller/common/CaptchaController.java
+++ b/expert-admin/src/main/java/com/gkhy/web/controller/common/CaptchaController.java
@@ -1,17 +1,6 @@
 package com.gkhy.web.controller.common;
 
-import java.awt.image.BufferedImage;
-import java.io.IOException;
-import java.util.concurrent.TimeUnit;
-import javax.annotation.Resource;
-import javax.imageio.ImageIO;
-import javax.servlet.http.HttpServletResponse;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.util.FastByteArrayOutputStream;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RestController;
-import com.google.code.kaptcha.Producer;
-import com.gkhy.common.config.expertConfig;
+import com.gkhy.common.config.ExpertConfig;
 import com.gkhy.common.constant.CacheConstants;
 import com.gkhy.common.constant.Constants;
 import com.gkhy.common.core.domain.AjaxResult;
@@ -19,6 +8,20 @@
 import com.gkhy.common.utils.sign.Base64;
 import com.gkhy.common.utils.uuid.IdUtils;
 import com.gkhy.system.service.ISysConfigService;
+import com.google.code.kaptcha.Producer;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.FastByteArrayOutputStream;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.imageio.ImageIO;
+import javax.servlet.http.HttpServletResponse;
+import java.awt.image.BufferedImage;
+import java.io.IOException;
+import java.util.concurrent.TimeUnit;
 
 /**
  * 验证码操作处理
@@ -26,6 +29,7 @@
  * @author expert
  */
 @RestController
+@Api(tags = "验证码操作处理")
 public class CaptchaController
 {
     @Resource(name = "captchaProducer")
@@ -43,6 +47,7 @@
      * 生成验证码
      */
     @GetMapping("/captchaImage")
+    @ApiOperation(value = "生成验证码")
     public AjaxResult getCode(HttpServletResponse response) throws IOException
     {
         AjaxResult ajax = AjaxResult.success();
@@ -61,7 +66,7 @@
         BufferedImage image = null;
 
         // 生成验证码
-        String captchaType = expertConfig.getCaptchaType();
+        String captchaType = ExpertConfig.getCaptchaType();
         if ("math".equals(captchaType))
         {
             String capText = captchaProducerMath.createText();
diff --git a/expert-admin/src/main/java/com/gkhy/web/controller/common/CommonController.java b/expert-admin/src/main/java/com/gkhy/web/controller/common/CommonController.java
index d153648..be5d96a 100644
--- a/expert-admin/src/main/java/com/gkhy/web/controller/common/CommonController.java
+++ b/expert-admin/src/main/java/com/gkhy/web/controller/common/CommonController.java
@@ -1,9 +1,16 @@
 package com.gkhy.web.controller.common;
 
-import java.util.ArrayList;
-import java.util.List;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import com.gkhy.common.annotation.Anonymous;
+import com.gkhy.common.annotation.RepeatSubmit;
+import com.gkhy.common.config.ExpertConfig;
+import com.gkhy.common.constant.Constants;
+import com.gkhy.common.core.domain.AjaxResult;
+import com.gkhy.common.utils.StringUtils;
+import com.gkhy.common.utils.file.FileUploadUtils;
+import com.gkhy.common.utils.file.FileUtils;
+import com.gkhy.framework.config.ServerConfig;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -13,13 +20,11 @@
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
-import com.gkhy.common.config.expertConfig;
-import com.gkhy.common.constant.Constants;
-import com.gkhy.common.core.domain.AjaxResult;
-import com.gkhy.common.utils.StringUtils;
-import com.gkhy.common.utils.file.FileUploadUtils;
-import com.gkhy.common.utils.file.FileUtils;
-import com.gkhy.framework.config.ServerConfig;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * 通用请求处理
@@ -28,6 +33,7 @@
  */
 @RestController
 @RequestMapping("/common")
+@Api(tags = "附件上传下载")
 public class CommonController
 {
     private static final Logger log = LoggerFactory.getLogger(CommonController.class);
@@ -44,6 +50,7 @@
      * @param delete 是否删除
      */
     @GetMapping("/download")
+    @ApiOperation(value = "通用下载请求")
     public void fileDownload(String fileName, Boolean delete, HttpServletResponse response, HttpServletRequest request)
     {
         try
@@ -53,7 +60,7 @@
                 throw new Exception(StringUtils.format("文件名称({})非法,不允许下载。 ", fileName));
             }
             String realFileName = System.currentTimeMillis() + fileName.substring(fileName.indexOf("_") + 1);
-            String filePath = expertConfig.getDownloadPath() + fileName;
+            String filePath = ExpertConfig.getDownloadPath() + fileName;
 
             response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
             FileUtils.setAttachmentResponseHeader(response, realFileName);
@@ -73,12 +80,15 @@
      * 通用上传请求(单个)
      */
     @PostMapping("/upload")
+    @ApiOperation(value = "通用上传请求(单个)")
+    @Anonymous
+    @RepeatSubmit
     public AjaxResult uploadFile(MultipartFile file) throws Exception
     {
         try
         {
             // 上传文件路径
-            String filePath = expertConfig.getUploadPath();
+            String filePath = ExpertConfig.getUploadPath();
             // 上传并返回新文件名称
             String fileName = FileUploadUtils.upload(filePath, file);
             String url = serverConfig.getUrl() + fileName;
@@ -99,12 +109,13 @@
      * 通用上传请求(多个)
      */
     @PostMapping("/uploads")
+    @ApiOperation(value = "通用上传请求(多个)")
     public AjaxResult uploadFiles(List<MultipartFile> files) throws Exception
     {
         try
         {
             // 上传文件路径
-            String filePath = expertConfig.getUploadPath();
+            String filePath = ExpertConfig.getUploadPath();
             List<String> urls = new ArrayList<String>();
             List<String> fileNames = new ArrayList<String>();
             List<String> newFileNames = new ArrayList<String>();
@@ -136,6 +147,7 @@
      * 本地资源通用下载
      */
     @GetMapping("/download/resource")
+    @ApiOperation(value = "本地资源通用下载")
     public void resourceDownload(String resource, HttpServletRequest request, HttpServletResponse response)
             throws Exception
     {
@@ -146,7 +158,7 @@
                 throw new Exception(StringUtils.format("资源文件({})非法,不允许下载。 ", resource));
             }
             // 本地资源路径
-            String localPath = expertConfig.getProfile();
+            String localPath = ExpertConfig.getProfile();
             // 数据库资源地址
             String downloadPath = localPath + StringUtils.substringAfter(resource, Constants.RESOURCE_PREFIX);
             // 下载名称
diff --git a/expert-admin/src/main/java/com/gkhy/web/controller/system/SysDeptController.java b/expert-admin/src/main/java/com/gkhy/web/controller/system/SysDeptController.java
index ddc1570..f567dce 100644
--- a/expert-admin/src/main/java/com/gkhy/web/controller/system/SysDeptController.java
+++ b/expert-admin/src/main/java/com/gkhy/web/controller/system/SysDeptController.java
@@ -1,32 +1,33 @@
 package com.gkhy.web.controller.system;
 
-import java.util.List;
-import org.apache.commons.lang3.ArrayUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import com.gkhy.common.annotation.Anonymous;
 import com.gkhy.common.annotation.Log;
 import com.gkhy.common.constant.UserConstants;
 import com.gkhy.common.core.controller.BaseController;
 import com.gkhy.common.core.domain.AjaxResult;
+import com.gkhy.common.core.domain.R;
 import com.gkhy.common.core.domain.entity.SysDept;
 import com.gkhy.common.enums.BusinessType;
 import com.gkhy.common.utils.StringUtils;
 import com.gkhy.system.service.ISysDeptService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.ArrayUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
 
 /**
  * 部门信息
  * 
  * @author expert
  */
+@Api(tags = "部门-业务处室")
 @RestController
 @RequestMapping("/system/dept")
 public class SysDeptController extends BaseController
@@ -39,10 +40,22 @@
      */
     @PreAuthorize("@ss.hasPermi('system:dept:list')")
     @GetMapping("/list")
-    public AjaxResult list(SysDept dept)
+    @ApiOperation(value = "获取部门列表")
+    public R<List<SysDept>> list(SysDept dept)
     {
         List<SysDept> depts = deptService.selectDeptList(dept);
-        return success(depts);
+        return R.ok(depts);
+    }
+
+
+    //    @PreAuthorize("@ss.hasPermi('system:dept:list')")
+    @GetMapping("/getOutDeptList")
+    @ApiOperation(value = "获取部门列表(公开)")
+    @Anonymous
+    public R<List<SysDept>> getOutDeptList(SysDept dept)
+    {
+        List<SysDept> depts = deptService.getOutDeptList(dept);
+        return R.ok(depts);
     }
 
     /**
@@ -50,11 +63,15 @@
      */
     @PreAuthorize("@ss.hasPermi('system:dept:list')")
     @GetMapping("/list/exclude/{deptId}")
-    public AjaxResult excludeChild(@PathVariable(value = "deptId", required = false) Long deptId)
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "query", name = "deptId", dataType = "Long", required = true, value = "部门id"),
+    })
+    @ApiOperation(value = "查询部门列表(排除节点)")
+    public R<List<SysDept>> excludeChild(@PathVariable(value = "deptId", required = false) Long deptId)
     {
         List<SysDept> depts = deptService.selectDeptList(new SysDept());
         depts.removeIf(d -> d.getDeptId().intValue() == deptId || ArrayUtils.contains(StringUtils.split(d.getAncestors(), ","), deptId + ""));
-        return success(depts);
+        return R.ok(depts);
     }
 
     /**
@@ -62,10 +79,14 @@
      */
     @PreAuthorize("@ss.hasPermi('system:dept:query')")
     @GetMapping(value = "/{deptId}")
-    public AjaxResult getInfo(@PathVariable Long deptId)
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "query", name = "deptId", dataType = "Long", required = true, value = "部门id"),
+    })
+    @ApiOperation(value = "根据部门编号获取详细信息")
+    public R<SysDept> getInfo(@PathVariable Long deptId)
     {
         deptService.checkDeptDataScope(deptId);
-        return success(deptService.selectDeptById(deptId));
+        return  R.ok(deptService.selectDeptById(deptId));
     }
 
     /**
@@ -73,7 +94,8 @@
      */
     @PreAuthorize("@ss.hasPermi('system:dept:add')")
     @Log(title = "部门管理", businessType = BusinessType.INSERT)
-    @PostMapping
+    @PostMapping("/add")
+    @ApiOperation(value = "新增部门业务处室")
     public AjaxResult add(@Validated @RequestBody SysDept dept)
     {
         if (!deptService.checkDeptNameUnique(dept))
@@ -89,6 +111,7 @@
      */
     @PreAuthorize("@ss.hasPermi('system:dept:edit')")
     @Log(title = "部门管理", businessType = BusinessType.UPDATE)
+    @ApiOperation(value = "修改部门门业务处室")
     @PutMapping
     public AjaxResult edit(@Validated @RequestBody SysDept dept)
     {
@@ -116,6 +139,7 @@
     @PreAuthorize("@ss.hasPermi('system:dept:remove')")
     @Log(title = "部门管理", businessType = BusinessType.DELETE)
     @DeleteMapping("/{deptId}")
+    @ApiOperation(value = "删除部门门业务处室")
     public AjaxResult remove(@PathVariable Long deptId)
     {
         if (deptService.hasChildByDeptId(deptId))
@@ -126,6 +150,7 @@
         {
             return warn("部门存在用户,不允许删除");
         }
+        //todo  校验专家是否申请复用
         deptService.checkDeptDataScope(deptId);
         return toAjax(deptService.deleteDeptById(deptId));
     }
diff --git a/expert-admin/src/main/java/com/gkhy/web/controller/system/SysIndexController.java b/expert-admin/src/main/java/com/gkhy/web/controller/system/SysIndexController.java
index 04d4e73..4df0c6d 100644
--- a/expert-admin/src/main/java/com/gkhy/web/controller/system/SysIndexController.java
+++ b/expert-admin/src/main/java/com/gkhy/web/controller/system/SysIndexController.java
@@ -1,9 +1,10 @@
 package com.gkhy.web.controller.system;
 
+import io.swagger.annotations.Api;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
-import com.gkhy.common.config.expertConfig;
+import com.gkhy.common.config.ExpertConfig;
 import com.gkhy.common.utils.StringUtils;
 
 /**
@@ -11,12 +12,13 @@
  *
  * @author expert
  */
+
 @RestController
 public class SysIndexController
 {
     /** 系统基础配置 */
     @Autowired
-    private expertConfig expertConfig;
+    private ExpertConfig expertConfig;
 
     /**
      * 访问首页,提示语
diff --git a/expert-admin/src/main/java/com/gkhy/web/controller/system/SysLoginController.java b/expert-admin/src/main/java/com/gkhy/web/controller/system/SysLoginController.java
index 4d315a0..23e8b27 100644
--- a/expert-admin/src/main/java/com/gkhy/web/controller/system/SysLoginController.java
+++ b/expert-admin/src/main/java/com/gkhy/web/controller/system/SysLoginController.java
@@ -2,6 +2,9 @@
 
 import java.util.List;
 import java.util.Set;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -24,6 +27,7 @@
  * 
  * @author expert
  */
+@Api(value = "登录管理", tags = "登录管理")
 @RestController
 public class SysLoginController
 {
@@ -46,6 +50,7 @@
      * @return 结果
      */
     @PostMapping("/login")
+    @ApiOperation("登录")
     public AjaxResult login(@RequestBody LoginBody loginBody)
     {
         AjaxResult ajax = AjaxResult.success();
@@ -62,6 +67,7 @@
      * @return 用户信息
      */
     @GetMapping("getInfo")
+    @ApiOperation("获取用户信息")
     public AjaxResult getInfo()
     {
         LoginUser loginUser = SecurityUtils.getLoginUser();
@@ -88,6 +94,7 @@
      * @return 路由信息
      */
     @GetMapping("getRouters")
+    @ApiOperation("获取路由信息")
     public AjaxResult getRouters()
     {
         Long userId = SecurityUtils.getUserId();
diff --git a/expert-admin/src/main/java/com/gkhy/web/controller/system/SysProfileController.java b/expert-admin/src/main/java/com/gkhy/web/controller/system/SysProfileController.java
index c1f8d01..b7fd121 100644
--- a/expert-admin/src/main/java/com/gkhy/web/controller/system/SysProfileController.java
+++ b/expert-admin/src/main/java/com/gkhy/web/controller/system/SysProfileController.java
@@ -10,7 +10,7 @@
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
 import com.gkhy.common.annotation.Log;
-import com.gkhy.common.config.expertConfig;
+import com.gkhy.common.config.ExpertConfig;
 import com.gkhy.common.core.controller.BaseController;
 import com.gkhy.common.core.domain.AjaxResult;
 import com.gkhy.common.core.domain.entity.SysUser;
@@ -121,7 +121,7 @@
         if (!file.isEmpty())
         {
             LoginUser loginUser = getLoginUser();
-            String avatar = FileUploadUtils.upload(expertConfig.getAvatarPath(), file, MimeTypeUtils.IMAGE_EXTENSION);
+            String avatar = FileUploadUtils.upload(ExpertConfig.getAvatarPath(), file, MimeTypeUtils.IMAGE_EXTENSION);
             if (userService.updateUserAvatar(loginUser.getUsername(), avatar))
             {
                 AjaxResult ajax = AjaxResult.success();
diff --git a/expert-admin/src/main/java/com/gkhy/web/controller/system/SysRegisterController.java b/expert-admin/src/main/java/com/gkhy/web/controller/system/SysRegisterController.java
index 184e0ba..ad86f86 100644
--- a/expert-admin/src/main/java/com/gkhy/web/controller/system/SysRegisterController.java
+++ b/expert-admin/src/main/java/com/gkhy/web/controller/system/SysRegisterController.java
@@ -1,38 +1,38 @@
-package com.gkhy.web.controller.system;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RestController;
-import com.gkhy.common.core.controller.BaseController;
-import com.gkhy.common.core.domain.AjaxResult;
-import com.gkhy.common.core.domain.model.RegisterBody;
-import com.gkhy.common.utils.StringUtils;
-import com.gkhy.framework.web.service.SysRegisterService;
-import com.gkhy.system.service.ISysConfigService;
-
-/**
- * 注册验证
- * 
- * @author expert
- */
-@RestController
-public class SysRegisterController extends BaseController
-{
-    @Autowired
-    private SysRegisterService registerService;
-
-    @Autowired
-    private ISysConfigService configService;
-
-    @PostMapping("/register")
-    public AjaxResult register(@RequestBody RegisterBody user)
-    {
-        if (!("true".equals(configService.selectConfigByKey("sys.account.registerUser"))))
-        {
-            return error("当前系统没有开启注册功能!");
-        }
-        String msg = registerService.register(user);
-        return StringUtils.isEmpty(msg) ? success() : error(msg);
-    }
-}
+//package com.gkhy.web.controller.system;
+//
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.web.bind.annotation.PostMapping;
+//import org.springframework.web.bind.annotation.RequestBody;
+//import org.springframework.web.bind.annotation.RestController;
+//import com.gkhy.common.core.controller.BaseController;
+//import com.gkhy.common.core.domain.AjaxResult;
+//import com.gkhy.common.core.domain.model.RegisterBody;
+//import com.gkhy.common.utils.StringUtils;
+//import com.gkhy.framework.web.service.SysRegisterService;
+//import com.gkhy.system.service.ISysConfigService;
+//
+///**
+// * 注册验证
+// *
+// * @author expert
+// */
+//@RestController
+//public class SysRegisterController extends BaseController
+//{
+//    @Autowired
+//    private SysRegisterService registerService;
+//
+//    @Autowired
+//    private ISysConfigService configService;
+//
+//    @PostMapping("/register")
+//    public AjaxResult register(@RequestBody RegisterBody user)
+//    {
+//        if (!("true".equals(configService.selectConfigByKey("sys.account.registerUser"))))
+//        {
+//            return error("当前系统没有开启注册功能!");
+//        }
+//        String msg = registerService.register(user);
+//        return StringUtils.isEmpty(msg) ? success() : error(msg);
+//    }
+//}
diff --git a/expert-admin/src/main/java/com/gkhy/web/controller/system/SysSettingsController.java b/expert-admin/src/main/java/com/gkhy/web/controller/system/SysSettingsController.java
index ea8d9f2..74c206b 100644
--- a/expert-admin/src/main/java/com/gkhy/web/controller/system/SysSettingsController.java
+++ b/expert-admin/src/main/java/com/gkhy/web/controller/system/SysSettingsController.java
@@ -1,25 +1,24 @@
-package com.gkhy.system.controller;
+package com.gkhy.web.controller.system;
 
-import java.util.List;
-import javax.servlet.http.HttpServletResponse;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import com.gkhy.common.annotation.Log;
+import com.gkhy.common.annotation.Anonymous;
+import com.gkhy.common.annotation.RepeatSubmit;
 import com.gkhy.common.core.controller.BaseController;
 import com.gkhy.common.core.domain.AjaxResult;
-import com.gkhy.common.enums.BusinessType;
-import com.gkhy.system.domain.SysSettings;
-import com.gkhy.system.service.ISysSettingsService;
-import com.gkhy.common.utils.poi.ExcelUtil;
+import com.gkhy.common.core.domain.R;
 import com.gkhy.common.core.page.TableDataInfo;
+import com.gkhy.system.domain.ApplyRecord;
+import com.gkhy.system.service.ISysSettingsService;
+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.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
 
 /**
  * 系统配置Controller
@@ -29,76 +28,46 @@
  */
 @RestController
 @RequestMapping("/system/settings")
+@Api(tags = "专家申请系统设置-前端控制器")
 public class SysSettingsController extends BaseController
 {
     @Autowired
     private ISysSettingsService sysSettingsService;
-
-    /**
-     * 查询系统配置列表
-     */
-    @PreAuthorize("@ss.hasPermi('system:settings:list')")
-    @GetMapping("/list")
-    public TableDataInfo list(SysSettings sysSettings)
-    {
-        startPage();
-        List<SysSettings> list = sysSettingsService.selectSysSettingsList(sysSettings);
-        return getDataTable(list);
-    }
-
-    /**
-     * 导出系统配置列表
-     */
-    @PreAuthorize("@ss.hasPermi('system:settings:export')")
-    @Log(title = "系统配置", businessType = BusinessType.EXPORT)
-    @PostMapping("/export")
-    public void export(HttpServletResponse response, SysSettings sysSettings)
-    {
-        List<SysSettings> list = sysSettingsService.selectSysSettingsList(sysSettings);
-        ExcelUtil<SysSettings> util = new ExcelUtil<SysSettings>(SysSettings.class);
-        util.exportExcel(response, list, "系统配置数据");
-    }
-
     /**
      * 获取系统配置详细信息
      */
-    @PreAuthorize("@ss.hasPermi('system:settings:query')")
-    @GetMapping(value = "/{state}")
-    public AjaxResult getInfo(@PathVariable("state") String state)
+    @GetMapping(value = "/getSettings")
+    @RepeatSubmit
+    @ApiOperation(value = "获取是否开启1开启2关闭")
+    @Anonymous
+    public R<String> getSettings()
     {
-        return success(sysSettingsService.selectSysSettingsByState(state));
-    }
-
-    /**
-     * 新增系统配置
-     */
-    @PreAuthorize("@ss.hasPermi('system:settings:add')")
-    @Log(title = "系统配置", businessType = BusinessType.INSERT)
-    @PostMapping
-    public AjaxResult add(@RequestBody SysSettings sysSettings)
-    {
-        return toAjax(sysSettingsService.insertSysSettings(sysSettings));
+        return R.ok(sysSettingsService.selectSysSettings());
     }
 
     /**
      * 修改系统配置
      */
     @PreAuthorize("@ss.hasPermi('system:settings:edit')")
-    @Log(title = "系统配置", businessType = BusinessType.UPDATE)
-    @PutMapping
-    public AjaxResult edit(@RequestBody SysSettings sysSettings)
+    @GetMapping("/updateSettings")
+    @RepeatSubmit
+    @ApiOperation(value = "专家申请系统设置开关")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "query", name = "sysSettings", dataType = "String", required = false, value = "1开启2关闭")
+    })
+    public AjaxResult updateSettings(String sysSettings)
     {
         return toAjax(sysSettingsService.updateSysSettings(sysSettings));
     }
 
-    /**
-     * 删除系统配置
-     */
-    @PreAuthorize("@ss.hasPermi('system:settings:remove')")
-    @Log(title = "系统配置", businessType = BusinessType.DELETE)
-	@DeleteMapping("/{states}")
-    public AjaxResult remove(@PathVariable String[] states)
-    {
-        return toAjax(sysSettingsService.deleteSysSettingsByStates(states));
+    @PreAuthorize("@ss.hasPermi('system:record:list')")
+    @GetMapping("/applyList")
+    @ApiOperation(value = "专家申请系统设置记录")
+    public TableDataInfo applyList() {
+        startPage();
+        List<ApplyRecord> list = sysSettingsService.selectApplyRecordList();
+        return getDataTable(list);
     }
+
+
 }
diff --git a/expert-admin/src/main/java/com/gkhy/web/core/config/SwaggerConfig.java b/expert-admin/src/main/java/com/gkhy/web/core/config/SwaggerConfig.java
index 36271c0..d99c6ef 100644
--- a/expert-admin/src/main/java/com/gkhy/web/core/config/SwaggerConfig.java
+++ b/expert-admin/src/main/java/com/gkhy/web/core/config/SwaggerConfig.java
@@ -6,7 +6,7 @@
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
-import com.gkhy.common.config.expertConfig;
+import com.gkhy.common.config.ExpertConfig;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.models.auth.In;
 import springfox.documentation.builders.ApiInfoBuilder;
@@ -32,7 +32,7 @@
 {
     /** 系统基础配置 */
     @Autowired
-    private expertConfig expertConfig;
+    private ExpertConfig expertConfig;
 
     /** 是否开启swagger */
     @Value("${swagger.enabled}")
@@ -113,7 +113,7 @@
         // 用ApiInfoBuilder进行定制
         return new ApiInfoBuilder()
                 // 设置标题
-                .title("标题:若依管理系统_接口文档")
+                .title("标题:专家管理系统_接口文档")
                 // 描述
                 .description("描述:用于管理集团旗下公司的人员信息,具体包括XXX,XXX模块...")
                 // 作者信息
diff --git a/expert-admin/src/main/resources/application-druid.yml b/expert-admin/src/main/resources/application-druid.yml
index 1f1d605..cf564bf 100644
--- a/expert-admin/src/main/resources/application-druid.yml
+++ b/expert-admin/src/main/resources/application-druid.yml
@@ -6,9 +6,9 @@
         druid:
             # 主库数据源
             master:
-                url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+                url: jdbc:mysql://localhost:3306/expert_management?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&allowMultiQueries=true
                 username: root
-                password: password
+                password: 123456
             # 从库数据源
             slave:
                 # 从数据源开关/默认关闭
diff --git a/expert-admin/src/main/resources/application.yml b/expert-admin/src/main/resources/application.yml
index 2ea29cf..3758b01 100644
--- a/expert-admin/src/main/resources/application.yml
+++ b/expert-admin/src/main/resources/application.yml
@@ -3,7 +3,7 @@
   # 名称
   name: expert
   # 版本
-  version: 3.8.8
+  version: 1.0.0
   # 版权年份
   copyrightYear: 2024
   # 文件路径 示例( Windows配置D:/expert/uploadPath,Linux配置 /home/expert/uploadPath)
@@ -16,7 +16,7 @@
 # 开发环境配置
 server:
   # 服务器的HTTP端口,默认为8080
-  port: 8080
+  port: 8585
   servlet:
     # 应用的访问路径
     context-path: /
@@ -74,7 +74,7 @@
     # 数据库索引
     database: 0
     # 密码
-    password:
+    #password:
     # 连接超时时间
     timeout: 10s
     lettuce:
@@ -97,14 +97,56 @@
   # 令牌有效期(默认30分钟)
   expireTime: 30
 
-# MyBatis配置
-mybatis:
+## MyBatis配置
+#mybatis:
+#  # 搜索指定包别名
+#  typeAliasesPackage: com.gkhy.**.domain
+#  # 配置mapper的扫描,找到所有的mapper.xml映射文件
+#  mapperLocations: classpath*:mapper/**/*Mapper.xml
+#  # 加载全局的配置文件
+#  configLocation: classpath:mybatis/mybatis-config.xml
+
+
+# mybatis-plus相关配置
+# MyBatis Plus配置
+mybatis-plus:
   # 搜索指定包别名
   typeAliasesPackage: com.gkhy.**.domain
   # 配置mapper的扫描,找到所有的mapper.xml映射文件
   mapperLocations: classpath*:mapper/**/*Mapper.xml
-  # 加载全局的配置文件
-  configLocation: classpath:mybatis/mybatis-config.xml
+  global-config:
+    db-config:
+      #主键类型 AUTO:"数据库ID自增" INPUT:"用户输入ID",ID_WORKER:"全局唯一ID (数字类型唯一ID)", UUID:"全局唯一ID UUID";
+      id-type: auto
+      #字段策略 IGNORED:"忽略判断"  NOT_NULL:"非 NULL 判断")  NOT_EMPTY:"非空判断"
+      field-strategy: NOT_EMPTY
+      #数据库类型
+      db-type: MYSQL
+  configuration:
+    # 是否开启自动驼峰命名规则映射:从数据库列名到Java属性驼峰命名的类似映射
+    map-underscore-to-camel-case: true
+    # 如果查询结果中包含空值的列,则 MyBatis 在映射的时候,不会映射这个字段
+    call-setters-on-nulls: true
+#mybatis-plus:
+#  # 搜索指定包别名
+#  typeAliasesPackage: com.gkhy.**.domain
+#  # xml扫描,多个目录用逗号或者分号分隔(告诉 Mapper 所对应的 XML 文件位置)
+#  mapper-locations: classpath*:mapper/**/*Mapper.xml
+#  configLocation: classpath:mybatis/mybatis-config.xml
+#  # 以下配置均有默认值,可以不设置
+#  global-config:
+#    db-config:
+#      #主键类型 AUTO:"数据库ID自增" INPUT:"用户输入ID",ID_WORKER:"全局唯一ID (数字类型唯一ID)", UUID:"全局唯一ID UUID";
+#      id-type: auto
+#      #字段策略 IGNORED:"忽略判断"  NOT_NULL:"非 NULL 判断")  NOT_EMPTY:"非空判断"
+#      field-strategy: NOT_EMPTY
+#      #数据库类型
+#      db-type: MYSQL
+#  configuration:
+#    # 是否开启自动驼峰命名规则映射:从数据库列名到Java属性驼峰命名的类似映射
+#    map-underscore-to-camel-case: true
+#    # 如果查询结果中包含空值的列,则 MyBatis 在映射的时候,不会映射这个字段
+#    call-setters-on-nulls: true
 
 # PageHelper分页插件
 pagehelper:
@@ -117,7 +159,7 @@
   # 是否开启swagger
   enabled: true
   # 请求前缀
-  pathMapping: /dev-api
+  pathMapping: /
 
 # 防止XSS攻击
 xss:
diff --git a/expert-admin/src/main/resources/banner.txt b/expert-admin/src/main/resources/banner.txt
index 423184f..ee26529 100644
--- a/expert-admin/src/main/resources/banner.txt
+++ b/expert-admin/src/main/resources/banner.txt
@@ -1,24 +1,2 @@
 Application Version: ${expert.version}
 Spring Boot Version: ${spring-boot.version}
-////////////////////////////////////////////////////////////////////
-//                          _ooOoo_                               //
-//                         o8888888o                              //
-//                         88" . "88                              //
-//                         (| ^_^ |)                              //
-//                         O\  =  /O                              //
-//                      ____/`---'\____                           //
-//                    .'  \\|     |//  `.                         //
-//                   /  \\|||  :  |||//  \                        //
-//                  /  _||||| -:- |||||-  \                       //
-//                  |   | \\\  -  /// |   |                       //
-//                  | \_|  ''\---/''  |   |                       //
-//                  \  .-\__  `-`  ___/-. /                       //
-//                ___`. .'  /--.--\  `. . ___                     //
-//              ."" '<  `.___\_<|>_/___.'  >'"".                  //
-//            | | :  `- \`.;`\ _ /`;.`/ - ` : | |                 //
-//            \  \ `-.   \_ __\ /__ _/   .-` /  /                 //
-//      ========`-.____`-.___\_____/___.-`____.-'========         //
-//                           `=---='                              //
-//      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^        //
-//             佛祖保佑       永不宕机      永无BUG               //
-////////////////////////////////////////////////////////////////////
\ No newline at end of file
diff --git a/expert-common/pom.xml b/expert-common/pom.xml
index 9e49581..696bece 100644
--- a/expert-common/pom.xml
+++ b/expert-common/pom.xml
@@ -46,7 +46,19 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-validation</artifactId>
         </dependency>
-
+        <!--mybatis-plus-->
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-generator</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-all</artifactId>
+        </dependency>
         <!--常用工具类 -->
         <dependency>
             <groupId>org.apache.commons</groupId>
@@ -118,6 +130,12 @@
             <groupId>javax.servlet</groupId>
             <artifactId>javax.servlet-api</artifactId>
         </dependency>
+        <dependency>
+            <groupId>io.swagger</groupId>
+            <artifactId>swagger-annotations</artifactId>
+            <version>1.6.2</version>
+            <scope>compile</scope>
+        </dependency>
 
     </dependencies>
 
diff --git a/expert-common/src/main/java/com/gkhy/common/config/ExpertConfig.java b/expert-common/src/main/java/com/gkhy/common/config/ExpertConfig.java
index cce1c80..d013d41 100644
--- a/expert-common/src/main/java/com/gkhy/common/config/ExpertConfig.java
+++ b/expert-common/src/main/java/com/gkhy/common/config/ExpertConfig.java
@@ -10,7 +10,7 @@
  */
 @Component
 @ConfigurationProperties(prefix = "expert")
-public class expertConfig
+public class ExpertConfig
 {
     /** 项目名称 */
     private String name;
@@ -67,7 +67,7 @@
 
     public void setProfile(String profile)
     {
-        expertConfig.profile = profile;
+        ExpertConfig.profile = profile;
     }
 
     public static boolean isAddressEnabled()
@@ -77,7 +77,7 @@
 
     public void setAddressEnabled(boolean addressEnabled)
     {
-        expertConfig.addressEnabled = addressEnabled;
+        ExpertConfig.addressEnabled = addressEnabled;
     }
 
     public static String getCaptchaType() {
@@ -85,7 +85,7 @@
     }
 
     public void setCaptchaType(String captchaType) {
-        expertConfig.captchaType = captchaType;
+        ExpertConfig.captchaType = captchaType;
     }
 
     /**
diff --git a/expert-common/src/main/java/com/gkhy/common/core/domain/BaseEntity.java b/expert-common/src/main/java/com/gkhy/common/core/domain/BaseEntity.java
index f80734c..da69756 100644
--- a/expert-common/src/main/java/com/gkhy/common/core/domain/BaseEntity.java
+++ b/expert-common/src/main/java/com/gkhy/common/core/domain/BaseEntity.java
@@ -1,12 +1,14 @@
 package com.gkhy.common.core.domain;
 
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+
 import java.io.Serializable;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonInclude;
 
 /**
  * Entity基类
@@ -19,6 +21,7 @@
 
     /** 搜索值 */
     @JsonIgnore
+    @TableField(exist = false)
     private String searchValue;
 
     /** 创建者 */
@@ -40,6 +43,7 @@
 
     /** 请求参数 */
     @JsonInclude(JsonInclude.Include.NON_EMPTY)
+    @TableField(exist = false)
     private Map<String, Object> params;
 
     public String getSearchValue()
diff --git a/expert-common/src/main/java/com/gkhy/common/core/domain/entity/SysDept.java b/expert-common/src/main/java/com/gkhy/common/core/domain/entity/SysDept.java
index d912709..2d4670d 100644
--- a/expert-common/src/main/java/com/gkhy/common/core/domain/entity/SysDept.java
+++ b/expert-common/src/main/java/com/gkhy/common/core/domain/entity/SysDept.java
@@ -1,40 +1,51 @@
 package com.gkhy.common.core.domain.entity;
 
-import java.util.ArrayList;
-import java.util.List;
+import com.gkhy.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
 import javax.validation.constraints.Email;
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 import javax.validation.constraints.Size;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-import com.gkhy.common.core.domain.BaseEntity;
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * 部门表 sys_dept
  * 
  * @author expert
  */
+@ApiModel(value = "SysDept对象", description = "部门业务处室")
 public class SysDept extends BaseEntity
 {
     private static final long serialVersionUID = 1L;
 
     /** 部门ID */
+    @ApiModelProperty("主键")
     private Long deptId;
 
     /** 父部门ID */
+    @ApiModelProperty("父部门ID")
     private Long parentId;
 
     /** 祖级列表 */
+    @ApiModelProperty("祖级列表")
     private String ancestors;
 
     /** 部门名称 */
+    @ApiModelProperty("部门名称")
+    @NotBlank(message ="部门名称不能为空" )
     private String deptName;
 
     /** 显示顺序 */
+    @ApiModelProperty("显示顺序")
     private Integer orderNum;
 
     /** 负责人 */
+    @ApiModelProperty("负责人")
     private String leader;
 
     /** 联系电话 */
@@ -44,12 +55,14 @@
     private String email;
 
     /** 部门状态:0正常,1停用 */
+    @ApiModelProperty("部门状态:0正常,1停用")
     private String status;
 
     /** 删除标志(0代表存在 2代表删除) */
     private String delFlag;
 
     /** 父部门名称 */
+    @ApiModelProperty("父部门名称")
     private String parentName;
     
     /** 子部门 */
diff --git a/expert-common/src/main/java/com/gkhy/common/core/domain/model/LoginBody.java b/expert-common/src/main/java/com/gkhy/common/core/domain/model/LoginBody.java
index a05d765..28d9065 100644
--- a/expert-common/src/main/java/com/gkhy/common/core/domain/model/LoginBody.java
+++ b/expert-common/src/main/java/com/gkhy/common/core/domain/model/LoginBody.java
@@ -1,10 +1,13 @@
 package com.gkhy.common.core.domain.model;
 
+import io.swagger.annotations.ApiModel;
+
 /**
  * 用户登录对象
  * 
  * @author expert
  */
+@ApiModel(value = "LoginBody", description = "登录实体")
 public class LoginBody
 {
     /**
diff --git a/expert-common/src/main/java/com/gkhy/common/enums/DeleteFlagEnum.java b/expert-common/src/main/java/com/gkhy/common/enums/DeleteFlagEnum.java
index efe694b..9ea5548 100644
--- a/expert-common/src/main/java/com/gkhy/common/enums/DeleteFlagEnum.java
+++ b/expert-common/src/main/java/com/gkhy/common/enums/DeleteFlagEnum.java
@@ -1,4 +1,4 @@
-package com.gkhy.assess.common.enums;
+package com.gkhy.common.enums;
 
 /**
  * 删除状态
diff --git a/expert-common/src/main/java/com/gkhy/common/enums/OpenFlagEnum.java b/expert-common/src/main/java/com/gkhy/common/enums/OpenFlagEnum.java
index 9ea5548..4c69cf3 100644
--- a/expert-common/src/main/java/com/gkhy/common/enums/OpenFlagEnum.java
+++ b/expert-common/src/main/java/com/gkhy/common/enums/OpenFlagEnum.java
@@ -4,20 +4,20 @@
  * 删除状态
  *
  */
-public enum DeleteFlagEnum
+public enum OpenFlagEnum
 {
-    UN_DELETE(0, "未删除"), DELETED(1, "已删除");
+    OPEN("1", "开启"), CLOSE("2", "关闭");
 
-    private final Integer code;
+    private final String code;
     private final String info;
 
-    DeleteFlagEnum(Integer code, String info)
+    OpenFlagEnum(String code, String info)
     {
         this.code = code;
         this.info = info;
     }
 
-    public Integer getCode()
+    public String getCode()
     {
         return code;
     }
diff --git a/expert-common/src/main/java/com/gkhy/common/utils/file/FileUploadUtils.java b/expert-common/src/main/java/com/gkhy/common/utils/file/FileUploadUtils.java
index 9c3154e..c4b7ab1 100644
--- a/expert-common/src/main/java/com/gkhy/common/utils/file/FileUploadUtils.java
+++ b/expert-common/src/main/java/com/gkhy/common/utils/file/FileUploadUtils.java
@@ -6,7 +6,7 @@
 import java.util.Objects;
 import org.apache.commons.io.FilenameUtils;
 import org.springframework.web.multipart.MultipartFile;
-import com.gkhy.common.config.expertConfig;
+import com.gkhy.common.config.ExpertConfig;
 import com.gkhy.common.constant.Constants;
 import com.gkhy.common.exception.file.FileNameLengthLimitExceededException;
 import com.gkhy.common.exception.file.FileSizeLimitExceededException;
@@ -35,7 +35,7 @@
     /**
      * 默认上传的地址
      */
-    private static String defaultBaseDir = expertConfig.getProfile();
+    private static String defaultBaseDir = ExpertConfig.getProfile();
 
     public static void setDefaultBaseDir(String defaultBaseDir)
     {
@@ -142,7 +142,7 @@
 
     public static final String getPathFileName(String uploadDir, String fileName) throws IOException
     {
-        int dirLastIndex = expertConfig.getProfile().length() + 1;
+        int dirLastIndex = ExpertConfig.getProfile().length() + 1;
         String currentDir = StringUtils.substring(uploadDir, dirLastIndex);
         return Constants.RESOURCE_PREFIX + "/" + currentDir + "/" + fileName;
     }
diff --git a/expert-common/src/main/java/com/gkhy/common/utils/file/FileUtils.java b/expert-common/src/main/java/com/gkhy/common/utils/file/FileUtils.java
index 207967e..cc7a36a 100644
--- a/expert-common/src/main/java/com/gkhy/common/utils/file/FileUtils.java
+++ b/expert-common/src/main/java/com/gkhy/common/utils/file/FileUtils.java
@@ -13,7 +13,7 @@
 import javax.servlet.http.HttpServletResponse;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.ArrayUtils;
-import com.gkhy.common.config.expertConfig;
+import com.gkhy.common.config.ExpertConfig;
 import com.gkhy.common.utils.DateUtils;
 import com.gkhy.common.utils.StringUtils;
 import com.gkhy.common.utils.uuid.IdUtils;
@@ -73,7 +73,7 @@
      */
     public static String writeImportBytes(byte[] data) throws IOException
     {
-        return writeBytes(data, expertConfig.getImportPath());
+        return writeBytes(data, ExpertConfig.getImportPath());
     }
 
     /**
diff --git a/expert-common/src/main/java/com/gkhy/common/utils/file/ImageUtils.java b/expert-common/src/main/java/com/gkhy/common/utils/file/ImageUtils.java
index bf8189a..3790a76 100644
--- a/expert-common/src/main/java/com/gkhy/common/utils/file/ImageUtils.java
+++ b/expert-common/src/main/java/com/gkhy/common/utils/file/ImageUtils.java
@@ -9,7 +9,7 @@
 import org.apache.poi.util.IOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import com.gkhy.common.config.expertConfig;
+import com.gkhy.common.config.ExpertConfig;
 import com.gkhy.common.constant.Constants;
 import com.gkhy.common.utils.StringUtils;
 
@@ -79,7 +79,7 @@
             else
             {
                 // 本机地址
-                String localPath = expertConfig.getProfile();
+                String localPath = ExpertConfig.getProfile();
                 String downloadPath = localPath + StringUtils.substringAfter(url, Constants.RESOURCE_PREFIX);
                 in = new FileInputStream(downloadPath);
             }
diff --git a/expert-common/src/main/java/com/gkhy/common/utils/ip/AddressUtils.java b/expert-common/src/main/java/com/gkhy/common/utils/ip/AddressUtils.java
index 3bf48b9..c185a73 100644
--- a/expert-common/src/main/java/com/gkhy/common/utils/ip/AddressUtils.java
+++ b/expert-common/src/main/java/com/gkhy/common/utils/ip/AddressUtils.java
@@ -4,7 +4,7 @@
 import org.slf4j.LoggerFactory;
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
-import com.gkhy.common.config.expertConfig;
+import com.gkhy.common.config.ExpertConfig;
 import com.gkhy.common.constant.Constants;
 import com.gkhy.common.utils.StringUtils;
 import com.gkhy.common.utils.http.HttpUtils;
@@ -31,7 +31,7 @@
         {
             return "内网IP";
         }
-        if (expertConfig.isAddressEnabled())
+        if (ExpertConfig.isAddressEnabled())
         {
             try
             {
diff --git a/expert-common/src/main/java/com/gkhy/common/utils/poi/ExcelUtil.java b/expert-common/src/main/java/com/gkhy/common/utils/poi/ExcelUtil.java
index a357806..fd9e405 100644
--- a/expert-common/src/main/java/com/gkhy/common/utils/poi/ExcelUtil.java
+++ b/expert-common/src/main/java/com/gkhy/common/utils/poi/ExcelUtil.java
@@ -74,7 +74,7 @@
 import com.gkhy.common.annotation.Excel.ColumnType;
 import com.gkhy.common.annotation.Excel.Type;
 import com.gkhy.common.annotation.Excels;
-import com.gkhy.common.config.expertConfig;
+import com.gkhy.common.config.ExpertConfig;
 import com.gkhy.common.core.domain.AjaxResult;
 import com.gkhy.common.core.text.Convert;
 import com.gkhy.common.exception.UtilException;
@@ -1423,7 +1423,7 @@
      */
     public String getAbsoluteFile(String filename)
     {
-        String downloadPath = expertConfig.getDownloadPath() + filename;
+        String downloadPath = ExpertConfig.getDownloadPath() + filename;
         File desc = new File(downloadPath);
         if (!desc.getParentFile().exists())
         {
diff --git a/expert-framework/src/main/java/com/gkhy/framework/config/MyBatisConfig.java b/expert-framework/src/main/java/com/gkhy/framework/config/MyBatisConfig.java
index 0e21c0f..2c3a807 100644
--- a/expert-framework/src/main/java/com/gkhy/framework/config/MyBatisConfig.java
+++ b/expert-framework/src/main/java/com/gkhy/framework/config/MyBatisConfig.java
@@ -1,132 +1,132 @@
-package com.gkhy.framework.config;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import javax.sql.DataSource;
-import org.apache.ibatis.io.VFS;
-import org.apache.ibatis.session.SqlSessionFactory;
-import org.mybatis.spring.SqlSessionFactoryBean;
-import org.mybatis.spring.boot.autoconfigure.SpringBootVFS;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.core.env.Environment;
-import org.springframework.core.io.DefaultResourceLoader;
-import org.springframework.core.io.Resource;
-import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
-import org.springframework.core.io.support.ResourcePatternResolver;
-import org.springframework.core.type.classreading.CachingMetadataReaderFactory;
-import org.springframework.core.type.classreading.MetadataReader;
-import org.springframework.core.type.classreading.MetadataReaderFactory;
-import org.springframework.util.ClassUtils;
-import com.gkhy.common.utils.StringUtils;
-
-/**
- * Mybatis支持*匹配扫描包
- * 
- * @author expert
- */
-@Configuration
-public class MyBatisConfig
-{
-    @Autowired
-    private Environment env;
-
-    static final String DEFAULT_RESOURCE_PATTERN = "**/*.class";
-
-    public static String setTypeAliasesPackage(String typeAliasesPackage)
-    {
-        ResourcePatternResolver resolver = (ResourcePatternResolver) new PathMatchingResourcePatternResolver();
-        MetadataReaderFactory metadataReaderFactory = new CachingMetadataReaderFactory(resolver);
-        List<String> allResult = new ArrayList<String>();
-        try
-        {
-            for (String aliasesPackage : typeAliasesPackage.split(","))
-            {
-                List<String> result = new ArrayList<String>();
-                aliasesPackage = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX
-                        + ClassUtils.convertClassNameToResourcePath(aliasesPackage.trim()) + "/" + DEFAULT_RESOURCE_PATTERN;
-                Resource[] resources = resolver.getResources(aliasesPackage);
-                if (resources != null && resources.length > 0)
-                {
-                    MetadataReader metadataReader = null;
-                    for (Resource resource : resources)
-                    {
-                        if (resource.isReadable())
-                        {
-                            metadataReader = metadataReaderFactory.getMetadataReader(resource);
-                            try
-                            {
-                                result.add(Class.forName(metadataReader.getClassMetadata().getClassName()).getPackage().getName());
-                            }
-                            catch (ClassNotFoundException e)
-                            {
-                                e.printStackTrace();
-                            }
-                        }
-                    }
-                }
-                if (result.size() > 0)
-                {
-                    HashSet<String> hashResult = new HashSet<String>(result);
-                    allResult.addAll(hashResult);
-                }
-            }
-            if (allResult.size() > 0)
-            {
-                typeAliasesPackage = String.join(",", (String[]) allResult.toArray(new String[0]));
-            }
-            else
-            {
-                throw new RuntimeException("mybatis typeAliasesPackage 路径扫描错误,参数typeAliasesPackage:" + typeAliasesPackage + "未找到任何包");
-            }
-        }
-        catch (IOException e)
-        {
-            e.printStackTrace();
-        }
-        return typeAliasesPackage;
-    }
-
-    public Resource[] resolveMapperLocations(String[] mapperLocations)
-    {
-        ResourcePatternResolver resourceResolver = new PathMatchingResourcePatternResolver();
-        List<Resource> resources = new ArrayList<Resource>();
-        if (mapperLocations != null)
-        {
-            for (String mapperLocation : mapperLocations)
-            {
-                try
-                {
-                    Resource[] mappers = resourceResolver.getResources(mapperLocation);
-                    resources.addAll(Arrays.asList(mappers));
-                }
-                catch (IOException e)
-                {
-                    // ignore
-                }
-            }
-        }
-        return resources.toArray(new Resource[resources.size()]);
-    }
-
-    @Bean
-    public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception
-    {
-        String typeAliasesPackage = env.getProperty("mybatis.typeAliasesPackage");
-        String mapperLocations = env.getProperty("mybatis.mapperLocations");
-        String configLocation = env.getProperty("mybatis.configLocation");
-        typeAliasesPackage = setTypeAliasesPackage(typeAliasesPackage);
-        VFS.addImplClass(SpringBootVFS.class);
-
-        final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
-        sessionFactory.setDataSource(dataSource);
-        sessionFactory.setTypeAliasesPackage(typeAliasesPackage);
-        sessionFactory.setMapperLocations(resolveMapperLocations(StringUtils.split(mapperLocations, ",")));
-        sessionFactory.setConfigLocation(new DefaultResourceLoader().getResource(configLocation));
-        return sessionFactory.getObject();
-    }
-}
\ No newline at end of file
+//package com.gkhy.framework.config;
+//
+//import java.io.IOException;
+//import java.util.ArrayList;
+//import java.util.Arrays;
+//import java.util.HashSet;
+//import java.util.List;
+//import javax.sql.DataSource;
+//import org.apache.ibatis.io.VFS;
+//import org.apache.ibatis.session.SqlSessionFactory;
+//import org.mybatis.spring.SqlSessionFactoryBean;
+//import org.mybatis.spring.boot.autoconfigure.SpringBootVFS;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.context.annotation.Bean;
+//import org.springframework.context.annotation.Configuration;
+//import org.springframework.core.env.Environment;
+//import org.springframework.core.io.DefaultResourceLoader;
+//import org.springframework.core.io.Resource;
+//import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
+//import org.springframework.core.io.support.ResourcePatternResolver;
+//import org.springframework.core.type.classreading.CachingMetadataReaderFactory;
+//import org.springframework.core.type.classreading.MetadataReader;
+//import org.springframework.core.type.classreading.MetadataReaderFactory;
+//import org.springframework.util.ClassUtils;
+//import com.gkhy.common.utils.StringUtils;
+//
+///**
+// * Mybatis支持*匹配扫描包
+// *
+// * @author expert
+// */
+//@Configuration
+//public class MyBatisConfig
+//{
+//    @Autowired
+//    private Environment env;
+//
+//    static final String DEFAULT_RESOURCE_PATTERN = "**/*.class";
+//
+//    public static String setTypeAliasesPackage(String typeAliasesPackage)
+//    {
+//        ResourcePatternResolver resolver = (ResourcePatternResolver) new PathMatchingResourcePatternResolver();
+//        MetadataReaderFactory metadataReaderFactory = new CachingMetadataReaderFactory(resolver);
+//        List<String> allResult = new ArrayList<String>();
+//        try
+//        {
+//            for (String aliasesPackage : typeAliasesPackage.split(","))
+//            {
+//                List<String> result = new ArrayList<String>();
+//                aliasesPackage = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX
+//                        + ClassUtils.convertClassNameToResourcePath(aliasesPackage.trim()) + "/" + DEFAULT_RESOURCE_PATTERN;
+//                Resource[] resources = resolver.getResources(aliasesPackage);
+//                if (resources != null && resources.length > 0)
+//                {
+//                    MetadataReader metadataReader = null;
+//                    for (Resource resource : resources)
+//                    {
+//                        if (resource.isReadable())
+//                        {
+//                            metadataReader = metadataReaderFactory.getMetadataReader(resource);
+//                            try
+//                            {
+//                                result.add(Class.forName(metadataReader.getClassMetadata().getClassName()).getPackage().getName());
+//                            }
+//                            catch (ClassNotFoundException e)
+//                            {
+//                                e.printStackTrace();
+//                            }
+//                        }
+//                    }
+//                }
+//                if (result.size() > 0)
+//                {
+//                    HashSet<String> hashResult = new HashSet<String>(result);
+//                    allResult.addAll(hashResult);
+//                }
+//            }
+//            if (allResult.size() > 0)
+//            {
+//                typeAliasesPackage = String.join(",", (String[]) allResult.toArray(new String[0]));
+//            }
+//            else
+//            {
+//                throw new RuntimeException("mybatis typeAliasesPackage 路径扫描错误,参数typeAliasesPackage:" + typeAliasesPackage + "未找到任何包");
+//            }
+//        }
+//        catch (IOException e)
+//        {
+//            e.printStackTrace();
+//        }
+//        return typeAliasesPackage;
+//    }
+//
+//    public Resource[] resolveMapperLocations(String[] mapperLocations)
+//    {
+//        ResourcePatternResolver resourceResolver = new PathMatchingResourcePatternResolver();
+//        List<Resource> resources = new ArrayList<Resource>();
+//        if (mapperLocations != null)
+//        {
+//            for (String mapperLocation : mapperLocations)
+//            {
+//                try
+//                {
+//                    Resource[] mappers = resourceResolver.getResources(mapperLocation);
+//                    resources.addAll(Arrays.asList(mappers));
+//                }
+//                catch (IOException e)
+//                {
+//                    // ignore
+//                }
+//            }
+//        }
+//        return resources.toArray(new Resource[resources.size()]);
+//    }
+//
+//    @Bean
+//    public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception
+//    {
+//        String typeAliasesPackage = env.getProperty("mybatis.typeAliasesPackage");
+//        String mapperLocations = env.getProperty("mybatis.mapperLocations");
+//        String configLocation = env.getProperty("mybatis.configLocation");
+//        typeAliasesPackage = setTypeAliasesPackage(typeAliasesPackage);
+//        VFS.addImplClass(SpringBootVFS.class);
+//
+//        final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
+//        sessionFactory.setDataSource(dataSource);
+//        sessionFactory.setTypeAliasesPackage(typeAliasesPackage);
+//        sessionFactory.setMapperLocations(resolveMapperLocations(StringUtils.split(mapperLocations, ",")));
+//        sessionFactory.setConfigLocation(new DefaultResourceLoader().getResource(configLocation));
+//        return sessionFactory.getObject();
+//    }
+//}
\ No newline at end of file
diff --git a/expert-framework/src/main/java/com/gkhy/framework/config/MybatisPlusConfig.java b/expert-framework/src/main/java/com/gkhy/framework/config/MybatisPlusConfig.java
index d288787..c6394d7 100644
--- a/expert-framework/src/main/java/com/gkhy/framework/config/MybatisPlusConfig.java
+++ b/expert-framework/src/main/java/com/gkhy/framework/config/MybatisPlusConfig.java
@@ -1,17 +1,20 @@
-package com.gkhy.common.config;
+package com.gkhy.framework.config;
 
 
 import com.baomidou.mybatisplus.annotation.DbType;
 import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.BlockAttackInnerInterceptor;
 import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
 import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
 import com.github.pagehelper.PageHelper;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
 
 import java.util.Properties;
 
 @Configuration
+@EnableTransactionManagement(proxyTargetClass = true)
 public class MybatisPlusConfig {
     /**
      * 新的分页插件,一缓和二缓遵循mybatis的规则,
@@ -19,11 +22,13 @@
     @Bean
     public MybatisPlusInterceptor mybatisPlusInterceptor() {
         MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
-        PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(DbType.MYSQL);
-        paginationInnerInterceptor.setOverflow(false);//溢出总页数 总是跳到第一页
-        interceptor.addInnerInterceptor(paginationInnerInterceptor);
-        //添加乐观锁插件
-        interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
+        // 分页插件
+        interceptor.addInnerInterceptor(paginationInnerInterceptor());
+        // 乐观锁插件
+        interceptor.addInnerInterceptor(optimisticLockerInnerInterceptor());
+        // 阻断插件
+        interceptor.addInnerInterceptor(blockAttackInnerInterceptor());
+
         return interceptor;
     }
 
@@ -38,5 +43,33 @@
         pageHelper.setProperties(p);
         return pageHelper;
     }
+    /**
+     * 分页插件,自动识别数据库类型 https://baomidou.com/guide/interceptor-pagination.html
+     */
+    public PaginationInnerInterceptor paginationInnerInterceptor()
+    {
+        PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();
+        // 设置数据库类型为mysql
+        paginationInnerInterceptor.setDbType(DbType.MYSQL);
+        // 设置最大单页限制数量,默认 500 条,-1 不受限制
+        paginationInnerInterceptor.setMaxLimit(-1L);
+        return paginationInnerInterceptor;
+    }
+
+    /**
+     * 乐观锁插件 https://baomidou.com/guide/interceptor-optimistic-locker.html
+     */
+    public OptimisticLockerInnerInterceptor optimisticLockerInnerInterceptor()
+    {
+        return new OptimisticLockerInnerInterceptor();
+    }
+
+    /**
+     * 如果是对全表的删除或更新操作,就会终止该操作 https://baomidou.com/guide/interceptor-block-attack.html
+     */
+    public BlockAttackInnerInterceptor blockAttackInnerInterceptor()
+    {
+        return new BlockAttackInnerInterceptor();
+    }
 
 }
diff --git a/expert-framework/src/main/java/com/gkhy/framework/config/ResourcesConfig.java b/expert-framework/src/main/java/com/gkhy/framework/config/ResourcesConfig.java
index 5de79e4..517ec28 100644
--- a/expert-framework/src/main/java/com/gkhy/framework/config/ResourcesConfig.java
+++ b/expert-framework/src/main/java/com/gkhy/framework/config/ResourcesConfig.java
@@ -11,7 +11,7 @@
 import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
 import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-import com.gkhy.common.config.expertConfig;
+import com.gkhy.common.config.ExpertConfig;
 import com.gkhy.common.constant.Constants;
 import com.gkhy.framework.interceptor.RepeatSubmitInterceptor;
 
@@ -31,7 +31,7 @@
     {
         /** 本地文件上传路径 */
         registry.addResourceHandler(Constants.RESOURCE_PREFIX + "/**")
-                .addResourceLocations("file:" + expertConfig.getProfile() + "/");
+                .addResourceLocations("file:" + ExpertConfig.getProfile() + "/");
 
         /** swagger配置 */
         registry.addResourceHandler("/swagger-ui/**")
diff --git a/expert-framework/src/main/java/com/gkhy/framework/config/SecurityConfig.java b/expert-framework/src/main/java/com/gkhy/framework/config/SecurityConfig.java
index df59735..61e45bb 100644
--- a/expert-framework/src/main/java/com/gkhy/framework/config/SecurityConfig.java
+++ b/expert-framework/src/main/java/com/gkhy/framework/config/SecurityConfig.java
@@ -111,10 +111,10 @@
             .authorizeHttpRequests((requests) -> {
                 permitAllUrl.getUrls().forEach(url -> requests.antMatchers(url).permitAll());
                 // 对于登录login 注册register 验证码captchaImage 允许匿名访问
-                requests.antMatchers("/login", "/register", "/captchaImage").permitAll()
+                requests.antMatchers("/login", "/register", "/captchaImage","/system/expert_info/**").permitAll()
                     // 静态资源,可匿名访问
                     .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
-                    .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()
+                    .antMatchers("/doc.html","/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()
                     // 除上面外的所有请求全部需要鉴权认证
                     .anyRequest().authenticated();
             })
diff --git a/expert-generator/src/main/resources/vm/java/domain.java.vm b/expert-generator/src/main/resources/vm/java/domain.java.vm
index 84e0fbc..437ad37 100644
--- a/expert-generator/src/main/resources/vm/java/domain.java.vm
+++ b/expert-generator/src/main/resources/vm/java/domain.java.vm
@@ -3,103 +3,106 @@
 #foreach ($import in $importList)
 import ${import};
 #end
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
-import com.gkhy.common.annotation.Excel;
+import com.rchuing.sis.common.annotation.Excel;
 #if($table.crud || $table.sub)
-import com.gkhy.common.core.domain.BaseEntity;
+import com.rchuing.sis.common.core.domain.BaseEntity;
 #elseif($table.tree)
-import com.gkhy.common.core.domain.TreeEntity;
+import com.fenghuang.common.core.domain.TreeEntity;
 #end
 
 /**
  * ${functionName}对象 ${tableName}
- * 
+ *
  * @author ${author}
  * @date ${datetime}
  */
-#if($table.crud || $table.sub)
-#set($Entity="BaseEntity")
-#elseif($table.tree)
-#set($Entity="TreeEntity")
-#end
-public class ${ClassName} extends ${Entity}
-{
-    private static final long serialVersionUID = 1L;
+    #if($table.crud || $table.sub)
+        #set($Entity="BaseEntity")
+    #elseif($table.tree)
+        #set($Entity="TreeEntity")
+    #end
+        @TableName(resultMap = "${packageName}.mapper.${ClassName}Mapper.${ClassName}Result")
+        public class ${ClassName} extends ${Entity}
+        {
+        private static final long serialVersionUID = 1L;
 
-#foreach ($column in $columns)
-#if(!$table.isSuperColumn($column.javaField))
-    /** $column.columnComment */
-#if($column.list)
-#set($parentheseIndex=$column.columnComment.indexOf("("))
-#if($parentheseIndex != -1)
-#set($comment=$column.columnComment.substring(0, $parentheseIndex))
-#else
-#set($comment=$column.columnComment)
-#end
-#if($parentheseIndex != -1)
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-#elseif($column.javaType == 'Date')
-    @JsonFormat(pattern = "yyyy-MM-dd")
-    @Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd")
-#else
-    @Excel(name = "${comment}")
-#end
-#end
-    private $column.javaType $column.javaField;
+    #foreach ($column in $columns)
+        #if(!$table.isSuperColumn($column.javaField))
+                /** $column.columnComment */
+            #if($column.list)
+                #set($parentheseIndex=$column.columnComment.indexOf("("))
+                #if($parentheseIndex != -1)
+                    #set($comment=$column.columnComment.substring(0, $parentheseIndex))
+                #else
+                    #set($comment=$column.columnComment)
+                #end
+                #if($parentheseIndex != -1)
+                @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+                #elseif($column.javaType == 'Date')
+                @JsonFormat(pattern = "yyyy-MM-dd")
+                @Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd")
+                #else
+                @Excel(name = "${comment}")
+                #end
+            #end
+            #if($column.isPk == 1)
+            @TableId(value = "$column.columnName", type = IdType.AUTO)
+            #end
+        private $column.javaType $column.javaField;
 
-#end
-#end
-#if($table.sub)
-    /** $table.subTable.functionName信息 */
-    private List<${subClassName}> ${subclassName}List;
+        #end
+    #end
+    #if($table.sub)
+            /** $table.subTable.functionName信息 */
+            private List<${subClassName}> ${subclassName}List;
 
-#end
-#foreach ($column in $columns)
-#if(!$table.isSuperColumn($column.javaField))
-#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
-#set($AttrName=$column.javaField)
-#else
-#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
-#end
-    public void set${AttrName}($column.javaType $column.javaField) 
-    {
-        this.$column.javaField = $column.javaField;
-    }
+    #end
+    #foreach ($column in $columns)
+        #if(!$table.isSuperColumn($column.javaField))
+            #if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
+                #set($AttrName=$column.javaField)
+            #else
+                #set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
+            #end
+                public void set${AttrName}($column.javaType $column.javaField) {
+                    this.$column.javaField = $column.javaField;
+                }
 
-    public $column.javaType get${AttrName}() 
-    {
-        return $column.javaField;
-    }
-#end
-#end
+                public $column.javaType get${AttrName}() {
+                    return $column.javaField;
+                }
+        #end
+    #end
 
-#if($table.sub)
-    public List<${subClassName}> get${subClassName}List()
-    {
-        return ${subclassName}List;
-    }
+    #if($table.sub)
+            public List<${subClassName}> get${subClassName}List() {
+                return ${subclassName}List;
+            }
 
-    public void set${subClassName}List(List<${subClassName}> ${subclassName}List)
-    {
-        this.${subclassName}List = ${subclassName}List;
-    }
+            public void set${subClassName}List(List<${subClassName}> ${subclassName}List) {
+                this.${subclassName}List = ${subclassName}List;
+            }
 
-#end
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
-#foreach ($column in $columns)
-#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
-#set($AttrName=$column.javaField)
-#else
-#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
-#end
-            .append("${column.javaField}", get${AttrName}())
-#end
-#if($table.sub)
-            .append("${subclassName}List", get${subClassName}List())
-#end
-            .toString();
-    }
-}
+    #end
+        @Override
+        public String toString() {
+            return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                #foreach ($column in $columns)
+                    #if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
+                        #set($AttrName=$column.javaField)
+                    #else
+                        #set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
+                    #end
+                .append("${column.javaField}", get${AttrName}())
+                #end
+                #if($table.sub)
+                        .append("${subclassName}List", get${subClassName}List())
+                        #end
+                    .toString();
+        }
+        }
\ No newline at end of file
diff --git a/expert-generator/src/main/resources/vm/java/mapper.java.vm b/expert-generator/src/main/resources/vm/java/mapper.java.vm
index 7e7d7c2..8790aba 100644
--- a/expert-generator/src/main/resources/vm/java/mapper.java.vm
+++ b/expert-generator/src/main/resources/vm/java/mapper.java.vm
@@ -8,15 +8,15 @@
 
 /**
  * ${functionName}Mapper接口
- * 
+ *
  * @author ${author}
  * @date ${datetime}
  */
-public interface ${ClassName}Mapper 
+public interface ${ClassName}Mapper
 {
     /**
      * 查询${functionName}
-     * 
+     *
      * @param ${pkColumn.javaField} ${functionName}主键
      * @return ${functionName}
      */
@@ -24,7 +24,7 @@
 
     /**
      * 查询${functionName}列表
-     * 
+     *
      * @param ${className} ${functionName}
      * @return ${functionName}集合
      */
@@ -32,7 +32,7 @@
 
     /**
      * 新增${functionName}
-     * 
+     *
      * @param ${className} ${functionName}
      * @return 结果
      */
@@ -40,7 +40,7 @@
 
     /**
      * 修改${functionName}
-     * 
+     *
      * @param ${className} ${functionName}
      * @return 结果
      */
@@ -48,7 +48,7 @@
 
     /**
      * 删除${functionName}
-     * 
+     *
      * @param ${pkColumn.javaField} ${functionName}主键
      * @return 结果
      */
@@ -56,36 +56,36 @@
 
     /**
      * 批量删除${functionName}
-     * 
+     *
      * @param ${pkColumn.javaField}s 需要删除的数据主键集合
      * @return 结果
      */
     public int delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s);
-#if($table.sub)
+    #if($table.sub)
 
-    /**
-     * 批量删除${subTable.functionName}
-     * 
-     * @param ${pkColumn.javaField}s 需要删除的数据主键集合
-     * @return 结果
-     */
-    public int delete${subClassName}By${subTableFkClassName}s(${pkColumn.javaType}[] ${pkColumn.javaField}s);
-    
-    /**
-     * 批量新增${subTable.functionName}
-     * 
-     * @param ${subclassName}List ${subTable.functionName}列表
-     * @return 结果
-     */
-    public int batch${subClassName}(List<${subClassName}> ${subclassName}List);
-    
+        /**
+         * 批量删除${subTable.functionName}
+         *
+         * @param ${pkColumn.javaField}s 需要删除的数据主键集合
+         * @return 结果
+         */
+        public int delete${subClassName}By${subTableFkClassName}s(${pkColumn.javaType}[] ${pkColumn.javaField}s);
 
-    /**
-     * 通过${functionName}主键删除${subTable.functionName}信息
-     * 
-     * @param ${pkColumn.javaField} ${functionName}ID
-     * @return 结果
-     */
-    public int delete${subClassName}By${subTableFkClassName}(${pkColumn.javaType} ${pkColumn.javaField});
-#end
+        /**
+         * 批量新增${subTable.functionName}
+         *
+         * @param ${subclassName}List ${subTable.functionName}列表
+         * @return 结果
+         */
+        public int batch${subClassName}(List<${subClassName}> ${subclassName}List);
+
+
+        /**
+         * 通过${functionName}主键删除${subTable.functionName}信息
+         *
+         * @param ${pkColumn.javaField} ${functionName}ID
+         * @return 结果
+         */
+        public int delete${subClassName}By${subTableFkClassName}(${pkColumn.javaType} ${pkColumn.javaField});
+    #end
 }
diff --git a/expert-generator/src/main/resources/vm/java/service.java.vm b/expert-generator/src/main/resources/vm/java/service.java.vm
index 264882b..1388232 100644
--- a/expert-generator/src/main/resources/vm/java/service.java.vm
+++ b/expert-generator/src/main/resources/vm/java/service.java.vm
@@ -2,18 +2,18 @@
 
 import java.util.List;
 import ${packageName}.domain.${ClassName};
+import com.baomidou.mybatisplus.extension.service.IService;
 
 /**
  * ${functionName}Service接口
- * 
+ *
  * @author ${author}
  * @date ${datetime}
  */
-public interface I${ClassName}Service 
-{
+public interface I${ClassName}Service extends IService<${ClassName}> {
     /**
      * 查询${functionName}
-     * 
+     *
      * @param ${pkColumn.javaField} ${functionName}主键
      * @return ${functionName}
      */
@@ -21,7 +21,7 @@
 
     /**
      * 查询${functionName}列表
-     * 
+     *
      * @param ${className} ${functionName}
      * @return ${functionName}集合
      */
@@ -29,7 +29,7 @@
 
     /**
      * 新增${functionName}
-     * 
+     *
      * @param ${className} ${functionName}
      * @return 结果
      */
@@ -37,7 +37,7 @@
 
     /**
      * 修改${functionName}
-     * 
+     *
      * @param ${className} ${functionName}
      * @return 结果
      */
@@ -45,7 +45,7 @@
 
     /**
      * 批量删除${functionName}
-     * 
+     *
      * @param ${pkColumn.javaField}s 需要删除的${functionName}主键集合
      * @return 结果
      */
@@ -53,9 +53,9 @@
 
     /**
      * 删除${functionName}信息
-     * 
+     *
      * @param ${pkColumn.javaField} ${functionName}主键
      * @return 结果
      */
     public int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});
-}
+}
\ No newline at end of file
diff --git a/expert-generator/src/main/resources/vm/java/serviceImpl.java.vm b/expert-generator/src/main/resources/vm/java/serviceImpl.java.vm
index ca20b6d..8f42917 100644
--- a/expert-generator/src/main/resources/vm/java/serviceImpl.java.vm
+++ b/expert-generator/src/main/resources/vm/java/serviceImpl.java.vm
@@ -1,169 +1,162 @@
 package ${packageName}.service.impl;
 
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import java.util.List;
-#foreach ($column in $columns)
-#if($column.javaField == 'createTime' || $column.javaField == 'updateTime')
-import com.gkhy.common.utils.DateUtils;
-#break
-#end
-#end
+    #foreach ($column in $columns)
+        #if($column.javaField == 'createTime' || $column.javaField == 'updateTime')
+        import com.rchuing.common.utils.DateUtils;
+            #break
+        #end
+    #end
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-#if($table.sub)
-import java.util.ArrayList;
-import com.gkhy.common.utils.StringUtils;
-import org.springframework.transaction.annotation.Transactional;
-import ${packageName}.domain.${subClassName};
-#end
+    #if($table.sub)
+    import java.util.ArrayList;
+    import com.rchuing.common.utils.StringUtils;
+    import org.springframework.transaction.annotation.Transactional;
+    import ${packageName}.domain.${subClassName};
+    #end
 import ${packageName}.mapper.${ClassName}Mapper;
 import ${packageName}.domain.${ClassName};
 import ${packageName}.service.I${ClassName}Service;
 
 /**
  * ${functionName}Service业务层处理
- * 
+ *
  * @author ${author}
  * @date ${datetime}
  */
 @Service
-public class ${ClassName}ServiceImpl implements I${ClassName}Service 
-{
+public class ${ClassName}ServiceImpl extends ServiceImpl<${ClassName}Mapper, ${ClassName}> implements I${ClassName}Service {
     @Autowired
     private ${ClassName}Mapper ${className}Mapper;
 
     /**
      * 查询${functionName}
-     * 
+     *
      * @param ${pkColumn.javaField} ${functionName}主键
      * @return ${functionName}
      */
     @Override
-    public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField})
-    {
+    public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}) {
         return ${className}Mapper.select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField});
     }
 
     /**
      * 查询${functionName}列表
-     * 
+     *
      * @param ${className} ${functionName}
      * @return ${functionName}
      */
     @Override
-    public List<${ClassName}> select${ClassName}List(${ClassName} ${className})
-    {
+    public List<${ClassName}> select${ClassName}List(${ClassName} ${className}) {
         return ${className}Mapper.select${ClassName}List(${className});
     }
 
     /**
      * 新增${functionName}
-     * 
+     *
      * @param ${className} ${functionName}
      * @return 结果
      */
-#if($table.sub)
-    @Transactional
-#end
+        #if($table.sub)
+        @Transactional
+        #end
     @Override
-    public int insert${ClassName}(${ClassName} ${className})
-    {
-#foreach ($column in $columns)
-#if($column.javaField == 'createTime')
-        ${className}.setCreateTime(DateUtils.getNowDate());
-#end
-#end
-#if($table.sub)
-        int rows = ${className}Mapper.insert${ClassName}(${className});
-        insert${subClassName}(${className});
-        return rows;
-#else
-        return ${className}Mapper.insert${ClassName}(${className});
-#end
+    public int insert${ClassName}(${ClassName} ${className}) {
+        #foreach ($column in $columns)
+            #if($column.javaField == 'createTime')
+                ${className}.setCreateTime(DateUtils.getNowDate());
+            #end
+        #end
+        #if($table.sub)
+            int rows = ${className}Mapper.insert${ClassName}(${className});
+            insert${subClassName}(${className});
+            return rows;
+        #else
+            return ${className}Mapper.insert${ClassName}(${className});
+        #end
     }
 
     /**
      * 修改${functionName}
-     * 
+     *
      * @param ${className} ${functionName}
      * @return 结果
      */
-#if($table.sub)
-    @Transactional
-#end
+        #if($table.sub)
+        @Transactional
+        #end
     @Override
-    public int update${ClassName}(${ClassName} ${className})
-    {
-#foreach ($column in $columns)
-#if($column.javaField == 'updateTime')
-        ${className}.setUpdateTime(DateUtils.getNowDate());
-#end
-#end
-#if($table.sub)
-        ${className}Mapper.delete${subClassName}By${subTableFkClassName}(${className}.get${pkColumn.capJavaField}());
-        insert${subClassName}(${className});
-#end
+    public int update${ClassName}(${ClassName} ${className}) {
+        #foreach ($column in $columns)
+            #if($column.javaField == 'updateTime')
+                ${className}.setUpdateTime(DateUtils.getNowDate());
+            #end
+        #end
+        #if($table.sub)
+                ${className}Mapper.delete${subClassName}By${subTableFkClassName}(${className}.get${pkColumn.capJavaField}());
+            insert${subClassName}(${className});
+        #end
         return ${className}Mapper.update${ClassName}(${className});
     }
 
     /**
      * 批量删除${functionName}
-     * 
+     *
      * @param ${pkColumn.javaField}s 需要删除的${functionName}主键
      * @return 结果
      */
-#if($table.sub)
-    @Transactional
-#end
+        #if($table.sub)
+        @Transactional
+        #end
     @Override
-    public int delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s)
-    {
-#if($table.sub)
-        ${className}Mapper.delete${subClassName}By${subTableFkClassName}s(${pkColumn.javaField}s);
-#end
+    public int delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s) {
+        #if($table.sub)
+                ${className}Mapper.delete${subClassName}By${subTableFkClassName}s(${pkColumn.javaField}s);
+        #end
         return ${className}Mapper.delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaField}s);
     }
 
     /**
      * 删除${functionName}信息
-     * 
+     *
      * @param ${pkColumn.javaField} ${functionName}主键
      * @return 结果
      */
-#if($table.sub)
-    @Transactional
-#end
+        #if($table.sub)
+        @Transactional
+        #end
     @Override
-    public int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField})
-    {
-#if($table.sub)
-        ${className}Mapper.delete${subClassName}By${subTableFkClassName}(${pkColumn.javaField});
-#end
+    public int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}) {
+        #if($table.sub)
+                ${className}Mapper.delete${subClassName}By${subTableFkClassName}(${pkColumn.javaField});
+        #end
         return ${className}Mapper.delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField});
     }
-#if($table.sub)
+    #if($table.sub)
 
-    /**
-     * 新增${subTable.functionName}信息
-     * 
-     * @param ${className} ${functionName}对象
-     */
-    public void insert${subClassName}(${ClassName} ${className})
-    {
-        List<${subClassName}> ${subclassName}List = ${className}.get${subClassName}List();
-        ${pkColumn.javaType} ${pkColumn.javaField} = ${className}.get${pkColumn.capJavaField}();
-        if (StringUtils.isNotNull(${subclassName}List))
-        {
-            List<${subClassName}> list = new ArrayList<${subClassName}>();
-            for (${subClassName} ${subclassName} : ${subclassName}List)
+        /**
+         * 新增${subTable.functionName}信息
+         *
+         * @param ${className} ${functionName}对象
+         */
+        public void insert${subClassName}(${ClassName} ${className}) {
+            List<${subClassName}> ${subclassName}List = ${className}.get${subClassName}List();
+            ${pkColumn.javaType} ${pkColumn.javaField} = ${className}.get${pkColumn.capJavaField}();
+            if (StringUtils.isNotNull(${subclassName}List))
             {
-                ${subclassName}.set${subTableFkClassName}(${pkColumn.javaField});
-                list.add(${subclassName});
-            }
-            if (list.size() > 0)
-            {
-                ${className}Mapper.batch${subClassName}(list);
+                List<${subClassName}> list = new ArrayList<${subClassName}>();
+                for (${subClassName} ${subclassName} : ${subclassName}List)
+                {
+                    ${subclassName}.set${subTableFkClassName}(${pkColumn.javaField});
+                    list.add(${subclassName});
+                }
+                if (list.size() > 0)
+                {
+                        ${className}Mapper.batch${subClassName}(list);
+                }
             }
         }
-    }
-#end
-}
+    #end
+}
\ No newline at end of file
diff --git a/expert-generator/src/main/resources/vm/java/sub-domain.java.vm b/expert-generator/src/main/resources/vm/java/sub-domain.java.vm
index 5025dbb..e2d8e20 100644
--- a/expert-generator/src/main/resources/vm/java/sub-domain.java.vm
+++ b/expert-generator/src/main/resources/vm/java/sub-domain.java.vm
@@ -1,76 +1,73 @@
 package ${packageName}.domain;
 
-#foreach ($import in $subImportList)
-import ${import};
-#end
+    #foreach ($import in $subImportList)
+    import ${import};
+    #end
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
-import com.gkhy.common.annotation.Excel;
-import com.gkhy.common.core.domain.BaseEntity;
+import com.rchuing.common.annotation.Excel;
+import com.rchuing.common.core.domain.BaseEntity;
 
 /**
  * ${subTable.functionName}对象 ${subTableName}
- * 
+ *
  * @author ${author}
  * @date ${datetime}
  */
-public class ${subClassName} extends BaseEntity
-{
+public class ${subClassName} extends BaseEntity {
     private static final long serialVersionUID = 1L;
 
-#foreach ($column in $subTable.columns)
-#if(!$table.isSuperColumn($column.javaField))
-    /** $column.columnComment */
-#if($column.list)
-#set($parentheseIndex=$column.columnComment.indexOf("("))
-#if($parentheseIndex != -1)
-#set($comment=$column.columnComment.substring(0, $parentheseIndex))
-#else
-#set($comment=$column.columnComment)
-#end
-#if($parentheseIndex != -1)
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
-#elseif($column.javaType == 'Date')
-    @JsonFormat(pattern = "yyyy-MM-dd")
-    @Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd")
-#else
-    @Excel(name = "${comment}")
-#end
-#end
-    private $column.javaType $column.javaField;
+    #foreach ($column in $subTable.columns)
+        #if(!$table.isSuperColumn($column.javaField))
+            /** $column.columnComment */
+            #if($column.list)
+                #set($parentheseIndex=$column.columnComment.indexOf("("))
+                #if($parentheseIndex != -1)
+                    #set($comment=$column.columnComment.substring(0, $parentheseIndex))
+                #else
+                    #set($comment=$column.columnComment)
+                #end
+                #if($parentheseIndex != -1)
+                @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+                #elseif($column.javaType == 'Date')
+                @JsonFormat(pattern = "yyyy-MM-dd")
+                @Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd")
+                #else
+                @Excel(name = "${comment}")
+                #end
+            #end
+        private $column.javaType $column.javaField;
 
-#end
-#end
-#foreach ($column in $subTable.columns)
-#if(!$table.isSuperColumn($column.javaField))
-#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
-#set($AttrName=$column.javaField)
-#else
-#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
-#end
-    public void set${AttrName}($column.javaType $column.javaField) 
-    {
-        this.$column.javaField = $column.javaField;
-    }
+        #end
+    #end
+    #foreach ($column in $subTable.columns)
+        #if(!$table.isSuperColumn($column.javaField))
+            #if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
+                #set($AttrName=$column.javaField)
+            #else
+                #set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
+            #end
+            public void set${AttrName}($column.javaType $column.javaField) {
+            this.$column.javaField = $column.javaField;
+        }
 
-    public $column.javaType get${AttrName}() 
-    {
-        return $column.javaField;
-    }
-#end
-#end
+    public $column.javaType get${AttrName}() {
+            return $column.javaField;
+        }
+        #end
+    #end
 
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
-#foreach ($column in $subTable.columns)
-#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
-#set($AttrName=$column.javaField)
-#else
-#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
-#end
-            .append("${column.javaField}", get${AttrName}())
-#end
-            .toString();
+            #foreach ($column in $subTable.columns)
+                #if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
+                    #set($AttrName=$column.javaField)
+                #else
+                    #set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
+                #end
+                    .append("${column.javaField}", get${AttrName}())
+                    #end
+                .toString();
     }
-}
+}
\ No newline at end of file
diff --git a/expert-system/pom.xml b/expert-system/pom.xml
index c1e747f..8ddf9ab 100644
--- a/expert-system/pom.xml
+++ b/expert-system/pom.xml
@@ -22,6 +22,11 @@
             <groupId>com.gkhy</groupId>
             <artifactId>expert-common</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <scope>provided</scope>
+        </dependency>
 
     </dependencies>
 
diff --git a/expert-system/src/main/java/com/gkhy/system/domain/ApplyRecord.java b/expert-system/src/main/java/com/gkhy/system/domain/ApplyRecord.java
index a3eca11..43b287b 100644
--- a/expert-system/src/main/java/com/gkhy/system/domain/ApplyRecord.java
+++ b/expert-system/src/main/java/com/gkhy/system/domain/ApplyRecord.java
@@ -1,14 +1,18 @@
 package com.gkhy.system.domain;
 
-import java.util.Date;
-import com.fasterxml.jackson.annotation.JsonFormat;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.gkhy.common.annotation.Excel;
+import com.gkhy.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
-import com.rchuing.sis.common.annotation.Excel;
-import com.rchuing.sis.common.core.domain.BaseEntity;
+
+import java.util.Date;
+
 
 /**
  * 开启申请记录对象 apply_record
@@ -16,50 +20,60 @@
  * @author expert
  * @date 2024-11-13
  */
-        @TableName(resultMap = "com.gkhy.system.mapper.ApplyRecordMapper.ApplyRecordResult")
-        public class ApplyRecord extends BaseEntity
-        {
-        private static final long serialVersionUID = 1L;
+@TableName(resultMap = "com.gkhy.system.mapper.ApplyRecordMapper.ApplyRecordResult")
+@ApiModel(value = "系统配置记录", description = "专家申请系统记录")
+public class ApplyRecord extends BaseEntity {
+    private static final long serialVersionUID = 1L;
 
-                /** $column.columnComment */
-            @TableId(value = "id", type = IdType.AUTO)
-        private Long id;
+    /**
+     * $column.columnComment
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
 
-                /** 开始时间 */
-                @JsonFormat(pattern = "yyyy-MM-dd")
-                @Excel(name = "开始时间", width = 30, dateFormat = "yyyy-MM-dd")
-        private Date startTime;
+    /**
+     * 开始时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "开始时间", width = 30, dateFormat = "yyyy-MM-dd")
+    @ApiModelProperty("开始时间")
+    private Date startTime;
 
-                /** 结束时间 */
-                @JsonFormat(pattern = "yyyy-MM-dd")
-                @Excel(name = "结束时间", width = 30, dateFormat = "yyyy-MM-dd")
-        private Date endTime;
+    /**
+     * 结束时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "结束时间", width = 30, dateFormat = "yyyy-MM-dd")
+    @ApiModelProperty("结束时间")
+    private Date endTime;
 
-                public void setId(Long id) {
-                    this.id = id;
-                }
+    public void setId(Long id) {
+        this.id = id;
+    }
 
-                public Long getId() {
-                    return id;
-                }
-                public void setStartTime(Date startTime) {
-                    this.startTime = startTime;
-                }
+    public Long getId() {
+        return id;
+    }
 
-                public Date getStartTime() {
-                    return startTime;
-                }
-                public void setEndTime(Date endTime) {
-                    this.endTime = endTime;
-                }
+    public void setStartTime(Date startTime) {
+        this.startTime = startTime;
+    }
 
-                public Date getEndTime() {
-                    return endTime;
-                }
+    public Date getStartTime() {
+        return startTime;
+    }
 
-        @Override
-        public String toString() {
-            return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+    public void setEndTime(Date endTime) {
+        this.endTime = endTime;
+    }
+
+    public Date getEndTime() {
+        return endTime;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                 .append("id", getId())
                 .append("startTime", getStartTime())
                 .append("endTime", getEndTime())
@@ -67,6 +81,6 @@
                 .append("createTime", getCreateTime())
                 .append("updateBy", getUpdateBy())
                 .append("updateTime", getUpdateTime())
-                    .toString();
-        }
-        }
\ No newline at end of file
+                .toString();
+    }
+}
\ No newline at end of file
diff --git a/expert-system/src/main/java/com/gkhy/system/domain/Evaluation.java b/expert-system/src/main/java/com/gkhy/system/domain/Evaluation.java
index 91b6bef..49448a9 100644
--- a/expert-system/src/main/java/com/gkhy/system/domain/Evaluation.java
+++ b/expert-system/src/main/java/com/gkhy/system/domain/Evaluation.java
@@ -3,10 +3,16 @@
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.gkhy.common.annotation.Excel;
+import com.gkhy.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
-import com.rchuing.sis.common.annotation.Excel;
-import com.rchuing.sis.common.core.domain.BaseEntity;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
 
 /**
  * 考评管理对象 evaluation
@@ -14,80 +20,103 @@
  * @author expert
  * @date 2024-11-13
  */
-        @TableName(resultMap = "com.gkhy.system.mapper.EvaluationMapper.EvaluationResult")
-        public class Evaluation extends BaseEntity
-        {
-        private static final long serialVersionUID = 1L;
+@TableName(resultMap = "com.gkhy.system.mapper.EvaluationMapper.EvaluationResult")
+@ApiModel(value = "考评管理对象", description = "考评管理表")
+public class Evaluation extends BaseEntity {
+    private static final long serialVersionUID = 1L;
 
-                /** $column.columnComment */
-            @TableId(value = "id", type = IdType.AUTO)
-        private Long id;
+    /**
+     * $column.columnComment
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
 
-                /** 分值 */
-                @Excel(name = "分值")
-        private Long score;
+    /**
+     * 分值
+     */
+    @Excel(name = "分值")
+    @NotNull(message ="分值不能为空" )
+    @ApiModelProperty(value = "分值",required = true)
+    private Long score;
 
-                /** 内容 */
-                @Excel(name = "内容")
-        private String content;
+    /**
+     * 内容
+     */
+    @Excel(name = "内容")
+    @NotBlank(message ="内容不能为空" )
+    @ApiModelProperty(value = "内容",required = true)
+    private String content;
 
-                /** 类型1加分项2扣分项 */
-                @Excel(name = "类型1加分项2扣分项")
-        private String scoreType;
+    /**
+     * 类型1加分项2扣分项
+     */
+    @Excel(name = "类型1加分项2扣分项")
+    @NotBlank(message ="类型不能为空" )
+    @ApiModelProperty(value = "类型1加分项2扣分项",required = true)
+    private String scoreType;
 
-                /** 删除标志(0代表存在,1代表删除,默认0) */
-        private Long delFlag;
+    /**
+     * 删除标志(0代表存在,1代表删除,默认0)
+     */
+    private Long delFlag;
 
-                /** 乐观锁 */
-                @Excel(name = "乐观锁")
-        private Long version;
+    /**
+     * 乐观锁
+     */
+    @Excel(name = "乐观锁")
+    private Long version;
 
-                public void setId(Long id) {
-                    this.id = id;
-                }
+    public void setId(Long id) {
+        this.id = id;
+    }
 
-                public Long getId() {
-                    return id;
-                }
-                public void setScore(Long score) {
-                    this.score = score;
-                }
+    public Long getId() {
+        return id;
+    }
 
-                public Long getScore() {
-                    return score;
-                }
-                public void setContent(String content) {
-                    this.content = content;
-                }
+    public void setScore(Long score) {
+        this.score = score;
+    }
 
-                public String getContent() {
-                    return content;
-                }
-                public void setScoreType(String scoreType) {
-                    this.scoreType = scoreType;
-                }
+    public Long getScore() {
+        return score;
+    }
 
-                public String getScoreType() {
-                    return scoreType;
-                }
-                public void setDelFlag(Long delFlag) {
-                    this.delFlag = delFlag;
-                }
+    public void setContent(String content) {
+        this.content = content;
+    }
 
-                public Long getDelFlag() {
-                    return delFlag;
-                }
-                public void setVersion(Long version) {
-                    this.version = version;
-                }
+    public String getContent() {
+        return content;
+    }
 
-                public Long getVersion() {
-                    return version;
-                }
+    public void setScoreType(String scoreType) {
+        this.scoreType = scoreType;
+    }
 
-        @Override
-        public String toString() {
-            return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+    public String getScoreType() {
+        return scoreType;
+    }
+
+    public void setDelFlag(Long delFlag) {
+        this.delFlag = delFlag;
+    }
+
+    public Long getDelFlag() {
+        return delFlag;
+    }
+
+    public void setVersion(Long version) {
+        this.version = version;
+    }
+
+    public Long getVersion() {
+        return version;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                 .append("id", getId())
                 .append("score", getScore())
                 .append("content", getContent())
@@ -98,6 +127,6 @@
                 .append("createTime", getCreateTime())
                 .append("updateBy", getUpdateBy())
                 .append("updateTime", getUpdateTime())
-                    .toString();
-        }
-        }
\ No newline at end of file
+                .toString();
+    }
+}
\ No newline at end of file
diff --git a/expert-system/src/main/java/com/gkhy/system/domain/ProjectExpert.java b/expert-system/src/main/java/com/gkhy/system/domain/ProjectExpert.java
index 4d4364c..5fcb183 100644
--- a/expert-system/src/main/java/com/gkhy/system/domain/ProjectExpert.java
+++ b/expert-system/src/main/java/com/gkhy/system/domain/ProjectExpert.java
@@ -3,10 +3,14 @@
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.gkhy.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
-import com.rchuing.sis.common.annotation.Excel;
-import com.rchuing.sis.common.core.domain.BaseEntity;
+
+import javax.validation.constraints.NotNull;
+
 
 /**
  * 项目专家关联对象 project_expert
@@ -14,107 +18,134 @@
  * @author expert
  * @date 2024-11-14
  */
-        @TableName(resultMap = "com.gkhy.system.mapper.ProjectExpertMapper.ProjectExpertResult")
-        public class ProjectExpert extends BaseEntity
-        {
-        private static final long serialVersionUID = 1L;
+@TableName(resultMap = "com.gkhy.system.mapper.ProjectExpertMapper.ProjectExpertResult")
+@ApiModel(value = "项目专家关联对象", description = "项目专家关联对象表")
+public class ProjectExpert extends BaseEntity {
+    private static final long serialVersionUID = 1L;
 
-                /** $column.columnComment */
-            @TableId(value = "id", type = IdType.AUTO)
-        private Long id;
+    /**
+     * $column.columnComment
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
 
-                /** 项目id */
-                @Excel(name = "项目id")
-        private Long projectId;
+    /**
+     * 项目id
+     */
+    @ApiModelProperty(name = "项目名称",required = true)
+    @NotNull(message = "项目不能为空")
+    private Long projectId;
 
-                /** 专家id */
-                @Excel(name = "专家id")
-        private Long expertId;
+    /**
+     * 专家id
+     */
+    @ApiModelProperty(name = "专家id",required = true)
+    @NotNull(message = "选择专家")
+    private Long expertId;
 
-                /** 总分 */
-                @Excel(name = "总分")
-        private Long score;
+    /**
+     * 总分
+     */
+    @ApiModelProperty(name = "总分")
+    private Long score;
 
-                /** 评估状态0未评估1已评估 */
-                @Excel(name = "评估状态0未评估1已评估")
-        private Long envaluationState;
+    /**
+     * 评估状态0未评估1已评估
+     */
+    @ApiModelProperty(name = "评估状态0未评估1已评估")
+    private Long evaluationState;
 
-                /** 选取方式1固定2随机 */
-                @Excel(name = "选取方式1固定2随机")
-        private Long selectionMode;
+    /**
+     * 选取方式1固定2随机
+     */
+    @ApiModelProperty(name = "选取方式1固定2随机",required = true)
+    @NotNull(message = "选取方式不能为空")
+    private Long selectionMode;
 
-                /** 是否组长0否1是 */
-                @Excel(name = "是否组长0否1是")
-        private Long teamLeader;
+    /**
+     * 是否组长0否1是
+     */
+    @ApiModelProperty(name = "是否组长0否1是",required = true)
+    @NotNull(message = "是否组长不能为空")
+    private Long teamLeader;
 
-                /** 删除标志(0代表存在,1代表删除,默认0) */
-        private Long delFlag;
+    /**
+     * 删除标志(0代表存在,1代表删除,默认0)
+     */
+    private Long delFlag;
 
-                public void setId(Long id) {
-                    this.id = id;
-                }
+    public void setId(Long id) {
+        this.id = id;
+    }
 
-                public Long getId() {
-                    return id;
-                }
-                public void setProjectId(Long projectId) {
-                    this.projectId = projectId;
-                }
+    public Long getId() {
+        return id;
+    }
 
-                public Long getProjectId() {
-                    return projectId;
-                }
-                public void setExpertId(Long expertId) {
-                    this.expertId = expertId;
-                }
+    public void setProjectId(Long projectId) {
+        this.projectId = projectId;
+    }
 
-                public Long getExpertId() {
-                    return expertId;
-                }
-                public void setScore(Long score) {
-                    this.score = score;
-                }
+    public Long getProjectId() {
+        return projectId;
+    }
 
-                public Long getScore() {
-                    return score;
-                }
-                public void setEnvaluationState(Long envaluationState) {
-                    this.envaluationState = envaluationState;
-                }
+    public void setExpertId(Long expertId) {
+        this.expertId = expertId;
+    }
 
-                public Long getEnvaluationState() {
-                    return envaluationState;
-                }
-                public void setSelectionMode(Long selectionMode) {
-                    this.selectionMode = selectionMode;
-                }
+    public Long getExpertId() {
+        return expertId;
+    }
 
-                public Long getSelectionMode() {
-                    return selectionMode;
-                }
-                public void setTeamLeader(Long teamLeader) {
-                    this.teamLeader = teamLeader;
-                }
+    public void setScore(Long score) {
+        this.score = score;
+    }
 
-                public Long getTeamLeader() {
-                    return teamLeader;
-                }
-                public void setDelFlag(Long delFlag) {
-                    this.delFlag = delFlag;
-                }
+    public Long getScore() {
+        return score;
+    }
 
-                public Long getDelFlag() {
-                    return delFlag;
-                }
+    public void setevaluationState(Long evaluationState) {
+        this.evaluationState = evaluationState;
+    }
 
-        @Override
-        public String toString() {
-            return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+    public Long getevaluationState() {
+        return evaluationState;
+    }
+
+    public void setSelectionMode(Long selectionMode) {
+        this.selectionMode = selectionMode;
+    }
+
+    public Long getSelectionMode() {
+        return selectionMode;
+    }
+
+    public void setTeamLeader(Long teamLeader) {
+        this.teamLeader = teamLeader;
+    }
+
+    public Long getTeamLeader() {
+        return teamLeader;
+    }
+
+    public void setDelFlag(Long delFlag) {
+        this.delFlag = delFlag;
+    }
+
+    public Long getDelFlag() {
+        return delFlag;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                 .append("id", getId())
                 .append("projectId", getProjectId())
                 .append("expertId", getExpertId())
                 .append("score", getScore())
-                .append("envaluationState", getEnvaluationState())
+                .append("evaluationState", getevaluationState())
                 .append("selectionMode", getSelectionMode())
                 .append("teamLeader", getTeamLeader())
                 .append("delFlag", getDelFlag())
@@ -122,6 +153,6 @@
                 .append("createTime", getCreateTime())
                 .append("updateBy", getUpdateBy())
                 .append("updateTime", getUpdateTime())
-                    .toString();
-        }
-        }
\ No newline at end of file
+                .toString();
+    }
+}
\ No newline at end of file
diff --git a/expert-system/src/main/java/com/gkhy/system/domain/ProjectExpertDetail.java b/expert-system/src/main/java/com/gkhy/system/domain/ProjectExpertDetail.java
index 97d99e2..a27a06d 100644
--- a/expert-system/src/main/java/com/gkhy/system/domain/ProjectExpertDetail.java
+++ b/expert-system/src/main/java/com/gkhy/system/domain/ProjectExpertDetail.java
@@ -3,10 +3,16 @@
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.gkhy.common.annotation.Excel;
+import com.gkhy.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
-import com.rchuing.sis.common.annotation.Excel;
-import com.rchuing.sis.common.core.domain.BaseEntity;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
 
 /**
  * 项目专家得分明细对象 project_expert_detail
@@ -14,71 +20,94 @@
  * @author expert
  * @date 2024-11-14
  */
-        @TableName(resultMap = "com.gkhy.system.mapper.ProjectExpertDetailMapper.ProjectExpertDetailResult")
-        public class ProjectExpertDetail extends BaseEntity
-        {
-        private static final long serialVersionUID = 1L;
+@TableName(resultMap = "com.gkhy.system.mapper.ProjectExpertDetailMapper.ProjectExpertDetailResult")
+@ApiModel(value = "项目专家得分明细对象", description = "项目专家得分明细对象表")
+public class ProjectExpertDetail extends BaseEntity {
+    private static final long serialVersionUID = 1L;
 
-                /** $column.columnComment */
-            @TableId(value = "id", type = IdType.AUTO)
-        private Long id;
+    /**
+     * $column.columnComment
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
 
-                /** 项目专家表id */
-                @Excel(name = "项目专家表id")
-        private Long projectExpert;
+    /**
+     * 项目专家表id
+     */
+    @Excel(name = "项目专家表id")
+    @ApiModelProperty(value = "项目专家表id",required = true)
+    @NotNull(message = "参数不能为空")
+    private Long projectExpertId;
 
-                /** 内容 */
-                @Excel(name = "内容")
-        private String content;
+    /**
+     * 内容
+     */
+    @Excel(name = "内容")
+    @NotBlank(message = "内容不能为空")
+    @ApiModelProperty(value = "内容",required = true)
+    private String content;
 
-                /** 分值 */
-                @Excel(name = "分值")
-        private Long score;
+    /**
+     * 分值
+     */
+    @ApiModelProperty(value = "分值")
+    @NotNull(message = "分值不能为空")
+    private Long score;
 
-                /** 删除标志(0代表存在,1代表删除,默认0) */
-        private Long delFlag;
+    @NotBlank(message = "评分类型不能为空")
+    @ApiModelProperty(value = "类型1加分项2扣分项",required = true)
+    private String scoreType;
 
-                public void setId(Long id) {
-                    this.id = id;
-                }
+    /**
+     * 删除标志(0代表存在,1代表删除,默认0)
+     */
+    private Long delFlag;
 
-                public Long getId() {
-                    return id;
-                }
-                public void setProjectExpert(Long projectExpert) {
-                    this.projectExpert = projectExpert;
-                }
+    public void setId(Long id) {
+        this.id = id;
+    }
 
-                public Long getProjectExpert() {
-                    return projectExpert;
-                }
-                public void setContent(String content) {
-                    this.content = content;
-                }
+    public Long getId() {
+        return id;
+    }
 
-                public String getContent() {
-                    return content;
-                }
-                public void setScore(Long score) {
-                    this.score = score;
-                }
+    public void setProjectExpertId(Long projectExpertId) {
+        this.projectExpertId = projectExpertId;
+    }
 
-                public Long getScore() {
-                    return score;
-                }
-                public void setDelFlag(Long delFlag) {
-                    this.delFlag = delFlag;
-                }
+    public Long getProjectExpertId() {
+        return projectExpertId;
+    }
 
-                public Long getDelFlag() {
-                    return delFlag;
-                }
+    public void setContent(String content) {
+        this.content = content;
+    }
 
-        @Override
-        public String toString() {
-            return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+    public String getContent() {
+        return content;
+    }
+
+    public void setScore(Long score) {
+        this.score = score;
+    }
+
+    public Long getScore() {
+        return score;
+    }
+
+    public void setDelFlag(Long delFlag) {
+        this.delFlag = delFlag;
+    }
+
+    public Long getDelFlag() {
+        return delFlag;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                 .append("id", getId())
-                .append("projectExpert", getProjectExpert())
+                .append("projectExpert", getProjectExpertId())
                 .append("content", getContent())
                 .append("score", getScore())
                 .append("delFlag", getDelFlag())
@@ -86,6 +115,14 @@
                 .append("createTime", getCreateTime())
                 .append("updateBy", getUpdateBy())
                 .append("updateTime", getUpdateTime())
-                    .toString();
-        }
-        }
\ No newline at end of file
+                .toString();
+    }
+
+    public  String getScoreType() {
+        return scoreType;
+    }
+
+    public void setScoreType( String scoreType) {
+        this.scoreType = scoreType;
+    }
+}
\ No newline at end of file
diff --git a/expert-system/src/main/java/com/gkhy/system/domain/ProjectFile.java b/expert-system/src/main/java/com/gkhy/system/domain/ProjectFile.java
index 6e7bbf4..29a626d 100644
--- a/expert-system/src/main/java/com/gkhy/system/domain/ProjectFile.java
+++ b/expert-system/src/main/java/com/gkhy/system/domain/ProjectFile.java
@@ -3,10 +3,16 @@
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.gkhy.common.annotation.Excel;
+import com.gkhy.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
-import com.rchuing.sis.common.annotation.Excel;
-import com.rchuing.sis.common.core.domain.BaseEntity;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
 
 /**
  * 项目附件对象 project_file
@@ -14,135 +20,171 @@
  * @author expert
  * @date 2024-11-14
  */
-        @TableName(resultMap = "com.gkhy.system.mapper.ProjectFileMapper.ProjectFileResult")
-        public class ProjectFile extends BaseEntity
-        {
-        private static final long serialVersionUID = 1L;
+@TableName(resultMap = "com.gkhy.system.mapper.ProjectFileMapper.ProjectFileResult")
+@ApiModel(value = "项目附件对象", description = "项目附件对象表")
+public class ProjectFile extends BaseEntity {
+    private static final long serialVersionUID = 1L;
 
-                /** $column.columnComment */
-            @TableId(value = "id", type = IdType.AUTO)
-        private Long id;
+    /**
+     * $column.columnComment
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
 
-                /** 项目id */
-                @Excel(name = "项目id")
-        private Long projectId;
+    /**
+     * 项目id
+     */
+    @ApiModelProperty(value = "项目id",required = true)
+    @NotNull(message = "参数不能为空")
+    private Long projectId;
 
-                /** 项目附件类型1审批单附件2项目附件 */
-                @Excel(name = "项目附件类型1审批单附件2项目附件")
-        private String module;
+    /**
+     * 项目附件类型1审批单附件2项目附件
+     */
+    @ApiModelProperty(value = "项目附件类型1审批单附件2项目附件")
+    @NotBlank(message = "项目附件类型不能为空")
+    private String module;
 
-                /** 本地路径 */
-                @Excel(name = "本地路径")
-        private String filePath;
+    /**
+     * 本地路径
+     */
+    @Excel(name = "本地路径")
+    @ApiModelProperty(value = "本地路径")
+    private String filePath;
 
-                /** 访问路径 */
-                @Excel(name = "访问路径")
-        private String fileUrl;
+    /**
+     * 访问路径
+     */
+    @Excel(name = "访问路径")
+    @ApiModelProperty(value = "访问路径")
+    private String fileUrl;
 
-                /** 附件名称 */
-                @Excel(name = "附件名称")
-        private String fileName;
+    /**
+     * 附件名称
+     */
+    @ApiModelProperty(value = "附件名称")
+    private String fileName;
 
-                /** 后缀 */
-                @Excel(name = "后缀")
-        private String fileSuffix;
+    /**
+     * 后缀
+     */
+    @ApiModelProperty(value = "后缀")
+    private String fileSuffix;
 
-                /** 附件描述 */
-                @Excel(name = "附件描述")
-        private String fileDesc;
+    /**
+     * 附件描述
+     */
+    @ApiModelProperty(value = "附件描述")
+    private String fileDesc;
 
-                /** 文件大小 */
-                @Excel(name = "文件大小")
-        private Long fileSize;
+    /**
+     * 文件大小
+     */
+    @ApiModelProperty(value = "文件大小")
+    private Long fileSize;
 
-                /** 文件类型 */
-                @Excel(name = "文件类型")
-        private String fileType;
+    /**
+     * 文件类型
+     */
+    @ApiModelProperty(value = "文件类型")
+    private String fileType;
 
-                /** 删除标志(0代表存在,1代表删除,默认0) */
-        private Long delFlag;
+    /**
+     * 删除标志(0代表存在,1代表删除,默认0)
+     */
+    private Long delFlag;
 
-                public void setId(Long id) {
-                    this.id = id;
-                }
+    public void setId(Long id) {
+        this.id = id;
+    }
 
-                public Long getId() {
-                    return id;
-                }
-                public void setProjectId(Long projectId) {
-                    this.projectId = projectId;
-                }
+    public Long getId() {
+        return id;
+    }
 
-                public Long getProjectId() {
-                    return projectId;
-                }
-                public void setModule(String module) {
-                    this.module = module;
-                }
+    public void setProjectId(Long projectId) {
+        this.projectId = projectId;
+    }
 
-                public String getModule() {
-                    return module;
-                }
-                public void setFilePath(String filePath) {
-                    this.filePath = filePath;
-                }
+    public Long getProjectId() {
+        return projectId;
+    }
 
-                public String getFilePath() {
-                    return filePath;
-                }
-                public void setFileUrl(String fileUrl) {
-                    this.fileUrl = fileUrl;
-                }
+    public void setModule(String module) {
+        this.module = module;
+    }
 
-                public String getFileUrl() {
-                    return fileUrl;
-                }
-                public void setFileName(String fileName) {
-                    this.fileName = fileName;
-                }
+    public String getModule() {
+        return module;
+    }
 
-                public String getFileName() {
-                    return fileName;
-                }
-                public void setFileSuffix(String fileSuffix) {
-                    this.fileSuffix = fileSuffix;
-                }
+    public void setFilePath(String filePath) {
+        this.filePath = filePath;
+    }
 
-                public String getFileSuffix() {
-                    return fileSuffix;
-                }
-                public void setFileDesc(String fileDesc) {
-                    this.fileDesc = fileDesc;
-                }
+    public String getFilePath() {
+        return filePath;
+    }
 
-                public String getFileDesc() {
-                    return fileDesc;
-                }
-                public void setFileSize(Long fileSize) {
-                    this.fileSize = fileSize;
-                }
+    public void setFileUrl(String fileUrl) {
+        this.fileUrl = fileUrl;
+    }
 
-                public Long getFileSize() {
-                    return fileSize;
-                }
-                public void setFileType(String fileType) {
-                    this.fileType = fileType;
-                }
+    public String getFileUrl() {
+        return fileUrl;
+    }
 
-                public String getFileType() {
-                    return fileType;
-                }
-                public void setDelFlag(Long delFlag) {
-                    this.delFlag = delFlag;
-                }
+    public void setFileName(String fileName) {
+        this.fileName = fileName;
+    }
 
-                public Long getDelFlag() {
-                    return delFlag;
-                }
+    public String getFileName() {
+        return fileName;
+    }
 
-        @Override
-        public String toString() {
-            return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+    public void setFileSuffix(String fileSuffix) {
+        this.fileSuffix = fileSuffix;
+    }
+
+    public String getFileSuffix() {
+        return fileSuffix;
+    }
+
+    public void setFileDesc(String fileDesc) {
+        this.fileDesc = fileDesc;
+    }
+
+    public String getFileDesc() {
+        return fileDesc;
+    }
+
+    public void setFileSize(Long fileSize) {
+        this.fileSize = fileSize;
+    }
+
+    public Long getFileSize() {
+        return fileSize;
+    }
+
+    public void setFileType(String fileType) {
+        this.fileType = fileType;
+    }
+
+    public String getFileType() {
+        return fileType;
+    }
+
+    public void setDelFlag(Long delFlag) {
+        this.delFlag = delFlag;
+    }
+
+    public Long getDelFlag() {
+        return delFlag;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                 .append("id", getId())
                 .append("projectId", getProjectId())
                 .append("module", getModule())
@@ -158,6 +200,6 @@
                 .append("createTime", getCreateTime())
                 .append("updateBy", getUpdateBy())
                 .append("updateTime", getUpdateTime())
-                    .toString();
-        }
-        }
\ No newline at end of file
+                .toString();
+    }
+}
\ No newline at end of file
diff --git a/expert-system/src/main/java/com/gkhy/system/domain/ProjectManagement.java b/expert-system/src/main/java/com/gkhy/system/domain/ProjectManagement.java
index a1c68c9..473232d 100644
--- a/expert-system/src/main/java/com/gkhy/system/domain/ProjectManagement.java
+++ b/expert-system/src/main/java/com/gkhy/system/domain/ProjectManagement.java
@@ -1,14 +1,19 @@
 package com.gkhy.system.domain;
 
-import java.util.Date;
-import com.fasterxml.jackson.annotation.JsonFormat;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.gkhy.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
-import com.rchuing.sis.common.annotation.Excel;
-import com.rchuing.sis.common.core.domain.BaseEntity;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.util.Date;
+
 
 /**
  * 项目管理对象 project_management
@@ -16,181 +21,244 @@
  * @author expert
  * @date 2024-11-14
  */
-        @TableName(resultMap = "com.gkhy.system.mapper.ProjectManagementMapper.ProjectManagementResult")
-        public class ProjectManagement extends BaseEntity
-        {
-        private static final long serialVersionUID = 1L;
+@TableName(resultMap = "com.gkhy.system.mapper.ProjectManagementMapper.ProjectManagementResult")
+@ApiModel(value = "项目管理对象", description = "项目管理对象表")
+public class ProjectManagement extends BaseEntity {
+    private static final long serialVersionUID = 1L;
 
-                /** 主键 */
-            @TableId(value = "id", type = IdType.AUTO)
-        private Long id;
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
 
-                /** 项目名称 */
-                @Excel(name = "项目名称")
-        private String projectName;
+    /**
+     * 项目名称
+     */
+    @ApiModelProperty(value = "项目名称",required = true)
+    @NotBlank(message = "项目名称不能为空")
+    private String projectName;
 
-                /** 处室 */
-                @Excel(name = "处室")
-        private Long deptId;
+    /**
+     * 处室
+     */
+    @ApiModelProperty(value = "处室",required = true)
+    @NotNull(message = "处室不能为空")
+    private Long deptId;
 
-                /** 部门名称 */
-                @Excel(name = "部门名称")
-        private String deptName;
+    /**
+     * 部门名称
+     */
+    @ApiModelProperty(value = "处室名称",required = true)
+    @NotBlank(message = "处室不能为空")
+    private String deptName;
 
-                /** 被检单位 */
-                @Excel(name = "被检单位")
-        private String companyName;
+    /**
+     * 被检单位
+     */
+    @ApiModelProperty(value = "被检单位")
+    private String companyName;
 
-                /** 项目地址 */
-                @Excel(name = "项目地址")
-        private String projectAddress;
+    /**
+     * 项目地址
+     */
+    @ApiModelProperty(value = "项目地址",required = true)
+    @NotBlank(message = "项目地址不能为空")
+    private String projectAddress;
 
-                /** 部门带队人员 */
-                @Excel(name = "部门带队人员")
-        private String deptUserName;
+    /**
+     * 部门带队人员
+     */
+    @ApiModelProperty(value = "部门带队人员",required = true)
+    @NotBlank(message = "处室带队人员不能为空")
+    private String deptUserName;
 
-                /** 乐观锁 */
-                @Excel(name = "乐观锁")
-        private Long version;
+    /**
+     * 乐观锁
+     */
+    @ApiModelProperty(value = "乐观锁")
+    private Long version;
 
-                /** 审批状态(0暂存,1生成审批单,2审批通过,3审批驳回,4完结) */
-                @Excel(name = "审批状态(0暂存,1生成审批单,2审批通过,3审批驳回,4完结)")
-        private Long state;
+    /**
+     * 审批状态(0暂存,1生成审批单,2审批通过,3审批驳回,4完结)
+     */
+    @ApiModelProperty(value = "审批状态(0暂存,1选取专家,2生成审批单,3审批通过,4完结)")
+    private Long state;
 
-                /** 项目预计开始日期 */
-                @JsonFormat(pattern = "yyyy-MM-dd")
-                @Excel(name = "项目预计开始日期", width = 30, dateFormat = "yyyy-MM-dd")
-        private Date projectDateStart;
+    @ApiModelProperty(value = "步骤1暂存2专家选取3审批4完结")
+    private Long step;
 
-                /** 项目预计结束日期 */
-                @JsonFormat(pattern = "yyyy-MM-dd")
-                @Excel(name = "项目预计结束日期", width = 30, dateFormat = "yyyy-MM-dd")
-        private Date projectDateEnd;
+    /**
+     * 项目预计开始日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty(value = "项目预计开始日期",required = true)
+    @NotNull(message = "项目预计开始日期不能为空")
+    private Date projectDateStart;
 
-                /** 专家证书 */
-                @Excel(name = "专家证书")
-        private String expertCertificate;
+    /**
+     * 项目预计结束日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty(value = "项目预计结束日期", required = true)
+    @NotNull(message = "项目预计结束日期不能为空")
+    private Date projectDateEnd;
 
-                /** 评估状态0未评估1已评估 */
-                @Excel(name = "评估状态0未评估1已评估")
-        private Long envaluationState;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "项目审批时间")
+    private Date projectCheckTime;
 
-                /** 专家人数 */
-                @Excel(name = "专家人数")
-        private Long expertNum;
+    /**
+     * 专家证书
+     */
+    @ApiModelProperty(value = "专家证书")
+    private String expertCertificate;
 
-                /** 删除标志(0代表存在,1代表删除,默认0) */
-        private Long delFlag;
+    /**
+     * 评估状态0未评估1已评估
+     */
+    @ApiModelProperty(value = "评估状态0未评估1已评估")
+    private Long evaluationState;
 
-                public void setId(Long id) {
-                    this.id = id;
-                }
+    /**
+     * 专家人数
+     */
+    @ApiModelProperty(value = "专家人数")
+    private Long expertNum;
 
-                public Long getId() {
-                    return id;
-                }
-                public void setProjectName(String projectName) {
-                    this.projectName = projectName;
-                }
+    @ApiModelProperty(value = "专家id")
+    private Long expertId;
 
-                public String getProjectName() {
-                    return projectName;
-                }
-                public void setDeptId(Long deptId) {
-                    this.deptId = deptId;
-                }
+    @ApiModelProperty(value = "专家名称组长")
+    private String expertName;
 
-                public Long getDeptId() {
-                    return deptId;
-                }
-                public void setDeptName(String deptName) {
-                    this.deptName = deptName;
-                }
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "项目结束日期")
+    private Date projectEndTime;
 
-                public String getDeptName() {
-                    return deptName;
-                }
-                public void setCompanyName(String companyName) {
-                    this.companyName = companyName;
-                }
+    @ApiModelProperty(value = "项目总结")
+    private String desc;
 
-                public String getCompanyName() {
-                    return companyName;
-                }
-                public void setProjectAddress(String projectAddress) {
-                    this.projectAddress = projectAddress;
-                }
+    /**
+     * 删除标志(0代表存在,1代表删除,默认0)
+     */
+    private Long delFlag;
 
-                public String getProjectAddress() {
-                    return projectAddress;
-                }
-                public void setDeptUserName(String deptUserName) {
-                    this.deptUserName = deptUserName;
-                }
+    public void setId(Long id) {
+        this.id = id;
+    }
 
-                public String getDeptUserName() {
-                    return deptUserName;
-                }
-                public void setVersion(Long version) {
-                    this.version = version;
-                }
+    public Long getId() {
+        return id;
+    }
 
-                public Long getVersion() {
-                    return version;
-                }
-                public void setState(Long state) {
-                    this.state = state;
-                }
+    public void setProjectName(String projectName) {
+        this.projectName = projectName;
+    }
 
-                public Long getState() {
-                    return state;
-                }
-                public void setProjectDateStart(Date projectDateStart) {
-                    this.projectDateStart = projectDateStart;
-                }
+    public String getProjectName() {
+        return projectName;
+    }
 
-                public Date getProjectDateStart() {
-                    return projectDateStart;
-                }
-                public void setProjectDateEnd(Date projectDateEnd) {
-                    this.projectDateEnd = projectDateEnd;
-                }
+    public void setDeptId(Long deptId) {
+        this.deptId = deptId;
+    }
 
-                public Date getProjectDateEnd() {
-                    return projectDateEnd;
-                }
-                public void setExpertCertificate(String expertCertificate) {
-                    this.expertCertificate = expertCertificate;
-                }
+    public Long getDeptId() {
+        return deptId;
+    }
 
-                public String getExpertCertificate() {
-                    return expertCertificate;
-                }
-                public void setEnvaluationState(Long envaluationState) {
-                    this.envaluationState = envaluationState;
-                }
+    public void setDeptName(String deptName) {
+        this.deptName = deptName;
+    }
 
-                public Long getEnvaluationState() {
-                    return envaluationState;
-                }
-                public void setExpertNum(Long expertNum) {
-                    this.expertNum = expertNum;
-                }
+    public String getDeptName() {
+        return deptName;
+    }
 
-                public Long getExpertNum() {
-                    return expertNum;
-                }
-                public void setDelFlag(Long delFlag) {
-                    this.delFlag = delFlag;
-                }
+    public void setCompanyName(String companyName) {
+        this.companyName = companyName;
+    }
 
-                public Long getDelFlag() {
-                    return delFlag;
-                }
+    public String getCompanyName() {
+        return companyName;
+    }
 
-        @Override
-        public String toString() {
-            return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+    public void setProjectAddress(String projectAddress) {
+        this.projectAddress = projectAddress;
+    }
+
+    public String getProjectAddress() {
+        return projectAddress;
+    }
+
+    public void setDeptUserName(String deptUserName) {
+        this.deptUserName = deptUserName;
+    }
+
+    public String getDeptUserName() {
+        return deptUserName;
+    }
+
+    public void setVersion(Long version) {
+        this.version = version;
+    }
+
+    public Long getVersion() {
+        return version;
+    }
+
+    public void setState(Long state) {
+        this.state = state;
+    }
+
+    public Long getState() {
+        return state;
+    }
+
+    public void setProjectDateStart(Date projectDateStart) {
+        this.projectDateStart = projectDateStart;
+    }
+
+    public Date getProjectDateStart() {
+        return projectDateStart;
+    }
+
+    public void setProjectDateEnd(Date projectDateEnd) {
+        this.projectDateEnd = projectDateEnd;
+    }
+
+    public Date getProjectDateEnd() {
+        return projectDateEnd;
+    }
+
+    public void setExpertCertificate(String expertCertificate) {
+        this.expertCertificate = expertCertificate;
+    }
+
+    public String getExpertCertificate() {
+        return expertCertificate;
+    }
+
+    public void setExpertNum(Long expertNum) {
+        this.expertNum = expertNum;
+    }
+
+    public Long getExpertNum() {
+        return expertNum;
+    }
+
+    public void setDelFlag(Long delFlag) {
+        this.delFlag = delFlag;
+    }
+
+    public Long getDelFlag() {
+        return delFlag;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                 .append("id", getId())
                 .append("projectName", getProjectName())
                 .append("deptId", getDeptId())
@@ -204,13 +272,70 @@
                 .append("projectDateStart", getProjectDateStart())
                 .append("projectDateEnd", getProjectDateEnd())
                 .append("expertCertificate", getExpertCertificate())
-                .append("envaluationState", getEnvaluationState())
+                .append("evaluationState", getEvaluationState())
                 .append("expertNum", getExpertNum())
                 .append("delFlag", getDelFlag())
                 .append("createBy", getCreateBy())
                 .append("createTime", getCreateTime())
                 .append("updateBy", getUpdateBy())
                 .append("updateTime", getUpdateTime())
-                    .toString();
-        }
-        }
\ No newline at end of file
+                .toString();
+    }
+
+    public Date getProjectCheckTime() {
+        return projectCheckTime;
+    }
+
+    public void setProjectCheckTime(Date projectCheckTime) {
+        this.projectCheckTime = projectCheckTime;
+    }
+
+
+    public String getDesc() {
+        return desc;
+    }
+
+    public void setDesc(String desc) {
+        this.desc = desc;
+    }
+
+    public Long getExpertId() {
+        return expertId;
+    }
+
+    public void setExpertId(Long expertId) {
+        this.expertId = expertId;
+    }
+
+    public String getExpertName() {
+        return expertName;
+    }
+
+    public void setExpertName(String expertName) {
+        this.expertName = expertName;
+    }
+
+    public Date getProjectEndTime() {
+        return projectEndTime;
+    }
+
+    public void setProjectEndTime(Date projectEndTime) {
+        this.projectEndTime = projectEndTime;
+    }
+
+    public Long getStep() {
+        return step;
+    }
+
+    public void setStep(Long step) {
+        this.step = step;
+    }
+
+    public Long getEvaluationState() {
+        return evaluationState;
+    }
+
+    public void setEvaluationState(Long evaluationState) {
+        this.evaluationState = evaluationState;
+    }
+}
\ No newline at end of file
diff --git a/expert-system/src/main/java/com/gkhy/system/domain/SysExpertClassify.java b/expert-system/src/main/java/com/gkhy/system/domain/SysExpertClassify.java
index 532710d..dec36d2 100644
--- a/expert-system/src/main/java/com/gkhy/system/domain/SysExpertClassify.java
+++ b/expert-system/src/main/java/com/gkhy/system/domain/SysExpertClassify.java
@@ -1,19 +1,15 @@
-package com.gkhy.assess.system.domain;
+package com.gkhy.system.domain;
 
 import com.baomidou.mybatisplus.annotation.*;
-
-import java.io.Serializable;
-import java.time.LocalDateTime;
-import java.util.List;
-
 import com.fasterxml.jackson.annotation.JsonInclude;
-import com.gkhy.assess.common.domain.BaseEntity;
+import com.gkhy.common.core.domain.BaseEntity;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import lombok.Setter;
 
 import javax.validation.constraints.NotBlank;
+import java.util.List;
 
 import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL;
 
diff --git a/expert-system/src/main/java/com/gkhy/system/domain/SysExpertInfo.java b/expert-system/src/main/java/com/gkhy/system/domain/SysExpertInfo.java
index 2d201cc..c83affc 100644
--- a/expert-system/src/main/java/com/gkhy/system/domain/SysExpertInfo.java
+++ b/expert-system/src/main/java/com/gkhy/system/domain/SysExpertInfo.java
@@ -1,12 +1,9 @@
-package com.gkhy.assess.system.domain;
+package com.gkhy.system.domain;
 
 import com.baomidou.mybatisplus.annotation.*;
-
-import java.io.Serializable;
-import java.time.LocalDateTime;
-
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonInclude;
-import com.gkhy.assess.common.domain.BaseEntity;
+import com.gkhy.common.core.domain.BaseEntity;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
@@ -17,6 +14,7 @@
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 import javax.validation.constraints.Pattern;
+import java.util.Date;
 
 import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL;
 
@@ -66,7 +64,8 @@
     @NotNull(message ="出生日期不能为空" )
     @ApiModelProperty("出生日期")
     @TableField("birthday")
-    private LocalDateTime birthday;
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date birthday;
 
     @NotBlank(message ="手机号不能为空" )
     @Length(min = 11, max = 11, message = "手机号只能为11位")
@@ -208,6 +207,25 @@
     @TableField("level")
     private String level;
 
+    @ApiModelProperty("评定等级1、一级,2、二级,3、三级")
+    @TableField("rating_level")
+    private String ratingLevel;
 
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @TableField("employment_date_start")
+    private Date employmentDateStart;
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @TableField("employment_date_end")
+    private Date employmentDateEnd;
+
+    @NotNull(message ="业务处室不能为空" )
+    @ApiModelProperty("业务处室")
+    @TableField("dept_id")
+    private Long deptId;
+
+    @ApiModelProperty("专家证书")
+    @TableField("expert_certificate")
+    private String expertCertificate;
 
 }
diff --git a/expert-system/src/main/java/com/gkhy/system/domain/SysSettings.java b/expert-system/src/main/java/com/gkhy/system/domain/SysSettings.java
index 92bd6e4..93a4daf 100644
--- a/expert-system/src/main/java/com/gkhy/system/domain/SysSettings.java
+++ b/expert-system/src/main/java/com/gkhy/system/domain/SysSettings.java
@@ -1,12 +1,15 @@
 package com.gkhy.system.domain;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.gkhy.common.annotation.Excel;
+import com.gkhy.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
-import com.rchuing.sis.common.annotation.Excel;
-import com.rchuing.sis.common.core.domain.BaseEntity;
+
+import javax.validation.constraints.NotBlank;
+
 
 /**
  * 系统配置对象 sys_settings
@@ -14,27 +17,31 @@
  * @author expert
  * @date 2024-11-13
  */
-        @TableName(resultMap = "com.gkhy.system.mapper.SysSettingsMapper.SysSettingsResult")
-        public class SysSettings extends BaseEntity
-        {
-        private static final long serialVersionUID = 1L;
+@TableName(resultMap = "com.gkhy.system.mapper.SysSettingsMapper.SysSettingsResult")
+@ApiModel(value = "系统配置对象", description = "专家申请系统设置")
+public class SysSettings extends BaseEntity {
+    private static final long serialVersionUID = 1L;
 
-                /** 1开启2关闭 */
-                @Excel(name = "1开启2关闭")
-        private String state;
+    /**
+     * 1开启2关闭
+     */
+    @Excel(name = "1开启2关闭")
+    @NotBlank(message = "参数不能为空")
+    @ApiModelProperty("1开启2关闭")
+    private String state;
 
-                public void setState(String state) {
-                    this.state = state;
-                }
+    public void setState(String state) {
+        this.state = state;
+    }
 
-                public String getState() {
-                    return state;
-                }
+    public String getState() {
+        return state;
+    }
 
-        @Override
-        public String toString() {
-            return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                 .append("state", getState())
-                    .toString();
-        }
-        }
\ No newline at end of file
+                .toString();
+    }
+}
\ No newline at end of file
diff --git a/expert-system/src/main/java/com/gkhy/system/domain/vo/request/ProjectArchiveReq.java b/expert-system/src/main/java/com/gkhy/system/domain/vo/request/ProjectArchiveReq.java
index 61f481f..8ad5648 100644
--- a/expert-system/src/main/java/com/gkhy/system/domain/vo/request/ProjectArchiveReq.java
+++ b/expert-system/src/main/java/com/gkhy/system/domain/vo/request/ProjectArchiveReq.java
@@ -1,4 +1,36 @@
 package com.gkhy.system.domain.vo.request;
 
-public class ProjectArchiveReq {
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.gkhy.system.domain.ProjectFile;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+@ApiModel(value = "项目归档" , description = "项目归档")
+@Data
+public class ProjectArchiveReq implements Serializable {
+    private static final long serialVersionUID = 1L;
+    /**
+     * 主键
+     */
+    @ApiModelProperty(value = "项目id",required = true)
+    @NotNull
+    private Long id;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(name = "项目结束日期",required = true)
+    @NotNull(message = "结束日期必填")
+    private Date projectEndTime;
+
+    @ApiModelProperty(name = "项目总结")
+    private String desc;
+
+    @ApiModelProperty(name = "项目附件")
+    private List<ProjectFile> projectFile;
+
 }
diff --git a/expert-system/src/main/java/com/gkhy/system/domain/vo/request/ProjectCheckReq.java b/expert-system/src/main/java/com/gkhy/system/domain/vo/request/ProjectCheckReq.java
index cf8e40e..0fa6108 100644
--- a/expert-system/src/main/java/com/gkhy/system/domain/vo/request/ProjectCheckReq.java
+++ b/expert-system/src/main/java/com/gkhy/system/domain/vo/request/ProjectCheckReq.java
@@ -1,4 +1,27 @@
 package com.gkhy.system.domain.vo.request;
 
-public class ProjectCheckReq {
+import com.gkhy.system.domain.ProjectFile;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.List;
+
+@ApiModel(value = "项目审批" , description = "项目审批")
+@Data
+public class ProjectCheckReq implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(name = "审批状态(3审批通过、1审批不通)",required = true)
+    @NotNull(message = "参数不能为空")
+    private Long state;
+
+    @ApiModelProperty(value = "项目id",required = true)
+    @NotNull
+    private Long id;
+
+    @ApiModelProperty(name = "项目附件-类型1审批单附件")
+    private List<ProjectFile> projectFile;
 }
diff --git a/expert-system/src/main/java/com/gkhy/system/domain/vo/request/ProjectExpertSaveBatchReqDto.java b/expert-system/src/main/java/com/gkhy/system/domain/vo/request/ProjectExpertSaveBatchReqDto.java
index 806236e..f3c336f 100644
--- a/expert-system/src/main/java/com/gkhy/system/domain/vo/request/ProjectExpertSaveBatchReqDto.java
+++ b/expert-system/src/main/java/com/gkhy/system/domain/vo/request/ProjectExpertSaveBatchReqDto.java
@@ -1,4 +1,30 @@
 package com.gkhy.system.domain.vo.request;
 
-public class ProjectExpertSaveBatchReqDto {
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.List;
+
+@ApiModel(value = "项目专家关联对象批量处理", description = "项目专家关联对象批量处理")
+@Data
+public class ProjectExpertSaveBatchReqDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "删除数据")
+    private List<Long> delData;
+
+    @ApiModelProperty(value = "新增编辑数据")
+    @NotEmpty
+    private List<ProjectExpertSaveReqDto> saveData;
+    /**
+     * 项目id
+     */
+    @ApiModelProperty(name = "项目id",required = true)
+    @NotNull(message = "项目不能为空")
+    private Long id;
 }
diff --git a/expert-system/src/main/java/com/gkhy/system/domain/vo/request/ProjectExpertSaveReqDto.java b/expert-system/src/main/java/com/gkhy/system/domain/vo/request/ProjectExpertSaveReqDto.java
index 4a18db1..ac9fb77 100644
--- a/expert-system/src/main/java/com/gkhy/system/domain/vo/request/ProjectExpertSaveReqDto.java
+++ b/expert-system/src/main/java/com/gkhy/system/domain/vo/request/ProjectExpertSaveReqDto.java
@@ -1,16 +1,12 @@
-package com.gkhy.system.domain;
+package com.gkhy.system.domain.vo.request;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.gkhy.common.annotation.Excel;
-import com.gkhy.common.core.domain.BaseEntity;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
+import lombok.Data;
 
+import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
+import java.io.Serializable;
 
 
 /**
@@ -19,141 +15,47 @@
  * @author expert
  * @date 2024-11-14
  */
-@TableName(resultMap = "com.gkhy.system.mapper.ProjectExpertMapper.ProjectExpertResult")
-@ApiModel(value = "项目专家关联对象", description = "项目专家关联对象表")
-public class ProjectExpert extends BaseEntity {
+@ApiModel(value = "项目专家关联对象新增编辑", description = "项目专家关联对象新增编辑")
+@Data
+public class ProjectExpertSaveReqDto implements Serializable {
     private static final long serialVersionUID = 1L;
 
-    /**
-     * $column.columnComment
-     */
-    @TableId(value = "id", type = IdType.AUTO)
+    @ApiModelProperty(value = "id")
     private Long id;
 
-    /**
-     * 项目id
-     */
-    @ApiModelProperty(name = "项目名称",required = true)
-    @NotNull(message = "项目不能为空")
-    private Long projectId;
-
-    /**
-     * 专家id
-     */
+//    /**
+//     * 项目id
+//     */
+//    @ApiModelProperty(name = "项目名称",required = true)
+//    @NotNull(message = "项目不能为空")
+//    private Long projectId;
     @ApiModelProperty(name = "专家id",required = true)
     @NotNull(message = "选择专家")
     private Long expertId;
 
-    /**
-     * 总分
-     */
-    @Excel(name = "总分")
-    private Long score;
+    @ApiModelProperty(name = "专家名称",required = true)
+    @NotBlank(message = "选择专家名称")
+    private String expertName;
 
-    /**
-     * 评估状态0未评估1已评估
-     */
-    @ApiModelProperty(name = "评估状态0未评估1已评估")
-    private Long envaluationState;
+//    /**
+//     * 总分
+//     */
+//    @Excel(name = "总分")
+//    private Long score;
 
-    /**
-     * 选取方式1固定2随机
-     */
+//    /**
+//     * 评估状态0未评估1已评估
+//     */
+//    @ApiModelProperty(name = "评估状态0未评估1已评估")
+//    private Long evaluationState;
+
     @ApiModelProperty(name = "选取方式1固定2随机",required = true)
     @NotNull(message = "选取方式不能为空")
     private Long selectionMode;
 
-    /**
-     * 是否组长0否1是
-     */
     @ApiModelProperty(name = "是否组长0否1是",required = true)
     @NotNull(message = "是否组长不能为空")
     private Long teamLeader;
 
-    /**
-     * 删除标志(0代表存在,1代表删除,默认0)
-     */
-    private Long delFlag;
 
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public Long getId() {
-        return id;
-    }
-
-    public void setProjectId(Long projectId) {
-        this.projectId = projectId;
-    }
-
-    public Long getProjectId() {
-        return projectId;
-    }
-
-    public void setExpertId(Long expertId) {
-        this.expertId = expertId;
-    }
-
-    public Long getExpertId() {
-        return expertId;
-    }
-
-    public void setScore(Long score) {
-        this.score = score;
-    }
-
-    public Long getScore() {
-        return score;
-    }
-
-    public void setEnvaluationState(Long envaluationState) {
-        this.envaluationState = envaluationState;
-    }
-
-    public Long getEnvaluationState() {
-        return envaluationState;
-    }
-
-    public void setSelectionMode(Long selectionMode) {
-        this.selectionMode = selectionMode;
-    }
-
-    public Long getSelectionMode() {
-        return selectionMode;
-    }
-
-    public void setTeamLeader(Long teamLeader) {
-        this.teamLeader = teamLeader;
-    }
-
-    public Long getTeamLeader() {
-        return teamLeader;
-    }
-
-    public void setDelFlag(Long delFlag) {
-        this.delFlag = delFlag;
-    }
-
-    public Long getDelFlag() {
-        return delFlag;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
-                .append("id", getId())
-                .append("projectId", getProjectId())
-                .append("expertId", getExpertId())
-                .append("score", getScore())
-                .append("envaluationState", getEnvaluationState())
-                .append("selectionMode", getSelectionMode())
-                .append("teamLeader", getTeamLeader())
-                .append("delFlag", getDelFlag())
-                .append("createBy", getCreateBy())
-                .append("createTime", getCreateTime())
-                .append("updateBy", getUpdateBy())
-                .append("updateTime", getUpdateTime())
-                .toString();
-    }
 }
\ No newline at end of file
diff --git a/expert-system/src/main/java/com/gkhy/system/domain/vo/request/ProjectExpertScoreSaveReq.java b/expert-system/src/main/java/com/gkhy/system/domain/vo/request/ProjectExpertScoreSaveReq.java
index 104a6ab..5b8d301 100644
--- a/expert-system/src/main/java/com/gkhy/system/domain/vo/request/ProjectExpertScoreSaveReq.java
+++ b/expert-system/src/main/java/com/gkhy/system/domain/vo/request/ProjectExpertScoreSaveReq.java
@@ -1,6 +1,49 @@
 package com.gkhy.system.domain.vo.request;
 
-import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 
-public class ProjectExpertScoreReq implements Serializable {
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.List;
+
+@ApiModel(value = "项目专家人员考评分数" , description = "项目专家人员考评分数")
+@Data
+public class ProjectExpertScoreSaveReq implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "考评保存数据")
+    private List<Score> saveData;
+
+    @ApiModelProperty(value = "删除数据")
+    private List<Long> delData;
+
+    @ApiModelProperty(value = "项目专家id",required = true)
+    @NotNull
+    private Long projectExpertId;
+
+    @ApiModelProperty(value = "总分",required = true)
+    @NotNull(message = "得分不能为空")
+    private Long score;
+
+    @Data
+    static public class Score {
+
+        @ApiModelProperty(value = "数据id",required = false)
+        private Long id;
+
+        @ApiModelProperty(value = "评分",required = true)
+        @NotNull(message = "分数不能为空")
+        private Long score;
+
+        @ApiModelProperty(value = "类型1加分项2扣分项",required = true)
+        @NotBlank(message = "类型不能为空")
+        private String scoreType;
+
+        @ApiModelProperty(value = "评分内容",required = true)
+        @NotBlank(message = "内容不能为空")
+        private String content;
+    }
 }
diff --git a/expert-system/src/main/java/com/gkhy/system/domain/vo/request/ProjectExpertStateReq.java b/expert-system/src/main/java/com/gkhy/system/domain/vo/request/ProjectExpertStateReq.java
index 8ad5648..fc29c1f 100644
--- a/expert-system/src/main/java/com/gkhy/system/domain/vo/request/ProjectExpertStateReq.java
+++ b/expert-system/src/main/java/com/gkhy/system/domain/vo/request/ProjectExpertStateReq.java
@@ -1,36 +1,27 @@
 package com.gkhy.system.domain.vo.request;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
-import com.gkhy.system.domain.ProjectFile;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
-import javax.validation.constraints.NotNull;
 import java.io.Serializable;
 import java.util.Date;
-import java.util.List;
 
-@ApiModel(value = "项目归档" , description = "项目归档")
+@ApiModel(value = "项目考评筛选" , description = "项目考评筛选")
 @Data
-public class ProjectArchiveReq implements Serializable {
+public class ProjectExpertStateReq implements Serializable {
     private static final long serialVersionUID = 1L;
-    /**
-     * 主键
-     */
-    @ApiModelProperty(value = "项目id",required = true)
-    @NotNull
-    private Long id;
 
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @ApiModelProperty(name = "项目结束日期",required = true)
-    @NotNull(message = "结束日期必填")
-    private Date projectEndTime;
+    @ApiModelProperty(value = "项目审批时间")
+    private Date projectCheckTime;
 
-    @ApiModelProperty(name = "项目总结")
-    private String desc;
+    @ApiModelProperty(value = "项目名称")
+    private String projectName;
 
-    @ApiModelProperty(name = "项目附件")
-    private List<ProjectFile> projectFile;
+    @ApiModelProperty(value = "评估状态0未评估1已评估")
+    private Long evaluationState;
+
 
 }
diff --git a/expert-system/src/main/java/com/gkhy/system/domain/vo/request/ProjectExpertTeamLeaderReqDto.java b/expert-system/src/main/java/com/gkhy/system/domain/vo/request/ProjectExpertTeamLeaderReqDto.java
index 4a62d4e..404fd32 100644
--- a/expert-system/src/main/java/com/gkhy/system/domain/vo/request/ProjectExpertTeamLeaderReqDto.java
+++ b/expert-system/src/main/java/com/gkhy/system/domain/vo/request/ProjectExpertTeamLeaderReqDto.java
@@ -1,4 +1,20 @@
 package com.gkhy.system.domain.vo.request;
 
-public class ProjectExpertTeamLeaderReqDto {
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+@ApiModel(value = "项目专家关联对象设置组长操作", description = "项目专家关联对象设置组长操作")
+@Data
+public class ProjectExpertTeamLeaderReqDto implements Serializable {
+    private static final long serialVersionUID = 1L;
+    @ApiModelProperty(value = "id",required = true)
+    @NotNull
+    private Long id;
+
+    @ApiModelProperty(name = "是否组长0否1是",required = true)
+    @NotNull(message = "是否组长不能为空")
+    private Long teamLeader;
 }
diff --git a/expert-system/src/main/java/com/gkhy/system/domain/vo/request/ProjectManageSaveReq.java b/expert-system/src/main/java/com/gkhy/system/domain/vo/request/ProjectManageSaveReq.java
index 29a90ea..fc780ea 100644
--- a/expert-system/src/main/java/com/gkhy/system/domain/vo/request/ProjectManageSaveReq.java
+++ b/expert-system/src/main/java/com/gkhy/system/domain/vo/request/ProjectManageSaveReq.java
@@ -1,4 +1,85 @@
 package com.gkhy.system.domain.vo.request;
 
-public class ProjectManageSaveReq {
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.Date;
+
+@ApiModel(value = "项目管理保存" , description = "项目管理保存")
+@Data
+public class ProjectManageSaveReq implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @ApiModelProperty(value = "id")
+    private Long id;
+
+    /**
+     * 项目名称
+     */
+    @ApiModelProperty(name = "项目名称",required = true)
+    @NotBlank(message = "项目名称不能为空")
+    private String projectName;
+
+    /**
+     * 处室
+     */
+    @ApiModelProperty(name = "处室",required = true)
+    @NotNull(message = "处室不能为空")
+    private Long deptId;
+
+    /**
+     * 部门名称
+     */
+    @ApiModelProperty(name = "处室名称",required = true)
+    @NotBlank(message = "处室不能为空")
+    private String deptName;
+
+    /**
+     * 被检单位
+     */
+    @ApiModelProperty(name = "被检单位")
+    private String companyName;
+
+    /**
+     * 项目地址
+     */
+    @ApiModelProperty(name = "项目地址",required = true)
+    @NotBlank(message = "项目地址不能为空")
+    private String projectAddress;
+
+    /**
+     * 部门带队人员
+     */
+    @ApiModelProperty(name = "部门带队人员",required = true)
+    @NotBlank(message = "处室带队人员不能为空")
+    private String deptUserName;
+
+    /**
+     * 项目预计开始日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty(name = "项目预计开始日期",required = true)
+    @NotNull(message = "项目预计开始日期不能为空")
+    private Date projectDateStart;
+
+    /**
+     * 项目预计结束日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty(name = "项目预计结束日期", required = true)
+    @NotNull(message = "项目预计结束日期不能为空")
+    private Date projectDateEnd;
+
+
+    @ApiModelProperty(name = "项目概况",required = true)
+    @NotBlank(message = "项目概况不能为空")
+    private String remark;
 }
diff --git a/expert-system/src/main/java/com/gkhy/system/domain/vo/request/SysExpertInfoRoundReq.java b/expert-system/src/main/java/com/gkhy/system/domain/vo/request/SysExpertInfoRoundReq.java
index db84763..4c1797f 100644
--- a/expert-system/src/main/java/com/gkhy/system/domain/vo/request/SysExpertInfoRoundReq.java
+++ b/expert-system/src/main/java/com/gkhy/system/domain/vo/request/SysExpertInfoRoundReq.java
@@ -1,4 +1,25 @@
 package com.gkhy.system.domain.vo.request;
 
-public class SysExpertInfoRoundReq {
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.List;
+
+@ApiModel(value = "项目专家选取随机", description = "项目专家选取随机")
+@Data
+public class SysExpertInfoRoundReq implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("专家领域")
+    private List<String> domain;
+
+    @ApiModelProperty("专家数量")
+    @NotNull
+    private Integer num;
+
+    @ApiModelProperty("评定等级1、一级,2、二级,3、三级")
+    private List<String> ratingLevel;
 }
diff --git a/expert-system/src/main/java/com/gkhy/system/domain/vo/request/SysExpertSearchReqDto.java b/expert-system/src/main/java/com/gkhy/system/domain/vo/request/SysExpertSearchReqDto.java
index e873d6b..5a3145f 100644
--- a/expert-system/src/main/java/com/gkhy/system/domain/vo/request/SysExpertSearchReqDto.java
+++ b/expert-system/src/main/java/com/gkhy/system/domain/vo/request/SysExpertSearchReqDto.java
@@ -1,4 +1,35 @@
 package com.gkhy.system.domain.vo.request;
 
-public class SysExpertSearchReqDto {
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.hibernate.validator.constraints.Length;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Pattern;
+import java.io.Serializable;
+
+/**
+ * @author admin
+ */
+@Data
+@ApiModel(value = "专家查询信息审核", description = "专家查询信息审核")
+public class SysExpertSearchReqDto implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @NotBlank(message ="手机号不能为空" )
+    @Length(min = 11, max = 11, message = "手机号只能为11位")
+    @Pattern(regexp = "^[1][3,4,5,6,7,8,9][0-9]{9}$",message = "手机号码有误!")
+    @ApiModelProperty("手机号")
+    private String phone;
+
+    @NotBlank(message ="身份证号码不能为空" )
+    @Length(min = 18, max = 18, message = "身份证只能为18位")
+    @ApiModelProperty("身份证号码")
+    private String idCard;
+
+    @NotNull(message ="业务处室不能为空" )
+    @ApiModelProperty("业务处室")
+    private Long deptId;
 }
diff --git a/expert-system/src/main/java/com/gkhy/system/domain/vo/request/SysProjectExpertReq.java b/expert-system/src/main/java/com/gkhy/system/domain/vo/request/SysProjectExpertReq.java
index 4c1797f..3518f21 100644
--- a/expert-system/src/main/java/com/gkhy/system/domain/vo/request/SysProjectExpertReq.java
+++ b/expert-system/src/main/java/com/gkhy/system/domain/vo/request/SysProjectExpertReq.java
@@ -1,25 +1,35 @@
 package com.gkhy.system.domain.vo.request;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
-import javax.validation.constraints.NotNull;
 import java.io.Serializable;
-import java.util.List;
+import java.util.Date;
 
-@ApiModel(value = "项目专家选取随机", description = "项目专家选取随机")
+@ApiModel(value = "专家考评记录查询条件", description = "专家考评记录查询条件")
 @Data
-public class SysExpertInfoRoundReq implements Serializable {
+public class SysProjectExpertReq implements Serializable {
     private static final long serialVersionUID = 1L;
 
     @ApiModelProperty("专家领域")
-    private List<String> domain;
+    private String domain;
 
-    @ApiModelProperty("专家数量")
-    @NotNull
-    private Integer num;
+    @ApiModelProperty("专家姓名")
+    private String name;
 
-    @ApiModelProperty("评定等级1、一级,2、二级,3、三级")
-    private List<String> ratingLevel;
+    @ApiModelProperty("身份证号")
+    private String idCard;
+
+    @ApiModelProperty("项目名称")
+    private String projectName;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty( "评审开始日期")
+    private Date startTime;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty( "评审结束日期")
+    private Date endTime;
 }
diff --git a/expert-system/src/main/java/com/gkhy/system/domain/vo/response/ProjectExpertCheckResp.java b/expert-system/src/main/java/com/gkhy/system/domain/vo/response/ProjectExpertCheckResp.java
index 98ecae1..a55f381 100644
--- a/expert-system/src/main/java/com/gkhy/system/domain/vo/response/ProjectExpertCheckResp.java
+++ b/expert-system/src/main/java/com/gkhy/system/domain/vo/response/ProjectExpertCheckResp.java
@@ -1,4 +1,40 @@
 package com.gkhy.system.domain.vo.response;
 
-public class ProjectExpertCheckResp {
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+@ApiModel(value = "项目专家审批详情", description = "项目专家审批详情")
+@Data
+public class ProjectExpertCheckResp implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(name = "项目专家id")
+    private Long id;
+
+    @ApiModelProperty(name = "专家id")
+    private Long expertId;
+
+    @ApiModelProperty("专家名称")
+    private String name;
+
+    @ApiModelProperty("性别(0男,1女,2未知,默认2)")
+    private Integer sex;
+
+    @ApiModelProperty("身份证号码")
+    private String idCard;
+
+    @ApiModelProperty(name = "选取方式1固定2随机")
+    private Long selectionMode;
+
+    @ApiModelProperty(name = "是否组长0否1是")
+    private Long teamLeader;
+
+    @ApiModelProperty("评定等级1、一级,2、二级,3、三级")
+    private String ratingLevel;
+
+    @ApiModelProperty("专家领域")
+    private String domain;
+
 }
diff --git a/expert-system/src/main/java/com/gkhy/system/domain/vo/response/ProjectExpertEvaluationResp.java b/expert-system/src/main/java/com/gkhy/system/domain/vo/response/ProjectExpertEvaluationResp.java
index ff846a0..c0c7039 100644
--- a/expert-system/src/main/java/com/gkhy/system/domain/vo/response/ProjectExpertEvaluationResp.java
+++ b/expert-system/src/main/java/com/gkhy/system/domain/vo/response/ProjectExpertEvaluationResp.java
@@ -1,4 +1,25 @@
 package com.gkhy.system.domain.vo.response;
 
-public class ProjectExpertEvaluationResp {
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@ApiModel(value = "项目专家考评列表", description = "项目专家考评列表")
+@Data
+public class ProjectExpertEvaluationResp  extends ProjectExpertCheckResp implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 总分
+     */
+    @ApiModelProperty(name = "总分")
+    private Long score;
+
+    /**
+     * 评估状态0未评估1已评估
+     */
+    @ApiModelProperty(name = "评估状态0未评估1已评估")
+    private Long evaluationState;
 }
diff --git a/expert-system/src/main/java/com/gkhy/system/domain/vo/response/ProjectExpertManagementInfoRes.java b/expert-system/src/main/java/com/gkhy/system/domain/vo/response/ProjectExpertManagementInfoRes.java
index 6c60811..84c81da 100644
--- a/expert-system/src/main/java/com/gkhy/system/domain/vo/response/ProjectExpertManagementInfoRes.java
+++ b/expert-system/src/main/java/com/gkhy/system/domain/vo/response/ProjectExpertManagementInfoRes.java
@@ -1,19 +1,13 @@
-package com.gkhy.system.domain;
+package com.gkhy.system.domain.vo.response;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
-import com.gkhy.common.annotation.Excel;
-import com.gkhy.common.core.domain.BaseEntity;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
+import lombok.Data;
 
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
+import java.io.Serializable;
 import java.util.Date;
+import java.util.List;
 
 
 /**
@@ -22,36 +16,28 @@
  * @author expert
  * @date 2024-11-14
  */
-@TableName(resultMap = "com.gkhy.system.mapper.ProjectManagementMapper.ProjectManagementResult")
-@ApiModel(value = "项目管理对象", description = "项目管理对象表")
-public class ProjectManagement extends BaseEntity {
+@ApiModel(value = "项目管理专家详情" , description = "项目管理专家详情")
+@Data
+public class ProjectExpertManagementInfoRes implements Serializable {
     private static final long serialVersionUID = 1L;
 
     /**
      * 主键
      */
-    @TableId(value = "id", type = IdType.AUTO)
+    @ApiModelProperty(value = "项目id")
     private Long id;
 
     /**
      * 项目名称
      */
-    @ApiModelProperty(name = "项目名称",required = true)
-    @NotBlank(message = "项目名称不能为空")
+    @ApiModelProperty(name = "项目名称")
     private String projectName;
 
-    /**
-     * 处室
-     */
-    @ApiModelProperty(name = "处室",required = true)
-    @NotNull(message = "处室不能为空")
-    private Long deptId;
 
     /**
      * 部门名称
      */
-    @ApiModelProperty(name = "处室名称",required = true)
-    @NotBlank(message = "处室不能为空")
+    @ApiModelProperty(name = "处室名称")
     private String deptName;
 
     /**
@@ -63,211 +49,42 @@
     /**
      * 项目地址
      */
-    @ApiModelProperty(name = "项目地址",required = true)
-    @NotBlank(message = "项目地址不能为空")
+    @ApiModelProperty(name = "项目地址")
     private String projectAddress;
 
-    /**
-     * 部门带队人员
-     */
-    @ApiModelProperty(name = "部门带队人员",required = true)
-    @NotBlank(message = "处室带队人员不能为空")
-    private String deptUserName;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(name = "项目审批时间")
+    private Date projectCheckTime;
 
-    /**
-     * 乐观锁
-     */
-    @ApiModelProperty(name = "乐观锁")
-    private Long version;
+    @ApiModelProperty(name = "审批状态(0暂存,1选取专家,2生成审批单,3审批通过,4完结)")
+    private String state;
 
-    /**
-     * 审批状态(0暂存,1生成审批单,2审批通过,3审批驳回,4完结)
-     */
-    @Excel(name = "审批状态(0暂存,1生成审批单,2审批通过,3审批驳回,4完结)")
-    private Long state;
+    @ApiModelProperty(value = "步骤1暂存2专家选取3审批4完结")
+    private Long step;
+//    /**
+//     * 部门带队人员
+//     */
+//    @ApiModelProperty(name = "部门带队人员")
+//    private String deptUserName;
 
     /**
      * 项目预计开始日期
      */
     @JsonFormat(pattern = "yyyy-MM-dd")
-    @ApiModelProperty(name = "项目预计开始日期",required = true)
-    @NotNull(message = "项目预计开始日期不能为空")
+    @ApiModelProperty(name = "项目预计开始日期")
     private Date projectDateStart;
 
     /**
      * 项目预计结束日期
      */
     @JsonFormat(pattern = "yyyy-MM-dd")
-    @ApiModelProperty(name = "项目预计结束日期", required = true)
-    @NotNull(message = "项目预计结束日期不能为空")
+    @ApiModelProperty(name = "项目预计结束日期")
     private Date projectDateEnd;
 
-    /**
-     * 专家证书
-     */
-    @ApiModelProperty(name = "专家证书")
-    private String expertCertificate;
+    @ApiModelProperty(name = "项目概况")
+    private String remark;
 
-    /**
-     * 评估状态0未评估1已评估
-     */
-    @ApiModelProperty(name = "评估状态0未评估1已评估")
-    private Long envaluationState;
+    @ApiModelProperty(name = "专家数据")
+    private List<ProjectExpertCheckResp> projectExpertCheckResp;
 
-    /**
-     * 专家人数
-     */
-    @ApiModelProperty(name = "专家人数")
-    private Long expertNum;
-
-    /**
-     * 删除标志(0代表存在,1代表删除,默认0)
-     */
-    private Long delFlag;
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public Long getId() {
-        return id;
-    }
-
-    public void setProjectName(String projectName) {
-        this.projectName = projectName;
-    }
-
-    public String getProjectName() {
-        return projectName;
-    }
-
-    public void setDeptId(Long deptId) {
-        this.deptId = deptId;
-    }
-
-    public Long getDeptId() {
-        return deptId;
-    }
-
-    public void setDeptName(String deptName) {
-        this.deptName = deptName;
-    }
-
-    public String getDeptName() {
-        return deptName;
-    }
-
-    public void setCompanyName(String companyName) {
-        this.companyName = companyName;
-    }
-
-    public String getCompanyName() {
-        return companyName;
-    }
-
-    public void setProjectAddress(String projectAddress) {
-        this.projectAddress = projectAddress;
-    }
-
-    public String getProjectAddress() {
-        return projectAddress;
-    }
-
-    public void setDeptUserName(String deptUserName) {
-        this.deptUserName = deptUserName;
-    }
-
-    public String getDeptUserName() {
-        return deptUserName;
-    }
-
-    public void setVersion(Long version) {
-        this.version = version;
-    }
-
-    public Long getVersion() {
-        return version;
-    }
-
-    public void setState(Long state) {
-        this.state = state;
-    }
-
-    public Long getState() {
-        return state;
-    }
-
-    public void setProjectDateStart(Date projectDateStart) {
-        this.projectDateStart = projectDateStart;
-    }
-
-    public Date getProjectDateStart() {
-        return projectDateStart;
-    }
-
-    public void setProjectDateEnd(Date projectDateEnd) {
-        this.projectDateEnd = projectDateEnd;
-    }
-
-    public Date getProjectDateEnd() {
-        return projectDateEnd;
-    }
-
-    public void setExpertCertificate(String expertCertificate) {
-        this.expertCertificate = expertCertificate;
-    }
-
-    public String getExpertCertificate() {
-        return expertCertificate;
-    }
-
-    public void setEnvaluationState(Long envaluationState) {
-        this.envaluationState = envaluationState;
-    }
-
-    public Long getEnvaluationState() {
-        return envaluationState;
-    }
-
-    public void setExpertNum(Long expertNum) {
-        this.expertNum = expertNum;
-    }
-
-    public Long getExpertNum() {
-        return expertNum;
-    }
-
-    public void setDelFlag(Long delFlag) {
-        this.delFlag = delFlag;
-    }
-
-    public Long getDelFlag() {
-        return delFlag;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
-                .append("id", getId())
-                .append("projectName", getProjectName())
-                .append("deptId", getDeptId())
-                .append("deptName", getDeptName())
-                .append("companyName", getCompanyName())
-                .append("projectAddress", getProjectAddress())
-                .append("deptUserName", getDeptUserName())
-                .append("version", getVersion())
-                .append("state", getState())
-                .append("remark", getRemark())
-                .append("projectDateStart", getProjectDateStart())
-                .append("projectDateEnd", getProjectDateEnd())
-                .append("expertCertificate", getExpertCertificate())
-                .append("envaluationState", getEnvaluationState())
-                .append("expertNum", getExpertNum())
-                .append("delFlag", getDelFlag())
-                .append("createBy", getCreateBy())
-                .append("createTime", getCreateTime())
-                .append("updateBy", getUpdateBy())
-                .append("updateTime", getUpdateTime())
-                .toString();
-    }
 }
\ No newline at end of file
diff --git a/expert-system/src/main/java/com/gkhy/system/domain/vo/response/ProjectExpertResp.java b/expert-system/src/main/java/com/gkhy/system/domain/vo/response/ProjectExpertResp.java
index a55f381..a4ed33c 100644
--- a/expert-system/src/main/java/com/gkhy/system/domain/vo/response/ProjectExpertResp.java
+++ b/expert-system/src/main/java/com/gkhy/system/domain/vo/response/ProjectExpertResp.java
@@ -1,17 +1,35 @@
 package com.gkhy.system.domain.vo.response;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
-@ApiModel(value = "项目专家审批详情", description = "项目专家审批详情")
+import java.util.Date;
+
+@ApiModel(value = "专家考评记录列表", description = "专家考评记录列表")
 @Data
-public class ProjectExpertCheckResp implements Serializable {
+public class ProjectExpertResp implements Serializable {
     private static final long serialVersionUID = 1L;
 
-    @ApiModelProperty(name = "项目专家id")
-    private Long id;
+    /**
+     * 主键
+     */
+    @ApiModelProperty(value = "项目专家id")
+    private Long projectExpertId;
+
+    /**
+     * 项目名称
+     */
+    @ApiModelProperty(name = "项目名称")
+    private String projectName;
+
+    @ApiModelProperty(name = "项目id")
+    private Long projectId;
+
+    @ApiModelProperty(name = "总分")
+    private Long score;
 
     @ApiModelProperty(name = "专家id")
     private Long expertId;
@@ -19,8 +37,6 @@
     @ApiModelProperty("专家名称")
     private String name;
 
-    @ApiModelProperty("性别(0男,1女,2未知,默认2)")
-    private Integer sex;
 
     @ApiModelProperty("身份证号码")
     private String idCard;
@@ -31,10 +47,11 @@
     @ApiModelProperty(name = "是否组长0否1是")
     private Long teamLeader;
 
-    @ApiModelProperty("评定等级1、一级,2、二级,3、三级")
-    private String ratingLevel;
-
     @ApiModelProperty("专家领域")
     private String domain;
 
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(name = "评审时间")
+    private Date updateTime;
+
 }
diff --git a/expert-system/src/main/java/com/gkhy/system/domain/vo/response/ProjectExpertSectionResp.java b/expert-system/src/main/java/com/gkhy/system/domain/vo/response/ProjectExpertSectionResp.java
index a55f381..8219dab 100644
--- a/expert-system/src/main/java/com/gkhy/system/domain/vo/response/ProjectExpertSectionResp.java
+++ b/expert-system/src/main/java/com/gkhy/system/domain/vo/response/ProjectExpertSectionResp.java
@@ -5,16 +5,14 @@
 import lombok.Data;
 
 import java.io.Serializable;
-@ApiModel(value = "项目专家审批详情", description = "项目专家审批详情")
+
+@ApiModel(value = "项目专家随机获取", description = "项目专家随机获取")
 @Data
-public class ProjectExpertCheckResp implements Serializable {
+public class ProjectExpertSectionResp implements Serializable {
     private static final long serialVersionUID = 1L;
 
-    @ApiModelProperty(name = "项目专家id")
-    private Long id;
-
     @ApiModelProperty(name = "专家id")
-    private Long expertId;
+    private Long id;
 
     @ApiModelProperty("专家名称")
     private String name;
@@ -24,12 +22,6 @@
 
     @ApiModelProperty("身份证号码")
     private String idCard;
-
-    @ApiModelProperty(name = "选取方式1固定2随机")
-    private Long selectionMode;
-
-    @ApiModelProperty(name = "是否组长0否1是")
-    private Long teamLeader;
 
     @ApiModelProperty("评定等级1、一级,2、二级,3、三级")
     private String ratingLevel;
diff --git a/expert-system/src/main/java/com/gkhy/system/domain/vo/response/ProjectExpertStateResp.java b/expert-system/src/main/java/com/gkhy/system/domain/vo/response/ProjectExpertStateResp.java
index 6e9883a..b66e51e 100644
--- a/expert-system/src/main/java/com/gkhy/system/domain/vo/response/ProjectExpertStateResp.java
+++ b/expert-system/src/main/java/com/gkhy/system/domain/vo/response/ProjectExpertStateResp.java
@@ -1,4 +1,37 @@
 package com.gkhy.system.domain.vo.response;
 
-public class ProjectExpertStateResp {
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@ApiModel(value = "项目考评列表" , description = "项目考评列表")
+public class ProjectExpertStateResp implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    private Long id;
+
+    @ApiModelProperty(name = "项目名称")
+    private String projectName;
+
+    @ApiModelProperty(name = "评估状态0未评估1已评估")
+    private Long evaluationState;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(name = "项目审批时间")
+    private Date projectCheckTime;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(name = "项目结束日期")
+    private Date projectEndTime;
+
+    @ApiModelProperty(name = "处室名称")
+    private String deptName;
+
+    @ApiModelProperty(name = "专家人数")
+    private Long expertNum;
 }
diff --git a/expert-system/src/main/java/com/gkhy/system/domain/vo/response/ProjectNumResp.java b/expert-system/src/main/java/com/gkhy/system/domain/vo/response/ProjectNumResp.java
index 8ed9a5d..a5b9b56 100644
--- a/expert-system/src/main/java/com/gkhy/system/domain/vo/response/ProjectNumResp.java
+++ b/expert-system/src/main/java/com/gkhy/system/domain/vo/response/ProjectNumResp.java
@@ -1,4 +1,27 @@
 package com.gkhy.system.domain.vo.response;
 
-public class ProjectNumREsp {
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+@ApiModel(value = "项目数量统计" , description = "项目数量统计")
+public class ProjectNumResp implements Serializable {
+
+    @ApiModelProperty(value = "总数量")
+    private Integer total = 0;
+
+    @ApiModelProperty(value = "基本选用")
+    private Integer staging = 0;
+
+    @ApiModelProperty(value = "专家选用")
+    private Integer expert = 0 ;
+
+    @ApiModelProperty(value = "审批")
+    private Integer approval = 0;
+
+    @ApiModelProperty(value = "结束")
+    private Integer end = 0;
 }
diff --git a/expert-system/src/main/java/com/gkhy/system/domain/vo/response/SysExpertSearchRep.java b/expert-system/src/main/java/com/gkhy/system/domain/vo/response/SysExpertSearchRep.java
index 447a2cc..d9d48d2 100644
--- a/expert-system/src/main/java/com/gkhy/system/domain/vo/response/SysExpertSearchRep.java
+++ b/expert-system/src/main/java/com/gkhy/system/domain/vo/response/SysExpertSearchRep.java
@@ -1,4 +1,22 @@
 package com.gkhy.system.domain.vo.response;
 
-public class SysExpertSearchRep {
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author admin
+ */
+@Data
+@ApiModel(value = "专家查询信息审核返回", description = "专家查询信息审核返回")
+public class SysExpertSearchRep  implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("专家证书")
+    private String expertCertificate;
+
+    @ApiModelProperty("审批状态(0申请提交,1待审核,2审批通过,3审批不通过,4专家库)")
+    private Integer state;
 }
diff --git a/expert-system/src/main/java/com/gkhy/system/mapper/ApplyRecordMapper.java b/expert-system/src/main/java/com/gkhy/system/mapper/ApplyRecordMapper.java
index f239f14..d31b756 100644
--- a/expert-system/src/main/java/com/gkhy/system/mapper/ApplyRecordMapper.java
+++ b/expert-system/src/main/java/com/gkhy/system/mapper/ApplyRecordMapper.java
@@ -1,7 +1,9 @@
 package com.gkhy.system.mapper;
 
-import java.util.List;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.gkhy.system.domain.ApplyRecord;
+
+import java.util.List;
 
 /**
  * 开启申请记录Mapper接口
@@ -9,7 +11,7 @@
  * @author expert
  * @date 2024-11-13
  */
-public interface ApplyRecordMapper
+public interface ApplyRecordMapper extends BaseMapper<ApplyRecord>
 {
     /**
      * 查询开启申请记录
@@ -22,10 +24,9 @@
     /**
      * 查询开启申请记录列表
      *
-     * @param applyRecord 开启申请记录
      * @return 开启申请记录集合
      */
-    public List<ApplyRecord> selectApplyRecordList(ApplyRecord applyRecord);
+    public List<ApplyRecord> selectApplyRecordList();
 
     /**
      * 新增开启申请记录
diff --git a/expert-system/src/main/java/com/gkhy/system/mapper/EvaluationMapper.java b/expert-system/src/main/java/com/gkhy/system/mapper/EvaluationMapper.java
index 55f0f6a..14935ec 100644
--- a/expert-system/src/main/java/com/gkhy/system/mapper/EvaluationMapper.java
+++ b/expert-system/src/main/java/com/gkhy/system/mapper/EvaluationMapper.java
@@ -1,7 +1,9 @@
 package com.gkhy.system.mapper;
 
-import java.util.List;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.gkhy.system.domain.Evaluation;
+
+import java.util.List;
 
 /**
  * 考评管理Mapper接口
@@ -9,7 +11,7 @@
  * @author expert
  * @date 2024-11-13
  */
-public interface EvaluationMapper
+public interface EvaluationMapper extends BaseMapper<Evaluation>
 {
     /**
      * 查询考评管理
diff --git a/expert-system/src/main/java/com/gkhy/system/mapper/ProjectExpertDetailMapper.java b/expert-system/src/main/java/com/gkhy/system/mapper/ProjectExpertDetailMapper.java
index 6ce900f..e1f2f5c 100644
--- a/expert-system/src/main/java/com/gkhy/system/mapper/ProjectExpertDetailMapper.java
+++ b/expert-system/src/main/java/com/gkhy/system/mapper/ProjectExpertDetailMapper.java
@@ -1,7 +1,9 @@
 package com.gkhy.system.mapper;
 
-import java.util.List;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.gkhy.system.domain.ProjectExpertDetail;
+
+import java.util.List;
 
 /**
  * 项目专家得分明细Mapper接口
@@ -9,7 +11,7 @@
  * @author expert
  * @date 2024-11-14
  */
-public interface ProjectExpertDetailMapper
+public interface ProjectExpertDetailMapper extends BaseMapper<ProjectExpertDetail>
 {
     /**
      * 查询项目专家得分明细
@@ -35,6 +37,8 @@
      */
     public int insertProjectExpertDetail(ProjectExpertDetail projectExpertDetail);
 
+    int batchInsertProjectExpertDetail(List<ProjectExpertDetail> list);
+
     /**
      * 修改项目专家得分明细
      *
@@ -43,6 +47,8 @@
      */
     public int updateProjectExpertDetail(ProjectExpertDetail projectExpertDetail);
 
+    int batchUpdateProjectExpertDetail(List<ProjectExpertDetail> list);
+
     /**
      * 删除项目专家得分明细
      *
diff --git a/expert-system/src/main/java/com/gkhy/system/mapper/ProjectExpertMapper.java b/expert-system/src/main/java/com/gkhy/system/mapper/ProjectExpertMapper.java
index c3ae4d7..f767c69 100644
--- a/expert-system/src/main/java/com/gkhy/system/mapper/ProjectExpertMapper.java
+++ b/expert-system/src/main/java/com/gkhy/system/mapper/ProjectExpertMapper.java
@@ -1,7 +1,12 @@
 package com.gkhy.system.mapper;
 
-import java.util.List;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.gkhy.system.domain.ProjectExpert;
+import com.gkhy.system.domain.vo.request.SysProjectExpertReq;
+import com.gkhy.system.domain.vo.response.ProjectExpertEvaluationResp;
+import com.gkhy.system.domain.vo.response.ProjectExpertResp;
+
+import java.util.List;
 
 /**
  * 项目专家关联Mapper接口
@@ -9,7 +14,7 @@
  * @author expert
  * @date 2024-11-14
  */
-public interface ProjectExpertMapper
+public interface ProjectExpertMapper extends BaseMapper<ProjectExpert>
 {
     /**
      * 查询项目专家关联
@@ -35,6 +40,8 @@
      */
     public int insertProjectExpert(ProjectExpert projectExpert);
 
+    int batchInsertProjectExpert(List<ProjectExpert> list);
+
     /**
      * 修改项目专家关联
      *
@@ -43,6 +50,7 @@
      */
     public int updateProjectExpert(ProjectExpert projectExpert);
 
+    int batchUpdateProjectExpert(List<ProjectExpert> list);
     /**
      * 删除项目专家关联
      *
@@ -58,4 +66,25 @@
      * @return 结果
      */
     public int deleteProjectExpertByIds(Long[] ids);
+
+    /**
+     *获取未评价数量
+     * @param projectId
+     * @return
+     */
+    int getUnEva(Long projectId);
+
+    /**
+     *
+     * @param projectId
+     * @return
+     */
+    List<ProjectExpertEvaluationResp> projectExpertEvaluationList(Long projectId);
+
+    /**
+     * 专家考评记录列表
+     * @param req
+     * @return
+     */
+    List<ProjectExpertResp> projectExpertEvaList(SysProjectExpertReq req);
 }
diff --git a/expert-system/src/main/java/com/gkhy/system/mapper/ProjectFileMapper.java b/expert-system/src/main/java/com/gkhy/system/mapper/ProjectFileMapper.java
index adac7b0..e0ec520 100644
--- a/expert-system/src/main/java/com/gkhy/system/mapper/ProjectFileMapper.java
+++ b/expert-system/src/main/java/com/gkhy/system/mapper/ProjectFileMapper.java
@@ -1,7 +1,10 @@
 package com.gkhy.system.mapper;
 
-import java.util.List;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.gkhy.system.domain.ProjectFile;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * 项目附件Mapper接口
@@ -9,7 +12,7 @@
  * @author expert
  * @date 2024-11-14
  */
-public interface ProjectFileMapper
+public interface ProjectFileMapper extends BaseMapper<ProjectFile>
 {
     /**
      * 查询项目附件
@@ -35,6 +38,8 @@
      */
     public int insertProjectFile(ProjectFile projectFile);
 
+    int insertProjectFiles(List<ProjectFile> files);
+
     /**
      * 修改项目附件
      *
@@ -51,6 +56,8 @@
      */
     public int deleteProjectFileById(Long id);
 
+    int deleteProjectFileByIdAndType(@Param("projectId") Long projectId,@Param("module") String module);
+
     /**
      * 批量删除项目附件
      *
diff --git a/expert-system/src/main/java/com/gkhy/system/mapper/ProjectManagementMapper.java b/expert-system/src/main/java/com/gkhy/system/mapper/ProjectManagementMapper.java
index c7e7afb..538b118 100644
--- a/expert-system/src/main/java/com/gkhy/system/mapper/ProjectManagementMapper.java
+++ b/expert-system/src/main/java/com/gkhy/system/mapper/ProjectManagementMapper.java
@@ -1,7 +1,12 @@
 package com.gkhy.system.mapper;
 
-import java.util.List;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.gkhy.system.domain.ProjectManagement;
+import com.gkhy.system.domain.vo.request.ProjectExpertStateReq;
+import com.gkhy.system.domain.vo.response.ProjectExpertManagementInfoRes;
+import com.gkhy.system.domain.vo.response.ProjectExpertStateResp;
+
+import java.util.List;
 
 /**
  * 项目管理Mapper接口
@@ -9,7 +14,7 @@
  * @author expert
  * @date 2024-11-14
  */
-public interface ProjectManagementMapper
+public interface ProjectManagementMapper extends BaseMapper<ProjectManagement>
 {
     /**
      * 查询项目管理
@@ -58,4 +63,25 @@
      * @return 结果
      */
     public int deleteProjectManagementByIds(Long[] ids);
+
+    /**
+     * 详情
+     * @param id
+     * @return
+     */
+    ProjectExpertManagementInfoRes projectExpertCheckInfo(Long id);
+
+    /**
+     * 项目考评累表
+     * @param req
+     * @return
+     */
+    List<ProjectExpertStateResp> getProjectExpertSate(ProjectExpertStateReq req);
+
+    /**
+     *
+     * @param deptId
+     * @return
+     */
+    List<Integer> getDataNum (Long deptId);
 }
diff --git a/expert-system/src/main/java/com/gkhy/system/mapper/SysDeptMapper.java b/expert-system/src/main/java/com/gkhy/system/mapper/SysDeptMapper.java
index adea451..647f6a1 100644
--- a/expert-system/src/main/java/com/gkhy/system/mapper/SysDeptMapper.java
+++ b/expert-system/src/main/java/com/gkhy/system/mapper/SysDeptMapper.java
@@ -1,8 +1,9 @@
 package com.gkhy.system.mapper;
 
-import java.util.List;
-import org.apache.ibatis.annotations.Param;
 import com.gkhy.common.core.domain.entity.SysDept;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * 部门管理 数据层
@@ -20,6 +21,13 @@
     public List<SysDept> selectDeptList(SysDept dept);
 
     /**
+     *
+     * @param dept
+     * @return
+     */
+    public List<SysDept> getOutDeptList(SysDept dept);
+
+    /**
      * 根据角色ID查询部门树信息
      * 
      * @param roleId 角色ID
diff --git a/expert-system/src/main/java/com/gkhy/system/mapper/SysExpertClassifyMapper.java b/expert-system/src/main/java/com/gkhy/system/mapper/SysExpertClassifyMapper.java
index 5990ff6..ea1326a 100644
--- a/expert-system/src/main/java/com/gkhy/system/mapper/SysExpertClassifyMapper.java
+++ b/expert-system/src/main/java/com/gkhy/system/mapper/SysExpertClassifyMapper.java
@@ -1,7 +1,7 @@
-package com.gkhy.assess.system.mapper;
+package com.gkhy.system.mapper;
 
-import com.gkhy.assess.system.domain.SysExpertClassify;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gkhy.system.domain.SysExpertClassify;
 import org.apache.ibatis.annotations.Mapper;
 
 /**
diff --git a/expert-system/src/main/java/com/gkhy/system/mapper/SysExpertInfoMapper.java b/expert-system/src/main/java/com/gkhy/system/mapper/SysExpertInfoMapper.java
index d945c6f..285628f 100644
--- a/expert-system/src/main/java/com/gkhy/system/mapper/SysExpertInfoMapper.java
+++ b/expert-system/src/main/java/com/gkhy/system/mapper/SysExpertInfoMapper.java
@@ -1,8 +1,13 @@
-package com.gkhy.assess.system.mapper;
+package com.gkhy.system.mapper;
 
-import com.gkhy.assess.system.domain.SysExpertInfo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gkhy.system.domain.SysExpertInfo;
+import com.gkhy.system.domain.vo.request.SysExpertInfoRoundReq;
+import com.gkhy.system.domain.vo.request.SysExpertSearchReqDto;
+import com.gkhy.system.domain.vo.response.ProjectExpertSectionResp;
+import com.gkhy.system.domain.vo.response.SysExpertSearchRep;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -28,7 +33,7 @@
      * @param idCard
      * @return
      */
-    SysExpertInfo checkIdcardUnique(String idCard);
+    SysExpertInfo checkIdcardUnique(@Param("idCard") String idCard,@Param("deptId") Long deptId);
 
     /**
      * 批量删除专家信息
@@ -43,4 +48,18 @@
      * @return
      */
     SysExpertInfo getExpertInfoById(Long expertId);
+
+    /**
+     * 查询审批结果
+     * @param req
+     * @return
+     */
+    SysExpertSearchRep queryApprove(SysExpertSearchReqDto req);
+
+    /**
+     * 随机获取专家
+     * @param req
+     * @return
+     */
+   List<ProjectExpertSectionResp> getExpertRound(SysExpertInfoRoundReq req);
 }
diff --git a/expert-system/src/main/java/com/gkhy/system/mapper/SysSettingsMapper.java b/expert-system/src/main/java/com/gkhy/system/mapper/SysSettingsMapper.java
index f930315..7f6d3bc 100644
--- a/expert-system/src/main/java/com/gkhy/system/mapper/SysSettingsMapper.java
+++ b/expert-system/src/main/java/com/gkhy/system/mapper/SysSettingsMapper.java
@@ -1,7 +1,9 @@
 package com.gkhy.system.mapper;
 
-import java.util.List;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.gkhy.system.domain.SysSettings;
+
+import java.util.List;
 
 /**
  * 系统配置Mapper接口
@@ -9,15 +11,14 @@
  * @author expert
  * @date 2024-11-13
  */
-public interface SysSettingsMapper
+public interface SysSettingsMapper extends BaseMapper<SysSettings>
 {
     /**
      * 查询系统配置
      *
-     * @param state 系统配置主键
      * @return 系统配置
      */
-    public SysSettings selectSysSettingsByState(String state);
+    public SysSettings selectSysSettingsByState();
 
     /**
      * 查询系统配置列表
@@ -38,10 +39,10 @@
     /**
      * 修改系统配置
      *
-     * @param sysSettings 系统配置
+     * @param state 系统配置
      * @return 结果
      */
-    public int updateSysSettings(SysSettings sysSettings);
+    public int updateSysSettingsState(String state);
 
     /**
      * 删除系统配置
diff --git a/expert-system/src/main/java/com/gkhy/system/service/IEvaluationService.java b/expert-system/src/main/java/com/gkhy/system/service/IEvaluationService.java
index 923e2c4..38657bf 100644
--- a/expert-system/src/main/java/com/gkhy/system/service/IEvaluationService.java
+++ b/expert-system/src/main/java/com/gkhy/system/service/IEvaluationService.java
@@ -1,8 +1,9 @@
 package com.gkhy.system.service;
 
-import java.util.List;
-import com.gkhy.system.domain.Evaluation;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.gkhy.system.domain.Evaluation;
+
+import java.util.List;
 
 /**
  * 考评管理Service接口
diff --git a/expert-system/src/main/java/com/gkhy/system/service/IProjectManagementService.java b/expert-system/src/main/java/com/gkhy/system/service/IProjectManagementService.java
index dfd8fb6..f79b35f 100644
--- a/expert-system/src/main/java/com/gkhy/system/service/IProjectManagementService.java
+++ b/expert-system/src/main/java/com/gkhy/system/service/IProjectManagementService.java
@@ -1,8 +1,13 @@
 package com.gkhy.system.service;
 
-import java.util.List;
-import com.gkhy.system.domain.ProjectManagement;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.gkhy.system.domain.ProjectExpertDetail;
+import com.gkhy.system.domain.ProjectFile;
+import com.gkhy.system.domain.ProjectManagement;
+import com.gkhy.system.domain.vo.request.*;
+import com.gkhy.system.domain.vo.response.*;
+
+import java.util.List;
 
 /**
  * 项目管理Service接口
@@ -33,7 +38,7 @@
      * @param projectManagement 项目管理
      * @return 结果
      */
-    public int insertProjectManagement(ProjectManagement projectManagement);
+    public Long insertProjectManagement(ProjectManageSaveReq projectManagement);
 
     /**
      * 修改项目管理
@@ -41,7 +46,7 @@
      * @param projectManagement 项目管理
      * @return 结果
      */
-    public int updateProjectManagement(ProjectManagement projectManagement);
+    public void updateProjectManagement(ProjectExpertSaveBatchReqDto projectManagement);
 
     /**
      * 批量删除项目管理
@@ -58,4 +63,66 @@
      * @return 结果
      */
     public int deleteProjectManagementById(Long id);
+
+    /**
+     * 获取项目专家信息
+     * @param id
+     * @return
+     */
+    public ProjectExpertManagementInfoRes projectExpertCheckInfo(Long id);
+
+    /**
+     * 项目审批
+     * @param req
+     */
+    void projectCheck(ProjectCheckReq req);
+
+    /**
+     * 项目归档
+     * @param req
+     */
+    void projectArchive(ProjectArchiveReq req);
+
+    /**
+     * 项目考评
+     * @param req
+     * @return
+     */
+    List<ProjectExpertStateResp> getProjectExpertSate(ProjectExpertStateReq req);
+
+    /**
+     * 项目专家考评列表
+     * @param projectId
+     * @return
+     */
+    List<ProjectExpertEvaluationResp> projectExpertEvaluationList(Long projectId);
+
+    /**
+     * 专家考评保存
+     * @param req
+     */
+    void projectExpertDetailSave(ProjectExpertScoreSaveReq req);
+
+    /**
+     * 专家考评记录列表
+     * @param req
+     * @return
+     */
+    List<ProjectExpertResp> projectExpertEvaList(SysProjectExpertReq req);
+
+    /**
+     * 专家考评明细
+     * @param projectExpertId
+     * @return
+     */
+    List<ProjectExpertDetail> selectProjectExpertDetailList(Long projectExpertId);
+
+    /**
+     * 附件列表
+     * @return
+     */
+    List<ProjectFile> selectProjectFileList(Long projectId,String module );
+
+
+    ProjectNumResp getProjectNum();
 }
\ No newline at end of file
diff --git a/expert-system/src/main/java/com/gkhy/system/service/ISysDeptService.java b/expert-system/src/main/java/com/gkhy/system/service/ISysDeptService.java
index 98ade96..c6d8f9d 100644
--- a/expert-system/src/main/java/com/gkhy/system/service/ISysDeptService.java
+++ b/expert-system/src/main/java/com/gkhy/system/service/ISysDeptService.java
@@ -1,8 +1,9 @@
 package com.gkhy.system.service;
 
-import java.util.List;
 import com.gkhy.common.core.domain.TreeSelect;
 import com.gkhy.common.core.domain.entity.SysDept;
+
+import java.util.List;
 
 /**
  * 部门管理 服务层
@@ -19,6 +20,8 @@
      */
     public List<SysDept> selectDeptList(SysDept dept);
 
+    List<SysDept> getOutDeptList(SysDept dept);
+
     /**
      * 查询部门树结构信息
      * 
diff --git a/expert-system/src/main/java/com/gkhy/system/service/ISysSettingsService.java b/expert-system/src/main/java/com/gkhy/system/service/ISysSettingsService.java
index f3d0afe..01aee43 100644
--- a/expert-system/src/main/java/com/gkhy/system/service/ISysSettingsService.java
+++ b/expert-system/src/main/java/com/gkhy/system/service/ISysSettingsService.java
@@ -1,8 +1,10 @@
 package com.gkhy.system.service;
 
-import java.util.List;
-import com.gkhy.system.domain.SysSettings;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.gkhy.system.domain.ApplyRecord;
+import com.gkhy.system.domain.SysSettings;
+
+import java.util.List;
 
 /**
  * 系统配置Service接口
@@ -14,26 +16,10 @@
     /**
      * 查询系统配置
      *
-     * @param state 系统配置主键
      * @return 系统配置
      */
-    public SysSettings selectSysSettingsByState(String state);
+    public String selectSysSettings();
 
-    /**
-     * 查询系统配置列表
-     *
-     * @param sysSettings 系统配置
-     * @return 系统配置集合
-     */
-    public List<SysSettings> selectSysSettingsList(SysSettings sysSettings);
-
-    /**
-     * 新增系统配置
-     *
-     * @param sysSettings 系统配置
-     * @return 结果
-     */
-    public int insertSysSettings(SysSettings sysSettings);
 
     /**
      * 修改系统配置
@@ -41,21 +27,14 @@
      * @param sysSettings 系统配置
      * @return 结果
      */
-    public int updateSysSettings(SysSettings sysSettings);
+    public int updateSysSettings(String sysSettings);
 
     /**
-     * 批量删除系统配置
+     * 查询开启申请记录列表
      *
-     * @param states 需要删除的系统配置主键集合
-     * @return 结果
+     * @return 开启申请记录集合
      */
-    public int deleteSysSettingsByStates(String[] states);
+    public List<ApplyRecord> selectApplyRecordList();
 
-    /**
-     * 删除系统配置信息
-     *
-     * @param state 系统配置主键
-     * @return 结果
-     */
-    public int deleteSysSettingsByState(String state);
+
 }
\ No newline at end of file
diff --git a/expert-system/src/main/java/com/gkhy/system/service/SysExpertClassifyService.java b/expert-system/src/main/java/com/gkhy/system/service/SysExpertClassifyService.java
index b7be109..391871a 100644
--- a/expert-system/src/main/java/com/gkhy/system/service/SysExpertClassifyService.java
+++ b/expert-system/src/main/java/com/gkhy/system/service/SysExpertClassifyService.java
@@ -1,7 +1,7 @@
-package com.gkhy.assess.system.service;
+package com.gkhy.system.service;
 
-import com.gkhy.assess.system.domain.SysExpertClassify;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.gkhy.system.domain.SysExpertClassify;
 
 import java.util.List;
 
diff --git a/expert-system/src/main/java/com/gkhy/system/service/SysExpertInfoService.java b/expert-system/src/main/java/com/gkhy/system/service/SysExpertInfoService.java
index 9f6efe0..745abb6 100644
--- a/expert-system/src/main/java/com/gkhy/system/service/SysExpertInfoService.java
+++ b/expert-system/src/main/java/com/gkhy/system/service/SysExpertInfoService.java
@@ -1,8 +1,14 @@
-package com.gkhy.assess.system.service;
+package com.gkhy.system.service;
 
-import com.gkhy.assess.common.api.CommonPage;
-import com.gkhy.assess.system.domain.SysExpertInfo;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.gkhy.system.domain.SysExpertInfo;
+import com.gkhy.system.domain.vo.request.SysExpertInfoRoundReq;
+import com.gkhy.system.domain.vo.request.SysExpertSearchReqDto;
+import com.gkhy.system.domain.vo.response.ProjectExpertSectionResp;
+import com.gkhy.system.domain.vo.response.SysExpertSearchRep;
+
+import java.util.List;
+
 
 /**
  * <p>
@@ -18,7 +24,7 @@
      * @param expertInfo
      * @return
      */
-    CommonPage exportInfoList(SysExpertInfo expertInfo);
+    List<SysExpertInfo> exportInfoList(SysExpertInfo expertInfo);
 
     /**
      * 新增专家信息
@@ -61,4 +67,18 @@
      * @return
      */
     boolean changeApprove(SysExpertInfo expertInfo);
+
+    /**
+     *查询审批结果
+     * @param expertInfo
+     * @return
+     */
+    SysExpertSearchRep queryApprove(SysExpertSearchReqDto expertInfo);
+
+    /**
+     * 随机获取专家信息
+     * @param req
+     * @return
+     */
+    List<ProjectExpertSectionResp> getExpertRound(SysExpertInfoRoundReq req);
 }
diff --git a/expert-system/src/main/java/com/gkhy/system/service/impl/EvaluationServiceImpl.java b/expert-system/src/main/java/com/gkhy/system/service/impl/EvaluationServiceImpl.java
index 35c0ca0..0dbc23f 100644
--- a/expert-system/src/main/java/com/gkhy/system/service/impl/EvaluationServiceImpl.java
+++ b/expert-system/src/main/java/com/gkhy/system/service/impl/EvaluationServiceImpl.java
@@ -1,13 +1,15 @@
 package com.gkhy.system.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import java.util.List;
-        import com.rchuing.common.utils.DateUtils;
+import com.gkhy.common.utils.DateUtils;
+import com.gkhy.common.utils.SecurityUtils;
+import com.gkhy.system.domain.Evaluation;
+import com.gkhy.system.mapper.EvaluationMapper;
+import com.gkhy.system.service.IEvaluationService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import com.gkhy.system.mapper.EvaluationMapper;
-import com.gkhy.system.domain.Evaluation;
-import com.gkhy.system.service.IEvaluationService;
+
+import java.util.List;
 
 /**
  * 考评管理Service业务层处理
@@ -50,6 +52,7 @@
      */
     @Override
     public int insertEvaluation(Evaluation evaluation) {
+        evaluation.setCreateBy(SecurityUtils.getUsername());
                 evaluation.setCreateTime(DateUtils.getNowDate());
             return evaluationMapper.insertEvaluation(evaluation);
     }
@@ -62,6 +65,7 @@
      */
     @Override
     public int updateEvaluation(Evaluation evaluation) {
+        evaluation.setUpdateBy(SecurityUtils.getUsername());
                 evaluation.setUpdateTime(DateUtils.getNowDate());
         return evaluationMapper.updateEvaluation(evaluation);
     }
@@ -74,6 +78,7 @@
      */
     @Override
     public int deleteEvaluationByIds(Long[] ids) {
+        //todo 校验被引用不可删除
         return evaluationMapper.deleteEvaluationByIds(ids);
     }
 
diff --git a/expert-system/src/main/java/com/gkhy/system/service/impl/ProjectManagementServiceImpl.java b/expert-system/src/main/java/com/gkhy/system/service/impl/ProjectManagementServiceImpl.java
index ddee76c..9d55d55 100644
--- a/expert-system/src/main/java/com/gkhy/system/service/impl/ProjectManagementServiceImpl.java
+++ b/expert-system/src/main/java/com/gkhy/system/service/impl/ProjectManagementServiceImpl.java
@@ -1,13 +1,29 @@
 package com.gkhy.system.service.impl;
 
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import java.util.List;
-        import com.rchuing.common.utils.DateUtils;
+import com.gkhy.common.exception.ServiceException;
+import com.gkhy.common.utils.DateUtils;
+import com.gkhy.common.utils.SecurityUtils;
+import com.gkhy.common.utils.StringUtils;
+import com.gkhy.system.domain.ProjectExpert;
+import com.gkhy.system.domain.ProjectExpertDetail;
+import com.gkhy.system.domain.ProjectFile;
+import com.gkhy.system.domain.ProjectManagement;
+import com.gkhy.system.domain.vo.request.*;
+import com.gkhy.system.domain.vo.response.*;
+import com.gkhy.system.mapper.ProjectExpertDetailMapper;
+import com.gkhy.system.mapper.ProjectExpertMapper;
+import com.gkhy.system.mapper.ProjectFileMapper;
+import com.gkhy.system.mapper.ProjectManagementMapper;
+import com.gkhy.system.service.IProjectManagementService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import com.gkhy.system.mapper.ProjectManagementMapper;
-import com.gkhy.system.domain.ProjectManagement;
-import com.gkhy.system.service.IProjectManagementService;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 项目管理Service业务层处理
@@ -19,6 +35,15 @@
 public class ProjectManagementServiceImpl extends ServiceImpl<ProjectManagementMapper, ProjectManagement> implements IProjectManagementService {
     @Autowired
     private ProjectManagementMapper projectManagementMapper;
+
+    @Autowired
+    private ProjectExpertMapper projectExpertMapper;
+
+    @Autowired
+    private ProjectFileMapper projectFileMapper;
+
+    @Autowired
+    private ProjectExpertDetailMapper projectExpertDetailMapper;
 
     /**
      * 查询项目管理
@@ -49,9 +74,26 @@
      * @return 结果
      */
     @Override
-    public int insertProjectManagement(ProjectManagement projectManagement) {
-                projectManagement.setCreateTime(DateUtils.getNowDate());
-            return projectManagementMapper.insertProjectManagement(projectManagement);
+    public Long insertProjectManagement(ProjectManageSaveReq projectManagement) {
+        ProjectManagement projectManagementSave = new ProjectManagement();
+
+        projectManagementSave.setDelFlag(0L);
+        BeanUtil.copyProperties(projectManagement, projectManagementSave);
+        if (projectManagement.getId() != null){
+            checkDataPer(projectManagement.getId());
+
+            projectManagementSave.setUpdateBy(SecurityUtils.getUsername());
+            projectManagementSave.setUpdateTime(DateUtils.getNowDate());
+            projectManagementMapper.updateProjectManagement(projectManagementSave);
+        }else {
+            projectManagementSave.setStep(1L);
+            projectManagementSave.setCreateBy(SecurityUtils.getUsername());
+            projectManagementSave.setCreateTime(DateUtils.getNowDate());
+            projectManagementMapper.insertProjectManagement(projectManagementSave);
+        }
+
+
+        return projectManagementSave.getId();
     }
 
     /**
@@ -61,9 +103,129 @@
      * @return 结果
      */
     @Override
-    public int updateProjectManagement(ProjectManagement projectManagement) {
-                projectManagement.setUpdateTime(DateUtils.getNowDate());
-        return projectManagementMapper.updateProjectManagement(projectManagement);
+    @Transactional
+    public void updateProjectManagement(ProjectExpertSaveBatchReqDto projectManagement)  {
+        ProjectManagement projectManagement1 = checkDataPer(projectManagement.getId());
+        //专家选取
+
+        ProjectManagement projectManagementSave = new ProjectManagement();
+        projectManagementSave.setUpdateBy(SecurityUtils.getUsername());
+        projectManagementSave.setUpdateTime(DateUtils.getNowDate());
+        projectManagementSave.setId(projectManagement.getId());
+        if (projectManagement1.getState() != 1 && projectManagement1.getState() != 0){
+            throw new ServiceException("该步骤不可操作专家数据!");
+        }
+
+        List<ProjectExpertSaveReqDto> saveData = projectManagement.getSaveData();
+        if (!StringUtils.isNotEmpty(saveData)){
+            throw new ServiceException("专家不可为空!");
+        }
+        if (hasDuplicateExpertId(saveData)){
+            throw new ServiceException("专家重复!");
+        }
+        long count = saveData.stream()
+                .filter(dto -> dto.getSelectionMode() == 1)
+                .count();
+        if (count < 1){
+            throw new ServiceException("固定专家不能为空!");
+        }
+
+        if (projectManagement1.getStep() == 1 || projectManagement1.getStep() == 2){
+            projectManagementSave.setStep(2L);
+            projectManagementSave.setState(1L);
+        }else if (projectManagement1.getStep() == 3){
+            projectManagementSave.setStep(3L);
+            projectManagementSave.setState(2L);
+            projectManagementSave.setProjectCheckTime(new Date());
+            List<ProjectExpertSaveReqDto> collect = saveData.stream()
+                    .filter(dto -> "1".equals(dto.getTeamLeader().toString()))
+                    .collect(Collectors.toList());
+
+            if (StringUtils.isEmpty(collect)){
+                throw new ServiceException("缺少组长!");
+            }
+            if (collect.size() > 1){
+                throw new ServiceException("组长只能选一人!");
+            }
+            projectManagementSave.setExpertName(collect.get(0).getExpertName());
+            projectManagementSave.setExpertId(collect.get(0).getExpertId());
+        }
+
+        List<ProjectExpertSaveReqDto> saveList = saveData.stream()
+                .filter(dto -> dto.getId() == null)
+                .collect(Collectors.toList());
+        if (StringUtils.isNotEmpty(saveList)){
+            List<ProjectExpert> projectExperts = convertToProjectExpertList(saveList, projectManagement.getId());
+            int i = projectExpertMapper.batchInsertProjectExpert(projectExperts);
+            if (i < 1){
+                throw new ServiceException("保存专家失败!");
+            }
+        }
+        List<ProjectExpertSaveReqDto> editList = saveData.stream()
+                .filter(dto -> dto.getId() != null)
+                .collect(Collectors.toList());
+        if (StringUtils.isNotEmpty(editList)){
+            List<ProjectExpert> projectExperts = convertToProjectExpertList(editList, projectManagement.getId());
+            int i = projectExpertMapper.batchUpdateProjectExpert(projectExperts);
+            if (i < 1){
+                throw new ServiceException("保存专家失败!");
+            }
+        }
+        projectManagementSave.setExpertNum((long) saveData.size());
+        List<Long> delData = projectManagement.getDelData();
+        if (delData != null && delData.size() > 0) {
+            int i = projectExpertMapper.deleteProjectExpertByIds(delData.toArray(new Long[delData.size()]));
+            if (i < 1){
+                throw new ServiceException("保存专家失败!");
+            }
+        }
+
+        int i = projectManagementMapper.updateProjectManagement(projectManagementSave);
+        if (i < 1){
+            throw new ServiceException("保存专家失败!");
+        }
+    }
+
+
+    public List<ProjectExpert> convertToProjectExpertList(List<ProjectExpertSaveReqDto> reqDtos,Long projectId) {
+        List<ProjectExpert> projectExpertList = new ArrayList<>();
+       reqDtos.forEach(reqDto -> {
+           ProjectExpert projectExpert = convertToProjectExpert(reqDto,projectId);
+           projectExpertList.add(projectExpert);
+       });
+       return projectExpertList;
+    }
+
+    private ProjectExpert convertToProjectExpert(ProjectExpertSaveReqDto reqDto,Long projectId) {
+        ProjectExpert projectExpert = new ProjectExpert();
+        projectExpert.setProjectId(projectId);
+        projectExpert.setExpertId(reqDto.getExpertId());
+        projectExpert.setSelectionMode(reqDto.getSelectionMode());
+        projectExpert.setTeamLeader(reqDto.getTeamLeader());
+        if (reqDto.getId() == null){
+            projectExpert.setCreateBy(SecurityUtils.getUsername());
+        }else {
+            projectExpert.setUpdateBy(SecurityUtils.getUsername());
+            projectExpert.setId(reqDto.getId());
+        }
+        return projectExpert;
+    }
+
+
+
+    public  boolean hasDuplicateExpertId(List<ProjectExpertSaveReqDto> saveData) {
+        // 使用 Stream API 收集 expertId 的频率
+        Map<Long, Long> frequencyMap = saveData.stream()
+                .collect(Collectors.groupingBy(ProjectExpertSaveReqDto::getExpertId, Collectors.counting()));
+
+        // 检查是否有任何 expertId 的频率大于 1
+        boolean hasDuplicates = frequencyMap.values().stream().anyMatch(count -> count > 1);
+
+        if (hasDuplicates) {
+           return true;
+        }
+
+        return false;
     }
 
     /**
@@ -74,6 +236,10 @@
      */
     @Override
     public int deleteProjectManagementByIds(Long[] ids) {
+        //todo 校验
+        for (Long id : ids) {
+            checkDataPer(id);
+        }
         return projectManagementMapper.deleteProjectManagementByIds(ids);
     }
 
@@ -87,4 +253,250 @@
     public int deleteProjectManagementById(Long id) {
         return projectManagementMapper.deleteProjectManagementById(id);
     }
+
+    @Override
+    public ProjectExpertManagementInfoRes projectExpertCheckInfo(Long id) {
+        return projectManagementMapper.projectExpertCheckInfo(id);
+    }
+
+    @Override
+    @Transactional
+    public void projectCheck(ProjectCheckReq req) {
+        ProjectManagement projectManagement = checkDataPer(req.getId());
+
+        if (req.getState() != 3L &&  req.getState() != 1 ){
+            throw new ServiceException("参数异常!");
+        }
+        if (projectManagement.getStep() != 3){
+            throw new ServiceException("非审批步骤!");
+        }
+        Long state = projectManagement.getState();
+        if (req.getState() == 3 && state != 2){
+            throw new ServiceException("未生成审批单不可审批通过操作!");
+        }else if (req.getState() == 1 && state != 2){
+            throw new ServiceException("不可操作!");
+        }
+
+        List<ProjectFile> projectFile = req.getProjectFile();
+        ProjectManagement projectManagementUp = new ProjectManagement();
+        projectManagementUp.setId(req.getId());
+        projectManagementUp.setState(req.getState());
+        projectManagementUp.setUpdateBy(SecurityUtils.getUsername());
+        if (req.getState() == 3){
+            projectManagementUp.setStep(4L);
+        }else if (req.getState() == 1){
+            projectManagementUp.setStep(2L);
+        }
+        int i = projectManagementMapper.updateProjectManagement(projectManagementUp);
+        //驳回删
+        if (req.getState() == 1){
+            projectFileMapper.deleteProjectFileByIdAndType(req.getId(), "1");
+        }
+        if (i > 0 && StringUtils.isNotEmpty(projectFile) && req.getState() == 3){
+            //删除之前的该类型
+            projectFileMapper.deleteProjectFileByIdAndType(req.getId(), "1");
+            String username = SecurityUtils.getUsername();
+            projectFile.forEach(file -> {
+                file.setCreateBy(username);
+                file.setProjectId(req.getId());
+            });
+            int i1 = projectFileMapper.insertProjectFiles(projectFile);
+            if (i1 < 1){
+                throw new ServiceException("保存附件失败!");
+            }
+        }
+    }
+
+    @Override
+    public void projectArchive(ProjectArchiveReq req) {
+        ProjectManagement projectManagement = checkDataPer(req.getId());
+
+        Long state = projectManagement.getState();
+        if (state != 3L){
+            throw new ServiceException("此状态不可归档!");
+        }
+        List<ProjectFile> projectFile = req.getProjectFile();
+        ProjectManagement projectManagementUp = new ProjectManagement();
+        projectManagementUp.setId(req.getId());
+        projectManagementUp.setState(4L);
+        projectManagementUp.setDesc(req.getDesc());
+        projectManagementUp.setProjectEndTime(req.getProjectEndTime());
+        projectManagementUp.setUpdateBy(SecurityUtils.getUsername());
+        int i = projectManagementMapper.updateProjectManagement(projectManagementUp);
+        if (i > 0 && StringUtils.isNotEmpty(projectFile)){
+            String username = SecurityUtils.getUsername();
+            projectFile.forEach(file -> {
+                file.setCreateBy(username);
+                file.setProjectId(req.getId());
+            });
+            int i1 = projectFileMapper.insertProjectFiles(projectFile);
+            if (i1 < 1){
+                throw new ServiceException("保存附件失败!");
+            }
+        }
+
+    }
+
+    @Override
+    public List<ProjectExpertStateResp> getProjectExpertSate(ProjectExpertStateReq req) {
+        return projectManagementMapper.getProjectExpertSate(req);
+    }
+
+    @Override
+    public List<ProjectExpertEvaluationResp> projectExpertEvaluationList(Long projectId) {
+        return projectExpertMapper.projectExpertEvaluationList(projectId);
+    }
+
+    @Override
+    @Transactional
+    public void projectExpertDetailSave(ProjectExpertScoreSaveReq req) {
+
+        List<Long> delData = req.getDelData();
+        if (StringUtils.isNotEmpty(delData)){
+            projectExpertDetailMapper.deleteProjectExpertDetailByIds(delData.toArray(new Long[delData.size()]));
+        }
+
+
+        ProjectExpert projectExpert1 = projectExpertMapper.selectProjectExpertById(req.getProjectExpertId());
+        if (projectExpert1 == null){
+            throw new ServiceException("项目专家不存在!");
+        }
+        ProjectManagement projectManagement1 = checkData(projectExpert1.getProjectId());
+        if (projectManagement1.getState() != 4){
+            throw new ServiceException("项目未完成!");
+        }
+
+        //更新项目专家表
+        ProjectExpert projectExpert = new ProjectExpert();
+        projectExpert.setId(req.getProjectExpertId());
+        projectExpert.setScore(req.getScore());
+        projectExpert.setevaluationState(1L);
+        int i = projectExpertMapper.updateProjectExpert(projectExpert);
+        if (i < 1){
+            throw new ServiceException("保存失败!");
+        }
+
+        List<ProjectExpertScoreSaveReq.Score> saveData = req.getSaveData();
+
+        if (StringUtils.isNotEmpty(saveData)){
+            List<ProjectExpertDetail> projectExpertDetails = dealData(saveData, req.getProjectExpertId());
+            List<ProjectExpertDetail> saveList = projectExpertDetails.stream()
+                    .filter(dto -> dto.getId() == null)
+                    .collect(Collectors.toList());
+            if (StringUtils.isNotEmpty(saveList)){
+                int i12 = projectExpertDetailMapper.batchInsertProjectExpertDetail(saveList);
+                if (i12 < 1){
+                    throw new ServiceException("保存失败!");
+                }
+            }
+            List<ProjectExpertDetail> updateList = projectExpertDetails.stream()
+                    .filter(dto -> dto.getId() != null)
+                    .collect(Collectors.toList());
+            if (StringUtils.isNotEmpty(updateList)){
+                int i1 = projectExpertDetailMapper.batchUpdateProjectExpertDetail(updateList);
+                if (i1 < 1){
+                    throw new ServiceException("保存失败!");
+                }
+            }
+        }
+
+        //验证是否都已考评
+        int unEva = projectExpertMapper.getUnEva(projectExpert1.getProjectId());
+        if (unEva == 0){
+            ProjectManagement projectManagement = new ProjectManagement();
+            projectManagement.setId(projectExpert1.getProjectId());
+            projectManagement.setEvaluationState(1L);
+            projectManagement.setUpdateBy(SecurityUtils.getUsername());
+            int i1 = projectManagementMapper.updateProjectManagement(projectManagement);
+            if (i1 < 1){
+                throw new ServiceException("保存失败!");
+            }
+        }
+
+    }
+
+    @Override
+    public List<ProjectExpertResp> projectExpertEvaList(SysProjectExpertReq req) {
+        return projectExpertMapper.projectExpertEvaList(req);
+    }
+
+    @Override
+    public List<ProjectExpertDetail> selectProjectExpertDetailList(Long projectExpertId) {
+        ProjectExpertDetail projectExpertDetail = new ProjectExpertDetail();
+        projectExpertDetail.setProjectExpertId(projectExpertId);
+        return projectExpertDetailMapper.selectProjectExpertDetailList(projectExpertDetail);
+    }
+
+    @Override
+    public List<ProjectFile> selectProjectFileList(Long projectId,String module ) {
+        ProjectFile projectFile = new ProjectFile();
+        projectFile.setProjectId(projectId);
+        projectFile.setModule(module);
+        List<ProjectFile> projectFiles = projectFileMapper.selectProjectFileList(projectFile);
+        if (StringUtils.isNotEmpty(projectFiles)){
+            return projectFiles;
+        }
+        return Collections.emptyList();
+    }
+
+    @Override
+    public ProjectNumResp getProjectNum() {
+        ProjectNumResp projectNumResp = new ProjectNumResp();
+        List<Integer> dataNum = projectManagementMapper.getDataNum(SecurityUtils.isAdmin(SecurityUtils.getUserId()) ? null : SecurityUtils.getDeptId());
+        if (!StringUtils.isEmpty(dataNum)){
+            Map<Integer, Long> statusCounts = dataNum.stream()
+                    .collect(Collectors.groupingBy(
+                            status -> status,  // 分组键
+                            Collectors.counting()  // 计数
+                    ));
+            projectNumResp.setTotal(dataNum.size());
+            projectNumResp.setApproval(statusCounts.get(3)  == null ? 0 : statusCounts.get(3).intValue());
+            projectNumResp.setExpert(statusCounts.get(1) == null ? 0 : statusCounts.get(1).intValue());
+            projectNumResp.setStaging(statusCounts.get(0) == null ? 0:statusCounts.get(0).intValue());
+            projectNumResp.setEnd(statusCounts.get(4) == null ? 0:statusCounts.get(4).intValue());
+        }
+        return projectNumResp;
+    }
+
+    private List<ProjectExpertDetail> dealData(List<ProjectExpertScoreSaveReq.Score> data,Long projectExpertId){
+        List<ProjectExpertDetail> dealData = new ArrayList<>();
+        data.forEach(dto -> {
+            ProjectExpertDetail projectExpertDetail = new ProjectExpertDetail();
+            projectExpertDetail.setProjectExpertId(projectExpertId);
+            projectExpertDetail.setContent(dto.getContent());
+            projectExpertDetail.setScore(dto.getScore());
+            projectExpertDetail.setScoreType(dto.getScoreType());
+            if (dto.getId() == null){
+                projectExpertDetail.setCreateBy(SecurityUtils.getUsername());
+            }else {
+                projectExpertDetail.setId(dto.getId());
+                projectExpertDetail.setUpdateBy(SecurityUtils.getUsername());
+            }
+
+            dealData.add(projectExpertDetail);
+        });
+        return dealData;
+    }
+
+
+    public ProjectManagement checkData(Long id){
+        ProjectManagement projectManagement = projectManagementMapper.selectProjectManagementById(id);
+        if (ObjectUtil.isNull(projectManagement)){
+            throw new ServiceException("数据不存在!");
+        }
+        return projectManagement;
+    }
+
+    public ProjectManagement checkDataPer(Long id){
+        ProjectManagement projectManagement = checkData(id);
+        Long deptId = projectManagement.getDeptId();
+        // 本部门审批?
+        if (!SecurityUtils.isAdmin(SecurityUtils.getUserId()) && deptId.intValue() != SecurityUtils.getDeptId().intValue()){
+            throw new ServiceException("非本部门数据,无权操作!");
+        }
+        if (projectManagement.getState() == 4){
+            throw new ServiceException("已结项,无权操作!");
+        }
+        return projectManagement;
+    }
 }
\ No newline at end of file
diff --git a/expert-system/src/main/java/com/gkhy/system/service/impl/SysDeptServiceImpl.java b/expert-system/src/main/java/com/gkhy/system/service/impl/SysDeptServiceImpl.java
index ce34ff6..e24b8e7 100644
--- a/expert-system/src/main/java/com/gkhy/system/service/impl/SysDeptServiceImpl.java
+++ b/expert-system/src/main/java/com/gkhy/system/service/impl/SysDeptServiceImpl.java
@@ -1,11 +1,5 @@
 package com.gkhy.system.service.impl;
 
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.stream.Collectors;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
 import com.gkhy.common.annotation.DataScope;
 import com.gkhy.common.constant.UserConstants;
 import com.gkhy.common.core.domain.TreeSelect;
@@ -20,6 +14,13 @@
 import com.gkhy.system.mapper.SysDeptMapper;
 import com.gkhy.system.mapper.SysRoleMapper;
 import com.gkhy.system.service.ISysDeptService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 部门管理 服务实现
@@ -48,6 +49,11 @@
         return deptMapper.selectDeptList(dept);
     }
 
+    @Override
+    public List<SysDept> getOutDeptList(SysDept dept) {
+        return deptMapper.getOutDeptList(dept);
+    }
+
     /**
      * 查询部门树结构信息
      * 
diff --git a/expert-system/src/main/java/com/gkhy/system/service/impl/SysExpertClassifyServiceImpl.java b/expert-system/src/main/java/com/gkhy/system/service/impl/SysExpertClassifyServiceImpl.java
index d452bcc..94881e1 100644
--- a/expert-system/src/main/java/com/gkhy/system/service/impl/SysExpertClassifyServiceImpl.java
+++ b/expert-system/src/main/java/com/gkhy/system/service/impl/SysExpertClassifyServiceImpl.java
@@ -1,15 +1,15 @@
-package com.gkhy.assess.system.service.impl;
+package com.gkhy.system.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.gkhy.assess.common.enums.DeleteFlagEnum;
-import com.gkhy.assess.common.exception.ApiException;
-import com.gkhy.assess.common.utils.StringUtils;
-import com.gkhy.assess.system.domain.SysExpertClassify;
-import com.gkhy.assess.system.mapper.SysExpertClassifyMapper;
-import com.gkhy.assess.system.service.SysExpertClassifyService;
-import com.gkhy.assess.system.utils.ShiroUtils;
+import com.gkhy.common.enums.DeleteFlagEnum;
+import com.gkhy.common.exception.ServiceException;
+import com.gkhy.common.utils.SecurityUtils;
+import com.gkhy.common.utils.StringUtils;
+import com.gkhy.system.domain.SysExpertClassify;
+import com.gkhy.system.mapper.SysExpertClassifyMapper;
+import com.gkhy.system.service.SysExpertClassifyService;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -33,7 +33,7 @@
         if(StringUtils.isNotBlank(expertClassify.getClassifyName())){
             lambdaQueryWrapper.like(SysExpertClassify::getClassifyName,expertClassify.getClassifyName());
         }
-        lambdaQueryWrapper.eq(SysExpertClassify::getDelFlag,DeleteFlagEnum.UN_DELETE.getCode());
+        lambdaQueryWrapper.eq(SysExpertClassify::getDelFlag, DeleteFlagEnum.UN_DELETE.getCode());
         List<SysExpertClassify> classifies= list(lambdaQueryWrapper);
         //筛选出所有一级标签
         return classifies.stream()
@@ -53,10 +53,10 @@
 
     @Override
     public int modClassify(SysExpertClassify expertClassify) {
-        expertClassify.setUpdateBy(ShiroUtils.getSysUser().getUsername());
+        expertClassify.setUpdateBy(SecurityUtils.getUsername());
         boolean b=updateById(expertClassify);
         if(!b){
-            throw new ApiException("修改专家分类失败");
+            throw new ServiceException("修改专家分类失败");
         }
         return 1;
     }
@@ -66,20 +66,20 @@
         SysExpertClassify classify = new SysExpertClassify();
         classify.setId(classifyId);
         classify.setDelFlag(DeleteFlagEnum.DELETED.getCode());
-        classify.setUpdateBy(ShiroUtils.getSysUser().getUsername());
+        classify.setUpdateBy(SecurityUtils.getUsername());
         boolean b=updateById(classify);
         if(!b){
-            throw new ApiException("删除专家分类失败");
+            throw new ServiceException("删除专家分类失败");
         }
         return 1;
     }
 
     @Override
     public int addClassify(SysExpertClassify expertClassify) {
-        expertClassify.setCreateBy(ShiroUtils.getSysUser().getUsername());
+        expertClassify.setCreateBy(SecurityUtils.getUsername());
         boolean b=save(expertClassify);
         if(!b){
-            throw new ApiException("新增专家分类失败");
+            throw new ServiceException("新增专家分类失败");
         }
         return 1;
     }
diff --git a/expert-system/src/main/java/com/gkhy/system/service/impl/SysExpertInfoServiceImpl.java b/expert-system/src/main/java/com/gkhy/system/service/impl/SysExpertInfoServiceImpl.java
index fe922cb..521e5b8 100644
--- a/expert-system/src/main/java/com/gkhy/system/service/impl/SysExpertInfoServiceImpl.java
+++ b/expert-system/src/main/java/com/gkhy/system/service/impl/SysExpertInfoServiceImpl.java
@@ -1,17 +1,18 @@
-package com.gkhy.assess.system.service.impl;
+package com.gkhy.system.service.impl;
+
 
 import cn.hutool.core.util.ObjectUtil;
-import com.gkhy.assess.common.api.CommonPage;
-import com.gkhy.assess.common.enums.DeleteFlagEnum;
-import com.gkhy.assess.common.exception.ApiException;
-import com.gkhy.assess.common.utils.PageUtil;
-import com.gkhy.assess.system.domain.SysAgency;
-import com.gkhy.assess.system.domain.SysExpertInfo;
-import com.gkhy.assess.system.domain.SysUser;
-import com.gkhy.assess.system.mapper.SysExpertInfoMapper;
-import com.gkhy.assess.system.service.SysExpertInfoService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.gkhy.assess.system.utils.ShiroUtils;
+import com.gkhy.common.enums.DeleteFlagEnum;
+import com.gkhy.common.exception.ServiceException;
+import com.gkhy.common.utils.SecurityUtils;
+import com.gkhy.system.domain.SysExpertInfo;
+import com.gkhy.system.domain.vo.request.SysExpertInfoRoundReq;
+import com.gkhy.system.domain.vo.request.SysExpertSearchReqDto;
+import com.gkhy.system.domain.vo.response.ProjectExpertSectionResp;
+import com.gkhy.system.domain.vo.response.SysExpertSearchRep;
+import com.gkhy.system.mapper.SysExpertInfoMapper;
+import com.gkhy.system.service.SysExpertInfoService;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -28,21 +29,23 @@
 public class SysExpertInfoServiceImpl extends ServiceImpl<SysExpertInfoMapper, SysExpertInfo> implements SysExpertInfoService {
 
     @Override
-    public CommonPage exportInfoList(SysExpertInfo expertInfo) {
-        PageUtil.startPage();
-        List<SysExpertInfo> agencyList=baseMapper.expertInfoList(expertInfo);
-        return CommonPage.restPage(agencyList);
+    public List<SysExpertInfo> exportInfoList(SysExpertInfo expertInfo) {
+        //todo 验证是否是管理不是管理只能看本部门
+        if (!SecurityUtils.isAdmin(SecurityUtils.getUserId())){
+            expertInfo.setDeptId(SecurityUtils.getDeptId());
+        }
+        return baseMapper.expertInfoList(expertInfo);
     }
 
     @Override
     public int addExpertInfo(SysExpertInfo expertInfo) {
         if(!checkIdCardUnique(new SysExpertInfo().setIdCard(expertInfo.getIdCard()))){
-            throw new ApiException(expertInfo.getIdCard()+"身份证号码已经存在");
+            throw new ServiceException("该业务处室申请数据已存在");
         }
-        expertInfo.setCreateBy(ShiroUtils.getSysUser().getUsername());
+        expertInfo.setCreateBy(expertInfo.getName());
         boolean b=save(expertInfo);
         if(!b){
-            throw new ApiException("新增专家信息失败");
+            throw new ServiceException("新增专家信息失败");
         }
         return 1;
     }
@@ -50,12 +53,12 @@
     @Override
     public int modExpertInfo(SysExpertInfo expertInfo) {
         if(!checkIdCardUnique(expertInfo)){
-            throw new ApiException(expertInfo.getIdCard()+"身份证号码已经存在");
+            throw new ServiceException("该业务处室申请数据已存在");
         }
-        expertInfo.setUpdateBy(ShiroUtils.getSysUser().getUsername());
+        expertInfo.setUpdateBy(SecurityUtils.getUsername());
         boolean b=updateById(expertInfo);
         if(!b){
-            throw new ApiException("修改专家信息失败");
+            throw new ServiceException("修改专家信息失败");
         }
         return 1;
     }
@@ -65,10 +68,10 @@
         SysExpertInfo expertInfo = new SysExpertInfo();
         expertInfo.setId(expertId);
         expertInfo.setDelFlag(DeleteFlagEnum.DELETED.getCode());
-        expertInfo.setUpdateBy(ShiroUtils.getSysUser().getUsername());
+        expertInfo.setUpdateBy(SecurityUtils.getUsername());
         boolean b= updateById(expertInfo);
         if(!b){
-            throw new ApiException("删除专家信息失败");
+            throw new ServiceException("删除专家信息失败");
         }
         return 1;
     }
@@ -87,12 +90,12 @@
 
     public SysExpertInfo checkExpertInfoDataScope(Long expertId) {
         if(expertId==null){
-            throw new ApiException("专家id为空!");
+            throw new ServiceException("专家id为空!");
         }
         SysExpertInfo expertInfo = baseMapper.getExpertInfoById(expertId);
         if (ObjectUtil.isNull(expertInfo))
         {
-            throw new ApiException("专家数据不存在!");
+            throw new ServiceException("专家数据不存在!");
         }
         return expertInfo;
     }
@@ -101,13 +104,27 @@
     public boolean changeApprove(SysExpertInfo expertInfo) {
         checkExpertInfoDataScope(expertInfo.getId());
         SysExpertInfo se=new SysExpertInfo().setId(expertInfo.getId()).setState(expertInfo.getState());
-        se.setUpdateBy(ShiroUtils.getSysUser().getUsername());
+        se.setUpdateBy(SecurityUtils.getUsername());
         return updateById(se);
+    }
+
+    @Override
+    public SysExpertSearchRep queryApprove(SysExpertSearchReqDto expertInfo) {
+        SysExpertSearchRep sysExpertSearchRep = baseMapper.queryApprove(expertInfo);
+        if (null == sysExpertSearchRep){
+            throw new ServiceException("申请记录不存!");
+        }
+        return sysExpertSearchRep;
+    }
+
+    @Override
+    public List<ProjectExpertSectionResp> getExpertRound(SysExpertInfoRoundReq req) {
+        return baseMapper.getExpertRound(req);
     }
 
     public boolean checkIdCardUnique(SysExpertInfo expertInfo){
         Long expertId = expertInfo.getId()==null? -1L : expertInfo.getId();
-        SysExpertInfo info = baseMapper.checkIdcardUnique(expertInfo.getIdCard());
+        SysExpertInfo info = baseMapper.checkIdcardUnique(expertInfo.getIdCard(),expertInfo.getDeptId());
         if (info!=null && info.getId().longValue() != expertId.longValue())
         {
             return false;
diff --git a/expert-system/src/main/java/com/gkhy/system/service/impl/SysSettingsServiceImpl.java b/expert-system/src/main/java/com/gkhy/system/service/impl/SysSettingsServiceImpl.java
index 6568a77..9fdb3c3 100644
--- a/expert-system/src/main/java/com/gkhy/system/service/impl/SysSettingsServiceImpl.java
+++ b/expert-system/src/main/java/com/gkhy/system/service/impl/SysSettingsServiceImpl.java
@@ -1,12 +1,24 @@
 package com.gkhy.system.service.impl;
 
+import cn.hutool.core.date.DateUtil;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import java.util.List;
+import com.gkhy.common.core.redis.RedisCache;
+import com.gkhy.common.core.text.Convert;
+import com.gkhy.common.enums.OpenFlagEnum;
+import com.gkhy.common.exception.ServiceException;
+import com.gkhy.common.utils.SecurityUtils;
+import com.gkhy.common.utils.StringUtils;
+import com.gkhy.system.domain.ApplyRecord;
+import com.gkhy.system.domain.SysSettings;
+import com.gkhy.system.mapper.ApplyRecordMapper;
+import com.gkhy.system.mapper.SysSettingsMapper;
+import com.gkhy.system.service.ISysSettingsService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import com.gkhy.system.mapper.SysSettingsMapper;
-import com.gkhy.system.domain.SysSettings;
-import com.gkhy.system.service.ISysSettingsService;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.PostConstruct;
+import java.util.List;
 
 /**
  * 系统配置Service业务层处理
@@ -19,38 +31,53 @@
     @Autowired
     private SysSettingsMapper sysSettingsMapper;
 
+    @Autowired
+    private RedisCache redisCache;
+
+    @Autowired
+    private ApplyRecordMapper applyRecordMapper;
+
+public static final String APPLY_SETTINGS = "APPLY_SETTINGS_KEY";
+
+    @PostConstruct
+    public void init()
+    {
+        loadingSettingsCache();
+    }
+
     /**
      * 查询系统配置
      *
-     * @param state 系统配置主键
+
      * @return 系统配置
      */
     @Override
-    public SysSettings selectSysSettingsByState(String state) {
-        return sysSettingsMapper.selectSysSettingsByState(state);
+    public String selectSysSettings() {
+
+        String state = Convert.toStr(redisCache.getCacheObject(APPLY_SETTINGS));
+        if (StringUtils.isNotEmpty(state))
+        {
+            return state;
+        }
+
+        SysSettings sysSettings = sysSettingsMapper.selectSysSettingsByState();
+        if (StringUtils.isNotNull(sysSettings)) {
+            redisCache.setCacheObject(APPLY_SETTINGS, sysSettings.getState());
+            return sysSettings.getState();
+        }
+
+        return OpenFlagEnum.CLOSE.getCode();
     }
 
-    /**
-     * 查询系统配置列表
-     *
-     * @param sysSettings 系统配置
-     * @return 系统配置
-     */
-    @Override
-    public List<SysSettings> selectSysSettingsList(SysSettings sysSettings) {
-        return sysSettingsMapper.selectSysSettingsList(sysSettings);
+    public void loadingSettingsCache(){
+        SysSettings sysSettings = sysSettingsMapper.selectSysSettingsByState();
+        if (sysSettings != null) {
+            redisCache.setCacheObject(APPLY_SETTINGS, sysSettings.getState());
+        }else {
+            redisCache.setCacheObject(APPLY_SETTINGS, OpenFlagEnum.CLOSE.getCode());
+        }
     }
 
-    /**
-     * 新增系统配置
-     *
-     * @param sysSettings 系统配置
-     * @return 结果
-     */
-    @Override
-    public int insertSysSettings(SysSettings sysSettings) {
-            return sysSettingsMapper.insertSysSettings(sysSettings);
-    }
 
     /**
      * 修改系统配置
@@ -59,29 +86,51 @@
      * @return 结果
      */
     @Override
-    public int updateSysSettings(SysSettings sysSettings) {
-        return sysSettingsMapper.updateSysSettings(sysSettings);
+    @Transactional
+    public int updateSysSettings(String sysSettings) {
+
+        int i = sysSettingsMapper.updateSysSettingsState(sysSettings);
+        if (i > 0){
+            String state = Convert.toStr(redisCache.getCacheObject(APPLY_SETTINGS));
+
+            if (OpenFlagEnum.OPEN.getCode().equals(sysSettings)){
+                if (StringUtils.isNotEmpty(state) && OpenFlagEnum.OPEN.getCode().equals(state)){
+                    throw new ServiceException("当前状态已开启!");
+                }
+                ApplyRecord applyRecord = new ApplyRecord();
+                applyRecord.setStartTime(DateUtil.date());
+                applyRecord.setCreateBy(SecurityUtils.getUsername());
+                int i1 = applyRecordMapper.insertApplyRecord(applyRecord);
+                if (i1 < 1){
+                    throw new ServiceException("开启失败,稍后再试!");
+                }
+            }else {
+                if (StringUtils.isNotEmpty(state) && OpenFlagEnum.CLOSE.getCode().equals(state)){
+                    throw new ServiceException("当前状态已关闭!");
+                }
+                List<ApplyRecord> list = applyRecordMapper.selectApplyRecordList();
+                if (StringUtils.isNotEmpty(list)){
+                    ApplyRecord applyRecord = list.get(0);
+                    applyRecord.setEndTime(DateUtil.date());
+                    applyRecord.setUpdateBy(SecurityUtils.getUsername());
+                    int i1 = applyRecordMapper.updateApplyRecord(applyRecord);
+                    if (i1 < 1){
+                        throw new ServiceException("关闭失败,稍后再试!");
+                    }
+                }
+            }
+            redisCache.setCacheObject(APPLY_SETTINGS, sysSettings);
+        }
+        return i;
     }
 
     /**
-     * 批量删除系统配置
+     * 查询开启申请记录列表
      *
-     * @param states 需要删除的系统配置主键
-     * @return 结果
+     * @return 开启申请记录
      */
     @Override
-    public int deleteSysSettingsByStates(String[] states) {
-        return sysSettingsMapper.deleteSysSettingsByStates(states);
-    }
-
-    /**
-     * 删除系统配置信息
-     *
-     * @param state 系统配置主键
-     * @return 结果
-     */
-    @Override
-    public int deleteSysSettingsByState(String state) {
-        return sysSettingsMapper.deleteSysSettingsByState(state);
+    public List<ApplyRecord> selectApplyRecordList() {
+        return applyRecordMapper.selectApplyRecordList();
     }
 }
\ No newline at end of file
diff --git a/expert-system/src/main/resources/mapper/system/ApplyRecordMapper.xml b/expert-system/src/main/resources/mapper/system/ApplyRecordMapper.xml
index 4ddf3f0..e8be75c 100644
--- a/expert-system/src/main/resources/mapper/system/ApplyRecordMapper.xml
+++ b/expert-system/src/main/resources/mapper/system/ApplyRecordMapper.xml
@@ -19,11 +19,8 @@
     </sql>
 
     <select id="selectApplyRecordList" parameterType="ApplyRecord" resultMap="ApplyRecordResult">
-        <include refid="selectApplyRecordVo"/>
-        <where>  
-            <if test="startTime != null "> and start_time = #{startTime}</if>
-            <if test="endTime != null "> and end_time = #{endTime}</if>
-        </where>
+        select id, start_time, end_time, create_by, create_time, update_by, update_time from apply_record
+        order by create_time desc
     </select>
     
     <select id="selectApplyRecordById" parameterType="Long" resultMap="ApplyRecordResult">
diff --git a/expert-system/src/main/resources/mapper/system/EvaluationMapper.xml b/expert-system/src/main/resources/mapper/system/EvaluationMapper.xml
index fff4cda..1e00355 100644
--- a/expert-system/src/main/resources/mapper/system/EvaluationMapper.xml
+++ b/expert-system/src/main/resources/mapper/system/EvaluationMapper.xml
@@ -23,12 +23,14 @@
 
     <select id="selectEvaluationList" parameterType="Evaluation" resultMap="EvaluationResult">
         <include refid="selectEvaluationVo"/>
-        <where>  
+        <where>
+            and del_flag = 0
             <if test="score != null "> and score = #{score}</if>
             <if test="content != null  and content != ''"> and content = #{content}</if>
             <if test="scoreType != null  and scoreType != ''"> and score_type = #{scoreType}</if>
             <if test="version != null "> and version = #{version}</if>
         </where>
+        order by create_time desc
     </select>
     
     <select id="selectEvaluationById" parameterType="Long" resultMap="EvaluationResult">
diff --git a/expert-system/src/main/resources/mapper/system/ProjectExpertDetailMapper.xml b/expert-system/src/main/resources/mapper/system/ProjectExpertDetailMapper.xml
index 69bdbd6..c306e4b 100644
--- a/expert-system/src/main/resources/mapper/system/ProjectExpertDetailMapper.xml
+++ b/expert-system/src/main/resources/mapper/system/ProjectExpertDetailMapper.xml
@@ -6,9 +6,10 @@
     
     <resultMap type="ProjectExpertDetail" id="ProjectExpertDetailResult">
         <result property="id"    column="id"    />
-        <result property="projectExpert"    column="project_expert"    />
+        <result property="projectExpertId"    column="project_expert_id"    />
         <result property="content"    column="content"    />
         <result property="score"    column="score"    />
+        <result property="scoreType"    column="score_type"    />
         <result property="delFlag"    column="del_flag"    />
         <result property="createBy"    column="create_by"    />
         <result property="createTime"    column="create_time"    />
@@ -17,16 +18,18 @@
     </resultMap>
 
     <sql id="selectProjectExpertDetailVo">
-        select id, project_expert, content, score, del_flag, create_by, create_time, update_by, update_time from project_expert_detail
+        select id, project_expert_id, content, score, del_flag,score_type, create_by, create_time, update_by, update_time from project_expert_detail
     </sql>
 
     <select id="selectProjectExpertDetailList" parameterType="ProjectExpertDetail" resultMap="ProjectExpertDetailResult">
         <include refid="selectProjectExpertDetailVo"/>
-        <where>  
-            <if test="projectExpert != null "> and project_expert = #{projectExpert}</if>
+        <where>
+        and del_flag = 0
+            <if test="projectExpertId != null "> and project_expert_id = #{projectExpertId}</if>
             <if test="content != null  and content != ''"> and content = #{content}</if>
             <if test="score != null "> and score = #{score}</if>
         </where>
+        order by create_time desc
     </select>
     
     <select id="selectProjectExpertDetailById" parameterType="Long" resultMap="ProjectExpertDetailResult">
@@ -37,9 +40,10 @@
     <insert id="insertProjectExpertDetail" parameterType="ProjectExpertDetail" useGeneratedKeys="true" keyProperty="id">
         insert into project_expert_detail
         <trim prefix="(" suffix=")" suffixOverrides=",">
-            <if test="projectExpert != null">project_expert,</if>
+            <if test="projectExpertId != null">project_expert_id,</if>
             <if test="content != null and content != ''">content,</if>
             <if test="score != null">score,</if>
+            <if test="scoreType != null and  scoreType != ''">score_type,</if>
             <if test="delFlag != null">del_flag,</if>
             <if test="createBy != null">create_by,</if>
             <if test="createTime != null">create_time,</if>
@@ -47,9 +51,10 @@
             <if test="updateTime != null">update_time,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
-            <if test="projectExpert != null">#{projectExpert},</if>
+            <if test="projectExpertId != null">#{projectExpertId},</if>
             <if test="content != null and content != ''">#{content},</if>
             <if test="score != null">#{score},</if>
+            <if test="scoreType != null and scoreType != ''">#{scoreType},</if>
             <if test="delFlag != null">#{delFlag},</if>
             <if test="createBy != null">#{createBy},</if>
             <if test="createTime != null">#{createTime},</if>
@@ -58,12 +63,30 @@
          </trim>
     </insert>
 
+    <insert id="batchInsertProjectExpertDetail" parameterType="java.util.List" >
+        insert into project_expert_detail
+            ( project_expert_id, content, score, score_type,  create_by)
+        values
+        <foreach collection="list" item="item" separator=",">
+            <trim prefix="(" suffix=")" suffixOverrides=",">
+                <if test="item.projectExpertId != null">#{item.projectExpertId},</if>
+                <if test="item.content != null and item.content != ''">#{item.content},</if>
+                <if test="item.score != null">#{item.score},</if>
+                <if test="item.scoreType != null and item.scoreType != ''">#{item.scoreType},</if>
+                <if test="item.createBy != null">#{item.createBy},</if>
+            </trim>
+        </foreach>
+    </insert>
+
+
+
     <update id="updateProjectExpertDetail" parameterType="ProjectExpertDetail">
         update project_expert_detail
         <trim prefix="SET" suffixOverrides=",">
-            <if test="projectExpert != null">project_expert = #{projectExpert},</if>
+            <if test="projectExpertId != null">project_expert_id = #{projectExpertId},</if>
             <if test="content != null and content != ''">content = #{content},</if>
             <if test="score != null">score = #{score},</if>
+            <if test="scoreType != null and scoreType != ''">score_type = #{scoreType},</if>
             <if test="delFlag != null">del_flag = #{delFlag},</if>
             <if test="createBy != null">create_by = #{createBy},</if>
             <if test="createTime != null">create_time = #{createTime},</if>
@@ -73,14 +96,32 @@
         where id = #{id}
     </update>
 
-    <delete id="deleteProjectExpertDetailById" parameterType="Long">
-        delete from project_expert_detail where id = #{id}
-    </delete>
+    <update id="batchUpdateProjectExpertDetail" parameterType="java.util.List">
+        <foreach collection="list" item="item" separator=";">
+            update project_expert_detail
+            <trim prefix="SET" suffixOverrides=",">
+                <if test="item.projectExpertId != null">project_expert_id = #{item.projectExpertId},</if>
+                <if test="item.content != null and item.content != ''">content = #{item.content},</if>
+                <if test="item.score != null">score = #{item.score},</if>
+                <if test="item.scoreType != null and item.scoreType != ''">score_type = #{item.scoreType},</if>
+                <if test="item.delFlag != null">del_flag = #{item.delFlag},</if>
+                <if test="item.createBy != null">create_by = #{item.createBy},</if>
+                <if test="item.createTime != null">create_time = #{item.createTime},</if>
+                <if test="item.updateBy != null">update_by = #{item.updateBy},</if>
+                <if test="item.updateTime != null">update_time = #{item.updateTime},</if>
+            </trim>
+            where id = #{item.id}
+        </foreach>
+    </update>
 
-    <delete id="deleteProjectExpertDetailByIds" parameterType="String">
-        delete from project_expert_detail where id in 
+    <update id="deleteProjectExpertDetailById" parameterType="Long">
+        update project_expert_detail set del_flag = 1 where id = #{id}
+    </update>
+
+    <update id="deleteProjectExpertDetailByIds" parameterType="String">
+        update project_expert_detail set del_flag = 1 where id in
         <foreach item="id" collection="array" open="(" separator="," close=")">
             #{id}
         </foreach>
-    </delete>
+    </update>
 </mapper>
\ No newline at end of file
diff --git a/expert-system/src/main/resources/mapper/system/ProjectExpertMapper.xml b/expert-system/src/main/resources/mapper/system/ProjectExpertMapper.xml
index 3d07764..e4476e1 100644
--- a/expert-system/src/main/resources/mapper/system/ProjectExpertMapper.xml
+++ b/expert-system/src/main/resources/mapper/system/ProjectExpertMapper.xml
@@ -9,7 +9,7 @@
         <result property="projectId"    column="project_id"    />
         <result property="expertId"    column="expert_id"    />
         <result property="score"    column="score"    />
-        <result property="envaluationState"    column="envaluation_state"    />
+        <result property="evaluationState"    column="evaluation_state"    />
         <result property="selectionMode"    column="selection_mode"    />
         <result property="teamLeader"    column="team_leader"    />
         <result property="delFlag"    column="del_flag"    />
@@ -20,16 +20,17 @@
     </resultMap>
 
     <sql id="selectProjectExpertVo">
-        select id, project_id, expert_id, score, envaluation_state, selection_mode, team_leader, del_flag, create_by, create_time, update_by, update_time from project_expert
+        select id, project_id, expert_id, score, evaluation_state, selection_mode, team_leader, del_flag, create_by, create_time, update_by, update_time from project_expert
     </sql>
 
     <select id="selectProjectExpertList" parameterType="ProjectExpert" resultMap="ProjectExpertResult">
         <include refid="selectProjectExpertVo"/>
-        <where>  
+        <where>
+            and del_flag = 0
             <if test="projectId != null "> and project_id = #{projectId}</if>
             <if test="expertId != null "> and expert_id = #{expertId}</if>
             <if test="score != null "> and score = #{score}</if>
-            <if test="envaluationState != null "> and envaluation_state = #{envaluationState}</if>
+            <if test="evaluationState != null "> and evaluation_state = #{evaluationState}</if>
             <if test="selectionMode != null "> and selection_mode = #{selectionMode}</if>
             <if test="teamLeader != null "> and team_leader = #{teamLeader}</if>
         </where>
@@ -46,7 +47,7 @@
             <if test="projectId != null">project_id,</if>
             <if test="expertId != null">expert_id,</if>
             <if test="score != null">score,</if>
-            <if test="envaluationState != null">envaluation_state,</if>
+            <if test="evaluationState != null">evaluation_state,</if>
             <if test="selectionMode != null">selection_mode,</if>
             <if test="teamLeader != null">team_leader,</if>
             <if test="delFlag != null">del_flag,</if>
@@ -59,7 +60,7 @@
             <if test="projectId != null">#{projectId},</if>
             <if test="expertId != null">#{expertId},</if>
             <if test="score != null">#{score},</if>
-            <if test="envaluationState != null">#{envaluationState},</if>
+            <if test="evaluationState != null">#{evaluationState},</if>
             <if test="selectionMode != null">#{selectionMode},</if>
             <if test="teamLeader != null">#{teamLeader},</if>
             <if test="delFlag != null">#{delFlag},</if>
@@ -70,13 +71,22 @@
          </trim>
     </insert>
 
+    <insert id="batchInsertProjectExpert" parameterType="java.util.List" >
+        insert into project_expert (project_id,expert_id,selection_mode,team_leader,create_by)
+        values
+        <foreach collection="list" item="item" separator=",">
+            (#{item.projectId},#{item.expertId},#{item.selectionMode},#{item.teamLeader},#{item.createBy})
+        </foreach>
+    </insert>
+
+
     <update id="updateProjectExpert" parameterType="ProjectExpert">
         update project_expert
         <trim prefix="SET" suffixOverrides=",">
             <if test="projectId != null">project_id = #{projectId},</if>
             <if test="expertId != null">expert_id = #{expertId},</if>
             <if test="score != null">score = #{score},</if>
-            <if test="envaluationState != null">envaluation_state = #{envaluationState},</if>
+            <if test="evaluationState != null">evaluation_state = #{evaluationState},</if>
             <if test="selectionMode != null">selection_mode = #{selectionMode},</if>
             <if test="teamLeader != null">team_leader = #{teamLeader},</if>
             <if test="delFlag != null">del_flag = #{delFlag},</if>
@@ -88,14 +98,72 @@
         where id = #{id}
     </update>
 
-    <delete id="deleteProjectExpertById" parameterType="Long">
-        delete from project_expert where id = #{id}
-    </delete>
+    <update id="batchUpdateProjectExpert" parameterType="java.util.List">
+        <foreach collection="list" item="item" separator=";">
+            update project_expert
+            <set>
+                <if test="item.projectId != null">project_id = #{item.projectId},</if>
+                <if test="item.expertId != null">expert_id = #{item.expertId},</if>
+                <if test="item.score != null">score = #{item.score},</if>
+                <if test="item.evaluationState != null">evaluation_state = #{item.evaluationState},</if>
+                <if test="item.selectionMode != null">selection_mode = #{item.selectionMode},</if>
+                <if test="item.teamLeader != null">team_leader = #{item.teamLeader},</if>
+                <if test="item.updateBy != null">update_by = #{item.updateBy}</if>
+            </set>
+            where id = #{item.id}
+        </foreach>
+    </update>
 
-    <delete id="deleteProjectExpertByIds" parameterType="String">
-        delete from project_expert where id in 
+    <update id="deleteProjectExpertById" parameterType="Long">
+        update project_expert set del_flag= 1 where id = #{id}
+    </update>
+
+    <update id="deleteProjectExpertByIds" parameterType="String">
+        update project_expert set del_flag= 1 where id in
         <foreach item="id" collection="array" open="(" separator="," close=")">
             #{id}
         </foreach>
-    </delete>
+    </update>
+
+    <select id="getUnEva" resultType="int" parameterType="Long">
+        select count(id) from  project_expert where project_id = #{id} and del_flag = 0 and evaluation_state = 0
+    </select>
+
+    <select id="projectExpertEvaluationList" parameterType="Long" resultType="com.gkhy.system.domain.vo.response.ProjectExpertEvaluationResp">
+        select b.id ,b.expert_id expertId ,c.name,c.sex,c.id_card idCard,c.domain,c.rating_level ratingLevel,
+               b.selection_mode selectionMode,b.team_leader teamLeader,b.score,b.evaluation_state evaluationState
+        from  project_expert b
+                 left join sys_expert_info c on b.expert_id = c.id
+        where b.project_id = #{projectId}
+        order by b.team_leader asc , b.selection_mode asc, b.create_time desc
+    </select>
+
+
+    <select id="projectExpertEvaList" parameterType="com.gkhy.system.domain.vo.request.SysProjectExpertReq" resultType="com.gkhy.system.domain.vo.response.ProjectExpertResp">
+        select a.id projectId, a.project_name projectName,
+               b.id projectExpertId,b.expert_id  expertId,c.name,c.id_card idCard,c.domain,b.selection_mode selectionMode,
+               b.team_leader teamLeader,b.update_time updateTime,b.score
+        from project_management a
+                 left join project_expert b on a.id = b.project_id and b.del_flag = 0
+                 left join sys_expert_info c on b.expert_id = c.id
+        where 1=1
+        <if test="projectName != null  and projectName != ''"> and a.project_name like concat('%', #{projectName}, '%')</if>
+        <if test="name != null and name != ''">
+            and c.name like concat('%', #{name}, '%')
+        </if>
+        <if test="idCard != null and idCard != ''">
+            and c.id_card like concat('%', #{idCard}, '%')
+        </if>
+        <if test="domain != null and domain != ''">
+            and c.domain like concat('%', #{domain}, '%')
+        </if>
+        <if test="startTime != null "><!-- 开始时间检索 -->
+            and date_format(b.update_time,'%y%m%d') &gt;= date_format(#{startTime},'%y%m%d')
+        </if>
+        <if test="endTime != null "><!-- 结束时间检索 -->
+            and date_format(b.update_time,'%y%m%d') &lt;= date_format(#{endTime},'%y%m%d')
+        </if>
+        order by b.team_leader asc , b.create_time desc
+    </select>
+
 </mapper>
\ No newline at end of file
diff --git a/expert-system/src/main/resources/mapper/system/ProjectFileMapper.xml b/expert-system/src/main/resources/mapper/system/ProjectFileMapper.xml
index 7dfd6e8..aebc10a 100644
--- a/expert-system/src/main/resources/mapper/system/ProjectFileMapper.xml
+++ b/expert-system/src/main/resources/mapper/system/ProjectFileMapper.xml
@@ -28,7 +28,8 @@
 
     <select id="selectProjectFileList" parameterType="ProjectFile" resultMap="ProjectFileResult">
         <include refid="selectProjectFileVo"/>
-        <where>  
+        <where>
+            and del_flag = 0
             <if test="projectId != null "> and project_id = #{projectId}</if>
             <if test="module != null  and module != ''"> and module = #{module}</if>
             <if test="filePath != null  and filePath != ''"> and file_path = #{filePath}</if>
@@ -82,6 +83,32 @@
          </trim>
     </insert>
 
+
+
+        <insert id="insertProjectFiles" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id">
+            insert into project_file
+                (project_id,module,file_path,file_url,file_name,file_suffix,file_desc,file_size,file_type,create_by)
+            values
+            <foreach collection="list" item="item" separator=",">
+                <trim prefix="(" suffix=")" suffixOverrides=",">
+                    <if test="item.projectId != null">#{item.projectId},</if>
+                    <if test="item.module != null and item.module != ''">#{item.module},</if>
+                    <if test="item.filePath != null">#{item.filePath},</if>
+                    <if test="item.fileUrl != null">#{item.fileUrl},</if>
+                    <if test="item.fileName != null">#{item.fileName},</if>
+                    <if test="item.fileSuffix != null">#{item.fileSuffix},</if>
+                    <if test="item.fileDesc != null">#{item.fileDesc},</if>
+                    <if test="item.fileSize != null">#{item.fileSize},</if>
+                    <if test="item.fileType != null">#{item.fileType},</if>
+                    <if test="item.createBy != null">#{item.createBy},</if>
+                </trim>
+            </foreach>
+        </insert>
+
+
+
+
+
     <update id="updateProjectFile" parameterType="ProjectFile">
         update project_file
         <trim prefix="SET" suffixOverrides=",">
@@ -95,22 +122,24 @@
             <if test="fileSize != null">file_size = #{fileSize},</if>
             <if test="fileType != null">file_type = #{fileType},</if>
             <if test="delFlag != null">del_flag = #{delFlag},</if>
-            <if test="createBy != null">create_by = #{createBy},</if>
-            <if test="createTime != null">create_time = #{createTime},</if>
             <if test="updateBy != null">update_by = #{updateBy},</if>
             <if test="updateTime != null">update_time = #{updateTime},</if>
         </trim>
         where id = #{id}
     </update>
 
-    <delete id="deleteProjectFileById" parameterType="Long">
-        delete from project_file where id = #{id}
-    </delete>
+    <update id="deleteProjectFileById" parameterType="Long">
+        update project_file set del_flag = 1 where id = #{id}
+    </update>
 
-    <delete id="deleteProjectFileByIds" parameterType="String">
-        delete from project_file where id in 
+    <update id="deleteProjectFileByIdAndType" >
+        update project_file set del_flag = 1 where project_id = #{projectId} and module = #{module}
+    </update>
+
+    <update id="deleteProjectFileByIds" parameterType="String">
+        update project_file set del_flag = 1 where id in
         <foreach item="id" collection="array" open="(" separator="," close=")">
             #{id}
         </foreach>
-    </delete>
+    </update>
 </mapper>
\ No newline at end of file
diff --git a/expert-system/src/main/resources/mapper/system/ProjectManagementMapper.xml b/expert-system/src/main/resources/mapper/system/ProjectManagementMapper.xml
index 484be7f..e636c7d 100644
--- a/expert-system/src/main/resources/mapper/system/ProjectManagementMapper.xml
+++ b/expert-system/src/main/resources/mapper/system/ProjectManagementMapper.xml
@@ -17,9 +17,15 @@
         <result property="remark"    column="remark"    />
         <result property="projectDateStart"    column="project_date_start"    />
         <result property="projectDateEnd"    column="project_date_end"    />
+        <result property="projectCheckTime"    column="project_check_time"    />
         <result property="expertCertificate"    column="expert_certificate"    />
-        <result property="envaluationState"    column="envaluation_state"    />
+        <result property="evaluationState"    column="evaluation_state"    />
         <result property="expertNum"    column="expert_num"    />
+        <result property="expertId"    column="expert_id"    />
+        <result property="expertName"    column="expert_name"    />
+        <result property="projectEndTime"    column="project_end_time"    />
+        <result property="desc"    column="desc"    />
+        <result property="step"    column="step"    />
         <result property="delFlag"    column="del_flag"    />
         <result property="createBy"    column="create_by"    />
         <result property="createTime"    column="create_time"    />
@@ -27,13 +33,45 @@
         <result property="updateTime"    column="update_time"    />
     </resultMap>
 
+    <resultMap type="com.gkhy.system.domain.vo.response.ProjectExpertManagementInfoRes" id="ProjectManagementInfoResult">
+        <result property="id"    column="id"    />
+        <result property="projectName"    column="project_name"    />
+        <result property="deptName"    column="dept_name"    />
+        <result property="remark"    column="remark"    />
+        <result property="state"    column="state"    />
+        <result property="step"    column="step"    />
+        <result property="companyName"    column="company_name"    />
+        <result property="projectAddress"    column="project_address"    />
+<!--        <result property="deptUserName"    column="dept_user_name"    />-->
+        <result property="projectDateStart"    column="project_date_start"    />
+        <result property="projectDateEnd"    column="project_date_end"    />
+        <result property="projectCheckTime"    column="project_check_time"    />
+        <collection  property="projectExpertCheckResp"   javaType="java.util.List"  resultMap="ExpertCheck" />
+    </resultMap>
+    <resultMap id="ExpertCheck" type="com.gkhy.system.domain.vo.response.ProjectExpertCheckResp">
+        <result  property="id"       column="project_expert_id"        />
+        <result property="expertId"     column="expert_id_info"      />
+        <result property="name"      column="name"       />
+        <result property="sex"     column="sex"      />
+        <result property="idCard"    column="id_card"     />
+        <result property="domain"       column="domain"    />
+        <result property="ratingLevel"     column="rating_level"      />
+        <result property="selectionMode"    column="selection_mode"     />
+        <result property="teamLeader"       column="team_leader"    />
+    </resultMap>
+
     <sql id="selectProjectManagementVo">
-        select id, project_name, dept_id, dept_name, company_name, project_address, dept_user_name, version, state, remark, project_date_start, project_date_end, expert_certificate, envaluation_state, expert_num, del_flag, create_by, create_time, update_by, update_time from project_management
+        select id, project_name, dept_id, dept_name, company_name, project_address, dept_user_name,
+               version, state, remark, project_date_start, project_date_end, expert_certificate,
+               evaluation_state, expert_num, del_flag, create_by, create_time, update_by, update_time,project_check_time,expert_id,
+               expert_name,project_end_time,'desc',step
+        from project_management
     </sql>
 
     <select id="selectProjectManagementList" parameterType="ProjectManagement" resultMap="ProjectManagementResult">
         <include refid="selectProjectManagementVo"/>
-        <where>  
+        <where>
+            and del_flag = 0
             <if test="projectName != null  and projectName != ''"> and project_name like concat('%', #{projectName}, '%')</if>
             <if test="deptId != null "> and dept_id = #{deptId}</if>
             <if test="deptName != null  and deptName != ''"> and dept_name like concat('%', #{deptName}, '%')</if>
@@ -42,17 +80,18 @@
             <if test="deptUserName != null  and deptUserName != ''"> and dept_user_name like concat('%', #{deptUserName}, '%')</if>
             <if test="version != null "> and version = #{version}</if>
             <if test="state != null "> and state = #{state}</if>
+            <if test="step!= null "> and step = #{step}</if>
             <if test="projectDateStart != null "> and project_date_start = #{projectDateStart}</if>
             <if test="projectDateEnd != null "> and project_date_end = #{projectDateEnd}</if>
             <if test="expertCertificate != null  and expertCertificate != ''"> and expert_certificate = #{expertCertificate}</if>
-            <if test="envaluationState != null "> and envaluation_state = #{envaluationState}</if>
+            <if test="evaluationState != null "> and evaluation_state = #{evaluationState}</if>
             <if test="expertNum != null "> and expert_num = #{expertNum}</if>
         </where>
     </select>
     
     <select id="selectProjectManagementById" parameterType="Long" resultMap="ProjectManagementResult">
         <include refid="selectProjectManagementVo"/>
-        where id = #{id}
+        where id = #{id} and del_flag = 0
     </select>
 
     <insert id="insertProjectManagement" parameterType="ProjectManagement" useGeneratedKeys="true" keyProperty="id">
@@ -66,11 +105,12 @@
             <if test="deptUserName != null and deptUserName != ''">dept_user_name,</if>
             <if test="version != null">version,</if>
             <if test="state != null">state,</if>
+            <if test="step != null">step,</if>
             <if test="remark != null">remark,</if>
             <if test="projectDateStart != null">project_date_start,</if>
             <if test="projectDateEnd != null">project_date_end,</if>
             <if test="expertCertificate != null">expert_certificate,</if>
-            <if test="envaluationState != null">envaluation_state,</if>
+            <if test="evaluationState != null">evaluation_state,</if>
             <if test="expertNum != null">expert_num,</if>
             <if test="delFlag != null">del_flag,</if>
             <if test="createBy != null">create_by,</if>
@@ -87,11 +127,12 @@
             <if test="deptUserName != null and deptUserName != ''">#{deptUserName},</if>
             <if test="version != null">#{version},</if>
             <if test="state != null">#{state},</if>
+            <if test="step != null">#{step},</if>
             <if test="remark != null">#{remark},</if>
             <if test="projectDateStart != null">#{projectDateStart},</if>
             <if test="projectDateEnd != null">#{projectDateEnd},</if>
             <if test="expertCertificate != null">#{expertCertificate},</if>
-            <if test="envaluationState != null">#{envaluationState},</if>
+            <if test="evaluationState != null">#{evaluationState},</if>
             <if test="expertNum != null">#{expertNum},</if>
             <if test="delFlag != null">#{delFlag},</if>
             <if test="createBy != null">#{createBy},</if>
@@ -112,12 +153,18 @@
             <if test="deptUserName != null and deptUserName != ''">dept_user_name = #{deptUserName},</if>
             <if test="version != null">version = #{version},</if>
             <if test="state != null">state = #{state},</if>
+            <if test="step != null">step = #{step},</if>
             <if test="remark != null">remark = #{remark},</if>
             <if test="projectDateStart != null">project_date_start = #{projectDateStart},</if>
             <if test="projectDateEnd != null">project_date_end = #{projectDateEnd},</if>
+            <if test="projectCheckTime != null">project_check_time = #{projectCheckTime},</if>
             <if test="expertCertificate != null">expert_certificate = #{expertCertificate},</if>
-            <if test="envaluationState != null">envaluation_state = #{envaluationState},</if>
+            <if test="evaluationState != null">evaluation_state = #{evaluationState},</if>
             <if test="expertNum != null">expert_num = #{expertNum},</if>
+            <if test="expertId != null">expert_id = #{expertId},</if>
+            <if test="expertName != null and expertName != ''">expert_name = #{expertName},</if>
+            <if test="projectEndTime != null">project_end_time = #{projectEndTime},</if>
+            <if test="desc != null and desc != ''">`desc` = #{desc},</if>
             <if test="delFlag != null">del_flag = #{delFlag},</if>
             <if test="createBy != null">create_by = #{createBy},</if>
             <if test="createTime != null">create_time = #{createTime},</if>
@@ -127,14 +174,37 @@
         where id = #{id}
     </update>
 
-    <delete id="deleteProjectManagementById" parameterType="Long">
-        delete from project_management where id = #{id}
-    </delete>
+    <update id="deleteProjectManagementById" parameterType="Long">
+        update  project_management set del_flag = 1 where id = #{id}
+    </update>
 
-    <delete id="deleteProjectManagementByIds" parameterType="String">
-        delete from project_management where id in 
+    <update id="deleteProjectManagementByIds" parameterType="String">
+        update  project_management set del_flag = 1 where id in
         <foreach item="id" collection="array" open="(" separator="," close=")">
             #{id}
         </foreach>
-    </delete>
+    </update>
+
+    <select id="projectExpertCheckInfo" parameterType="Long" resultMap="ProjectManagementInfoResult">
+        select a.id,a.step, a.project_name, a.dept_name, a.company_name, a.project_address, a.project_date_start, a.project_date_end, a.remark,a.project_check_time,a.state,
+            b.id project_expert_id,b.expert_id expert_id_info,c.name,c.sex,c.id_card,c.domain,c.rating_level,b.selection_mode,b.team_leader
+        from project_management a
+        left join project_expert b on a.id = b.project_id and b.del_flag = 0
+                                   left join sys_expert_info c on b.expert_id = c.id
+         where a.id = #{id}
+        order by b.team_leader asc , b.create_time desc
+    </select>
+    <select id="getProjectExpertSate" parameterType="com.gkhy.system.domain.vo.request.ProjectExpertStateReq" resultType="com.gkhy.system.domain.vo.response.ProjectExpertStateResp">
+        select a.id, a.project_name, a.evaluation_state, a.project_check_time, a.project_end_time, a.dept_name, a.expert_num
+        from project_management a
+        where a.del_flag = 0 and a.state = 4
+        <if test="projectCheckTime != null "> and a.project_check_time = #{projectCheckTime}</if>
+        <if test="projectName != null  and projectName != ''"> and a.project_name like concat('%', #{projectName}, '%')</if>
+        <if test="evaluationState != null "> and a.evaluation_state = #{evaluationState}</if>
+    </select>
+
+    <select id="getDataNum" parameterType="Long" resultType="Integer">
+        select state from project_management where del_flag = 0
+        <if test="deptId != null "> and dept_id = #{deptId}</if>
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/expert-system/src/main/resources/mapper/system/SysDeptMapper.xml b/expert-system/src/main/resources/mapper/system/SysDeptMapper.xml
index 2f0479b..9e45e86 100644
--- a/expert-system/src/main/resources/mapper/system/SysDeptMapper.xml
+++ b/expert-system/src/main/resources/mapper/system/SysDeptMapper.xml
@@ -46,6 +46,26 @@
 		${params.dataScope}
 		order by d.parent_id, d.order_num
     </select>
+
+
+	<select id="getOutDeptList" parameterType="SysDept" resultMap="SysDeptResult">
+		<include refid="selectDeptVo"/>
+		where d.del_flag = '0'
+		<if test="deptId != null and deptId != 0">
+			AND dept_id = #{deptId}
+		</if>
+		<if test="parentId != null and parentId != 0">
+			AND parent_id = #{parentId}
+		</if>
+		<if test="deptName != null and deptName != ''">
+			AND dept_name like concat('%', #{deptName}, '%')
+		</if>
+		<if test="status != null and status != ''">
+			AND status = #{status}
+		</if>
+		order by d.parent_id, d.order_num
+	</select>
+
     
     <select id="selectDeptListByRoleId" resultType="Long">
 		select d.dept_id
diff --git a/expert-system/src/main/resources/mapper/system/SysExpertClassifyMapper.xml b/expert-system/src/main/resources/mapper/system/SysExpertClassifyMapper.xml
index b97128d..268f3b8 100644
--- a/expert-system/src/main/resources/mapper/system/SysExpertClassifyMapper.xml
+++ b/expert-system/src/main/resources/mapper/system/SysExpertClassifyMapper.xml
@@ -1,5 +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.assess.system.mapper.SysExpertClassifyMapper">
+<mapper namespace="com.gkhy.system.mapper.SysExpertClassifyMapper">
 
 </mapper>
diff --git a/expert-system/src/main/resources/mapper/system/SysExpertInfoMapper.xml b/expert-system/src/main/resources/mapper/system/SysExpertInfoMapper.xml
index 29e81b0..204996e 100644
--- a/expert-system/src/main/resources/mapper/system/SysExpertInfoMapper.xml
+++ b/expert-system/src/main/resources/mapper/system/SysExpertInfoMapper.xml
@@ -1,6 +1,6 @@
 <?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.assess.system.mapper.SysExpertInfoMapper">
+<mapper namespace="com.gkhy.system.mapper.SysExpertInfoMapper">
 
     <sql id="selectExpertInfoVo">
         select id,name,sex,birthday,phone,title,state,electronic_photo,id_card,duty_status,
@@ -8,7 +8,7 @@
                graduation_school,degree,speciality,current_profession,support_direction_safety,
                support_direction_prevention,support_direction_emergency,resume_key,paper_situation_key,
                reward_key,achievement_key,personal_opinion_key,recommend_unit_opinion_key,remark,create_by,
-               create_time,big_classify,small_classify,del_flag,source
+               create_time,big_classify,small_classify,del_flag,source,rating_level,employment_date_start,employment_date_end,expert_certificate,dept_id
         from sys_expert_info
     </sql>
 
@@ -19,8 +19,9 @@
         </foreach>
     </update>
 
-    <select id="expertInfoList" resultType="com.gkhy.assess.system.domain.SysExpertInfo">
-        select id,name,sex,birthday,phone,title,degree,state,speciality,big_classify,small_classify,id_card,company_name,domain,level,current_profession,duty_status,support_direction_safety,create_time from sys_expert_info
+    <select id="expertInfoList" resultType="com.gkhy.system.domain.SysExpertInfo">
+        select id,name,sex,birthday,phone,title,degree,state,speciality,big_classify,small_classify,id_card,company_name,
+            domain,level,current_profession,duty_status,support_direction_safety,create_time,rating_level,employment_date_start,employment_date_end,expert_certificate from sys_expert_info
         <where>
             and del_flag = 0
             <if test="name != null and name != ''">
@@ -28,6 +29,9 @@
             </if>
             <if test="bigClassify != null">
                 and big_classify = #{bigClassify}
+            </if>
+            <if test="ratingLevel != null and ratingLevel != ''">
+                and rating_level = #{ratingLevel}
             </if>
             <if test="smallClassify != null">
                 and small_classify = #{smallClassify}
@@ -38,21 +42,51 @@
             <if test="state != null">
                 and state = #{state}
             </if>
+            <if test="deptId != null">
+                and dept_id = #{deptId}
+            </if>
             <if test="params.startTime != null "><!-- 开始时间检索 -->
                 and date_format(create_time,'%y%m%d') &gt;= date_format(#{params.startTime},'%y%m%d')
             </if>
             <if test="params.endTime != null "><!-- 结束时间检索 -->
                 and date_format(create_time,'%y%m%d') &lt;= date_format(#{params.endTime},'%y%m%d')
             </if>
+
         </where>
         order by create_time desc
     </select>
-    <select id="checkIdcardUnique" resultType="com.gkhy.assess.system.domain.SysExpertInfo">
-        select id,name from sys_expert_info where id_card=#{idCard} and del_flag=0 limit 1
+    <select id="checkIdcardUnique" resultType="com.gkhy.system.domain.SysExpertInfo">
+        select id,name from sys_expert_info where id_card=#{idCard} and dept_id = #{deptId} and del_flag=0 limit 1
     </select>
 
-    <select id="getExpertInfoById" resultType="com.gkhy.assess.system.domain.SysExpertInfo">
+    <select id="getExpertInfoById" resultType="com.gkhy.system.domain.SysExpertInfo">
         <include refid="selectExpertInfoVo"/>
         where id=#{expertId}
     </select>
+
+
+    <select id="queryApprove" parameterType="com.gkhy.system.domain.vo.request.SysExpertSearchReqDto" resultType="com.gkhy.system.domain.vo.response.SysExpertSearchRep">
+        select expert_certificate,state from sys_expert_info where id_card=#{idCard} and dept_id = #{deptId} and phone = #{phone} and del_flag=0 limit 1
+    </select>
+
+    <select id="getExpertRound" parameterType="com.gkhy.system.domain.vo.request.SysExpertInfoRoundReq"
+            resultType="com.gkhy.system.domain.vo.response.ProjectExpertSectionResp">
+        select id,name,sex,id_card idCard,
+            domain,rating_level ratingLevel from sys_expert_info
+        where del_flag = 0
+            <if test="domain != null and domain.size() > 0">
+                and domain in
+                <foreach collection="domain" item="item" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+        <if test="ratingLevel != null and ratingLevel.size() > 0">
+            and rating_level in
+        <foreach collection="ratingLevel" item="item" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+        </if>
+        ORDER BY RAND()
+            LIMIT #{num}
+    </select>
 </mapper>
diff --git a/expert-system/src/main/resources/mapper/system/SysSettingsMapper.xml b/expert-system/src/main/resources/mapper/system/SysSettingsMapper.xml
index e9d8f66..bec945a 100644
--- a/expert-system/src/main/resources/mapper/system/SysSettingsMapper.xml
+++ b/expert-system/src/main/resources/mapper/system/SysSettingsMapper.xml
@@ -19,9 +19,8 @@
         </where>
     </select>
     
-    <select id="selectSysSettingsByState" parameterType="String" resultMap="SysSettingsResult">
-        <include refid="selectSysSettingsVo"/>
-        where state = #{state}
+    <select id="selectSysSettingsByState"  resultMap="SysSettingsResult">
+        select state from sys_settings where id  = 1
     </select>
 
     <insert id="insertSysSettings" parameterType="SysSettings">
@@ -34,11 +33,8 @@
          </trim>
     </insert>
 
-    <update id="updateSysSettings" parameterType="SysSettings">
-        update sys_settings
-        <trim prefix="SET" suffixOverrides=",">
-        </trim>
-        where state = #{state}
+    <update id="updateSysSettingsState" parameterType="String">
+        update sys_settings set state = #{state} where id=1
     </update>
 
     <delete id="deleteSysSettingsByState" parameterType="String">
diff --git a/pom.xml b/pom.xml
index 2465e44..e83a57c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,16 +4,16 @@
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 	<modelVersion>4.0.0</modelVersion>
 	
-    <groupId>com.ruoyi</groupId>
-    <artifactId>ruoyi</artifactId>
+    <groupId>com.gkhy</groupId>
+    <artifactId>expert</artifactId>
     <version>3.8.8</version>
 
-    <name>ruoyi</name>
-    <url>http://www.ruoyi.vip</url>
-    <description>若依管理系统</description>
+    <name>expert</name>
+    <url>http://www.expert.vip</url>
+    <description>专家管理系统</description>
     
     <properties>
-        <ruoyi.version>3.8.8</ruoyi.version>
+        <expert.version>3.8.8</expert.version>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
         <java.version>1.8</java.version>
@@ -30,11 +30,13 @@
         <poi.version>4.1.2</poi.version>
         <velocity.version>2.3</velocity.version>
         <jwt.version>0.9.1</jwt.version>
+        <mybatis-plus.version>3.5.1</mybatis-plus.version>
         <!-- override dependency version -->
         <tomcat.version>9.0.96</tomcat.version>
         <logback.version>1.2.13</logback.version>
         <spring-security.version>5.7.12</spring-security.version>
         <spring-framework.version>5.3.39</spring-framework.version>
+        <hutool.version>5.8.9</hutool.version>
     </properties>
 
     <!-- 依赖声明 -->
@@ -66,6 +68,17 @@
                 <version>${spring-boot.version}</version>
                 <type>pom</type>
                 <scope>import</scope>
+            </dependency>
+
+            <dependency>
+                <groupId>com.baomidou</groupId>
+                <artifactId>mybatis-plus-boot-starter</artifactId>
+                <version>${mybatis-plus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.baomidou</groupId>
+                <artifactId>mybatis-plus-generator</artifactId>
+                <version>${mybatis-plus.version}</version>
             </dependency>
 
             <!-- 覆盖logback的依赖配置-->
@@ -129,17 +142,17 @@
             </dependency>
 
             <!-- Swagger3依赖 -->
-            <dependency>
-                <groupId>io.springfox</groupId>
-                <artifactId>springfox-boot-starter</artifactId>
-                <version>${swagger.version}</version>
-                <exclusions>
-                    <exclusion>
-                        <groupId>io.swagger</groupId>
-                        <artifactId>swagger-models</artifactId>
-                    </exclusion>
-                </exclusions>
-            </dependency>
+<!--            <dependency>-->
+<!--                <groupId>io.springfox</groupId>-->
+<!--                <artifactId>springfox-boot-starter</artifactId>-->
+<!--                <version>${swagger.version}</version>-->
+<!--                <exclusions>-->
+<!--                    <exclusion>-->
+<!--                        <groupId>io.swagger</groupId>-->
+<!--                        <artifactId>swagger-models</artifactId>-->
+<!--                    </exclusion>-->
+<!--                </exclusions>-->
+<!--            </dependency>-->
 
             <!-- io常用工具类 -->
             <dependency>
@@ -183,51 +196,55 @@
                 <version>${kaptcha.version}</version>
             </dependency>
 
-            <!-- 定时任务-->
-            <dependency>
-                <groupId>com.ruoyi</groupId>
-                <artifactId>ruoyi-quartz</artifactId>
-                <version>${ruoyi.version}</version>
-            </dependency>
 
             <!-- 代码生成-->
             <dependency>
-                <groupId>com.ruoyi</groupId>
-                <artifactId>ruoyi-generator</artifactId>
-                <version>${ruoyi.version}</version>
+                <groupId>com.gkhy</groupId>
+                <artifactId>expert-generator</artifactId>
+                <version>${expert.version}</version>
             </dependency>
 
             <!-- 核心模块-->
             <dependency>
-                <groupId>com.ruoyi</groupId>
-                <artifactId>ruoyi-framework</artifactId>
-                <version>${ruoyi.version}</version>
+                <groupId>com.gkhy</groupId>
+                <artifactId>expert-framework</artifactId>
+                <version>${expert.version}</version>
             </dependency>
 
             <!-- 系统模块-->
             <dependency>
-                <groupId>com.ruoyi</groupId>
-                <artifactId>ruoyi-system</artifactId>
-                <version>${ruoyi.version}</version>
+                <groupId>com.gkhy</groupId>
+                <artifactId>expert-system</artifactId>
+                <version>${expert.version}</version>
             </dependency>
 
             <!-- 通用工具-->
             <dependency>
-                <groupId>com.ruoyi</groupId>
-                <artifactId>ruoyi-common</artifactId>
-                <version>${ruoyi.version}</version>
+                <groupId>com.gkhy</groupId>
+                <artifactId>expert-common</artifactId>
+                <version>${expert.version}</version>
+            </dependency>
+            <!--Hutool Java工具包-->
+            <dependency>
+                <groupId>cn.hutool</groupId>
+                <artifactId>hutool-all</artifactId>
+                <version>${hutool.version}</version>
             </dependency>
 
+            <dependency>
+                <groupId>com.github.xiaoymin</groupId>
+                <artifactId>knife4j-spring-boot-starter</artifactId>
+                <version>3.0.3</version>
+            </dependency>
         </dependencies>
     </dependencyManagement>
 
     <modules>
-        <module>ruoyi-admin</module>
-        <module>ruoyi-framework</module>
-        <module>ruoyi-system</module>
-        <module>ruoyi-quartz</module>
-        <module>ruoyi-generator</module>
-        <module>ruoyi-common</module>
+        <module>expert-admin</module>
+        <module>expert-framework</module>
+        <module>expert-system</module>
+        <module>expert-generator</module>
+        <module>expert-common</module>
     </modules>
     <packaging>pom</packaging>
 
diff --git a/ry.bat b/ry.bat
index 69abee7..acd4ee0 100644
--- a/ry.bat
+++ b/ry.bat
@@ -1,21 +1,21 @@
 @echo off
 
-rem jarƽ��Ŀ¼
-set AppName=ruoyi-admin.jar
+rem jarƽ��Ŀ¼
+set AppName=expert-admin.jar
 
-rem JVM����
+rem JVM����
 set JVM_OPTS="-Dname=%AppName%  -Duser.timezone=Asia/Shanghai -Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDateStamps  -XX:+PrintGCDetails -XX:NewRatio=1 -XX:SurvivorRatio=30 -XX:+UseParallelGC -XX:+UseParallelOldGC"
 
 
 ECHO.
-	ECHO.  [1] ����%AppName%
-	ECHO.  [2] �ر�%AppName%
-	ECHO.  [3] ����%AppName%
-	ECHO.  [4] ����״̬ %AppName%
-	ECHO.  [5] �� ��
+	ECHO.  [1] ����%AppName%
+	ECHO.  [2] �ر�%AppName%
+	ECHO.  [3] ����%AppName%
+	ECHO.  [4] ����״̬ %AppName%
+	ECHO.  [5] �� ��
 ECHO.
 
-ECHO.������ѡ����Ŀ�����:
+ECHO.������ѡ����Ŀ�����:
 set /p ID=
 	IF "%id%"=="1" GOTO start
 	IF "%id%"=="2" GOTO stop
@@ -35,11 +35,11 @@
 
 start javaw %JVM_OPTS% -jar %AppName%
 
-echo  starting����
+echo  starting����
 echo  Start %AppName% success...
 goto:eof
 
-rem ����stopͨ��jps�������pid����������
+rem ����stopͨ��jps�������pid����������
 :stop
 	for /f "usebackq tokens=1-2" %%a in (`jps -l ^| findstr %AppName%`) do (
 		set pid=%%a
@@ -48,7 +48,7 @@
 	if not defined pid (echo process %AppName% does not exists) else (
 		echo prepare to kill %image_name%
 		echo start kill %pid% ...
-		rem ���ݽ���ID��kill����
+		rem ���ݽ���ID��kill����
 		taskkill /f /pid %pid%
 	)
 goto:eof
diff --git a/ry.sh b/ry.sh
index d6a9cf3..5e80935 100644
--- a/ry.sh
+++ b/ry.sh
@@ -1,6 +1,6 @@
 #!/bin/sh
 # ./ry.sh start 启动 stop 停止 restart 重启 status 状态
-AppName=ruoyi-admin.jar
+AppName=expert-admin.jar
 
 # JVM参数
 JVM_OPTS="-Dname=$AppName  -Duser.timezone=Asia/Shanghai -Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDateStamps  -XX:+PrintGCDetails -XX:NewRatio=1 -XX:SurvivorRatio=30 -XX:+UseParallelGC -XX:+UseParallelOldGC"
diff --git a/sql/ry_20240629.sql b/sql/ry_20240629.sql
index a8647d2..27b2560 100644
--- a/sql/ry_20240629.sql
+++ b/sql/ry_20240629.sql
@@ -161,7 +161,7 @@
 insert into sys_menu values('1', '系统管理', '0', '1', 'system',           null, '', '', 1, 0, 'M', '0', '0', '', 'system',   'admin', sysdate(), '', null, '系统管理目录');
 insert into sys_menu values('2', '系统监控', '0', '2', 'monitor',          null, '', '', 1, 0, 'M', '0', '0', '', 'monitor',  'admin', sysdate(), '', null, '系统监控目录');
 insert into sys_menu values('3', '系统工具', '0', '3', 'tool',             null, '', '', 1, 0, 'M', '0', '0', '', 'tool',     'admin', sysdate(), '', null, '系统工具目录');
-insert into sys_menu values('4', '若依官网', '0', '4', 'http://ruoyi.vip', null, '', '', 0, 0, 'M', '0', '0', '', 'guide',    'admin', sysdate(), '', null, '若依官网地址');
+insert into sys_menu values('4', '若依官网', '0', '4', 'http://expert.vip', null, '', '', 0, 0, 'M', '0', '0', '', 'guide',    'admin', sysdate(), '', null, '若依官网地址');
 -- 二级菜单
 insert into sys_menu values('100',  '用户管理', '1',   '1', 'user',       'system/user/index',        '', '', 1, 0, 'C', '0', '0', 'system:user:list',        'user',          'admin', sysdate(), '', null, '用户管理菜单');
 insert into sys_menu values('101',  '角色管理', '1',   '2', 'role',       'system/role/index',        '', '', 1, 0, 'C', '0', '0', 'system:role:list',        'peoples',       'admin', sysdate(), '', null, '角色管理菜单');

--
Gitblit v1.9.2