소스 검색

服务掉不成了,又换回自己的静态分配TAT

MengyangDuan 5 년 전
부모
커밋
5494bf5d9e

+ 16 - 1
src/main/java/edu/nju/controller/AnalyzeController.java

@@ -8,6 +8,7 @@ import java.util.Map;
 import javax.servlet.http.HttpServletResponse;
 
 import edu.nju.model.AnalyseVO;
+import edu.nju.model.BugDataVO;
 import org.json.JSONArray;
 import org.json.JSONObject;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -67,6 +68,13 @@ public class AnalyzeController {
 			e.printStackTrace();
 		}
 	}
+
+	//根据用例获取所有有效bug
+	@RequestMapping(value = "/bugData")
+	@ResponseBody
+	public List<BugDataVO> getBugDataVO(String case_take_id) {
+		return aservice.getBugDataVO(case_take_id);
+	}
 	
 	//获取所有有点赞记录的bug
 	@RequestMapping(value = "/thums")
@@ -129,7 +137,7 @@ public class AnalyzeController {
 		}
 	}
 	
-	//获取所有的参与用户
+	//获取所有的参与用户,这个方法之前写的,ms有点问题啊
 	@RequestMapping(value = "/users")
 	@ResponseBody
 	public void getUsers(String case_take_id, HttpServletResponse response) {
@@ -143,6 +151,13 @@ public class AnalyzeController {
 			e.printStackTrace();
 		}
 	}
+
+	//真正获取所有的参与用户
+	@RequestMapping(value = "/workers")
+	@ResponseBody
+	public List<Long> getUserss(Long examId) {
+		return aservice.getUsers(String.valueOf(examId));
+	}
 	
 	//获取指定bug的打分等级
 	@RequestMapping(value = "/grade")

+ 53 - 0
src/main/java/edu/nju/controller/CrowdsourcingToReviewController.java

@@ -0,0 +1,53 @@
+package edu.nju.controller;
+
+
+import edu.nju.entities.ReviewJob;
+import edu.nju.service.ReviewJobService;
+import org.json.JSONArray;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.List;
+
+@Controller
+@RequestMapping(value = "/crowdsourcingToReview")
+@CrossOrigin(origins = "*", maxAge = 3600, allowCredentials = "true")
+public class CrowdsourcingToReviewController {
+
+    @Autowired
+    ReviewJobService rService;
+
+
+    @RequestMapping(value = "/examId")
+    @ResponseBody
+    public String getExamIdByJobId(String jobId) {
+        ReviewJob reviewJob=rService.getJob(jobId);
+        String result="";
+        if(reviewJob!=null){
+            String temp=reviewJob.getExam_id();
+            if(temp!=null)
+                result=temp;
+        }
+        return result;
+    }
+
+    @RequestMapping(value = "jobId")
+    @ResponseBody
+    public List<String> getJobIdByExamId(String examId) {
+            List<ReviewJob> jobs=rService.getJobsByExam(examId);
+            List<String>result=new ArrayList<>();
+            if(jobs!=null){
+                for(ReviewJob reviewJob:jobs){
+                    result.add(reviewJob.getId());
+                }
+            }
+            return result;
+    }
+
+}

