Jelajahi Sumber

添加lly学姐关于众测转众审分配的接口

MengyangDuan 5 tahun lalu
induk
melakukan
2ba377886e

+ 4 - 4
src/main/java/edu/nju/controller/ReviewJobController.java

@@ -55,10 +55,10 @@ public class ReviewJobController {
 
     @RequestMapping(value = "/uploadJob", method = RequestMethod.POST)
     @ResponseBody
-    public void uploadJob(String name, String description, String paperId, String startTime, String endTime,int singleTime, int totalWorkload, @RequestParam("workerList")List<String>workerList, String workerDistribution,int maxWorker, HttpServletResponse response){
+    public void uploadJob(String name, String description, String paperId, String startTime, String endTime,int singleTime, int totalWorkload, @RequestParam("workerList")List<String>workerList, String workerDistribution,String groupId,int maxWorker, HttpServletResponse response){
         try {
             PrintWriter out = response.getWriter();
-            JSONObject jsonObject = reviewJobService.uploadJob("","","",name, description, paperId, startTime, endTime,singleTime,totalWorkload, workerList, workerDistribution,maxWorker);
+            JSONObject jsonObject = reviewJobService.uploadJob("","","",name, description, paperId, startTime, endTime,singleTime,totalWorkload, workerList, workerDistribution,groupId,maxWorker);
             out.print(jsonObject);
             out.flush();
             out.close();
@@ -92,8 +92,8 @@ public class ReviewJobController {
 
     @RequestMapping(value = "/updateJob", method = RequestMethod.POST)
     @ResponseBody
-    public void updateJob(String jobId, String name, String description, String paperId,String startTime, String endTime,int singleTime, int totalWorkload,@RequestParam("workerList")List<String>workerList,String workerDistribution, int maxWorker,HttpServletResponse response){
-        JSONObject result = reviewJobService.updateJob(jobId, name, description, paperId, startTime, endTime, singleTime,totalWorkload,workerList, workerDistribution,maxWorker);
+    public void updateJob(String jobId, String name, String description, String paperId,String startTime, String endTime,int singleTime, int totalWorkload,@RequestParam("workerList")List<String>workerList,String workerDistribution,String groupId, int maxWorker,HttpServletResponse response){
+        JSONObject result = reviewJobService.updateJob(jobId, name, description, paperId, startTime, endTime, singleTime,totalWorkload,workerList, workerDistribution,groupId,maxWorker);
         try {
             PrintWriter out = response.getWriter();
             out.print(result);

+ 0 - 17
src/main/java/edu/nju/controller/ReviewPaperController.java

@@ -144,13 +144,6 @@ public class ReviewPaperController {
         }
     }
 
-//    @RequestMapping(value = "/addWorker")
-//    @ResponseBody
-//    public String addWorker(String examId,String paperId, @RequestParam("workerList")List<String>workerList,HttpServletResponse response){
-//        String jobId=reviewPaperService.addWorker(examId,paperId,workerList);
-//        return jobId;
-//    }
-
     @RequestMapping(value = "/getPaperByWorker")
     @ResponseBody
     public String getPaperByWorker(@RequestParam String examId,@RequestParam String caseId, @RequestParam String workerIndex ){
@@ -158,15 +151,5 @@ public class ReviewPaperController {
         return url;
     }
 
-//    @RequestMapping(value = "/getPaperIds")
-//    @ResponseBody
-//    public List<String> getPaperIds(){
-//        List<ReviewPaper> papers = reviewPaperService.getPapers();
-//        List<String>result=new ArrayList<>();
-//        for(int i=0;i<papers.size();i++){
-//            result.add(papers.get(i).getId());
-//        }
-//        return result;
-//    }
 
 }

+ 1 - 1
src/main/java/edu/nju/model/BugRecurrent.java

@@ -1,7 +1,7 @@
 package edu.nju.model;
 
 public enum BugRecurrent {
-    其他(0),无规律复现(1),小概率现(2),大概率复现(3),必现(4);
+    其他(0),无规律复现(1),小概率现(2),大概率复现(3),必现(4);
     private int id;
 
     BugRecurrent(int id) {

+ 37 - 6
src/main/java/edu/nju/service/ReviewJobService.java

@@ -5,6 +5,7 @@ import edu.nju.entities.*;
 import edu.nju.model.JobJsonDTO;
 import edu.nju.model.MessageVO;
 import edu.nju.model.ReviewPaperVO;
+import edu.nju.util.HTTP;
 import org.json.JSONArray;
 import org.json.JSONObject;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -42,7 +43,7 @@ public class ReviewJobService {
         return jobDao.findJobs();
     }
 
-    public JSONObject uploadJob(String jobId,String examId,String caseId,String name, String description, String paperId, String startTime, String endTime,int singleTime,int totalWorkload, List<String>workerList, String workerDistribution,int maxWorker){
+    public JSONObject uploadJob(String jobId,String examId,String caseId,String name, String description, String paperId, String startTime, String endTime,int singleTime,int totalWorkload, List<String>workerList, String workerDistribution,String groupId,int maxWorker){
         JSONObject jsonObject=new JSONObject();
         String checkResult=checkJobDistribution(workerDistribution);
         if(!checkResult.equals("success")){
@@ -50,15 +51,27 @@ public class ReviewJobService {
             jsonObject.put("message",checkResult);
             return jsonObject;
         }
+        //新建,否则是update
         if(jobId.equals("")) {
-            ReviewJob newReviewJob = new ReviewJob(examId, caseId, name, description, Long.toString(System.currentTimeMillis()), paperId, startTime, endTime, singleTime,totalWorkload,"", maxWorker);
+            ReviewJob newReviewJob = new ReviewJob(examId, caseId, name, description, Long.toString(System.currentTimeMillis()), paperId, startTime, endTime, singleTime,totalWorkload,groupId, maxWorker);
             jobId = jobDao.save(newReviewJob);
         }
+        //是教育版则调用分配服务
+        if(examId!=null&!examId.equals("")){
+            try {
+                invokeJobDistributionService(name, paperId, examId, singleTime, totalWorkload);
+            } catch (Exception e) {
+                jsonObject.put("status","fail");
+                jsonObject.put("jobId","分配服务调用失败");
+                return jsonObject;
+            }
+        }
+        //默认分配
         if(workerDistribution.equals("")||workerDistribution.equals("[]")){
             List<String>workerIds=new ArrayList<>();
             for(int i=0;i<workerList.size();i++){
                 String workerIndex=workerList.get(i);
-                String workerId=reviewWorkerDao.save(new ReviewWorker(workerIndex,paperId,"",jobId));
+                String workerId=reviewWorkerDao.save(new ReviewWorker(workerIndex,paperId,examId,jobId));
                 workerIds.add(workerId);
             }
             List<ReviewReport>reviewReports=reportDao.getReportsByPaperId(paperId);
@@ -82,6 +95,24 @@ public class ReviewJobService {
         return jsonObject;
     }
 
+    private void invokeJobDistributionService(String name,String paperId,String examId,int singleTime,int totalWorkload) throws Exception{
+        ReviewPaper reviewPaper=reviewPaperService.getPaper(paperId);
+        String type=reviewPaper.getType();
+        ReviewPaperJson reviewPaperJson=reviewPaperService.getReviewPaperJson(paperId);
+        String json=reviewPaperJson.getJson();
+        JSONObject jsonObject=new JSONObject(json);
+        JSONArray reports= (JSONArray) jsonObject.get("report_list");
+        JSONObject result=new JSONObject();
+        result.put("taskName",name);
+        result.put("type",type);
+        result.put("singleTime",singleTime);
+        result.put("totalWorkload",totalWorkload);
+        result.put("reports",reports);
+        String jobJson=result.toString();
+        String invokeResult = HTTP.sendGet("http://129.211.26.227:8082/reportsDistribution/" + examId, jobJson);
+
+    }
+
     private String checkJobDistribution(String workerDistribution){
         try {
             if(workerDistribution.equals("")||workerDistribution.equals("[]")){
@@ -163,7 +194,7 @@ public class ReviewJobService {
             for(int i=0;i<reports.size();i++){
                 reportIds.add(reports.get(i).getId());
             }
-            JSONObject jsonObject=uploadJob("",examId,caseId,jobName,jobDescription,paperId,startTime,endTime,0,0,workerList,"",0);
+            JSONObject jsonObject=uploadJob("",examId,caseId,jobName,jobDescription,paperId,startTime,endTime,0,0,workerList,"","",0);
             // groupDao.save(new ReviewGroup("default","",workerList,jobId,reportIds));
             if(jsonObject.getString("status").equals("success")) {
                 messageVO.setStatus("200");
@@ -180,7 +211,7 @@ public class ReviewJobService {
         return messageVO;
     }
 
-    public JSONObject updateJob(String jobId,String name, String description, String paperId,String startTime, String endTime,int singleTime, int totalWorkload,List<String>workerList,String workerDistribution,int maxWorker){
+    public JSONObject updateJob(String jobId,String name, String description, String paperId,String startTime, String endTime,int singleTime, int totalWorkload,List<String>workerList,String workerDistribution,String groupId,int maxWorker){
         ReviewJob reviewJob=jobDao.findJob(jobId);
         reviewJob.setName(name);
         reviewJob.setDescription(description);
@@ -190,7 +221,7 @@ public class ReviewJobService {
         jobDao.save(reviewJob);
         groupDao.removeByJob(jobId);
         reviewWorkerDao.removeByJob(jobId);
-        JSONObject jsonObject1=uploadJob(jobId,"","",name,description,paperId,startTime,endTime,singleTime,totalWorkload,workerList,workerDistribution,maxWorker);
+        JSONObject jsonObject1=uploadJob(jobId,"","",name,description,paperId,startTime,endTime,singleTime,totalWorkload,workerList,workerDistribution,groupId,maxWorker);
         return jsonObject1;
     }
 

+ 26 - 8
src/main/java/edu/nju/service/ReviewPaperService.java

@@ -5,6 +5,7 @@ import edu.nju.entities.*;
 import edu.nju.model.CrowdReviewReportDTO;
 import edu.nju.model.CrowdReviewReportVO;
 import edu.nju.model.ReviewPaperVO;
+import edu.nju.util.HTTP;
 import org.json.JSONArray;
 import org.json.JSONObject;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -154,7 +155,7 @@ public class ReviewPaperService {
         }catch (Exception e){
             object.put("status","fail");
             object.put("message",e.getMessage());
-    }
+        }
         return object;
     }
 
@@ -378,14 +379,31 @@ public class ReviewPaperService {
             return url;
         }
         String workerId=reviewWorkerDao.save(new ReviewWorker(workerIndex,paperId,examId,jobId));
-        List<ReviewReport>reviewReports=getReportsByPaperId(paperId);
-        List<String>reportIds=new ArrayList<>();
-        for(int i=0;i<reviewReports.size();i++)
-            reportIds.add(reviewReports.get(i).getId());
-        ReviewGroup reviewGroup=reviewGroupDao.getGroupByReports(reportIds);
-        List<String>workerIds=reviewGroup.getWorkers_id();
+        List<String>reportIndexs=new ArrayList<>();
+        String invokeResult = HTTP.sendGet("http://129.211.26.227:8082/reports2worker/" + examId, workerId);
+        if (invokeResult.startsWith("[")){
+            invokeResult.substring(1,invokeResult.length()-1);
+            String[]reports=invokeResult.split(",");
+            for(int i=0;i<reports.length;i++){
+                reportIndexs.add(reports[i]);
+            }
+        }else{
+            return "";
+        }
+        List<String>workerIds=new ArrayList<>();
         workerIds.add(workerId);
-        reviewGroup.setWorkers_id(workerIds);
+        List<String>reportIds=new ArrayList<>();
+        List<String>paperOriginalIds=new ArrayList<>();
+        List<String>originalIds=new ArrayList<>();
+        for(int i=0;i<reportIndexs.size();i++){
+            String originalId=reportIndexs.get(i);
+            ReviewReport reviewReport=reviewReportDao.findReportByPaperOriginalId(paperId,originalId);
+            String reportId=reviewReport.getId();
+            reportIds.add(reportId);
+            paperOriginalIds.add(paperId+"-"+originalId);
+            originalIds.add(originalId);
+        }
+        ReviewGroup reviewGroup=new ReviewGroup("","",workerIds,jobId,reportIds,paperOriginalIds,originalIds);
         reviewGroupDao.save(reviewGroup);
         String url="http://47.99.140.117:"+port+"/report/review/job/"+jobId+"/"+workerId+"/0";
         return url;