无关风月
2025-08-06 053f6187b5f6cda1725ed63df8a8766b5976fb53
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TStrainReportController.java
@@ -61,27 +61,45 @@
    @ApiOperation(value = "菌种报告库分页列表查询",tags = "菌种报告库",response = TStrainReportQuery.class)
    @PostMapping(value = "/api/t-strain-report/pageListAll")
    public R<PageInfo<TStrainReportVO>> pageListAll(@RequestBody String param) {
        TStrainReportQuery query = JSON.parseObject(param, TStrainReportQuery.class);
        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");
        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{
                return R.ok(new PageInfo<>());
            }
            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);
            }else{
                return R.ok(new PageInfo<>());
            }
        }
        TStrainReportQuery query = JSON.parseObject(param, TStrainReportQuery.class);
        if (StringUtils.hasLength(query.getTime())){
            query.setStartTime(query.getTime().split(" - ")[0]);
            query.setEndTime(query.getTime().split(" - ")[1]);
        }
        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 +117,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 +134,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 +160,35 @@
            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);
            }else {
                return R.ok(new PageInfo<>());
            }
            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);
            }else {
                return R.ok(new PageInfo<>());
            }
        }
        query.setProjectIds(projectIds);
        return R.ok(strainReportService.pageListProject(query));
    }
@@ -159,17 +196,18 @@
    @ApiOperation(value = "菌种项目组评定详情",tags = "菌种项目组评定表")
    @GetMapping(value = "/open/t-strain-report/getDetailByIdProject")
    public R<TStrainReportDetailProjectVO> getDetailByIdProject(@RequestParam String id) {
        TProjectTeam byId = projectTeamService.getById(id);
        TProjectTeam project = projectTeamService.getById(id);
        TStrainReportDetailProjectVO tStrainReportDetailVO = new TStrainReportDetailProjectVO();
        LoginUser loginUser = tokenService.getLoginUser();
        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)
                        .isNotNull(TStrainReportDetail::getExperimentId)
                        .orderByDesc(TStrainReportDetail::getCreateTime));
        BigDecimal sum = new BigDecimal("0");
        BigDecimal sum1 = new BigDecimal("0");
@@ -177,74 +215,75 @@
        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()
                    .filter(e -> e.getEvaluateHumanType().equals(1))
                    .map(TStrainReportDetail::getEvaluateTotal)
                    .reduce(BigDecimal::add)
                    .orElse(BigDecimal.ZERO);
            // 菌种实验员积分
            sum2 = collect1.stream()
            sum1 = sum1.add(tStrainReportDetails2.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) {
                    .orElse(BigDecimal.ZERO));
            // 菌种实验员积分
            sum2 = sum2.add(tStrainReportDetails1.stream()
                    .filter(e -> e.getEvaluateHumanType().equals(1)&&e.getReportType()==1)
                    .map(TStrainReportDetail::getEvaluateTotal)
                    .reduce(BigDecimal::add)
                    .orElse(BigDecimal.ZERO));
            List<TStrainReportDetail> tStrainReportDetails3 = tStrainReportDetails.stream().filter(e -> e.getReportId().equals(tStrainReport.getId())
                    &&
                    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")){
                    if (tStrainReportDetail.getEvaluate().split(",")[4].equals("-3")){
                        temp++;
                        break;
                    }
                }
            }
        }
        tStrainReportDetailVO.setTeamIntegral(sum);
        tStrainReportDetailVO.setTeamIntegral(sum1.add(sum2));
        tStrainReportDetailVO.setEngineerIntegral(sum1);
        tStrainReportDetailVO.setExperimenterIntegral(sum2);
        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(project.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())
        tStrainReportDetailVO.setStartTime(project.getCreateTime());
        TProjectTeamStaff projectTeamStaff = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getTeamId, project.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());
            tStrainReportDetailExperimentVO.setHandleCount((int) tStrainReportDetails.stream().filter(e -> e.getExperimentId().equals(sysUser.getUserId() + "")).count());
            tStrainReportDetailExperimentVO.setHandleCount((int) tStrainReportDetails.stream().filter(e -> e.getExperimentId()!=null&&e.getExperimentId().equals(sysUser.getUserId() + "")).count());
            BigDecimal handleIntegral = tStrainReportDetails.stream()
                    .filter(e -> e.getEvaluateHumanType().equals(1)&&e.getExperimentId().equals(sysUser.getUserId()+""))
                    .filter(e -> e.getEvaluateHumanType().equals(1)&&e.getExperimentId().equals(sysUser.getUserId()+"")
                            &&e.getReportType()==1)
                    .map(TStrainReportDetail::getEvaluateTotal)
                    .reduce(BigDecimal::add)
                    .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.setHandleEndTime(strainReportDetails.get(strainReportDetails.size()-1).getCreateTime());
            }
            tStrainReportDetailExperimentVO.setHandleStartTime(project.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);
