MengyangDuan 4 лет назад
Родитель
Сommit
365a08d6c2

Разница между файлами не показана из-за своего большого размера
+ 31 - 0
logs/crowdsource-backend.log.2020-10-12.log


Разница между файлами не показана из-за своего большого размера
+ 31 - 0
logs/crowdsource-backend.log.2020-10-22.log


Разница между файлами не показана из-за своего большого размера
+ 31 - 0
logs/crowdsource-backend.log.2020-10-26.log


+ 113 - 0
logs/crowdsource-backend.log.2020-10-30.log

@@ -0,0 +1,113 @@
+15:35:52.985 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$87d25f89] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) 
+15:35:53.364 [main] INFO  edu.nju.BugApplication - The following profiles are active: dev 
+15:35:54.991 [main] WARN  o.s.b.actuate.endpoint.EndpointId - Endpoint ID 'nacos-discovery' contains invalid characters, please migrate to a valid format. 
+15:35:55.538 [main] INFO  o.s.d.r.c.RepositoryConfigurationDelegate - Bootstrapping Spring Data repositories in DEFAULT mode. 
+15:35:55.571 [main] INFO  o.s.d.r.c.RepositoryConfigurationDelegate - Finished Spring Data repository scanning in 26ms. Found 0 repository interfaces. 
+15:35:55.727 [main] WARN  o.s.b.actuate.endpoint.EndpointId - Endpoint ID 'service-registry' contains invalid characters, please migrate to a valid format. 
+15:35:56.013 [main] INFO  o.s.c.context.scope.GenericScope - BeanFactory id=dd69386d-7336-3446-b1bd-c86a36be6a84 
+15:35:56.254 [main] INFO  o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker - Bean 'org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration' of type [org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration$$EnhancerBySpringCGLIB$$87d25f89] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) 
+15:35:56.998 [main] INFO  o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 8080 (http) 
+15:35:57.040 [main] INFO  o.a.catalina.core.StandardService - Starting service [Tomcat] 
+15:35:57.040 [main] INFO  o.a.catalina.core.StandardEngine - Starting Servlet engine: [Apache Tomcat/9.0.17] 
+15:35:57.250 [main] INFO  o.a.c.c.C.[Tomcat].[localhost].[/] - Initializing Spring embedded WebApplicationContext 
+15:35:57.251 [main] INFO  o.s.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 3797 ms 
+15:35:57.946 [main] INFO  org.mongodb.driver.cluster - Cluster created with settings {hosts=[localhost:27017], mode=SINGLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms', maxWaitQueueSize=500} 
+15:35:58.133 [cluster-ClusterId{value='5f9bc25d1d830702c595cb18', description='null'}-localhost:27017] INFO  org.mongodb.driver.connection - Opened connection [connectionId{localValue:1, serverValue:1}] to localhost:27017 
+15:35:58.137 [cluster-ClusterId{value='5f9bc25d1d830702c595cb18', description='null'}-localhost:27017] INFO  org.mongodb.driver.cluster - Monitor thread successfully connected to server with description ServerDescription{address=localhost:27017, type=STANDALONE, state=CONNECTED, ok=true, version=ServerVersion{versionList=[4, 0, 3]}, minWireVersion=0, maxWireVersion=7, maxDocumentSize=16777216, logicalSessionTimeoutMinutes=30, roundTripTimeNanos=2844493} 
+15:35:58.681 [main] INFO  org.mongodb.driver.connection - Opened connection [connectionId{localValue:2, serverValue:2}] to localhost:27017 
+15:35:59.459 [main] WARN  o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'analyzeController': Unsatisfied dependency expressed through field 'blockChainAspect'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'blockChainAspect': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'mooctest.url' in value "${mooctest.url}" 
+15:35:59.461 [main] INFO  org.mongodb.driver.connection - Closed connection [connectionId{localValue:2, serverValue:2}] to localhost:27017 because the pool has been closed. 
+15:35:59.464 [main] INFO  o.a.catalina.core.StandardService - Stopping service [Tomcat] 
+15:35:59.469 [main] WARN  o.a.c.loader.WebappClassLoaderBase - The web application [ROOT] appears to have started a thread named [logback-1] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
+ sun.misc.Unsafe.park(Native Method)
+ java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
+ java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)
+ java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093)
+ java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
+ java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
+ java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
+ java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
+ java.lang.Thread.run(Thread.java:748) 
+15:35:59.469 [main] WARN  o.a.c.loader.WebappClassLoaderBase - The web application [ROOT] appears to have started a thread named [com.alibaba.nacos.naming.client.listener] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
+ sun.misc.Unsafe.park(Native Method)
+ java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
+ java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)
+ java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:467)
+ com.alibaba.nacos.client.naming.core.EventDispatcher$Notifier.run(EventDispatcher.java:114)
+ java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
+ java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
+ java.lang.Thread.run(Thread.java:748) 
+15:35:59.470 [main] WARN  o.a.c.loader.WebappClassLoaderBase - The web application [ROOT] appears to have started a thread named [com.alibaba.nacos.naming.failover] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
+ sun.misc.Unsafe.park(Native Method)
+ java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
+ java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)
+ java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093)
+ java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
+ java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
+ java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
+ java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
+ java.lang.Thread.run(Thread.java:748) 
+15:35:59.470 [main] WARN  o.a.c.loader.WebappClassLoaderBase - The web application [ROOT] appears to have started a thread named [com.alibaba.nacos.naming.push.receiver] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
+ java.net.PlainDatagramSocketImpl.receive0(Native Method)
+ java.net.AbstractPlainDatagramSocketImpl.receive(AbstractPlainDatagramSocketImpl.java:143)
+ java.net.DatagramSocket.receive(DatagramSocket.java:812)
+ com.alibaba.nacos.client.naming.core.PushReceiver.run(PushReceiver.java:73)
+ java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
+ java.util.concurrent.FutureTask.run(FutureTask.java:266)
+ java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
+ java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
+ java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
+ java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
+ java.lang.Thread.run(Thread.java:748) 
+15:35:59.481 [main] INFO  o.s.b.a.l.ConditionEvaluationReportLoggingListener - 
+
+Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 
+15:35:59.490 [main] ERROR o.s.boot.SpringApplication - Application run failed 
+org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'analyzeController': Unsatisfied dependency expressed through field 'blockChainAspect'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'blockChainAspect': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'mooctest.url' in value "${mooctest.url}"
+	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:596)
+	at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:90)
+	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:374)
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1411)
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:592)
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:515)
+	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
+	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
+	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
+	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
+	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:849)
+	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:877)
+	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:549)
+	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:142)
+	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:775)
+	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397)
+	at org.springframework.boot.SpringApplication.run(SpringApplication.java:316)
+	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1260)
+	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1248)
+	at edu.nju.BugApplication.main(BugApplication.java:10)
+Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'blockChainAspect': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'mooctest.url' in value "${mooctest.url}"
+	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:380)
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1411)
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:592)
+	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:515)
+	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
+	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
+	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
+	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
+	at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:277)
+	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1247)
+	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1167)
+	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:593)
+	... 19 common frames omitted
+Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'mooctest.url' in value "${mooctest.url}"
+	at org.springframework.util.PropertyPlaceholderHelper.parseStringValue(PropertyPlaceholderHelper.java:172)
+	at org.springframework.util.PropertyPlaceholderHelper.replacePlaceholders(PropertyPlaceholderHelper.java:124)
+	at org.springframework.core.env.AbstractPropertyResolver.doResolvePlaceholders(AbstractPropertyResolver.java:237)
+	at org.springframework.core.env.AbstractPropertyResolver.resolveRequiredPlaceholders(AbstractPropertyResolver.java:211)
+	at org.springframework.context.support.PropertySourcesPlaceholderConfigurer.lambda$processProperties$0(PropertySourcesPlaceholderConfigurer.java:175)
+	at org.springframework.beans.factory.support.AbstractBeanFactory.resolveEmbeddedValue(AbstractBeanFactory.java:851)
+	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1188)
+	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1167)
+	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:593)
+	at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:90)
+	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:374)
+	... 30 common frames omitted

