wenminjie
2026-07-13 0220811fbcffd4bd4df334502a2af272ae29f1e3
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TTesterWorkEvaluateServiceImpl.java
@@ -8,18 +8,27 @@
import com.ruoyi.system.mapper.TExperimentDispatchParticipantsMapper;
import com.ruoyi.system.mapper.TResultWorkEvaluateMapper;
import com.ruoyi.system.model.TExperimentDispatchParticipants;
import com.ruoyi.system.model.TProjectTeam;
import com.ruoyi.system.model.TProjectTeamStaff;
import com.ruoyi.system.model.TResultWorkEvaluate;
import com.ruoyi.system.query.ResultEvaluateChemistTesterQuery;
import com.ruoyi.system.query.TResultWorkEvaluateQuery;
import com.ruoyi.system.service.ISysUserService;
import com.ruoyi.system.service.TProjectTeamService;
import com.ruoyi.system.service.TProjectTeamStaffService;
import com.ruoyi.system.service.TResultWorkEvaluateService;
import com.ruoyi.system.vo.ResultEvaluateChemistTesterVO;
import com.ruoyi.system.vo.TResultWorkEvaluateDetailVO;
import com.ruoyi.system.vo.TResultWorkEvaluateVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.stream.Collectors;
/**
@@ -37,6 +46,16 @@
    private SysUserMapper sysUserMapper;
    @Autowired
    private TExperimentDispatchParticipantsMapper experimentDispatchParticipantsMapper;
    @Resource
    private TResultWorkEvaluateService tResultWorkEvaluateService;
    @Autowired
    private TProjectTeamService projectTeamService;
    @Autowired
    private TProjectTeamStaffService projectTeamStaffService;
    @Autowired
    private ISysUserService sysUserService;
    @Autowired
    private WorkEvaluateService workEvaluateCalculateService;
    @Override
    public PageInfo<TResultWorkEvaluateVO> pageList(TResultWorkEvaluateQuery query) {
@@ -49,180 +68,82 @@
                .orderByDesc(TResultWorkEvaluate::getEvaluateTime)
                .isNotNull(TResultWorkEvaluate::getTeamId));
        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;
            String id = tResultWorkEvaluateVO.getId();
            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;
            TResultWorkEvaluate resultWorkEvaluate = tResultWorkEvaluateService.getById(id);
            TProjectTeam projectTeam = projectTeamService.getById(resultWorkEvaluate.getTeamId());
            tResultWorkEvaluateVO.setStartTime(projectTeam.getCreateTime());
            List<Long> role4 = projectTeamStaffService.lambdaQuery()
                    .eq(TProjectTeamStaff::getRoleType, 4).eq(TProjectTeamStaff::getTeamId, resultWorkEvaluate.getTeamId()).list()
                    .stream().map(TProjectTeamStaff::getUserId).collect(Collectors.toList());
            List<Long> role5 = projectTeamStaffService.lambdaQuery()
                    .eq(TProjectTeamStaff::getRoleType, 5).eq(TProjectTeamStaff::getTeamId, resultWorkEvaluate.getTeamId()).list()
                    .stream().map(TProjectTeamStaff::getUserId).collect(Collectors.toList());
                }
                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;
            List<SysUser> user4 = new ArrayList<>();
            List<SysUser> user5 = new ArrayList<>();
            for (Long l : role4) {
                SysUser sysUser = sysUserService.selectUserById(l);
                if (sysUser != null) {
                    user4.add(sysUser);
                }
            }
            tResultWorkEvaluateVO.setTeamIntegral(temp1);
            tResultWorkEvaluateVO.setEngineerIntegral(temp2);
            tResultWorkEvaluateVO.setChemistIntegral(temp3);
            tResultWorkEvaluateVO.setTesterIntegral(temp4);
            for (Long l : role5) {
                SysUser sysUser = sysUserService.selectUserById(l);
                if (sysUser != null) {
                    user5.add(sysUser);
                }
            }
            int engineerIntegral = 0;  // 工艺工程师总积分
            int chemistIntegral = 0;   // 化验师总积分
            int testerIntegral = 0;    // 实验员总积分
            // 单独获取各角色积分
            TResultWorkEvaluateDetailVO engineerEvaluateDetail = workEvaluateCalculateService.getProcessEngineerEvaluateDetail(id);//工艺工程师
            if (engineerEvaluateDetail != null && engineerEvaluateDetail.getEngineerList() != null) {
                engineerIntegral = engineerEvaluateDetail.getEngineerList().stream()
                        .mapToInt(vo -> Optional.ofNullable(vo.getIntegral()).orElse(0))
                        .sum();
            }
            TResultWorkEvaluateDetailVO chemistEvaluateDetail = workEvaluateCalculateService.getChemistEvaluateDetail(id);//4 化验师
            if (chemistEvaluateDetail != null && chemistEvaluateDetail.getChemistList() != null) {
                chemistIntegral = chemistEvaluateDetail.getChemistList().stream()
                        .filter(user -> user.getList() != null)
                        .flatMap(user -> user.getList().stream())
                        .mapToInt(vo -> Optional.ofNullable(vo.getIntegral()).orElse(0))
                        .sum();
            }
            TResultWorkEvaluateDetailVO testerEvaluateDetail = workEvaluateCalculateService.getTesterEvaluateDetail(id);// 5 实验员
            if (testerEvaluateDetail != null && testerEvaluateDetail.getTesterList() != null) {
                testerIntegral = testerEvaluateDetail.getTesterList().stream()
                        .filter(user -> user.getList() != null)
                        .flatMap(user -> user.getList().stream())
                        .mapToInt(vo -> Optional.ofNullable(vo.getIntegral()).orElse(0))
                        .sum();
            }
            // 计算项目组总积分
            int teamIntegral = engineerIntegral + chemistIntegral + testerIntegral;
            //查询最后一条数据的时间
            TResultWorkEvaluate tResultWorkEvaluate = tResultWorkEvaluateService.lambdaQuery()
                    .eq(TResultWorkEvaluate::getTeamId, projectTeam.getId())
                    .eq(TResultWorkEvaluate::getDisabled, 0)//未删除
                    .orderByDesc(TResultWorkEvaluate::getEvaluateTime)// 按评定时间倒序排序
                    .last("limit 1")// 取第一条
                    .one();
            if (tResultWorkEvaluate != null) {
                tResultWorkEvaluateVO.setEndTime(tResultWorkEvaluate.getEvaluateTime());
            }
            tResultWorkEvaluateVO.setTeamIntegral(teamIntegral);
            tResultWorkEvaluateVO.setEngineerIntegral(engineerIntegral);
            tResultWorkEvaluateVO.setChemistIntegral(chemistIntegral);
            tResultWorkEvaluateVO.setTesterIntegral(testerIntegral);
        }
        pageInfo.setRecords(list);
        return pageInfo;