Browse Source

feat: 更新获得小组信息的代码逻辑

181250114@smail.nju.edu.cn 4 years ago
parent
commit
a28fa12dd4

+ 25 - 6
src/main/java/com/seecoder/dataanalysis/analysis/impl/DevcloudDataAnalysisServiceImpl.java

@@ -690,15 +690,28 @@ public class DevcloudDataAnalysisServiceImpl implements DevcloudDataAnalysisServ
     public FormatGroup getGroupAnalysis(Integer project_id){
         //暂时不存在GroupId,先使用ProjectId代替
         FormatGroup formatGroup = new FormatGroup();
+        List<Integer> projectList = new ArrayList<>();
+        List<Project> projects = new ArrayList<>();
         Integer projectAId = project_id;
-        Integer projectBId = projectRelateDao.findById(project_id).get().getRelateId();
+        Integer projectBId;
+        Optional<ProjectRelate> result1 = projectRelateDao.findById(project_id);
+        if(!result1.isPresent()){
+            System.out.println("没有找到关联项目");
+        }else {
+            projectBId = projectRelateDao.findById(project_id).get().getRelateId();
+            projectList.add(projectBId);
+            projects.add(projectDao.findById(projectBId).get());
+        }
 
-        List<Integer> projectList = new ArrayList<>();
         projectList.add(projectAId);
-        projectList.add(projectBId);
-        List<Project> projects = new ArrayList<>();
+
         projects.add(projectDao.findById(projectAId).get());
-        projects.add(projectDao.findById(projectBId).get());
+
+        Optional<DevcloudProject> result2 = devcloudProjectDao.findById(project_id);
+        if(!result2.isPresent()){
+            System.out.println("没有找到项目的成员信息");
+            return null;
+        }
 
         List<Integer> userIds = devcloudProjectDao.findById(project_id).get().getUserIds();
 
@@ -732,7 +745,13 @@ public class DevcloudDataAnalysisServiceImpl implements DevcloudDataAnalysisServ
         //
         for(int i=0;i<projects.size();i++){
             Integer projectId = projectList.get(i);
-            DevcloudInfo devcloudInfo = devcloudInfoDao.findById(projectId).get();
+            DevcloudInfo devcloudInfo;
+            Optional<DevcloudInfo> result3 = devcloudInfoDao.findById(projectId);
+            //如果找不到对应的项目信息则跳过该项目
+            if(!result3.isPresent()){
+                continue;
+            }
+            devcloudInfo = devcloudInfoDao.findById(projectId).get();
 
             //遍历devInfo中的commit信息
             List<CommitInfo> commitInfos = devcloudInfo.getCommitList();

+ 19 - 1
src/main/java/com/seecoder/dataanalysis/analysis/impl/DisplayServiceImpl.java

@@ -6,6 +6,7 @@ import com.seecoder.dataanalysis.data.dao.devcloud.DevcloudUserDao;
 import com.seecoder.dataanalysis.data.dao.devcloud.ProjectRelateDao;
 import com.seecoder.dataanalysis.data.dao.eval.UserDao;
 import com.seecoder.dataanalysis.data.entity.devcloud.DevcloudUser;
+import com.seecoder.dataanalysis.data.entity.devcloud.ProjectRelate;
 import com.seecoder.dataanalysis.data.entity.devcloud.display.FormatGroup;
 import com.seecoder.dataanalysis.data.entity.eval.User;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -58,6 +59,23 @@ public class DisplayServiceImpl implements DisplayService {
         DevcloudUser devcloudUser = devcloudUserDao.findById(user_id).get();
         List<Integer> projectIds = devcloudUser.getProjectIds();
 
-        return devcloudDataAnalysisService.getGroupAnalysis(projectIds.get(0));
+        //如果用户只有一个项目
+        if(projectIds.size()==1){
+            devcloudDataAnalysisService.getGroupAnalysis(projectIds.get(0));
+        }
+
+        Integer project_id = projectIds.get(0);
+
+        for(int projectId : projectIds){
+            Optional<ProjectRelate> result1 = projectRelateDao.findById(projectId);
+            if(!result1.isPresent()){
+                continue;
+            }else {
+                project_id = projectId;
+                break;
+            }
+        }
+
+        return devcloudDataAnalysisService.getGroupAnalysis(project_id);
     }
 }