ソースを参照

修复协同非协同问题

郭超 4 年 前
コミット
f591ea6e07
1 ファイル変更244 行追加244 行削除
  1. 244 244
      src/main/java/com/mooctest/controller/TaskController.java

+ 244 - 244
src/main/java/com/mooctest/controller/TaskController.java

@@ -1,244 +1,244 @@
-package com.mooctest.controller;
-
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
-import com.mooctest.data.BugDTO;
-import com.mooctest.data.SimpleResponse;
-import com.mooctest.data.TaskDTO;
-import com.mooctest.model.*;
-import com.mooctest.service.*;
-import com.mooctest.service.ConfigurationService;
-import com.mooctest.util.ReportUtil;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
-import org.springframework.web.multipart.MultipartFile;
-
-import java.sql.Timestamp;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.function.Function;
-import java.util.stream.Collectors;
-
-import static java.util.stream.Collectors.toMap;
-
-/**
- * 任务相关接口
- */
-@Controller
-public class TaskController {
-
-    @Autowired
-    TaskService taskService;
-
-    @Autowired
-    BugReportService bugReportService;
-
-    @Autowired
-    HistoryService historyService;
-
-    @Autowired
-    MasterReportService masterReportService;
-
-    @Autowired
-    BugDataService bugDataService;
-
-    @Autowired
-    JobService jobService;
-
-    @Autowired
-    ConfigurationService configurationService;
-
-    @Value("${baseurl.report.host}")
-    String reportHost;
-
-    @Value("${useOss}")
-    boolean useOss;
-    @Value("${baseurl.urlpath}")
-    String urlPrefix;
-
-    /**
-     * 获取任务列表 /crowdTask
-     * @param model
-     * @return
-     */
-    @GetMapping("/crowdTask")
-    public String home(Model model) {
-        // 获得所有taskDTO,包括本地和慕测端
-        List<TaskDTO> tasks = taskService.getAllTasks();
-        List<TaskDTO> localTasks = taskService.findTask();
-        tasks.addAll(localTasks);
-        Collections.sort(tasks,(o1,o2)->{
-            return (int)(o2.getExamId()-o1.getExamId());
-        });
-        // 将获得任务传给前端
-        model.addAttribute("tasks", tasks);
-        // 转到task_list页面
-        return "task_list";
-    }
-
-    @GetMapping("/home")
-    public String home2(Model model ){
-        // 获得所有taskDTO,包括本地和慕测端
-        List<TaskDTO> tasks = taskService.getAllTasks();
-        List<TaskDTO> localTasks = taskService.findTask();
-        tasks.addAll(localTasks);
-        Collections.sort(tasks,(o1,o2)->{
-            return (int)(o2.getExamId()-o1.getExamId());
-        });
-        JSONArray jsonArray = jobService.getJobs(); // 所有的数据
-        List<Object> list = new ArrayList<>();
-        for (Object single : jsonArray){
-            changeTime2Long(single); // 修改创建时间的格式  以便前段展示
-            list.add(single);
-        }
-        model.addAttribute("jobs",list.subList(0,Math.min(15,list.size())));
-        model.addAttribute("tasks", tasks.subList(0,Math.min(15,tasks.size())));
-        return "home";
-    }
-
-    @GetMapping("/taskDashBoard")
-    public String dashBoard ( @RequestParam("taskId") long taskId ,
-                              @RequestParam("caseId") long caseId ,
-                              Model model){
-        JSONObject data = taskService.getAllTaskDashboard(caseId, taskId);
-        model.addAttribute("task",data);
-        return "crowdTaskDashboard";
-    }
-
-    // TODO: 2020/4/1 sweager崩了没有测试
-    @GetMapping("/distribute")
-    @ResponseBody
-    public String distributePeople (@RequestParam("examId") String examId,
-                                    @RequestParam("caseId")String caseId){
-        if(caseId == null || caseId.length()==0) return "fail";
-
-        return taskService.distribute(examId,caseId)?"success":"fail";
-    }
-
-
-    @GetMapping("/")
-    public String root(Model model) {
-        return "redirect:/home";
-    }
-
-    @GetMapping("/task_detail")
-    public String taskDetail(@RequestParam("examId") long examId,
-                             @RequestParam("caseId") long caseId,
-                             Model model) {
-
-        // first check is there some data in bugData document
-        // 将bug表中的信息同步到BugData中
-        bugDataService.importBugData(examId, caseId);//  访问任务的时候同步报告信息
-        // after import the bug data
-        // 在MasterReport表中查找融合报告的数量,若大于0,则认为已经融合
-        boolean aggregated = masterReportService.isAggregated(examId, caseId); // 检查报告是否已经聚合
-        // 在bug表中查找所有的bug报告数
-        List<BugDTO> allReports = bugReportService.getAllBugs(examId, caseId); // 得到所有的报告
-        // 在BugData表中查找bug数据,<bugid,BugData>
-        Map<String , BugData> bugIds2Data = bugDataService.bugId2BugData(examId, caseId);
-        // 将单一状报告转化成树状
-        Map<String,String> single2rootMap = historyService.getSingle2Root(caseId, examId);
-        // 若被融合
-        if (aggregated) { // add the information that where present when reports have been aggregated
-            List<String> bugIds = allReports.stream().map(BugDTO::getId).collect(Collectors.toList());
-            // MasterReport表中获得所有的报告
-            List<MasterReport> mrs = masterReportService.getByBugIds(bugIds);
-            Map<String, MasterReport> mrMap = mrs.stream().collect(toMap(MasterReport::getBugId, Function.identity()));
-            allReports.forEach(bug -> {
-                bug.setMasterId(mrMap.get(bug.getId()).getMasterId());
-            });
-        }
-        allReports.forEach(bug->{
-            String te = single2rootMap.get(bug.getId());
-            bug.setTreeId(te==null?"null":te);
-            bug.setStatus(bugIds2Data.get(bug.getId()).getStatus());
-            bug.setReviewerId(bugIds2Data.get(bug.getId()).getReviewerId());
-        });
-
-        // 从json中获得的task数据保存到TaskDTO中返回
-        TaskDTO task = taskService.getByExamIdAndCaseId(examId, caseId);
-        // 返回服务序列号
-//        String encodedUrl = taskService.getEncodeTaskReportUrl(examId, caseId) ;
-        // 返回大图信息
-        model.addAttribute("dtUrl",taskService.getTaskDaPanUrl(examId,caseId));
-        model.addAttribute("aggregated", aggregated);
-        // allReport是ButDTO集合
-        model.addAttribute("allReports", allReports);
-        model.addAttribute("severity2String", ReportUtil.severity2String);
-        model.addAttribute("recurrent2String", ReportUtil.recurrent2String);
-        model.addAttribute("task", task);
-        model.addAttribute("reviewMap", ReportUtil.reviewerMap);
-        model.addAttribute("examId", examId);
-        model.addAttribute("caseId", caseId);
-        model.addAttribute("reportHost",reportHost);
-//        model.addAttribute("encodedUrl",encodedUrl);
-        return "task_detail";
-    }
-
-    private void changeTime2Long ( Object input){
-        JSONObject temp = (JSONObject) input;
-        temp.put("create_time",new Timestamp(Long.parseLong(temp.get("create_time").toString()))); // 修改创建时间的格式  以便前段展示
-    }
-
-    @GetMapping("/addCrowdTask")
-    public String addCrowdTask(Model model){
-        model.addAttribute("templateUrl",useOss?"http://mooctest-site.oss-cn-shanghai.aliyuncs.com/excel-template.xlsx":urlPrefix+"excel-template.xlsx");
-        return "addCrowdTask";
-    }
-
-
-    /**
-     * 添加任务 /addCrowdTask
-     * @param name  任务名称
-     * @param description   任务描述
-     * @param os    任务的操作系统
-     * @param threePage 测试大纲表格
-     * @param model
-     * @return
-     */
-    @PostMapping("/addCrowdTask")
-    @ResponseBody
-    public SimpleResponse addCrowdTask2(@RequestParam("name")String name, @RequestParam("description")String description,
-                                        @RequestParam("os")String os, @RequestParam("threePage") MultipartFile threePage,
-                                        Model model){
-        return taskService.addCrowdTask(name, description, os, threePage);
-    }
-
-    /**
-     * 信创创建任务后调用此接口在众测新建任务 /addCrowdTaskDefault
-     * collaborativeType 0-非协作 1-协作
-     * @param name
-     * @param description
-     * @param collaborativeType
-     * @return
-     */
-    @PostMapping("/addCrowdTaskDefault")
-    @ResponseBody
-    public SimpleResponse addCrowdTaskDefault(@RequestParam("name")String name, @RequestParam("description")String description,
-                                              @RequestParam("collaborativeType")int collaborativeType,
-                                              @RequestParam("threePageUrl") String threePageUrl, @RequestParam("fileName") String fileName){
-        Map<String, Object> configurationMap = configurationService.getConfigurationMap();
-        String os = configurationMap.get("os").toString();
-        // 后边generatePaperType方法中会根据;进行split
-        os = os.replaceAll(",", ";").replaceAll(" ", "").replaceAll("\\[", "").replaceAll("\\]", "");
-
-        if(threePageUrl == null || threePageUrl.equals("")) {
-            return new SimpleResponse(400,"请提交三级页面");
-        }
-        long caseId = taskService.addCrowdTaskDefault(name, description, os, threePageUrl, fileName, collaborativeType);
-        long examId = caseId;
-        // 返回大图url
-        String taskDaPanUrl = taskService.getTaskDaPanUrl(examId, caseId);
-        taskDaPanUrl = taskDaPanUrl.replaceAll("%3D", "=");
-        TaskExtend taskExtend = new TaskExtend(examId, caseId, taskDaPanUrl);
-        return caseId != -1 ? new SimpleResponse(200,"创建成功", taskExtend) : new SimpleResponse(400,"创建失败");
-    }
-}
+package com.mooctest.controller;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.mooctest.data.BugDTO;
+import com.mooctest.data.SimpleResponse;
+import com.mooctest.data.TaskDTO;
+import com.mooctest.model.*;
+import com.mooctest.service.*;
+import com.mooctest.service.ConfigurationService;
+import com.mooctest.util.ReportUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+import static java.util.stream.Collectors.toMap;
+
+/**
+ * 任务相关接口
+ */
+@Controller
+public class TaskController {
+
+    @Autowired
+    TaskService taskService;
+
+    @Autowired
+    BugReportService bugReportService;
+
+    @Autowired
+    HistoryService historyService;
+
+    @Autowired
+    MasterReportService masterReportService;
+
+    @Autowired
+    BugDataService bugDataService;
+
+    @Autowired
+    JobService jobService;
+
+    @Autowired
+    ConfigurationService configurationService;
+
+    @Value("${baseurl.report.host}")
+    String reportHost;
+
+    @Value("${useOss}")
+    boolean useOss;
+    @Value("${baseurl.urlpath}")
+    String urlPrefix;
+
+    /**
+     * 获取任务列表 /crowdTask
+     * @param model
+     * @return
+     */
+    @GetMapping("/crowdTask")
+    public String home(Model model) {
+        // 获得所有taskDTO,包括本地和慕测端
+        List<TaskDTO> tasks = taskService.getAllTasks();
+        List<TaskDTO> localTasks = taskService.findTask();
+        tasks.addAll(localTasks);
+        Collections.sort(tasks,(o1,o2)->{
+            return (int)(o2.getExamId()-o1.getExamId());
+        });
+        // 将获得任务传给前端
+        model.addAttribute("tasks", tasks);
+        // 转到task_list页面
+        return "task_list";
+    }
+
+    @GetMapping("/home")
+    public String home2(Model model ){
+        // 获得所有taskDTO,包括本地和慕测端
+        List<TaskDTO> tasks = taskService.getAllTasks();
+        List<TaskDTO> localTasks = taskService.findTask();
+        tasks.addAll(localTasks);
+        Collections.sort(tasks,(o1,o2)->{
+            return (int)(o2.getExamId()-o1.getExamId());
+        });
+        JSONArray jsonArray = jobService.getJobs(); // 所有的数据
+        List<Object> list = new ArrayList<>();
+        for (Object single : jsonArray){
+            changeTime2Long(single); // 修改创建时间的格式  以便前段展示
+            list.add(single);
+        }
+        model.addAttribute("jobs",list.subList(0,Math.min(15,list.size())));
+        model.addAttribute("tasks", tasks.subList(0,Math.min(15,tasks.size())));
+        return "home";
+    }
+
+    @GetMapping("/taskDashBoard")
+    public String dashBoard ( @RequestParam("taskId") long taskId ,
+                              @RequestParam("caseId") long caseId ,
+                              Model model){
+        JSONObject data = taskService.getAllTaskDashboard(caseId, taskId);
+        model.addAttribute("task",data);
+        return "crowdTaskDashboard";
+    }
+
+    // TODO: 2020/4/1 sweager崩了没有测试
+    @GetMapping("/distribute")
+    @ResponseBody
+    public String distributePeople (@RequestParam("examId") String examId,
+                                    @RequestParam("caseId")String caseId){
+        if(caseId == null || caseId.length()==0) return "fail";
+
+        return taskService.distribute(examId,caseId)?"success":"fail";
+    }
+
+
+    @GetMapping("/")
+    public String root(Model model) {
+        return "redirect:/home";
+    }
+
+    @GetMapping("/task_detail")
+    public String taskDetail(@RequestParam("examId") long examId,
+                             @RequestParam("caseId") long caseId,
+                             Model model) {
+
+        // first check is there some data in bugData document
+        // 将bug表中的信息同步到BugData中
+        bugDataService.importBugData(examId, caseId);//  访问任务的时候同步报告信息
+        // after import the bug data
+        // 在MasterReport表中查找融合报告的数量,若大于0,则认为已经融合
+        boolean aggregated = masterReportService.isAggregated(examId, caseId); // 检查报告是否已经聚合
+        // 在bug表中查找所有的bug报告数
+        List<BugDTO> allReports = bugReportService.getAllBugs(examId, caseId); // 得到所有的报告
+        // 在BugData表中查找bug数据,<bugid,BugData>
+        Map<String , BugData> bugIds2Data = bugDataService.bugId2BugData(examId, caseId);
+        // 将单一状报告转化成树状
+        Map<String,String> single2rootMap = historyService.getSingle2Root(caseId, examId);
+        // 若被融合
+        if (aggregated) { // add the information that where present when reports have been aggregated
+            List<String> bugIds = allReports.stream().map(BugDTO::getId).collect(Collectors.toList());
+            // MasterReport表中获得所有的报告
+            List<MasterReport> mrs = masterReportService.getByBugIds(bugIds);
+            Map<String, MasterReport> mrMap = mrs.stream().collect(toMap(MasterReport::getBugId, Function.identity()));
+            allReports.forEach(bug -> {
+                bug.setMasterId(mrMap.get(bug.getId()).getMasterId());
+            });
+        }
+        allReports.forEach(bug->{
+            String te = single2rootMap.get(bug.getId());
+            bug.setTreeId(te==null?"null":te);
+            bug.setStatus(bugIds2Data.get(bug.getId()).getStatus());
+            bug.setReviewerId(bugIds2Data.get(bug.getId()).getReviewerId());
+        });
+
+        // 从json中获得的task数据保存到TaskDTO中返回
+        TaskDTO task = taskService.getByExamIdAndCaseId(examId, caseId);
+        // 返回服务序列号
+//        String encodedUrl = taskService.getEncodeTaskReportUrl(examId, caseId) ;
+        // 返回大图信息
+        model.addAttribute("dtUrl",taskService.getTaskDaPanUrl(examId,caseId));
+        model.addAttribute("aggregated", aggregated);
+        // allReport是ButDTO集合
+        model.addAttribute("allReports", allReports);
+        model.addAttribute("severity2String", ReportUtil.severity2String);
+        model.addAttribute("recurrent2String", ReportUtil.recurrent2String);
+        model.addAttribute("task", task);
+        model.addAttribute("reviewMap", ReportUtil.reviewerMap);
+        model.addAttribute("examId", examId);
+        model.addAttribute("caseId", caseId);
+        model.addAttribute("reportHost",reportHost);
+//        model.addAttribute("encodedUrl",encodedUrl);
+        return "task_detail";
+    }
+
+    private void changeTime2Long ( Object input){
+        JSONObject temp = (JSONObject) input;
+        temp.put("create_time",new Timestamp(Long.parseLong(temp.get("create_time").toString()))); // 修改创建时间的格式  以便前段展示
+    }
+
+    @GetMapping("/addCrowdTask")
+    public String addCrowdTask(Model model){
+        model.addAttribute("templateUrl",useOss?"http://mooctest-site.oss-cn-shanghai.aliyuncs.com/excel-template.xlsx":urlPrefix+"excel-template.xlsx");
+        return "addCrowdTask";
+    }
+
+
+    /**
+     * 添加任务 /addCrowdTask
+     * @param name  任务名称
+     * @param description   任务描述
+     * @param os    任务的操作系统
+     * @param threePage 测试大纲表格
+     * @param model
+     * @return
+     */
+    @PostMapping("/addCrowdTask")
+    @ResponseBody
+    public SimpleResponse addCrowdTask2(@RequestParam("name")String name, @RequestParam("description")String description,
+                                        @RequestParam("os")String os, @RequestParam("threePage") MultipartFile threePage,
+                                        Model model){
+        return taskService.addCrowdTask(name, description, os, threePage);
+    }
+
+    /**
+     * 信创创建任务后调用此接口在众测新建任务 /addCrowdTaskDefault
+     * collaborativeType 0-非协作 1-协作
+     * @param name
+     * @param description
+     * @param collaborativeType
+     * @return
+     */
+    @PostMapping("/addCrowdTaskDefault")
+    @ResponseBody
+    public SimpleResponse addCrowdTaskDefault(@RequestParam("name")String name, @RequestParam("description")String description,
+                                              @RequestParam("collaborativeType")String collaborativeType,
+                                              @RequestParam("threePageUrl") String threePageUrl, @RequestParam("fileName") String fileName){
+        Map<String, Object> configurationMap = configurationService.getConfigurationMap();
+        String os = configurationMap.get("os").toString();
+        // 后边generatePaperType方法中会根据;进行split
+        os = os.replaceAll(",", ";").replaceAll(" ", "").replaceAll("\\[", "").replaceAll("\\]", "");
+
+        if(threePageUrl == null || threePageUrl.equals("")) {
+            return new SimpleResponse(400,"请提交三级页面");
+        }
+        long caseId = taskService.addCrowdTaskDefault(name, description, os, threePageUrl, fileName, Integer.parseInt(collaborativeType));
+        long examId = caseId;
+        // 返回大图url
+        String taskDaPanUrl = taskService.getTaskDaPanUrl(examId, caseId);
+        taskDaPanUrl = taskDaPanUrl.replaceAll("%3D", "=");
+        TaskExtend taskExtend = new TaskExtend(examId, caseId, taskDaPanUrl);
+        return caseId != -1 ? new SimpleResponse(200,"创建成功", taskExtend) : new SimpleResponse(400,"创建失败");
+    }
+}