From 05fed078888dd5c2624751b6b29c5e16b7f1b2e6 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期一, 19 五月 2025 09:29:28 +0800
Subject: [PATCH] 测评接口,bug修改

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TFeasibilityStudyReportServiceImpl.java |   34 +
 ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentSchemePerson.java                   |    8 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TClinicalTrialPointsServiceImpl.java    |   27 +
 ruoyi-system/src/main/java/com/ruoyi/system/service/TExperimentSchemeService.java                |    7 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TTesterOtherTaskController.java           |  179 +++++++++
 ruoyi-system/src/main/java/com/ruoyi/system/model/TClinicalTrialPoints.java                      |   10 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TExperimentResultReportServiceImpl.java |   14 
 ruoyi-system/src/main/resources/mapper/system/TExperimentResultReportMapper.xml                  |   41 ++
 ruoyi-system/src/main/java/com/ruoyi/system/query/TExperimentResultReportQuery.java              |    6 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TExperimentResultReportController.java    |   48 ++
 ruoyi-system/src/main/java/com/ruoyi/system/service/TExperimentResultReportService.java          |    6 
 ruoyi-system/src/main/java/com/ruoyi/system/vo/TExperimentSchemeVO.java                          |   14 
 ruoyi-system/src/main/resources/mapper/system/TExperimentSchemeMapper.xml                        |   27 +
 ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentResultReport.java                   |    8 
 ruoyi-system/src/main/java/com/ruoyi/system/dto/TClinicalTrialPointsDTO.java                     |   13 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TExperimentSchemeController.java          |   41 ++
 ruoyi-system/src/main/resources/mapper/system/TClinicalTrialPointsMapper.xml                     |   36 +
 ruoyi-system/src/main/java/com/ruoyi/system/service/TFeasibilityStudyReportService.java          |   16 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TExperimentSchemeServiceImpl.java       |   54 ++
 ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentDispatch.java                       |    9 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java                 |   13 
 ruoyi-system/src/main/java/com/ruoyi/system/vo/TFeasibilityStudyReportVO.java                    |    6 
 ruoyi-system/src/main/java/com/ruoyi/system/query/TFeasibilityStudyReportQuery.java              |    5 
 ruoyi-system/src/main/resources/mapper/system/TFeasibilityStudyReportMapper.xml                  |   76 ++++
 ruoyi-system/src/main/java/com/ruoyi/system/vo/TClinicalTrialPointsVO.java                       |   22 +
 ruoyi-system/src/main/java/com/ruoyi/system/service/TClinicalTrialPointsService.java             |    9 
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/TExperimentResultReportMapper.java            |    7 
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/TFeasibilityStudyReportMapper.java            |   17 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TFeasibilityStudyReportController.java    |   82 ++++
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TClinicalTrialPointsController.java       |  166 +++++++++
 ruoyi-system/src/main/java/com/ruoyi/system/query/TClinicalTrialPointsQuery.java                 |   20 +
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/TExperimentSchemeMapper.java                  |    8 
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/TClinicalTrialPointsMapper.java               |   13 
 ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentScheme.java                         |    8 
 34 files changed, 1,010 insertions(+), 40 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TClinicalTrialPointsController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TClinicalTrialPointsController.java
index 64a5ffa..18464ce 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TClinicalTrialPointsController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TClinicalTrialPointsController.java
@@ -1,9 +1,33 @@
 package com.ruoyi.web.controller.api;
 
 
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.basic.PageInfo;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.framework.web.service.TokenService;
+import com.ruoyi.system.dto.TClinicalTrialPointsDTO;
+import com.ruoyi.system.mapper.SysUserMapper;
+import com.ruoyi.system.model.TClinicalTrialPoints;
+import com.ruoyi.system.model.TProjectTeam;
+import com.ruoyi.system.model.TProjectTeamStaff;
+import com.ruoyi.system.query.TClinicalTrialPointsQuery;
+import com.ruoyi.system.service.TClinicalTrialPointsService;
+import com.ruoyi.system.service.TProjectTeamService;
+import com.ruoyi.system.service.TProjectTeamStaffService;
+import com.ruoyi.system.vo.TClinicalTrialPointsVO;
 import io.swagger.annotations.Api;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -15,8 +39,144 @@
  */
 @Api(tags = "临床试验积分")
 @RestController
-@RequestMapping("/t-clinical-trial-points")
+@RequestMapping("")
 public class TClinicalTrialPointsController {
 
+    private final TClinicalTrialPointsService clinicalTrialPointsService;
+    private final TokenService tokenService;
+    private final TProjectTeamService projectTeamService;
+    private final TProjectTeamStaffService projectTeamStaffService;
+    private final SysUserMapper sysUserMapper;
+    @Autowired
+    public TClinicalTrialPointsController(TClinicalTrialPointsService clinicalTrialPointsService, TokenService tokenService, TProjectTeamService projectTeamService, TProjectTeamStaffService projectTeamStaffService, SysUserMapper sysUserMapper) {
+        this.clinicalTrialPointsService = clinicalTrialPointsService;
+        this.tokenService = tokenService;
+        this.projectTeamService = projectTeamService;
+        this.projectTeamStaffService = projectTeamStaffService;
+        this.sysUserMapper = sysUserMapper;
+    }
+
+    /**
+     * 获取临床试验积分列表
+     */
+    //@PreAuthorize("@ss.hasPermi('system:clinicalTrialPoints:list')")
+    @ApiOperation(value = "获取临床试验积分分页列表", response = TClinicalTrialPointsQuery.class)
+    @PostMapping(value = "/api/t-clinical-trial-points/pageList")
+    public R<PageInfo<TClinicalTrialPointsVO>> pageList(@RequestBody String param) {
+        TClinicalTrialPointsQuery query = JSON.parseObject(param, TClinicalTrialPointsQuery.class);
+        Long userId = tokenService.getLoginUser().getUserId();
+        Integer roleType = tokenService.getLoginUser().getUser().getRoleType();
+        if(roleType != 1){
+            // 查询用户所在项目组
+            List<TProjectTeamStaff> projectTeamStaffs = projectTeamStaffService.list(Wrappers.lambdaQuery(TProjectTeamStaff.class)
+                    .eq(TProjectTeamStaff::getUserId, userId));
+            if(projectTeamStaffs.size() > 0){
+                // 查询项目组id
+                List<String> teamIds = projectTeamStaffs.stream().map(TProjectTeamStaff::getTeamId).distinct().collect(Collectors.toList());
+                query.setTeamIds(teamIds);
+            }
+        }
+        return R.ok(clinicalTrialPointsService.pageList(query));
+    }
+
+    /**
+     * 添加临床试验积分管理
+     */
+    //@PreAuthorize("@ss.hasPermi('system:clinicalTrialPoints:add')")
+    @Log(title = "临床试验积分信息-新增临床试验积分", businessType = BusinessType.INSERT)
+    @ApiOperation(value = "添加临床试验积分",response = TClinicalTrialPointsDTO.class)
+    @PostMapping(value = "/api/t-clinical-trial-points/add")
+    public R<Boolean> add(@RequestBody String param) {
+        TClinicalTrialPointsDTO dto = JSON.parseObject(param,TClinicalTrialPointsDTO.class);
+        // 通过当前用户查询项目组
+        Long userId = tokenService.getLoginUser().getUserId();
+        Integer roleType = tokenService.getLoginUser().getUser().getRoleType();
+        if(roleType == 2){
+            TProjectTeamStaff projectTeamStaff = projectTeamStaffService.getOne(Wrappers.lambdaQuery(TProjectTeamStaff.class)
+                    .eq(TProjectTeamStaff::getUserId, userId)
+                    .last("LIMIT 1"));
+            if(Objects.isNull(projectTeamStaff)){
+                return R.fail("当前用户未分配项目组,无法创建临床试验积分");
+            }
+        }
+        // 查询项目组
+        TProjectTeam projectTeam = projectTeamService.getById(dto.getTeamId());
+        if(Objects.isNull(projectTeam)){
+            return R.fail("项目组不存在");
+        }
+        if(projectTeam.getStatus() == 2){
+            return R.fail("项目组已封存,无法创建临床试验积分");
+        }
+        // 查询项目组工艺工程师id
+        TProjectTeamStaff projectTeamStaff = projectTeamStaffService.getOne(Wrappers.lambdaQuery(TProjectTeamStaff.class)
+                .eq(TProjectTeamStaff::getTeamId, dto.getTeamId())
+                .eq(TProjectTeamStaff::getRoleType, 3)
+                .last("LIMIT 1"));
+        if(Objects.isNull(projectTeamStaff)){
+            return R.fail("当前项目组未分配工艺工程师,无法创建临床试验积分");
+        }
+        dto.setProcessEngineerId(projectTeamStaff.getId());
+        clinicalTrialPointsService.save(dto);
+        return R.ok();
+    }
+
+    /**
+     * 修改临床试验积分
+     */
+    //@PreAuthorize("@ss.hasPermi('system:clinicalTrialPoints:edit')")
+    @Log(title = "临床试验积分信息-修改临床试验积分", businessType = BusinessType.UPDATE)
+    @ApiOperation(value = "修改临床试验积分")
+    @PostMapping(value = "/api/t-clinical-trial-points/update")
+    public R<Boolean> update(@RequestBody String param) {
+        TClinicalTrialPointsDTO dto = JSON.parseObject(param,TClinicalTrialPointsDTO.class);
+        clinicalTrialPointsService.updateById(dto);
+        return R.ok();
+    }
+
+    /**
+     * 查看临床试验积分详情
+     */
+    //@PreAuthorize("@ss.hasPermi('system:clinicalTrialPoints:detail')")
+    @ApiOperation(value = "查看临床试验积分详情")
+    @GetMapping(value = "/open/t-clinical-trial-points/getDetailById")
+    public R<TClinicalTrialPointsVO> getDetailById(@RequestParam String id) {
+        TClinicalTrialPoints clinicalTrialPoints = clinicalTrialPointsService.getById(id);
+        TClinicalTrialPointsVO clinicalTrialPointsVO = new TClinicalTrialPointsVO();
+        BeanUtils.copyProperties(clinicalTrialPoints, clinicalTrialPointsVO);
+        // 查询项目组
+        TProjectTeam projectTeam = projectTeamService.getById(clinicalTrialPoints.getTeamId());
+        // 查询项目组成员
+        List<TProjectTeamStaff> projectTeamStaffs = projectTeamStaffService.list(Wrappers.lambdaQuery(TProjectTeamStaff.class)
+                .eq(TProjectTeamStaff::getTeamId, projectTeam.getId()));
+        List<Long> userIds = projectTeamStaffs.stream().map(TProjectTeamStaff::getUserId).collect(Collectors.toList());
+        List<SysUser> sysUsers = sysUserMapper.selectUserByIds(userIds);
+        clinicalTrialPointsVO.setStaffNames(sysUsers.stream().map(SysUser::getNickName).collect(Collectors.joining(",")));
+        clinicalTrialPointsVO.setProjectTeam(projectTeam);
+
+        return R.ok(clinicalTrialPointsVO);
+    }
+
+    /**
+     * 删除临床试验积分
+     */
+    //@PreAuthorize("@ss.hasPermi('system:clinicalTrialPoints:delete')")
+    @Log(title = "临床试验积分信息-删除临床试验积分", businessType = BusinessType.DELETE)
+    @ApiOperation(value = "删除临床试验积分")
+    @DeleteMapping(value = "/open/t-clinical-trial-points/deleteById")
+    public R<Boolean> deleteById(@RequestParam String id) {
+        return R.ok(clinicalTrialPointsService.removeById(id));
+    }
+
+    /**
+     * 批量删除临床试验积分
+     */
+    //@PreAuthorize("@ss.hasPermi('system:clinicalTrialPoints:delete')")
+    @Log(title = "临床试验积分信息-删除临床试验积分", businessType = BusinessType.DELETE)
+    @ApiOperation(value = "批量删除临床试验积分")
+    @DeleteMapping(value = "/open/t-clinical-trial-points/deleteByIds")
+    public R<Boolean> deleteByIds(@RequestBody List<String> ids) {
+        return R.ok(clinicalTrialPointsService.removeByIds(ids));
+    }
+    
 }
 
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TExperimentResultReportController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TExperimentResultReportController.java
index d3e94b4..6dcec42 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TExperimentResultReportController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TExperimentResultReportController.java
@@ -9,10 +9,7 @@
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.framework.web.service.TokenService;
 import com.ruoyi.system.dto.TExperimentResultReportDTO;