Разница между файлами не показана из-за своего большого размера
+ 6 - 0
logs/crowdsource-backend.log.2020-11-02.log


Разница между файлами не показана из-за своего большого размера
+ 6 - 0
logs/crowdsource-backend.log.2020-11-04.log


+ 0 - 0
logs/recommend.log.2020-10-12.log


+ 0 - 0
logs/recommend.log.2020-10-22.log


+ 0 - 0
logs/recommend.log.2020-10-26.log


+ 0 - 0
logs/recommend.log.2020-10-30.log


+ 0 - 0
logs/recommend.log.2020-11-02.log


+ 0 - 0
logs/recommend.log.2020-11-04.log


+ 6 - 0
pom.xml

@@ -154,6 +154,12 @@
             <artifactId>spring-boot-starter-aop</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+            <version>25.0-jre</version>
+        </dependency>
+
 
 
     </dependencies>

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

@@ -9,6 +9,7 @@ import java.util.Map;
 import javax.servlet.http.HttpServletResponse;
 
 import edu.nju.model.AnalyseVO;
+import edu.nju.model.AnalyseVO2;
 import edu.nju.model.BugDataVO;
 import edu.nju.model.HistoricalDataVO;
 import edu.nju.util.BlockChainAspect;
@@ -373,4 +374,18 @@ public class AnalyzeController {
 		}
 	}
 
