Browse Source

导出报告

梅杰 5 years ago
parent
commit
ac6c3318c6

+ 46 - 0
src/main/java/com/mooctest/config/MongoOneConfig.java

@@ -0,0 +1,46 @@
+package com.mooctest.config;
+
+import com.mongodb.MongoClientOptions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.boot.autoconfigure.mongo.MongoProperties;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
+import org.springframework.data.mongodb.MongoDbFactory;
+import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.SimpleMongoDbFactory;
+import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
+import org.springframework.core.env.Environment;
+
+@Configuration
+@EnableMongoRepositories(
+        basePackages = "com.mooctest.dao",
+        mongoTemplateRef = "mongoTemplate1")
+public class MongoOneConfig {
+    @Autowired
+    private Environment environment;
+
+
+    @Primary
+    @Bean(name = "mongoTemplate1")
+    public MongoTemplate mongoTemplate(@Qualifier("mongoFactory1") MongoDbFactory mongoFactory) throws Exception {
+        return new MongoTemplate(mongoFactory);
+    }
+
+    @Primary
+    @Bean("mongoFactory1")
+    public MongoDbFactory mongoFactory(@Qualifier("mongoProperties1") MongoProperties mongoProperties) throws Exception {
+        return new SimpleMongoDbFactory(
+                mongoProperties.createMongoClient(MongoClientOptions.builder().build(), environment),
+                mongoProperties.getDatabase());
+    }
+
+    @Bean(name = "mongoProperties1")
+    @ConfigurationProperties(prefix = "mongodb1")
+    @Primary
+    public MongoProperties properties() throws Exception {
+        return new MongoProperties();
+    }
+}

+ 47 - 0
src/main/java/com/mooctest/config/MongoTwoConfig.java

@@ -0,0 +1,47 @@
+package com.mooctest.config;
+
+import com.mongodb.MongoClientOptions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.boot.autoconfigure.mongo.MongoProperties;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.env.Environment;
+import org.springframework.data.mongodb.MongoDbFactory;
+import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.SimpleMongoDbFactory;
+import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
+
+
+@Configuration
+@EnableMongoRepositories(
+        basePackages = "com.mooctest.dao2",
+        mongoTemplateRef = "mongoTemplate2")
+public class MongoTwoConfig {
+
+    @Autowired
+    private Environment environment;
+
+
+    @Bean(name = "mongoTemplate2")
+    public MongoTemplate mongoTemplate(@Qualifier("mongoFactory2") MongoDbFactory mongoFactory) throws Exception {
+        return new MongoTemplate(mongoFactory);
+    }
+
+    @Bean("mongoFactory2")
+    public MongoDbFactory mongoFactory(
+            @Qualifier("mongoProperties2") MongoProperties mongoProperties) throws Exception {
+        return new SimpleMongoDbFactory(
+                mongoProperties.createMongoClient(MongoClientOptions.builder().build(), environment),
+                mongoProperties.getDatabase());
+    }
+
+    @Bean(name = "mongoProperties2")
+    @ConfigurationProperties(prefix = "mongodb2")
+    public MongoProperties properties() {
+        return new MongoProperties();
+    }
+
+}
+

+ 11 - 1
src/main/java/com/mooctest/controller/FinalReportController.java