+ 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,String groupId,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,int maxWorker, HttpServletResponse response){
         try {
             PrintWriter out = response.getWriter();
-            JSONObject jsonObject = reviewJobService.uploadJob("","","",name, description, paperId, startTime, endTime,singleTime,totalWorkload, workerList, workerDistribution,groupId,maxWorker);
+            JSONObject jsonObject = reviewJobService.uploadJob("","","",name, description, paperId, startTime, endTime,singleTime,totalWorkload, workerList, workerDistribution,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,String groupId, int maxWorker,HttpServletResponse response){
-        JSONObject result = reviewJobService.updateJob(jobId, name, description, paperId, startTime, endTime, singleTime,totalWorkload,workerList, workerDistribution,groupId,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, int maxWorker,HttpServletResponse response){
+        JSONObject result = reviewJobService.updateJob(jobId, name, description, paperId, startTime, endTime, singleTime,totalWorkload,workerList, workerDistribution,maxWorker);
         try {
             PrintWriter out = response.getWriter();
             out.print(result);

+ 6 - 0
src/main/java/edu/nju/dao/ReportDao.java

@@ -54,5 +54,11 @@ public class ReportDao {
 		query.addCriteria(Criteria.where("case_take_id").is(case_take_id));
 		return mongoOperations.find(query, Report.class);
 	}
+
+	public List<Report> findByExamId(String task_id) {
+		Query query = new Query();
+		query.addCriteria(Criteria.where("task_id").is(task_id));
+		return mongoOperations.find(query, Report.class);
+	}
 	
 }

+ 7 - 0
src/main/java/edu/nju/dao/ReviewJobDao.java

@@ -57,4 +57,11 @@ public class ReviewJobDao {
         return list;
     }
 
+    public List<ReviewJob> findJobsByExam(String examId){
+        Query query = new Query();
+        query.addCriteria(Criteria.where("exam_id").is(examId));
+        List<ReviewJob> list = mongoOperations.find(query,ReviewJob.class);
+        return list;
+    }
+
 }

+ 157 - 0
src/main/java/edu/nju/model/BugDataVO.java

@@ -0,0 +1,157 @@
+package edu.nju.model;
+
+import java.util.List;
+
+public class BugDataVO {
+
+    private String bugId;
+
+    private String bugCategory;
+
+    private String severity;
+
+    private String bugCreateTime;
+
+    private String bugPage;
+
+    private int score;
+
+    private String parent;
+
+    private List<String> children;
+
+    private String root;
+
+    private int goodNum;
+
+    private int badNum;
+
+    private String reportId;
+
+    private String workerId;
+
+    public BugDataVO(String bugId, String bugCategory, String severity, String bugCreateTime, String bugPage, int score, String parent, List<String> children, String root, int goodNum, int badNum, String reportId, String workerId) {
+        this.bugId = bugId;
+        this.bugCategory = bugCategory;
+        this.severity = severity;
+        this.bugCreateTime = bugCreateTime;
+        this.bugPage = bugPage;
+        this.score = score;
+        this.parent = parent;
+        this.children = children;
+        this.root = root;
+        this.goodNum = goodNum;
+        this.badNum = badNum;
+        this.reportId = reportId;
+        this.workerId = workerId;
+    }
+
+    public BugDataVO(){
+
+    }
+
+
+    public String getBugId() {
+        return bugId;
+    }
+
+    public void setBugId(String bugId) {
+        this.bugId = bugId;
+    }
+
+    public String getBugCategory() {
+        return bugCategory;
+    }
+
+    public void setBugCategory(String bugCategory) {
+        this.bugCategory = bugCategory;
+    }
+
+    public String getSeverity() {
+        return severity;
+    }
+
+    public void setSeverity(String severity) {
+        this.severity = severity;
+    }
+
+    public String getBugCreateTime() {
+        return bugCreateTime;
+    }
+
+    public void setBugCreateTime(String bugCreateTime) {
+        this.bugCreateTime = bugCreateTime;
+    }
+
+    public String getBugPage() {
+        return bugPage;
+    }
+
+    public void setBugPage(String bugPage) {
+        this.bugPage = bugPage;
+    }
+
+    public int getScore() {
+        return score;
+    }
+
+    public void setScore(int score) {
+        this.score = score;
+    }
+
+    public String getParent() {
+        return parent;
+    }
+
+    public void setParent(String parent) {
+        this.parent = parent;
+    }
+
+    public List<String> getChildren() {
+        return children;
+    }
+
+    public void setChildren(List<String> children) {
+        this.children = children;
+    }
+
+    public String getRoot() {
+        return root;
+    }
+
+    public void setRoot(String root) {
+        this.root = root;
+    }
+
+    public int getGoodNum() {
+        return goodNum;
+    }
+
+    public void setGoodNum(int goodNum) {
+        this.goodNum = goodNum;
+    }
+
+    public int getBadNum() {
+        return badNum;
+    }
+
+    public void setBadNum(int badNum) {
+        this.badNum = badNum;
+    }
+
+    public String getReportId() {
+        return reportId;
+    }
+
+    public void setReportId(String reportId) {
+        this.reportId = reportId;
+    }
+
+    public String getWorkerId() {
+        return workerId;
+    }
+
+    public void setWorkerId(String workerId) {
+        this.workerId = workerId;
+    }
+}

+ 8 - 2
src/main/java/edu/nju/model/BugSeverity.java

@@ -2,9 +2,10 @@ package edu.nju.model;
 
 public enum BugSeverity {
     待定(0),较轻(1),一般(2),严重(3),紧急(4);
+
     private int id;
 
-    BugSeverity(int i) {
+    BugSeverity(int id) {
         this.id=id;
     }
 
@@ -13,11 +14,16 @@ public enum BugSeverity {
     }
 
     public static BugSeverity getValue(int code){
-        for(BugSeverity bugSeverity:values()){
+        for(BugSeverity bugSeverity:BugSeverity.values()){
             if(bugSeverity.getId()==code){
                 return bugSeverity;
             }
         }
         return null;
     }
+
+    public static void main(String[] args) {
+        BugSeverity bugSeveritsy=BugSeverity.getValue(2);
+        System.out.println(bugSeveritsy.toString());
+    }
 }

+ 44 - 0
src/main/java/edu/nju/service/AnalyzeService.java

@@ -5,6 +5,8 @@ import java.util.*;
 import edu.nju.dao.*;
 import edu.nju.entities.*;
 import edu.nju.model.AnalyseVO;
+import edu.nju.model.BugDataVO;
+import edu.nju.model.BugSeverity;
 import edu.nju.model.WorkerVO;
 import edu.nju.util.HTTP;
 import org.json.JSONArray;
@@ -83,6 +85,35 @@ public class AnalyzeService {
 		}
 		return result;
 	}
+
+	public List<BugDataVO>getBugDataVO(String case_take_id){
+		List<BugDataVO>result=new ArrayList<>();
+		List<BugMirror> mirrors = mdao.findValid(case_take_id);
+		List<Bug>bugs=bdao.findByCaseid(case_take_id);
+		Map<String,Bug>bugMap=new HashMap<>();
+		for(Bug bug:bugs){
+			if(bug!=null){
+				bugMap.put(bug.getId(),bug);
+			}
+		}
+		for(BugMirror bugMirror : mirrors) {
+			if(bugMirror!=null){
+				Bug bug=bugMap.get(bugMirror.getId());
+				BugHistory bugHistory=hdao.findByid(bugMirror.getId());
+				if(bug!=null&&bugHistory!=null){
+					BugSeverity bugSeveritsy=BugSeverity.getValue(2);
+					String bugSeverity=bugSeveritsy.toString();
+					BugScore bugScore=bsdao.findById(bug.getId());
+					int score=bugScore==null?0:bugScore.getGrade();
+					String reportId=bug.getReport_id();
+					String workerId=findWorkerId(reportId);
+					BugDataVO bugDataVO=new BugDataVO(bug.getId(),bug.getBug_category(),bugSeverity,bug.getCreate_time_millis(),bug.getBug_page(),score,bugHistory.getParent(),bugHistory.getChildren(),bugHistory.getRoot(),bugMirror.getGood().size(),bugMirror.getBad().size(),reportId,workerId);
+					result.add(bugDataVO);
+				}
+			}
+		}
+		return result;
+	}
 	
 	public List<String> getReports(String case_take_id) {
 		List<String> result = new ArrayList<String>();
@@ -92,6 +123,19 @@ public class AnalyzeService {
 		}
 		return result;
 	}
+
+	public List<Long> getUsers(String examId) {
+		List<Long> result = new ArrayList<Long>();
+		List<Report> reports = reportDao.findByExamId(examId);
+		for(Report report : reports) {
+			if(report!=null) {
+				String workerId=findWorkerId(report.getId());
+				if(!workerId.equals("")&&!result.contains(workerId))
+					result.add(Long.parseLong(workerId));
+			}
+		}
+		return result;
+	}
 	
 	public int getGrade(String id) {
 		BugScore bs = bsdao.findById(id);

+ 126 - 169
src/main/java/edu/nju/service/ReviewJobService.java

@@ -5,7 +5,6 @@ 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;
@@ -43,135 +42,94 @@ 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,String groupId,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,int maxWorker){
         JSONObject jsonObject=new JSONObject();
-//        String checkResult=checkJobDistribution(workerDistribution);
-//        if(!checkResult.equals("success")){
-//            jsonObject.put("status","fail");
-//            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,groupId, maxWorker);
-            jobId = jobDao.save(newReviewJob);
+        String checkResult=checkJobDistribution(workerDistribution);
+        if(!checkResult.equals("success")){
+            jsonObject.put("status","fail");
+            jsonObject.put("message",checkResult);
+            return jsonObject;
         }
-        else{
-            ReviewJob newReviewJob = new ReviewJob(jobId,examId, caseId, name, description, Long.toString(System.currentTimeMillis()), paperId, startTime, endTime, singleTime,totalWorkload,groupId, maxWorker);
+        if(jobId.equals("")) {
+            ReviewJob newReviewJob = new ReviewJob(examId, caseId, name, description, Long.toString(System.currentTimeMillis()), paperId, startTime, endTime, singleTime,totalWorkload,"", maxWorker);
             jobId = jobDao.save(newReviewJob);
         }
-        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,examId,jobId));
-            workerIds.add(workerId);
+        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));
+                workerIds.add(workerId);
+            }
+            List<ReviewReport>reviewReports=reportDao.getReportsByPaperId(paperId);
+            List<String>reportIds=new ArrayList<>();
+            List<String>paperOriginalIds=new ArrayList<>();
+            List<String>originalIds=new ArrayList<>();
+            for(int i=0;i<reviewReports.size();i++) {
+                ReviewReport reviewReport=reviewReports.get(i);
+                reportIds.add(reviewReport.getId());
+                originalIds.add(reviewReport.getOriginal_id());
+                paperOriginalIds.add(paperId+"-"+reviewReport.getOriginal_id());
+            }
+            groupDao.save(new ReviewGroup("default","",workerIds,jobId,reportIds,paperOriginalIds,originalIds));
+            System.out.println("job存储成功");
         }
