xuhy
2026-03-04 30521c18a4c09ca3ff03b8216a243adc745ccf3c
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TResultWorkEvaluateController.java
@@ -11,24 +11,26 @@
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.framework.web.service.TokenService;
import com.ruoyi.system.dto.TQaTestItemDTO;
import com.ruoyi.system.dto.TResultWorkEvaluateDTO;
import com.ruoyi.system.mapper.SysUserMapper;
import com.ruoyi.system.model.*;
import com.ruoyi.system.query.ResultEvaluateChemistTesterQuery;
import com.ruoyi.system.query.TProjectApprovalReportQuery;
import com.ruoyi.system.query.TQaTestItemReportQuery;
import com.ruoyi.system.query.TResultWorkEvaluateQuery;
import com.ruoyi.system.service.*;
import com.ruoyi.system.vo.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
@@ -52,6 +54,8 @@
    @Resource
    private TExperimentResultReportService experimentResultReportService;
    @Resource
    private TExperimentSchemeService experimentSchemeService;
    @Resource
    private TProjectApprovalReportService projectApprovalReportService;
    @Resource
    private TExperimentDispatchService experimentDispatchService;
@@ -73,6 +77,8 @@
    @Autowired
    private ISysUserService sysUserService;
    @Autowired
    private SysUserMapper sysUserMapper;
    @Autowired
    private TExperimentDispatchParticipantsService experimentDispatchParticipantsService;
    /**
@@ -85,6 +91,7 @@
        TResultWorkEvaluateQuery query = JSON.parseObject(param, TResultWorkEvaluateQuery.class);
        Long userId = tokenService.getLoginUser().getUserId();
        Integer roleType = tokenService.getLoginUser().getUser().getRoleType();
        query.setRoleType(roleType);
        if(roleType != 1){
            // 查询用户所在项目组
            List<TProjectTeamStaff> projectTeamStaffs = projectTeamStaffService.list(Wrappers.lambdaQuery(TProjectTeamStaff.class)
@@ -93,6 +100,9 @@
                // 查询项目组id
                List<String> teamIds = projectTeamStaffs.stream().map(TProjectTeamStaff::getTeamId).distinct().collect(Collectors.toList());
                query.setTeamIds(teamIds);
            }
            if(roleType == 4){
                query.setUserId(userId);
            }
        }
        return R.ok(tResultWorkEvaluateService.chemistEvaluateList(query));
@@ -108,6 +118,7 @@
        TResultWorkEvaluateQuery query = JSON.parseObject(param, TResultWorkEvaluateQuery.class);
        Long userId = tokenService.getLoginUser().getUserId();
        Integer roleType = tokenService.getLoginUser().getUser().getRoleType();
        query.setRoleType(roleType);
        if(roleType != 1){
            // 查询用户所在项目组
            List<TProjectTeamStaff> projectTeamStaffs = projectTeamStaffService.list(Wrappers.lambdaQuery(TProjectTeamStaff.class)
@@ -116,6 +127,9 @@
                // 查询项目组id
                List<String> teamIds = projectTeamStaffs.stream().map(TProjectTeamStaff::getTeamId).distinct().collect(Collectors.toList());
                query.setTeamIds(teamIds);
            }
            if(roleType == 5){
                query.setUserId(userId);
            }
        }
        return R.ok(tResultWorkEvaluateService.testerEvaluateList(query));
@@ -126,13 +140,99 @@
     */
    //@PreAuthorize("@ss.hasPermi('system:resultWorkEvaluate:add')")
    @Log(title = "实验结果工作评定管理-新增化验师、实验员工作评定", businessType = BusinessType.INSERT)
    @ApiOperation(value = "新增化验师、实验员工作评定", response = TQaTestItemDTO.class)
    @ApiOperation(value = "新增化验师、实验员工作评定", response = TResultWorkEvaluateDTO.class)
    @PostMapping(value = "/api/t-result-work-evaluate/add")
    public R<Boolean> add(@RequestBody String param) {
        TResultWorkEvaluateDTO dto = JSON.parseObject(param, TResultWorkEvaluateDTO.class);
        tResultWorkEvaluateService.save(dto);
        // 查询实验调度
        TExperimentDispatch dispatch = experimentDispatchService.getById(dto.getDispatchId());
        if(Objects.nonNull(dispatch)){
            // 修改结束时间
            dispatch.setExperimentEndTime(LocalDateTime.now());
            experimentDispatchService.updateById(dispatch);
        }
        return R.ok();
    }
    /**
     * 编辑化验师、实验员工作评定
     */
    //@PreAuthorize("@ss.hasPermi('system:resultWorkEvaluate:edit')")
    @Log(title = "实验结果工作评定管理-编辑化验师、实验员工作评定", businessType = BusinessType.UPDATE)
    @ApiOperation(value = "编辑化验师、实验员工作评定", response = TResultWorkEvaluateDTO.class)
    @PostMapping(value = "/api/t-result-work-evaluate/edit")
    public R<Boolean> edit(@RequestBody String param) {
        TResultWorkEvaluateDTO dto = JSON.parseObject(param, TResultWorkEvaluateDTO.class);
        tResultWorkEvaluateService.updateById(dto);
        // 查询实验调度
        TExperimentDispatch dispatch = experimentDispatchService.getById(dto.getDispatchId());
        if(Objects.nonNull(dispatch)){
            // 修改结束时间
            dispatch.setExperimentEndTime(LocalDateTime.now());
            experimentDispatchService.updateById(dispatch);
        }
        return R.ok();
    }
    /**
     * 删除化验师、实验员工作评定
     */
    //@PreAuthorize("@ss.hasPermi('system:resultWorkEvaluate:delete')")
    @Log(title = "实验结果工作评定管理-删除化验师、实验员工作评定", businessType = BusinessType.DELETE)
    @ApiOperation(value = "删除化验师、实验员工作评定")
    @DeleteMapping(value = "/open/t-result-work-evaluate/deleteById")
    public R<Boolean> deleteById(@RequestParam String id) {
        tResultWorkEvaluateService.removeById(id);
        return R.ok();
    }
    /**
     * 查看实验结果工作评定管理详情
     */
    //@PreAuthorize("@ss.hasPermi('system:testMethodConfirmSheet:detail')")
    @ApiOperation(value = "查看实验结果工作评定管理详情")
    @GetMapping(value = "/open/t-result-work-evaluate/getEvaluateDetailById")
    public R<TResultWorkEvaluateVO> getEvaluateDetailById(@RequestParam String id) {
        // 查询实验结果工作评定
        TResultWorkEvaluate resultWorkEvaluate = tResultWorkEvaluateService.getById(id);
        TResultWorkEvaluateVO tResultWorkEvaluateVO = new TResultWorkEvaluateVO();
        BeanUtils.copyProperties(resultWorkEvaluate, tResultWorkEvaluateVO);
        // 查询实验调度
        TExperimentDispatch experimentDispatch = experimentDispatchService.getById(resultWorkEvaluate.getDispatchId());
        // 查询实验调度信息
        if(Objects.nonNull(experimentDispatch)){
            // 查询课题方案名称
            TProjectProposal projectProposal = projectProposalService.getById(experimentDispatch.getProposalId());
            if(Objects.nonNull(projectProposal)){
                experimentDispatch.setProjectName(projectProposal.getProjectName());
                experimentDispatch.setProjectCode(projectProposal.getProjectCode());
            }
            // 查询参与人员
            List<TExperimentDispatchParticipants> tExperimentDispatchParticipants = experimentDispatchParticipantsService.list(Wrappers.lambdaQuery(TExperimentDispatchParticipants.class)
                    .eq(TExperimentDispatchParticipants::getDispatchId, experimentDispatch.getId()));
            List<Long> userIds1 = tExperimentDispatchParticipants.stream().map(TExperimentDispatchParticipants::getUserId).distinct().collect(Collectors.toList());
            List<SysUser> sysUsers1 = sysUserMapper.selectUserByIds(userIds1);
            String participantsName = sysUsers1.stream().map(SysUser::getNickName).collect(Collectors.joining(";"));
            experimentDispatch.setParticipantsName(participantsName);
        }
        tResultWorkEvaluateVO.setExperimentDispatch(experimentDispatch);
        // 查询被评定人
        SysUser sysUser = sysUserService.selectUserById(tResultWorkEvaluateVO.getUserId());
        if(tResultWorkEvaluateVO.getEvaluateType() == 2){
            // 化验师
            tResultWorkEvaluateVO.setChemistName(sysUser.getNickName());
        }else {
            // 实验员
            tResultWorkEvaluateVO.setTesterName(sysUser.getNickName());
        }
        return R.ok(tResultWorkEvaluateVO);
    }
    /**
@@ -151,7 +251,8 @@
            List<SysUser> sysUsers = sysUserService.selectListByNameAndUserIds(nickName,userIds);
            return R.ok(sysUsers);
        }
        return R.ok();
        List<SysUser> sysUsers = sysUserService.selectListByNameAndUserIds(null,userIds);
        return R.ok(sysUsers);
    }
    /**
     * 查询可评定的实验员
@@ -169,7 +270,8 @@
            List<SysUser> sysUsers = sysUserService.selectListByNameAndUserIds(nickName,userIds);
            return R.ok(sysUsers);
        }
        return R.ok();
        List<SysUser> sysUsers = sysUserService.selectListByNameAndUserIds(null,userIds);
        return R.ok(sysUsers);
    }
    /**
@@ -200,7 +302,7 @@
    }
    @ApiOperation(value = "项目组总积分分页列表", tags = "项目组总积分", response = TQaTestItemReportQuery.class)
    @ApiOperation(value = "项目组总积分分页列表", tags = "项目组总积分", response = TResultWorkEvaluateQuery.class)
    @PostMapping(value = "/api/t-result-work-evaluate/pageList")
    public R<PageInfo<TResultWorkEvaluateVO>> pageList(@RequestBody String param) {
        LoginUser loginUser = tokenService.getLoginUser();
@@ -208,11 +310,12 @@
        TResultWorkEvaluateQuery query = JSON.parseObject(param, TResultWorkEvaluateQuery.class);
        SysUser sysUser = sysUserService.selectUserById(loginUser.getUser().getUserId());
        if (sysUser.getRoleType() != 1) {
            List<String> collect = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getUserId, loginUser.getUser().getUserId()).list()
            List<String> teamIds = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getUserId, loginUser.getUser().getUserId()).list()
                    .stream().map(TProjectTeamStaff::getTeamId).collect(Collectors.toList());
            if (collect.isEmpty()) {
            if (teamIds.isEmpty()) {
                return R.ok(new PageInfo<>());
            }
            query.setTeamIds(teamIds);
        }
        return R.ok(tResultWorkEvaluateService.pageList(query));
    }
@@ -221,7 +324,7 @@
     * 查看取样记录详情
     */
    //@PreAuthorize("@ss.hasPermi('system:samplingRecord:detail')")
    @ApiOperation(value = "查看详情-顶部数据")
    @ApiOperation(value = "查看详情-顶部数据",response = TResultWorkEvaluateVO.class)
    @GetMapping(value = "/open/t-result-work-evaluate/getDetailById")
    public R<TResultWorkEvaluateDetailVO> getDetailById(@RequestParam String id) {
        TResultWorkEvaluateDetailVO tResultWorkEvaluateDetailVO = new TResultWorkEvaluateDetailVO();
@@ -229,7 +332,6 @@
        TResultWorkEvaluate resultWorkEvaluate = tResultWorkEvaluateService.getById(id);
        TProjectTeam projectTeam = projectTeamService.getById(resultWorkEvaluate.getTeamId());
        tResultWorkEvaluateDetailVO.setStartTime(projectTeam.getCreateTime());
        TProjectTeamStaff one = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getTeamId, resultWorkEvaluate.getTeamId()).eq(TProjectTeamStaff::getRoleType, 3).last("limit 1").one();
        List<Long> role4 = projectTeamStaffService.lambdaQuery()
                .eq(TProjectTeamStaff::getRoleType, 4).eq(TProjectTeamStaff::getTeamId, resultWorkEvaluate.getTeamId()).list()
                .stream().map(TProjectTeamStaff::getUserId).collect(Collectors.toList());
