| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763 |
- 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<DevcloudInfo> result = devcloudInfoDao.findById(projectId);
- if(!result.isPresent()){
- devcloudInfo = new DevcloudInfo(projectId);
- }else {
- devcloudInfo = devcloudInfoDao.findById(projectId).get();
- }
- List<BugInfo> bugInfoList = devcloudInfo.getBugList();
- boolean exist = false;
- for(int i=0;i<bugInfoList.size();i++){
- //如果已经存在bug_id,则视为对bugInfo的修改
- // System.out.println("--------"+bugInfoList.get(i).getBugId());
- if(bugInfoList.get(i).getBugId().equals(bugInfoDTO.getBugId())){
- exist = true;
- bugInfoList.get(i).setBugId(bugInfoDTO.getBugId());
- bugInfoList.get(i).setUserId(bugInfoDTO.getUserId());
- bugInfoList.get(i).setPriority(bugInfoDTO.getPriority());
- bugInfoList.get(i).setTitle(bugInfoDTO.getTitle());
- bugInfoList.get(i).setDescription(bugInfoDTO.getDescription());
- bugInfoList.get(i).setTimeToTake(bugInfoDTO.getTimeToTake());
- bugInfoList.get(i).setBugState(bugInfoDTO.getBugState());
- break;
- }
- }
- //如果不存在bug_id,将bugInfo加入List
- if(!exist){
- BugInfo bugInfoNew = new BugInfo();
- bugInfoNew.setBugId(bugInfoDTO.getBugId());
- bugInfoNew.setUserId(bugInfoDTO.getUserId());
- bugInfoNew.setPriority(bugInfoDTO.getPriority());
- bugInfoNew.setTitle(bugInfoDTO.getTitle());
- bugInfoNew.setDescription(bugInfoDTO.getDescription());
- bugInfoNew.setTimeToTake(bugInfoDTO.getTimeToTake());
- bugInfoNew.setBugState(bugInfoDTO.getBugState());
- bugInfoList.add(bugInfoNew);
- }
- devcloudInfo.setBugList(bugInfoList);
- devcloudInfoDao.save(devcloudInfo);
- return devcloudInfo;
- }
- @Override
- public DevcloudInfo updateDevInfoType101(CommitInfoDTO commitInfoDTO){
- Integer projectId = commitInfoDTO.getProjectId();
- DevcloudInfo devcloudInfo;
- Optional<DevcloudInfo> result = devcloudInfoDao.findById(projectId);
- if(!result.isPresent()){
- devcloudInfo = new DevcloudInfo(projectId);
- }else {
- devcloudInfo = devcloudInfoDao.findById(projectId).get();
- }
- List<CommitInfo> commitInfoList = devcloudInfo.getCommitList();
- boolean exist = false;
- for(int i=0;i<commitInfoList.size();i++){
- if(commitInfoList.get(i).getCommitId().equals(commitInfoDTO.getCommitId())){
- exist = true;
- break;
- }
- }
- if(!exist){
- //新建commit信息
- CommitInfo commitInfo = new CommitInfo();
- commitInfo.setCommitId(commitInfoDTO.getCommitId());
- commitInfo.setUserId(commitInfoDTO.getUserId());
- commitInfo.setCommitName(commitInfoDTO.getCommitName());
- commitInfo.setCommitTime(commitInfoDTO.getCommitTime());
- commitInfo.setMessage(commitInfoDTO.getMessage());
- commitInfo.setType(commitInfoDTO.getType());
- commitInfoList.add(commitInfo);
- }else {
- System.out.println("请勿重复插入");
- }
- devcloudInfo.setCommitList(commitInfoList);
- devcloudInfoDao.save(devcloudInfo);
- return devcloudInfo;
- }
- @Override
- public DevcloudInfo updateDevInfoType102(TestInfoDTO testInfoDTO){
- Integer projectId = testInfoDTO.getProjectId();
- DevcloudInfo devcloudInfo;
- Optional<DevcloudInfo> result = devcloudInfoDao.findById(projectId);
- if(!result.isPresent()){
- devcloudInfo = new DevcloudInfo(projectId);
- }else {
- devcloudInfo = devcloudInfoDao.findById(projectId).get();
- }
- List<TestInfo> testInfoList = devcloudInfo.getTestList();
- boolean exist = false;
- for(int i=0;i<testInfoList.size();i++){
- if(testInfoList.get(i).getApiTestId().equals(testInfoDTO.getApiTestId())){
- exist = true;
- break;
- }
- }
- //新建测试信息
- if(!exist){
- TestInfo testInfo = new TestInfo();
- testInfo.setApiTestId(testInfoDTO.getApiTestId());
- testInfo.setUserId(testInfoDTO.getUserId());
- testInfo.setSuccess(testInfoDTO.getSuccess());
- testInfo.setFailure(testInfoDTO.getFailure());
- testInfoList.add(testInfo);
- }else {
- System.out.println("请勿重复插入");
- }
- devcloudInfo.setTestList(testInfoList);
- devcloudInfoDao.save(devcloudInfo);
- return devcloudInfo;
- }
- @Override
- public DevcloudInfo updateDevInfoType103(PipelineCreationDTO pipelineCreationDTO){
- Integer projectId = pipelineCreationDTO.getProjectId();
- DevcloudInfo devcloudInfo;
- Optional<DevcloudInfo> result = devcloudInfoDao.findById(projectId);
- if(!result.isPresent()){
- devcloudInfo = new DevcloudInfo(projectId);
- }else {
- devcloudInfo = devcloudInfoDao.findById(projectId).get();
- }
- List<PipelineInfo> pipelineInfoList = devcloudInfo.getPipelineList();
- boolean exist = false;
- for(int i=0;i<pipelineInfoList.size();i++){
- if(pipelineInfoList.get(i).getPipelineId().equals(pipelineCreationDTO.getPipelineId())){
- exist = true;
- break;
- }
- }
- //新建流水线信息
- if(!exist){
- // System.out.println(pipelineInfoList.size());
- // System.out.println(pipelineCreationDTO.getPipelineId());
- PipelineInfo pipelineInfo = new PipelineInfo();
- pipelineInfo.setPipelineId(pipelineCreationDTO.getPipelineId());
- pipelineInfoList.add(pipelineInfo);
- }else {
- System.out.println("请勿重复插入");
- }
- devcloudInfo.setPipelineList(pipelineInfoList);
- devcloudInfoDao.save(devcloudInfo);
- return devcloudInfo;
- }
- @Override
- public DevcloudInfo updateDevInfoType104(PipelineDeletionDTO pipelineDeletionDTO){
- Integer projectId = pipelineDeletionDTO.getProjectId();
- Integer pipelineId = pipelineDeletionDTO.getPipelineId();
- DevcloudInfo devcloudInfo;
- Optional<DevcloudInfo> result = devcloudInfoDao.findById(projectId);
- if(!result.isPresent()){
- devcloudInfo = new DevcloudInfo(projectId);
- }else {
- devcloudInfo = devcloudInfoDao.findById(projectId).get();
- }
- List<PipelineInfo> pipelineInfoList = devcloudInfo.getPipelineList();
- //找到对应的id,删除
- for(int i=0;i<pipelineInfoList.size();i++){
- if(pipelineInfoList.get(i).getPipelineId().equals(pipelineId)){
- // System.out.println("will remove");
- pipelineInfoList.remove(i);
- break;
- }
- }
- devcloudInfo.setPipelineList(pipelineInfoList);
- devcloudInfoDao.save(devcloudInfo);
- return devcloudInfo;
- }
- @Override
- public DevcloudInfo updateDevInfoType105(PipelineDeployDTO pipelineDeployDTO){
- Integer projectId = pipelineDeployDTO.getProjectId();
- Integer pipelineId = pipelineDeployDTO.getPipelineId();
- // DevcloudInfo devcloudInfo = devcloudInfoDao.findById(projectId).get();
-
- DevcloudInfo devcloudInfo;
- Optional<DevcloudInfo> result = devcloudInfoDao.findById(projectId);
- if(!result.isPresent()){
- devcloudInfo = new DevcloudInfo(projectId);
- }else {
- devcloudInfo = devcloudInfoDao.findById(projectId).get();
- }
- List<PipelineInfo> pipelineInfoList = devcloudInfo.getPipelineList();
- //找到对应的id,存入部署信息
- for(int i=0;i<pipelineInfoList.size();i++){
- if(pipelineInfoList.get(i).getPipelineId().equals(pipelineId)){
- List<RecordInfo> 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<DevcloudInfo> result = devcloudInfoDao.findById(projectId);
- if(!result.isPresent()){
- devcloudInfo = new DevcloudInfo(projectId);
- }else {
- devcloudInfo = devcloudInfoDao.findById(projectId).get();
- }
- List<TreeNodeInfo> treeNodeInfoList = devcloudInfo.getTreeNodeList();
- boolean exist = false;
- for(int i=0;i<treeNodeInfoList.size();i++){
- //如果已经存在node_id,则视为对节点信息的修改
- if(treeNodeInfoList.get(i).getNodeId().equals(treeNodeInfoDTO.getNodeId())){
- exist = true;
- treeNodeInfoList.get(i).setTitle(treeNodeInfoDTO.getTitle());
- treeNodeInfoList.get(i).setUserId(treeNodeInfoDTO.getUserId());
- treeNodeInfoList.get(i).setType(treeNodeInfoDTO.getType());
- treeNodeInfoList.get(i).setPriority(treeNodeInfoDTO.getPriority());
- treeNodeInfoList.get(i).setState(treeNodeInfoDTO.getState());
- treeNodeInfoList.get(i).setTimeToTake(treeNodeInfoDTO.getTimeToTake());
- treeNodeInfoList.get(i).setParentId(treeNodeInfoDTO.getParentId());
- treeNodeInfoList.get(i).setDeep(treeNodeInfoDTO.getDeep());
- break;
- }
- }
- //如果不存在node_id,则视为添加节点
- if(!exist){
- TreeNodeInfo treeNodeInfoNew = new TreeNodeInfo();
- treeNodeInfoNew.setNodeId(treeNodeInfoDTO.getNodeId());
- treeNodeInfoNew.setTitle(treeNodeInfoDTO.getTitle());
- treeNodeInfoNew.setUserId(treeNodeInfoDTO.getUserId());
- treeNodeInfoNew.setType(treeNodeInfoDTO.getType());
- treeNodeInfoNew.setPriority(treeNodeInfoDTO.getPriority());
- treeNodeInfoNew.setState(treeNodeInfoDTO.getState());
- treeNodeInfoNew.setTimeToTake(treeNodeInfoDTO.getTimeToTake());
- treeNodeInfoNew.setParentId(treeNodeInfoDTO.getParentId());
- treeNodeInfoNew.setDeep(treeNodeInfoDTO.getDeep());
- treeNodeInfoList.add(treeNodeInfoNew);
- }
- devcloudInfo.setTreeNodeList(treeNodeInfoList);
- devcloudInfoDao.save(devcloudInfo);
- return devcloudInfo;
- }
- @Override
- public DevcloudInfo updateDevInfoType107(TreeNodeDeletionDTO treeNodeDeletionDTO){
- Integer projectId = treeNodeDeletionDTO.getProjectId();
- DevcloudInfo devcloudInfo;
- Optional<DevcloudInfo> result = devcloudInfoDao.findById(projectId);
- if(!result.isPresent()){
- devcloudInfo = new DevcloudInfo(projectId);
- }else {
- devcloudInfo = devcloudInfoDao.findById(projectId).get();
- }
- List<TreeNodeInfo> treeNodeInfoList = devcloudInfo.getTreeNodeList();
- List<Integer> nodeIds = treeNodeDeletionDTO.getNodeIds();
- for(int i=0;i<nodeIds.size();i++){
- Integer nodeId = nodeIds.get(i);
- for(int j=0;j<treeNodeInfoList.size();j++){
- if(treeNodeInfoList.get(j).getNodeId().equals(nodeId)){
- treeNodeInfoList.remove(j);
- break;
- }
- }
- }
- devcloudInfo.setTreeNodeList(treeNodeInfoList);
- devcloudInfoDao.save(devcloudInfo);
- return devcloudInfo;
- }
- @Override
- public DevcloudProject updateDevInfoType108(AddProjectDTO addProjectDTO){
- Integer projectId = addProjectDTO.getProjectId();
- DevcloudProject devcloudProject;
- Optional<DevcloudProject> result = devcloudProjectDao.findById(projectId);
- if(!result.isPresent()){
- devcloudProject = new DevcloudProject();
- devcloudProject.setProjectId(projectId);
- devcloudProjectDao.save(devcloudProject);
- }else {
- devcloudProject = devcloudProjectDao.findById(projectId).get();
- }
- List<Integer> memberIds = devcloudProject.getUserIds();
- if(!memberIds.contains(addProjectDTO.getUserId())){
- memberIds.add(addProjectDTO.getUserId());
- }
- devcloudProject.setUserIds(memberIds);
- devcloudProjectDao.save(devcloudProject);
- //处理完项目-用户关系,现在处理用户-项目关系
- Integer userId = addProjectDTO.getUserId();
- DevcloudUser devcloudUser;
- Optional<DevcloudUser> result1 = devcloudUserDao.findById(userId);
- if(!result1.isPresent()){
- devcloudUser = new DevcloudUser();
- devcloudUser.setUserId(userId);
- }else {
- devcloudUser = devcloudUserDao.findById(userId).get();
- }
- List<Integer> projectIds = devcloudUser.getProjectIds();
- if(!projectIds.contains(addProjectDTO.getProjectId())){
- projectIds.add(addProjectDTO.getProjectId());
- }
- devcloudUser.setProjectIds(projectIds);
- devcloudUserDao.save(devcloudUser);
- return devcloudProject;
- }
- @Override
- public ProjectRelate updateDevInfoType109(RelateProjectDTO relateProjectDTO){
- Integer projectAId = relateProjectDTO.getProjectAId();
- ProjectRelate projectRelate;
- Optional<ProjectRelate> 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);
- }
- return projectRelate;
- }
- @Override
- public Project updateDevInfoType110(ProjectDTO projectDTO){
- Integer projectId = projectDTO.getProjectId();
- Project project;
- Optional<Project> 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<DevcloudInfo> 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<User> result = userDao.findById(userId);
- if(!result.isPresent()){
- user = new User();
- }else {
- System.out.println("该用户已存在");
- return userDao.findByUserId(userId);
- }
- user.setUserId(userId);
- user.setUsername(userDTO.getUsername());
- 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<DevcloudUser> result = devcloudUserDao.findById(user_id);
- if(!result.isPresent()){
- System.out.println("没有查找到学生id");
- return null;
- }else {
- devcloudUser = devcloudUserDao.findById(user_id).get();
- }
- //放入展示数据
- formatStudent.setUserId(user_id);
- formatStudent.setName(user.getUsername());
- formatStudent.setEmail(user.getEmail());
- //根据用户id找到和该用户关联的所有项目id
- List<Integer> projectList = devcloudUserDao.findById(user_id).get().getProjectIds();
- List<Project> projects = new ArrayList<>();
- for(int i=0;i<projectList.size();i++){
- projects.add(projectDao.findById(projectList.get(i)).get());
- }
- //放入个人包含的所有项目信息
- formatStudent.setProjects(projects);
- //放入个人Commit信息,测试信息,流水线信息
- Commit commit = new Commit();
- Test test = new Test();
- Pipeline pipeline = new Pipeline();
- Integer commit_times=0,valid_commit_time=0,buglist_commit=0,feature_commit=0;
- List<String> 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;
- //遍历所有相关项目
- for(int i=0;i<projectList.size();i++){
- Integer projectId = projectList.get(i);
- DevcloudInfo devcloudInfo = devcloudInfoDao.findById(projectId).get();
- //遍历devInfo中的commit信息
- List<CommitInfo> commitInfos = devcloudInfo.getCommitList();
- for(CommitInfo commitInfo : commitInfos){
- 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<TestInfo> testInfos = devcloudInfo.getTestList();
- for(TestInfo testInfo : testInfos){
- 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<PipelineInfo> pipelineInfos = devcloudInfo.getPipelineList();
- for(PipelineInfo pipelineInfo : pipelineInfos){
- //遍历每个流水线中的部署记录
- List<RecordInfo> recordInfos = pipelineInfo.getRecordList();
- for(RecordInfo recordInfo : recordInfos){
- if(recordInfo.getUserId().equals(user_id)){
- pipeline_deploy++;
- if(recordInfo.getResult().equals("部署成功")){
- pipeline_pass++;
- }
- if(recordInfo.getResult().equals("部署失败")){
- pipeline_failure++;
- }
- }
- }
- }
- }
- //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);
- formatStudent.setCommit(commit);
- formatStudent.setTest(test);
- formatStudent.setPipeline(pipeline);
- return formatStudent;
- }
- @Override
- public FormatGroup getGroupAnalysis(Integer project_id){
- //暂时不存在GroupId,先使用ProjectId代替
- FormatGroup formatGroup = new FormatGroup();
- Integer projectAId = project_id;
- Integer projectBId = projectRelateDao.findById(project_id).get().getRelateId();
- 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());
- List<Integer> userIds = devcloudProjectDao.findById(project_id).get().getUserIds();
- List<User> users = new ArrayList<>();
- for(int i=0;i<userIds.size();i++){
- Integer userId = userIds.get(i);
- users.add(userDao.findByUserId(userId));
- }
- int n = userIds.size();
- // System.out.println("n: "+n);
- formatGroup.setProjects(projects);
- formatGroup.setStudents(users);
- //放入小组Commit信息,测试信息,流水线信息
- Commit commit = new Commit();
- Test test = new Test();
- Pipeline pipeline = new Pipeline();
- Integer commit_times=0,valid_commit_time=0,buglist_commit=0,feature_commit=0;
- //记录小组不同成员的commit贡献
- int[] commitTimes = new int[n];
- List<String> 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];
- //
- for(int i=0;i<projects.size();i++){
- Integer projectId = projectList.get(i);
- DevcloudInfo devcloudInfo = devcloudInfoDao.findById(projectId).get();
- //遍历devInfo中的commit信息
- List<CommitInfo> commitInfos = devcloudInfo.getCommitList();
- // System.out.println("commitInfosSize: "+commitInfos.size());
- commit_times += commitInfos.size();
- for(CommitInfo commitInfo : commitInfos){
- for(int j=0;j<userIds.size();j++){
- Integer user_id = userIds.get(j);
- if(commitInfo.getUserId().equals(user_id)){
- commitTimes[j]++;
- 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<TestInfo> testInfos = devcloudInfo.getTestList();
- test_times += testInfos.size();
- for(TestInfo testInfo : testInfos){
- for(int j=0;j<userIds.size();j++){
- Integer user_id = userIds.get(j);
- if(testInfo.getUserId().equals(user_id)){
- testTimes[j]++;
- test_success += testInfo.getSuccess();
- test_failure += testInfo.getFailure();
- test_concurrency_count += testInfo.getSuccess();
- test_concurrency_count += testInfo.getFailure();
- }
- }
- }
- //遍历devInfo中的pipeline信息
- List<PipelineInfo> pipelineInfos = devcloudInfo.getPipelineList();
- for(PipelineInfo pipelineInfo : pipelineInfos){
- //遍历每个流水线中的部署记录
- List<RecordInfo> recordInfos = pipelineInfo.getRecordList();
- for(int j=0;j<userIds.size();j++){
- Integer user_id = userIds.get(j);
- for(RecordInfo recordInfo : recordInfos){
- if(recordInfo.getUserId().equals(user_id)){
- pipeline_deploy++;
- pipeTimes[j]++;
- if(recordInfo.getResult().equals("部署成功")){
- pipeline_pass++;
- }
- if(recordInfo.getResult().equals("部署失败")){
- pipeline_failure++;
- }
- }
- }
- }
- }
- }
- DecimalFormat df = new DecimalFormat("#.00");
- //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);
- List<Contribution> commitContribution = new ArrayList<>();
- for(int i=0;i<userIds.size();i++){
- Contribution contribution = new Contribution();
- contribution.setName(users.get(i).getUsername());
- contribution.setTimes(commitTimes[i]);
- Double value;
- if(commit_times == 0){
- value = 0.0;
- }else {
- value = (double)commitTimes[i]/(double)commit_times;
- }
- contribution.setProportion(Double.valueOf(df.format(value)));
- commitContribution.add(contribution);
- }
- commit.setCommit_contribution(commitContribution);
- //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);
- List<Contribution> testContribution = new ArrayList<>();
- for(int i=0;i<userIds.size();i++){
- Contribution contribution = new Contribution();
- contribution.setName(users.get(i).getUsername());
- contribution.setTimes(testTimes[i]);
- Double value;
- if(test_times == 0){
- value = 0.0;
- }else {
- value = (double)testTimes[i]/(double)test_times;
- }
- contribution.setProportion(Double.valueOf(df.format(value)));
- testContribution.add(contribution);
- }
- test.setTest_contribution(testContribution);
- //pipeline
- pipeline.setPipeline_deploy(pipeline_deploy);
- pipeline.setPipeline_pass(pipeline_pass);
- pipeline.setPipline_failure(pipeline_failure);
- List<Contribution> deployContribution = new ArrayList<>();
- for(int i=0;i<userIds.size();i++){
- Contribution contribution = new Contribution();
- contribution.setName(users.get(i).getUsername());
- contribution.setTimes(pipeTimes[i]);
- Double value;
- if(pipeline_deploy == 0){
- value = 0.0;
- }else {
- value = (double)pipeTimes[i]/(double)pipeline_deploy;
- }
- contribution.setProportion(Double.valueOf(df.format(value)));
- deployContribution.add(contribution);
- }
- pipeline.setPipeline_contribution(deployContribution);
- formatGroup.setCommit(commit);
- formatGroup.setTest(test);
- formatGroup.setPipeline(pipeline);
- return formatGroup;
- }
- }
|