+	@RequestMapping(value = "/analyseExam2")
+	@ResponseBody
+	public void analyseExam2(String caseId, String taskId, HttpServletResponse response){
+		try {
+			PrintWriter out = response.getWriter();
+			AnalyseVO2 analyseVO=aservice.getReviewAnalyseVO2(caseId, taskId);
+			out.print(new JSONObject(analyseVO));
+			out.flush();
+			out.close();
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
 }

+ 1 - 0
src/main/java/edu/nju/controller/ExtraController.java

@@ -451,6 +451,7 @@ public class ExtraController {
 		}
 	}
 
+	//
 	@RequestMapping(value = "/getTask")
 	@ResponseBody
 	public void getTask(String id, HttpServletResponse response) {

+ 8 - 0
src/main/java/edu/nju/dao/BugHistoryDao.java

@@ -44,6 +44,14 @@ public class BugHistoryDao {
 		}
 		return ids;
 	}
+
+	//查找所有指定节点
+	public List<BugHistory> findBugHistoryList(List<String> lists) {
+		Query query = new Query();
+		query.addCriteria(Criteria.where("_id").in(lists));
+		List<BugHistory> bugHistories = mongoOps.find(query,BugHistory.class);
+		return bugHistories;
+	}
 	
 	//查找所有的BugRoot
 	public List<String> findRoots() {

+ 7 - 0
src/main/java/edu/nju/dao/TestCaseDao.java

@@ -36,6 +36,13 @@ public class TestCaseDao {
 		if(list == null || list.size() == 0) { return null; }
 		else { return list; }
 	}
+
+	public List<TestCase> findByReports(List<String>report_ids) {
+		Query query = new Query();
+		query.addCriteria(Criteria.where("report_id").in(report_ids));
+		List<TestCase> list = mongoOperations.find(query, TestCase.class);
+		return list;
+	}
 	
 	public void updateTestCase(String id, String report_id, String name, String front, String behind, String description) {
 		Query query = new Query();

+ 7 - 0
src/main/java/edu/nju/dao/ThumsUpDao.java

@@ -88,4 +88,11 @@ public class ThumsUpDao {
 			mongoOperations.updateFirst(query, update, ThumsUp.class);
 		}
 	}
+
+	public List<ThumsUp> findByReports(List<String>report_ids) {
+		Query query = new Query();
+		query.addCriteria(Criteria.where("_id").in(report_ids));
+		List<ThumsUp> list = mongoOperations.find(query, ThumsUp.class);
+		return list;
+	}
 }

+ 155 - 0
src/main/java/edu/nju/model/AnalyseVO2.java

