From a0e9fac251df54e5ed6159ce1fdb77d463ebdc48 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期四, 26 六月 2025 20:05:35 +0800
Subject: [PATCH] 菌种库所有代码

---
 ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml                                |    9 
 ruoyi-system/src/main/resources/mapper/system/TPedigreeChartMapper.xml                         |    6 
 ruoyi-system/src/main/java/com/ruoyi/system/model/TPedigreeChart.java                          |    4 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TPedigreeChartController.java           |  148 +++++----
 ruoyi-system/src/main/java/com/ruoyi/system/model/TStrainValidationData.java                   |    4 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java              |    1 
 ruoyi-system/src/main/java/com/ruoyi/system/model/TCulturePreservation.java                    |    3 
 ruoyi-system/src/main/java/com/ruoyi/system/query/TPedigreeChartQuery.java                     |    5 
 ruoyi-system/src/main/java/com/ruoyi/system/model/TBreedingAndPreservation.java                |    3 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java               |  104 ++++++
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TStrainReportServiceImpl.java         |   21 
 ruoyi-admin/src/main/java/com/ruoyi/web/core/config/DataUpdateHandlerConfig.java               |    1 
 ruoyi-system/src/main/java/com/ruoyi/system/dto/TPedigreeChartParentTwoCountDTO.java           |    2 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TProjectGroupController.java            |    6 
 ruoyi-system/src/main/java/com/ruoyi/system/model/TPedigreeChartDetail.java                    |    3 
 ruoyi-system/src/main/java/com/ruoyi/system/query/TBreedingAndPreservationQuery.java           |    4 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/BaseController.java                     |    4 
 ruoyi-system/src/main/resources/mapper/system/TProjectTeamMapper.xml                           |    4 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TStrainReportController.java            |  218 +++++++-------
 ruoyi-system/src/main/resources/mapper/system/TStrainReportMapper.xml                          |   16 
 ruoyi-system/src/main/java/com/ruoyi/system/model/TTrainLibrary.java                           |    4 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TProjectTeamServiceImpl.java          |    3 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TStrainValidationDataController.java    |   29 +
 ruoyi-system/src/main/resources/mapper/system/TBreedingAndPreservationMapper.xml               |    6 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TTrainLibraryController.java            |  118 ++++---
 ruoyi-system/src/main/java/com/ruoyi/system/query/TStrainReportProjectQuery.java               |    2 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TPedigreeChartServiceImpl.java        |   18 +
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java               |   24 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TBreedingAndPreservationController.java |   94 ++++-
 ruoyi-common/src/main/java/com/ruoyi/common/core/controller/FileController.java                |    6 
 30 files changed, 570 insertions(+), 300 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/BaseController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/BaseController.java
index ba681ca..cddd55a 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/BaseController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/BaseController.java
@@ -31,8 +31,8 @@
 
     @Resource
     private TSeparationOfCultureDishesService separationOfCultureDishesService;
-//    @Resource
-//    private TStrainReportService strainReportService;
+    @Resource
+    private TStrainReportService strainReportService;
     @Resource
     private TStrainValidationDataService strainValidationDataService;
     @Resource
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TBreedingAndPreservationController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TBreedingAndPreservationController.java
index c58fcd3..0233b2d 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TBreedingAndPreservationController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TBreedingAndPreservationController.java
@@ -71,12 +71,33 @@
     @ApiOperation(value = "菌种选育保藏记录-获取菌种选育保藏记录分页列表",response = TBreedingAndPreservationQuery.class)
     @PostMapping(value = "/api/t-breeding-and-preservation/pageList")
     public R<PageInfo<TBreedingAndPreservationVO>> pageList(@RequestBody String param) {
-        LoginUser loginUser = tokenService.getLoginUser();
-        if (loginUser==null){
-            return R.fail(401,"登录失效");
-        }
-        SysUser sysUser = sysUserService.selectUserById(loginUser.getUserId());
+
         TBreedingAndPreservationQuery query = JSON.parseObject(param, TBreedingAndPreservationQuery.class);
+        SysUser sysUser = sysUserService.selectUserById(tokenService.getLoginUser().getUserId());
+        if (sysUser.getRoleType().equals("2")){
+            List<String> allProjectIds = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getUserId, tokenService.getLoginUser().getUserId())
+                    .list().stream().map(TProjectTeamStaff::getTeamId).collect(Collectors.toList());
+            if (!allProjectIds.isEmpty()){                List<String> projectIds = projectTeamService.lambdaQuery().in(TProjectTeam::getId, allProjectIds)
+                        .list().stream().map(TProjectTeam::getId).collect(Collectors.toList());
+
+                if (projectIds.isEmpty()){
+                    return R.ok(new PageInfo<>());
+                }
+                query.setProjectIds(projectIds);
+            }
+        }else if (!sysUser.getRoleType().equals("1")){
+            List<String> allProjectIds = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getUserId, tokenService.getLoginUser().getUserId())
+                    .list().stream().map(TProjectTeamStaff::getTeamId).collect(Collectors.toList());
+            if (!allProjectIds.isEmpty()){                List<String> projectIds = projectTeamService.lambdaQuery().in(TProjectTeam::getId, allProjectIds)
+                        .eq(TProjectTeam::getStatus, 1).list().stream().map(TProjectTeam::getId).collect(Collectors.toList());
+
+                if (projectIds.isEmpty()){
+                    return R.ok(new PageInfo<>());
+                }
+                query.setProjectIds(projectIds);
+            }
+        }
+
         return R.ok(breedingAndPreservationService.pageList(query));
     }
     /**
@@ -91,8 +112,20 @@
             return R.fail(401,"登陆失效");
         }
         TBreedingAndPreservationDTO dto = JSON.parseObject(param,TBreedingAndPreservationDTO.class);
+        if (dto.getStatus()==1){
+            return R.fail("有菌种待确认,无法提交");
+        }
         if (dto.getStatus()==3){
             dto.setIsDraft(1);
+        }
+        List<String> projectIds = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getUserId, tokenService.getLoginUser().getUserId())
+                .list().stream().map(TProjectTeamStaff::getTeamId).collect(Collectors.toList());
+        if (!projectIds.isEmpty()){
+            TProjectTeam projectTeam = projectTeamService.lambdaQuery().in(TProjectTeam::getId, projectIds)
+                    .eq(TProjectTeam::getStatus, 1)
+                    .orderByDesc(BaseModel::getCreateTime)
+                    .last("limit 1").one();
+            dto.setProjectId(projectTeam.getId());
         }
         breedingAndPreservationService.save(dto);
         List<TSeparationOfCultureDishes> separationOfCultureDishesList = dto.getSeparationOfCultureDishesList();
@@ -107,27 +140,31 @@
         observationOfPetriDishesService.saveBatch(observationOfPetriDishes);
         List<TVaccinationSlope> vaccinationSlopes = dto.getVaccinationSlopes();
         for (TVaccinationSlope tSeparationOfCultureDishes : vaccinationSlopes) {
+            tSeparationOfCultureDishes.setHandleId(tokenService.getLoginUser().getUserId()+"");
+            tSeparationOfCultureDishes.setHandleTime(LocalDateTime.now());
             tSeparationOfCultureDishes.setBreedingPreserveId(dto.getId());
         }
         vaccinationSlopeService.saveBatch(vaccinationSlopes);
         List<TCulturePreservation> culturePreservations = dto.getCulturePreservations();
         for (TCulturePreservation tSeparationOfCultureDishes : culturePreservations) {
+            tSeparationOfCultureDishes.setHandleId(tokenService.getLoginUser().getUserId()+"");
+            tSeparationOfCultureDishes.setHandleTime(LocalDateTime.now());
             tSeparationOfCultureDishes.setBreedingPreserveId(dto.getId());
         }
         culturePreservationService.saveBatch(culturePreservations);
         if (dto.getStatus()!=null&&dto.getStatus()==2){
             // 新增消息
             TNotice tNotice = new TNotice();
-            List<String> collect = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getUserId, tokenService.getLoginUser().getUserId())
+            List<String> allProjectIds = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getUserId, tokenService.getLoginUser().getUserId())
                     .eq(TProjectTeamStaff::getRoleType, 2)
                     .list().stream().map(TProjectTeamStaff::getTeamId).collect(Collectors.toList());
-            if (!collect.isEmpty()){
-                TProjectTeam one = projectTeamService.lambdaQuery().in(TProjectTeam::getId, collect)
+            if (!allProjectIds.isEmpty()){
+                TProjectTeam projectTeam = projectTeamService.lambdaQuery().in(TProjectTeam::getId, allProjectIds)
                         .eq(TProjectTeam::getStatus, 1)
                         .orderByDesc(BaseModel::getCreateTime).last("limit 1").one();
-                TProjectTeamStaff one1 = projectTeamStaffService.lambdaQuery()
-                        .eq(TProjectTeamStaff::getTeamId, one.getId()).eq(TProjectTeamStaff::getRoleType, 2).one();
-                tNotice.setUserId(one1.getUserId());
+                TProjectTeamStaff projectTeamStaff = projectTeamStaffService.lambdaQuery()
+                        .eq(TProjectTeamStaff::getTeamId, projectTeam.getId()).eq(TProjectTeamStaff::getRoleType, 2).one();
+                tNotice.setUserId(projectTeamStaff.getUserId());
 
                 tNotice.setCommitId(tokenService.getLoginUser().getUserId()+"");
                 tNotice.setStatus(1);
@@ -146,7 +183,6 @@
     private TProjectTeamStaffService projectTeamStaffService;
     @Resource
     private TNoticeService noticeService;
-    //@PreAuthorize("@ss.hasPermi('system:breedingAndPreservation:update')")
     @Log(title = "菌种选育保藏记录-编辑选育保藏记录", businessType = BusinessType.UPDATE)
     @ApiOperation(value = "菌种选育保藏记录-编辑选育保藏记录",response = TBreedingAndPreservationDTO.class)
     @PostMapping(value = "/api/t-breeding-and-preservation/update")
@@ -188,14 +224,14 @@
         if (dto.getStatus()==2){
             // 新增消息
             TNotice tNotice = new TNotice();
-            List<String> collect = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getUserId, tokenService.getLoginUser().getUserId())
+            List<String> allProjectIds = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getUserId, tokenService.getLoginUser().getUserId())
                     .eq(TProjectTeamStaff::getRoleType, 2)
                     .list().stream().map(TProjectTeamStaff::getTeamId).collect(Collectors.toList());
-            TProjectTeam one = projectTeamService.lambdaQuery().in(TProjectTeam::getId, collect)
+            TProjectTeam projectTeam = projectTeamService.lambdaQuery().in(TProjectTeam::getId, allProjectIds)
                     .eq(TProjectTeam::getStatus, 1)
                     .orderByDesc(BaseModel::getCreateTime).last("limit 1").one();
             TProjectTeamStaff one1 = projectTeamStaffService.lambdaQuery()
-                    .eq(TProjectTeamStaff::getTeamId, one.getId()).eq(TProjectTeamStaff::getRoleType, 2).one();
+                    .eq(TProjectTeamStaff::getTeamId, projectTeam.getId()).eq(TProjectTeamStaff::getRoleType, 2).one();
             tNotice.setUserId(one1.getUserId());
 
             tNotice.setCommitId(tokenService.getLoginUser().getUserId()+"");
@@ -214,11 +250,11 @@
         Long userId = tokenService.getLoginUser().getUserId();
 
         TConfirmBreedingAndPreservationDTO dto = JSON.parseObject(param,TConfirmBreedingAndPreservationDTO.class);
-        TVaccinationSlope byId = vaccinationSlopeService.getById(dto.getId());
-        byId.setPreserveId(userId+"");
-        byId.setPreserveTime(LocalDateTime.now());
-        byId.setPreserveSignature(dto.getPreserveSignature());
-        vaccinationSlopeService.updateById(byId);
+        TVaccinationSlope vaccinationSlope = vaccinationSlopeService.getById(dto.getId());
+        vaccinationSlope.setPreserveId(userId+"");
+        vaccinationSlope.setPreserveTime(LocalDateTime.now());
+        vaccinationSlope.setPreserveSignature(dto.getPreserveSignature());
+        vaccinationSlopeService.updateById(vaccinationSlope);
         return R.ok();
     }
     @Log(title = "菌种保藏记录确认入库", businessType = BusinessType.UPDATE)
@@ -227,17 +263,18 @@
     public R<Boolean> culturePreservationsConfirm(@RequestBody String param) {
         Long userId = tokenService.getLoginUser().getUserId();
         TConfirmBreedingAndPreservationDTO dto = JSON.parseObject(param,TConfirmBreedingAndPreservationDTO.class);
-        TCulturePreservation byId = culturePreservationService.getById(dto.getId());
-        byId.setPreserveId(userId+"");
-        byId.setPreserveTime(LocalDateTime.now());
-        byId.setPreserveSignature(dto.getPreserveSignature());
-        culturePreservationService.updateById(byId);
+        TCulturePreservation culturePreservation = culturePreservationService.getById(dto.getId());
+        culturePreservation.setPreserveId(userId+"");
+        culturePreservation.setPreserveTime(LocalDateTime.now());
+        culturePreservation.setPreserveSignature(dto.getPreserveSignature());
+        culturePreservationService.updateById(culturePreservation);
         return R.ok();
     }
     //@PreAuthorize("@ss.hasPermi('system:breedingAndPreservation:detail')")
     @ApiOperation(value = "选育保藏记录详情")
     @GetMapping(value = "/open/t-breeding-and-preservation/getDetailById")
     public R<TBreedingAndPreservationDetailVO> getDetailById(@RequestParam String id) {
+        List<SysUser> sysUsers = sysUserService.selectAllList();
         TBreedingAndPreservationDetailVO res = new TBreedingAndPreservationDetailVO();
         TBreedingAndPreservation breedingAndPreservation = breedingAndPreservationService.getById(id);
         BeanUtils.copyProperties(breedingAndPreservation, res);
@@ -245,6 +282,13 @@
         List<TObservationOfPetriDishes> observationOfPetriDishes = observationOfPetriDishesService.lambdaQuery().eq(TObservationOfPetriDishes::getBreedingPreserveId, id).list();
         List<TVaccinationSlope> vaccinationSlopes = vaccinationSlopeService.lambdaQuery().eq(TVaccinationSlope::getBreedingPreserveId, id).list();
         List<TCulturePreservation> culturePreservations = culturePreservationService.lambdaQuery().eq(TCulturePreservation::getBreedingPreserveId, id).list();
+        for (TCulturePreservation culturePreservation : culturePreservations) {
+            SysUser sysUser = sysUsers.stream().filter(e -> e.getUserId().equals(Long.valueOf(culturePreservation.getHandleId()))).findFirst()
+                    .orElse(null);
+            if (sysUser!=null){
+                culturePreservation.setHandleName(sysUser.getNickName());
+            }
+        }
         res.setSeparationOfCultureDishesList(separationOfCultureDishesList);
         res.setObservationOfPetriDishes(observationOfPetriDishes);
         res.setVaccinationSlopes(vaccinationSlopes);
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TPedigreeChartController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TPedigreeChartController.java
index 5bef464..364aad8 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TPedigreeChartController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TPedigreeChartController.java
@@ -8,6 +8,7 @@
 import com.ruoyi.common.basic.PageInfo;
 import com.ruoyi.common.core.domain.BaseModel;
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.core.domain.model.LoginUser;
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.utils.StringUtils;
@@ -52,7 +53,8 @@
     @Resource
     private TokenService tokenService;
 
-
+    @Resource
+    private ISysUserService sysUserService;
 
 
 
@@ -64,6 +66,30 @@
     @PostMapping(value = "/api/t-pedigree-chart/pageList")
     public R<PageInfo<TPedigreeChartVO>> pageList(@RequestBody String param) {
         TPedigreeChartQuery query = JSON.parseObject(param, TPedigreeChartQuery.class);
+        SysUser sysUser = sysUserService.selectUserById(tokenService.getLoginUser().getUserId());
+        if (sysUser.getRoleType().equals("2")){
+            List<String> allProjectIds = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getUserId, tokenService.getLoginUser().getUserId())
+                    .list().stream().map(TProjectTeamStaff::getTeamId).collect(Collectors.toList());
+            if (!allProjectIds.isEmpty()){                List<String> projectIds = projectTeamService.lambdaQuery().in(TProjectTeam::getId, allProjectIds)
+                        .list().stream().map(TProjectTeam::getId).collect(Collectors.toList());
+
+                if (projectIds.isEmpty()){
+                    return R.ok(new PageInfo<>());
+                }
+                query.setProjectIds(projectIds);
+            }
+        }else if (!sysUser.getRoleType().equals("1")){
+            List<String> allProjectIds = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getUserId, tokenService.getLoginUser().getUserId())
+                    .list().stream().map(TProjectTeamStaff::getTeamId).collect(Collectors.toList());
+            if (!allProjectIds.isEmpty()){                List<String> projectIds = projectTeamService.lambdaQuery().in(TProjectTeam::getId, allProjectIds)
+                        .eq(TProjectTeam::getStatus, 1).list().stream().map(TProjectTeam::getId).collect(Collectors.toList());
+
+                if (projectIds.isEmpty()){
+                    return R.ok(new PageInfo<>());
+                }
+                query.setProjectIds(projectIds);
+            }
+        }
         return R.ok(pedigreeChartService.pageList(query));
     }
 
@@ -83,27 +109,36 @@
         TPedigreeChartParentAllDTO dto = JSON.parseObject(param, TPedigreeChartParentAllDTO.class);
         TPedigreeChart parent = dto.getParent();
         if (!dto.getOne().isEmpty()){
-            String one1Json = JSON.toJSONString(dto.getOne().get(0));
-            parent.setJson(one1Json);
+            String child = JSON.toJSONString(dto.getOne().get(0));
+            parent.setJson(child);
+        }
+        List<String> projectIds = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getUserId, tokenService.getLoginUser().getUserId())
+                .list().stream().map(TProjectTeamStaff::getTeamId).collect(Collectors.toList());
+        if (!projectIds.isEmpty()){
+            TProjectTeam projectTeam = projectTeamService.lambdaQuery().in(TProjectTeam::getId, projectIds)
+                    .eq(TProjectTeam::getStatus, 1)
+                    .orderByDesc(BaseModel::getCreateTime)
+                    .last("limit 1").one();
+            parent.setProjectId(projectTeam.getId());
         }
         pedigreeChartService.save(parent);
         if (!dto.getOne().isEmpty()){
-            TPedigreeChartParentOneDTO one = dto.getOne().get(0);
-            one.setParentId("0");
-            one.setType(1);
-            one.setStatus(one.getStatus());
-            one.setStorageTime(LocalDateTime.now());
-            one.setPedigreeChartId(parent.getId());
-            one.setVaccinateId(loginUser.getUserId()+"");
-            one.setVaccinateSignature(one.getVaccinateSignature());
-            one.setVaccinateTime(LocalDateTime.now());
-            one.setId(null);
-            pedigreeChartDetailService.save(one);
-            List<TPedigreeChartParentOneCountDTO> countList = one.getChildren();
+            TPedigreeChartParentOneDTO oneLevel = dto.getOne().get(0);
+            oneLevel.setParentId("0");
+            oneLevel.setType(1);
+            oneLevel.setStatus(oneLevel.getStatus());
+            oneLevel.setStorageTime(LocalDateTime.now());
+            oneLevel.setPedigreeChartId(parent.getId());
+            oneLevel.setVaccinateId(loginUser.getUserId()+"");
+            oneLevel.setVaccinateSignature(oneLevel.getVaccinateSignature());
+            oneLevel.setVaccinateTime(LocalDateTime.now());
+            oneLevel.setId(null);
+            pedigreeChartDetailService.save(oneLevel);
+            List<TPedigreeChartParentOneCountDTO> countList = oneLevel.getChildren();
 
             if (!countList.isEmpty()){
                 TPedigreeChartParentOneCountDTO count = countList.get(0);
-                count.setParentId(one.getId());
+                count.setParentId(oneLevel.getId());
                 count.setType(2);
                     count.setStatus(1);
                 count.setPedigreeChartId(parent.getId());
@@ -112,7 +147,7 @@
                 pedigreeChartDetailService.save(count);
                 if (count.getChildren()!=null){
                     for (TPedigreeChartParentTwoDTO tPedigreeChartParentTwoDTO : count.getChildren()) {
-                        tPedigreeChartParentTwoDTO.setParentId(one.getId());
+                        tPedigreeChartParentTwoDTO.setParentId(oneLevel.getId());
                         tPedigreeChartParentTwoDTO.setPedigreeChartId(parent.getId());
                         tPedigreeChartParentTwoDTO.setType(1);
                         if (tPedigreeChartParentTwoDTO.getStatus()==null){
@@ -130,16 +165,16 @@
                         List<TPedigreeChartParentTwoCountDTO> count1List = tPedigreeChartParentTwoDTO.getChildren();
                         if (!count1List.isEmpty()){
                             // 传代数
-                            TPedigreeChartParentTwoCountDTO count1 = count1List.get(0);
-                            count1.setType(2);
-                            count1.setParentId(tPedigreeChartParentTwoDTO.getId());
-                            count1.setPedigreeChartId(parent.getId());
-                            count1.setStatus(1);
-                            count1.setId(null);
-                            pedigreeChartDetailService.save(count1);
-                            if (count1.getChildren()!=null){
-                                for (TPedigreeChartParentThreeDTO tPedigreeChartParentThreeDTO : count1.getChildren()) {
-                                    tPedigreeChartParentThreeDTO.setParentId(count1.getId());
+                            TPedigreeChartParentTwoCountDTO childCount = count1List.get(0);
+                            childCount.setType(2);
+                            childCount.setParentId(tPedigreeChartParentTwoDTO.getId());
+                            childCount.setPedigreeChartId(parent.getId());
+                            childCount.setStatus(1);
+                            childCount.setId(null);
+                            pedigreeChartDetailService.save(childCount);
+                            if (childCount.getChildren()!=null){
+                                for (TPedigreeChartParentThreeDTO tPedigreeChartParentThreeDTO : childCount.getChildren()) {
+                                    tPedigreeChartParentThreeDTO.setParentId(childCount.getId());
                                     tPedigreeChartParentThreeDTO.setPedigreeChartId(parent.getId());
                                     tPedigreeChartParentThreeDTO.setType(1);
                                     if (tPedigreeChartParentThreeDTO.getStatus()==null){
@@ -158,22 +193,22 @@
                     }
                 }
             }
-            String one1Json = JSON.toJSONString(one);
-            parent.setJson(one1Json);
+            String child = JSON.toJSONString(oneLevel);
+            parent.setJson(child);
             pedigreeChartService.updateById(parent);
             // 新增消息
             TNotice tNotice = new TNotice();
-            List<String> collect = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getUserId, tokenService.getLoginUser().getUserId())
+            List<String> allProjectIds = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getUserId, tokenService.getLoginUser().getUserId())
                     .eq(TProjectTeamStaff::getRoleType, 2)
                     .list().stream().map(TProjectTeamStaff::getTeamId).collect(Collectors.toList());
-            if (!collect.isEmpty()){
-                TProjectTeam team = projectTeamService.lambdaQuery().in(TProjectTeam::getId, collect)
+            if (!allProjectIds.isEmpty()){
+                TProjectTeam team = projectTeamService.lambdaQuery().in(TProjectTeam::getId, allProjectIds)
                         .eq(TProjectTeam::getStatus, 1)
                         .orderByDesc(BaseModel::getCreateTime).last("limit 1").one();
-                TProjectTeamStaff one1 = projectTeamStaffService.lambdaQuery()
+                TProjectTeamStaff projectTeamStaff = projectTeamStaffService.lambdaQuery()
                         .eq(TProjectTeamStaff::getTeamId, team.getId()).eq(TProjectTeamStaff::getRoleType, 2).one();
                 tNotice.setCommitId(tokenService.getLoginUser().getUserId()+"");
-                tNotice.setUserId(one1.getUserId());
+                tNotice.setUserId(projectTeamStaff.getUserId());
                 tNotice.setStatus(1);
                 tNotice.setNoticeContent("菌种实验员新增【1】条【菌种传代生产谱系图】操作,等待您签字确认;");
                 tNotice.setDataId(parent.getId());
@@ -192,7 +227,6 @@
     private TNoticeService noticeService;
     /**
      */
