Explorar o código

Merge remote-tracking branch 'origin/xjw' into xjw

MengyangDuan %!s(int64=5) %!d(string=hai) anos
pai
achega
8ff11e3ab2

+ 80 - 2
src/main/java/edu/nju/controller/HistoryController.java

@@ -93,7 +93,38 @@ public class HistoryController {
 			e.printStackTrace();
 		}
 	}
-	
+
+	//学生获取所有形成树状结构的bug根节点
+	@RequestMapping(value = "/getTreesStu")
+	@ResponseBody
+	public void getTreesStu(String case_take_id, String start, String count, String page, HttpSession session, HttpServletResponse response) {
+		try {
+			PrintWriter out = response.getWriter();
+			JSONObject result = new JSONObject();
+
+			List<String> all = hisservice.getTreeRoots(case_take_id);
+
+			hisservice.pageFilter(all, page);
+
+			hisservice.hotSortTree(all);
+
+			List<String> ids = all.subList(Integer.parseInt(start), Math.min(all.size(), Integer.parseInt(start) + Integer.parseInt(count)));
+			List<List<String>> list = new ArrayList<List<String>>();
+			for(String id: ids) {
+				list.add(hisservice.getDetail(id));
+			}
+			result.put("Count", all.size());
+			result.put("TreeRoot", new JSONArray(list));
+			out.print(result);
+			out.flush();
+			out.close();
+		} catch (IOException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+	}
+
+
 	//获取所有单个节点的数据
 	@RequestMapping(value = "/getSingle")
 	@ResponseBody
@@ -102,16 +133,18 @@ public class HistoryController {
 			PrintWriter out = response.getWriter();
 			JSONObject result = new JSONObject();
 			List<String> all = new ArrayList<String>();
+			//获取所有root
 			for(String id : hisservice.getRoots(case_take_id)) {
 				if(hisservice.getHistory(id).getChildren().size() == 0) {all.add(id);}
 			}
+			//根据三级页面筛选
 			hisservice.pageFilter(all, page);
+			//分页
 			List<String> ids = all.subList(Integer.parseInt(start), Math.min(all.size(), Integer.parseInt(start) + Integer.parseInt(count)));
 			List<String> invalid = hisservice.getInvalid(ids);
 			for(String id: invalid) {
 				if(ids.contains(id)) {ids.remove(id);}
 			}
-			
 			List<List<String>> list = new ArrayList<List<String>>();
 			for(String id : ids) {
 				List<String> temp = new ArrayList<String>();
@@ -132,6 +165,51 @@ public class HistoryController {
 			e.printStackTrace();
 		}
 	}
+
+	//学生获取所有单个节点的数据
+	@RequestMapping(value = "/getSingleStu")
+	@ResponseBody
+	public void getSingleStu(String case_take_id, String start, String count, String page, HttpSession session, HttpServletResponse response) {
+		try {
+			PrintWriter out = response.getWriter();
+			JSONObject result = new JSONObject();
+			List<String> all = new ArrayList<String>();
+			//获取所有root
+			for(String id : hisservice.getRoots(case_take_id)) {
+				if(hisservice.getHistory(id).getChildren().size() == 0) {all.add(id);}
+			}
+			//根据三级页面筛选
+			hisservice.pageFilter(all, page);
+
+			//根据热度排序
+			hisservice.hotSortSingle(all);
+
+			//分页
+			List<String> ids = all.subList(Integer.parseInt(start), Math.min(all.size(), Integer.parseInt(start) + Integer.parseInt(count)));
+			List<String> invalid = hisservice.getInvalid(ids);
+			for(String id: invalid) {
+				if(ids.contains(id)) {ids.remove(id);}
+			}
+			//判断是否已被评分
+			List<List<String>> list = new ArrayList<List<String>>();
+			for(String id : ids) {
+				List<String> temp = new ArrayList<String>();
+				temp.add(id);
+				int score = aservice.getGrade(id);
+				if(score != -1) {temp.add("true");}
+				else {temp.add("false");}
+				temp.add(recservice.getTitle(id));
+				list.add(temp);
+			}
+			result.put("Count", all.size());
+			result.put("TreeRoot", new JSONArray(list));
+			out.print(result);
+			out.flush();
+			out.close();
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+	}
 	
 	//获取指定bug的所有路径
 	@RequestMapping(value = "/getPath")

+ 42 - 5
src/main/java/edu/nju/service/HistoryService.java

@@ -1,11 +1,8 @@
 package edu.nju.service;
 
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.Stack;
+import java.util.*;
 
+import edu.nju.entities.Bug;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -95,6 +92,46 @@ public class HistoryService {
 		}
 		return result;
 	}
+
+	//单一状bug热度排序
+	public void hotSortSingle(List<String> ids){
+	    Collections.shuffle(ids);
+		ids.sort(new Comparator<String>() {
+			public int compare(String id1, String id2) {
+				BugMirror bugMirror1=mirrordao.findById(id1);
+				BugMirror bugMirror2=mirrordao.findById(id2);
+				return (bugMirror1.getGood().size()+bugMirror1.getBad().size()) - (bugMirror2.getGood().size()+bugMirror2.getBad().size());
+			}
+		});
+	}
+
+	//树状bug热度排序
+	public void hotSortTree(List<String> ids){
+        Collections.shuffle(ids);
+		ids.sort(new Comparator<String>() {
+			public int compare(String id1, String id2) {
+				int hot1= getTreeHot(id1);
+				int hot2= getTreeHot(id2);
+				return hot1-hot2;
+			}
+		});
+	}
+
+	//获取树状bug热度
+	private int getTreeHot(String id){
+		BugHistory bugHistory=historydao.findByid(id);
+		if(bugHistory.getChildren().size()==0){
+			BugMirror bugMirror=mirrordao.findById(id);
+			return bugMirror.getGood().size()+bugMirror.getBad().size();
+		}else{
+			BugMirror bugMirror=mirrordao.findById(id);
+			int hot=bugMirror.getGood().size()+bugMirror.getBad().size();
+			for(String childId:bugHistory.getChildren()){
+				hot+=getTreeHot(childId);
+			}
+			return hot;
+		}
+	}
 	
 	public Set<String> filter(List<List<String>> lists) {
 		Set<String> set = new HashSet<String>();

+ 2 - 1
src/main/java/edu/nju/service/ReviewJobService.java

@@ -7,6 +7,7 @@ import org.json.JSONArray;
 import org.json.JSONObject;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.web.bind.annotation.RequestParam;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -32,7 +33,7 @@ public class ReviewJobService {
         return jobDao.findJobs();
     }
 
-    public String uploadJob(String name, String description, String paperId,String startTime, String endTime,List<String>workerList,String workerDistribution){
+    public String uploadJob(String name, String description, String paperId, String startTime, String endTime, @RequestParam(name = "workerList") List<String>workerList, String workerDistribution){
         ReviewJob reviewJob=new ReviewJob(name,description,Long.toString(System.currentTimeMillis()),paperId,startTime,endTime,"");
         String jobId=jobDao.save(reviewJob);
         List<String>workerIds=new ArrayList<>();