-import com.ruoyi.system.model.TExperimentResultReport;
-import com.ruoyi.system.model.TExperimentScheme;
-import com.ruoyi.system.model.TInspectionReport;
-import com.ruoyi.system.model.TResultWorkEvaluate;
+import com.ruoyi.system.model.*;
 import com.ruoyi.system.query.TExperimentResultReportQuery;
 import com.ruoyi.system.service.*;
 import com.ruoyi.system.vo.TExperimentResultReportVO;
@@ -20,10 +17,10 @@
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -44,14 +41,18 @@
     private final TResultWorkEvaluateService resultWorkEvaluateService;
     private final TExperimentSchemeService experimentSchemeService;
     private final TInspectionReportService inspectionReportService;
+    private final TProjectTeamStaffService projectTeamStaffService;
+    private final TExperimentDispatchParticipantsService experimentDispatchParticipantsService;
     @Autowired
-    public TExperimentResultReportController(TExperimentResultReportService experimentResultReportService, TokenService tokenService, ISysUserService sysUserService, TResultWorkEvaluateService resultWorkEvaluateService, TExperimentSchemeService experimentSchemeService, TInspectionReportService inspectionReportService) {
+    public TExperimentResultReportController(TExperimentResultReportService experimentResultReportService, TokenService tokenService, ISysUserService sysUserService, TResultWorkEvaluateService resultWorkEvaluateService, TExperimentSchemeService experimentSchemeService, TInspectionReportService inspectionReportService, TProjectTeamStaffService projectTeamStaffService, TExperimentDispatchParticipantsService experimentDispatchParticipantsService) {
         this.experimentResultReportService = experimentResultReportService;
         this.tokenService = tokenService;
         this.sysUserService = sysUserService;
         this.resultWorkEvaluateService = resultWorkEvaluateService;
         this.experimentSchemeService = experimentSchemeService;
         this.inspectionReportService = inspectionReportService;
+        this.projectTeamStaffService = projectTeamStaffService;
+        this.experimentDispatchParticipantsService = experimentDispatchParticipantsService;
     }
 
     /**
@@ -62,10 +63,45 @@
     @PostMapping(value = "/api/t-experiment-result-report/pageList")
     public R<PageInfo<TExperimentResultReportVO>> pageList(@RequestBody String param) {
         TExperimentResultReportQuery query = JSON.parseObject(param, TExperimentResultReportQuery.class);
+        Long userId = tokenService.getLoginUser().getUserId();
+        Integer roleType = tokenService.getLoginUser().getUser().getRoleType();
+        if(roleType != 1){
+            // 查询用户所参与的实验调度
+            List<TExperimentDispatchParticipants> experimentDispatchParticipants = experimentDispatchParticipantsService.list(Wrappers.lambdaQuery(TExperimentDispatchParticipants.class)
+                    .eq(TExperimentDispatchParticipants::getUserId, userId));
+            if(experimentDispatchParticipants.size() > 0){
+                // 查询项目组id
+                List<String> dispatchIds = experimentDispatchParticipants.stream().map(TExperimentDispatchParticipants::getDispatchId).distinct().collect(Collectors.toList());
+                query.setDispatchIds(dispatchIds);
+            }
+        }
         return R.ok(experimentResultReportService.pageList(query));
     }
 
     /**
+     * 获取实验结果汇报评定列表
+     */
+    //@PreAuthorize("@ss.hasPermi('system:experimentResultReport:list')")
+    @ApiOperation(value = "获取实验结果汇报评定列表-审批人使用",response = TExperimentResultReportQuery.class)
+    @PostMapping(value = "/api/t-experiment-result-report/evaluatePageList")
+    public R<PageInfo<TExperimentResultReportVO>> evaluatePageList(@RequestBody String param) {
+        TExperimentResultReportQuery query = JSON.parseObject(param, TExperimentResultReportQuery.class);
+        Long userId = tokenService.getLoginUser().getUserId();
+        Integer roleType = tokenService.getLoginUser().getUser().getRoleType();
+        if(roleType != 1){
+            // 查询用户所参与的实验调度
+            List<TExperimentDispatchParticipants> experimentDispatchParticipants = experimentDispatchParticipantsService.list(Wrappers.lambdaQuery(TExperimentDispatchParticipants.class)
+                    .eq(TExperimentDispatchParticipants::getUserId, userId));
+            if(experimentDispatchParticipants.size() > 0){
+                // 查询项目组id
+                List<String> dispatchIds = experimentDispatchParticipants.stream().map(TExperimentDispatchParticipants::getDispatchId).distinct().collect(Collectors.toList());
+                query.setDispatchIds(dispatchIds);
+            }
+        }
+        return R.ok(experimentResultReportService.evaluatePageList(query));
+    }
+
+    /**
      * 添加实验结果汇报管理
      */
     //@PreAuthorize("@ss.hasPermi('system:experimentResultReport:add')")
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TExperimentSchemeController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TExperimentSchemeController.java
index 92d8b8e..9073e78 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TExperimentSchemeController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TExperimentSchemeController.java
@@ -74,6 +74,16 @@
         TExperimentSchemeQuery query = JSON.parseObject(param, TExperimentSchemeQuery.class);
         return R.ok(experimentSchemeService.pageList(query));
     }
+    /**
+     * 获取实验方案管理列表-中止审批列表
+     */
+    //@PreAuthorize("@ss.hasPermi('system:testMethodConfirmSheet:list')")
+    @ApiOperation(value = "获取实验方案分页列表-中止审批列表",response = TExperimentSchemeQuery.class)
+    @PostMapping(value = "/api/t-experiment-scheme/auditPageList")
+    public R<PageInfo<TExperimentSchemeVO>> auditPageList(@RequestBody String param) {
+        TExperimentSchemeQuery query = JSON.parseObject(param, TExperimentSchemeQuery.class);
+        return R.ok(experimentSchemeService.auditPageList(query));
+    }
 
     /**
      * 通过实验调度查询查询组别列表
@@ -148,6 +158,20 @@
     }
 
     /**
+     * 修改实验方案
+     */
+    //@PreAuthorize("@ss.hasPermi('system:testMethodConfirmSheet:edit')")
+    @Log(title = "实验方案信息-修改实验方案-实验员提交", businessType = BusinessType.UPDATE)
+    @ApiOperation(value = "修改实验方案-实验员提交")
+    @PostMapping(value = "/api/t-experiment-scheme/updateTester")
+    public R<Boolean> updateTester(@RequestBody String param) {
+        TExperimentSchemeDTO dto = JSON.parseObject(param,TExperimentSchemeDTO.class);
+        dto.setStatus(6);
+        experimentSchemeService.updateById(dto);
+        return R.ok();
+    }
+
+    /**
      * 查看实验方案详情
      */
     //@PreAuthorize("@ss.hasPermi('system:testMethodConfirmSheet:detail')")