@@ -398,7 +500,6 @@
            switch (evaluateSix) {
                case 1:
                    temp1 -= 3;
                    temp5++;
                    if (tResultWorkEvaluate.getEvaluateType() == 1) {
                        temp2 -= 3;
                    }
@@ -415,9 +516,25 @@
        tResultWorkEvaluateDetailVO.setEngineerIntegral(temp2);
        tResultWorkEvaluateDetailVO.setChemistIntegral(temp3);
        tResultWorkEvaluateDetailVO.setTesterIntegral(temp4);
        tResultWorkEvaluateDetailVO.setTermination(temp5);
        if (!list.isEmpty()) {
            tResultWorkEvaluateDetailVO.setEndTime(list.get(0).getEvaluateTime());
        }
        // 查询项目组总的失败次数
        String teamId = resultWorkEvaluate.getTeamId();
        List<String> projectProposalIds = projectProposalService.lambdaQuery().eq(TProjectProposal::getTeamId, teamId).list()
                .stream().map(TProjectProposal::getId).collect(Collectors.toList());
        if (projectProposalIds.isEmpty()){
            tResultWorkEvaluateDetailVO.setTermination(0);
        }else{
            List<String> experimentDispatchIds = experimentDispatchService.lambdaQuery().in(TExperimentDispatch::getProposalId, projectProposalIds).list()
                    .stream().map(TExperimentDispatch::getId).collect(Collectors.toList());
            if (experimentDispatchIds.isEmpty()){
                tResultWorkEvaluateDetailVO.setTermination(0);
            }else{
                Long count = experimentSchemeService.lambdaQuery().in(TExperimentScheme::getDispatchId, experimentDispatchIds)
                        .eq(TExperimentScheme::getStatus, 3).count();
                tResultWorkEvaluateDetailVO.setTermination(count.intValue());
            }
        }
        return R.ok(tResultWorkEvaluateDetailVO);
@@ -431,14 +548,16 @@
        TResultWorkEvaluate resultWorkEvaluate = tResultWorkEvaluateService.getById(id);
        TProjectTeam projectTeam = projectTeamService.getById(resultWorkEvaluate.getTeamId());
        TProjectTeamStaff one = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getTeamId, resultWorkEvaluate.getTeamId()).eq(TProjectTeamStaff::getRoleType, 3).last("limit 1")
        TProjectTeamStaff projectTeamStaff = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getTeamId, resultWorkEvaluate.getTeamId()).eq(TProjectTeamStaff::getRoleType, 3).last("limit 1")
                .one();
        TProjectTeamStaff projectTeamStaff1 = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getTeamId, resultWorkEvaluate.getTeamId()).eq(TProjectTeamStaff::getRoleType, 2).last("limit 1")
                .one();
        tResultWorkEvaluateDetailVO.setStartTime(projectTeam.getCreateTime());
        Long userId = one.getUserId();
        Long userId = projectTeamStaff.getUserId();
        Long auditUserId = projectTeamStaff1.getUserId();
        List<TFeasibilityStudyReport> total = feasibilityStudyReportService.lambdaQuery()
                .eq(TFeasibilityStudyReport::getStatus, 3)
                .eq(TFeasibilityStudyReport::getEvaluatePersonId, userId).list();
                .eq(TFeasibilityStudyReport::getEvaluatePersonId, auditUserId).list();
        List<TResultWorkEvaluateDetailEngineerVO> tResultWorkEvaluateDetailEngineerVOS = new ArrayList<>();
        // 工艺可研
        TResultWorkEvaluateDetailEngineerVO tResultWorkEvaluateDetailEngineerVO = new TResultWorkEvaluateDetailEngineerVO();
