Browse Source

众审结束后自动更新bug分数到众测和主站

xujiawei 5 years ago
parent
commit
2be1ae9952

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

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

+ 90 - 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.File;
 import java.io.FileOutputStream;
 import java.io.FileOutputStream;
 import java.text.DecimalFormat;
 import java.text.DecimalFormat;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 
 @Service
 @Service
 public class ReviewAnalyzeService {
 public class ReviewAnalyzeService {
@@ -38,6 +35,16 @@ public class ReviewAnalyzeService {
     @Autowired
     @Autowired
     ReviewReportDao reviewReportDao;
     ReviewReportDao reviewReportDao;
 
 
+    @Autowired
+    BugDao bugDao;
+
+    @Autowired
+    BugScoreDao bugScoreDao;
+
+
+    @Autowired
+    AnalyzeService analyzeService;
+
 
 
     public JSONObject analyzeItem(String itemId,String reportId,String jobId){
     public JSONObject analyzeItem(String itemId,String reportId,String jobId){
         JSONObject jsonObject=new JSONObject();
         JSONObject jsonObject=new JSONObject();
@@ -268,4 +275,83 @@ public class ReviewAnalyzeService {
             return null;
             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;
+                analyzeService.getScores(caseTakeId);
+                result.put("status","200");
+                result.put("计算工人分数并上传","成功");
+            }
+        }
+        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;
+    }
+
 }
 }

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