@@ -165,6 +189,7 @@
             TProjectProposal projectProposal = projectProposalService.getById(experimentDispatch.getProposalId());
             if(Objects.nonNull(projectProposal)){
                 experimentDispatch.setProjectName(projectProposal.getProjectName());
+                experimentDispatch.setProjectCode(projectProposal.getProjectCode());
             }
         }
         experimentSchemeVO.setExperimentDispatch(experimentDispatch);
@@ -177,7 +202,21 @@
         // 获取实验人员
         List<TExperimentSchemePerson> experimentSchemePersons = experimentSchemePersonService.list(Wrappers.lambdaQuery(TExperimentSchemePerson.class)
                 .eq(TExperimentSchemePerson::getSchemeId, id));
+        List<Long> userIds = experimentSchemePersons.stream().map(TExperimentSchemePerson::getUserId).collect(Collectors.toList());
+        List<SysUser> sysUsers = sysUserMapper.selectUserByIds(userIds);
+        sysUsers.forEach(sysUser -> {
+            experimentSchemePersons.stream().filter(experimentSchemePerson -> experimentSchemePerson.getUserId().equals(sysUser.getUserId())).forEach(experimentSchemePerson -> {
+                experimentSchemePerson.setNickName(sysUser.getNickName());
+                experimentSchemePerson.setAvatar(sysUser.getAvatar());
+            });
+        });
         experimentSchemeVO.setExperimentSchemePersons(experimentSchemePersons);
+
+        // 查询审核人姓名
+        SysUser sysUser = sysUserService.selectUserById(experimentScheme.getAuditPersonId());
+        if(Objects.nonNull(sysUser)){
+            experimentSchemeVO.setAuditPersonName(sysUser.getNickName());
+        }
 
         return R.ok(experimentSchemeVO);
     }
@@ -213,7 +252,7 @@
      */
     //@PreAuthorize("@ss.hasPermi('system:testMethodConfirmSheet:sign')")
     @Log(title = "实验方案信息-申请中止实验", businessType = BusinessType.UPDATE)
-    @ApiOperation(value = "申请中止实验")
+    @ApiOperation(value = "申请中止实验",response = ApplicationTerminationDTO.class)
     @PostMapping(value = "/api/t-experiment-scheme/applicationTermination")
     public R<Boolean> applicationTermination(@RequestBody String param) {
         ApplicationTerminationDTO applicationTerminationDTO = JSON.parseObject(param, ApplicationTerminationDTO.class);
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TFeasibilityStudyReportController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TFeasibilityStudyReportController.java
index 7cf5eca..d36c0f2 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TFeasibilityStudyReportController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TFeasibilityStudyReportController.java
@@ -31,6 +31,7 @@
 
 import java.time.LocalDateTime;
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 import java.util.stream.Collectors;
 
@@ -86,6 +87,49 @@
             }
         }
         return R.ok(feasibilityStudyReportService.pageList(query));
