无关风月
6 天以前 6ea5493a8ca2b3231e482fda98b1388af1e7f9ff
项目总积分
6个文件已修改
5个文件已添加
1008 ■■■■■ 已修改文件
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TResultWorkEvaluateController.java 620 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TResultWorkEvaluateMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TResultWorkEvaluate.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/query/TResultWorkEvaluateQuery.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/TResultWorkEvaluateService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TTesterWorkEvaluateServiceImpl.java 199 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/vo/TResultWorkEvaluateDetailEngineerVO.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/vo/TResultWorkEvaluateDetailUserVO.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/vo/TResultWorkEvaluateDetailVO.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/vo/TResultWorkEvaluateVO.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/TResultWorkEvaluateMapper.xml 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TResultWorkEvaluateController.java
@@ -1,9 +1,32 @@
package com.ruoyi.web.controller.api;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
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.framework.web.service.TokenService;
import com.ruoyi.system.model.*;
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 org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import io.swagger.annotations.ApiOperation;
import io.swagger.models.auth.In;
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.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
 * <p>
@@ -17,6 +40,599 @@
@RestController
@RequestMapping("/t-result-work-evaluate")
public class TResultWorkEvaluateController {
    @Resource
    private TResultWorkEvaluateService tResultWorkEvaluateService;
    @Resource
    private TokenService tokenService;
    @Resource
    private TFeasibilityStudyReportService feasibilityStudyReportService;
    @Resource
    private TExperimentResultReportService experimentResultReportService;
    @Resource
    private TProjectApprovalReportService projectApprovalReportService;
    @Resource
    private TExperimentDispatchService experimentDispatchService;
    @Resource
    private TClinicalTrialPointsService clinicalTrialPointsService;
    @Resource
    private TProjectProposalService projectProposalService;
    private final TProjectTeamService projectTeamService;
    private final TProjectTeamStaffService projectTeamStaffService;
    private final ISysUserService sysUserService;
    @Autowired
    public TResultWorkEvaluateController(TProjectTeamService projectTeamService, TProjectTeamStaffService projectTeamStaffService, ISysUserService sysUserService) {
        this.projectTeamService = projectTeamService;
        this.projectTeamStaffService = projectTeamStaffService;
        this.sysUserService = sysUserService;
    }
    @ApiOperation(value = "实验员工作评定管理分页列表", response = TQaTestItemReportQuery.class)
    @PostMapping(value = "/api/t-result-work-evaluate/pageList")
    public R<PageInfo<TResultWorkEvaluateVO>> pageList(@RequestBody String param) {
        LoginUser loginUser = tokenService.getLoginUser();
        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()
                    .stream().map(TProjectTeamStaff::getTeamId).collect(Collectors.toList());
            if (collect.isEmpty()){
                return R.ok(new PageInfo<>());
            }
        }
        return R.ok(tResultWorkEvaluateService.pageList(query));
    }
    /**
     * 查看取样记录详情
     */
    //@PreAuthorize("@ss.hasPermi('system:samplingRecord:detail')")
    @ApiOperation(value = "查看详情")
    @GetMapping(value = "/open/t-result-work-evaluate/getDetailById")
    public R<TResultWorkEvaluateDetailVO> getDetailById(@RequestParam String id) {
        TResultWorkEvaluateDetailVO tResultWorkEvaluateDetailVO = new TResultWorkEvaluateDetailVO();
        TResultWorkEvaluate resultWorkEvaluate = tResultWorkEvaluateService.getById(id);
        TProjectTeam projectTeam = projectTeamService.getById(resultWorkEvaluate.getTeamId());
        tResultWorkEvaluateDetailVO.setStartTime(projectTeam.getCreateTime());
        TProjectTeamStaff one = projectTeamStaffService.lambdaQuery().eq(TProjectTeamStaff::getRoleType, 3).last("limit 1").one();
        Long userId = one.getUserId();
        List<TResultWorkEvaluate> list = tResultWorkEvaluateService.lambdaQuery().eq(TResultWorkEvaluate::getTeamId, resultWorkEvaluate.getTeamId())
                .eq(TResultWorkEvaluate::getStatus,1).orderByDesc(TResultWorkEvaluate::getEvaluateTime).list();
        int temp1=0;
        int temp2=0;
        int temp3=0;
        int temp4=0;
        int temp5=0;
        for (TResultWorkEvaluate tResultWorkEvaluate : list) {
            Integer evaluateOne = tResultWorkEvaluate.getEvaluateOne();
            switch (evaluateOne){
                case 1:
                    if (tResultWorkEvaluate.getEvaluateType()==1){
                        temp2+=2;
                    }
                    if (tResultWorkEvaluate.getEvaluateType()==2){
                        temp3+=2;
                    }
                    if (tResultWorkEvaluate.getEvaluateType()==3){
                        temp4+=2;
                    }
                    temp1+=2;
                    break;
                case 2:
                    temp1+=1;
                    if (tResultWorkEvaluate.getEvaluateType()==1){
                        temp2+=1;
                    }
                    if (tResultWorkEvaluate.getEvaluateType()==2){
                        temp3+=1;
                    }
                    if (tResultWorkEvaluate.getEvaluateType()==3){
                        temp4+=1;
                    }
                    break;
            }
            Integer evaluateTwo = tResultWorkEvaluate.getEvaluateTwo();
            switch (evaluateTwo){
                case 1:
                    temp1+=2;
                    if (tResultWorkEvaluate.getEvaluateType()==1){
                        temp2+=2;
                    }
                    if (tResultWorkEvaluate.getEvaluateType()==2){
                        temp3+=2;
                    }
                    if (tResultWorkEvaluate.getEvaluateType()==3){
                        temp4+=2;
                    }
                    break;
                case 2:
                    temp1+=1;
                    if (tResultWorkEvaluate.getEvaluateType()==1){
                        temp2+=1;
                    }
                    if (tResultWorkEvaluate.getEvaluateType()==2){
                        temp3+=1;
                    }
                    if (tResultWorkEvaluate.getEvaluateType()==3){
                        temp4+=1;
                    }
                    break;
            }
            Integer evaluateThree = tResultWorkEvaluate.getEvaluateThree();
            switch (evaluateThree){
                case 1:
                    temp1+=2;
                    if (tResultWorkEvaluate.getEvaluateType()==1){
                        temp2+=2;
                    }
                    if (tResultWorkEvaluate.getEvaluateType()==2){
                        temp3+=2;
                    }
                    if (tResultWorkEvaluate.getEvaluateType()==3){
                        temp4+=2;
                    }
                    break;
                case 2:
                    temp1+=1;
                    if (tResultWorkEvaluate.getEvaluateType()==1){
                        temp2+=1;
                    }
                    if (tResultWorkEvaluate.getEvaluateType()==2){
                        temp3+=1;
                    }
                    if (tResultWorkEvaluate.getEvaluateType()==3){
                        temp4+=1;
                    }
                    break;
            }
            Integer evaluateFour = tResultWorkEvaluate.getEvaluateFour();
            switch (evaluateFour){
                case 1:
                    temp1+=2;
                    if (tResultWorkEvaluate.getEvaluateType()==1){
                        temp2+=2;
                    }
                    if (tResultWorkEvaluate.getEvaluateType()==2){
                        temp3+=2;
                    }
                    if (tResultWorkEvaluate.getEvaluateType()==3){
                        temp4+=2;
                    }
                    break;
                case 2:
                    temp1+=1;
                    if (tResultWorkEvaluate.getEvaluateType()==1){
                        temp2+=1;
                    }
                    if (tResultWorkEvaluate.getEvaluateType()==2){
                        temp3+=1;
                    }
                    if (tResultWorkEvaluate.getEvaluateType()==3){
                        temp4+=1;
                    }
                    break;
            }
            Integer evaluateFive = tResultWorkEvaluate.getEvaluateFive();
            switch (evaluateFive){
                case 1:
                    temp1+=2;
                    if (tResultWorkEvaluate.getEvaluateType()==1){
                        temp2+=2;
                    }
                    if (tResultWorkEvaluate.getEvaluateType()==2){
                        temp3+=2;
                    }
                    if (tResultWorkEvaluate.getEvaluateType()==3){
                        temp4+=2;
                    }
                    break;
                case 2:
                    temp1+=1;
                    if (tResultWorkEvaluate.getEvaluateType()==1){
                        temp2+=1;
                    }
                    if (tResultWorkEvaluate.getEvaluateType()==2){
                        temp3+=1;
                    }
                    if (tResultWorkEvaluate.getEvaluateType()==3){
                        temp4+=1;
                    }
                    break;
            }
            Integer evaluateSix = tResultWorkEvaluate.getEvaluateSix();
            switch (evaluateSix){
                case 1:
                    temp1-=3;
                    temp5++;
                    if (tResultWorkEvaluate.getEvaluateType()==1){
                        temp2-=3;
                    }
                    if (tResultWorkEvaluate.getEvaluateType()==2){
                        temp3-=3;
                    }
                    if (tResultWorkEvaluate.getEvaluateType()==3){
                        temp4-=3;
                    }
                    break;
            }
        }
        tResultWorkEvaluateDetailVO.setTeamIntegral(temp1);
        tResultWorkEvaluateDetailVO.setEngineerIntegral(temp2);
        tResultWorkEvaluateDetailVO.setChemistIntegral(temp3);
        tResultWorkEvaluateDetailVO.setTesterIntegral(temp4);
        tResultWorkEvaluateDetailVO.setTermination(temp5);
        if (!list.isEmpty()){
            tResultWorkEvaluateDetailVO.setEndTime(list.get(0).getEvaluateTime());
        }
        List<TFeasibilityStudyReport> total = feasibilityStudyReportService.lambdaQuery()
                .eq(TFeasibilityStudyReport::getStatus,3)
                .eq(TFeasibilityStudyReport::getEvaluatePersonId, userId).list();
        List<TResultWorkEvaluateDetailEngineerVO> tResultWorkEvaluateDetailEngineerVOS = new ArrayList<>();
        // 工艺可研
        TResultWorkEvaluateDetailEngineerVO tResultWorkEvaluateDetailEngineerVO = new TResultWorkEvaluateDetailEngineerVO();
        List<TFeasibilityStudyReport> collect = total.stream().filter(e -> e.getReportType().equals(1)).collect(Collectors.toList());
        int  tempDetail= 0 ;
        for (TFeasibilityStudyReport tFeasibilityStudyReport : collect) {
            if (StringUtils.hasLength(tFeasibilityStudyReport.getEvaluateScore())){
                for (String s : tFeasibilityStudyReport.getEvaluateScore().split(",")) {
                    tempDetail+=Integer.parseInt(s);
                }
            }
        }
        tResultWorkEvaluateDetailEngineerVO.setCount(collect.size());
        tResultWorkEvaluateDetailEngineerVO.setIntegral(tempDetail);
        if (!collect.isEmpty()){
            tResultWorkEvaluateDetailEngineerVO.setEndTime(collect.get(collect.size()-1).getEvaluateTime());
        }
        tResultWorkEvaluateDetailEngineerVO.setStartTime(projectTeam.getCreateTime());
        tResultWorkEvaluateDetailEngineerVOS.add(tResultWorkEvaluateDetailEngineerVO);
        // 工艺可行
        TResultWorkEvaluateDetailEngineerVO tResultWorkEvaluateDetailEngineerVO1 = new TResultWorkEvaluateDetailEngineerVO();
        List<TFeasibilityStudyReport> collect1 = total.stream().filter(e -> e.getReportType().equals(2)).collect(Collectors.toList());
        int  tempDetail1= 0 ;
        for (TFeasibilityStudyReport tFeasibilityStudyReport : collect1) {
            if (StringUtils.hasLength(tFeasibilityStudyReport.getEvaluateScore())){
                for (String s : tFeasibilityStudyReport.getEvaluateScore().split(",")) {
                    tempDetail1+=Integer.parseInt(s);
                }
            }
        }
        tResultWorkEvaluateDetailEngineerVO1.setCount(collect1.size());
        tResultWorkEvaluateDetailEngineerVO1.setIntegral(tempDetail1);
        if (!collect1.isEmpty()){
            tResultWorkEvaluateDetailEngineerVO1.setEndTime(collect1.get(collect1.size()-1).getEvaluateTime());
        }
        tResultWorkEvaluateDetailEngineerVO1.setStartTime(projectTeam.getCreateTime());
        tResultWorkEvaluateDetailEngineerVOS.add(tResultWorkEvaluateDetailEngineerVO1);
        // 开发阶段
        TResultWorkEvaluateDetailEngineerVO tResultWorkEvaluateDetailEngineerVO2 = new TResultWorkEvaluateDetailEngineerVO();
        List<Integer> status = new ArrayList<>();
        status.add(-1);
        status.add(1);
        status.add(3);
        status.add(4);
        status.add(5);
        List<TProjectProposal> list2 = projectProposalService.lambdaQuery().eq(TProjectProposal::getCommitUserId, userId)
                .notIn(TProjectProposal::getAuditStatus, status).list();
        List<String> collect5 = list2.stream().filter(e -> e.getProjectStage().equals(1)).map(TProjectProposal::getId).collect(Collectors.toList());
        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());
        if (collect6.isEmpty()){
            collect6.add("0");
        }
        List<Integer> status1 = new ArrayList<>();
        status1.add(-1);
        status1.add(1);
        status1.add(2);
        status1.add(4);
        List<TResultWorkEvaluate> list1 = tResultWorkEvaluateService.lambdaQuery().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){
                case 1:
                    tempDetail2+=2;
                    break;
                case 2:
                    tempDetail2+=1;
                    break;
            }
            Integer evaluateThree = tResultWorkEvaluate.getEvaluateThree();
            switch (evaluateThree){
                case 1:
                    tempDetail2+=2;
                    break;
                case 2:
                    tempDetail2+=1;
                    break;
            }
            Integer evaluateFour = tResultWorkEvaluate.getEvaluateFour();
            switch (evaluateFour){
                case 1:
                    tempDetail2+=2;
                    break;
                case 2:
                    tempDetail2+=1;
                    break;
            }
            Integer evaluateFive = tResultWorkEvaluate.getEvaluateFive();
            switch (evaluateFive){
                case 1:
                    tempDetail2+=2;
                    break;
                case 2:
                    tempDetail2+=1;
                    break;
            }
            Integer evaluateSix = tResultWorkEvaluate.getEvaluateSix();
            switch (evaluateSix){
                case 1:
                    tempDetail2-=3;
                    break;
            }
        }
        if (!list1.isEmpty()){
            tResultWorkEvaluateDetailEngineerVO2.setEndTime(list1.get(list1.size()-1).getEvaluateTime());
        }
        tResultWorkEvaluateDetailEngineerVO2.setStartTime(projectTeam.getCreateTime());
        tResultWorkEvaluateDetailEngineerVO2.setCount(list1.size());
        tResultWorkEvaluateDetailEngineerVO2.setIntegral(tempDetail2);
        tResultWorkEvaluateDetailEngineerVOS.add(tResultWorkEvaluateDetailEngineerVO2);
        // 中试试验阶段
        TResultWorkEvaluateDetailEngineerVO tResultWorkEvaluateDetailEngineerVO3 = new TResultWorkEvaluateDetailEngineerVO();
        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());
        if (collect8.isEmpty()){
            collect8.add("0");
        }
        List<Integer> status2 = new ArrayList<>();
        status2.add(-1);
        status2.add(1);
        status2.add(2);
        status2.add(4);
        List<TResultWorkEvaluate> list3 = tResultWorkEvaluateService.lambdaQuery().in(TResultWorkEvaluate::getDispatchId, collect8).list();
        int tempDetail3 = 0;
        for (TResultWorkEvaluate tResultWorkEvaluate : list3) {
            Integer evaluateOne = tResultWorkEvaluate.getEvaluateOne();
            switch (evaluateOne){
                case 1:
                    tempDetail3+=2;
                    break;
                case 2:
                    tempDetail3+=1;
                    break;
            }
            Integer evaluateTwo = tResultWorkEvaluate.getEvaluateTwo();
            switch (evaluateTwo){
                case 1:
                    tempDetail3+=2;
                    break;
                case 2:
                    tempDetail3+=1;
                    break;
            }
            Integer evaluateThree = tResultWorkEvaluate.getEvaluateThree();
            switch (evaluateThree){
                case 1:
                    tempDetail3+=2;
                    break;
                case 2:
                    tempDetail3+=1;
                    break;
            }
            Integer evaluateFour = tResultWorkEvaluate.getEvaluateFour();
            switch (evaluateFour){
                case 1:
                    tempDetail3+=2;
                    break;
                case 2:
                    tempDetail3+=1;
                    break;
            }
            Integer evaluateFive = tResultWorkEvaluate.getEvaluateFive();
            switch (evaluateFive){
                case 1:
                    tempDetail3+=2;
                    break;
                case 2:
                    tempDetail3+=1;
                    break;
            }
            Integer evaluateSix = tResultWorkEvaluate.getEvaluateSix();
            switch (evaluateSix){
                case 1:
                    tempDetail3-=3;
                    break;
            }
        }
        if (!list3.isEmpty()){
            tResultWorkEvaluateDetailEngineerVO3.setStartTime(list3.get(0).getEvaluateTime());
            tResultWorkEvaluateDetailEngineerVO3.setEndTime(list3.get(list3.size()-1).getEvaluateTime());
        }
        tResultWorkEvaluateDetailEngineerVO3.setCount(list3.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());
        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());
        if (collect11.isEmpty()){
            collect11.add("0");
        }
        List<TResultWorkEvaluate> list4 = tResultWorkEvaluateService.lambdaQuery().in(TResultWorkEvaluate::getDispatchId, collect11).list();
        int tempDetail4 = 0;
        for (TResultWorkEvaluate tResultWorkEvaluate : list4) {
            Integer evaluateOne = tResultWorkEvaluate.getEvaluateOne();
            switch (evaluateOne){
                case 1:
                    tempDetail4+=2;
                    break;
                case 2:
                    tempDetail4+=1;
                    break;
            }
            Integer evaluateTwo = tResultWorkEvaluate.getEvaluateTwo();
            switch (evaluateTwo){
                case 1:
                    tempDetail4+=2;
                    break;
                case 2:
                    tempDetail4+=1;
                    break;
            }
            Integer evaluateThree = tResultWorkEvaluate.getEvaluateThree();
            switch (evaluateThree){
                case 1:
                    tempDetail4+=2;
                    break;
                case 2:
                    tempDetail4+=1;
                    break;
            }
            Integer evaluateFour = tResultWorkEvaluate.getEvaluateFour();
            switch (evaluateFour){
                case 1:
                    tempDetail4+=2;
                    break;
                case 2:
                    tempDetail4+=1;
                    break;
            }
            Integer evaluateFive = tResultWorkEvaluate.getEvaluateFive();
            switch (evaluateFive){
                case 1:
                    tempDetail4+=2;
                    break;
                case 2:
                    tempDetail4+=1;
                    break;
            }
            Integer evaluateSix = tResultWorkEvaluate.getEvaluateSix();
            switch (evaluateSix){
                case 1:
                    tempDetail4-=3;
                    break;
            }
        }
        if (!list4.isEmpty()){
            tResultWorkEvaluateDetailEngineerVO4.setStartTime(list4.get(0).getEvaluateTime());
            tResultWorkEvaluateDetailEngineerVO4.setEndTime(list4.get(list4.size()-1).getEvaluateTime());
        }
        tResultWorkEvaluateDetailEngineerVO4.setCount(list4.size());
        tResultWorkEvaluateDetailEngineerVO4.setIntegral(tempDetail4);
        tResultWorkEvaluateDetailEngineerVOS.add(tResultWorkEvaluateDetailEngineerVO4);
        // 工艺开发工具
        TResultWorkEvaluateDetailEngineerVO tResultWorkEvaluateDetailEngineerVO5 = new TResultWorkEvaluateDetailEngineerVO();
        List<TFeasibilityStudyReport> collect12 = total.stream().filter(e -> e.getReportType().equals(3)).collect(Collectors.toList());
        int  tempDetail15= 0 ;
        for (TFeasibilityStudyReport tFeasibilityStudyReport : collect12) {
            if (StringUtils.hasLength(tFeasibilityStudyReport.getEvaluateScore())){
                for (String s : tFeasibilityStudyReport.getEvaluateScore().split(",")) {
                    tempDetail15+=Integer.parseInt(s);
                }
            }
        }
        tResultWorkEvaluateDetailEngineerVO5.setCount(collect12.size());
        tResultWorkEvaluateDetailEngineerVO5.setIntegral(tempDetail15);
        if (!collect12.isEmpty()){
            tResultWorkEvaluateDetailEngineerVO5.setStartTime(collect12.get(0).getEvaluateTime());
            tResultWorkEvaluateDetailEngineerVO5.setEndTime(collect12.get(collect12.size()-1).getEvaluateTime());
        }
        tResultWorkEvaluateDetailEngineerVOS.add(tResultWorkEvaluateDetailEngineerVO5);
        // 验证与发布
        TResultWorkEvaluateDetailEngineerVO tResultWorkEvaluateDetailEngineerVO6 = new TResultWorkEvaluateDetailEngineerVO();
        List<TFeasibilityStudyReport> collect13 = total.stream().filter(e -> e.getReportType().equals(3)).collect(Collectors.toList());
        int  tempDetail16= 0 ;
        for (TFeasibilityStudyReport tFeasibilityStudyReport : collect13) {
            if (StringUtils.hasLength(tFeasibilityStudyReport.getEvaluateScore())){
                for (String s : tFeasibilityStudyReport.getEvaluateScore().split(",")) {
                    tempDetail16+=Integer.parseInt(s);
                }
            }
        }
        tResultWorkEvaluateDetailEngineerVO6.setCount(collect13.size());
        tResultWorkEvaluateDetailEngineerVO6.setIntegral(tempDetail16);
        if (!collect13.isEmpty()){
            tResultWorkEvaluateDetailEngineerVO6.setStartTime(collect13.get(0).getEvaluateTime());
            tResultWorkEvaluateDetailEngineerVO6.setEndTime(collect13.get(collect13.size()-1).getEvaluateTime());
        }
        tResultWorkEvaluateDetailEngineerVOS.add(tResultWorkEvaluateDetailEngineerVO6);
        // 立项报告
        List<TProjectApprovalReport> list5 = projectApprovalReportService.lambdaQuery().orderByDesc(BaseModel::getCreateTime).eq(TProjectApprovalReport::getTeamId, projectTeam.getId()).eq(TProjectApprovalReport::getStatus, 2).list();
        TResultWorkEvaluateDetailEngineerVO tResultWorkEvaluateDetailEngineerVO7 = new TResultWorkEvaluateDetailEngineerVO();
        tResultWorkEvaluateDetailEngineerVO7.setCount(list5.size());
        if (!list5.isEmpty()){
            tResultWorkEvaluateDetailEngineerVO7.setEndTime(list5.get(list5.size()-1).getAuditTime());
        }
        tResultWorkEvaluateDetailEngineerVO7.setStartTime(projectTeam.getCreateTime());
        tResultWorkEvaluateDetailEngineerVOS.add(tResultWorkEvaluateDetailEngineerVO7);
        // todo 临床试验积分
        List<TClinicalTrialPoints> list6 = clinicalTrialPointsService.lambdaQuery().eq(TClinicalTrialPoints::getTeamId, projectTeam.getId()).list();
        TResultWorkEvaluateDetailEngineerVO tResultWorkEvaluateDetailEngineerVO8 = new TResultWorkEvaluateDetailEngineerVO();
        tResultWorkEvaluateDetailEngineerVO8.setCount(list6.size());
        if (!list6.isEmpty()){
            tResultWorkEvaluateDetailEngineerVO8.setEndTime(list6.get(list6.size()-1).getCreateTime());
        }
        tResultWorkEvaluateDetailEngineerVO8.setStartTime(projectTeam.getCreateTime());
        tResultWorkEvaluateDetailEngineerVOS.add(tResultWorkEvaluateDetailEngineerVO8);
        tResultWorkEvaluateDetailVO.setEngineerList(tResultWorkEvaluateDetailEngineerVOS);
        return R.ok(tResultWorkEvaluateDetailVO);
    }
}
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TResultWorkEvaluateMapper.java
@@ -1,7 +1,13 @@
package com.ruoyi.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.system.model.TResultWorkEvaluate;
import com.ruoyi.system.query.TResultWorkEvaluateQuery;
import com.ruoyi.system.vo.TResultWorkEvaluateVO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * <p>
@@ -13,4 +19,5 @@
 */