-        //是教育版则调用分配服务
-//        if(examId!=null&!examId.equals("")){
-        try {
-            invokeJobDistributionService(name, paperId, jobId, singleTime, totalWorkload);
-        } catch (Exception e) {
-            jsonObject.put("status","fail");
-            jsonObject.put("jobId","分配服务调用失败");
-            return jsonObject;
+        else {
+            saveJobDistribution(workerDistribution, jobId);
         }
-//        }
-//        //默认分配
-//        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,examId,jobId));
-//                workerIds.add(workerId);
-//            }
-//            List<ReviewReport>reviewReports=reportDao.getReportsByPaperId(paperId);
-//            List<String>reportIds=new ArrayList<>();
-//            List<String>paperOriginalIds=new ArrayList<>();
-//            List<String>originalIds=new ArrayList<>();
-//            for(int i=0;i<reviewReports.size();i++) {
-//                ReviewReport reviewReport=reviewReports.get(i);
-//                reportIds.add(reviewReport.getId());
-//                originalIds.add(reviewReport.getOriginal_id());
-//                paperOriginalIds.add(paperId+"-"+reviewReport.getOriginal_id());
-//            }
-//            groupDao.save(new ReviewGroup("default","",workerIds,jobId,reportIds,paperOriginalIds,originalIds));
-//            System.out.println("job存储成功");
-//        }
-//        else {
-//            saveJobDistribution(workerDistribution, jobId);
-//        }
         jsonObject.put("status","success");
         jsonObject.put("jobId",jobId);
         return jsonObject;
     }
 