+    }
+
+    /**
+     * 获取可研、可行、工艺开发工具、验证发布报告管理列表
+     */
+    //@PreAuthorize("@ss.hasPermi('system:feasibilityStudyReport:evaluatePageList')")
+    @ApiOperation(value = "获取专业报告课题评定分页列表-超管、审批人",response = TFeasibilityStudyReportQuery.class)
+    @PostMapping(value = "/api/t-feasibility-study-report/evaluatePageList")
+    public R<PageInfo<TFeasibilityStudyReportVO>> evaluatePageList(@RequestBody String param) {
+        TFeasibilityStudyReportQuery query = JSON.parseObject(param, TFeasibilityStudyReportQuery.class);
+        Long userId = tokenService.getLoginUser().getUserId();
+        Integer roleType = tokenService.getLoginUser().getUser().getRoleType();
+        if(roleType != 1){
+            // 查询用户所在项目组
+            List<TProjectTeamStaff> projectTeamStaffs = projectTeamStaffService.list(Wrappers.lambdaQuery(TProjectTeamStaff.class)
+                    .eq(TProjectTeamStaff::getUserId, userId));
+            if(projectTeamStaffs.size() > 0){
+                // 查询项目组id
+                List<String> teamIds = projectTeamStaffs.stream().map(TProjectTeamStaff::getTeamId).distinct().collect(Collectors.toList());
+                query.setTeamIds(teamIds);
+            }
+        }
+        return R.ok(feasibilityStudyReportService.evaluatePageList(query));
+    }
+
+    @ApiOperation(value = "获取专业报告课题评定数量统计",response = TFeasibilityStudyReportQuery.class)
+    @PostMapping(value = "/api/t-feasibility-study-report/evaluateCount")
+    public R<Map<String,Integer>> evaluateCount(@RequestBody String param) {
+        TFeasibilityStudyReportQuery query = JSON.parseObject(param, TFeasibilityStudyReportQuery.class);
+        Long userId = tokenService.getLoginUser().getUserId();
+        Integer roleType = tokenService.getLoginUser().getUser().getRoleType();
+        if(roleType != 1){
+            // 查询用户所在项目组
+            List<TProjectTeamStaff> projectTeamStaffs = projectTeamStaffService.list(Wrappers.lambdaQuery(TProjectTeamStaff.class)
+                    .eq(TProjectTeamStaff::getUserId, userId));
+            if(projectTeamStaffs.size() > 0){
+                // 查询项目组id
+                List<String> teamIds = projectTeamStaffs.stream().map(TProjectTeamStaff::getTeamId).distinct().collect(Collectors.toList());
+                query.setTeamIds(teamIds);
+            }
+        }
+        Map<String,Integer> map = feasibilityStudyReportService.evaluateCount(query);
+        return R.ok();
     }
 
     /**
@@ -289,6 +333,44 @@
         feasibilityStudyReportService.updateById(feasibilityStudyReport);
         return R.ok();
     }
+
+    /**
+     * 课题评定-进行评定
+     */
+    //@PreAuthorize("@ss.hasPermi('system:feasibilityStudyReport:evaluate')")
+    @Log(title = "课题评定-进行评定", businessType = BusinessType.UPDATE)
+    @ApiOperation(value = "课题评定")
+    @PutMapping(value = "/open/t-feasibility-study-report/evaluate")
+    public R<Boolean> evaluate(@RequestParam(value = "id") String id,
+                               @RequestParam(value = "evaluateScore") String evaluateScore) {
+        Long userId = tokenService.getLoginUser().getUserId();
+        TFeasibilityStudyReport feasibilityStudyReport = feasibilityStudyReportService.getById(id);
+        feasibilityStudyReport.setStatus(3);
+        feasibilityStudyReport.setEvaluatePersonId(userId);
+        feasibilityStudyReport.setEvaluateTime(LocalDateTime.now());
+        feasibilityStudyReport.setEvaluateScore(evaluateScore);
+        feasibilityStudyReportService.updateById(feasibilityStudyReport);
+        return R.ok();
+    }
+
+    /**
+     * 课题评定-评定详情
+     */
+    //@PreAuthorize("@ss.hasPermi('system:feasibilityStudyReport:evaluate')")
+    @Log(title = "课题评定-评定详情", businessType = BusinessType.UPDATE)
+    @ApiOperation(value = "评定详情")
+    @GetMapping(value = "/open/t-feasibility-study-report/evaluateDetail")
+    public R<TFeasibilityStudyReportVO> evaluateDetail(@RequestParam(value = "id") String id) {
+        TFeasibilityStudyReport feasibilityStudyReport = feasibilityStudyReportService.getById(id);
+        TFeasibilityStudyReportVO tFeasibilityStudyReportVO = new TFeasibilityStudyReportVO();
+        BeanUtils.copyProperties(feasibilityStudyReport, tFeasibilityStudyReportVO);
+        // 查询评定人员名称
+        SysUser sysUser = sysUserService.selectUserById(feasibilityStudyReport.getEvaluatePersonId());
+        if(Objects.nonNull(sysUser)){
+            tFeasibilityStudyReportVO.setEvaluatePersonName(sysUser.getNickName());
+        }
+        return R.ok(tFeasibilityStudyReportVO);
+    }
     
 }
 
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TTesterOtherTaskController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TTesterOtherTaskController.java
index bed0986..f97936a 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TTesterOtherTaskController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TTesterOtherTaskController.java
@@ -1,9 +1,34 @@
 package com.ruoyi.web.controller.api;
 
 
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.basic.PageInfo;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.enums.QaReportFileEnum;
+import com.ruoyi.common.enums.QaReportTypeEnum;
+import com.ruoyi.framework.web.service.TokenService;
+import com.ruoyi.system.dto.TQaTestItemReportDTO;
+import com.ruoyi.system.model.TProjectTeam;
+import com.ruoyi.system.model.TProjectTeamStaff;
+import com.ruoyi.system.model.TQaReportFile;
+import com.ruoyi.system.model.TQaTestItemReport;
+import com.ruoyi.system.query.TQaTestItemReportQuery;
+import com.ruoyi.system.service.TProjectTeamService;
+import com.ruoyi.system.service.TProjectTeamStaffService;
+import com.ruoyi.system.service.TQaReportFileService;
+import com.ruoyi.system.service.TQaTestItemReportService;
+import com.ruoyi.system.vo.TQaTestItemReportVO;
 import io.swagger.annotations.Api;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.Objects;
 
 /**
  * <p>
@@ -18,5 +43,155 @@
 @RequestMapping("/t-tester-other-task")
 public class TTesterOtherTaskController {
 
+    private final TQaTestItemReportService qaTestItemReportService;
+    private final TQaReportFileService qaReportFileService;
+    private final TokenService tokenService;
+    private final TProjectTeamService projectTeamService;
+    private final TProjectTeamStaffService projectTeamStaffService;
+    @Autowired
+    public TTesterOtherTaskController(TQaTestItemReportService qaTestItemReportService, TQaReportFileService qaReportFileService, TokenService tokenService, TProjectTeamService projectTeamService, TProjectTeamStaffService projectTeamStaffService) {
+        this.qaTestItemReportService = qaTestItemReportService;
+        this.qaReportFileService = qaReportFileService;
+        this.tokenService = tokenService;
+        this.projectTeamService = projectTeamService;
+        this.projectTeamStaffService = projectTeamStaffService;
+    }
+
+    /**
+     * 获取QA检测项报告管理列表
+     */
+    //@PreAuthorize("@ss.hasPermi('system:qaTestItemReport:list')")
+    @ApiOperation(value = "获取QA检测项报告管理分页列表-工艺工程师使用", response = TQaTestItemReportQuery.class)
+    @PostMapping(value = "/api/t-qa-test-item-report/pageList")
+    public R<PageInfo<TQaTestItemReportVO>> pageList(@RequestBody String param) {
+        TQaTestItemReportQuery query = JSON.parseObject(param, TQaTestItemReportQuery.class);
+
+        return R.ok(qaTestItemReportService.pageList(query));
+    }
+
+    /**
+     * 获取QA检测项报告管理列表
+     */
+    @ApiOperation(value = "获取QA检测项报告管理下拉列表-化验师使用")
+    @GetMapping(value = "/open/t-qa-test-item-report/getListByItemId")
+    public R<List<TQaTestItemReport>> getListByItemId(@RequestParam String itemId) {
+        List<TQaTestItemReport> list = qaTestItemReportService.list(Wrappers.lambdaQuery(TQaTestItemReport.class)
+                .eq(TQaTestItemReport::getItemId, itemId));
+        return R.ok(list);
+    }
+
+    /**
+     * 添加QA检测项报告管理管理
+     */
+    //@PreAuthorize("@ss.hasPermi('system:qaTestItemReport:add')")
+    @Log(title = "QA检测项报告管理信息-新增QA检测项报告管理", businessType = BusinessType.INSERT)
+    @ApiOperation(value = "添加QA检测项报告管理",response = TQaTestItemReportDTO.class)
+    @PostMapping(value = "/api/t-qa-test-item-report/add")
+    public R<Boolean> add(@RequestBody String param) {
+        TQaTestItemReportDTO dto = JSON.parseObject(param,TQaTestItemReportDTO.class);
+        // 通过当前用户查询项目组
+        Long userId = tokenService.getLoginUser().getUserId();
+        TProjectTeamStaff projectTeamStaff = projectTeamStaffService.getOne(Wrappers.lambdaQuery(TProjectTeamStaff.class)
+                .eq(TProjectTeamStaff::getUserId, userId)
+                .last("LIMIT 1"));
+        if(Objects.isNull(projectTeamStaff)){
+            return R.fail("当前用户未分配项目组,无法创建项目课题方案");
+        }
+        // 查询项目组
+        TProjectTeam projectTeam = projectTeamService.getById(projectTeamStaff.getTeamId());
+        if(Objects.isNull(projectTeam)){
+            return R.fail("项目组不存在");
+        }
+        if(projectTeam.getStatus() == 2){
+            return R.fail("项目组已封存,无法创建项目课题方案");
+        }
+        // 生成中试、生产验证编号
+        String reportCode = projectTeam.getTeamName() + "-" + QaReportTypeEnum.TEST_REPORT.getCode();
+
+        // 查询上个项目课题方案的序号
+        long count = qaTestItemReportService.count(Wrappers.lambdaQuery(TQaTestItemReport.class)
+                .like(TQaTestItemReport::getReportCode, reportCode));
+        reportCode = reportCode + "-" + String.format("%03d", count+1);
+        dto.setReportCode(reportCode);
+
+        qaTestItemReportService.save(dto);
+        // 添加检测报告文件
+        List<TQaReportFile> qaReportFiles = dto.getQaReportFiles();
+        for (TQaReportFile qaReportFile : qaReportFiles) {
+            qaReportFile.setReportId(dto.getId());
+            qaReportFile.setReportType(QaReportFileEnum.TEST_REPORT.getCode());
+        }
+        qaReportFileService.saveBatch(qaReportFiles);
+        return R.ok();
+    }
+
+    /**
+     * 修改QA检测项报告管理
+     */
+    //@PreAuthorize("@ss.hasPermi('system:qaTestItemReport:edit')")
+    @Log(title = "QA检测项报告管理信息-修改QA检测项报告管理", businessType = BusinessType.UPDATE)
+    @ApiOperation(value = "修改QA检测项报告管理")
+    @PostMapping(value = "/api/t-qa-test-item-report/update")
+    public R<Boolean> update(@RequestBody String param) {
+        TQaTestItemReportDTO dto = JSON.parseObject(param,TQaTestItemReportDTO.class);
+        qaTestItemReportService.updateById(dto);
+        qaReportFileService.remove(Wrappers.lambdaQuery(TQaReportFile.class)
+                .eq(TQaReportFile::getReportId, dto.getId()));
+        // 添加检测报告文件
+        List<TQaReportFile> qaReportFiles = dto.getQaReportFiles();
+        for (TQaReportFile qaReportFile : qaReportFiles) {
+            qaReportFile.setReportId(dto.getId());
+            qaReportFile.setReportType(QaReportFileEnum.TEST_REPORT.getCode());
+        }
+        qaReportFileService.saveBatch(qaReportFiles);
+        return R.ok();
+    }
+
+    /**
+     * 查看QA检测项报告管理详情
+     */
+    //@PreAuthorize("@ss.hasPermi('system:qaTestItemReport:detail')")
+    @ApiOperation(value = "查看QA检测项报告管理详情")
+    @GetMapping(value = "/open/t-qa-test-item-report/getDetailById")
+    public R<TQaTestItemReportVO> getDetailById(@RequestParam String id) {
+        TQaTestItemReport testItemReport = qaTestItemReportService.getById(id);
+        TQaTestItemReportVO testItemReportVO = new TQaTestItemReportVO();
+        BeanUtils.copyProperties(testItemReport, testItemReportVO);
+        // 查询检测报告文件
+        List<TQaReportFile> qaReportFiles = qaReportFileService.list(Wrappers.lambdaQuery(TQaReportFile.class)
+                .eq(TQaReportFile::getReportId, id)
+                .eq(TQaReportFile::getReportType, QaReportFileEnum.TEST_REPORT.getCode()));
+        testItemReportVO.setQaReportFileList(qaReportFiles);
+        return R.ok(testItemReportVO);
+    }
+
+    /**
+     * 删除QA检测项报告管理
+     */
+    //@PreAuthorize("@ss.hasPermi('system:qaTestItemReport:delete')")
+    @Log(title = "QA检测项报告管理信息-删除QA检测项报告管理", businessType = BusinessType.DELETE)
+    @ApiOperation(value = "删除QA检测项报告管理")
+    @DeleteMapping(value = "/open/t-qa-test-item-report/deleteById")
+    public R<Boolean> deleteById(@RequestParam String id) {
+        // 删除QA检测项报告文件
+        qaReportFileService.remove(Wrappers.lambdaQuery(TQaReportFile.class).eq(TQaReportFile::getReportId, id)
+                .in(TQaReportFile::getReportType, QaReportFileEnum.TEST_REPORT.getCode()));
+        return R.ok(qaTestItemReportService.removeById(id));
+    }
+
+    /**
+     * 批量删除QA检测项报告管理
+     */
+    //@PreAuthorize("@ss.hasPermi('system:qaTestItemReport:delete')")
+    @Log(title = "QA检测项报告管理信息-删除QA检测项报告管理", businessType = BusinessType.DELETE)
+    @ApiOperation(value = "批量删除QA检测项报告管理")
+    @DeleteMapping(value = "/open/t-qa-test-item-report/deleteByIds")
+    public R<Boolean> deleteByIds(@RequestBody List<String> ids) {
+        // 删除QA检测项报告检测报告文件
+        qaReportFileService.remove(Wrappers.lambdaQuery(TQaReportFile.class).in(TQaReportFile::getReportId, ids)
+                .in(TQaReportFile::getReportType, QaReportFileEnum.TEST_REPORT.getCode()));
+        return R.ok(qaTestItemReportService.removeByIds(ids));
+    }
+
 }
 
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
index 807702d..c0da812 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
@@ -1,6 +1,7 @@
 package com.ruoyi.web.controller.system;
 
 import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.basic.PageInfo;
@@ -15,7 +16,6 @@
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.framework.web.service.TokenService;
 import com.ruoyi.system.dto.SysUserUpdateStatusDTO;
-import com.ruoyi.system.model.TProjectTeam;
 import com.ruoyi.system.model.TProjectTeamStaff;
 import com.ruoyi.system.query.SysUserQuery;
 import com.ruoyi.system.service.*;
@@ -24,9 +24,7 @@
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.util.CollectionUtils;
-import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import java.time.LocalDateTime;
@@ -92,9 +90,12 @@
             return AjaxResult.success(new ArrayList<>());
         }
         List<String> teamIds = staffs.stream().map(TProjectTeamStaff::getTeamId).collect(Collectors.toList());
