Bläddra i källkod

上传整体分析接口

MengyangDuan 4 år sedan
förälder
incheckning
ee9fafb467

+ 22 - 0
src/main/java/edu/nju/controller/AnalyzeController.java

@@ -8,6 +8,7 @@ import java.util.Map;
 
 import javax.servlet.http.HttpServletResponse;
 
+import edu.nju.model.AnalysePeopleVO;
 import edu.nju.model.AnalyseVO;
 import edu.nju.model.AnalyseVO2;
 import edu.nju.model.BugDataVO;
@@ -349,6 +350,27 @@ public class AnalyzeController {
 		}
 	}
 
+	/**
+	 * todo 引进 guvva 来做缓存
+	 * @param caseId
+	 * @param taskId
+	 * @param workId
+	 * @param response
+	 */
+	@RequestMapping(value = "/analysePeople")
+	@ResponseBody
+	public void analyseTask(String caseId, String taskId, String workId , HttpServletResponse response){
+		try {
+			PrintWriter out = response.getWriter();
+			AnalysePeopleVO analyseVO=aservice.getReviewAnalysePeopleVO(caseId, taskId,workId);
+			out.print(new JSONObject(analyseVO));
+			out.flush();
+			out.close();
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
 	@RequestMapping(value = "/historicalData")
 	@ResponseBody
 	public HistoricalDataVO getHistoricalData(Long workerId,int caseTypeId){

+ 40 - 0
src/main/java/edu/nju/dao/UserLabelDao.java

@@ -0,0 +1,40 @@
+package edu.nju.dao;
+
+import edu.nju.entities.ReviewItem;
+import edu.nju.entities.UserLabel;
+import org.apache.catalina.User;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.mongodb.core.MongoOperations;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+import java.util.Queue;
+
+@Repository
+public class UserLabelDao {
+
+    @Autowired
+    private MongoOperations mongoOperations;
+
+    public String saveItem(UserLabel item){
+        mongoOperations.save(item);
+        return item.getId();
+    }
+
+//    public List<ReviewItem>findItemsByJob(String job_id){
+//        Query query = new Query();
+//        query.addCriteria(Criteria.where("job_id").is(job_id));
+//        return mongoOperations.find(query, ReviewItem.class);
+//    }
+
+    public List<UserLabel> findLabelsByWorkerId(String workerId){
+        Query query = new Query();
+        query.addCriteria(Criteria.where("workerId").is(workerId));
+        List<UserLabel> labels = mongoOperations.find(query,UserLabel.class);
+        return  labels;
+    }
+
+
+}

+ 27 - 0
src/main/java/edu/nju/entities/UserLabel.java

@@ -0,0 +1,27 @@
+package edu.nju.entities;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.data.annotation.Id;
+
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class UserLabel implements java.io.Serializable{
+
+    private static final long serialVersionUID = -4445308752903947027L;
+
+    @Id
+    private String id;
+
+    private String workerId;
+
+    private String label;
+
+    private String type; // 用来表示用 标签的类型
+
+
+}

+ 28 - 0
src/main/java/edu/nju/model/AnalysePeopleVO.java

@@ -0,0 +1,28 @@
+package edu.nju.model;
+
+import edu.nju.entities.Bug;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+@Data
+public class AnalysePeopleVO {
+    String taskName;
+    String name;
+    String school;
+    String photoUrl;
+    String province;
+    String city;
+    long registerTime;
+    long crowdTime;
+    List<Bug> bugList ; //= extraService.getBugList(report_id, case_take_id);
+    long firstActivate ;
+    long lastActivate ;
+    List<String> labels ; // 用户标签
+}

+ 29 - 27
src/main/java/edu/nju/service/AnalyzeService.java

@@ -26,25 +26,25 @@ import org.springframework.web.client.RestTemplate;
 
 @Service
 public class AnalyzeService {
-	
+
 	@Autowired
 	CTBDao ctbdao;
-	
+
 	@Autowired
 	BugScoreDao bsdao;
-	
+
 	@Autowired
 	BugHistoryDao hdao;
-	
+
 	@Autowired
 	BugMirrorDao mdao;
-	
+
 	@Autowired
 	StuInfoDao studao;
-	
+
 	@Autowired
 	BugDao bdao;
-	
+
 	@Autowired
 	HistoryService hservice;
 
@@ -71,7 +71,7 @@ public class AnalyzeService {
 
 
 	Logger logger= LoggerFactory.getLogger(RecommendService.class);
-	
+
 	//获取所有bug
 	public List<String> getValid(String case_take_id) {
 		List<String> result = new ArrayList<String>();
@@ -92,7 +92,7 @@ public class AnalyzeService {
 		}
 		return result;
 	}
-	
+
 	//获取所有有测试用例的bug
 	public List<String> getValidTwo(String case_take_id) {
 		List<String> result = new ArrayList<String>();
@@ -133,7 +133,7 @@ public class AnalyzeService {
 		}
 		return result;
 	}
-	
+
 	public List<String> getReports(String case_take_id) {
 		List<String> result = new ArrayList<String>();
 		List<CaseToBug> lists = ctbdao.findByCase(case_take_id);
@@ -155,13 +155,13 @@ public class AnalyzeService {
 		}
 		return result;
 	}
-	
+
 	public int getGrade(String id) {
 		BugScore bs = bsdao.findById(id);
 		if(bs != null) {return bs.getGrade();}
 		return -1;
 	}
-	
+
 	public boolean saveGrade(String id, int grade) {
 		try {
 			bsdao.save(new BugScore(id, grade, 0));
@@ -193,12 +193,12 @@ public class AnalyzeService {
 			return false;
 		}
 	}
-	
+
 	public int mark(String id, Map<String, Integer> grades, BugMirror mirror) {
 		int mark = 0;
 		int grade = grades.get(id);
 		BugHistory history = hdao.findByid(id);
-		
+
 		int parent = 0;
 		if(!history.getParent().equals("null")) {
 			parent = grades.getOrDefault(history.getParent(), 0);
@@ -207,7 +207,7 @@ public class AnalyzeService {
 		for(String child : history.getChildren()) {
 			if(grades.getOrDefault(child, 3) <= 2) {count ++;}
 		}
-		
+
 		switch(grade) {
 			case 1:
 				if(parent == 1) {mark += 40;}
@@ -224,11 +224,11 @@ public class AnalyzeService {
 				mark += count;
 				break;
 		}
-		
+
 		if(grade <= 2) {
 			mark += 2 * (mirror.getGood().size() - mirror.getBad().size());
 		}
-		
+
 		return mark;
 	}
 
@@ -383,7 +383,7 @@ public class AnalyzeService {
 			result.put(report, result.getOrDefault(report, 0) - grade);
 		}
 	}
-	
+
 	public Map<String, String> getThums(String case_take_id) {
 		Map<String, String> result = new HashMap<String, String>();
 		List<String> bugs = getValid(case_take_id);
@@ -395,7 +395,7 @@ public class AnalyzeService {
 		}
 		return result;
 	}
-	
+
 	public Map<String, Integer> getBugDetail(String case_take_id) {
 		Map<String, Integer> page = new HashMap<String, Integer>();
 		List<String> bugs = getValid(case_take_id);
@@ -405,7 +405,7 @@ public class AnalyzeService {
 		}
 		return page;
 	}
-	
+
 	public JSONObject getCaseDetail(String case_take_id) {
 		JSONObject result = new JSONObject();
 		Map<String, Integer> kind = new HashMap<String, Integer>();
@@ -418,7 +418,7 @@ public class AnalyzeService {
 		result.put("category", new JSONObject(kind));
 		return result;
 	}
-	
+
 	public Map<String, Integer> getAllGrades(String case_take_id) {
 		Map<String, Integer> result = new HashMap<String, Integer>();
 		List<BugMirror> mlist = mdao.findByCase(case_take_id);
@@ -432,7 +432,7 @@ public class AnalyzeService {
 		}
 		return result;
 	}
-	
+
 	public List<String> getDiff(String case_take_id) {
 		List<String> bugs = getValid(case_take_id);
 		bugs.add("split");
@@ -442,7 +442,7 @@ public class AnalyzeService {
 		}
 		return bugs;
 	}
-	
+
 	//评价页面获取评分
 	public List<List<String>> getScores(List<String> ids) {
 		List<List<String>> result = new ArrayList<List<String>>();
@@ -455,7 +455,7 @@ public class AnalyzeService {
 		}
 		return result;
 	}
-	
+
 	//根据树状结构计算分数,会根据fork关系减去父节点的分数
 	public void countScore(String case_take_id, Map<String, Integer> result, Map<String, Integer> grades) {
 		List<String> roots = hservice.getRoots(case_take_id);
@@ -692,9 +692,11 @@ public class AnalyzeService {
 
 	public AnalyseVO2 getReviewAnalyseVO2(String caseId, String taskId){
 
-//		Cache<String,String> cache = CacheBuilder.newBuilder().build();
-//		cache.put("word","Hello Guava Cache");
-//		System.out.println(cache.getIfPresent("word"));
+		Cache<String,String> cache = CacheBuilder.newBuilder().build();
+		cache.put("word","Hello Guava Cache");
+		System.out.println(cache.getIfPresent("word"));
+
+
 		Task task=taskDao.findById(taskId);
 		long startTime=0;
 		long endTime=0;