-    private void invokeJobDistributionService(String name,String paperId,String jobId,int singleTime,int totalWorkload) throws Exception{
-        String url = "http://129.211.26.227:8082/reportsDistribution/"+ jobId;
-        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();
-        HTTP.postBody(url,jobJson);
+    private String checkJobDistribution(String workerDistribution){
+        try {
+            if(workerDistribution.equals("")||workerDistribution.equals("[]")){
+                return  "success";
+            }
+            JSONArray jsonArray=new JSONArray(workerDistribution);
+            for(int i=0;i<jsonArray.length();i++){
+                JSONObject jsonObject=jsonArray.getJSONObject(i);
+                String name=jsonObject.getString("name");
+                String desciption=jsonObject.getString("description");
+                JSONArray jsonArray1=jsonObject.getJSONArray("worker");
+                JSONArray jsonArray2=jsonObject.getJSONArray("report");
+            }
+        }catch (Exception e){
+            return "分配信息不正确:"+e.getMessage();
+        }
+        return "success";
     }
 
-//    private String checkJobDistribution(String workerDistribution){
-//        try {
-//            if(workerDistribution.equals("")||workerDistribution.equals("[]")){
-//                return  "success";
-//            }
-//            JSONArray jsonArray=new JSONArray(workerDistribution);
-//            for(int i=0;i<jsonArray.length();i++){
-//                JSONObject jsonObject=jsonArray.getJSONObject(i);
-//                String name=jsonObject.getString("name");
-//                String desciption=jsonObject.getString("description");
-//                JSONArray jsonArray1=jsonObject.getJSONArray("worker");
-//                JSONArray jsonArray2=jsonObject.getJSONArray("report");
-//            }
-//        }catch (Exception e){
-//            return "分配信息不正确:"+e.getMessage();
-//        }
-//        return "success";
-//    }
-
-//    private void saveJobDistribution(String workerDistribution,String jobId){
-//        String paperId=jobDao.findJob(jobId).getPaper_id();
-//        JSONArray jsonArray=new JSONArray(workerDistribution);
-//        for(int i=0;i<jsonArray.length();i++){
-//            JSONObject jsonObject=jsonArray.getJSONObject(i);
-//            String name=jsonObject.getString("name");
-//            String desciption=jsonObject.getString("description");
-//            JSONArray jsonArray1=jsonObject.getJSONArray("worker");
-//            List<String>workerIds=new ArrayList<>();
-//            for(int j=0;j<jsonArray1.length();j++){
-//                workerIds.add(String.valueOf(jsonArray1.get(j)));
-//            }
-//            JSONArray jsonArray2=jsonObject.getJSONArray("report");
-//            List<String>reportIds=new ArrayList<>();
-//            List<String>paperOriginalIds=new ArrayList<>();
-//            List<String>originalIds=new ArrayList<>();
-//            for(int j=0;j<jsonArray2.length();j++){
-//                String originalId=String.valueOf(jsonArray2.get(j));
-//                String paperOriginalId=paperId+"-"+originalId;
-//                String reportId=reportDao.findReportByPaperOriginalId(paperId,originalId).getId();
-//                paperOriginalIds.add(paperOriginalId);
-//                reportIds.add(reportId);
-//                originalIds.add(originalId);
-//            }
-//            groupDao.save(new ReviewGroup(name,desciption,workerIds,jobId,reportIds,paperOriginalIds,originalIds));
-//        }
-//    }
+    private void saveJobDistribution(String workerDistribution,String jobId){
+        String paperId=jobDao.findJob(jobId).getPaper_id();
+        JSONArray jsonArray=new JSONArray(workerDistribution);
+        for(int i=0;i<jsonArray.length();i++){
+            JSONObject jsonObject=jsonArray.getJSONObject(i);
+            String name=jsonObject.getString("name");
+            String desciption=jsonObject.getString("description");
+            JSONArray jsonArray1=jsonObject.getJSONArray("worker");
+            List<String>workerIds=new ArrayList<>();
+            for(int j=0;j<jsonArray1.length();j++){
+                workerIds.add(String.valueOf(jsonArray1.get(j)));
+            }
+            JSONArray jsonArray2=jsonObject.getJSONArray("report");
+            List<String>reportIds=new ArrayList<>();
+            List<String>paperOriginalIds=new ArrayList<>();
+            List<String>originalIds=new ArrayList<>();
+            for(int j=0;j<jsonArray2.length();j++){
+                String originalId=String.valueOf(jsonArray2.get(j));
+                String paperOriginalId=paperId+"-"+originalId;
+                String reportId=reportDao.findReportByPaperOriginalId(paperId,originalId).getId();
+                paperOriginalIds.add(paperOriginalId);
+                reportIds.add(reportId);
+                originalIds.add(originalId);
+            }
+            groupDao.save(new ReviewGroup(name,desciption,workerIds,jobId,reportIds,paperOriginalIds,originalIds));
+        }
+    }
 
     public MessageVO uploadJobByJson(JobJsonDTO jobJsonDTO){
-        MessageVO messageVO=new MessageVO();
         String jobName=jobJsonDTO.getJob_name();
         String jobDescription=jobJsonDTO.getJob_description();
         String startTime=jobJsonDTO.getStart_time();
@@ -180,54 +138,49 @@ 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)));
         }