-    //@PreAuthorize("@ss.hasPermi('system:pedigreeChart:addProgenitor')")
     @Log(title = "谱系图-编辑谱系图-编辑谱系图", businessType = BusinessType.UPDATE)
     @ApiOperation(value = "编辑谱系图-编辑谱系图",response = TPedigreeChartParentAllDTO.class)
     @PostMapping(value = "/api/t-pedigree-chart/editProgenitor")
@@ -204,8 +238,8 @@
         TPedigreeChartParentAllDTO dto = JSON.parseObject(param, TPedigreeChartParentAllDTO.class);
         TPedigreeChart parent = dto.getParent();
         if (!dto.getOne().isEmpty()){
-            String one1Json = JSON.toJSONString(dto.getOne().get(0));
-            parent.setJson(one1Json);
+            String child = JSON.toJSONString(dto.getOne().get(0));
+            parent.setJson(child);
         }
         pedigreeChartService.updateById(parent);
 //        pedigreeChartDetailService.remove(new LambdaQueryWrapper<TPedigreeChartDetail>()
@@ -362,36 +396,36 @@
             // 祖代/母代
             TPedigreeChartParentOneDTO tPedigreeChartParentOneDTO = new TPedigreeChartParentOneDTO();
             BeanUtils.copyProperties(pedigreeChartDetail,tPedigreeChartParentOneDTO);