@@ -0,0 +1,155 @@
+package edu.nju.model;
+
+import org.json.JSONArray;
+
+import java.util.List;
+import java.util.Map;
+
+public class AnalyseVO2 {
+
+    private int likeNum;
+
+    private int dislikeNum;
+
+    private int forkNum;
+
+    private int reportNum;
+
+    private int testcaseNum;
+
+    private int bugNum;
+
+    private long startTime;
+
+    private long endTime;
+
+    private int workerNum;
+
+    private String taskName;
+
+    private JSONArray workerDistribute;
+
+    private List<WorkerVO> workerRank;
+
+    private Map<Integer,Integer> gradeDistrubute;
+
+    public AnalyseVO2(int likeNum, int dislikeNum, int forkNum, int reportNum, int testcaseNum, int bugNum, long startTime, long endTime, int workerNum, String taskName, JSONArray workerDistribute, List<WorkerVO> workerRank, Map<Integer, Integer> gradeDistrubute) {
+        this.likeNum = likeNum;
+        this.dislikeNum = dislikeNum;
+        this.forkNum = forkNum;
+        this.reportNum = reportNum;
+        this.testcaseNum = testcaseNum;
+        this.bugNum = bugNum;
+        this.startTime = startTime;
+        this.endTime = endTime;
+        this.workerNum = workerNum;
+        this.taskName = taskName;
+        this.workerDistribute = workerDistribute;
+        this.workerRank = workerRank;
+        this.gradeDistrubute = gradeDistrubute;
+    }
+
+    public int getLikeNum() {
+        return likeNum;
+    }
+
+    public void setLikeNum(int likeNum) {
+        this.likeNum = likeNum;
+    }
+
+    public int getDislikeNum() {
+        return dislikeNum;
+    }
+
+    public void setDislikeNum(int dislikeNum) {
+        this.dislikeNum = dislikeNum;
+    }
+
+    public int getForkNum() {
+        return forkNum;
+    }
+
+    public void setForkNum(int forkNum) {
+        this.forkNum = forkNum;
+    }
+
+    public int getReportNum() {
+        return reportNum;
+    }
+
+    public void setReportNum(int reportNum) {
+        this.reportNum = reportNum;
+    }
+
+    public int getTestcaseNum() {
+        return testcaseNum;
+    }
+
+    public void setTestcaseNum(int testcaseNum) {
+        this.testcaseNum = testcaseNum;
+    }
+
+    public int getBugNum() {
+        return bugNum;
+    }
+
+    public void setBugNum(int bugNum) {
+        this.bugNum = bugNum;
+    }
+
+    public long getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(long startTime) {
+        this.startTime = startTime;
+    }
+
+    public long getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(long endTime) {
+        this.endTime = endTime;
+    }
+
+    public int getWorkerNum() {
+        return workerNum;
+    }
+
+    public void setWorkerNum(int workerNum) {
+        this.workerNum = workerNum;
+    }
+
+    public String getTaskName() {
+        return taskName;
+    }
+
+    public void setTaskName(String taskName) {
+        this.taskName = taskName;
+    }
+
+    public JSONArray getWorkerDistribute() {
+        return workerDistribute;
+    }
+
+    public void setWorkerDistribute(JSONArray workerDistribute) {
+        this.workerDistribute = workerDistribute;
+    }
+
+    public List<WorkerVO> getWorkerRank() {
+        return workerRank;
+    }
+
+    public void setWorkerRank(List<WorkerVO> workerRank) {
+        this.workerRank = workerRank;
+    }
+
+    public Map<Integer, Integer> getGradeDistrubute() {
+        return gradeDistrubute;
+    }
+
+    public void setGradeDistrubute(Map<Integer, Integer> gradeDistrubute) {
+        this.gradeDistrubute = gradeDistrubute;
+    }
+}

+ 145 - 0
src/main/java/edu/nju/service/AnalyzeService.java

@@ -3,11 +3,14 @@ package edu.nju.service;
 import java.nio.charset.StandardCharsets;
 import java.util.*;
 
+import com.google.common.cache.Cache;
+import com.google.common.cache.CacheBuilder;
 import edu.nju.dao.*;
 import edu.nju.entities.*;
 import edu.nju.model.*;
 import edu.nju.util.HTTP;
 import org.apache.commons.lang3.EnumUtils;
+import org.apache.poi.hpsf.Thumbnail;
 import org.json.JSONArray;
 import org.json.JSONObject;
 import org.slf4j.Logger;
