|
@@ -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);
|
|
|
+ }
|
|
|
}
|