@@ -20,7 +20,7 @@ public class FinalReportController {
     @Autowired
     TaskService taskService;
 
-    @PostMapping("/final_report")
+    @PostMapping("final_report")
     @ResponseBody
     public FinalReportDTO createReport(@RequestBody FinalReportDTO dto) {
 
@@ -57,4 +57,14 @@ public class FinalReportController {
                              @RequestBody FinalReportDTO dto) {
         return finalReportService.update(reportId, dto);
     }
+
+    @GetMapping("final_report/export")
+    @ResponseBody
+    public String export(@RequestParam("examId") long examId,
+                         @RequestParam("caseId") long caseId) {
+
+        TaskDTO task = taskService.getByExamIdAndCaseId(examId, caseId);
+
+        return finalReportService.getExportReportAddr(task);
+    }
 }

+ 1 - 1
src/main/java/com/mooctest/dao/BugDao.java → src/main/java/com/mooctest/dao2/BugDao.java

@@ -1,4 +1,4 @@
-package com.mooctest.dao;
+package com.mooctest.dao2;
 
 import com.mooctest.model.Bug;
 import org.springframework.data.mongodb.repository.MongoRepository;

+ 4 - 1
src/main/java/com/mooctest/listener/SaveEventListener.java

@@ -6,6 +6,7 @@ import java.lang.reflect.Field;
 import com.mooctest.annotation.AutoValue;
 import com.mooctest.model.SequenceId;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
 import org.springframework.data.mongodb.core.FindAndModifyOptions;
 import org.springframework.data.mongodb.core.MongoTemplate;
 import org.springframework.data.mongodb.core.mapping.event.AbstractMongoEventListener;
@@ -17,9 +18,11 @@ import org.springframework.data.mongodb.core.query.Update;
 import org.springframework.stereotype.Component;
 import org.springframework.util.ReflectionUtils;
 
+import javax.annotation.Resource;
+
 @Component
 public class SaveEventListener extends AbstractMongoEventListener<Object> {
-    @Autowired
+    @Resource(name = "mongoTemplate1")
     private MongoTemplate mongo;
 
     @Override

+ 45 - 0
src/main/java/com/mooctest/service/FinalReportService.java

@@ -1,8 +1,12 @@
 package com.mooctest.service;
 
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.mooctest.dao.FinalReportDao;
 import com.mooctest.data.FinalReportDTO;
+import com.mooctest.data.TaskDTO;
 import com.mooctest.model.FinalReport;
+import com.mooctest.util.ReportUtil;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -10,6 +14,7 @@ import org.springframework.stereotype.Service;
 import java.sql.Timestamp;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 @Service
@@ -62,4 +67,44 @@ public class FinalReportService {
         finalReportDao.delete(reportId);
     }
 
+    public String getExportReportAddr(TaskDTO task) {
+        List<FinalReport> finalReports = finalReportDao.findByExamIdAndCaseId(task.getExamId(), task.getCaseId());
+
+        return genJsonForExport(task, finalReports).toJSONString();
+    }
+
+    private JSONObject genJsonForExport(TaskDTO task, List<FinalReport> finalReports) {
+        JSONObject root = new JSONObject();
+        JSONArray projects = new JSONArray();
+        JSONObject project = new JSONObject();
+
+        project.put("projectId", task.getExamId() + "-" +task.getCaseId());
+        project.put("icon", task.getIcon());
+        project.put("name", task.getName());
+        project.put("version", task.getName());
+        project.put("startTime", task.getName());
+        project.put("endTime", task.getName());
+        project.put("reports", finalReports);
+        projects.add(project);
+        root.put("projects", projects);
+        root.put("menu", new JSONArray().fluentAdd("众包测试报告"));
+
+        JSONObject projectStatistics = new JSONObject();
+        projectStatistics.put("categorys", genAttrArray(ReportUtil.category2String));
+        projectStatistics.put("severity", genAttrArray(ReportUtil.severity2String));
+        projectStatistics.put("recurrent", genAttrArray(ReportUtil.recurrent2String));
+        root.put("projectStatistics", projectStatistics);
+        return root;
+    }
+
+    private JSONArray genAttrArray(Map map) {
+        JSONArray arr = new JSONArray();
+        map.forEach((k, v) -> {
+            JSONObject obj = new JSONObject();
+            obj.put("name", v);
+            obj.put("value", k);
+            arr.add(obj);
+        });
+        return arr;
+    }
 }

+ 1 - 1
src/main/java/com/mooctest/service/impl/BugReportServiceImpl.java

@@ -2,7 +2,7 @@ package com.mooctest.service.impl;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
-import com.mooctest.dao.BugDao;
+import com.mooctest.dao2.BugDao;
 import com.mooctest.data.BugDTO;
 import com.mooctest.data.ReportDTO;
 import com.mooctest.model.Bug;

+ 10 - 3
src/main/resources/application.yml

@@ -18,9 +18,16 @@ spring:
     profiles: dev
     thymeleaf:
         cache: false
-    data:
-      mongodb:
-        uri: mongodb://localhost:27017/co-report
+
+
+mongodb1.database: crowd_review
+mongodb1.host: localhost
+mongodb1.port: 27017
+
+mongodb2.database: co-report
+mongodb2.host: localhost
+mongodb2.port: 27017
+
 server:
     port: 8090
 logging: