| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200 |
- package edu.nju.service;
- import edu.nju.dao.*;
- import edu.nju.entities.*;
- import edu.nju.model.JobJsonDTO;
- import edu.nju.model.MessageVO;
- import edu.nju.model.ReviewPaperVO;
- import org.json.JSONArray;
- import org.json.JSONObject;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.web.bind.annotation.RequestBody;
- import org.springframework.web.bind.annotation.RequestParam;
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.List;
- import static edu.nju.util.HTTP.readStringFromUrl;
- @Service
- public class ReviewJobService {
- @Autowired
- ReviewJobDao jobDao;
- @Autowired
- ReviewGroupDao groupDao;
- @Autowired
- ReviewReportDao reportDao;
- @Autowired
- ReviewWorkerDao reviewWorkerDao;
- @Autowired
- ReviewPaperService reviewPaperService;
- public ReviewJob getJob(String job_id){
- return jobDao.findJob(job_id);
- }
- public List<ReviewJob> getJobs(){
- return jobDao.findJobs();
- }
- public JSONObject uploadJob(String jobId,String examId,String caseId,String name, String description, String paperId, String startTime, String endTime, List<String>workerList, String workerDistribution,boolean isCrossValidation,int validationNum){
- JSONObject jsonObject=new JSONObject();
- String checkResult=checkJobDistribution(workerDistribution);
- ReviewPaper reviewPaper=reviewPaperService.getPaper(paperId);
- if((!workerDistribution.equals(""))&&(!checkResult.equals("success"))){
- jsonObject.put("status","fail");
- jsonObject.put("message",checkResult);
- return jsonObject;
- }
- if(jobId.equals("")) {
- ReviewJob newReviewJob = new ReviewJob(examId, caseId, name, description, Long.toString(System.currentTimeMillis()), paperId,reviewPaper.getId(), startTime, endTime, "", isCrossValidation, validationNum);
- jobId = jobDao.save(newReviewJob);
- }
- if(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<>();
- for(int i=0;i<reviewReports.size();i++)
- reportIds.add(reviewReports.get(i).getId());
- groupDao.save(new ReviewGroup("default","",workerIds,jobId,reportIds));
- }
- else {
- saveJobDistribution(workerDistribution, jobId);
- }
- jsonObject.put("status","success");
- jsonObject.put("jobId",jobId);
- return jsonObject;
- }
- private String checkJobDistribution(String workerDistribution){
- try {
- 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){
- 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<>();
- for(int j=0;j<jsonArray2.length();j++){
- reportIds.add(String.valueOf(jsonArray1.get(j)));
- }
- groupDao.save(new ReviewGroup(name,desciption,workerIds,jobId,reportIds));
- }
- }
- public MessageVO uploadJobByJson(JobJsonDTO jobJsonDTO){
- String jobName=jobJsonDTO.getJob_name();
- String jobDescription=jobJsonDTO.getJob_description();
- String startTime=jobJsonDTO.getStart_time();
- String endTime=jobJsonDTO.getEnd_time();
- String examId=jobJsonDTO.getExamId();
- String caseId=jobJsonDTO.getCaseId();
- JSONArray workerList_Array=new JSONArray(jobJsonDTO.getWorker_list());
- String paperUrl=jobJsonDTO.getPaperUrl();
- 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();
- try {
- String paperJson=readStringFromUrl(paperUrl);
- JSONObject paperResult=reviewPaperService.uploadPaper(paperJson);
- if(!paperResult.getString("status").equals("success")){
- messageVO.setStatus("500");
- messageVO.setMessage("创建paper失败");
- return messageVO;
- }
- String paperId=paperResult.getString("paperId");
- 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,workerList,"",false,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.setStatus("500");
- messageVO.setMessage(e.getMessage());
- }
- return messageVO;
- }
- public JSONObject updateJob(String jobId,String name, String description, String paperId,String startTime, String endTime,List<String>workerList,String workerDistribution,boolean isCrossValidation,int validationNum){
- ReviewJob reviewJob=jobDao.findJob(jobId);
- reviewJob.setName(name);
- reviewJob.setDescription(description);
- reviewJob.setStart_time(startTime);
- reviewJob.setEnd_time(endTime);
- reviewJob.setCrossValidation(isCrossValidation);
- reviewJob.setValidationNum(validationNum);
- jobDao.save(reviewJob);
- groupDao.removeByJob(jobId);
- reviewWorkerDao.removeByJob(jobId);
- JSONObject jsonObject1=uploadJob(jobId,"","",name,description,paperId,startTime,endTime,workerList,workerDistribution,isCrossValidation,validationNum);
- return jsonObject1;
- }
- public boolean deleteJob(String jobId){
- try {
- jobDao.remove(jobId);
- groupDao.removeByJob(jobId);
- reviewWorkerDao.removeByJob(jobId);
- return true;
- } catch (Exception e) {
- e.printStackTrace();
- return false;
- }
- }
- 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.getReport_id());
- jsonArray.put(jsonObject);
- }
- return jsonArray;
- }
- }
|