-        ReviewJob reviewJob=jobDao.findJobByExamCase(examId,caseId);
-        if(reviewJob!=null){
-            String id=reviewJob.getId();
-            messageVO.setStatus("200");
-            messageVO.setMessage(id);
-        }
-        else {
-            try {
-                String paperJson = readStringFromUrl(paperUrl);
-                JSONObject paperResult = reviewPaperService.uploadPaper(paperJson);
-                System.out.println("paperJson拉成功");
-                if (!paperResult.getString("status").equals("success")) {
-                    messageVO.setStatus("500");
-                    messageVO.setMessage("创建paper失败");
-                    return messageVO;
-                }
-                String paperId = paperResult.getString("paperId");
-                //是众测考试的话存对应的众测考试id
-                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());
-                }
-                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");
-                    messageVO.setMessage(jsonObject.getString("jobId"));
-                } else {
-                    messageVO.setStatus("500");
-                    messageVO.setMessage(jsonObject.getString("message"));
-                }
-            } catch (IOException e) {
+        MessageVO messageVO=new MessageVO();
+        try {
+            String paperJson=readStringFromUrl(paperUrl);
+            JSONObject paperResult=reviewPaperService.uploadPaper(paperJson);
+            System.out.println("paperJson拉成功");
+            if(!paperResult.getString("status").equals("success")){
+                messageVO.setStatus("500");
+                messageVO.setMessage("创建paper失败");
+                return messageVO;
+            }
+            String paperId=paperResult.getString("paperId");
+            //是众测考试的话存对应的众测考试id
+            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());
+            }
+            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");
+                messageVO.setMessage(jsonObject.getString("jobId"));
+            }
+            else{
                 messageVO.setStatus("500");
-                messageVO.setMessage(e.getMessage());
+                messageVO.setMessage(jsonObject.getString("message"));
             }
