Explorar el Código

merge testMerge branch 'test' into dmy

MengyangDuan hace 5 años
padre
commit
3d2d176645

+ 10 - 0
src/main/java/edu/nju/controller/ReviewAnalyzeController.java

@@ -63,4 +63,14 @@ public class ReviewAnalyzeController {
 //        return job;
 //    }
 
+    @RequestMapping(value = "/job/crowdReviewGradeToCrowdTest", method = RequestMethod.GET)
+    @ResponseBody
+    public JSONObject crowdReviewGradeToCrowdTest (String jobId , HttpServletResponse response){
+        JSONObject result = reviewAnalyzeService.crowdReviewGradeToCrowdTest(jobId);
+        return result;
+    }
+
+
+
+
 }

+ 1 - 1
src/main/java/edu/nju/dao/ReviewGroupDao.java

@@ -33,7 +33,7 @@ public class ReviewGroupDao {
     public void removeByJob(String jobId){
         Query query = new Query();
         query.addCriteria(Criteria.where("job_id").is(jobId));
-        mongoOperations.remove(query,ReviewJob.class);
+        mongoOperations.remove(query,ReviewGroup.class);
     }
 
     public ReviewGroup getGroupByReports(List<String>reportIds){

+ 4 - 4
src/main/java/edu/nju/model/WorkerVO.java

@@ -7,12 +7,12 @@ public class WorkerVO {
 
     private String school;
 
-    private int grade;
+    private double grade;
 
     public WorkerVO() {
     }
 
-    public WorkerVO(String id, String name, String school,int grade) {
+    public WorkerVO(String id, String name, String school,double grade) {
         this.id = id;
         this.name = name;
         this.school = school;
@@ -43,11 +43,11 @@ public class WorkerVO {
         this.school = school;
     }
 
-    public int getGrade() {
+    public double getGrade() {
         return grade;
     }
 
-    public void setGrade(int grade) {
+    public void setGrade(double grade) {
         this.grade = grade;
     }
 }

+ 91 - 4
src/main/java/edu/nju/service/ReviewAnalyzeService.java

@@ -17,10 +17,7 @@ import org.springframework.stereotype.Service;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.text.DecimalFormat;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 @Service
 public class ReviewAnalyzeService {
@@ -38,6 +35,16 @@ public class ReviewAnalyzeService {
     @Autowired
     ReviewReportDao reviewReportDao;
 
+    @Autowired
+    BugDao bugDao;
+
+    @Autowired
+    BugScoreDao bugScoreDao;
+
+
+    @Autowired
+    AnalyzeService analyzeService;
+
 
     public JSONObject analyzeItem(String itemId,String reportId,String jobId){
         JSONObject jsonObject=new JSONObject();
@@ -268,4 +275,84 @@ public class ReviewAnalyzeService {
             return null;
         }
     }
+
+    public JSONObject crowdReviewGradeToCrowdTest (String jobId){
+        JSONObject result=new JSONObject();
+        JSONObject updateBugScore=uploadCrowdTestBugGrade(jobId);
+        if("500".equals(updateBugScore.get("status"))){
+            return updateBugScore;
+        }else{
+            ReviewJob reviewJob=reviewJobDao.findJob(jobId);
+            if(reviewJob==null){
+                result.put("status","500");
+                result.put("计算工人分数并上传","不存在该job");
+            }else {
+                String caseId =reviewJob.getCase_id();
+                String examId=reviewJob.getExam_id();
+                String caseTakeId =caseId+examId;
+                JSONArray json=analyzeService.getScores(caseTakeId);
+                result.put("status","200");
+                result.put("计算工人分数并上传","成功");
+                result.put("jsonArray",json);
+            }
+        }
+        return result;
+    }
+
+
+
+    //回写众审结束后的bug分数至bugScore
+    private JSONObject uploadCrowdTestBugGrade(String jobId){
+        ReviewJob reviewJob=reviewJobDao.findJob(jobId);
+        JSONObject result=new JSONObject();
+        if(reviewJob==null){
+            result.put("status","500");
+            result.put("更新bugScore","不存在该job");
+        }else {
+            ReviewPaper reviewPaper = reviewPaperDao.findPaper(reviewJob.getPaper_id());
+            if (reviewPaper.getType().equals("众包测试")) {
+                List<ReviewReport> reviewReportList = reviewReportDao.getReportsByPaperId(reviewJob.getPaper_id());
+                if(reviewReportList==null){
+                    result.put("status","500");
+                    result.put("更新bugScore","该job内不存在report");
+                }else {
+                    //一个report对应一个bug
+                    for (ReviewReport reviewReport : reviewReportList) {
+                        String bugId = reviewReport.getOriginal_id();
+                        List<ReviewItem> reviewItemList = reviewItemDao.findItemsByReport(reviewReport.getId());
+                        //众测转成的众审,item只有一个,单选题,选择得几分
+                        if (reviewItemList != null && reviewItemList.size() == 1) {
+                            ReviewItem reviewItem = reviewItemList.get(0);
+                            if (reviewItem.getType().equals("Single")) {
+                                int allScore = 0;//总分
+                                int count = 0;//共有几人评分
+                                List<ReviewAnswer> reviewAnswerList = reviewAnswerDao.getItemReportJobAnswers(reviewItem.getId(), reviewReport.getId(), jobId);
+                                for (ReviewAnswer reviewAnswer : reviewAnswerList) {
+                                    List<String> answers = reviewAnswer.getAnswers();
+                                    //该题进行了选择
+                                    if (answers != null && answers.size() > 0) {
+                                        for (int i = 0; i < answers.size(); i++) {
+                                            if ("1".equals(answers.get(i))) {
+                                                allScore += i;
+                                                count++;
+                                                break;
+                                            }
+                                        }
+                                    }
+                                }
+                                int grade = allScore / count;
+                                //新建bugScore并保存
+                                BugScore bugScore = new BugScore(bugId, grade, 0);
+                                bugScoreDao.save(bugScore);
+                            }
+                        }
+                    }
+                    result.put("status","200");
+                    result.put("更新bugScore","更新bugScore成功");
+                }
+            }
+        }
+        return result;
+    }
+
 }

+ 11 - 10
src/main/java/edu/nju/service/ReviewJobService.java

@@ -138,17 +138,22 @@ public class ReviewJobService {
         String caseId=jobJsonDTO.getCaseId();
         JSONArray workerList_Array=new JSONArray(jobJsonDTO.getWorker_list());
         String paperUrl=jobJsonDTO.getPaperUrl();
-        System.out.println("基本读取成功");
         List<String>workerList=new ArrayList<>();
         for(int i=0;i<workerList_Array.length();i++){
             workerList.add(String.valueOf(workerList_Array.get(i)));
         }
         MessageVO messageVO=new MessageVO();
+
+        ReviewJob reviewJob=findJobByExamCase(examId,caseId);
+        JSONObject jsonObject=null;
         try {
+            if(reviewJob!=null){
+                reviewPaperService.delPaper(reviewJob.getPaper_id());
+            }
             String paperJson=readStringFromUrl(paperUrl);
             JSONObject paperResult=reviewPaperService.uploadPaper(paperJson);
             System.out.println("paperJson拉成功");
-            if(!paperResult.getString("status").equals("success")){
+            if(!paperResult.getString("status").equals("success")) {
                 messageVO.setStatus("500");
                 messageVO.setMessage("创建paper失败");
                 return messageVO;
@@ -158,17 +163,12 @@ public class ReviewJobService {
             if (examId!=null&&(!examId.equals(""))){
                 crowdSourceToReviewPaperDao.save(new CrowdSourceToReviewPaper(paperId,examId+"-"+caseId,paperUrl));
             }
-            List<ReviewReport>reports=reviewPaperService.getReportsByPaperId(paperId);
-            List<String>reportIds=new ArrayList<>();
-            for(int i=0;i<reports.size();i++){
-                reportIds.add(reports.get(i).getId());
-            }
-            ReviewJob reviewJob=findJobByExamCase(examId,caseId);
-            JSONObject jsonObject=new JSONObject();
+
             if(reviewJob==null) {
                 jsonObject = uploadJob("", examId, caseId, jobName, jobDescription, paperId, startTime, endTime, 0, 0, workerList, "", 0);
             }
-            else {
+            else{
+                reviewPaperService.delPaper(reviewJob.getPaper_id());
                 jsonObject = updateJob(reviewJob.getId(), jobName,jobDescription,paperId,startTime,endTime,0, 0, workerList, "", 0);
             }
             // groupDao.save(new ReviewGroup("default","",workerList,jobId,reportIds));
@@ -194,6 +194,7 @@ public class ReviewJobService {
         reviewJob.setStart_time(startTime);
         reviewJob.setEnd_time(endTime);
         reviewJob.setMax_worker(maxWorker);
+        reviewJob.setPaper_id(paperId);
         jobDao.save(reviewJob);
         groupDao.removeByJob(jobId);
         reviewWorkerDao.removeByJob(jobId);

+ 13 - 5
src/main/java/edu/nju/service/ReviewService.java

@@ -6,8 +6,15 @@ import edu.nju.model.ReviewWorkerVO;
 import edu.nju.util.HTTP;
 import org.json.JSONObject;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.converter.StringHttpMessageConverter;
 import org.springframework.stereotype.Service;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.client.RestTemplate;
 
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -172,7 +179,7 @@ public class ReviewService {
         return reviewReports;
     }
 
-    //回写众审结束后的bug分数
+    //回写众审结束后的bug分数至bugScore
     public void UploadCrowdTestBugGrade(String jobId){
         ReviewJob reviewJob=reviewJobDao.findJob(jobId);
         ReviewPaper reviewPaper=reviewPaperDao.findPaper(reviewJob.getPaper_id());
@@ -181,8 +188,8 @@ public class ReviewService {
             //一个report对应一个bug
             for (ReviewReport reviewReport : reviewReportList) {
                 String bugId = reviewReport.getOriginal_id();
-                Bug bug=bugDao.findByid(bugId);
-                BugScore bugScore=bugScoreDao.findById(bug.getId());
+//                Bug bug=bugDao.findByid(bugId);
+//                BugScore bugScore=bugScoreDao.findById(bug.getId());
                 List<ReviewItem> reviewItemList=reviewItemDao.findItemsByReport(reviewReport.getId());
                 //众测转成的众审,item只有一个,单选题,选择得几分
                 if(reviewItemList!=null&&reviewItemList.size()==1) {
@@ -205,7 +212,9 @@ public class ReviewService {
                             }
                         }
                         int grade=allScore/count;
-                        bugScore.setGrade(grade);
+                        //新建bugScore
+                        BugScore bugScore=new BugScore(bugId,grade,0);
+//                        bugScore.setGrade(grade);
                         bugScoreDao.save(bugScore);
                     }
                 }
@@ -214,7 +223,6 @@ public class ReviewService {
 
     }
 
-
 //    //生成一次众审任务的数据统计报告
 //    public void generateResultStatisticsReport(String jobId){
 //    }