-        List<TProjectTeamStaff> teamStaffs = projectTeamStaffService.list(Wrappers.lambdaQuery(TProjectTeamStaff.class)
-                .eq(TProjectTeamStaff::getTeamId, teamIds)
-                .eq(Objects.nonNull(roleId),TProjectTeamStaff::getRoleType,Integer.parseInt(roleId.toString())));
+        LambdaQueryWrapper<TProjectTeamStaff> wrapper = new LambdaQueryWrapper<>();
+        if(Objects.nonNull(roleId)){
+            wrapper.eq(TProjectTeamStaff::getRoleType,Integer.parseInt(roleId.toString()));
+        }
+        wrapper.in(TProjectTeamStaff::getTeamId, teamIds);
+        List<TProjectTeamStaff> teamStaffs = projectTeamStaffService.list(wrapper);
         List<Long> userIds = teamStaffs.stream().map(TProjectTeamStaff::getUserId).collect(Collectors.toList());
 
         List<SysUser> list = userService.listByRole(userIds,nickName);
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/TClinicalTrialPointsDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/TClinicalTrialPointsDTO.java
new file mode 100644
index 0000000..2cd0c92
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/TClinicalTrialPointsDTO.java
@@ -0,0 +1,13 @@
+package com.ruoyi.system.dto;
+
+import com.ruoyi.system.model.TClinicalTrialPoints;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "临床试验积分新增编辑DTO")
+public class TClinicalTrialPointsDTO extends TClinicalTrialPoints {
+
+
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TClinicalTrialPointsMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TClinicalTrialPointsMapper.java
index 33870e7..7bd9879 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TClinicalTrialPointsMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TClinicalTrialPointsMapper.java
@@ -1,7 +1,13 @@
 package com.ruoyi.system.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.common.basic.PageInfo;
 import com.ruoyi.system.model.TClinicalTrialPoints;
+import com.ruoyi.system.query.TClinicalTrialPointsQuery;
+import com.ruoyi.system.vo.TClinicalTrialPointsVO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +19,11 @@
  */
 public interface TClinicalTrialPointsMapper extends BaseMapper<TClinicalTrialPoints> {
 
+    /**
+     *  获取列表
+     * @param query
+     * @param pageInfo
+     * @return
+     */
+    List<TClinicalTrialPointsVO> pageList(@Param("query") TClinicalTrialPointsQuery query, @Param("pageInfo")PageInfo<TClinicalTrialPointsVO> pageInfo);
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TExperimentResultReportMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TExperimentResultReportMapper.java
index e539278..970faa0 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TExperimentResultReportMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TExperimentResultReportMapper.java
@@ -26,5 +26,12 @@
      * @return 实验结果汇报分页列表
      */
     List<TExperimentResultReportVO> pageList(@Param("query") TExperimentResultReportQuery query, @Param("pageInfo")PageInfo<TExperimentResultReportVO> pageInfo);
+    /**
+     * 分页查询实验结果汇报评定列表
+     *
+     * @param query 查询条件
+     * @return 实验结果汇报分页列表
+     */
+    List<TExperimentResultReportVO> evaluatePageList(@Param("query") TExperimentResultReportQuery query, @Param("pageInfo")PageInfo<TExperimentResultReportVO> pageInfo);
 
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TExperimentSchemeMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TExperimentSchemeMapper.java
index 1b39665..de5151e 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TExperimentSchemeMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TExperimentSchemeMapper.java
@@ -26,4 +26,12 @@
      * @return
      */
     List<TExperimentSchemeVO> pageList(@Param("query") TExperimentSchemeQuery query, @Param("pageInfo") PageInfo<TExperimentSchemeVO> pageInfo);
+
+    /**
+     * 审核分页查询
+     * @param query
+     * @param pageInfo
+     * @return
+     */
+    List<TExperimentSchemeVO> auditPageList(@Param("query")TExperimentSchemeQuery query, @Param("pageInfo")PageInfo<TExperimentSchemeVO> pageInfo);
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TFeasibilityStudyReportMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TFeasibilityStudyReportMapper.java
index e9bf127..bbc8892 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TFeasibilityStudyReportMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TFeasibilityStudyReportMapper.java
@@ -8,6 +8,7 @@
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -26,4 +27,20 @@
      * @return
      */
     List<TFeasibilityStudyReportVO> pageList(@Param("query") TFeasibilityStudyReportQuery query, @Param("pageInfo")PageInfo<TFeasibilityStudyReportVO> pageInfo);
+
+    /**
+     * 课题评定分页查询可研、可行、工艺开发工具、验证发布报告管理
+     * @param query
+     * @param pageInfo
+     * @return
+     */
+    List<TFeasibilityStudyReportVO> evaluatePageList(@Param("query")TFeasibilityStudyReportQuery query, @Param("pageInfo")PageInfo<TFeasibilityStudyReportVO> pageInfo);
+
+    /**
+     * 课题评定数量统计
+     * @param query
+     * @return
+     */
+    Map<String, Integer> evaluateCount(@Param("query")TFeasibilityStudyReportQuery query);
+
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TClinicalTrialPoints.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TClinicalTrialPoints.java
index 8850534..0ba8797 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TClinicalTrialPoints.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TClinicalTrialPoints.java
@@ -1,6 +1,9 @@
 package com.ruoyi.system.model;
 
-import com.baomidou.mybatisplus.annotation.*;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.common.core.domain.BaseModel;
 import io.swagger.annotations.ApiModel;
@@ -8,7 +11,6 @@
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
-import java.io.Serializable;
 import java.time.LocalDateTime;
 
 /**
@@ -34,6 +36,10 @@
     @TableField("team_id")
     private String teamId;
 
+    @ApiModelProperty(value = "工艺工程师id")
+    @TableField("process_engineer_id")
+    private String processEngineerId;
+
     @ApiModelProperty(value = "临床实验内容")
     @TableField("trial_content")
     private String trialContent;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentDispatch.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentDispatch.java
index 360118a..726accf 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentDispatch.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentDispatch.java
@@ -1,6 +1,9 @@
 package com.ruoyi.system.model;
 
-import com.baomidou.mybatisplus.annotation.*;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.common.core.domain.BaseModel;
 import io.swagger.annotations.ApiModel;
@@ -8,7 +11,6 @@
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
-import java.io.Serializable;
 import java.time.LocalDateTime;
 
 /**
@@ -68,6 +70,9 @@
     @ApiModelProperty(value = "课题方案名称")
     @TableField(exist = false)
     private String projectName;
+    @ApiModelProperty(value = "课题方案编号")
+    @TableField(exist = false)
+    private String projectCode;
 
     @ApiModelProperty(value = "参与人员名称拼接")
     @TableField(exist = false)
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentResultReport.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentResultReport.java
index 8b34017..8bc3643 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentResultReport.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentResultReport.java
@@ -1,6 +1,9 @@
 package com.ruoyi.system.model;
 
-import com.baomidou.mybatisplus.annotation.*;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.common.core.domain.BaseModel;
 import io.swagger.annotations.ApiModel;
@@ -8,7 +11,6 @@
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
-import java.io.Serializable;
 import java.time.LocalDateTime;
 
 /**
@@ -38,7 +40,7 @@
     @TableField("experiment_result")
     private String experimentResult;
 
-    @ApiModelProperty(value = "状态 -1=草稿箱 1=待提交 2=待评定 3=已评定 4=已封存")
+    @ApiModelProperty(value = "状态 -1=草稿箱 1=待提交 2=待评定 3=已评定 4=已封存 5=已解封")
     @TableField("status")
     private Integer status;
 
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentScheme.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentScheme.java
index e525f84..e08c7f4 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentScheme.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentScheme.java
@@ -1,6 +1,9 @@
 package com.ruoyi.system.model;
 
-import com.baomidou.mybatisplus.annotation.*;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.common.core.domain.BaseModel;
 import io.swagger.annotations.ApiModel;
@@ -8,7 +11,6 @@
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
-import java.io.Serializable;
 import java.time.LocalDateTime;
 
 /**
@@ -75,7 +77,7 @@
     @TableField("commit_sign")
     private String commitSign;
 
-    @ApiModelProperty(value = "审批状态  -1=草稿箱 1=已发送 2=申请中止待审核 3=申请中止已通过 4=申请中止已驳回 5=已封存")
+    @ApiModelProperty(value = "审批状态  -1=草稿箱 1=已发送 2=申请中止待审核 3=申请中止已通过 4=申请中止已驳回 5=已封存 6=实验员已提交")
     @TableField("status")
     private Integer status;
 
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentSchemePerson.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentSchemePerson.java
index 28ebad8..7864a18 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentSchemePerson.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TExperimentSchemePerson.java
@@ -38,12 +38,18 @@
 
     @ApiModelProperty(value = "用户id")
     @TableField("user_id")
-    private Integer userId;
+    private Long userId;
 
     @ApiModelProperty(value = "提交时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @TableField("commit_time")
     private LocalDateTime commitTime;
 
+    @ApiModelProperty(value = "用户昵称")
+    @TableField(exist = false)
+    private String nickName;
+    @ApiModelProperty(value = "用户头像")
+    @TableField(exist = false)
+    private String avatar;
 
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/query/TClinicalTrialPointsQuery.java b/ruoyi-system/src/main/java/com/ruoyi/system/query/TClinicalTrialPointsQuery.java
new file mode 100644
index 0000000..82f925d
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/query/TClinicalTrialPointsQuery.java
@@ -0,0 +1,20 @@
+package com.ruoyi.system.query;
+
+import com.ruoyi.common.core.domain.BasePage;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@ApiModel(value = " 临床积分查询query")
+public class TClinicalTrialPointsQuery extends BasePage {
+
+    @ApiModelProperty(value = "项目组名称")
+    private String teamName;
+    @ApiModelProperty(value = "实验内容")
+    private String trialContent;
+    @ApiModelProperty(value = "项目组id集合 前端忽略")
+    private List<String> teamIds;
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/query/TExperimentResultReportQuery.java b/ruoyi-system/src/main/java/com/ruoyi/system/query/TExperimentResultReportQuery.java
index 2134a64..484e9ed 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/query/TExperimentResultReportQuery.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/query/TExperimentResultReportQuery.java
@@ -1,10 +1,11 @@
 package com.ruoyi.system.query;
 
-import com.baomidou.mybatisplus.annotation.TableField;
 import com.ruoyi.common.core.domain.model.TimeRangeQueryBody;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+
+import java.util.List;
 
 @Data
 @ApiModel(value = "实验结果汇报查询条件query")
@@ -22,4 +23,7 @@
     @ApiModelProperty(value = "状态 -1=草稿箱 1=待提交 2=待评定 3=已评定 4=已封存")
     private Integer status;
 
+    @ApiModelProperty(value = "实验调度id集合 前端忽略")
+    private List<String> dispatchIds;
+
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/query/TFeasibilityStudyReportQuery.java b/ruoyi-system/src/main/java/com/ruoyi/system/query/TFeasibilityStudyReportQuery.java
index 235f4e5..950f53c 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/query/TFeasibilityStudyReportQuery.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/query/TFeasibilityStudyReportQuery.java
@@ -8,7 +8,7 @@
 import java.util.List;
 
 @Data
-@ApiModel(value="可研、可行、工艺开发工具、验证发布报告管理查询参数query")
+@ApiModel(value="(可研、可行、工艺开发工具、验证发布报告管理)、(课题评定列表)查询参数query")
 public class TFeasibilityStudyReportQuery extends TimeRangeQueryBody {
 
     @ApiModelProperty(value = "项目组名称")
@@ -23,6 +23,9 @@
     @ApiModelProperty(value = "类型 1=可研报告 2=可行报告 3=工艺开发工具 4=验证与发布")
     private Integer reportType;
 
+    @ApiModelProperty(value = "提交人")
+    private String createBy;
+
     @ApiModelProperty(value = "状态 -1=草稿箱 1=待审核 2=待评定 3=已评定 4=已驳回 5=已撤回")
     private Integer status;
 
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TClinicalTrialPointsService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TClinicalTrialPointsService.java
index fbce299..8f71073 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/TClinicalTrialPointsService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/TClinicalTrialPointsService.java
@@ -1,7 +1,10 @@
 package com.ruoyi.system.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.common.basic.PageInfo;
 import com.ruoyi.system.model.TClinicalTrialPoints;
+import com.ruoyi.system.query.TClinicalTrialPointsQuery;
+import com.ruoyi.system.vo.TClinicalTrialPointsVO;
 
 /**
  * <p>
@@ -13,4 +16,10 @@
  */
 public interface TClinicalTrialPointsService extends IService<TClinicalTrialPoints> {
 
+    /**
+     * 临床试验积分分页列表
+     * @param query
+     * @return
+     */
+    PageInfo<TClinicalTrialPointsVO> pageList(TClinicalTrialPointsQuery query);
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TExperimentResultReportService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TExperimentResultReportService.java
index 6e720b1..b08e098 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/TExperimentResultReportService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/TExperimentResultReportService.java
@@ -22,4 +22,10 @@
      * @return
      */
     PageInfo<TExperimentResultReportVO> pageList(TExperimentResultReportQuery query);
+    /**
+     * 获取实验结果汇报评定列表
+     * @param query
+     * @return
+     */
+    PageInfo<TExperimentResultReportVO> evaluatePageList(TExperimentResultReportQuery query);
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TExperimentSchemeService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TExperimentSchemeService.java
index 2c515b6..ce54e95 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/TExperimentSchemeService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/TExperimentSchemeService.java
@@ -22,4 +22,11 @@
      * @return
      */
     PageInfo<TExperimentSchemeVO> pageList(TExperimentSchemeQuery query);
+
+    /**
+     * 获取检验方法确认单分页列表
+     * @param query
+     * @return
+     */
+    PageInfo<TExperimentSchemeVO> auditPageList(TExperimentSchemeQuery query);
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TFeasibilityStudyReportService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TFeasibilityStudyReportService.java
index 4563433..6eb47cf 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/TFeasibilityStudyReportService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/TFeasibilityStudyReportService.java
@@ -6,6 +6,8 @@
 import com.ruoyi.system.query.TFeasibilityStudyReportQuery;
 import com.ruoyi.system.vo.TFeasibilityStudyReportVO;
 
+import java.util.Map;
+
 /**
  * <p>
  * 可研、可行、工艺开发工具、验证发布报告 服务类
@@ -22,4 +24,18 @@
      * @return
      */
     PageInfo<TFeasibilityStudyReportVO> pageList(TFeasibilityStudyReportQuery query);
+
+    /**
+     * 获取专业报告课题评定分页列表
+     * @param query
+     * @return
+     */
+    PageInfo<TFeasibilityStudyReportVO> evaluatePageList(TFeasibilityStudyReportQuery query);
+
+    /**
+     * 获取专业报告课题评定数量统计
+     * @param query
+     * @return
+     */
+    Map<String, Integer> evaluateCount(TFeasibilityStudyReportQuery query);
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TClinicalTrialPointsServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TClinicalTrialPointsServiceImpl.java
index 206d817..c58481e 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TClinicalTrialPointsServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TClinicalTrialPointsServiceImpl.java
@@ -1,10 +1,18 @@
 package com.ruoyi.system.service.impl;
 
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.basic.PageInfo;
 import com.ruoyi.system.mapper.TClinicalTrialPointsMapper;
 import com.ruoyi.system.model.TClinicalTrialPoints;
+import com.ruoyi.system.query.TClinicalTrialPointsQuery;
 import com.ruoyi.system.service.TClinicalTrialPointsService;
+import com.ruoyi.system.vo.TClinicalTrialPointsVO;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -17,4 +25,23 @@
 @Service
 public class TClinicalTrialPointsServiceImpl extends ServiceImpl<TClinicalTrialPointsMapper, TClinicalTrialPoints> implements TClinicalTrialPointsService {
 
+    @Override
+    public PageInfo<TClinicalTrialPointsVO> pageList(TClinicalTrialPointsQuery query) {
+        PageInfo<TClinicalTrialPointsVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
+        List<TClinicalTrialPointsVO> list = this.baseMapper.pageList(query,pageInfo);
+        // 统计当前项目组累计分数
+        List<String> teamIds = list.stream().map(TClinicalTrialPointsVO::getTeamId).distinct().collect(Collectors.toList());
+        List<TClinicalTrialPoints> teamList = this.list(Wrappers.lambdaQuery(TClinicalTrialPoints.class)
+                .in(TClinicalTrialPoints::getTeamId,teamIds));
+        for (TClinicalTrialPointsVO clinicalTrialPointsVO : list) {
+            List<TClinicalTrialPoints> clinicalTrialPoints = teamList.stream().filter(item -> item.getTeamId().equals(clinicalTrialPointsVO.getTeamId())).collect(Collectors.toList());
+            if(CollectionUtils.isEmpty(clinicalTrialPoints)){
+                clinicalTrialPointsVO.setTotalScore(0.0);
+            }else {
+                clinicalTrialPointsVO.setTotalScore(clinicalTrialPoints.stream().mapToDouble(TClinicalTrialPoints::getEvaluateScore).sum());
+            }
+        }
+        pageInfo.setRecords(list);
+        return pageInfo;
+    }
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TExperimentResultReportServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TExperimentResultReportServiceImpl.java
index b3e6307..50d303f 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TExperimentResultReportServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TExperimentResultReportServiceImpl.java
@@ -1,21 +1,15 @@
 package com.ruoyi.system.service.impl;
 
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.basic.PageInfo;
-import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.system.mapper.TExperimentResultReportMapper;
-import com.ruoyi.system.model.TExperimentDispatchParticipants;
 import com.ruoyi.system.model.TExperimentResultReport;
 import com.ruoyi.system.query.TExperimentResultReportQuery;
 import com.ruoyi.system.service.TExperimentResultReportService;
-import com.ruoyi.system.vo.TExperimentDispatchVO;
 import com.ruoyi.system.vo.TExperimentResultReportVO;
 import org.springframework.stereotype.Service;
-import org.springframework.util.CollectionUtils;
 
 import java.util.List;
-import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -36,4 +30,12 @@
         pageInfo.setRecords(list);
         return pageInfo;
     }
+
+    @Override
+    public PageInfo<TExperimentResultReportVO> evaluatePageList(TExperimentResultReportQuery query) {
+        PageInfo<TExperimentResultReportVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
+        List<TExperimentResultReportVO> list = this.baseMapper.evaluatePageList(query,pageInfo);
+        pageInfo.setRecords(list);
+        return pageInfo;
+    }
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TExperimentSchemeServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TExperimentSchemeServiceImpl.java
index 725372e..5b3c6ae 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TExperimentSchemeServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TExperimentSchemeServiceImpl.java
@@ -1,16 +1,23 @@
 package com.ruoyi.system.service.impl;
 
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.basic.PageInfo;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.system.mapper.SysUserMapper;
 import com.ruoyi.system.mapper.TExperimentSchemeMapper;
+import com.ruoyi.system.mapper.TExperimentSchemePersonMapper;
 import com.ruoyi.system.model.TExperimentScheme;
+import com.ruoyi.system.model.TExperimentSchemePerson;
 import com.ruoyi.system.query.TExperimentSchemeQuery;
 import com.ruoyi.system.service.TExperimentSchemeService;
-import com.ruoyi.system.vo.SysOperLogVO;
 import com.ruoyi.system.vo.TExperimentSchemeVO;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
 
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -23,10 +30,55 @@
 @Service
 public class TExperimentSchemeServiceImpl extends ServiceImpl<TExperimentSchemeMapper, TExperimentScheme> implements TExperimentSchemeService {
 
+    @Autowired
+    private TExperimentSchemePersonMapper experimentSchemePersonMapper;
+    @Autowired
+    private SysUserMapper sysUserMapper;
+
     @Override
     public PageInfo<TExperimentSchemeVO> pageList(TExperimentSchemeQuery query) {
         PageInfo<TExperimentSchemeVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
         List<TExperimentSchemeVO> list = this.baseMapper.pageList(query,pageInfo);
+        List<String> schemeIds = list.stream().map(TExperimentSchemeVO::getId).collect(Collectors.toList());
+        if(CollectionUtils.isEmpty(schemeIds)){
+            return pageInfo;
+        }
+        List<TExperimentSchemePerson> experimentSchemePersonList = experimentSchemePersonMapper.selectList(Wrappers.lambdaQuery(TExperimentSchemePerson.class).in(TExperimentSchemePerson::getSchemeId, schemeIds));
+        List<Long> userIds = experimentSchemePersonList.stream().map(TExperimentSchemePerson::getUserId).collect(Collectors.toList());
+        List<SysUser> sysUsers = sysUserMapper.selectUserByIds(userIds);
+        sysUsers.forEach(sysUser -> {
+            experimentSchemePersonList.stream().filter(experimentSchemePerson -> experimentSchemePerson.getUserId().equals(sysUser.getUserId())).forEach(experimentSchemePerson -> experimentSchemePerson.setNickName(sysUser.getNickName()));
+        });
+        for (TExperimentSchemeVO experimentSchemeVO : list) {
+            List<TExperimentSchemePerson> personList = experimentSchemePersonList.stream().filter(experimentSchemePerson -> experimentSchemePerson.getSchemeId().equals(experimentSchemeVO.getId())).collect(Collectors.toList());
+            experimentSchemeVO.setExperimentSchemePersons(personList);
+            // 写入名称
+            experimentSchemeVO.setSchemePersonName(personList.stream().map(TExperimentSchemePerson::getNickName).collect(Collectors.joining(",")));
+        }
+        pageInfo.setRecords(list);
+        return pageInfo;
+    }
+
+    @Override
+    public PageInfo<TExperimentSchemeVO> auditPageList(TExperimentSchemeQuery query) {
+        PageInfo<TExperimentSchemeVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
+        List<TExperimentSchemeVO> list = this.baseMapper.auditPageList(query,pageInfo);
+        List<String> schemeIds = list.stream().map(TExperimentSchemeVO::getId).collect(Collectors.toList());
+        if(CollectionUtils.isEmpty(schemeIds)){
+            return pageInfo;
+        }
+        List<TExperimentSchemePerson> experimentSchemePersonList = experimentSchemePersonMapper.selectList(Wrappers.lambdaQuery(TExperimentSchemePerson.class).in(TExperimentSchemePerson::getSchemeId, schemeIds));
+        List<Long> userIds = experimentSchemePersonList.stream().map(TExperimentSchemePerson::getUserId).collect(Collectors.toList());
+        List<SysUser> sysUsers = sysUserMapper.selectUserByIds(userIds);
+        sysUsers.forEach(sysUser -> {
+            experimentSchemePersonList.stream().filter(experimentSchemePerson -> experimentSchemePerson.getUserId().equals(sysUser.getUserId())).forEach(experimentSchemePerson -> experimentSchemePerson.setNickName(sysUser.getNickName()));
+        });
+        for (TExperimentSchemeVO experimentSchemeVO : list) {
+            List<TExperimentSchemePerson> personList = experimentSchemePersonList.stream().filter(experimentSchemePerson -> experimentSchemePerson.getSchemeId().equals(experimentSchemeVO.getId())).collect(Collectors.toList());
+            experimentSchemeVO.setExperimentSchemePersons(personList);
+            // 写入名称
+            experimentSchemeVO.setSchemePersonName(personList.stream().map(TExperimentSchemePerson::getNickName).collect(Collectors.joining(",")));
+        }
         pageInfo.setRecords(list);
         return pageInfo;
     }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TFeasibilityStudyReportServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TFeasibilityStudyReportServiceImpl.java
index 2eb4262..b5e15b4 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TFeasibilityStudyReportServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TFeasibilityStudyReportServiceImpl.java
@@ -7,10 +7,11 @@
 import com.ruoyi.system.query.TFeasibilityStudyReportQuery;
 import com.ruoyi.system.service.TFeasibilityStudyReportService;
 import com.ruoyi.system.vo.TFeasibilityStudyReportVO;
-import com.ruoyi.system.vo.TQaTestItemVO;
 import org.springframework.stereotype.Service;
 
+import java.util.Arrays;
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -30,4 +31,35 @@
         pageInfo.setRecords(list);
         return pageInfo;
     }
+
+    @Override
+    public PageInfo<TFeasibilityStudyReportVO> evaluatePageList(TFeasibilityStudyReportQuery query) {
+        PageInfo<TFeasibilityStudyReportVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
+        List<TFeasibilityStudyReportVO> list = this.baseMapper.evaluatePageList(query,pageInfo);
+        for (TFeasibilityStudyReportVO tFeasibilityStudyReportVO : list) {
+            String scoreStr = tFeasibilityStudyReportVO.getEvaluateScore();
+            if (scoreStr == null || scoreStr.isEmpty()) {
+                tFeasibilityStudyReportVO.setTotalScore(0);
+                continue;
+            }
+
+            try {
+                // 使用 Stream 累加分数
+                int sum = Arrays.stream(scoreStr.split(","))
+                        .mapToInt(Integer::parseInt)
+                        .sum();
+                tFeasibilityStudyReportVO.setTotalScore(sum);
+            } catch (NumberFormatException e) {
+                tFeasibilityStudyReportVO.setTotalScore(0);
+            }
+        }
+        pageInfo.setRecords(list);
+        return pageInfo;
+    }
+
+    @Override
+    public Map<String, Integer> evaluateCount(TFeasibilityStudyReportQuery query) {
+        Map<String, Integer> map = this.baseMapper.evaluateCount(query);
+        return map;
+    }
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/TClinicalTrialPointsVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/TClinicalTrialPointsVO.java
new file mode 100644
index 0000000..e544f0d
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/TClinicalTrialPointsVO.java
@@ -0,0 +1,22 @@
+package com.ruoyi.system.vo;
+
+import com.ruoyi.system.model.TClinicalTrialPoints;
+import com.ruoyi.system.model.TProjectTeam;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "临床试验积分VO")
+public class TClinicalTrialPointsVO extends TClinicalTrialPoints {
+
+    @ApiModelProperty(value = "项目组信息")
+    private TProjectTeam projectTeam;
+
+    @ApiModelProperty(value = "项目组成员名称拼接")
+    private String staffNames;
+
+    @ApiModelProperty(value = "总分")
+    private Double totalScore;
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/TExperimentSchemeVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/TExperimentSchemeVO.java
index 38b8bf0..cb9e465 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/vo/TExperimentSchemeVO.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/TExperimentSchemeVO.java
@@ -13,6 +13,20 @@
 @Data
 @ApiModel(value = "实验方案管理VO", description = "实验方案管理VO")
 public class TExperimentSchemeVO extends TExperimentScheme {
+    @ApiModelProperty(value = "项目课题方案")
+    private String projectName;
+
+    @ApiModelProperty(value = "实验编号")
+    private String experimentCode;
+
+    @ApiModelProperty(value = "实验名称")
+    private String experimentName;
+
+    @ApiModelProperty(value = "实验员名称")
+    private String schemePersonName;
+
+    @ApiModelProperty(value = "审核人名称")
+    private String auditPersonName;
 
     @ApiModelProperty(value = "实验人员信息")
     private List<TExperimentSchemePerson> experimentSchemePersons;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/TFeasibilityStudyReportVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/TFeasibilityStudyReportVO.java
index 9fe3710..5ab1ed8 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/vo/TFeasibilityStudyReportVO.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/TFeasibilityStudyReportVO.java
@@ -22,6 +22,12 @@
     @ApiModelProperty(value = "项目组成员名称拼接")
     private String staffNames;
 
+    @ApiModelProperty(value = "总分")
+    private Integer totalScore;
+
+    @ApiModelProperty(value = "评定人员名称")
+    private String evaluatePersonName;
+
     @ApiModelProperty(value = "报告文件")
     private List<TFeasibilityReportFile> feasibilityReportFiles;
 
diff --git a/ruoyi-system/src/main/resources/mapper/system/TClinicalTrialPointsMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TClinicalTrialPointsMapper.xml
index 690705f..cedee2b 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TClinicalTrialPointsMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/TClinicalTrialPointsMapper.xml
@@ -6,6 +6,7 @@
     <resultMap id="BaseResultMap" type="com.ruoyi.system.model.TClinicalTrialPoints">
         <id column="id" property="id" />
         <result column="team_id" property="teamId" />
+        <result column="process_engineer_id" property="processEngineerId" />
         <result column="trial_content" property="trialContent" />
         <result column="trial_time" property="trialTime" />
         <result column="evaluate_score" property="evaluateScore" />
@@ -18,7 +19,40 @@
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        id, team_id, trial_content, trial_time, evaluate_score, create_time, update_time, create_by, update_by, disabled
+        id, team_id, process_engineer_id,trial_content, trial_time, evaluate_score, create_time, update_time, create_by, update_by, disabled
     </sql>
+    <select id="pageList" resultType="com.ruoyi.system.vo.TClinicalTrialPointsVO">
+        select
+        t.id,
+        t.team_id,
+        t.process_engineer_id,
+        t.trial_content,
+        t.trial_time,
+        t.evaluate_score,
+        t.create_time,
+        t.update_time,
+        t.create_by,
+        t.update_by,
+        t.disabled,
+        p.team_name AS teamName
+        from t_clinical_trial_points t
+        left join t_project_team p on t.team_id = p.id
+        <where>
+            <if test="query.teamName != null and query.teamName != ''">
+                and p.team_name like concat('%',#{query.teamName},'%')
+            </if>
+            <if test="query.trialContent != null and query.trialContent != ''">
+                and t.trial_content like concat('%',#{query.trialContent},'%')
+            </if>
+            <if test="query.teamIds != null and query.teamIds.size() > 0">
+                and t.team_id in
+                <foreach item="teamId" collection="query.teamIds" separator="," open="(" close=")" index="">
+                    #{teamId}
+                </foreach>
+            </if>
+            AND t.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
+        </where>
+        ORDER BY t.create_time DESC
+    </select>
 
 </mapper>
diff --git a/ruoyi-system/src/main/resources/mapper/system/TExperimentResultReportMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TExperimentResultReportMapper.xml
index 3419716..0e34df5 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TExperimentResultReportMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/TExperimentResultReportMapper.xml
@@ -51,6 +51,47 @@
             <if test="query.startTime != null and query.startTime != '' and query.endTime != null and query.endTime != ''">
                 AND terr.create_time BETWEEN #{query.startTime} AND #{query.endTime}
             </if>
+            <if test="query.dispatchIds != null and query.dispatchIds.size() > 0">
+                AND terr.dispatch_id IN
+                <foreach collection="query.dispatchIds" item="item" index="index" open="(" close=")" separator=",">
+                    #{item}
+                </foreach>
+            </if>
+            AND terr.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
+        </where>
+        ORDER BY terr.create_time DESC
+    </select>
+    <select id="evaluatePageList" resultType="com.ruoyi.system.vo.TExperimentResultReportVO">
+        select terr.id, terr.dispatch_id, terr.experiment_result, terr.status, terr.evaluate_one, terr.evaluate_two, terr.evaluate_three,
+        terr.evaluate_four, terr.evaluate_five, terr.evaluate_six, terr.evaluate_person_id, terr.evaluate_time, terr.create_time,
+        terr.update_time, terr.create_by, terr.update_by, terr.disabled, tpp.project_name AS projectName,
+        ted.experiment_code AS experimentCode, ted.experiment_name AS experimentName
+        from t_experiment_result_report terr
+        left join t_experiment_dispatch ted on terr.dispatch_id = ted.id
+        left join t_project_proposal tpp on ted.proposal_id = tpp.id
+        <where>
+            <if test="query.projectName != null and query.projectName != ''">
+                and tpp.project_name like concat('%', #{query.projectName}, '%')
+            </if>
+            <if test="query.experimentCode != null and query.experimentCode != ''">
+                and ted.experiment_code like concat('%', #{query.experimentCode}, '%')
+            </if>
+            <if test="query.experimentName != null and query.experimentName != ''">
+                and ted.experiment_name like concat('%', #{query.experimentName}, '%')
+            </if>
+            <if test="query.status != null">
+                and terr.status = #{query.status}
+            </if>
+            <if test="query.startTime != null and query.startTime != '' and query.endTime != null and query.endTime != ''">
+                AND terr.create_time BETWEEN #{query.startTime} AND #{query.endTime}
+            </if>
+            <if test="query.dispatchIds != null and query.dispatchIds.size() > 0">
+                AND terr.dispatch_id IN
+                <foreach collection="query.dispatchIds" item="item" index="index" open="(" close=")" separator=",">
+                    #{item}
+                </foreach>
+            </if>
+            AND terr.status IN (2,3,4,5)
             AND terr.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
         </where>
         ORDER BY terr.create_time DESC
diff --git a/ruoyi-system/src/main/resources/mapper/system/TExperimentSchemeMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TExperimentSchemeMapper.xml
index 55577e8..e6a7d76 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TExperimentSchemeMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/TExperimentSchemeMapper.xml
@@ -59,5 +59,32 @@
         </where>
         ORDER BY tes.create_time DESC
     </select>
+    <select id="auditPageList" resultType="com.ruoyi.system.vo.TExperimentSchemeVO">
+        select tes.id, tes.dispatch_id, tes.experiment_date, tes.experiment_objective, tes.experiment_param_route,
+        tes.experiment_material, tes.experiment_device, tes.experiment_step_record, tes.stop_reason, tes.stop_file,tes.stop_file_name,
+        tes.commit_sign, tes.status, tes.audit_person_id, tes.audit_time, tes.audit_remark, tes.create_time, tes.update_time,
+        tes.create_by, tes.update_by, tes.disabled, tpp.project_name as projectName,ted.experiment_code as experimentCode,
+        ted.experiment_name as experimentName
+        from t_experiment_scheme tes
+        left join t_experiment_dispatch ted on tes.dispatch_id = ted.id
+        left join t_project_proposal tpp on ted.proposal_id = tpp.id
+        <where>
+            <if test="query.status != null">
+                and tes.status = #{query.status}
+            </if>
+            <if test="query.projectName != null and query.projectName != ''">
+                and tpp.project_name like concat('%', #{query.projectName}, '%')
+            </if>
+            <if test="query.experimentCode != null and query.experimentCode != ''">
+                and tes.experiment_code like concat('%', #{query.experimentCode}, '%')
+            </if>
+            <if test="query.startTime != null and query.startTime != '' and query.endTime != null and query.endTime != ''">
+                AND tes.create_time BETWEEN #{query.startTime} AND #{query.endTime}
+            </if>
+            AND tes.status IN (2,3,4)
+            AND tes.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
+        </where>
+        ORDER BY tes.create_time DESC
+    </select>
 
 </mapper>
diff --git a/ruoyi-system/src/main/resources/mapper/system/TFeasibilityStudyReportMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TFeasibilityStudyReportMapper.xml
index 67910d9..f8b7e33 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TFeasibilityStudyReportMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/TFeasibilityStudyReportMapper.xml
@@ -63,5 +63,81 @@
         </where>
         ORDER BY tfsr.create_time DESC
     </select>
+    <select id="evaluatePageList" resultType="com.ruoyi.system.vo.TFeasibilityStudyReportVO">
+        select tfsr.id, tfsr.team_id, tfsr.report_code, tfsr.report_name, tfsr.report_text, tfsr.report_type, tfsr.status,
+        tfsr.audit_person_id, tfsr.audit_time, tfsr.audit_remark, tfsr.evaluate_person_id, tfsr.evaluate_time, tfsr.evaluate_score,
+        tfsr.create_time, tfsr.update_time, tfsr.create_by, tfsr.update_by, tfsr.disabled, tpt.team_name as teamName
+        from t_feasibility_study_report tfsr
+        left join t_project_team tpt on tpt.id = tfsr.team_id
+        <where>
+            <if test="query.reportName != null and query.reportName != ''">
+                and tfsr.report_name like concat('%', #{query.reportName}, '%')
+            </if>
+            <if test="query.reportCode != null and query.reportCode != ''">
+                and tfsr.report_code like concat('%', #{query.reportCode}, '%')
+            </if>
+            <if test="query.teamName != null and query.teamName != ''">
+                and tpt.team_name like concat('%', #{query.teamName})
+            </if>
+            <if test="query.status != null">
+                and tfsr.status = #{query.status}
+            </if>
+            <if test="query.reportType != null">
+                and tfsr.report_type = #{query.reportType}
+            </if>
+            <if test="query.createBy != null and query.createBy != ''">
+                and tfsr.createBy like concat('%', #{query.createBy})
+            </if>
+            <if test="query.startTime != null and query.startTime != '' and query.endTime != null and query.endTime != ''">
+                AND tfsr.create_time BETWEEN #{query.startTime} AND #{query.endTime}
+            </if>
+            <if test="query.teamIds != null and query.teamIds.size() > 0">
+                and tfsr.team_id in
+                <foreach item="teamId" collection="query.teamIds" separator="," open="(" close=")" index="">
+                    #{teamId}
+                </foreach>
+            </if>
+            AND tfsr.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
+        </where>
+        ORDER BY tfsr.create_time DESC
+    </select>
+    <select id="evaluateCount" resultType="java.util.Map">
+        select
+        COUNT(tfsr.id) as totalCount,
+        SUM(CASE WHEN tfsr.status = 2 THEN 1 ELSE 0 END) AS toEvaluatedCount,
+        SUM(CASE WHEN tfsr.status = 3 THEN 1 ELSE 0 END) AS evaluatedCount,
+        from t_feasibility_study_report tfsr
+        left join t_project_team tpt on tpt.id = tfsr.team_id
+        <where>
+            <if test="query.reportName != null and query.reportName != ''">
+                and tfsr.report_name like concat('%', #{query.reportName}, '%')
+            </if>
+            <if test="query.reportCode != null and query.reportCode != ''">
+                and tfsr.report_code like concat('%', #{query.reportCode}, '%')
+            </if>
+            <if test="query.teamName != null and query.teamName != ''">
+                and tpt.team_name like concat('%', #{query.teamName})
+            </if>
+            <if test="query.status != null">
+                and tfsr.status = #{query.status}
+            </if>
+            <if test="query.reportType != null">
+                and tfsr.report_type = #{query.reportType}
+            </if>
+            <if test="query.createBy != null and query.createBy != ''">
+                and tfsr.createBy like concat('%', #{query.createBy})
+            </if>
+            <if test="query.startTime != null and query.startTime != '' and query.endTime != null and query.endTime != ''">
+                AND tfsr.create_time BETWEEN #{query.startTime} AND #{query.endTime}
+            </if>
+            <if test="query.teamIds != null and query.teamIds.size() > 0">
+                and tfsr.team_id in
+                <foreach item="teamId" collection="query.teamIds" separator="," open="(" close=")" index="">
+                    #{teamId}
+                </foreach>
+            </if>
+            AND tfsr.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
+        </where>
+    </select>
 
 </mapper>

--
Gitblit v1.7.1