package com.seecoder.dataanalysis.analysis.impl; import com.seecoder.dataanalysis.analysis.DevcloudDataAnalysisService; import com.seecoder.dataanalysis.data.dao.devcloud.*; import com.seecoder.dataanalysis.data.dao.eval.UserDao; import com.seecoder.dataanalysis.data.entity.devcloud.*; import com.seecoder.dataanalysis.data.entity.devcloud.display.*; import com.seecoder.dataanalysis.data.entity.eval.User; import com.seecoder.dataanalysis.vo.devcloud.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.List; import java.util.Optional; /** * @author Peng Yiyan * @since 2022/03/12 */ @Service public class DevcloudDataAnalysisServiceImpl implements DevcloudDataAnalysisService { @Autowired private DevcloudInfoDao devcloudInfoDao; @Autowired private DevcloudProjectDao devcloudProjectDao; @Autowired private DevcloudUserDao devcloudUserDao; // @Autowired // private ProjectRelateDao projectRelateDao; @Autowired private UserDao userDao; @Autowired private ProjectDao projectDao; @Override public DevcloudInfo updateDevInfoType100(BugInfoDTO bugInfoDTO){ Integer projectId = bugInfoDTO.getProjectId(); DevcloudInfo devcloudInfo; Optional result = devcloudInfoDao.findById(projectId); if(!result.isPresent()){ devcloudInfo = new DevcloudInfo(projectId); }else { devcloudInfo = devcloudInfoDao.findById(projectId).get(); } List bugInfoList = devcloudInfo.getBugList(); boolean exist = false; for(int i=0;i result = devcloudInfoDao.findById(projectId); if(!result.isPresent()){ devcloudInfo = new DevcloudInfo(projectId); }else { devcloudInfo = devcloudInfoDao.findById(projectId).get(); } List commitInfoList = devcloudInfo.getCommitList(); boolean exist = false; for(int i=0;i result = devcloudInfoDao.findById(projectId); if(!result.isPresent()){ devcloudInfo = new DevcloudInfo(projectId); }else { devcloudInfo = devcloudInfoDao.findById(projectId).get(); } List testInfoList = devcloudInfo.getTestList(); boolean exist = false; for(int i=0;i result = devcloudInfoDao.findById(projectId); if(!result.isPresent()){ devcloudInfo = new DevcloudInfo(projectId); }else { devcloudInfo = devcloudInfoDao.findById(projectId).get(); } List pipelineInfoList = devcloudInfo.getPipelineList(); boolean exist = false; for(int i=0;i result = devcloudInfoDao.findById(projectId); if(!result.isPresent()){ devcloudInfo = new DevcloudInfo(projectId); }else { devcloudInfo = devcloudInfoDao.findById(projectId).get(); } List pipelineInfoList = devcloudInfo.getPipelineList(); //找到对应的id,删除 for(int i=0;i result = devcloudInfoDao.findById(projectId); if(!result.isPresent()){ devcloudInfo = new DevcloudInfo(projectId); }else { devcloudInfo = devcloudInfoDao.findById(projectId).get(); } List pipelineInfoList = devcloudInfo.getPipelineList(); //找到对应的id,存入部署信息 for(int i=0;i recordInfoList = pipelineInfoList.get(i).getRecordList(); RecordInfo recordInfo = new RecordInfo(); recordInfo.setRecordId(pipelineDeployDTO.getRecordId()); recordInfo.setUserId(pipelineDeployDTO.getUserId()); recordInfo.setResult(pipelineDeployDTO.getResult()); recordInfoList.add(recordInfo); break; } } devcloudInfo.setPipelineList(pipelineInfoList); devcloudInfoDao.save(devcloudInfo); return devcloudInfo; } @Override public DevcloudInfo updateDevInfoType106(TreeNodeInfoDTO treeNodeInfoDTO){ Integer projectId = treeNodeInfoDTO.getProjectId(); DevcloudInfo devcloudInfo; Optional result = devcloudInfoDao.findById(projectId); if(!result.isPresent()){ devcloudInfo = new DevcloudInfo(projectId); }else { devcloudInfo = devcloudInfoDao.findById(projectId).get(); } List treeNodeInfoList = devcloudInfo.getTreeNodeList(); boolean exist = false; for(int i=0;i result = devcloudInfoDao.findById(projectId); if(!result.isPresent()){ devcloudInfo = new DevcloudInfo(projectId); }else { devcloudInfo = devcloudInfoDao.findById(projectId).get(); } List treeNodeInfoList = devcloudInfo.getTreeNodeList(); List nodeIds = treeNodeDeletionDTO.getNodeIds(); for(int i=0;i result = devcloudProjectDao.findById(projectId); //如果项目-用户信息不存在,则新建项目-用户信息,否则直接查询 if(!result.isPresent()){ devcloudProject = new DevcloudProject(); devcloudProject.setProjectId(projectId); // devcloudProjectDao.save(devcloudProject); }else { devcloudProject = devcloudProjectDao.findById(projectId).get(); } List memberIds = devcloudProject.getUserIds(); //如果该添加日志中的成员id还不在项目中,则加入 if(!memberIds.contains(addProjectDTO.getUserId())){ memberIds.add(addProjectDTO.getUserId()); } devcloudProject.setUserIds(memberIds); devcloudProjectDao.save(devcloudProject); Integer userId = addProjectDTO.getUserId(); // //查询该项目是否有关联项目,如果有关联项目,需要把该成员也加入关联项目中 // Optional result2 = projectRelateDao.findById(projectId); // Integer relateId = -1; // //如果存在关联项目 // if(result2.isPresent()){ // relateId = projectRelateDao.findById(projectId).get().getRelateId(); // } // // DevcloudProject relateProject; // if(relateId != -1){ // Optional result3 = devcloudProjectDao.findById(relateId); // if(!result3.isPresent()){ // relateProject = new DevcloudProject(); // relateProject.setProjectId(relateId); // }else { // relateProject = devcloudProjectDao.findById(relateId).get(); // } // // List relateMembers = relateProject.getUserIds(); // if(!relateMembers.contains(userId)){ // relateMembers.add(userId); // relateProject.setUserIds(relateMembers); // } // // devcloudProjectDao.save(relateProject); // } //处理完项目-用户关系,现在处理用户-项目关系 //所有的devcloudUser都在此处创建 DevcloudUser devcloudUser; Optional result1 = devcloudUserDao.findById(userId); if(!result1.isPresent()){ devcloudUser = new DevcloudUser(); devcloudUser.setUserId(userId); }else { devcloudUser = devcloudUserDao.findById(userId).get(); } List projectIds = devcloudUser.getProjectIds(); if(!projectIds.contains(addProjectDTO.getProjectId())){ projectIds.add(addProjectDTO.getProjectId()); } // if(relateId!=-1){ // if(!projectIds.contains(relateId)){ // projectIds.add(relateId); // } // } devcloudUser.setProjectIds(projectIds); devcloudUserDao.save(devcloudUser); return devcloudProject; } @Override public int updateDevInfoType109(RelateProjectDTO relateProjectDTO){ Integer projectAId = relateProjectDTO.getProjectAId(); Integer projectBId = relateProjectDTO.getProjectBId(); // ProjectRelate projectRelate; // Optional result = projectRelateDao.findById(projectAId); // if(!result.isPresent()){ // projectRelate = new ProjectRelate(); // projectRelate.setProjectId(projectAId); // projectRelate.setRelateId(relateProjectDTO.getProjectBId()); // projectRelateDao.save(projectRelate); // }else { // //项目的关联项目只能有一个 // projectRelate = projectRelateDao.findById(projectAId).get(); // projectRelate.setRelateId(relateProjectDTO.getProjectBId()); // projectRelateDao.save(projectRelate); // } //增加关联后,A和B中的成员应该相同,每个成员也应该加入 //先将A、B项目中的成员同步 DevcloudProject projectA, projectB; Optional result1 = devcloudProjectDao.findById(projectAId); if(!result1.isPresent()){ projectA = new DevcloudProject(); projectA.setProjectId(projectAId); }else { projectA = devcloudProjectDao.findById(projectAId).get(); } Optional result2 = devcloudProjectDao.findById(projectBId); if(!result2.isPresent()){ projectB = new DevcloudProject(); projectB.setProjectId(projectBId); }else { projectB = devcloudProjectDao.findById(projectBId).get(); } //将A和B中的user_id进行合并 List totalMembers = new ArrayList<>(); for(Integer id : projectA.getUserIds()){ if(!totalMembers.contains(id)){ totalMembers.add(id); } } for(Integer id : projectB.getUserIds()){ if(!totalMembers.contains(id)){ totalMembers.add(id); } } projectA.setUserIds(totalMembers); projectB.setUserIds(new ArrayList<>(totalMembers)); devcloudProjectDao.save(projectA); devcloudProjectDao.save(projectB); //然后将小组成员遍历,将projectA、B都添加 for(Integer userId : totalMembers){ DevcloudUser devcloudUser; Optional result3 = devcloudUserDao.findById(userId); if(!result3.isPresent()){ devcloudUser = new DevcloudUser(); devcloudUser.setUserId(userId); }else { devcloudUser = devcloudUserDao.findById(userId).get(); } List projectIds = devcloudUser.getProjectIds(); if(!projectIds.contains(projectAId)){ projectIds.add(projectAId); } if(!projectIds.contains(projectBId)){ projectIds.add(projectBId); } devcloudUser.setProjectIds(projectIds); devcloudUserDao.save(devcloudUser); } return 1; } @Override public Project updateDevInfoType110(ProjectDTO projectDTO){ Integer projectId = projectDTO.getProjectId(); Project project; Optional result = projectDao.findById(projectId); if(!result.isPresent()){ project = new Project(); }else { System.out.println("请勿重复添加项目"); return projectDao.findById(projectId).get(); } project.setProjectId(projectId); project.setProjectName(projectDTO.getProjectName()); project.setDescription(projectDTO.getDescription()); projectDao.save(project); //添加项目之后,初始化项目的devInfo DevcloudInfo devcloudInfo; Optional result2 = devcloudInfoDao.findById(projectId); if(!result2.isPresent()){ devcloudInfo = new DevcloudInfo(projectId); devcloudInfoDao.save(devcloudInfo); } return project; } @Override public User updateDevInfoType111(UserDTO userDTO){ Integer userId = userDTO.getUserId(); User user; Optional result = userDao.findById(userId); if(!result.isPresent()){ user = new User(); }else { System.out.println("该用户已存在"); return userDao.findByUserId(userId); } user.setUserId(userId); user.setName(userDTO.getName()); user.setRole(userDTO.getRole()); user.setEmail(userDTO.getEmail()); user.setPhone(userDTO.getPhone()); userDao.save(user); return user; } @Override public FormatStudent getStudentAnalysis(Integer user_id){ FormatStudent formatStudent = new FormatStudent(); User user = userDao.findByUserId(user_id); DevcloudUser devcloudUser; Optional result = devcloudUserDao.findById(user_id); //如果devcloudUser不存在,说明用户还没有加入任何项目 //但如果存在对应的User信息,则帮用户新建devcloudUser if(!result.isPresent()){ // System.out.println("没有查找到学生id"); }else { devcloudUser = devcloudUserDao.findById(user_id).get(); } //放入展示数据 formatStudent.setUserId(user_id); formatStudent.setName(user.getName()); formatStudent.setEmail(user.getEmail()); //根据用户id找到和该用户关联的所有项目id List projectList = devcloudUserDao.findById(user_id).get().getProjectIds(); List projects = new ArrayList<>(); for(int i=0;i commit_msg_overview = new ArrayList<>(); Integer test_success=0,test_failure=0,test_times=0,test_concurrency_count=0; Integer pipeline_deploy=0,pipeline_pass=0,pipeline_failure=0; //新增bugList和TreeNode Integer bug_times=0,high_times=0,finished_times=0; Integer treeNode_times=0,high_treeNode_times=0,finished_treeNode_times=0; //遍历所有相关项目 for(int i=0;i commitInfos = devcloudInfo.getCommitList(); for(CommitInfo commitInfo : commitInfos){ if(commitInfo.getUserId() == null) { continue; }else if(commitInfo.getUserId().equals(user_id)){ commit_times++; commit_msg_overview.add(commitInfo.getMessage()); //如果是需求的commit if(commitInfo.getType().toLowerCase().equals("tree_id")){ feature_commit++; } //如果是bug_list的commit if(commitInfo.getType().toLowerCase().equals("bug_id")){ buglist_commit++; } //判断是否是有效的commit if(commitInfo.getMessage().startsWith("feat:")||commitInfo.getMessage().startsWith("fix:")){ valid_commit_time++; } } } //遍历devInfo中的test信息 List testInfos = devcloudInfo.getTestList(); for(TestInfo testInfo : testInfos){ if(testInfo.getUserId() == null) { continue; }else if(testInfo.getUserId().equals(user_id)){ test_times++; test_success += testInfo.getSuccess(); test_failure += testInfo.getFailure(); test_concurrency_count += testInfo.getSuccess(); test_concurrency_count += testInfo.getFailure(); } } //遍历devInfo中的pipeline信息 List pipelineInfos = devcloudInfo.getPipelineList(); for(PipelineInfo pipelineInfo : pipelineInfos){ //遍历每个流水线中的部署记录 List recordInfos = pipelineInfo.getRecordList(); for(RecordInfo recordInfo : recordInfos){ if(recordInfo.getUserId() == null) { continue; }else if(recordInfo.getUserId().equals(user_id)){ pipeline_deploy++; if(recordInfo.getResult().equals("部署成功")){ pipeline_pass++; } if(recordInfo.getResult().equals("部署失败")){ pipeline_failure++; } } } } //遍历devInfo中的bugList信息 List bugInfos = devcloudInfo.getBugList(); for(BugInfo bugInfo : bugInfos){ if(bugInfo.getUserId() == null){ continue; }else if(bugInfo.getUserId().equals(user_id)){ bug_times++; if(bugInfo.getPriority().toLowerCase().equals("high")){ high_times++; } if(bugInfo.getBugState().toLowerCase().equals("finished")){ finished_times++; } } } //遍历devInfo的treeNode信息 List treeNodeInfos = devcloudInfo.getTreeNodeList(); for(TreeNodeInfo treeNodeInfo : treeNodeInfos){ if(treeNodeInfo.getUserId() == null){ continue; }else if(treeNodeInfo.getUserId().equals(user_id)){ treeNode_times++; if(treeNodeInfo.getPriority().toLowerCase().equals("high")){ high_treeNode_times++; } if(treeNodeInfo.getState().toLowerCase().equals("finished")){ finished_treeNode_times++; } } } } //commit commit.setCommit_times(commit_times); commit.setValid_commit_times(valid_commit_time); commit.setBuglist_commit(buglist_commit); commit.setFeature_commit(feature_commit); commit.setCommit_msg_overview(commit_msg_overview); //test test.setTest_times(test_times); test.setTest_concurrency_count(test_concurrency_count); test.setTest_concurrency_success(test_success); test.setTest_concurrency_failure(test_failure); //pipeline pipeline.setPipeline_deploy(pipeline_deploy); pipeline.setPipeline_pass(pipeline_pass); pipeline.setPipline_failure(pipeline_failure); //bugList bugList.setBug_times(bug_times); bugList.setHigh_times(high_times); bugList.setFinished_times(finished_times); //treeNode treeNode.setTreeNode_times(treeNode_times); treeNode.setHigh_treeNode_times(high_treeNode_times); treeNode.setFinished_treeNode_times(finished_treeNode_times); formatStudent.setCommit(commit); formatStudent.setTest(test); formatStudent.setPipeline(pipeline); formatStudent.setBuglist(bugList); formatStudent.setTreeNode(treeNode); return formatStudent; } @Override public FormatGroup getGroupAnalysis(Integer project_id){ //暂时不存在GroupId,先使用ProjectId代替 FormatGroup formatGroup = new FormatGroup(); //记录该小组拥有的所有项目的id List projectList = new ArrayList<>(); //记录所有项目的信息,用于小组项目信息展示 List projects = new ArrayList<>(); // Integer projectAId = project_id; // Integer projectBId; // Optional 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()); // } //先将传入的project加入List projectList.add(project_id); projects.add(projectDao.findById(project_id).get()); Optional result2 = devcloudProjectDao.findById(project_id); if(!result2.isPresent()){ System.out.println("没有找到项目的成员信息"); return null; } List userIds = devcloudProjectDao.findById(project_id).get().getUserIds(); //遍历加入项目中所有成员下拥有的项目,得到该小组所有的项目 for(Integer userId : userIds){ Optional result = devcloudUserDao.findById(userId); if(!result.isPresent()){ continue; }else { List proIds = devcloudUserDao.findById(userId).get().getProjectIds(); for(Integer proId : proIds){ if(!projectList.contains(proId)){ projectList.add(proId); projects.add(projectDao.findById(proId).get()); } } } } //将所有的成员信息加入 List users = new ArrayList<>(); for(int i=0;i commit_msg_overview = new ArrayList<>(); Integer test_success=0,test_failure=0,test_times=0,test_concurrency_count=0; //记录小组不同成员的test贡献 int[] testTimes = new int[n]; Integer pipeline_deploy=0,pipeline_pass=0,pipeline_failure=0; //记录小组不同成员的deploy贡献 int[] pipeTimes = new int[n]; //新增bugList,treeNode Integer bug_times=0,high_times=0,finished_times=0; //记录小组不同成员的bugList贡献 int[] bugTimes = new int[n]; Integer treeNode_times=0,high_treeNode_times=0,finished_treeNode_times=0; //记录小组不同成员的treeNode贡献 int[] treeNodeTimes = new int[n]; //遍历所有的项目,将整体信息作为小组的分析情况 for(int i=0;i result3 = devcloudInfoDao.findById(projectId); //如果找不到对应的项目信息则跳过该项目 if(!result3.isPresent()){ continue; } devcloudInfo = devcloudInfoDao.findById(projectId).get(); //遍历devInfo中的commit信息 List commitInfos = devcloudInfo.getCommitList(); // System.out.println("commitInfosSize: "+commitInfos.size()); // commit_times += commitInfos.size(); for(CommitInfo commitInfo : commitInfos){ if(commitInfo.getUserId() == null || isInGroup(commitInfo.getUserId(),userIds)==false){ continue; }else{ commit_times++; commit_msg_overview.add(commitInfo.getMessage()); //如果是需求的commit if(commitInfo.getType().toLowerCase().equals("tree_id")||commitInfo.getMessage().startsWith("feat:")){ feature_commit++; } //如果是bug_list的commit if(commitInfo.getType().toLowerCase().equals("bug_id")||commitInfo.getMessage().startsWith("fix:")){ buglist_commit++; } //判断是否是有效的commit if(commitInfo.getMessage().startsWith("feat:")||commitInfo.getMessage().startsWith("fix:")){ valid_commit_time++; } } for(int j=0;j testInfos = devcloudInfo.getTestList(); // test_times += testInfos.size(); for(TestInfo testInfo : testInfos){ if(testInfo.getUserId() == null || isInGroup(testInfo.getUserId(),userIds)==false){ continue; }else { test_times++; test_success += testInfo.getSuccess(); test_failure += testInfo.getFailure(); test_concurrency_count += testInfo.getSuccess(); test_concurrency_count += testInfo.getFailure(); } for(int j=0;j pipelineInfos = devcloudInfo.getPipelineList(); for(PipelineInfo pipelineInfo : pipelineInfos){ //遍历每个流水线中的部署记录 List recordInfos = pipelineInfo.getRecordList(); // for(int j=0;j bugInfos = devcloudInfo.getBugList(); for(BugInfo bugInfo : bugInfos){ if(bugInfo.getUserId() == null || isInGroup(bugInfo.getUserId(),userIds)==false){ continue; }else { bug_times++; if(bugInfo.getPriority().toLowerCase().equals("high")){ high_times++; } if(bugInfo.getBugState().toLowerCase().equals("finished")){ finished_times++; } } for(int j=0;j treeNodeInfos = devcloudInfo.getTreeNodeList(); for(TreeNodeInfo treeNodeInfo : treeNodeInfos){ if(treeNodeInfo.getUserId() == null || isInGroup(treeNodeInfo.getUserId(),userIds)==false){ continue; }else { treeNode_times++; if(treeNodeInfo.getPriority().toLowerCase().equals("high")){ high_treeNode_times++; } if(treeNodeInfo.getState().toLowerCase().equals("finished")){ finished_treeNode_times++; } } for(int j=0;j commitContribution = new ArrayList<>(); for(int i=0;i testContribution = new ArrayList<>(); for(int i=0;i deployContribution = new ArrayList<>(); for(int i=0;i bugContribution = new ArrayList<>(); for(int i=0;i treeNodeContribution = new ArrayList<>(); for(int i=0;i userIds){ for(Integer userId : userIds){ // System.out.println("userid: "+userId); // System.out.println("now Id: "+id); if(userId == id){ return true; } } return false; } @Override public FormatGroup getProjectAnalysis(Integer project_id){ //暂时不存在GroupId,先使用ProjectId代替 FormatGroup formatGroup = new FormatGroup(); //记录该小组拥有的所有项目的id List projectList = new ArrayList<>(); //记录所有项目的信息,用于小组项目信息展示 List projects = new ArrayList<>(); //先将传入的project加入List projectList.add(project_id); projects.add(projectDao.findById(project_id).get()); Optional result2 = devcloudProjectDao.findById(project_id); if(!result2.isPresent()){ System.out.println("没有找到项目的成员信息"); return null; } List userIds = devcloudProjectDao.findById(project_id).get().getUserIds(); //将所有的成员信息加入 List users = new ArrayList<>(); for(int i=0;i commit_msg_overview = new ArrayList<>(); Integer test_success=0,test_failure=0,test_times=0,test_concurrency_count=0; //记录小组不同成员的test贡献 int[] testTimes = new int[n]; Integer pipeline_deploy=0,pipeline_pass=0,pipeline_failure=0; //记录小组不同成员的deploy贡献 int[] pipeTimes = new int[n]; //新增bugList,treeNode Integer bug_times=0,high_times=0,finished_times=0; //记录小组不同成员的bugList贡献 int[] bugTimes = new int[n]; Integer treeNode_times=0,high_treeNode_times=0,finished_treeNode_times=0; //记录小组不同成员的treeNode贡献 int[] treeNodeTimes = new int[n]; //遍历所有的项目,将整体信息作为小组的分析情况 for(int i=0;i result3 = devcloudInfoDao.findById(projectId); //如果找不到对应的项目信息则跳过该项目 if(!result3.isPresent()){ continue; } devcloudInfo = devcloudInfoDao.findById(projectId).get(); //遍历devInfo中的commit信息 List commitInfos = devcloudInfo.getCommitList(); // System.out.println("commitInfosSize: "+commitInfos.size()); // commit_times += commitInfos.size(); for(CommitInfo commitInfo : commitInfos){ if(commitInfo.getUserId() == null || isInGroup(commitInfo.getUserId(),userIds)==false){ continue; }else{ commit_times++; commit_msg_overview.add(commitInfo.getMessage()); //如果是需求的commit if(commitInfo.getType().toLowerCase().equals("tree_id")||commitInfo.getMessage().startsWith("feat:")){ feature_commit++; } //如果是bug_list的commit if(commitInfo.getType().toLowerCase().equals("bug_id")||commitInfo.getMessage().startsWith("fix:")){ buglist_commit++; } //判断是否是有效的commit if(commitInfo.getMessage().startsWith("feat:")||commitInfo.getMessage().startsWith("fix:")){ valid_commit_time++; } } for(int j=0;j testInfos = devcloudInfo.getTestList(); // test_times += testInfos.size(); for(TestInfo testInfo : testInfos){ if(testInfo.getUserId() == null || isInGroup(testInfo.getUserId(),userIds)==false){ continue; }else { test_times++; test_success += testInfo.getSuccess(); test_failure += testInfo.getFailure(); test_concurrency_count += testInfo.getSuccess(); test_concurrency_count += testInfo.getFailure(); } for(int j=0;j pipelineInfos = devcloudInfo.getPipelineList(); for(PipelineInfo pipelineInfo : pipelineInfos){ //遍历每个流水线中的部署记录 List recordInfos = pipelineInfo.getRecordList(); for(RecordInfo recordInfo : recordInfos){ if(recordInfo.getUserId() == null || isInGroup(recordInfo.getUserId(),userIds)==false){ continue; }else { pipeline_deploy++; if(recordInfo.getResult().equals("部署成功")){ pipeline_pass++; } if(recordInfo.getResult().equals("部署失败")){ pipeline_failure++; } } for(int j=0;j bugInfos = devcloudInfo.getBugList(); for(BugInfo bugInfo : bugInfos){ if(bugInfo.getUserId() == null || isInGroup(bugInfo.getUserId(),userIds)==false){ continue; }else { bug_times++; if(bugInfo.getPriority().toLowerCase().equals("high")){ high_times++; } if(bugInfo.getBugState().toLowerCase().equals("finished")){ finished_times++; } } for(int j=0;j treeNodeInfos = devcloudInfo.getTreeNodeList(); for(TreeNodeInfo treeNodeInfo : treeNodeInfos){ if(treeNodeInfo.getUserId() == null || isInGroup(treeNodeInfo.getUserId(),userIds)==false){ continue; }else { treeNode_times++; if(treeNodeInfo.getPriority().toLowerCase().equals("high")){ high_treeNode_times++; } if(treeNodeInfo.getState().toLowerCase().equals("finished")){ finished_treeNode_times++; } } for(int j=0;j commitContribution = new ArrayList<>(); for(int i=0;i testContribution = new ArrayList<>(); for(int i=0;i deployContribution = new ArrayList<>(); for(int i=0;i bugContribution = new ArrayList<>(); for(int i=0;i treeNodeContribution = new ArrayList<>(); for(int i=0;i