public interface TResultWorkEvaluateMapper extends BaseMapper<TResultWorkEvaluate> {
    List<TResultWorkEvaluateVO> pageList(@Param("query")TResultWorkEvaluateQuery query,@Param("pageInfo") PageInfo<TResultWorkEvaluateVO> pageInfo);
}
ruoyi-system/src/main/java/com/ruoyi/system/model/TResultWorkEvaluate.java
@@ -29,7 +29,9 @@
    @TableId(value = "id", type = IdType.ASSIGN_ID)
    private String id;
    @ApiModelProperty(value = "项目组id")
    @TableField("team_id")
    private String teamId;
    @ApiModelProperty(value = "调度id")
    @TableField("dispatch_id")
    private String dispatchId;
ruoyi-system/src/main/java/com/ruoyi/system/query/TResultWorkEvaluateQuery.java
New file
@@ -0,0 +1,23 @@
package com.ruoyi.system.query;
import com.ruoyi.common.core.domain.BasePage;
import com.ruoyi.common.core.domain.model.TimeRangeQueryBody;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
@ApiModel(value = "实验员工作评定管理分页query")
public class TResultWorkEvaluateQuery extends TimeRangeQueryBody {
    @ApiModelProperty(value = "项目组名称")
    private String teamName;
    @ApiModelProperty(value = "状态 -1=草稿箱 1=已提交")
    private Integer status;
    @ApiModelProperty(value = "当前登陆人所属项目组List 前端忽略")
    private List<String> teamIds;
}
ruoyi-system/src/main/java/com/ruoyi/system/service/TResultWorkEvaluateService.java
@@ -1,7 +1,10 @@
package com.ruoyi.system.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.system.model.TResultWorkEvaluate;
import com.ruoyi.system.query.TResultWorkEvaluateQuery;
import com.ruoyi.system.vo.TResultWorkEvaluateVO;
/**
 * <p>
@@ -13,4 +16,6 @@
 */
