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; @Autowired CrowdSourceToReviewPaperDao crowdSourceToReviewPaperDao; public ReviewJob getJob(String job_id){ return jobDao.findJob(job_id); } public List getJobs(){ 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, ListworkerList, 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; } 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); } if(workerDistribution.equals("")||workerDistribution.equals("[]")){ ListworkerIds=new ArrayList<>(); for(int i=0;ireviewReports=reportDao.getReportsByPaperId(paperId); ListreportIds=new ArrayList<>(); ListpaperOriginalIds=new ArrayList<>(); ListoriginalIds=new ArrayList<>(); for(int i=0;iworkerIds=new ArrayList<>(); for(int j=0;jreportIds=new ArrayList<>(); ListpaperOriginalIds=new ArrayList<>(); ListoriginalIds=new ArrayList<>(); for(int j=0;jworkerList=new ArrayList<>(); for(int i=0;iworkerList,String workerDistribution,int maxWorker){ ReviewJob reviewJob=jobDao.findJob(jobId); reviewJob.setName(name); reviewJob.setDescription(description); 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); JSONObject jsonObject1=uploadJob(jobId,"","",name,description,paperId,startTime,endTime,singleTime,totalWorkload,workerList,workerDistribution,maxWorker); 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){ ListreviewGroups=groupDao.getGroupsByJob(jobId); JSONArray jsonArray=new JSONArray(); for(int i=0;igetJobsByPaper(String paperId){ return jobDao.findJobsByPaper(paperId); } public ReviewJob findJobByExamCase(String examId,String caseId){ return jobDao.findJobByExamCase(examId, caseId); } public ListgetJobsByExam(String examId){ return jobDao.findJobsByExam(examId); } }