From 0220811fbcffd4bd4df334502a2af272ae29f1e3 Mon Sep 17 00:00:00 2001
From: wenminjie <1036699586@qq.com>
Date: 星期一, 13 七月 2026 10:14:30 +0800
Subject: [PATCH] 修复了已知BUG

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TTesterWorkEvaluateServiceImpl.java |  261 ++++++++++++++++++----------------------------------
 1 files changed, 91 insertions(+), 170 deletions(-)

diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TTesterWorkEvaluateServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TTesterWorkEvaluateServiceImpl.java
index 59466e8..bce0bc2 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TTesterWorkEvaluateServiceImpl.java
+++ b/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;

--
Gitblit v1.7.1