فهرست منبع

fix: pipeline project 多表联查 空列表参数导致的sql错误

370774330@qq.com 5 سال پیش
والد
کامیت
69064180da

+ 9 - 3
web/src/main/java/cn/seecoder/web/service/impl/pipeline/PipelineServiceImpl.java

@@ -15,6 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -55,15 +56,20 @@ public class PipelineServiceImpl implements PipelineService {
         // 获取流水线历史
         List<PipelineRecordPO> records = pipelineRecordMapper.selectPipelinesLatestRecords(pipelineIds);
         Map<Integer, PipelineRecordPO> recordMap = records.stream().collect(Collectors.toMap(PipelineRecordPO::getPipelineId, x->x));
+        List<Integer> userIds = new ArrayList<>();
+        Map<Integer, String> usernameMap = new HashMap<>();
+        if (records.size() != 0){
+            userIds = records.stream().map(PipelineRecordPO::getUserId).collect(Collectors.toList());
+            usernameMap =  userMapper.selectByIds(userIds).stream().collect(Collectors.toMap(UserPO::getId, UserPO::getUsername));
+        }
         // 获取流水线历史中具体执行人信息
-        List<Integer> userIds = records.stream().map(PipelineRecordPO::getUserId).collect(Collectors.toList());
-        Map<Integer, String> usernameMap =  userMapper.selectByIds(userIds).stream().collect(Collectors.toMap(UserPO::getId, UserPO::getUsername));
+        Map<Integer, String> finalUsernameMap = usernameMap;
         return pipelinePOS.stream().map(x->{
             PipelineRecordPO pipelineRecordPO = recordMap.getOrDefault(x.getId(),null);
             if (pipelineRecordPO == null){
                 return new PipelineInfoVO(x,null,null);
             }
-            String username = usernameMap.get(pipelineRecordPO.getUserId());
+            String username = finalUsernameMap.get(pipelineRecordPO.getUserId());
             return new PipelineInfoVO(x,pipelineRecordPO,username);
         }).collect(Collectors.toList());
     }

+ 3 - 2
web/src/main/java/cn/seecoder/web/service/impl/project/ProjectServiceImpl.java

@@ -19,6 +19,7 @@ import cn.seecoder.web.model.vo.project.ProjectVO;
 import cn.seecoder.web.model.vo.user.UserVO;
 import cn.seecoder.web.service.project.ProjectService;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -59,9 +60,9 @@ public class ProjectServiceImpl implements ProjectService {
             }
         }
 
-
         List<Integer> projectIds = projects.stream().map(com.nju.edu.gitlab.vo.ProjectVO::getProjectId).collect(Collectors.toList());
-        return projectMapper.selectByIds(projectIds).stream().map(ProjectVO::new).collect(Collectors.toList());
+
+        return projectIds.size()==0? new ArrayList<>() : projectMapper.selectByIds(projectIds).stream().map(ProjectVO::new).collect(Collectors.toList());
     }
 
     @Override