@@ -455,8 +574,8 @@
        tResultWorkEvaluateDetailEngineerVO.setIntegral(tempDetail);
        if (!collect.isEmpty()) {
            tResultWorkEvaluateDetailEngineerVO.setEndTime(collect.get(collect.size() - 1).getEvaluateTime());
            tResultWorkEvaluateDetailEngineerVO.setStartTime(projectTeam.getCreateTime());
        }
        tResultWorkEvaluateDetailEngineerVO.setStartTime(projectTeam.getCreateTime());
        tResultWorkEvaluateDetailEngineerVOS.add(tResultWorkEvaluateDetailEngineerVO);
        // 工艺可行
@@ -494,26 +613,26 @@
        if (collect5.isEmpty()) {
            collect5.add("0");
        }
        List<String> collect6 = experimentDispatchService.lambdaQuery().in(TExperimentDispatch::getProposalId, collect5)
                .ne(TExperimentDispatch::getStatus, -1)
                .ne(TExperimentDispatch::getStatus, 1).list().stream().map(TExperimentDispatch::getId).collect(Collectors.toList());
        List<TExperimentDispatch> experimentDispatches1 = experimentDispatchService.lambdaQuery().in(TExperimentDispatch::getProposalId, collect5)
                .notIn(TExperimentDispatch::getStatus, -1,1,3).list();
        List<String> collect6 = experimentDispatches1.stream().map(TExperimentDispatch::getId).collect(Collectors.toList());
        if (collect6.isEmpty()) {
            collect6.add("0");
        }
        List<TResultWorkEvaluate> list1 = tResultWorkEvaluateService.lambdaQuery().in(TResultWorkEvaluate::getDispatchId, collect6).list();
        List<TResultWorkEvaluate> list1 = tResultWorkEvaluateService.lambdaQuery()
                .eq(TResultWorkEvaluate::getStatus, 1)
                .eq(TResultWorkEvaluate::getEvaluateType, 1)
                .in(TResultWorkEvaluate::getDispatchId, collect6).list();
        int tempDetail2 = 0;
        for (TResultWorkEvaluate tResultWorkEvaluate : list1) {
            Integer evaluateOne = tResultWorkEvaluate.getEvaluateOne();
            switch (evaluateOne) {
                case 1:
                    tempDetail2 += 2;
                    break;
                case 2:
                    tempDetail2 += 1;
                    break;
            }
            Integer evaluateTwo = tResultWorkEvaluate.getEvaluateTwo();
            switch (evaluateTwo) {
@@ -522,14 +641,12 @@
                    break;
                case 2:
                    tempDetail2 += 1;
                    break;
            }
            Integer evaluateThree = tResultWorkEvaluate.getEvaluateThree();
            switch (evaluateThree) {
                case 1:
                    tempDetail2 += 2;
                    break;
                case 2:
                    tempDetail2 += 1;
@@ -539,7 +656,6 @@
            switch (evaluateFour) {
                case 1:
                    tempDetail2 += 2;
                    break;
                case 2:
                    tempDetail2 += 1;
@@ -549,7 +665,6 @@
            switch (evaluateFive) {
                case 1:
                    tempDetail2 += 2;
                    break;
                case 2:
                    tempDetail2 += 1;
@@ -568,7 +683,7 @@
            tResultWorkEvaluateDetailEngineerVO2.setEndTime(list1.get(list1.size() - 1).getEvaluateTime());
        }
        tResultWorkEvaluateDetailEngineerVO2.setCount(list1.size());
        tResultWorkEvaluateDetailEngineerVO2.setCount(experimentDispatches1.size());
        tResultWorkEvaluateDetailEngineerVO2.setIntegral(tempDetail2);
        tResultWorkEvaluateDetailEngineerVOS.add(tResultWorkEvaluateDetailEngineerVO2);
@@ -579,14 +694,17 @@
        if (collect7.isEmpty()) {
            collect7.add("0");
        }
        List<String> collect8 = experimentDispatchService.lambdaQuery().in(TExperimentDispatch::getProposalId, collect7)
                .ne(TExperimentDispatch::getStatus, -1)
                .ne(TExperimentDispatch::getStatus, 1).list().stream().map(TExperimentDispatch::getId).collect(Collectors.toList());
        List<TExperimentDispatch> experimentDispatches2 = experimentDispatchService.lambdaQuery().in(TExperimentDispatch::getProposalId, collect7)
                .notIn(TExperimentDispatch::getStatus, -1,1,3).list();
        List<String> collect8 = experimentDispatches2.stream().map(TExperimentDispatch::getId).collect(Collectors.toList());
        if (collect8.isEmpty()) {
            collect8.add("0");
        }
        List<TResultWorkEvaluate> list3 = tResultWorkEvaluateService.lambdaQuery().in(TResultWorkEvaluate::getDispatchId, collect8).list();
        List<TResultWorkEvaluate> list3 = tResultWorkEvaluateService.lambdaQuery()
                .eq(TResultWorkEvaluate::getStatus, 1)
                .eq(TResultWorkEvaluate::getEvaluateType, 1)
                .in(TResultWorkEvaluate::getDispatchId, collect8).list();
        int tempDetail3 = 0;
        for (TResultWorkEvaluate tResultWorkEvaluate : list3) {
            Integer evaluateOne = tResultWorkEvaluate.getEvaluateOne();
@@ -652,23 +770,26 @@
            tResultWorkEvaluateDetailEngineerVO3.setStartTime(list3.get(0).getEvaluateTime());
            tResultWorkEvaluateDetailEngineerVO3.setEndTime(list3.get(list3.size() - 1).getEvaluateTime());
        }
        tResultWorkEvaluateDetailEngineerVO3.setCount(list3.size());
        tResultWorkEvaluateDetailEngineerVO3.setCount(experimentDispatches2.size());
        tResultWorkEvaluateDetailEngineerVO3.setIntegral(tempDetail3);
        tResultWorkEvaluateDetailEngineerVOS.add(tResultWorkEvaluateDetailEngineerVO3);
        // 验证试验阶段
        TResultWorkEvaluateDetailEngineerVO tResultWorkEvaluateDetailEngineerVO4 = new TResultWorkEvaluateDetailEngineerVO();
        List<String> collect10 = list2.stream().filter(e -> e.getProjectStage().equals(2)).map(TProjectProposal::getId).collect(Collectors.toList());
        List<String> collect10 = list2.stream().filter(e -> e.getProjectStage().equals(3)).map(TProjectProposal::getId).collect(Collectors.toList());
        if (collect10.isEmpty()) {
            collect10.add("0");
        }
        List<String> collect11 = experimentDispatchService.lambdaQuery().in(TExperimentDispatch::getProposalId, collect10)
                .ne(TExperimentDispatch::getStatus, -1)
                .ne(TExperimentDispatch::getStatus, 1).list().stream().map(TExperimentDispatch::getId).collect(Collectors.toList());
        List<TExperimentDispatch> experimentDispatches3 = experimentDispatchService.lambdaQuery().in(TExperimentDispatch::getProposalId, collect10)
                .notIn(TExperimentDispatch::getStatus, -1,1,3).list();
        List<String> collect11 = experimentDispatches3.stream().map(TExperimentDispatch::getId).collect(Collectors.toList());
        if (collect11.isEmpty()) {
            collect11.add("0");
        }
        List<TResultWorkEvaluate> list4 = tResultWorkEvaluateService.lambdaQuery().in(TResultWorkEvaluate::getDispatchId, collect11).list();
        List<TResultWorkEvaluate> list4 = tResultWorkEvaluateService.lambdaQuery()
                .eq(TResultWorkEvaluate::getStatus, 1)
                .eq(TResultWorkEvaluate::getEvaluateType, 1)
                .in(TResultWorkEvaluate::getDispatchId, collect11).list();
        int tempDetail4 = 0;
        for (TResultWorkEvaluate tResultWorkEvaluate : list4) {
            Integer evaluateOne = tResultWorkEvaluate.getEvaluateOne();
@@ -734,7 +855,7 @@
            tResultWorkEvaluateDetailEngineerVO4.setStartTime(list4.get(0).getEvaluateTime());
            tResultWorkEvaluateDetailEngineerVO4.setEndTime(list4.get(list4.size() - 1).getEvaluateTime());
        }
        tResultWorkEvaluateDetailEngineerVO4.setCount(list4.size());
        tResultWorkEvaluateDetailEngineerVO4.setCount(experimentDispatches3.size());
        tResultWorkEvaluateDetailEngineerVO4.setIntegral(tempDetail4);
        tResultWorkEvaluateDetailEngineerVOS.add(tResultWorkEvaluateDetailEngineerVO4);
        // 工艺开发工具
@@ -757,7 +878,7 @@
        tResultWorkEvaluateDetailEngineerVOS.add(tResultWorkEvaluateDetailEngineerVO5);
        // 验证与发布
        TResultWorkEvaluateDetailEngineerVO tResultWorkEvaluateDetailEngineerVO6 = new TResultWorkEvaluateDetailEngineerVO();
        List<TFeasibilityStudyReport> collect13 = total.stream().filter(e -> e.getReportType().equals(3)).collect(Collectors.toList());
        List<TFeasibilityStudyReport> collect13 = total.stream().filter(e -> e.getReportType().equals(4)).collect(Collectors.toList());
        int tempDetail16 = 0;
        for (TFeasibilityStudyReport tFeasibilityStudyReport : collect13) {
            if (StringUtils.hasLength(tFeasibilityStudyReport.getEvaluateScore())) {
@@ -791,6 +912,7 @@
        if (!list6.isEmpty()) {
            tResultWorkEvaluateDetailEngineerVO8.setStartTime(list6.get(0).getCreateTime());
            tResultWorkEvaluateDetailEngineerVO8.setEndTime(list6.get(list6.size() - 1).getCreateTime());
            tResultWorkEvaluateDetailEngineerVO8.setIntegral(list6.get(0).getEvaluateScore());
        }
        tResultWorkEvaluateDetailEngineerVOS.add(tResultWorkEvaluateDetailEngineerVO8);
        tResultWorkEvaluateDetailVO.setEngineerList(tResultWorkEvaluateDetailEngineerVOS);
@@ -806,7 +928,7 @@
        TProjectTeam projectTeam = projectTeamService.getById(resultWorkEvaluate.getTeamId());
        tResultWorkEvaluateDetailVO.setStartTime(projectTeam.getCreateTime());
        List<Long> role5 = projectTeamStaffService.lambdaQuery()
                .eq(TProjectTeamStaff::getRoleType, 5).eq(TProjectTeamStaff::getTeamId, resultWorkEvaluate.getTeamId()).list()
                .eq(TProjectTeamStaff::getRoleType, 4).eq(TProjectTeamStaff::getTeamId, resultWorkEvaluate.getTeamId()).list()
                .stream().map(TProjectTeamStaff::getUserId).collect(Collectors.toList());
        List<SysUser> user5 = new ArrayList<>();
        SysUser sysUser1 = sysUserService.selectUserById(tokenService.getLoginUser().getUserId());
@@ -823,11 +945,11 @@
        }
        List<TFeasibilityStudyReport> total = feasibilityStudyReportService.lambdaQuery()
                .eq(TFeasibilityStudyReport::getStatus, 3)
                .eq(TFeasibilityStudyReport::getTeamId, resultWorkEvaluate.getTeamId()).list();
        List<TResultWorkEvaluateDetailEngineerVO> tResultWorkEvaluateDetailEngineerVOS = new ArrayList<>();
//        List<TFeasibilityStudyReport> total = feasibilityStudyReportService.lambdaQuery()
//                .eq(TFeasibilityStudyReport::getStatus, 3)
//                .eq(TFeasibilityStudyReport::getTeamId, resultWorkEvaluate.getTeamId()).list();
        for (SysUser sysUser : user5) {
            List<TResultWorkEvaluateDetailEngineerVO> tResultWorkEvaluateDetailEngineerVOS = new ArrayList<>();
            TResultWorkEvaluateDetailUserVO tResultWorkEvaluateDetailUserVO = new TResultWorkEvaluateDetailUserVO();
            tResultWorkEvaluateDetailUserVO.setUserName(sysUser.getNickName());
            // 开发阶段
@@ -837,7 +959,7 @@
                    .eq(TResultWorkEvaluate::getUserId, sysUser.getUserId())
                    .eq(TResultWorkEvaluate::getTeamId, resultWorkEvaluate.getTeamId()).list();
            // 调度ids
            List<String> collect = list1.stream().map(TResultWorkEvaluate::getDispatchId).collect(Collectors.toList());
            List<String> collect = list1.stream().map(TResultWorkEvaluate::getDispatchId).distinct().collect(Collectors.toList());
            if (collect.isEmpty()) {
                collect.add("0");
            }
@@ -849,20 +971,22 @@
            status.add(4);
            status.add(5);
            // 课题方案ids
            List<String> collect6 = experimentDispatchService.lambdaQuery().in(TExperimentDispatch::getId, collect)
                    .ne(TExperimentDispatch::getStatus, -1)
                    .ne(TExperimentDispatch::getStatus, 1).list().stream().map(TExperimentDispatch::getProposalId).collect(Collectors.toList());
            List<TExperimentDispatch> experimentDispatches1 = experimentDispatchService.lambdaQuery().in(TExperimentDispatch::getId, collect)
                    .notIn(TExperimentDispatch::getStatus, -1,1,3).list();
            List<String> collect6 = experimentDispatches1.stream().map(TExperimentDispatch::getProposalId).distinct().collect(Collectors.toList());
            if (collect6.isEmpty()) {
                collect6.add("0");
            }
            List<TProjectProposal> list2 = projectProposalService.lambdaQuery().in(TProjectProposal::getId, collect6)
                    .notIn(TProjectProposal::getAuditStatus, status).list();
            List<String> collect5 = list2.stream().filter(e -> e.getProjectStage().equals(1)).map(TProjectProposal::getId).collect(Collectors.toList());
                    .notIn(TProjectProposal::getAuditStatus, status)
                    .list();
            List<String> collect5 = list2.stream().filter(e -> e.getProjectStage().equals(1)).map(TProjectProposal::getId).distinct().collect(Collectors.toList());
            if (collect5.isEmpty()) {
                collect5.add("0");
            }
            // 开发阶段调度ids
            List<String> collect1 = experimentDispatchService.lambdaQuery().in(TExperimentDispatch::getProposalId, collect5).list().stream().map(TExperimentDispatch::getId).collect(Collectors.toList());
            List<String> collect1 = experimentDispatchService.lambdaQuery().in(TExperimentDispatch::getProposalId, collect5)
                    .list().stream().map(TExperimentDispatch::getId).collect(Collectors.toList());
            if (collect1.isEmpty()) {
                collect1.add("0");
            }
@@ -928,31 +1052,32 @@
                        break;
                }
            }
            if (!list1.isEmpty()) {
                tResultWorkEvaluateDetailEngineerVO2.setEndTime(list1.get(list1.size() - 1).getEvaluateTime());
                tResultWorkEvaluateDetailEngineerVO2.setStartTime(list1.get(0).getEvaluateTime());
            if (!collect2.isEmpty()) {
                tResultWorkEvaluateDetailEngineerVO2.setEndTime(collect2.get(collect2.size() - 1).getEvaluateTime());
                tResultWorkEvaluateDetailEngineerVO2.setStartTime(collect2.get(0).getEvaluateTime());
            }
            tResultWorkEvaluateDetailEngineerVO2.setCount(collect5.size());
            tResultWorkEvaluateDetailEngineerVO2.setCount(experimentDispatches1.size());
            tResultWorkEvaluateDetailEngineerVO2.setIntegral(tempDetail2);
            tResultWorkEvaluateDetailEngineerVOS.add(tResultWorkEvaluateDetailEngineerVO2);
            // 中试试验阶段
            TResultWorkEvaluateDetailEngineerVO tResultWorkEvaluateDetailEngineerVO3 = new TResultWorkEvaluateDetailEngineerVO();
            List<String> collect7 = projectProposalService.lambdaQuery().in(TProjectProposal::getId, collect6)
                    .eq(TProjectProposal::getProjectStage, 2)
                    .notIn(TProjectProposal::getAuditStatus, status).list().stream().map(TProjectProposal::getId).collect(Collectors.toList());
            List<String> collect7 = list2.stream().filter(e -> e.getProjectStage().equals(2)).map(TProjectProposal::getId).collect(Collectors.toList());
            if (collect7.isEmpty()) {
                collect7.add("0");
            }
            List<String> collect8 = experimentDispatchService.lambdaQuery().in(TExperimentDispatch::getProposalId, collect7)
                    .ne(TExperimentDispatch::getStatus, -1)
                    .ne(TExperimentDispatch::getStatus, 1).list().stream().map(TExperimentDispatch::getId).collect(Collectors.toList());
            List<TExperimentDispatch> experimentDispatches2 = experimentDispatchService.lambdaQuery().in(TExperimentDispatch::getProposalId, collect7)
                    .notIn(TExperimentDispatch::getStatus, -1,1,3).list();
            List<String> collect8 = experimentDispatches2.stream().map(TExperimentDispatch::getId).collect(Collectors.toList());
            if (collect8.isEmpty()) {
                collect8.add("0");
            }
            List<TResultWorkEvaluate> list3 = tResultWorkEvaluateService.lambdaQuery()
                    .eq(TResultWorkEvaluate::getStatus, 1).in(TResultWorkEvaluate::getDispatchId, collect8).list();
                    .eq(TResultWorkEvaluate::getStatus, 1)
                    .eq(TResultWorkEvaluate::getEvaluateType, 2)
                    .eq(TResultWorkEvaluate::getUserId, sysUser.getUserId())
                    .in(TResultWorkEvaluate::getDispatchId, collect8).list();
            int tempDetail3 = 0;
            for (TResultWorkEvaluate tResultWorkEvaluate : list3) {
                Integer evaluateOne = tResultWorkEvaluate.getEvaluateOne();
@@ -1018,25 +1143,27 @@
                tResultWorkEvaluateDetailEngineerVO3.setStartTime(list3.get(0).getEvaluateTime());
                tResultWorkEvaluateDetailEngineerVO3.setEndTime(list3.get(list3.size() - 1).getEvaluateTime());
            }
            tResultWorkEvaluateDetailEngineerVO3.setCount(list3.size());
            tResultWorkEvaluateDetailEngineerVO3.setCount(experimentDispatches2.size());
            tResultWorkEvaluateDetailEngineerVO3.setIntegral(tempDetail3);
            tResultWorkEvaluateDetailEngineerVOS.add(tResultWorkEvaluateDetailEngineerVO3);
            // 验证试验阶段
            TResultWorkEvaluateDetailEngineerVO tResultWorkEvaluateDetailEngineerVO4 = new TResultWorkEvaluateDetailEngineerVO();
            List<String> collect10 = projectProposalService.lambdaQuery().in(TProjectProposal::getId, collect6)
                    .eq(TProjectProposal::getProjectStage, 2)
                    .notIn(TProjectProposal::getAuditStatus, status).list().stream().map(TProjectProposal::getId).collect(Collectors.toList());
            List<String> collect10 = list2.stream().filter(e -> e.getProjectStage().equals(3)).map(TProjectProposal::getId).collect(Collectors.toList());
            if (collect10.isEmpty()) {
                collect10.add("0");
            }
            List<String> collect11 = experimentDispatchService.lambdaQuery().in(TExperimentDispatch::getProposalId, collect10)
                    .ne(TExperimentDispatch::getStatus, -1)
                    .ne(TExperimentDispatch::getStatus, 1).list().stream().map(TExperimentDispatch::getId).collect(Collectors.toList());
            List<TExperimentDispatch> experimentDispatches3 = experimentDispatchService.lambdaQuery().in(TExperimentDispatch::getProposalId, collect10)
                    .notIn(TExperimentDispatch::getStatus, -1,1,3).list();
            List<String> collect11 = experimentDispatches3.stream().map(TExperimentDispatch::getId).collect(Collectors.toList());
            if (collect11.isEmpty()) {
                collect11.add("0");
            }
            List<TResultWorkEvaluate> list4 = tResultWorkEvaluateService.lambdaQuery().in(TResultWorkEvaluate::getDispatchId, collect11).list();
            List<TResultWorkEvaluate> list4 = tResultWorkEvaluateService.lambdaQuery()
                    .eq(TResultWorkEvaluate::getStatus, 1)
                    .eq(TResultWorkEvaluate::getEvaluateType, 2)
                    .eq(TResultWorkEvaluate::getUserId, sysUser.getUserId())
                    .in(TResultWorkEvaluate::getDispatchId, collect11).list();
            int tempDetail4 = 0;
            for (TResultWorkEvaluate tResultWorkEvaluate : list4) {
                Integer evaluateOne = tResultWorkEvaluate.getEvaluateOne();
@@ -1102,7 +1229,7 @@
                tResultWorkEvaluateDetailEngineerVO4.setStartTime(list4.get(0).getEvaluateTime());
                tResultWorkEvaluateDetailEngineerVO4.setEndTime(list4.get(list4.size() - 1).getEvaluateTime());
            }
            tResultWorkEvaluateDetailEngineerVO4.setCount(list4.size());
            tResultWorkEvaluateDetailEngineerVO4.setCount(experimentDispatches3.size());
            tResultWorkEvaluateDetailEngineerVO4.setIntegral(tempDetail4);
            tResultWorkEvaluateDetailEngineerVOS.add(tResultWorkEvaluateDetailEngineerVO4);
            // 项目检测项评定
@@ -1164,7 +1291,7 @@
            tResultWorkEvaluateDetailEngineerVOS.add(tResultWorkEvaluateDetailEngineerVO6);
            // 产品
            TResultWorkEvaluateDetailEngineerVO tResultWorkEvaluateDetailEngineerVO7 = new TResultWorkEvaluateDetailEngineerVO();
            List<TQaProduceReport> collect9 = list.stream().filter(e -> e.getReportType() == 1).collect(Collectors.toList());
            List<TQaProduceReport> collect9 = list.stream().filter(e -> e.getReportType() == 3).collect(Collectors.toList());
            if (!collect9.isEmpty()) {
                tResultWorkEvaluateDetailEngineerVO7.setStartTime(collect9.get(0).getEvaluateTime());
                tResultWorkEvaluateDetailEngineerVO7.setEndTime(collect9.get(collect9.size() - 1).getEvaluateTime());
@@ -1197,7 +1324,7 @@
        TProjectTeam projectTeam = projectTeamService.getById(resultWorkEvaluate.getTeamId());
        tResultWorkEvaluateDetailVO.setStartTime(projectTeam.getCreateTime());
        List<Long> role5 = projectTeamStaffService.lambdaQuery()
                .eq(TProjectTeamStaff::getRoleType, 4).eq(TProjectTeamStaff::getTeamId, resultWorkEvaluate.getTeamId()).list()
                .eq(TProjectTeamStaff::getRoleType, 5).eq(TProjectTeamStaff::getTeamId, resultWorkEvaluate.getTeamId()).list()
                .stream().map(TProjectTeamStaff::getUserId).collect(Collectors.toList());
        List<SysUser> user5 = new ArrayList<>();
        SysUser sysUser1 = sysUserService.selectUserById(tokenService.getLoginUser().getUserId());
@@ -1213,8 +1340,8 @@
            }
        }
        List<TResultWorkEvaluateDetailEngineerVO> tResultWorkEvaluateDetailEngineerVOS = new ArrayList<>();
        for (SysUser sysUser : user5) {
            List<TResultWorkEvaluateDetailEngineerVO> tResultWorkEvaluateDetailEngineerVOS = new ArrayList<>();
            TResultWorkEvaluateDetailUserVO tResultWorkEvaluateDetailUserVO = new TResultWorkEvaluateDetailUserVO();
            tResultWorkEvaluateDetailUserVO.setUserName(sysUser.getNickName());
            // 开发阶段
@@ -1236,9 +1363,9 @@
            status.add(4);
            status.add(5);
            // 课题方案ids
            List<String> collect6 = experimentDispatchService.lambdaQuery().in(TExperimentDispatch::getId, collect)
                    .ne(TExperimentDispatch::getStatus, -1)
                    .ne(TExperimentDispatch::getStatus, 1).list().stream().map(TExperimentDispatch::getProposalId).collect(Collectors.toList());
            List<TExperimentDispatch> experimentDispatches1 = experimentDispatchService.lambdaQuery().in(TExperimentDispatch::getId, collect)
                    .notIn(TExperimentDispatch::getStatus, -1,1,3).list();
            List<String> collect6 = experimentDispatches1.stream().map(TExperimentDispatch::getProposalId).collect(Collectors.toList());
            if (collect6.isEmpty()) {
                collect6.add("0");
            }
@@ -1320,26 +1447,27 @@
                tResultWorkEvaluateDetailEngineerVO2.setEndTime(list1.get(list1.size() - 1).getEvaluateTime());
            }
            tResultWorkEvaluateDetailEngineerVO2.setStartTime(projectTeam.getCreateTime());
            tResultWorkEvaluateDetailEngineerVO2.setCount(collect5.size());
            tResultWorkEvaluateDetailEngineerVO2.setCount(experimentDispatches1.size());
            tResultWorkEvaluateDetailEngineerVO2.setIntegral(tempDetail2);
            tResultWorkEvaluateDetailEngineerVOS.add(tResultWorkEvaluateDetailEngineerVO2);
            // 中试试验阶段
            TResultWorkEvaluateDetailEngineerVO tResultWorkEvaluateDetailEngineerVO3 = new TResultWorkEvaluateDetailEngineerVO();
            List<String> collect7 = projectProposalService.lambdaQuery().in(TProjectProposal::getId, collect6)
                    .eq(TProjectProposal::getProjectStage, 2)
                    .notIn(TProjectProposal::getAuditStatus, status).list().stream().map(TProjectProposal::getId).collect(Collectors.toList());
            List<String> collect7 = list2.stream().filter(e -> e.getProjectStage().equals(2)).map(TProjectProposal::getId).collect(Collectors.toList());
            if (collect7.isEmpty()) {
                collect7.add("0");
            }
            List<String> collect8 = experimentDispatchService.lambdaQuery().in(TExperimentDispatch::getProposalId, collect7)
                    .ne(TExperimentDispatch::getStatus, -1)
                    .ne(TExperimentDispatch::getStatus, 1).list().stream().map(TExperimentDispatch::getId).collect(Collectors.toList());
            List<TExperimentDispatch> experimentDispatches2 = experimentDispatchService.lambdaQuery().in(TExperimentDispatch::getProposalId, collect7)
                    .notIn(TExperimentDispatch::getStatus, -1,2,3).list();
            List<String> collect8 = experimentDispatches2.stream().map(TExperimentDispatch::getId).collect(Collectors.toList());
            if (collect8.isEmpty()) {
                collect8.add("0");
            }
            List<TResultWorkEvaluate> list3 = tResultWorkEvaluateService.lambdaQuery()
                    .eq(TResultWorkEvaluate::getStatus, 1).in(TResultWorkEvaluate::getDispatchId, collect8).list();
                    .eq(TResultWorkEvaluate::getStatus, 1)
                    .eq(TResultWorkEvaluate::getEvaluateType, 3)
                    .eq(TResultWorkEvaluate::getUserId, sysUser.getUserId())
                    .in(TResultWorkEvaluate::getDispatchId, collect8).list();
            int tempDetail3 = 0;
            for (TResultWorkEvaluate tResultWorkEvaluate : list3) {
                Integer evaluateOne = tResultWorkEvaluate.getEvaluateOne();
@@ -1405,25 +1533,27 @@
                tResultWorkEvaluateDetailEngineerVO3.setStartTime(list3.get(0).getEvaluateTime());
                tResultWorkEvaluateDetailEngineerVO3.setEndTime(list3.get(list3.size() - 1).getEvaluateTime());
            }
            tResultWorkEvaluateDetailEngineerVO3.setCount(list3.size());
            tResultWorkEvaluateDetailEngineerVO3.setCount(experimentDispatches2.size());
            tResultWorkEvaluateDetailEngineerVO3.setIntegral(tempDetail3);
            tResultWorkEvaluateDetailEngineerVOS.add(tResultWorkEvaluateDetailEngineerVO3);
            // 验证试验阶段
            TResultWorkEvaluateDetailEngineerVO tResultWorkEvaluateDetailEngineerVO4 = new TResultWorkEvaluateDetailEngineerVO();
            List<String> collect10 = projectProposalService.lambdaQuery().in(TProjectProposal::getId, collect6)
                    .eq(TProjectProposal::getProjectStage, 2)
                    .notIn(TProjectProposal::getAuditStatus, status).list().stream().map(TProjectProposal::getId).collect(Collectors.toList());
            List<String> collect10 = list2.stream().filter(e -> e.getProjectStage().equals(2)).map(TProjectProposal::getId).collect(Collectors.toList());
            if (collect10.isEmpty()) {
                collect10.add("0");
            }
            List<String> collect11 = experimentDispatchService.lambdaQuery().in(TExperimentDispatch::getProposalId, collect10)
                    .ne(TExperimentDispatch::getStatus, -1)
                    .ne(TExperimentDispatch::getStatus, 1).list().stream().map(TExperimentDispatch::getId).collect(Collectors.toList());
            List<TExperimentDispatch> experimentDispatches3 = experimentDispatchService.lambdaQuery().in(TExperimentDispatch::getProposalId, collect10)
                    .notIn(TExperimentDispatch::getStatus, -1,1,3).list();
            List<String> collect11 = experimentDispatches3.stream().map(TExperimentDispatch::getId).collect(Collectors.toList());
            if (collect11.isEmpty()) {
                collect11.add("0");
            }
            List<TResultWorkEvaluate> list4 = tResultWorkEvaluateService.lambdaQuery().in(TResultWorkEvaluate::getDispatchId, collect11).list();
            List<TResultWorkEvaluate> list4 = tResultWorkEvaluateService.lambdaQuery()
                    .eq(TResultWorkEvaluate::getStatus, 1)
                    .eq(TResultWorkEvaluate::getEvaluateType, 3)
                    .eq(TResultWorkEvaluate::getUserId, sysUser.getUserId())
                    .in(TResultWorkEvaluate::getDispatchId, collect11).list();
            int tempDetail4 = 0;
            for (TResultWorkEvaluate tResultWorkEvaluate : list4) {
                Integer evaluateOne = tResultWorkEvaluate.getEvaluateOne();
@@ -1489,7 +1619,7 @@
                tResultWorkEvaluateDetailEngineerVO4.setStartTime(list4.get(0).getEvaluateTime());
                tResultWorkEvaluateDetailEngineerVO4.setEndTime(list4.get(list4.size() - 1).getEvaluateTime());
            }
            tResultWorkEvaluateDetailEngineerVO4.setCount(list4.size());
            tResultWorkEvaluateDetailEngineerVO4.setCount(experimentDispatches3.size());
            tResultWorkEvaluateDetailEngineerVO4.setIntegral(tempDetail4);
            tResultWorkEvaluateDetailEngineerVOS.add(tResultWorkEvaluateDetailEngineerVO4);
            // 其他任务
@@ -1497,8 +1627,8 @@
            TResultWorkEvaluateDetailEngineerVO tResultWorkEvaluateDetailEngineerVO5 = new TResultWorkEvaluateDetailEngineerVO();
            tResultWorkEvaluateDetailEngineerVO5.setCount(list.size());
            if (!list.isEmpty()) {
                tResultWorkEvaluateDetailEngineerVO5.setStartTime(list.get(0).getEvaluateTime());
                tResultWorkEvaluateDetailEngineerVO5.setEndTime(list.get(list.size() - 1).getEvaluateTime());
                tResultWorkEvaluateDetailEngineerVO5.setStartTime(list.get(0).getCreateTime());
                tResultWorkEvaluateDetailEngineerVO5.setEndTime(list.get(list.size() - 1).getCreateTime());
            }
            int temp = 0;
@@ -1506,7 +1636,7 @@
                temp += tTesterOtherTask.getEvaluateScore();
            }
            tResultWorkEvaluateDetailEngineerVO5.setIntegral(temp);
            tResultWorkEvaluateDetailEngineerVOS.add(tResultWorkEvaluateDetailEngineerVO4);
            tResultWorkEvaluateDetailEngineerVOS.add(tResultWorkEvaluateDetailEngineerVO5);
            tResultWorkEvaluateDetailUserVO.setList(tResultWorkEvaluateDetailEngineerVOS);
            tResultWorkEvaluateDetailUserVOS.add(tResultWorkEvaluateDetailUserVO);
        }