-            TPedigreeChartDetail pedigreeChartDetail1 = details.stream().filter(e -> e.getParentId().equals(tPedigreeChartParentOneDTO.getId())
+            TPedigreeChartDetail childCount = details.stream().filter(e -> e.getParentId().equals(tPedigreeChartParentOneDTO.getId())
                     && e.getType() == 2).findFirst().orElse(null);
             // 传代计划数
-            if (pedigreeChartDetail1!=null){
+            if (childCount!=null){
                 TPedigreeChartParentOneCountDTO tPedigreeChartParentOneCountDTO = new TPedigreeChartParentOneCountDTO();
                 List<TPedigreeChartParentOneCountDTO> tPedigreeChartParentOneCountDTOS = new ArrayList<>();
 
-                BeanUtils.copyProperties(pedigreeChartDetail1,tPedigreeChartParentOneCountDTO);
+                BeanUtils.copyProperties(childCount,tPedigreeChartParentOneCountDTO);
                 tPedigreeChartParentOneCountDTO.setParent(pedigreeChartDetail);
                 // 祖代母代传代数
-                List<TPedigreeChartDetail> collect = details.stream().filter(e -> e.getParentId().equals(tPedigreeChartParentOneCountDTO.getId())
+                List<TPedigreeChartDetail> childs = details.stream().filter(e -> e.getParentId().equals(tPedigreeChartParentOneCountDTO.getId())
                         && e.getType() == 1).collect(Collectors.toList());
                 List<TPedigreeChartParentTwoDTO> tPedigreeChartParentTwoDTOS = new ArrayList<>();
                 List<TPedigreeChartParentThreeDTO> tPedigreeChartParentThreeDTOS = new ArrayList<>();
-                for (TPedigreeChartDetail tPedigreeChartDetail : collect) {
+                for (TPedigreeChartDetail tPedigreeChartDetail : childs) {
                     TPedigreeChartParentTwoDTO tPedigreeChartParentTwoDTO = new TPedigreeChartParentTwoDTO();
                     BeanUtils.copyProperties(tPedigreeChartDetail,tPedigreeChartParentTwoDTO);
-                    tPedigreeChartParentTwoDTO.setParent(pedigreeChartDetail1);
-                    TPedigreeChartDetail pedigreeChartDetail2 = details.stream().filter(e -> e.getParentId().equals(tPedigreeChartParentTwoDTO.getId())
+                    tPedigreeChartParentTwoDTO.setParent(childCount);
+                    TPedigreeChartDetail childCountChild = details.stream().filter(e -> e.getParentId().equals(tPedigreeChartParentTwoDTO.getId())
                             && e.getType() == 2).findFirst().orElse(null);
-                    if (pedigreeChartDetail2!=null){
+                    if (childCountChild!=null){
                         ArrayList<TPedigreeChartParentTwoCountDTO> tPedigreeChartParentTwoCountDTOS = new ArrayList<>();
                         TPedigreeChartParentTwoCountDTO tPedigreeChartParentTwoCountDTO = new TPedigreeChartParentTwoCountDTO();
-                        BeanUtils.copyProperties(pedigreeChartDetail2,tPedigreeChartParentTwoCountDTO);
-                        List<TPedigreeChartDetail> collect1 = details.stream().filter(e -> e.getParentId().equals(tPedigreeChartParentTwoCountDTO.getId())
+                        BeanUtils.copyProperties(childCountChild,tPedigreeChartParentTwoCountDTO);
+                        List<TPedigreeChartDetail> childChilds = details.stream().filter(e -> e.getParentId().equals(tPedigreeChartParentTwoCountDTO.getId())
                                 && e.getType() == 1).collect(Collectors.toList());
-                        for (TPedigreeChartDetail chartDetail : collect1) {
+                        for (TPedigreeChartDetail chartDetail : childChilds) {
                             TPedigreeChartParentThreeDTO tPedigreeChartParentThreeDTO = new TPedigreeChartParentThreeDTO();
                             BeanUtils.copyProperties(chartDetail,tPedigreeChartParentThreeDTO);
-                            tPedigreeChartParentThreeDTO.setParent(pedigreeChartDetail2);
+                            tPedigreeChartParentThreeDTO.setParent(childCountChild);
                             tPedigreeChartParentThreeDTOS.add(tPedigreeChartParentThreeDTO);
                         }
                         tPedigreeChartParentTwoCountDTO.setChildren(tPedigreeChartParentThreeDTOS);
@@ -413,7 +447,6 @@
     /**
      * 谱系图-菌种传代生产谱系图详情-菌种详情
      */
-    //@PreAuthorize("@ss.hasPermi('system:pedigreeChart:strainInfo')")
     @ApiOperation(value = "谱系图-菌种传代生产谱系图详情-菌种详情")
     @GetMapping(value = "/api/t-pedigree-chart/strainInfo")
     public R strainInfo(@RequestParam String id) {
@@ -437,9 +470,9 @@
         pedigreeChartDetail1.setVaccinateId(tokenService.getLoginUser().getUserId()+"");
         pedigreeChartDetail1.setVaccinateTime(LocalDateTime.now());
         pedigreeChartDetail1.setVaccinateSignature(dto.getVaccinateSignature());
-        TPedigreeChartDetail byId = pedigreeChartDetailService.getById(dto.getParentId());
+        TPedigreeChartDetail tPedigreeChartDetail = pedigreeChartDetailService.getById(dto.getParentId());
         pedigreeChartDetail1.setGenerationCount(dto.getGenerationCount());
-        pedigreeChartDetail1.setPedigreeChartId(byId.getPedigreeChartId());
+        pedigreeChartDetail1.setPedigreeChartId(tPedigreeChartDetail.getPedigreeChartId());
         pedigreeChartDetail1.setType(2);
         pedigreeChartDetailService.save(pedigreeChartDetail1);
         return R.ok();
@@ -464,15 +497,6 @@
         pedigreeChartDetailService.updateById(pedigreeChartDetail);
         return R.ok();
     }
-    /**
-     * 谱系图-代确认入库菌种列表
-     */
-    //@PreAuthorize("@ss.hasPermi('system:pedigreeChart:listConfirm')")
-//    @ApiOperation(value = "谱系图-代确认入库菌种列表",response = TPedigreeChartConfirmQuery.class)
-//    @GetMapping(value = "/api/t-pedigree-chart/listConfirm")
-//    public R<PageInfo<TPedigreeChartConfirmVO>> listConfirm(@RequestBody String param) {
-//        TPedigreeChartConfirmQuery query = JSON.parseObject(param, TPedigreeChartConfirmQuery.class);
-//        return R.ok(pedigreeChartService.listConfirm(query));
-//    }
+
 }
 
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TProjectGroupController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TProjectGroupController.java
index dc1902a..1051b0a 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TProjectGroupController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TProjectGroupController.java
@@ -60,6 +60,12 @@
         TProjectTeamQuery query = JSON.parseObject(param, TProjectTeamQuery.class);
         return R.ok(projectTeamService.pageList(query));
     }
+    @ApiOperation(value = "新增报告-获取项目组分页列表")
+    @PostMapping(value = "/api/t_project_team/pageList1")
+    public R<PageInfo<TProjectTeamVO>> pageList1(@RequestBody String param) {
+        TProjectTeamQuery query = JSON.parseObject(param, TProjectTeamQuery.class);
+        return R.ok(projectTeamService.pageList(query));
+    }
 
     /**
      * 添加项目组管理
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TStrainReportController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TStrainReportController.java
index 015ac4f..0042752 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TStrainReportController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TStrainReportController.java
@@ -81,7 +81,6 @@
         query.setProjectIds(projectIds);
         return R.ok(strainReportService.pageListAll(query));
     }
-    //@PreAuthorize("@ss.hasPermi('system:strainReport:list')")
     @ApiOperation(value = "获取菌种报告库操作评定分页列表",tags = "菌种报告库操作评定-菌种实验员",response = TStrainReportQuery.class)
     @PostMapping(value = "/api/t-strain-report/pageList")
     public R<PageInfo<TStrainReportVO>> pageList(@RequestBody String param) {
@@ -99,6 +98,8 @@
             List<SysUser> sysUser1 = sysUserService.selectUserByUserNameLike(query.getEvaluateName());
             if (sysUser1.isEmpty()){
                 strings.add("0");
+                query.setEvaluateId(strings);
+
             }else{
                 strings = sysUser1.stream().map(SysUser::getUserId).map(String::valueOf).collect(Collectors.toList());
                 query.setEvaluateId(strings);
@@ -114,20 +115,21 @@
     public R<TStrainReportDetailVO> getDetailById(@RequestParam String id) {
         TStrainReportDetailVO tStrainReportDetailVO = new TStrainReportDetailVO();
         TStrainReport strainReport = strainReportService.getById(id);
-        TStrainReportDetail one = strainReportDetailService.getOne(new LambdaQueryWrapper<TStrainReportDetail>()
+        TStrainReportDetail strainReportDetail = strainReportDetailService.getOne(new LambdaQueryWrapper<TStrainReportDetail>()
                 .eq(TStrainReportDetail::getReportId, strainReport.getId())
                 .eq(TStrainReportDetail::getEvaluateHumanType, 1)
                 .eq(TStrainReportDetail::getExperimentId, tokenService.getLoginUser().getUserId()));
-        if (one!=null){
-            tStrainReportDetailVO.setEvaluate(one.getEvaluate());
-        }
-        BeanUtils.copyProperties(strainReport, tStrainReportDetailVO);
-        if (strainReport.getEvaluateId() != null){
-            SysUser sysUser = sysUserService.selectUserById(Long.valueOf(strainReport.getEvaluateId()));
-            if (sysUser != null){
-                tStrainReportDetailVO.setEvaluateName(sysUser.getNickName());
+        if (strainReportDetail!=null){
+            tStrainReportDetailVO.setEvaluate(strainReportDetail.getEvaluate());
+            if (StringUtils.hasLength(strainReportDetail.getEvaluateId())){
+                SysUser sysUser = sysUserService.selectUserById(Long.valueOf(strainReportDetail.getEvaluateId()));
+                if (sysUser != null){
+                    tStrainReportDetailVO.setEvaluateName(sysUser.getNickName());
+                }
             }
         }
+        BeanUtils.copyProperties(strainReport, tStrainReportDetailVO);
+
         return R.ok(tStrainReportDetailVO);
     }
     //@PreAuthorize("@ss.hasPermi('system:strainReportProject:pageListProject')")
@@ -139,19 +141,30 @@
             query.setStartTime(query.getTime().split(" - ")[0]);
             query.setEndTime(query.getTime().split(" - ")[1]);
         }
-        LoginUser loginUser = tokenService.getLoginUser();
-        SysUser sysUser = sysUserService.selectUserById(loginUser.getUserId());
-        List<String> projectIds = new ArrayList<>();
-        if (!sysUser.getRoleType().equals("1")){
-            // 查询和自己相关的项目组id
-            List<String> collect = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getUserId, sysUser.getUserId()).list()
-                    .stream().map(TProjectTeamStaff::getTeamId).collect(Collectors.toList());
-            if (collect.isEmpty()){
-                collect.add("0");
+        SysUser sysUser = sysUserService.selectUserById(tokenService.getLoginUser().getUserId());
+        if (sysUser.getRoleType().equals("2")){
+            List<String> allProjectIds = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getUserId, tokenService.getLoginUser().getUserId())
+                    .list().stream().map(TProjectTeamStaff::getTeamId).collect(Collectors.toList());
+            if (!allProjectIds.isEmpty()){                List<String> projectIds = projectTeamService.lambdaQuery().in(TProjectTeam::getId, allProjectIds)
+                        .list().stream().map(TProjectTeam::getId).collect(Collectors.toList());
+
+                if (projectIds.isEmpty()){
+                    return R.ok(new PageInfo<>());
+                }
+                query.setProjectIds(projectIds);
             }
-            projectIds = collect;
+        }else if (!sysUser.getRoleType().equals("1")){
+            List<String> allProjectIds = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getUserId, tokenService.getLoginUser().getUserId())
+                    .list().stream().map(TProjectTeamStaff::getTeamId).collect(Collectors.toList());
+            if (!allProjectIds.isEmpty()){                List<String> projectIds = projectTeamService.lambdaQuery().in(TProjectTeam::getId, allProjectIds)
+                        .eq(TProjectTeam::getStatus, 1).list().stream().map(TProjectTeam::getId).collect(Collectors.toList());
+
+                if (projectIds.isEmpty()){
+                    return R.ok(new PageInfo<>());
+                }
+                query.setProjectIds(projectIds);
+            }
         }
-        query.setProjectIds(projectIds);
         return R.ok(strainReportService.pageListProject(query));
     }
 
@@ -166,10 +179,10 @@
         SysUser sysUser = sysUserService.selectUserById(loginUser.getUserId());
         List<TStrainReport> tStrainReports = strainReportService.list(new LambdaQueryWrapper<TStrainReport>()
                 .eq(TStrainReport::getStatus,3).eq(TStrainReport::getProjectId,id));
-        List<String> collect7 = tStrainReports.stream().map(TStrainReport::getId).collect(Collectors.toList());
-        if (collect7.isEmpty())collect7.add("0");
+        List<String> strainReportIds = tStrainReports.stream().map(TStrainReport::getId).collect(Collectors.toList());
+        if (strainReportIds.isEmpty())strainReportIds.add("0");
         List<TStrainReportDetail> tStrainReportDetails = strainReportDetailService
-                .list(new LambdaQueryWrapper<TStrainReportDetail>().in(TStrainReportDetail::getReportId,collect7)
+                .list(new LambdaQueryWrapper<TStrainReportDetail>().in(TStrainReportDetail::getReportId,strainReportIds)
                         .orderByDesc(TStrainReportDetail::getCreateTime));
         BigDecimal sum = new BigDecimal("0");
         BigDecimal sum1 = new BigDecimal("0");
@@ -177,26 +190,26 @@
         Integer temp = 0;
         for (TStrainReport tStrainReport : tStrainReports) {
 
-            List<TStrainReportDetail> collect1 = tStrainReportDetails.stream()
+            List<TStrainReportDetail> tStrainReportDetails1 = tStrainReportDetails.stream()
                     .filter(e -> e.getReportId().equals(tStrainReport.getId())&&
                             e.getEvaluateHumanType()==1).collect(Collectors.toList());
-            List<TStrainReportDetail> collect2 = tStrainReportDetails.stream()
+            List<TStrainReportDetail> tStrainReportDetails2 = tStrainReportDetails.stream()
                     .filter(e -> e.getReportId().equals(tStrainReport.getId())&&
                             e.getEvaluateHumanType()==2).collect(Collectors.toList());
             // 菌种工程积分
-            sum1 = collect2.stream()
+            sum1 = tStrainReportDetails2.stream()
                     .filter(e -> e.getEvaluateHumanType().equals(1))
                     .map(TStrainReportDetail::getEvaluateTotal)
                     .reduce(BigDecimal::add)
                     .orElse(BigDecimal.ZERO);
             // 菌种实验员积分
-            sum2 = collect1.stream()
+            sum2 = tStrainReportDetails1.stream()
                     .filter(e -> e.getEvaluateHumanType().equals(2))
                     .map(TStrainReportDetail::getEvaluateTotal)
                     .reduce(BigDecimal::add)
                     .orElse(BigDecimal.ZERO);
-            List<TStrainReportDetail> collect3 = tStrainReportDetails.stream().filter(e -> e.getReportType() == 1).collect(Collectors.toList());
-            for (TStrainReportDetail tStrainReportDetail : collect3) {
+            List<TStrainReportDetail> tStrainReportDetails3 = tStrainReportDetails.stream().filter(e -> e.getReportType() == 1).collect(Collectors.toList());
+            for (TStrainReportDetail tStrainReportDetail : tStrainReportDetails3) {
                 // 根据评定等级统计失败次数
                 if (StringUtils.hasLength(tStrainReportDetail.getEvaluate())&&  tStrainReportDetail.getEvaluate().split(",").length>=5){
                     if (tStrainReportDetail.getEvaluate().split(",")[4].equals("2")){
@@ -211,18 +224,14 @@
 
 
         tStrainReportDetailVO.setFailCount(temp);
-        List<TStrainReport> collect1 = tStrainReports.stream().filter(e -> e.getProjectId().equals(byId.getId())).collect(Collectors.toList());
-        if (!collect1.isEmpty()){
-            tStrainReportDetailVO.setEndTime(collect1.get(0).getEvaluateTime());
+        List<TStrainReport> strainReportIdsByProjectId = tStrainReports.stream().filter(e -> e.getProjectId().equals(byId.getId())).collect(Collectors.toList());
+        if (!strainReportIdsByProjectId.isEmpty()){
+            tStrainReportDetailVO.setEndTime(strainReportIdsByProjectId.get(0).getEvaluateTime());
         }
         tStrainReportDetailVO.setStartTime(byId.getCreateTime());
-        TProjectTeamStaff one1 = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getTeamId, byId.getId())
+        TProjectTeamStaff projectTeamStaff = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getTeamId, byId.getId())
                 .eq(TProjectTeamStaff::getRoleType, 2).one();
-
-        List<String> strings = new ArrayList<>();
         List<TStrainReportDetailExperimentVO> tStrainReportDetailExperimentVOS = new ArrayList<>();
-
-
         if (sysUser.getRoleType().equals("4")){
             TStrainReportDetailExperimentVO tStrainReportDetailExperimentVO = new TStrainReportDetailExperimentVO();
             tStrainReportDetailExperimentVO.setUserName(sysUser.getNickName());
@@ -234,17 +243,17 @@
                     .orElse(BigDecimal.ZERO);
             tStrainReportDetailExperimentVO.setHandleIntegral(handleIntegral);
 
-            List<TStrainReportDetail> collect = tStrainReportDetails.stream().filter(e -> e.getExperimentId().equals(sysUser.getUserId() + "")).collect(Collectors.toList());
-            if (!collect.isEmpty()){
-                tStrainReportDetailExperimentVO.setHandleStartTime(collect.get(0).getCreateTime());
+            List<TStrainReportDetail> strainReportDetails = tStrainReportDetails.stream().filter(e -> e.getExperimentId().equals(sysUser.getUserId() + "")).collect(Collectors.toList());
+            if (!strainReportDetails.isEmpty()){
+                tStrainReportDetailExperimentVO.setHandleStartTime(strainReportDetails.get(0).getCreateTime());
             }
             tStrainReportDetailExperimentVOS.add(tStrainReportDetailExperimentVO);
             tStrainReportDetailVO.setDetailExperimentVOS(tStrainReportDetailExperimentVOS);
         }else{
-            List<TStrainReportDetail> collect6 = tStrainReportDetails.stream()
+            List<TStrainReportDetail> strainReportDetails = tStrainReportDetails.stream()
                     .filter(e -> e.getEvaluateHumanType() == 2&&
-                            e.getExperimentId().equals(one1.getUserId())).collect(Collectors.toList());
-            if (collect6.isEmpty()){
+                            e.getExperimentId().equals(projectTeamStaff.getUserId())).collect(Collectors.toList());
+            if (strainReportDetails.isEmpty()){
                 TStrainReportDetailEngineerVO tStrainReportDetailEngineerVO = new TStrainReportDetailEngineerVO();
                 tStrainReportDetailEngineerVO.setInnovateCount(0);
                 tStrainReportDetailEngineerVO.setInnovateIntegral(BigDecimal.ZERO);
@@ -280,31 +289,31 @@
                 tStrainReportDetailVO.setDetailExperimentVOS(tStrainReportDetailExperimentVOS1);
 
             }else{
-                List<TStrainReportDetail> collect2 = collect6.stream()
-                        .filter(e -> e.getEvaluateHumanType().equals(2) && e.getExperimentId().equals(one1.getUserId())).collect(Collectors.toList());
+                List<TStrainReportDetail> reportDetails = strainReportDetails.stream()
+                        .filter(e -> e.getEvaluateHumanType().equals(2) && e.getExperimentId().equals(projectTeamStaff.getUserId())).collect(Collectors.toList());
 
                 TStrainReportDetailEngineerVO tStrainReportDetailEngineerVO = new TStrainReportDetailEngineerVO();
-                tStrainReportDetailEngineerVO.setInnovateCount((int)collect2.stream().filter(e->e.getEvaluateType().equals(1)).count());
-                tStrainReportDetailEngineerVO.setInnovateIntegral(collect2.stream().filter(e->e.getEvaluateType().equals(1)).map(TStrainReportDetail::getEvaluateTotal).reduce(BigDecimal::add).orElse(BigDecimal.ZERO));
-                List<TStrainReportDetail> collect3 = collect2.stream().filter(e -> e.getEvaluateType().equals(1)).collect(Collectors.toList());
+                tStrainReportDetailEngineerVO.setInnovateCount((int)reportDetails.stream().filter(e->e.getEvaluateType()!=null&&e.getEvaluateType().equals(1)).count());
+                tStrainReportDetailEngineerVO.setInnovateIntegral(reportDetails.stream().filter(e->e.getEvaluateType()!=null&&e.getEvaluateType().equals(1)).map(TStrainReportDetail::getEvaluateTotal).reduce(BigDecimal::add).orElse(BigDecimal.ZERO));
+                List<TStrainReportDetail> collect3 = reportDetails.stream().filter(e ->e.getEvaluateType()!=null&& e.getEvaluateType().equals(1)).collect(Collectors.toList());
                 if (!collect3.isEmpty()){
                     tStrainReportDetailEngineerVO.setInnovateStartTime(collect3.get(collect3.size()-1).getCreateTime());
                 }
                 tStrainReportDetailEngineerVO.setInnovateEndTime(byId.getCreateTime());
 
-                tStrainReportDetailEngineerVO.setRegulationCount((int)collect2.stream().filter(e->e.getEvaluateType().equals(2)).count());
-                tStrainReportDetailEngineerVO.setRegulationIntegral(collect2.stream().filter(e->e.getEvaluateType().equals(2)).map(TStrainReportDetail::getEvaluateTotal).reduce(BigDecimal::add).orElse(BigDecimal.ZERO));
-                List<TStrainReportDetail> collect4 = collect2.stream().filter(e -> e.getEvaluateType().equals(2)).collect(Collectors.toList());
+                tStrainReportDetailEngineerVO.setRegulationCount((int)reportDetails.stream().filter(e->e.getEvaluateType()!=null&&e.getEvaluateType().equals(2)).count());
+                tStrainReportDetailEngineerVO.setRegulationIntegral(reportDetails.stream().filter(e->e.getEvaluateType()!=null&&e.getEvaluateType().equals(2)).map(TStrainReportDetail::getEvaluateTotal).reduce(BigDecimal::add).orElse(BigDecimal.ZERO));
+                List<TStrainReportDetail> collect4 = reportDetails.stream().filter(e -> e.getEvaluateType()!=null&&e.getEvaluateType().equals(2)).collect(Collectors.toList());
                 if (!collect4.isEmpty()){
                     tStrainReportDetailEngineerVO.setRegulationStartTime(collect4.get(collect4.size()-1).getCreateTime());
                 }
                 tStrainReportDetailEngineerVO.setRegulationEndTime(byId.getCreateTime());
 
-                tStrainReportDetailEngineerVO.setHandleCount((int)collect2.stream().filter(e->e.getReportType().equals(1)).count());
-                tStrainReportDetailEngineerVO.setHandleIntegral(collect2.stream().filter(e->e.getReportType().equals(1)).map(TStrainReportDetail::getEvaluateTotal).reduce(BigDecimal::add).orElse(BigDecimal.ZERO));
-                List<TStrainReportDetail> collect5 = collect2.stream().filter(e->e.getReportType().equals(1)).collect(Collectors.toList());
-                if (!collect5.isEmpty()){
-                    tStrainReportDetailEngineerVO.setHandleStartTime(collect5.get(collect5.size()-1).getCreateTime());
+                tStrainReportDetailEngineerVO.setHandleCount((int)reportDetails.stream().filter(e->e.getReportType().equals(1)).count());
+                tStrainReportDetailEngineerVO.setHandleIntegral(reportDetails.stream().filter(e->e.getReportType().equals(1)).map(TStrainReportDetail::getEvaluateTotal).reduce(BigDecimal::add).orElse(BigDecimal.ZERO));
+                List<TStrainReportDetail> reportDetailList = reportDetails.stream().filter(e->e.getReportType().equals(1)).collect(Collectors.toList());
+                if (!reportDetailList.isEmpty()){
+                    tStrainReportDetailEngineerVO.setHandleStartTime(reportDetailList.get(reportDetailList.size()-1).getCreateTime());
                 }
                 tStrainReportDetailEngineerVO.setHandleEndTime(byId.getCreateTime());
 
@@ -369,10 +378,10 @@
         if (dto.getIsDraft()==0){
             // 新增消息
             TNotice tNotice = new TNotice();
-            TProjectTeamStaff one = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getTeamId, dto.getProjectId())
+            TProjectTeamStaff projectTeamStaff = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getTeamId, dto.getProjectId())
                     .eq(TProjectTeamStaff::getRoleType, 1).last("limit 1").one();
             tNotice.setCommitId(tokenService.getLoginUser().getUserId()+"");
-            tNotice.setUserId(one.getUserId());
+            tNotice.setUserId(projectTeamStaff.getUserId());
             tNotice.setStatus(1);
             tNotice.setNoticeContent("您有【1】条【菌种报告】【报告库"+dto.getReportType()+"】等待审核");
             tNotice.setDataId(dto.getId());
@@ -380,11 +389,11 @@
             noticeService.save(tNotice);
             // 新增消息
             TNotice tNotice1 = new TNotice();
-            TProjectTeamStaff one1 = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getTeamId, dto.getProjectId())
+            TProjectTeamStaff tProjectTeamStaff = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getTeamId, dto.getProjectId())
                     .eq(TProjectTeamStaff::getRoleType, 3).last("limit 1").one();
 
             tNotice1.setCommitId(tokenService.getLoginUser().getUserId()+"");
-            tNotice1.setUserId(one1.getUserId());
+            tNotice1.setUserId(tProjectTeamStaff.getUserId());
             tNotice1.setStatus(1);
             tNotice1.setNoticeContent("您有【1】条菌种库操作菌种工程师已评定;");
             tNotice1.setDataId(dto.getId());
@@ -416,11 +425,11 @@
         if (dto.getIsDraft()==0){
             // 新增消息
             TNotice tNotice = new TNotice();
-            TProjectTeamStaff one = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getTeamId, dto.getProjectId())
+            TProjectTeamStaff projectTeamStaff = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getTeamId, dto.getProjectId())
                     .eq(TProjectTeamStaff::getRoleType, 1).last("limit 1").one();
 
             tNotice.setCommitId(tokenService.getLoginUser().getUserId()+"");
-            tNotice.setUserId(one.getUserId());
+            tNotice.setUserId(projectTeamStaff.getUserId());
             tNotice.setStatus(1);
             tNotice.setNoticeContent("您有【1】条【菌种报告】【报告库"+dto.getReportType()+"】等待审核");
             tNotice.setDataId(dto.getId());
@@ -435,8 +444,8 @@
     //@PreAuthorize("@ss.hasPermi('system:strainReport:cancelReport')")
     @Log(title = "菌种库报告管理-菌种工程师撤销审批", businessType = BusinessType.UPDATE)
     @ApiOperation(value = "菌种工程师撤销审批",tags = "菌种报告库")
-    @PostMapping(value = "/api/t-strain-report/cancelReport")
-    public R<Boolean> cancelReport(@RequestBody String id) {
+    @GetMapping(value = "/open/t-strain-report/cancelReport")
+    public R<Boolean> cancelReport(@RequestParam String id) {
         TStrainReport strainReport = strainReportService.getById(id);
         strainReport.setIsDraft(1);
         strainReport.setStatus(1);
@@ -464,9 +473,6 @@
         strainReportService.updateById(strainReport);
         // 新增消息
         TNotice tNotice = new TNotice();
-        TProjectTeamStaff one = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getTeamId, strainReport.getProjectId())
-                .eq(TProjectTeamStaff::getRoleType, 1).last("limit 1").one();
-
         tNotice.setCommitId(tokenService.getLoginUser().getUserId()+"");
         tNotice.setUserId(tokenService.getLoginUser().getUserId()+"");
         tNotice.setStatus(1);
@@ -476,18 +482,18 @@
         noticeService.save(tNotice);
 
             // 新增消息
-            TNotice tNotice1 = new TNotice();
-            TProjectTeamStaff one1 = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getTeamId, strainReport.getProjectId())
+            TNotice notice = new TNotice();
+            TProjectTeamStaff tProjectTeamStaff = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getTeamId, strainReport.getProjectId())
                     .eq(TProjectTeamStaff::getRoleType, 1).last("limit 1").one();
 
-            tNotice1.setCommitId(tokenService.getLoginUser().getUserId()+"");
-            tNotice1.setUserId(one1.getUserId());
-            tNotice1.setStatus(1);
+            notice.setCommitId(tokenService.getLoginUser().getUserId()+"");
+            notice.setUserId(tProjectTeamStaff.getUserId());
+            notice.setStatus(1);
             String temp=dto.getStatus()==2?"通过":"驳回";
-            tNotice1.setNoticeContent("您有【1】条【菌种报告】【报告库"+strainReport.getReportType()+"】菌种审批人已操作【" +temp+"】");
-            tNotice1.setDataId(dto.getId());
-            tNotice1.setNoticeType(7);
-            noticeService.save(tNotice1);
+            notice.setNoticeContent("您有【1】条【菌种报告】【报告库"+strainReport.getReportType()+"】菌种审批人已操作【" +temp+"】");
+            notice.setDataId(dto.getId());
+            notice.setNoticeType(7);
+            noticeService.save(notice);
         return R.ok();
     }
     /**
@@ -520,16 +526,16 @@
         tStrainReportDetail.setEvaluateType(dto.getEvaluateType());
         strainReportDetailService.save(tStrainReportDetail);
         // 新增消息
-        TNotice tNotice1 = new TNotice();
-        TProjectTeamStaff one1 = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getTeamId, strainReport.getProjectId())
+        TNotice notice = new TNotice();
+        TProjectTeamStaff projectTeamStaff = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getTeamId, strainReport.getProjectId())
                 .eq(TProjectTeamStaff::getRoleType, 1).last("limit 1").one();
-        tNotice1.setCommitId(tokenService.getLoginUser().getUserId()+"");
-        tNotice1.setUserId(one1.getUserId());
-        tNotice1.setStatus(1);
-        tNotice1.setNoticeContent("您有【1】条【菌种报告】【报告库"+strainReport.getReportType()+"】菌种审批人已评定");
-        tNotice1.setDataId(dto.getId());
-        tNotice1.setNoticeType(8);
-        noticeService.save(tNotice1);
+        notice.setCommitId(tokenService.getLoginUser().getUserId()+"");
+        notice.setUserId(projectTeamStaff.getUserId());
+        notice.setStatus(1);
+        notice.setNoticeContent("您有【1】条【菌种报告】【报告库"+strainReport.getReportType()+"】菌种审批人已评定");
+        notice.setDataId(dto.getId());
+        notice.setNoticeType(8);
+        noticeService.save(notice);
         return R.ok();
     }
     /**
@@ -558,31 +564,31 @@
             }
         }
         BeanUtils.copyProperties(strainReport, tStrainReportDetailVO);
-        TProjectTeam byId = projectTeamService.getById(strainReport.getProjectId());
-        List<TProjectTeamStaff> list = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getTeamId, byId.getId()).list();
-        StringBuilder stringBuilder = new StringBuilder();
+        TProjectTeam projectTeam = projectTeamService.getById(strainReport.getProjectId());
+        List<TProjectTeamStaff> list = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getTeamId, projectTeam.getId()).list();
+        StringBuilder staffNames = new StringBuilder();
         for (TProjectTeamStaff tProjectTeamStaff : list) {
             SysUser sysUser = sysUserService.selectUserById(Long.valueOf(tProjectTeamStaff.getUserId()));
             if (sysUser!=null){
-                stringBuilder.append(sysUser.getNickName()).append(",");
+                staffNames.append(sysUser.getNickName()).append(",");
             }
         }
-        if (StringUtils.hasLength(stringBuilder.toString())){
-            byId.setStaff(stringBuilder.substring(0, stringBuilder.toString().length() - 1));
+        if (StringUtils.hasLength(staffNames.toString())){
+            projectTeam.setStaff(staffNames.substring(0, staffNames.toString().length() - 1));
         }
-        tStrainReportDetailVO.setProjectTeam(byId);
-        TStrainReportDetail one = strainReportDetailService.lambdaQuery().eq(TStrainReportDetail::getReportId, id)
+        tStrainReportDetailVO.setProjectTeam(projectTeam);
+        TStrainReportDetail strainReportDetail = strainReportDetailService.lambdaQuery().eq(TStrainReportDetail::getReportId, id)
                 .eq(TStrainReportDetail::getEvaluateHumanType, 1).one();
-        tStrainReportDetailVO.setEvaluate(one.getEvaluate());
-        tStrainReportDetailVO.setEvaluateTotal(one.getEvaluateTotal());
+        tStrainReportDetailVO.setEvaluate(strainReportDetail.getEvaluate());
+        tStrainReportDetailVO.setEvaluateTotal(strainReportDetail.getEvaluateTotal());
         if (strainReport.getEvaluateId()!=null){
             tStrainReportDetailVO.setEvaluateName(sysUserService.selectUserById(Long.valueOf(strainReport.getEvaluateId())).getNickName());
         }
-        if (one.getExperimentId()!=null){
-            SysUser sysUser = sysUserService.selectUserById(Long.valueOf(one.getExperimentId()));
+        if (strainReportDetail.getExperimentId()!=null){
+            SysUser sysUser = sysUserService.selectUserById(Long.valueOf(strainReportDetail.getExperimentId()));
             tStrainReportDetailVO.setExperimentName(sysUser.getNickName());
             tStrainReportDetailVO.setExperimentAvatar(sysUser.getAvatar());
-            tStrainReportDetailVO.setExperimentId(one.getExperimentId());
+            tStrainReportDetailVO.setExperimentId(strainReportDetail.getExperimentId());
         }
         tStrainReportDetailVO.setReportType(strainReport.getReportType());
         if (strainReport.getCommitId()!=null){
@@ -599,15 +605,15 @@
         TStrainReportDetailVO tStrainReportDetailVO = new TStrainReportDetailVO();
         TStrainReport strainReport = strainReportService.getById(id);
         BeanUtils.copyProperties(strainReport, tStrainReportDetailVO);
-        TProjectTeam byId = projectTeamService.getById(strainReport.getProjectId());
-        tStrainReportDetailVO.setProjectTeam(byId);
-        TStrainReportDetail one = strainReportDetailService.lambdaQuery().eq(TStrainReportDetail::getReportId, id)
+        TProjectTeam projectTeam = projectTeamService.getById(strainReport.getProjectId());
+        tStrainReportDetailVO.setProjectTeam(projectTeam);
+        TStrainReportDetail strainReportDetail = strainReportDetailService.lambdaQuery().eq(TStrainReportDetail::getReportId, id)
                 .eq(TStrainReportDetail::getEvaluateHumanType, 2).one();
-        tStrainReportDetailVO.setEvaluate(one.getEvaluate());
-        tStrainReportDetailVO.setEvaluateTotal(one.getEvaluateTotal());
+        tStrainReportDetailVO.setEvaluate(strainReportDetail.getEvaluate());
+        tStrainReportDetailVO.setEvaluateTotal(strainReportDetail.getEvaluateTotal());
         tStrainReportDetailVO.setEvaluateName(sysUserService.selectUserById(Long.valueOf(strainReport.getEvaluateId())).getNickName());
-        tStrainReportDetailVO.setExperimentName(sysUserService.selectUserById(Long.valueOf(one.getExperimentId())).getNickName());
-        tStrainReportDetailVO.setExperimentId(one.getExperimentId());
+        tStrainReportDetailVO.setExperimentName(sysUserService.selectUserById(Long.valueOf(strainReportDetail.getExperimentId())).getNickName());
+        tStrainReportDetailVO.setExperimentId(strainReportDetail.getExperimentId());
         tStrainReportDetailVO.setReportType(strainReport.getReportType());
         tStrainReportDetailVO.setCommitName(sysUserService.selectUserById(Long.valueOf(strainReport.getCommitId())).getNickName());
         return R.ok(tStrainReportDetailVO);
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TStrainValidationDataController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TStrainValidationDataController.java
index 5174df0..3b8bac4 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TStrainValidationDataController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TStrainValidationDataController.java
@@ -72,35 +72,46 @@
         if (StringUtils.hasLength(dto.getHandleSignature())){
             dto.setHandleTime(LocalDateTime.now());
         }
+        List<String> projectIds = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getUserId, tokenService.getLoginUser().getUserId())
+                .list().stream().map(TProjectTeamStaff::getTeamId).collect(Collectors.toList());
+        if (!projectIds.isEmpty()){
+            TProjectTeam projectTeam = projectTeamService.lambdaQuery().in(TProjectTeam::getId, projectIds)
+                    .eq(TProjectTeam::getStatus, 1)
+                    .orderByDesc(BaseModel::getCreateTime)
+                    .last("limit 1").one();
+            dto.setProjectId(projectTeam.getId());
+        }
         strainValidationDataService.save(dto);
         if (dto.getIsDraft()==0){
             dto.setStatus(1);
+        }else{
+            dto.setStatus(3);
         }
         if (dto.getStatus()==1){
             // 新增消息
             TNotice tNotice = new TNotice();
-            List<String> collect = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getUserId, tokenService.getLoginUser().getUserId())
+            List<String> allProjectIds = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getUserId, tokenService.getLoginUser().getUserId())
                     .eq(TProjectTeamStaff::getRoleType, 3)
                     .list().stream().map(TProjectTeamStaff::getTeamId).collect(Collectors.toList());
-            TProjectTeam one = projectTeamService.lambdaQuery().in(TProjectTeam::getId, collect)
+            TProjectTeam projectTeam = projectTeamService.lambdaQuery().in(TProjectTeam::getId, allProjectIds)
                     .eq(TProjectTeam::getStatus, 1)
                     .orderByDesc(BaseModel::getCreateTime).last("limit 1").one();
-            TProjectTeamStaff one1 = projectTeamStaffService.lambdaQuery()
-                    .eq(TProjectTeamStaff::getTeamId, one.getId()).eq(TProjectTeamStaff::getRoleType, 2).one();
-            tNotice.setUserId(one1.getUserId());
+            TProjectTeamStaff tProjectTeamStaff = projectTeamStaffService.lambdaQuery()
+                    .eq(TProjectTeamStaff::getTeamId, projectTeam.getId()).eq(TProjectTeamStaff::getRoleType, 2).one();
+            tNotice.setUserId(tProjectTeamStaff.getUserId());
 
             tNotice.setCommitId(tokenService.getLoginUser().getUserId()+"");
             tNotice.setStatus(1);
-            StringBuilder stringBuilder = new StringBuilder();
+            StringBuilder content = new StringBuilder();
             switch (dto.getStrainType()){
                 case 1:
-                    stringBuilder.append( "【原始细胞库验证资料】");
+                    content.append( "【原始细胞库验证资料】");
                     break;
                 case 2:
-                     stringBuilder.append("【主细胞库验证资料】");
+                     content.append("【主细胞库验证资料】");
                     break;
             }
-            tNotice.setNoticeContent("您有【1】条"+stringBuilder+"等待确认;");
+            tNotice.setNoticeContent("您有【1】条"+content+"等待确认;");
             tNotice.setDataId(dto.getId());
             tNotice.setNoticeType(6);
             noticeService.save(tNotice);
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TTrainLibraryController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TTrainLibraryController.java
index 510786a..185522e 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TTrainLibraryController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TTrainLibraryController.java
@@ -61,14 +61,19 @@
     @PostMapping(value = "/api/t-train-library/choiceUserList")
     public R<PageInfo<ChoiceUserVO>> choiceUserList(@RequestBody String param) {
         ChoiceStrainDTO query = JSON.parseObject(param, ChoiceStrainDTO.class);
+        if (query.getRoleType()==2){
+            query.setRoleType(3);
+        }
+        if (query.getRoleType()==1){
+            query.setRoleType(2);
+        }
         List<String> userIds = projectTeamStaffService.lambdaQuery()
-                .eq(TProjectTeamStaff::getRoleType,  query.getRoleType())
+                .eq(TProjectTeamStaff::getRoleType, query.getRoleType() )
                 .eq(TProjectTeamStaff::getTeamId, query.getProjectId()).list().stream().map(TProjectTeamStaff::getUserId).collect(Collectors.toList());
         if (userIds.isEmpty()){
             userIds.add("0");
         }
         query.setUserIds(userIds);
-
         return R.ok(sysUserService.choiceUserList(query));
     }
     /**
@@ -79,20 +84,18 @@
     public R<PageInfo<TProjectTeamVO>> choiceProjectList(@RequestBody String param) {
         LoginUser loginUser = tokenService.getLoginUser();
         SysUser sysUser = sysUserService.selectUserById(loginUser.getUserId());
-        List<String> collect = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getUserId, sysUser.getUserId()).list().stream().map(TProjectTeamStaff::getTeamId).collect(Collectors.toList());
-        if (collect.isEmpty()){
-            collect.add("0");
+        List<String> projectIds = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getUserId, sysUser.getUserId()).list().stream().map(TProjectTeamStaff::getTeamId).collect(Collectors.toList());
+        if (projectIds.isEmpty()){
+            projectIds.add("0");
         }
         ChoiceProjectDTO query = JSON.parseObject(param, ChoiceProjectDTO.class);
-        query.setProjectIds(collect);
+        query.setProjectIds(projectIds);
         return R.ok(projectTeamService.choiceProjectList(query));
     }
-    // 提取为独立方法以提高可读性和复用性
 
     /**
      * 获取菌种库分页列表
      */
-    //@PreAuthorize("@ss.hasPermi('system:trainLibrary:list')")
     @ApiOperation(value = "获取菌种库分页列表",tags = "菌种库管理",response = TTrainLibraryQuery.class)
     @PostMapping(value = "/api/t-train-library/pageList")
     public R<PageInfo<TTrainLibraryVO>> pageList(@RequestBody String param) {
@@ -106,10 +109,10 @@
     @ApiOperation(value = "获取菌种库出入库时间轴列表",tags = "菌种库管理")
     @PostMapping(value = "/api/t-train-library/timeList")
     public R<List<TTrainLibraryWarehousing>> timeList(@RequestParam String id) {
-        List<TTrainLibraryWarehousing> list = tTrainLibraryWarehousingService.lambdaQuery().eq(TTrainLibraryWarehousing::getTrainLibraryId,id)
+        List<TTrainLibraryWarehousing> tTrainLibraryWarehousings = tTrainLibraryWarehousingService.lambdaQuery().eq(TTrainLibraryWarehousing::getTrainLibraryId,id)
                 .orderByDesc(TTrainLibraryWarehousing::getCreateTime).list();
         List<SysUser> sysUsers = sysUserService.selectList();
-        for (TTrainLibraryWarehousing tTrainLibraryWarehousing : list) {
+        for (TTrainLibraryWarehousing tTrainLibraryWarehousing : tTrainLibraryWarehousings) {
             if (tTrainLibraryWarehousing.getHandleId()!=null){
                 SysUser sysUser = sysUsers.stream().filter(e -> e.getUserId().equals(tTrainLibraryWarehousing.getHandleId())).findFirst().orElse(null);
                 if (sysUser!=null){
@@ -123,7 +126,7 @@
                 }
             }
         }
-        return R.ok(list);
+        return R.ok(tTrainLibraryWarehousings);
     }
     @Resource
     private TNoticeService noticeService;
@@ -139,6 +142,15 @@
             return R.fail(401,"登陆失效");
         }
         TTrainLibraryDTO dto = JSON.parseObject(param,TTrainLibraryDTO.class);
+        List<String> projectIds = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getUserId, tokenService.getLoginUser().getUserId())
+                .list().stream().map(TProjectTeamStaff::getTeamId).collect(Collectors.toList());
+        if (!projectIds.isEmpty()){
+            TProjectTeam projectTeam = projectTeamService.lambdaQuery().in(TProjectTeam::getId, projectIds)
+                    .eq(TProjectTeam::getStatus, 1)
+                    .orderByDesc(BaseModel::getCreateTime)
+                    .last("limit 1").one();
+            dto.setProjectId(projectTeam.getId());
+        }
         tTrainLibraryService.save(dto);
         if (dto.getIsDraft()==0){
             // 新增入库记录
@@ -147,34 +159,34 @@
             tTrainLibraryWarehousing.setType(2);
             tTrainLibraryWarehousing.setBoundTime(LocalDateTime.now());
             tTrainLibraryWarehousing.setHandleId(tokenService.getLoginUser().getUserId());
-            tTrainLibraryWarehousing.setHandleSignature(dto.getHandleSignature());
+            tTrainLibraryWarehousing.setHandleSignature(dto.getSignature());
             tTrainLibraryWarehousingService.save(tTrainLibraryWarehousing);
             // 新增消息
             TNotice tNotice = new TNotice();
-            List<String> collect = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getUserId, tokenService.getLoginUser().getUserId())
-                    .eq(TProjectTeamStaff::getRoleType, 2)
+            List<String> allProjectIds = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getUserId, tokenService.getLoginUser().getUserId())
+                    .eq(TProjectTeamStaff::getRoleType, 3)
                     .list().stream().map(TProjectTeamStaff::getTeamId).collect(Collectors.toList());
-            TProjectTeam one = projectTeamService.lambdaQuery().in(TProjectTeam::getId, collect).eq(TProjectTeam::getStatus, 1)
+            TProjectTeam projectTeam = projectTeamService.lambdaQuery().in(TProjectTeam::getId, allProjectIds).eq(TProjectTeam::getStatus, 1)
                     .orderByDesc(BaseModel::getCreateTime).last("limit 1").one();
-            TProjectTeamStaff one1 = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getTeamId, one.getId()).eq(TProjectTeamStaff::getRoleType, 2).one();
-            tNotice.setUserId(one1.getUserId());
+            TProjectTeamStaff projectTeamStaff = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getTeamId, projectTeam.getId()).eq(TProjectTeamStaff::getRoleType, 2).one();
+            tNotice.setUserId(projectTeamStaff.getUserId());
 
             tNotice.setCommitId(tokenService.getLoginUser().getUserId()+"");
             tNotice.setStatus(1);
-            StringBuilder stringBuilder = new StringBuilder();
+            StringBuilder content = new StringBuilder();
             switch (dto.getType()){
                 case 1:
-                    stringBuilder.append("【原始细胞库】");
+                    content.append("【原始细胞库】");
                     break;
                 case 2:
-                    stringBuilder.append("【主细胞库】");
+                    content.append("【主细胞库】");
                     break;
                 case 3:
-                    stringBuilder.append("【生产细胞库】");
+                    content.append("【生产细胞库】");
                     break;
             }
 
-            tNotice.setNoticeContent("您有【1】条"+stringBuilder+"入库记录等待签字确认;");
+            tNotice.setNoticeContent("您有【1】条"+content+"入库记录等待签字确认;");
             tNotice.setDataId(dto.getId());
             tNotice.setNoticeType(3);
             noticeService.save(tNotice);
@@ -195,10 +207,10 @@
             TTrainLibrary tTrainLibrary = new TTrainLibrary();
             BeanUtils.copyProperties(dto,tTrainLibrary);
             if (i==0){
-                List<String> collect = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getUserId, tokenService.getLoginUser().getUserId())
+                List<String> projectIds = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getUserId, tokenService.getLoginUser().getUserId())
                         .eq(TProjectTeamStaff::getRoleType, 3)
                         .list().stream().map(TProjectTeamStaff::getTeamId).collect(Collectors.toList());
-                if (collect.isEmpty()){
+                if (projectIds.isEmpty()){
                     return R.fail("请先加入项目组");
                 }
                 tTrainLibrary.setStatus(4);
@@ -213,29 +225,29 @@
                 // 新增消息
                 TNotice tNotice = new TNotice();
 
-                TProjectTeam one = projectTeamService.lambdaQuery().in(TProjectTeam::getId, collect)
+                TProjectTeam projectTeam = projectTeamService.lambdaQuery().in(TProjectTeam::getId, projectIds)
                         .eq(TProjectTeam::getStatus, 1)
                         .orderByDesc(BaseModel::getCreateTime).last("limit 1").one();
-                TProjectTeamStaff one1 = projectTeamStaffService.lambdaQuery()
-                        .eq(TProjectTeamStaff::getTeamId, one.getId()).eq(TProjectTeamStaff::getRoleType, 2).one();
-                tNotice.setUserId(one1.getUserId());
+                TProjectTeamStaff tProjectTeamStaff = projectTeamStaffService.lambdaQuery()
+                        .eq(TProjectTeamStaff::getTeamId, projectTeam.getId()).eq(TProjectTeamStaff::getRoleType, 2).one();
+                tNotice.setUserId(tProjectTeamStaff.getUserId());
 
                 tNotice.setCommitId(tokenService.getLoginUser().getUserId()+"");
                 tNotice.setStatus(1);
-                StringBuilder stringBuilder = new StringBuilder();
+                StringBuilder content = new StringBuilder();
                 switch (dto.getType()){
                     case 1:
-                        stringBuilder.append("【原始细胞库】");
+                        content.append("【原始细胞库】");
                         break;
                     case 2:
-                        stringBuilder.append("【主细胞库】");
+                        content.append("【主细胞库】");
                         break;
                     case 3:
-                        stringBuilder.append("【生产细胞库】");
+                        content.append("【生产细胞库】");
                         break;
                 }
 
-                tNotice.setNoticeContent("您有【1】条"+stringBuilder+"入库记录等待签字确认;");
+                tNotice.setNoticeContent("您有【1】条"+content+"入库记录等待签字确认;");
                 tNotice.setDataId(dto.getId());
                 tNotice.setNoticeType(3);
                 noticeService.save(tNotice);
@@ -289,15 +301,15 @@
         }
         TTrainLibraryDetailConfirmDto query = JSON.parseObject(param, TTrainLibraryDetailConfirmDto.class);
         TTrainLibraryWarehousing tTrainLibraryWarehousing = tTrainLibraryWarehousingService.getById(query.getId());
-        TTrainLibrary byId = tTrainLibraryService.getById(tTrainLibraryWarehousing.getTrainLibraryId());
+        TTrainLibrary tTrainLibrary = tTrainLibraryService.getById(tTrainLibraryWarehousing.getTrainLibraryId());
         if (tTrainLibraryWarehousing.getType()==1){
-            byId.setStock(0);
-            byId.setStatus(1);
+            tTrainLibrary.setStock(0);
+            tTrainLibrary.setStatus(1);
         }else{
-            byId.setStock(1);
-            byId.setStatus(3);
+            tTrainLibrary.setStock(1);
+            tTrainLibrary.setStatus(3);
         }
-        tTrainLibraryService.updateById(byId);
+        tTrainLibraryService.updateById(tTrainLibrary);
         tTrainLibraryWarehousing.setPreserveSignature(query.getPreserveSignature());
         tTrainLibraryWarehousing.setPreserveId(tokenService.getLoginUser().getUserId());
         tTrainLibraryWarehousing.setConfirmTime(LocalDateTime.now());
@@ -312,9 +324,9 @@
     @ApiOperation(value = "编辑获取菌种库详情",tags = "菌种库管理",response = TTrainLibraryDetailVO.class)
     @GetMapping(value = "/open/t-train-library/getDetailEditById")
     public R<TTrainLibraryDetailVO> getDetailEditById(@RequestParam String id) {
-        TTrainLibrary byId = tTrainLibraryService.getById(id);
+        TTrainLibrary trainLibrary = tTrainLibraryService.getById(id);
         TTrainLibraryDetailVO tTrainLibraryDetailVO = new TTrainLibraryDetailVO();
-        BeanUtils.copyProperties(byId,tTrainLibraryDetailVO);
+        BeanUtils.copyProperties(trainLibrary,tTrainLibraryDetailVO);
         return R.ok(tTrainLibraryDetailVO);
     }
     /**
@@ -325,8 +337,8 @@
     @PostMapping(value = "/open/t-train-library/getDetailById")
     public R<TTrainLibraryDetailVO> getDetailById(@RequestBody String param) {
         TTrainLibraryDetailQuery query = JSON.parseObject(param, TTrainLibraryDetailQuery.class);
-        TTrainLibraryDetailVO detailById = tTrainLibraryService.getDetailById(query);
-        PageInfo<TTrainLibraryWarehousingVO> warehousingList = detailById.getWarehousingList();
+        TTrainLibraryDetailVO libraryDetailVO = tTrainLibraryService.getDetailById(query);
+        PageInfo<TTrainLibraryWarehousingVO> warehousingList = libraryDetailVO.getWarehousingList();
         List<TTrainLibraryWarehousingVO> records = warehousingList.getRecords();
         List<SysUser> sysUsers = sysUserService.selectList();
         for (TTrainLibraryWarehousingVO record : records) {
@@ -360,8 +372,8 @@
                 }
             }
         }
-        detailById.setList(list);
-        return R.ok(detailById);
+        libraryDetailVO.setList(list);
+        return R.ok(libraryDetailVO);
     }
     /**
      * 删除项目组
@@ -397,28 +409,36 @@
         AddTrainLibraryWarehousingDTO query = JSON.parseObject(param, AddTrainLibraryWarehousingDTO.class);
         TTrainLibrary tTrainLibrary = tTrainLibraryService.getById(query.getTrainLibraryId());
         if (query.getType()==1){
-            if (tTrainLibrary.getStatus()==1||tTrainLibrary.getStatus()==2){
+            if (tTrainLibrary.getStatus()==1||tTrainLibrary.getStatus()==2||tTrainLibrary.getStatus()==4){
                 if(tTrainLibrary.getStatus()==2){
                     return R.fail("当前菌种为出库待确认状态,不可重复出库");
 
-                }else{
+                }else if (tTrainLibrary.getStatus()==1){
                     return R.fail("当前菌种为已出库状态,不可重复出库");
+                }else{
+                    return R.fail("当前菌种为入库待确认状态,不可出库");
                 }
             }
+            tTrainLibrary.setStatus(2);
         }
         if (query.getType()==2){
-            if (tTrainLibrary.getStatus()==3||tTrainLibrary.getStatus()==4){
+            if (tTrainLibrary.getStatus()==2||tTrainLibrary.getStatus()==3||tTrainLibrary.getStatus()==4){
                 if(tTrainLibrary.getStatus()==4){
                     return R.fail("当前菌种为入库待确认状态,不可重复入库");
 
-                }else{
+                }else if (tTrainLibrary.getStatus()==3){
                     return R.fail("当前菌种为已入库状态,不可重复入库");
+                }else{
+                    return R.fail("当前菌种为出库待确认状态,不可入库");
+
                 }
             }
+            tTrainLibrary.setStatus(4);
         }
         query.setHandleId(tokenService.getLoginUser().getUserId());
         query.setBoundTime(LocalDateTime.now());
         tTrainLibraryWarehousingService.save(query);
+        tTrainLibraryService.updateById(tTrainLibrary);
         return R.ok();
     }
     /**
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
index 4fec420..c3eec7c 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
@@ -81,7 +81,6 @@
         }
 
         List<SysMenu> menus = roleService.roleInfoFromUserId(loginUser.getUserId());
-
         ajax.put("menus",menus);
         ajax.put("roleName",roles.get(0).getRoleName());
         ajax.put("userInfo",loginUser);
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 237eae1..ce91242 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
@@ -13,6 +13,7 @@
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.framework.web.service.TokenService;
 import com.ruoyi.system.dto.*;
+import com.ruoyi.system.model.*;
 import com.ruoyi.system.query.SysUserQuery;
 import com.ruoyi.system.service.*;
 import com.ruoyi.system.vo.SysUserVO;
@@ -24,6 +25,7 @@
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
 import java.time.LocalDateTime;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -48,6 +50,35 @@
     private ISysDeptService deptService;
     @Autowired
     private TokenService tokenService;
+    @Resource
+    private TBreedingAndPreservationService breedingAndPreservationService;
+    @Resource
+    private TCulturePreservationService culturePreservationService;
+    @Resource
+    private TNoticeService noticeService;
+    @Resource
+    private TObservationOfPetriDishesService observationOfPetriDishesService;
+    @Resource
+    private TPedigreeChartDetailService pedigreeChartDetailService;
+    @Resource
+    private TPedigreeChartService pedigreeChartService;
+
+    @Resource
+    private TSeparationOfCultureDishesService separationOfCultureDishesService;
+    @Resource
+    private TStrainReportService strainReportService;
+    @Resource
+    private TStrainReportDetailService strainReportDetailService;
+    @Resource
+    private TStrainValidationDataService strainValidationDataService;
+    @Resource
+    private TTrainLibraryService tTrainLibraryService;
+    @Resource
+    private TTrainLibraryWarehousingService tTrainLibraryWarehousingService;
+    @Resource
+    private TVaccinationSlopeService vaccinationSlopeService;
+    @Resource
+    private TProjectTeamStaffService projectTeamStaffService;
 
     /**
      * 获取用户列表
@@ -233,18 +264,81 @@
         }
         return AjaxResult.success(userService.updateUser(sysUser));
     }
-    @ApiOperation(value = "账号继承")
+    @ApiOperation(value = "账号继承",response = SysUserInheritDTO.class)
     @Log(title = "用户信息-账号继承", businessType = BusinessType.UPDATE)
     @PostMapping("/api/system/user/inherit")
     public AjaxResult inherit(@RequestBody String param)
     {
         SysUserInheritDTO dto = JSON.parseObject(param,SysUserInheritDTO.class);
+        Long currentUserId = dto.getCurrentUserId();
+        Long userId = dto.getUserId();
         SysUser currentUser = userService.selectUserById(dto.getCurrentUserId());
         SysUser user = userService.selectUserById(dto.getUserId());
-        user.setUserId(currentUser.getUserId());
-        userService.deleteUserById(dto.getCurrentUserId());
-        // 将user的userId换成currentUser的userId
-        userService.inherit(user);
+        // 将user所有数据 替换为当前账号id
+        List<TCulturePreservation> culturePreservationsHandle = culturePreservationService.lambdaQuery().eq(TCulturePreservation::getHandleId, userId).list();
+        for (TCulturePreservation tCulturePreservation : culturePreservationsHandle) {
+            tCulturePreservation.setHandleId(currentUserId+"");
+        }
+        culturePreservationService.updateBatchById( culturePreservationsHandle);
+        List<TCulturePreservation> culturePreservationsPreserve = culturePreservationService.lambdaQuery().eq(TCulturePreservation::getPreserveId, userId).list();
+        for (TCulturePreservation tCulturePreservation : culturePreservationsPreserve) {
+            tCulturePreservation.setPreserveId(currentUserId+"");
+        }
+        culturePreservationService.updateBatchById( culturePreservationsPreserve);
+        List<TNotice> notices = noticeService.lambdaQuery().eq(TNotice::getUserId, userId).list();
+        for (TNotice tNotice : notices) {
+            tNotice.setUserId(currentUserId+"");
+        }
+        noticeService.updateBatchById( notices);
+        List<TPedigreeChartDetail> pedigreeChartDetailsVaccinate = pedigreeChartDetailService.lambdaQuery().eq(TPedigreeChartDetail::getVaccinateId, userId).list();
+        for (TPedigreeChartDetail tPedigreeChartDetail : pedigreeChartDetailsVaccinate) {
+            tPedigreeChartDetail.setVaccinateId(currentUserId+"");
+        }
+        pedigreeChartDetailService.updateBatchById( pedigreeChartDetailsVaccinate);
+        List<TPedigreeChartDetail> pedigreeChartDetailsPreserve = pedigreeChartDetailService.lambdaQuery().eq(TPedigreeChartDetail::getPreserveId, userId).list();
+        for (TPedigreeChartDetail tPedigreeChartDetail : pedigreeChartDetailsPreserve) {
+            tPedigreeChartDetail.setPreserveId(currentUserId+"");
+        }
+        pedigreeChartDetailService.updateBatchById(pedigreeChartDetailsPreserve);
+        List<TProjectTeamStaff> projectTeamStaffs = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getUserId, userId).list();
+        for (TProjectTeamStaff tProjectTeamStaff : projectTeamStaffs) {
+            tProjectTeamStaff.setUserId(currentUserId+"");
+        }
+        projectTeamStaffService.updateBatchById(projectTeamStaffs);
+        List<TStrainReport> strainReports = strainReportService.lambdaQuery().eq(TStrainReport::getCommitId, userId).list();
+        for (TStrainReport tStrainReport : strainReports) {
+            tStrainReport.setCommitId(currentUserId+"");
+        }
+        strainReportService.updateBatchById(strainReports);
+        List<TStrainReportDetail> strainReportDetailsExperiment = strainReportDetailService.lambdaQuery().eq(TStrainReportDetail::getExperimentId, userId).list();
+        for (TStrainReportDetail tStrainReportDetail : strainReportDetailsExperiment) {
+            tStrainReportDetail.setExperimentId(currentUserId+"");
+        }
+        strainReportDetailService.updateBatchById(strainReportDetailsExperiment);
+        List<TStrainReportDetail> strainReportDetailsEvaluate = strainReportDetailService.lambdaQuery().eq(TStrainReportDetail::getEvaluateId, userId).list();
+        for (TStrainReportDetail tStrainReportDetail : strainReportDetailsEvaluate) {
+            tStrainReportDetail.setEvaluateId(currentUserId+"");
+        }
+        strainReportDetailService.updateBatchById(strainReportDetailsEvaluate);
+        List<TTrainLibraryWarehousing> tTrainLibraryWarehousingsHandle = tTrainLibraryWarehousingService.lambdaQuery().eq(TTrainLibraryWarehousing::getHandleId, userId).list();
+        for (TTrainLibraryWarehousing tTrainLibraryWarehousing : tTrainLibraryWarehousingsHandle) {
+            tTrainLibraryWarehousing.setHandleId(currentUserId);
+        }
+        tTrainLibraryWarehousingService.updateBatchById(tTrainLibraryWarehousingsHandle);
+        List<TTrainLibraryWarehousing> tTrainLibraryWarehousingsPreserve = tTrainLibraryWarehousingService.lambdaQuery().eq(TTrainLibraryWarehousing::getPreserveId, userId).list();
+        for (TTrainLibraryWarehousing tTrainLibraryWarehousing : tTrainLibraryWarehousingsPreserve) {
+            tTrainLibraryWarehousing.setPreserveId(currentUserId);
+        }
+        tTrainLibraryWarehousingService.updateBatchById(tTrainLibraryWarehousingsPreserve);
+        List<TVaccinationSlope> vaccinationSlopesHandle = vaccinationSlopeService.lambdaQuery().eq(TVaccinationSlope::getHandleId, userId).list();
+        for (TVaccinationSlope tVaccinationSlope : vaccinationSlopesHandle) {
+            tVaccinationSlope.setHandleId(currentUserId+"");
+        }
+        vaccinationSlopeService.updateBatchById(vaccinationSlopesHandle);
+        List<TVaccinationSlope> vaccinationSlopesPreserve = vaccinationSlopeService.lambdaQuery().eq(TVaccinationSlope::getPreserveId, userId).list();
+        for (TVaccinationSlope tVaccinationSlope : vaccinationSlopesPreserve) {
+            tVaccinationSlope.setPreserveId(currentUserId+"");
+        }
         return AjaxResult.success();
     }
     @ApiOperation(value = "启用/禁用")
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/DataUpdateHandlerConfig.java b/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/DataUpdateHandlerConfig.java
index 9007fbb..8c48624 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/DataUpdateHandlerConfig.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/core/config/DataUpdateHandlerConfig.java
@@ -55,7 +55,6 @@
         LoginUser loginUser = SecurityUtils.getLoginUser();
         SysUser sysUser = sysUserService.selectUserById(loginUser.getUserId());
         if (sysUser!=null) {
-            this.setFieldValByName("createBy", sysUser.getNickName(), metaObject);
             this.setFieldValByName("updateBy", sysUser.getNickName(), metaObject);
         }
 
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/controller/FileController.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/controller/FileController.java
index c02d68a..b995100 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/controller/FileController.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/controller/FileController.java
@@ -23,7 +23,7 @@
 @Api(tags = "服务器文件上传")
 @RestController
 @CrossOrigin
-@RequestMapping("/file/")
+@RequestMapping("/open/file/")
 public class FileController {
 
     @Autowired
@@ -39,7 +39,7 @@
         }
         String TimeDir =new SimpleDateFormat("yyyy-MM-dd").format(new Date());
 //        String realPath = fileUploadConfig.getLocation() + TimeDir;
-        String realPath = "C:\\Users\\Admin\\Desktop\\qrcode\\" + TimeDir;
+        String realPath = "D:\\upload\\image\\" + TimeDir;
         File file = new File(realPath);
         // 没有目录就创建
         if (!file.exists()) {
@@ -92,7 +92,7 @@
             return "请传入文件!";
         }
         String TimeDir =new SimpleDateFormat("yyyy-MM-dd").format(new Date());
-        String realPath = "C:\\Users\\Admin\\Desktop\\qrcode\\" + TimeDir;
+        String realPath = "D:\\upload\\image" + TimeDir;
         File file = new File(realPath);
         // 没有目录就创建
         if (!file.exists()) {
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/TPedigreeChartParentTwoCountDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/TPedigreeChartParentTwoCountDTO.java
index be5be37..1a7a55f 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/dto/TPedigreeChartParentTwoCountDTO.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/TPedigreeChartParentTwoCountDTO.java
@@ -8,7 +8,7 @@
 import java.util.List;
 
 @Data
-@ApiModel(value = "添加谱系图一级设置穿戴书")
+@ApiModel(value = "添加谱系图一级设置传代书")
 public class TPedigreeChartParentTwoCountDTO extends TPedigreeChartDetail {
     @ApiModelProperty(value = "后代")
     private List<TPedigreeChartParentThreeDTO> children;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TBreedingAndPreservation.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TBreedingAndPreservation.java
index 15751e5..6f5883d 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TBreedingAndPreservation.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TBreedingAndPreservation.java
@@ -72,6 +72,9 @@
     @ApiModelProperty(value = "培养温度")
     @TableField("temperature")
     private String temperature;
+    @ApiModelProperty(value = "项目组id")
+    @TableField("project_id")
+    private String projectId;
 
     @ApiModelProperty(value = "需氧类型1专性需氧 2专性厌氧 3兼性厌氧 4耐氧厌氧")
     @TableField("aerobic_type")
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TCulturePreservation.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TCulturePreservation.java
index 861b17a..ff1b98d 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TCulturePreservation.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TCulturePreservation.java
@@ -54,6 +54,9 @@
     @ApiModelProperty(value = "操作人id")
     @TableField("handle_id")
     private String handleId;
+    @ApiModelProperty(value = "操作人名称")
+    @TableField(exist = false)
+    private String handleName;
 
     @ApiModelProperty(value = "操作人签名")
     @TableField("handle_signature")
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TPedigreeChart.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TPedigreeChart.java
index cb9573b..888bfea 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TPedigreeChart.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TPedigreeChart.java
@@ -63,6 +63,8 @@
     @ApiModelProperty(value = "菌种传代生产谱系图 回显使用")
     @TableField(exist = false)
     private TPedigreeChartParentAllDetailDTO pedigreeChartParentAllDetailDTO;
-
+    @ApiModelProperty(value = "项目组id")
+    @TableField("project_id")
+    private String projectId;
 
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TPedigreeChartDetail.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TPedigreeChartDetail.java
index a175b6c..10efa29 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TPedigreeChartDetail.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TPedigreeChartDetail.java
@@ -71,6 +71,9 @@
     @ApiModelProperty(value = "接种操作人id")
     @TableField("vaccinate_id")
     private String vaccinateId;
+    @ApiModelProperty(value = "接种操作人名称")
+    @TableField(exist = false)
+    private String vaccinateName;
 
     @ApiModelProperty(value = "接种时间")
     @TableField("vaccinate_time")
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TStrainValidationData.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TStrainValidationData.java
index f533250..bd13323 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TStrainValidationData.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TStrainValidationData.java
@@ -33,7 +33,9 @@
     @TableField("id")
     private String id;
 
-
+    @ApiModelProperty(value = "项目组id")
+    @TableField("project_id")
+    private String projectId;
 
     @ApiModelProperty(value = "菌种来源")
     @TableField("strain_source")
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TTrainLibrary.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TTrainLibrary.java
index b12ce73..d88dc64 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TTrainLibrary.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TTrainLibrary.java
@@ -40,7 +40,9 @@
     @TableField("strain_name")
     private String strainName;
 
-
+    @ApiModelProperty(value = "项目组id")
+    @TableField("project_id")
+    private String projectId;
 
     @ApiModelProperty(value = "菌种来源1 是沙土管或甘油管的源头菌种;入原始细胞库(祖代-0) 2 是斜面的源头菌种;接种入主细胞库(祖代-0)。经过育种、验证后,菌种保藏为甘油管或沙土管的,入原始细胞库(祖代-0)3 是含菌物质自己分离后获得的斜面源头菌种,接种入主细胞库;经生产验证后,保藏为沙土管或甘油管,入原始细胞库(祖代-O)")
     @TableField("strain_source")
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/query/TBreedingAndPreservationQuery.java b/ruoyi-system/src/main/java/com/ruoyi/system/query/TBreedingAndPreservationQuery.java
index 1d9c245..947d524 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/query/TBreedingAndPreservationQuery.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/query/TBreedingAndPreservationQuery.java
@@ -5,6 +5,8 @@
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.util.List;
+
 @Data
 @ApiModel(value = "菌种选育保藏记录分页列表query")
 public class TBreedingAndPreservationQuery extends TimeRangeQueryBody {
@@ -19,6 +21,8 @@
     private Integer aerobicType;
     @ApiModelProperty(value = "是否草稿 0否1是")
     private Integer isDraft;
+    @ApiModelProperty(value = "项目组ids")
+    private List<String> projectIds;
 
 
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/query/TPedigreeChartQuery.java b/ruoyi-system/src/main/java/com/ruoyi/system/query/TPedigreeChartQuery.java
index 4b6c064..a71b020 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/query/TPedigreeChartQuery.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/query/TPedigreeChartQuery.java
@@ -5,6 +5,8 @@
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.util.List;
+
 @Data
 @ApiModel(value = "谱系图分页列表query")
 public class TPedigreeChartQuery extends TimeRangeQueryBody {
@@ -18,5 +20,6 @@
     @ApiModelProperty(value = "起传类型1母代 2祖代")
     private Integer generationType;
 
-
+    @ApiModelProperty(value = "项目组ids")
+    private List<String> projectIds;
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/query/TStrainReportProjectQuery.java b/ruoyi-system/src/main/java/com/ruoyi/system/query/TStrainReportProjectQuery.java
index 5642e02..121a2eb 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/query/TStrainReportProjectQuery.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/query/TStrainReportProjectQuery.java
@@ -12,7 +12,7 @@
 public class TStrainReportProjectQuery extends TimeRangeQueryBody {
     @ApiModelProperty(value = "所属项目组")
     private String teamName;
-    @ApiModelProperty(value = "评定开始时间段 创建日期 例:2020-11-11 20:20:20 - 2020-12-12 20:20:20")
+    @ApiModelProperty(value = "创建日期 例:2020-11-11 20:20:20 - 2020-12-12 20:20:20")
     private String time;
     @ApiModelProperty(value = "开始时间 前端忽略")
     private String startTime;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java
index a310cf7..01fedf7 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java
@@ -517,19 +517,23 @@
     public List<SysMenu> getMenuLevelList(List<Long> menusId) {
         //获取当前的权限菜单
         List<SysMenu> all = menuMapper.getAllInIds(menusId);
-        // 第三级
-        List<SysMenu> s3 = all.stream().filter(e -> e.getMenuType().equals("F")).collect(Collectors.toList());
-        // 第二级
-        List<SysMenu> s2 = all.stream().filter(e -> e.getMenuType().equals("C")).collect(Collectors.toList());
+        List<SysMenu> collect4 = all.stream().filter(e -> e.getParentId() != null).collect(Collectors.toList());
         // 第一级
         List<SysMenu> s1 = all.stream().filter(e -> e.getMenuType().equals("M")).collect(Collectors.toList());
-
-        for (SysMenu menu : s2) {
-            List<SysMenu> collect = s3.stream().filter(e -> e.getParentId().equals(menu.getMenuId())).collect(Collectors.toList());
-            menu.setChildren(collect);
-        }
         for (SysMenu menu : s1) {
-            List<SysMenu> collect = s2.stream().filter(e -> e.getParentId().equals(menu.getMenuId())).collect(Collectors.toList());
+            List<SysMenu> collect = collect4.stream().filter(e -> e.getParentId().equals(menu.getMenuId())).collect(Collectors.toList());
+            for (SysMenu sysMenu : collect) {
+                List<SysMenu> collect1 = collect4.stream().filter(e -> e.getParentId().equals(sysMenu.getMenuId())).collect(Collectors.toList());
+                for (SysMenu sysMenu1 : collect1) {
+                    List<SysMenu> collect2 = collect4.stream().filter(e -> e.getParentId().equals(sysMenu1.getMenuId())).collect(Collectors.toList());
+                    for (SysMenu sysMenu2 : collect2) {
+                        List<SysMenu> collect3 = collect4.stream().filter(e -> e.getParentId().equals(sysMenu2.getMenuId())).collect(Collectors.toList());
+                        sysMenu2.setChildren(collect3);
+                    }
+                    sysMenu1.setChildren(collect2);
+                }
+                sysMenu.setChildren(collect1);
+            }
             menu.setChildren(collect);
         }
         return s1;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TPedigreeChartServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TPedigreeChartServiceImpl.java
index a16204e..b79ed2e 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TPedigreeChartServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TPedigreeChartServiceImpl.java
@@ -3,6 +3,8 @@
 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.TPedigreeChartMapper;
 import com.ruoyi.system.model.TPedigreeChart;
 import com.ruoyi.system.model.TProjectTeamStaff;
@@ -14,6 +16,7 @@
 import com.ruoyi.system.vo.TPedigreeChartDetailVO;
 import com.ruoyi.system.vo.TPedigreeChartVO;
 import com.ruoyi.system.vo.TProjectTeamVO;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
@@ -31,6 +34,8 @@
 @Service
 public class TPedigreeChartServiceImpl extends ServiceImpl<TPedigreeChartMapper, TPedigreeChart> implements TPedigreeChartService {
 
+    @Autowired
+    private SysUserMapper sysUserMapper;
     @Override
     public PageInfo<TPedigreeChartVO> pageList(TPedigreeChartQuery query) {
         PageInfo<TPedigreeChartVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
@@ -51,6 +56,19 @@
     public PageInfo<TPedigreeChartDetailVO> pageListDetail(TPedigreeChartDetailQuery query) {
         PageInfo<TPedigreeChartDetailVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
         List<TPedigreeChartDetailVO> list = this.baseMapper.pageListDetail(query,pageInfo);
+        List<SysUser> sysUsers = sysUserMapper.selectAllList();
+        for (TPedigreeChartDetailVO tPedigreeChartDetailVO : list) {
+            SysUser sysUser = sysUsers.stream().filter(e -> e.getUserId().equals(Long.valueOf(tPedigreeChartDetailVO.getVaccinateId())))
+                    .findFirst().orElse(null);
+            if (sysUser!=null){
+                tPedigreeChartDetailVO.setExperimenter(sysUser.getNickName());
+            }
+            SysUser sysUser1 = sysUsers.stream().filter(e -> e.getUserId().equals(Long.valueOf(tPedigreeChartDetailVO.getVaccinateId())))
+                    .findFirst().orElse(null);
+            if (sysUser1!=null){
+                tPedigreeChartDetailVO.setVaccinateName(sysUser.getNickName());
+            }
+        }
         pageInfo.setRecords(list);
         return pageInfo;
     }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TProjectTeamServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TProjectTeamServiceImpl.java
index 77ebca2..4f87d16 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TProjectTeamServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TProjectTeamServiceImpl.java
@@ -41,7 +41,8 @@
         List<String> teamIds = list.stream().map(TProjectTeamVO::getId).collect(Collectors.toList());
         List<SysUser> sysUsers = sysUserMapper.selectList();
         if(!CollectionUtils.isEmpty(teamIds)){
-            List<TProjectTeamStaff> projectTeamStaffs = projectTeamStaffMapper.selectList(Wrappers.lambdaQuery(TProjectTeamStaff.class).in(TProjectTeamStaff::getTeamId, teamIds));
+            List<TProjectTeamStaff> projectTeamStaffs = projectTeamStaffMapper.selectList(Wrappers.lambdaQuery(TProjectTeamStaff.class)
+                    .eq(TProjectTeamStaff::getRoleType,3).in(TProjectTeamStaff::getTeamId, teamIds));
             list.forEach(item->{
                 List<TProjectTeamStaff> projectTeamStaffList = projectTeamStaffs.stream().filter(staff -> staff.getTeamId().equals(item.getId())).collect(Collectors.toList());
                 if(!CollectionUtils.isEmpty(projectTeamStaffList)){
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TStrainReportServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TStrainReportServiceImpl.java
index 9564a71..8c69508 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TStrainReportServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TStrainReportServiceImpl.java
@@ -58,30 +58,33 @@
     public PageInfo<TStrainReportProjectVO> pageListProject(TStrainReportProjectQuery query) {
         PageInfo<TStrainReportProjectVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
         List<TStrainReportProjectVO> list = this.baseMapper.pageListProject(query,pageInfo);
-        List<TStrainReport> tStrainReports = this.baseMapper.selectList(new LambdaQueryWrapper<TStrainReport>().eq(TStrainReport::getStatus,3));
+        LambdaQueryWrapper<TStrainReport> queryWrapper = new LambdaQueryWrapper<TStrainReport>().eq(TStrainReport::getStatus, 3);
+
+        List<TStrainReport> tStrainReports = this.baseMapper.selectList(
+                queryWrapper);
         List<TStrainReportDetail> tStrainReportDetails = strainReportDetailMapper.selectList(new LambdaQueryWrapper<TStrainReportDetail>());
         for (TStrainReportProjectVO tStrainReportProjectVO : list) {
-            List<TStrainReport> collect = tStrainReports.stream().filter(e -> e.getProjectId().equals(tStrainReportProjectVO.getProjectId())).collect(Collectors.toList());
+            List<TStrainReport> strainReports = tStrainReports.stream().filter(e -> e.getProjectId().equals(tStrainReportProjectVO.getProjectId())).collect(Collectors.toList());
             BigDecimal sum = new BigDecimal("0");
             BigDecimal sum1 = new BigDecimal("0");
             BigDecimal sum2 = new BigDecimal("0");
             Integer temp = 0;
-            for (TStrainReport tStrainReport : collect) {
-                List<TStrainReportDetail> collect1 = tStrainReportDetails.stream()
+            for (TStrainReport tStrainReport : strainReports) {
+                List<TStrainReportDetail> tStrainReportDetails1 = tStrainReportDetails.stream()
                         .filter(e -> e.getReportId().equals(tStrainReport.getId())&&
                                 e.getEvaluateHumanType()==1).collect(Collectors.toList());
-                List<TStrainReportDetail> collect2 = tStrainReportDetails.stream()
+                List<TStrainReportDetail> tStrainReportDetails2 = tStrainReportDetails.stream()
                         .filter(e -> e.getReportId().equals(tStrainReport.getId())&&
                                 e.getEvaluateHumanType()==2).collect(Collectors.toList());
                 // 菌种工程积分
-                sum1 = collect2.stream()
-                        .filter(e -> e.getEvaluateHumanType().equals(1))
+                sum1 = tStrainReportDetails2.stream()
+                        .filter(e -> e.getEvaluateHumanType().equals(2))
                         .map(TStrainReportDetail::getEvaluateTotal)
                         .reduce(BigDecimal::add)
                         .orElse(BigDecimal.ZERO);
                 // 菌种实验员积分
-                sum2 = collect1.stream()
-                        .filter(e -> e.getEvaluateHumanType().equals(2))
+                sum2 = tStrainReportDetails1.stream()
+                        .filter(e -> e.getEvaluateHumanType().equals(1))
                         .map(TStrainReportDetail::getEvaluateTotal)
                         .reduce(BigDecimal::add)
                         .orElse(BigDecimal.ZERO);
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
index 0c39855..a780725 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -265,9 +265,8 @@
 	<select id="choiceUserList" resultType="com.ruoyi.system.vo.ChoiceUserVO">
 		select * from sys_user
 
-		where status =  0 and del_flag = 0
-		  and roleType = #{query.roleType}
-		<if test="query.userIds != null and query.userIds()>0">
+		where status =  '0' and del_flag = '0'
+		<if test="query.userIds != null and query.userIds.size()>0">
 			AND user_id IN
 			<foreach collection="query.userIds" close=")" open="(" item="id" separator=",">
 				#{id}
@@ -278,7 +277,7 @@
 		select * from sys_user
 		where 1=1
 				<if test="userName != null and userName != ''">
-					OR nick_name LIKE concat('%', #{userName}, '%')
+					and nick_name LIKE concat('%', #{userName}, '%')
 				</if>
 
 	</select>
@@ -375,7 +374,7 @@
 	</update>
 
     <delete id="deleteUserById" parameterType="Long">
- 		update sys_user set del_flag = '2' where user_id = #{userId}
+ 		delete sys_user  where user_id = #{userId}
  	</delete>
  	
  	<delete id="deleteUserByIds" parameterType="Long">
diff --git a/ruoyi-system/src/main/resources/mapper/system/TBreedingAndPreservationMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TBreedingAndPreservationMapper.xml
index 2ab61a8..62d7e22 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TBreedingAndPreservationMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/TBreedingAndPreservationMapper.xml
@@ -46,6 +46,12 @@
             <if test="query.isDraft != null and query.isDraft == 0">
                 and (status = 1 or status =2)
             </if>
+        <if test="query.projectIds != null and query.projectIds.size() > 0">
+            and project_id in
+            <foreach item="item" collection="query.projectIds" separator="," open="(" close=")" index="">
+                #{item}
+            </foreach>
+        </if>
             AND disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
         </where>
         ORDER BY create_time DESC
diff --git a/ruoyi-system/src/main/resources/mapper/system/TPedigreeChartMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TPedigreeChartMapper.xml
index 88f3fa5..07a6c69 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TPedigreeChartMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/TPedigreeChartMapper.xml
@@ -35,6 +35,12 @@
             <if test="query.generationType != null">
                 and generation_type = #{query.generationType}
             </if>
+        <if test="query.projectIds != null and query.projectIds.size() > 0">
+            and project_id in
+            <foreach item="item" collection="query.projectIds" separator="," open="(" close=")" index="">
+                #{item}
+            </foreach>
+        </if>
             AND disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
         </where>
         ORDER BY create_time DESC
diff --git a/ruoyi-system/src/main/resources/mapper/system/TProjectTeamMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TProjectTeamMapper.xml
index 5ba2f16..dcc3f02 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TProjectTeamMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/TProjectTeamMapper.xml
@@ -20,7 +20,6 @@
         id, team_name, person_charge, status, create_time, update_time, create_by, update_by, disabled
     </sql>
     <select id="pageList" resultType="com.ruoyi.system.vo.TProjectTeamVO">
-
         SELECT
         <include refid="Base_Column_List" />
         FROM t_project_team
@@ -32,8 +31,7 @@
                 AND person_charge LIKE CONCAT('%', #{query.personCharge}, '%')
             </if>
             <if test="query.startTime != null and query.startTime != '' and query.endTime != null and query.endTime != ''">
-                AND create_time &gt;= #{query.startTime}
-                AND create_time &lt;= #{query.endTime}
+                AND create_time BETWEEN #{query.startTime} AND #{query.endTime}
             </if>
             AND disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
         </where>
diff --git a/ruoyi-system/src/main/resources/mapper/system/TStrainReportMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TStrainReportMapper.xml
index 781018e..4e25013 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TStrainReportMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/TStrainReportMapper.xml
@@ -37,7 +37,10 @@
         id, project_id, report_code, report_name, report_content, create_time, update_time, create_by, update_by, disabled, enclosure_name, enclosure_size, enclosure_url, status, experiment_id, evaluate, evaluate_total, audit_remark, audit_time, audit_id, evaluate_time, evaluate_id, is_draft, report_type, evaluate_human_type, evaluate_type
     </sql>
     <select id="pageList" resultType="com.ruoyi.system.vo.TStrainReportVO">
-        select t1.*,t2.team_name as teamName,t3.nick_name as experimentName,t4.nick_name as evaluateName from t_strain_report t1
+        select t1.*,t2.team_name as teamName,t3.nick_name as experimentName,t4.nick_name as evaluateName,
+        t5.create_time as evaluateTime
+
+        from t_strain_report t1
             left join t_strain_report_detail t5  on t5.report_id = t1.id
         left join t_project_team t2 on t1.project_id = t2.id
         left join sys_user t3 on t3.user_id = t5.experiment_id
@@ -66,7 +69,7 @@
             </if>
 
             <if test="query.evaluateId != null and query.evaluateId.size()>0">
-                AND t1.evaluate_id IN
+                AND t5.evaluate_id IN
                 <foreach collection="query.evaluateId" close=")" open="(" item="id" separator=",">
                     #{id}
                 </foreach>
@@ -84,8 +87,15 @@
                 and t1.team_name like concat('%',#{query.teamName},'%')
             </if>
             <if test="query.startTime != null and query.startTime != '' and query.endTime != null and query.endTime != ''">
-                and t1.evaluate_time between #{query.startTime} and #{query.endTime}
+                and t1.create_time between #{query.startTime} and #{query.endTime}
             </if>
+            <if test="query.projectIds != null and query.projectIds.size() > 0">
+                and t1.id in
+                <foreach item="item" collection="query.projectIds" separator="," open="(" close=")" index="">
+                    #{item}
+                </foreach>
+            </if>
+
 
             AND t1.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
         </where>

--
Gitblit v1.7.1