123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236 |
- 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<ReviewJob> 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, 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;
- }
- 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("[]")){
- 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存储成功");
- }
- else {
- saveJobDistribution(workerDistribution, jobId);
- }
- jsonObject.put("status","success");
- jsonObject.put("jobId",jobId);
- return jsonObject;
- }
- 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));
- }
- }
- 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();
- 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)));
- }
- 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(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,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);
- 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){
- 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);
- }
- public ReviewJob findJobByExamCase(String examId,String caseId){
- return jobDao.findJobByExamCase(examId, caseId);
- }
- public List<ReviewJob>getJobsByExam(String examId){
- return jobDao.findJobsByExam(examId);
- }
- }
|