@@ -60,6 +63,12 @@ public class AnalyzeService {
 	@Autowired
 	TestCaseDao testCaseDao;
 
+	@Autowired
+	ThumsUpDao thumsUpDao;
+
+	@Autowired
+	BugHistoryDao bugHistoryDao;
+
 
 	Logger logger= LoggerFactory.getLogger(RecommendService.class);
 	
@@ -681,4 +690,140 @@ 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"));
+		Task task=taskDao.findById(taskId);
+		long startTime=0;
+		long endTime=0;
+		String taskName="";
+		double writeMins=0.0;
+		if(task!=null) {
+			startTime = task.getStart_time();
+			endTime = task.getEnd_time();
+			taskName = task.getName();
+			writeMins = task.getTotal_mins();
+		}
+		String caseTakeId=caseId+"-"+taskId;
+		List<Bug>bugs=bdao.findByCaseid(caseTakeId);
+		int bugNum=bugs.size();
+		List<Report>reports=reportDao.findByCaseTakeId(caseTakeId);
+		List<String>reportIds=new ArrayList<>();
+		int reportNum=reports.size();
+		int testCaseNum=0;
+
+		Map<String,String>reportWorkerMap=new HashMap<>();
+		for(Report report:reports){
+			reportIds.add(report.getId());
+			reportWorkerMap.put(report.getId(),report.getWorker_id());
+		}
+		List<TestCase>testCases=testCaseDao.findByReports(reportIds);
+		testCaseNum+=testCases.size();
+		List<ThumsUp>thumsUps=thumsUpDao.findByReports(reportIds);
+		int likeNum=0;
+		int dislikeNum=0;
+		for(ThumsUp thumsUp:thumsUps){
+			if(thumsUp.getThums()!=null){
+				likeNum+=thumsUp.getThums().size();
+			}
+			if(thumsUp.getDiss()!=null){
+				dislikeNum+=thumsUp.getDiss().size();
+			}
+		}
+
+		Map<String,Integer>workerDistribution=new HashMap<>();
+		List<String>bugIds=new ArrayList<>();
+		for(Bug bug:bugs){
+			bugIds.add(bug.getId());
+			String reportId=bug.getReport_id();
+			if(reportId!=null) {
+				String workerId=reportWorkerMap.get(reportId);
+				if (workerId!=null) {
+					int grade=0;
+					if (workerDistribution.containsKey(workerId)) {
+						workerDistribution.replace(workerId, workerDistribution.get(workerId) + grade);
+					} else {
+						workerDistribution.put(workerId, grade);
+					}
+				}
+			}
+		}
+
+		Map<Integer,Integer>gradeDistribution=new HashMap<>();
+		List<BugScore>bugScores=bsdao.findByIds(bugIds);
+		for(BugScore bugScore:bugScores){
+			int grade = bugScore.getGrade();
+			if (gradeDistribution.containsKey(grade)) {
+				gradeDistribution.replace(grade, gradeDistribution.get(grade) + 1);
+			} else {
+				gradeDistribution.put(grade, 1);
+			}
+		}
+
+		int forkNum=0;
+		List<BugHistory>bugHistories=bugHistoryDao.findBugHistoryList(bugIds);
+		for(BugHistory bugHistory:bugHistories){
+			if(bugHistory.getChildren()!=null&&bugHistory.getChildren().size()!=0){
+				forkNum+=1;
+			}
+		}
+		//分数排序
+		List<Map.Entry<String, Integer>> list = new ArrayList<>(workerDistribution.entrySet());
+		Collections.sort(list, new Comparator<Map.Entry<String, Integer>>()
+		{
+			@Override
+			public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2)
+			{
+				return o2.getValue().compareTo(o1.getValue());
+
+			}
+		});
+		List<WorkerVO>workerRank=new ArrayList<>();
+		Map<String,Integer>provinceDistribute=new HashMap<>();
+		for(int i=0;i<list.size();i++) {
+			String workerId = list.get(i).getKey();
+			int grade=list.get(i).getValue();
+			String result = HTTP.sendGet("http://114.55.91.83:8191/api/user/" + workerId, "");
+			String name = "";
+			String school = "";
+			String province="";
+			if (result != null && !result.equals("")) {
+				JSONObject json = new JSONObject(result);
+				if (json.has("name") && !json.isNull("name")) {
+					name = json.getString("name");
+				}
+				if (json.has("school") && !json.isNull("school")) {
+					school = json.getString("school");
+				}
+				if (json.has("province") && !json.isNull("province")) {
+					province = json.getString("province");
+					if(province.endsWith("省")||province.endsWith("市")){
+						province=province.substring(0,province.length()-1);
+					}
+					if (provinceDistribute.containsKey(province)) {
+						provinceDistribute.replace(province, provinceDistribute.get(province) + 1);
+					} else {
+						provinceDistribute.put(province, 1);
+					}
+				}
+			}
+			WorkerVO workerVO=new WorkerVO(workerId,name,school,grade);
+			workerRank.add(workerVO);
+		}
+		JSONArray workerDistribute=new JSONArray();
+		for(Map.Entry<String, Integer> entry : provinceDistribute.entrySet()){
+			String mapKey = entry.getKey();
+			int mapValue = entry.getValue();
+			JSONObject jsonObject=new JSONObject();
+			jsonObject.put("name",mapKey);
+			jsonObject.put("value",mapValue);
+			workerDistribute.put(jsonObject);
+		}
+		AnalyseVO2 analyseVO=new AnalyseVO2(likeNum,dislikeNum,forkNum,reportNum,testCaseNum,bugNum,startTime,endTime,reportNum,taskName,workerDistribute,workerRank,gradeDistribution);
+		return analyseVO;
+	}
+
+
 }

Некоторые файлы не были показаны из-за большого количества измененных файлов