public interface TResultWorkEvaluateService extends IService<TResultWorkEvaluate> {
    PageInfo<TResultWorkEvaluateVO> pageList(TResultWorkEvaluateQuery query);
}
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TTesterWorkEvaluateServiceImpl.java
@@ -1,10 +1,24 @@
package com.ruoyi.system.service.impl;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.documents4j.api.IFileConsumer;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.system.mapper.TResultWorkEvaluateMapper;
import com.ruoyi.system.model.TProjectTeamStaff;
import com.ruoyi.system.model.TResultWorkEvaluate;
import com.ruoyi.system.query.TResultWorkEvaluateQuery;
import com.ruoyi.system.service.TResultWorkEvaluateService;
import com.ruoyi.system.vo.TProjectTeamVO;
import com.ruoyi.system.vo.TResultWorkEvaluateVO;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.stream.Collectors;
/**
 * <p>
@@ -17,4 +31,189 @@
@Service
public class TTesterWorkEvaluateServiceImpl extends ServiceImpl<TResultWorkEvaluateMapper, TResultWorkEvaluate> implements TResultWorkEvaluateService {
    @Override
    public PageInfo<TResultWorkEvaluateVO> pageList(TResultWorkEvaluateQuery query) {
        PageInfo<TResultWorkEvaluateVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
        List<TResultWorkEvaluateVO> list = this.baseMapper.pageList(query,pageInfo);
        List<TResultWorkEvaluate> tResultWorkEvaluates = this.baseMapper.selectList(new LambdaQueryWrapper<TResultWorkEvaluate>()
                .orderByDesc(TResultWorkEvaluate::getEvaluateTime));
        for (TResultWorkEvaluateVO tResultWorkEvaluateVO : list) {
            List<TResultWorkEvaluate> collect = tResultWorkEvaluates.stream().filter(e ->
//                            e.getEvaluateOne()!=null&&
//                            e.getEvaluateTwo()!=null&&
//                            e.getEvaluateThree()!=null&&
//                            e.getEvaluateFour()!=null&&
//                            e.getEvaluateFive()!=null&&
//                            e.getEvaluateSix()!=null&&
                                    e.getStatus()==1&&
                    e.getTeamId().equals(tResultWorkEvaluateVO.getTeamId())).collect(Collectors.toList());
            if (!collect.isEmpty()){
                tResultWorkEvaluateVO.setEndTime(collect.get(0).getEvaluateTime());
            }
            int temp1=0;
            int temp2=0;
            int temp3=0;
            int temp4=0;
            for (TResultWorkEvaluate tResultWorkEvaluate : collect) {
                Integer evaluateOne = tResultWorkEvaluate.getEvaluateOne();
                switch (evaluateOne){
                    case 1:
                        if (tResultWorkEvaluate.getEvaluateType()==1){
                            temp2+=2;
                        }
                        if (tResultWorkEvaluate.getEvaluateType()==2){
                            temp3+=2;
                        }
                        if (tResultWorkEvaluate.getEvaluateType()==3){
                            temp4+=2;
                        }
                        temp1+=2;
                        break;
                    case 2:
                        temp1+=1;
                        if (tResultWorkEvaluate.getEvaluateType()==1){
                            temp2+=1;
                        }
                        if (tResultWorkEvaluate.getEvaluateType()==2){
                            temp3+=1;
                        }
                        if (tResultWorkEvaluate.getEvaluateType()==3){
                            temp4+=1;
                        }
                        break;
                }
                Integer evaluateTwo = tResultWorkEvaluate.getEvaluateTwo();
                switch (evaluateTwo){
                    case 1:
                        temp1+=2;
                        if (tResultWorkEvaluate.getEvaluateType()==1){
                            temp2+=2;
                        }
                        if (tResultWorkEvaluate.getEvaluateType()==2){
                            temp3+=2;
                        }
                        if (tResultWorkEvaluate.getEvaluateType()==3){
                            temp4+=2;
                        }
                        break;
                    case 2:
                        temp1+=1;
                        if (tResultWorkEvaluate.getEvaluateType()==1){
                            temp2+=1;
                        }
                        if (tResultWorkEvaluate.getEvaluateType()==2){
                            temp3+=1;
                        }
                        if (tResultWorkEvaluate.getEvaluateType()==3){
                            temp4+=1;
                        }
                        break;
                }
                Integer evaluateThree = tResultWorkEvaluate.getEvaluateThree();
                switch (evaluateThree){
                    case 1:
                        temp1+=2;
                        if (tResultWorkEvaluate.getEvaluateType()==1){
                            temp2+=2;
                        }
                        if (tResultWorkEvaluate.getEvaluateType()==2){
                            temp3+=2;
                        }
                        if (tResultWorkEvaluate.getEvaluateType()==3){
                            temp4+=2;
                        }
                        break;
                    case 2:
                        temp1+=1;
                        if (tResultWorkEvaluate.getEvaluateType()==1){
                            temp2+=1;
                        }
                        if (tResultWorkEvaluate.getEvaluateType()==2){
                            temp3+=1;
                        }
                        if (tResultWorkEvaluate.getEvaluateType()==3){
                            temp4+=1;
                        }
                        break;
                }
                Integer evaluateFour = tResultWorkEvaluate.getEvaluateFour();
                switch (evaluateFour){
                    case 1:
                        temp1+=2;
                        if (tResultWorkEvaluate.getEvaluateType()==1){
                            temp2+=2;
                        }
                        if (tResultWorkEvaluate.getEvaluateType()==2){
                            temp3+=2;
                        }
                        if (tResultWorkEvaluate.getEvaluateType()==3){
                            temp4+=2;
                        }
                        break;
                    case 2:
                        temp1+=1;
                        if (tResultWorkEvaluate.getEvaluateType()==1){
                            temp2+=1;
                        }
                        if (tResultWorkEvaluate.getEvaluateType()==2){
                            temp3+=1;
                        }
                        if (tResultWorkEvaluate.getEvaluateType()==3){
                            temp4+=1;
                        }
                        break;
                }
                Integer evaluateFive = tResultWorkEvaluate.getEvaluateFive();
                switch (evaluateFive){
                    case 1:
                        temp1+=2;
                        if (tResultWorkEvaluate.getEvaluateType()==1){
                            temp2+=2;
                        }
                        if (tResultWorkEvaluate.getEvaluateType()==2){
                            temp3+=2;
                        }
                        if (tResultWorkEvaluate.getEvaluateType()==3){
                            temp4+=2;
                        }
                        break;
                    case 2:
                        temp1+=1;
                        if (tResultWorkEvaluate.getEvaluateType()==1){
                            temp2+=1;
                        }
                        if (tResultWorkEvaluate.getEvaluateType()==2){
                            temp3+=1;
                        }
                        if (tResultWorkEvaluate.getEvaluateType()==3){
                            temp4+=1;
                        }
                        break;
                }
                Integer evaluateSix = tResultWorkEvaluate.getEvaluateSix();
                switch (evaluateSix){
                    case 1:
                        temp1+=2;
                        if (tResultWorkEvaluate.getEvaluateType()==1){
                            temp2-=3;
                        }
                        if (tResultWorkEvaluate.getEvaluateType()==2){
                            temp3-=3;
                        }
                        if (tResultWorkEvaluate.getEvaluateType()==3){
                            temp4-=3;
                        }
                        break;
                }
            }
            tResultWorkEvaluateVO.setTeamIntegral(temp1);
            tResultWorkEvaluateVO.setEngineerIntegral(temp2);
            tResultWorkEvaluateVO.setChemistIntegral(temp3);
            tResultWorkEvaluateVO.setTesterIntegral(temp4);
        }
        pageInfo.setRecords(list);
        return pageInfo;
    }
}
ruoyi-system/src/main/java/com/ruoyi/system/vo/TResultWorkEvaluateDetailEngineerVO.java
New file
@@ -0,0 +1,27 @@
package com.ruoyi.system.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.system.model.TResultWorkEvaluate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
@Data
@ApiModel(value = "实验员工作评定管理详情-左侧评定详情VO")
public class TResultWorkEvaluateDetailEngineerVO{
    @ApiModelProperty(value = "课题数/实验数")
    private Integer count;
    @ApiModelProperty(value = "积分数")
    private Integer integral;
    @ApiModelProperty(value = "评定开始时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime startTime;
    @ApiModelProperty(value = "评定结束时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime endTime;
}
ruoyi-system/src/main/java/com/ruoyi/system/vo/TResultWorkEvaluateDetailUserVO.java
New file
@@ -0,0 +1,21 @@
package com.ruoyi.system.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.List;
@Data
@ApiModel(value = "实验员工作评定管理详情-化验师实验员使用VO")
public class TResultWorkEvaluateDetailUserVO {
    @ApiModelProperty(value = "化验师/实验员名称")
    private String userName;
    @ApiModelProperty(value = "内容评定列表")
    private List<TResultWorkEvaluateDetailEngineerVO> list;
}
ruoyi-system/src/main/java/com/ruoyi/system/vo/TResultWorkEvaluateDetailVO.java
New file
@@ -0,0 +1,43 @@
package com.ruoyi.system.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.system.model.TResultWorkEvaluate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.List;
@Data
@ApiModel(value = "实验员工作评定管理详情VO")
public class TResultWorkEvaluateDetailVO extends TResultWorkEvaluate {
    @ApiModelProperty(value = "项目组名称")
    private String teamName;
    @ApiModelProperty(value = "项目组总积分")
    private Integer teamIntegral;
    @ApiModelProperty(value = "工艺工程师总积分")
    private Integer engineerIntegral;
    @ApiModelProperty(value = "化验师总积分")
    private Integer chemistIntegral;
    @ApiModelProperty(value = "实验员总积分")
    private Integer testerIntegral;
    @ApiModelProperty(value = "实验终止次数")
    private Integer termination;
    @ApiModelProperty(value = "评定开始时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime startTime;
    @ApiModelProperty(value = "评定结束时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime endTime;
    @ApiModelProperty(value = "工艺工程师内容评定")
    private List<TResultWorkEvaluateDetailEngineerVO> engineerList;
    @ApiModelProperty(value = "化验室内容评定")
    private List<TResultWorkEvaluateDetailUserVO> chemistList;
    @ApiModelProperty(value = "实验员内容评定")
    private List<TResultWorkEvaluateDetailUserVO> testerList;
}
ruoyi-system/src/main/java/com/ruoyi/system/vo/TResultWorkEvaluateVO.java
New file
@@ -0,0 +1,36 @@
package com.ruoyi.system.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.system.model.TQaReportFile;
import com.ruoyi.system.model.TQaTestItemReport;
import com.ruoyi.system.model.TResultWorkEvaluate;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
@Data
@ApiModel(value = "实验员工作评定管理分页列表VO")
public class TResultWorkEvaluateVO extends TResultWorkEvaluate {
    @ApiModelProperty(value = "项目组名称")
    private String teamName;
    @ApiModelProperty(value = "项目组总积分")
    private Integer teamIntegral;
    @ApiModelProperty(value = "工艺工程师总积分")
    private Integer engineerIntegral;
    @ApiModelProperty(value = "化验师总积分")
    private Integer chemistIntegral;
    @ApiModelProperty(value = "实验员总积分")
    private Integer testerIntegral;
    @ApiModelProperty(value = "评定开始时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime startTime;
    @ApiModelProperty(value = "评定结束时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime endTime;
}
ruoyi-system/src/main/resources/mapper/system/TResultWorkEvaluateMapper.xml
@@ -30,5 +30,28 @@
    <sql id="Base_Column_List">
        id, dispatch_id, user_id, result_report_id,evaluate_type, evaluate_one, evaluate_two, evaluate_three, evaluate_four, evaluate_five, evaluate_six, status, evaluate_person_id, evaluate_time,result_evaluate_json, create_time, update_time, create_by, update_by, disabled
    </sql>
    <select id="pageList" resultType="com.ruoyi.system.vo.TResultWorkEvaluateVO">
        select t1.*,t2.team_name as teamName,t2.create_time as startTime from t_result_work_evaluate t1
        left join t_project_team t2 on t1.team_id = t2.id
        <where>
            <if test="query.teamName != null and query.teamName != ''">
                and t2.team_name like concat('%',#{query.teamName},'%')
            </if>
            <if test="query.startTime != null and query.startTime != '' and query.endTime != null and query.endTime != ''">
                AND t1.create_time BETWEEN #{query.startTime} AND #{query.endTime}
            </if>
            <if test="query.status != null">
                AND t1.audit_status = #{query.auditStatus}
            </if>
            <if test="query.teamIds != null and query.teamIds > 0">
                AND t1.team_id in
                <foreach collection="query.teamIds" item="id" open="(" separator="," close=")">
                    #{id}
                </foreach>
            </if>
            AND t1.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()}
        </where>
        group by t1.team_id
    </select>
</mapper>