Przeglądaj źródła

众测任务进度集成

xujiawei 4 lat temu
rodzic
commit
8ee3070c83

+ 3 - 6
src/main/java/edu/nju/controller/AnalyzeController.java

@@ -607,16 +607,13 @@ public class AnalyzeController {
 
 	@RequestMapping(value = "/progress", method = RequestMethod.GET)
 	@ResponseBody
-	public void crowdTestProgress(@RequestParam("caseId") String caseId, @RequestParam("taskId") String taskId){
+	public Double crowdTestProgress(@RequestParam("caseId") String caseId, @RequestParam("taskId") String taskId){
 		Task task=taskDao.findById(taskId);
 		if(task.getEnd_time()>System.currentTimeMillis()){
-
+			return aservice.crowdTestProgressFromDB(caseId,taskId);
 		}else{
-
+			return aservice.crowdTestProgress(caseId,taskId);
 		}
-
-
-
 	}
 
 

+ 36 - 0
src/main/java/edu/nju/dao/CrowdTestDao.java

@@ -0,0 +1,36 @@
+package edu.nju.dao;
+
+import edu.nju.entities.CaseToBug;
+import edu.nju.entities.CrowdTest;
+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;
+
+/**
+ * @Author JiaWei Xu
+ * @Date 2021-01-06 16:43
+ * @Email xjwhhh233@outlook.com
+ */
+@Repository
+public class CrowdTestDao {
+    @Autowired
+    private MongoOperations mongoOperations;
+
+    public void save(CrowdTest crowdTest) {
+        mongoOperations.save(crowdTest);
+    }
+
+    public CrowdTest findByCaseTakeId(String caseTakeId){
+        Query query = new Query();
+        query.addCriteria(Criteria.where("case_take_id").is(caseTakeId));
+        List<CrowdTest> crowdTestList= mongoOperations.find(query, CrowdTest.class);
+        if(crowdTestList.size()==0){
+            return null;
+        }else{
+            return crowdTestList.get(0);
+        }
+    }
+}

+ 9 - 7
src/main/java/edu/nju/entities/CrowdTest.java

@@ -21,16 +21,18 @@ public class CrowdTest {
 
     private String taskId;
 
-    private String case_take_id;
+    private String caseTakeId;
 
     private Double progress;
 
+    public CrowdTest(){};
+
     @PersistenceConstructor
-    public CrowdTest(String id, String caseId, String taskId, String case_take_id, Double progress) {
+    public CrowdTest(String id, String caseId, String taskId, String caseTakeId, Double progress) {
         this.id = id;
         this.caseId = caseId;
         this.taskId = taskId;
-        this.case_take_id = case_take_id;
+        this.caseTakeId = caseTakeId;
         this.progress = progress;
     }
 
@@ -58,12 +60,12 @@ public class CrowdTest {
         this.taskId = taskId;
     }
 
-    public String getCase_take_id() {
-        return case_take_id;
+    public String getCaseTakeId() {
+        return caseTakeId;
     }
 
-    public void setCase_take_id(String case_take_id) {
-        this.case_take_id = case_take_id;
+    public void setCaseTakeId(String caseTakeId) {
+        this.caseTakeId = caseTakeId;
     }
 
     public Double getProgress() {

+ 30 - 13
src/main/java/edu/nju/service/AnalyzeService.java

@@ -6,9 +6,6 @@ import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
 
-import com.google.common.cache.Cache;
-import com.google.common.cache.CacheBuilder;
-import com.google.common.collect.Lists;
 import edu.nju.algorithm.progress.BugForProgress;
 import edu.nju.algorithm.progress.TaskClosePrediction;
 import edu.nju.dao.*;
@@ -85,11 +82,14 @@ public class AnalyzeService {
 	ExtraService extraService;
 
 	@Autowired
-
 	ShortTokenDao shortTokenDao;
 
+	@Autowired
 	ExamDao examDao;
 
+	@Autowired
+	CrowdTestDao crowdTestDao;
+
 	@Value("${server.host}")
 	private String serverHost;
 	@Value("${report.port}")
@@ -1092,12 +1092,22 @@ public class AnalyzeService {
 		return shortTokenDao.save(shortToken);
 	}
 
-	private Double crowdTestProgress(String caseId,String taskId) throws ParseException {
+	public Double crowdTestProgressFromDB(String caseId,String taskId){
+		String case_take_id=caseId+"-"+taskId;
+		CrowdTest crowdTest=crowdTestDao.findByCaseTakeId(case_take_id);
+		if(crowdTest==null){
+			return (double) 0;
+		}else{
+			return crowdTest.getProgress();
+		}
+	}
+
+	public Double crowdTestProgress(String caseId,String taskId) {
 		SimpleDateFormat formatLine = new SimpleDateFormat ("yyyy/MM/dd HH:mm");
 		SimpleDateFormat formatCon = new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss");
 		List<BugForProgress> bugForProgressList=new ArrayList<>();
-		String case_take_id=caseId+"-"+taskId;
-		List<Report> reportList = reportDao.findByCaseTakeId(case_take_id);
+		String caseTakeId=caseId+"-"+taskId;
+		List<Report> reportList = reportDao.findByCaseTakeId(caseTakeId);
 		for (Report report : reportList) {
 			String reportId = report.getId();
 			List<TestCase> testCaseList = testCaseDao.findByReport(reportId);
@@ -1120,15 +1130,17 @@ public class AnalyzeService {
 						String time = TransUtil.formatTimeMillis(bug.getCreate_time_millis());
 						time = transferString(time);
 						Date submitTime  = null;
-						if ( time.contains( "-")) {
-							submitTime = formatCon.parse( time );
-						}
-						else {
-							submitTime = formatLine.parse( time );
+						try {
+							if (time.contains("-")) {
+								submitTime = formatCon.parse(time);
+							} else {
+								submitTime = formatLine.parse(time);
+							}
+						}catch (ParseException e){
+							e.printStackTrace();
 						}
 						bugForProgress.setBugCreateTime(submitTime);
 						bugForProgressList.add(bugForProgress);
-
 					}
 				}
 			}
@@ -1148,6 +1160,11 @@ public class AnalyzeService {
 		TaskClosePrediction closePrediction = new TaskClosePrediction();
 		Double completeRatio = closePrediction.determineTaskProgressStatus(bugForProgressList);
 		completeRatio = completeRatio.intValue() * 1.0;
+		CrowdTest crowdTest=new CrowdTest();
+		crowdTest.setCaseId(caseId);
+		crowdTest.setTaskId(taskId);
+		crowdTest.setCaseTakeId(caseTakeId);
+		crowdTestDao.save(crowdTest);
 		return completeRatio;
 	}