+        } catch (IOException e) {
+            messageVO.setStatus("500");
+            messageVO.setMessage(e.getMessage());
         }
         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,String groupId,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,int maxWorker){
         ReviewJob reviewJob=jobDao.findJob(jobId);
         reviewJob.setName(name);
         reviewJob.setDescription(description);
@@ -237,7 +190,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,groupId,maxWorker);
+        JSONObject jsonObject1=uploadJob(jobId,"","",name,description,paperId,startTime,endTime,singleTime,totalWorkload,workerList,workerDistribution,maxWorker);
         return jsonObject1;
     }
 
@@ -253,21 +206,21 @@ public class ReviewJobService {
         }
     }
 
-//    public JSONArray getJobDistribution(String jobId){
-//        List<ReviewGroup>reviewGroups=groupDao.getGroupsByJob(jobId);
-//        JSONArray jsonArray=new JSONArray();
-//        for(int i=0;i<reviewGroups.size();i++){
-//            ReviewGroup reviewGroup=reviewGroups.get(i);
-//            JSONObject jsonObject=new JSONObject();
-//            jsonObject.put("name",reviewGroup.getName());
-//            jsonObject.put("description",reviewGroup.getDescription());
-//            jsonObject.put("worker",reviewGroup.getWorkers_id());
-//            jsonObject.put("report",reviewGroup.getOriginal_id());
-//            jsonArray.put(jsonObject);
-//        }
-//        return jsonArray;
-//
-//    }
+    public JSONArray getJobDistribution(String jobId){
+        List<ReviewGroup>reviewGroups=groupDao.getGroupsByJob(jobId);
+        JSONArray jsonArray=new JSONArray();
+        for(int i=0;i<reviewGroups.size();i++){
+            ReviewGroup reviewGroup=reviewGroups.get(i);
+            JSONObject jsonObject=new JSONObject();
+            jsonObject.put("name",reviewGroup.getName());
+            jsonObject.put("description",reviewGroup.getDescription());
+            jsonObject.put("worker",reviewGroup.getWorkers_id());
+            jsonObject.put("report",reviewGroup.getOriginal_id());
+            jsonArray.put(jsonObject);
+        }
+        return jsonArray;
+
+    }
 
     public List<ReviewJob>getJobsByPaper(String paperId){
         return jobDao.findJobsByPaper(paperId);
@@ -276,4 +229,8 @@ public class ReviewJobService {
     public ReviewJob findJobByExamCase(String examId,String caseId){
         return jobDao.findJobByExamCase(examId, caseId);
     }
+
+    public List<ReviewJob>getJobsByExam(String examId){
+        return jobDao.findJobsByExam(examId);
+    }
 }

+ 7 - 81
src/main/java/edu/nju/service/ReviewService.java

@@ -46,9 +46,6 @@ public class ReviewService {
     @Autowired
     ReviewPaperDao reviewPaperDao;
 
-    @Autowired
-    ReviewGroupDao reviewGroupDao;
-
 
 
     public ReviewAnswer getAnswerByWorkerJobReportItem(String jobId,String reportId,String workerId,String itemId){
@@ -102,85 +99,14 @@ public class ReviewService {
     }
 
     public List<ReviewReport>getReportsByWorkerJob(String worker_id,String job_id){
-        ReviewJob reviewJob=reviewJobDao.findJob(job_id);
-        String paperId=reviewJob.getPaper_id();
-//        List<String>workerIds=new ArrayList<>();
-//        workerIds.add(worker_id);
-        ReviewAnswer reviewAnswer=reviewAnswerDao.findLastAnswerByWorkerJob(job_id,worker_id);
-        String reportIndex="";
-        boolean isFinished=false;
-        //分配方式分为一次分一份report和一次分全部report,如果之前已经分配过,证明是一次分一份的情况,取最后一次分配的report及其完成情况传给分配服务,进行下一次分配
-        if(reviewAnswer!=null){
-            String reportId=reviewAnswer.getReport_id();
-            reportIndex=reportDao.findReviewReport(reportId).getOriginal_id();
-            isFinished=reviewAnswer.getIs_finished();
-//            List<String>originalIds=reviewGroup.getReport_id();
-//            List<String>reportIds=reviewGroup.getReport_id();
-//            List<String>paperOriginalIds=reviewGroup.getPaper_original_id();
-//            for(int i=0;i<reportIndexs.size();i++){
-//                String reoprtIndex=reportIndexs.get(i);
-//                if(!originalIds.contains(reoprtIndex)){
-//                    originalIds.add(reoprtIndex);
-//                    ReviewReport reviewReport=reviewReportDao.findReportByPaperOriginalId(paperId,reoprtIndex);
-//                    String reportId=reviewReport.getId();
-//                    reportIds.add(reportId);
-//                    paperOriginalIds.add(paperId+"-"+reoprtIndex);
-//                    originalIds.add(reoprtIndex);
-//                }
-//            }
-//            ReviewGroup updatedReviewGroup=new ReviewGroup(id,"","",workerIds,job_id,reportIds,paperOriginalIds,originalIds);
-//            reviewGroupDao.save(updatedReviewGroup);
-//            for(int i=0;i<reportIds.size();i++){
-//                ReviewReport reviewReport=reportDao.findReviewReport(reportIds.get(i));
-//                reports.add(reviewReport);
-//            }
-        }
-//        else {
-//            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);
-//                reports.add(reviewReport);
-//                String reportId = reviewReport.getId();
-//                reportIds.add(reportId);
-//                paperOriginalIds.add(paperId + "-" + originalId);
-//                originalIds.add(originalId);
-//            }
-//            ReviewGroup newReviewGroup = new ReviewGroup("", "", workerIds, job_id, reportIds, paperOriginalIds, originalIds);
-//            reviewGroupDao.save(newReviewGroup);
-//        }
-        List<ReviewReport>reviewReports=getDistributedReportIndexs(job_id,paperId,worker_id,reportIndex,isFinished);
-        return reviewReports;
-    }
-
-    private List<ReviewReport>getDistributedReportIndexs(String jobId,String paperId, String workerId,String lastReportIndex,boolean isFinished){
-        List<String>reportIndexs=new ArrayList<>();
+        List<String>reportIds = groupDao.getReportsByUserJob(worker_id, job_id);
         List<ReviewReport>reports=new ArrayList<>();
-        JSONObject data=new JSONObject();
-        data.put("workerId",workerId);
-        data.put("lastReportIndex",lastReportIndex);
-        data.put("isFinished",isFinished);
-        String uploadJson=data.toString();
-        String invokeResult = null;
-        try {
-            invokeResult = HTTP.postBody("http://129.211.26.227:8082/reports2worker/" + jobId, uploadJson);
-        } catch (Exception e) {
-            return new ArrayList<>();
-        }
-        if (invokeResult.startsWith("[")){
-            invokeResult.substring(1,invokeResult.length()-1);
-            String[]reportArray=invokeResult.split(",");
-            for(int i=0;i<reportArray.length;i++){
-                reportIndexs.add(reportArray[i]);
-            }
+        if(reportIds==null||reportIds.size()==0){
+            return null;
         }else{
-            return new ArrayList<>();
-        }
-        for(int i=0;i<reportIndexs.size();i++){
-            ReviewReport reviewReport=reportDao.findReportByPaperOriginalId(paperId,reportIndexs.get(i));
-            reports.add(reviewReport);
+            for(int i=0;i<reportIds.size();i++){
+                reports.add(reportDao.findReviewReport(reportIds.get(i)));
+            }
         }
         return reports;
     }
@@ -220,7 +146,7 @@ public class ReviewService {
     }
 
     public List<ReviewAnswer>getItemReportJobAnswers(String itemId, String reportId,String jobId){
-       return answerDao.getItemReportJobAnswers(itemId,reportId,jobId);
+        return answerDao.getItemReportJobAnswers(itemId,reportId,jobId);
     }
 
     public boolean setGrade(String jobId,String itemId, String reportId, String workerId,String grade){