@@ -255,7 +294,8 @@
                tStrainReportDetailVO.setDetailEngineerVO(tStrainReportDetailEngineerVO);
                List<String> userIds = new ArrayList<>();
                List<TStrainReportDetailExperimentVO> tStrainReportDetailExperimentVOS1 = new ArrayList<>();
                List<TStrainReportDetail> collect = tStrainReportDetails.stream().filter(e -> e.getEvaluateHumanType().equals(1)).collect(Collectors.toList());
                List<TStrainReportDetail> collect = tStrainReportDetails.stream().filter(e -> e.getEvaluateHumanType().equals(1)
                        &&e.getReportType()==1).collect(Collectors.toList());
                for (TStrainReportDetail tStrainReportDetail : collect) {
                    if (userIds.contains(tStrainReportDetail.getExperimentId())){
                        continue;
@@ -265,72 +305,77 @@
                    tStrainReportDetailExperimentVO.setUserName(sysUserService.selectUserById(Long.valueOf(tStrainReportDetail.getExperimentId())).getNickName());
                    tStrainReportDetailExperimentVO.setHandleCount((int) collect.stream().filter(e -> e.getExperimentId().equals(tStrainReportDetail.getExperimentId())).count());
                    BigDecimal handleIntegral = collect.stream()
                            .filter(e -> e.getEvaluateHumanType().equals(1)&&e.getExperimentId().equals(sysUser.getUserId()+""))
                            .filter(e -> e.getEvaluateHumanType().equals(1)&&e.getExperimentId().equals(sysUser.getUserId()+"")
                                    &&e.getReportType()==1)
                            .map(TStrainReportDetail::getEvaluateTotal)
                            .reduce(BigDecimal::add)
                            .orElse(BigDecimal.ZERO);
                    tStrainReportDetailExperimentVO.setHandleIntegral(handleIntegral);
                    List<TStrainReportDetail> collect9 = collect.stream().filter(e -> e.getExperimentId().equals(sysUser.getUserId()+"")).collect(Collectors.toList());
                    if (!collect9.isEmpty()){
                        tStrainReportDetailExperimentVO.setHandleEndTime(collect9.get(collect9.size()-1).getCreateTime());
                    List<TStrainReportDetail> reportDetails = collect.stream().filter(e -> e.getExperimentId().equals(sysUser.getUserId()+"")).collect(Collectors.toList());
                    if (!reportDetails.isEmpty()){
                        tStrainReportDetailExperimentVO.setHandleEndTime(reportDetails.get(reportDetails.size()-1).getCreateTime());
                    }
                    tStrainReportDetailExperimentVO.setHandleStartTime(byId.getCreateTime());
                    tStrainReportDetailExperimentVO.setHandleStartTime(project.getCreateTime());
                    tStrainReportDetailExperimentVOS1.add(tStrainReportDetailExperimentVO);
                }
                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());
                if (!collect3.isEmpty()){
                    tStrainReportDetailEngineerVO.setInnovateStartTime(collect3.get(collect3.size()-1).getCreateTime());
                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> tStrainReportDetails1 = reportDetails.stream().filter(e ->e.getEvaluateType()!=null&& e.getEvaluateType().equals(1)).collect(Collectors.toList());
                if (!tStrainReportDetails1.isEmpty()){
                    tStrainReportDetailEngineerVO.setInnovateEndTime(tStrainReportDetails1.get(tStrainReportDetails1.size()-1).getCreateTime());
                }
                tStrainReportDetailEngineerVO.setInnovateEndTime(byId.getCreateTime());
                tStrainReportDetailEngineerVO.setInnovateStartTime(project.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(collect4.get(collect4.size()-1).getCreateTime());
                }
                tStrainReportDetailEngineerVO.setRegulationEndTime(byId.getCreateTime());
                tStrainReportDetailEngineerVO.setRegulationStartTime(project.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.setHandleEndTime(reportDetailList.get(reportDetailList.size()-1).getCreateTime());
                }
                tStrainReportDetailEngineerVO.setHandleEndTime(byId.getCreateTime());
                tStrainReportDetailEngineerVO.setHandleStartTime(project.getCreateTime());
                tStrainReportDetailVO.setDetailEngineerVO(tStrainReportDetailEngineerVO);
                List<String> userIds = new ArrayList<>();
                List<TStrainReportDetailExperimentVO> tStrainReportDetailExperimentVOS1 = new ArrayList<>();
                List<TStrainReportDetail> collect = tStrainReportDetails.stream().filter(e -> e.getEvaluateHumanType().equals(1)).collect(Collectors.toList());
                for (TStrainReportDetail tStrainReportDetail : collect) {
                    if (userIds.contains(tStrainReportDetail.getExperimentId())){
                        continue;
                    }
                    userIds.add(tStrainReportDetail.getExperimentId());
                List<String> experimentIds = tStrainReportDetails.stream().filter(e ->
                                e.getEvaluateHumanType().equals(1)
                                        &&e.getReportType()==1)
                        .map(TStrainReportDetail::getExperimentId)
                        .distinct()
                        .collect(Collectors.toList());
                List<TStrainReportDetail> tStrainReportDetails2 = tStrainReportDetails.stream().filter(e -> e.getEvaluateHumanType().equals(1)).collect(Collectors.toList());
                for (String experimentId : experimentIds) {
                    List<TStrainReportDetail> details = tStrainReportDetails2.stream().filter(e -> e.getExperimentId().equals(experimentId)).collect(Collectors.toList());
                    TStrainReportDetailExperimentVO tStrainReportDetailExperimentVO = new TStrainReportDetailExperimentVO();
                    tStrainReportDetailExperimentVO.setUserName(sysUserService.selectUserById(Long.valueOf(tStrainReportDetail.getExperimentId())).getNickName());
                    tStrainReportDetailExperimentVO.setHandleCount((int) collect.stream().filter(e -> e.getExperimentId().equals(tStrainReportDetail.getExperimentId())).count());
                    BigDecimal handleIntegral = collect.stream()
                            .filter(e -> e.getEvaluateHumanType().equals(1)&&e.getExperimentId().equals(sysUser.getUserId()+""))
                    SysUser sysUser1 = sysUserService.selectUserById(Long.valueOf(experimentId));
                    tStrainReportDetailExperimentVO.setUserName(sysUser1.getNickName());
                    tStrainReportDetailExperimentVO.setHandleCount(details.size());
                    BigDecimal handleIntegral = details.stream()
                            .filter(e -> e.getEvaluateHumanType().equals(1)
                                    &&e.getReportType()==1)
                            .map(TStrainReportDetail::getEvaluateTotal)
                            .reduce(BigDecimal::add)
                            .orElse(BigDecimal.ZERO);
                    tStrainReportDetailExperimentVO.setHandleIntegral(handleIntegral);
                    List<TStrainReportDetail> collect9 = collect.stream().filter(e -> e.getExperimentId().equals(sysUser.getUserId()+"")).collect(Collectors.toList());
                    if (!collect9.isEmpty()){
                        tStrainReportDetailExperimentVO.setHandleEndTime(collect9.get(collect9.size()-1).getCreateTime());
                    if (!tStrainReportDetails2.isEmpty()){
                        tStrainReportDetailExperimentVO.setHandleEndTime(details.get(details.size()-1).getCreateTime());
                    }
                    tStrainReportDetailExperimentVO.setHandleStartTime(byId.getCreateTime());
                    tStrainReportDetailExperimentVO.setHandleStartTime(project.getCreateTime());
                    tStrainReportDetailExperimentVOS1.add(tStrainReportDetailExperimentVO);
                }
                tStrainReportDetailVO.setDetailExperimentVOS(tStrainReportDetailExperimentVOS1);
@@ -367,12 +412,12 @@
        tStrainReportDetail.setEvaluateType(dto.getEvaluateType());
        strainReportDetailService.save(tStrainReportDetail);
        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 +425,8 @@
            noticeService.save(tNotice);
            // 新增消息
            TNotice tNotice1 = new TNotice();
            TProjectTeamStaff one1 = 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(dto.getExperimentId());
            tNotice1.setStatus(1);
            tNotice1.setNoticeContent("您有【1】条菌种库操作菌种工程师已评定;");
            tNotice1.setDataId(dto.getId());
@@ -416,11 +458,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 +477,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 +506,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);
@@ -475,19 +514,19 @@
        tNotice.setNoticeType(2);
        noticeService.save(tNotice);
            // 新增消息
            TNotice tNotice1 = new TNotice();
            TProjectTeamStaff one1 = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getTeamId, strainReport.getProjectId())
                    .eq(TProjectTeamStaff::getRoleType, 1).last("limit 1").one();
         // 新增消息
        TNotice notice = new TNotice();
        TProjectTeamStaff tProjectTeamStaff = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getTeamId, strainReport.getProjectId())
                .eq(TProjectTeamStaff::getRoleType, 2).last("limit 1").one();
            tNotice1.setCommitId(tokenService.getLoginUser().getUserId()+"");
            tNotice1.setUserId(one1.getUserId());
            tNotice1.setStatus(1);
            String temp=dto.getStatus()==2?"通过":"驳回";
            tNotice1.setNoticeContent("您有【1】条【菌种报告】【报告库"+strainReport.getReportType()+"】菌种审批人已操作【" +temp+"】");
            tNotice1.setDataId(dto.getId());
            tNotice1.setNoticeType(7);
            noticeService.save(tNotice1);
        notice.setCommitId(tokenService.getLoginUser().getUserId()+"");
        notice.setUserId(tProjectTeamStaff.getUserId());
        notice.setStatus(1);
        String temp=dto.getStatus()==2?"通过":"驳回";
        notice.setNoticeContent("您有【1】条【菌种报告】【报告库"+strainReport.getReportType()+"】菌种审批人已操作【" +temp+"】");
        notice.setDataId(dto.getId());
        notice.setNoticeType(7);
        noticeService.save(notice);
        return R.ok();
    }
    /**
@@ -520,16 +559,17 @@
        tStrainReportDetail.setEvaluateType(dto.getEvaluateType());
        strainReportDetailService.save(tStrainReportDetail);
        // 新增消息
        TNotice tNotice1 = new TNotice();
        TProjectTeamStaff one1 = 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);
        TNotice notice = new TNotice();
        TProjectTeamStaff projectTeamStaff = projectTeamStaffService.lambdaQuery()
                .eq(TProjectTeamStaff::getTeamId, strainReport.getProjectId())
                .eq(TProjectTeamStaff::getRoleType, 2).last("limit 1").one();
        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 +598,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 +639,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);