ReviewJobService.java 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. package edu.nju.service;
  2. import edu.nju.dao.*;
  3. import edu.nju.entities.*;
  4. import edu.nju.model.JobJsonDTO;
  5. import edu.nju.model.MessageVO;
  6. import edu.nju.model.ReviewPaperVO;
  7. import org.json.JSONArray;
  8. import org.json.JSONObject;
  9. import org.springframework.beans.factory.annotation.Autowired;
  10. import org.springframework.stereotype.Service;
  11. import org.springframework.web.bind.annotation.RequestBody;
  12. import org.springframework.web.bind.annotation.RequestParam;
  13. import java.io.IOException;
  14. import java.util.ArrayList;
  15. import java.util.List;
  16. import static edu.nju.util.HTTP.readStringFromUrl;
  17. @Service
  18. public class ReviewJobService {
  19. @Autowired
  20. ReviewJobDao jobDao;
  21. @Autowired
  22. ReviewGroupDao groupDao;
  23. @Autowired
  24. ReviewReportDao reportDao;
  25. @Autowired
  26. ReviewWorkerDao reviewWorkerDao;
  27. @Autowired
  28. ReviewPaperService reviewPaperService;
  29. public ReviewJob getJob(String job_id){
  30. return jobDao.findJob(job_id);
  31. }
  32. public List<ReviewJob> getJobs(){
  33. return jobDao.findJobs();
  34. }
  35. 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){
  36. JSONObject jsonObject=new JSONObject();
  37. String checkResult=checkJobDistribution(workerDistribution);
  38. ReviewPaper reviewPaper=reviewPaperService.getPaper(paperId);
  39. if((!workerDistribution.equals(""))&&(!checkResult.equals("success"))){
  40. jsonObject.put("status","fail");
  41. jsonObject.put("message",checkResult);
  42. return jsonObject;
  43. }
  44. if(jobId.equals("")) {
  45. ReviewJob newReviewJob = new ReviewJob(examId, caseId, name, description, Long.toString(System.currentTimeMillis()), paperId,reviewPaper.getId(), startTime, endTime, "", isCrossValidation, validationNum);
  46. jobId = jobDao.save(newReviewJob);
  47. }
  48. if(workerDistribution.equals("")){
  49. List<String>workerIds=new ArrayList<>();
  50. for(int i=0;i<workerList.size();i++){
  51. String workerIndex=workerList.get(i);
  52. String workerId=reviewWorkerDao.save(new ReviewWorker(workerIndex,paperId,"",jobId));
  53. workerIds.add(workerId);
  54. }
  55. List<ReviewReport>reviewReports=reportDao.getReportsByPaperId(paperId);
  56. List<String>reportIds=new ArrayList<>();
  57. for(int i=0;i<reviewReports.size();i++)
  58. reportIds.add(reviewReports.get(i).getId());
  59. groupDao.save(new ReviewGroup("default","",workerIds,jobId,reportIds));
  60. }
  61. else {
  62. saveJobDistribution(workerDistribution, jobId);
  63. }
  64. jsonObject.put("status","success");
  65. jsonObject.put("jobId",jobId);
  66. return jsonObject;
  67. }
  68. private String checkJobDistribution(String workerDistribution){
  69. try {
  70. JSONArray jsonArray=new JSONArray(workerDistribution);
  71. for(int i=0;i<jsonArray.length();i++){
  72. JSONObject jsonObject=jsonArray.getJSONObject(i);
  73. String name=jsonObject.getString("name");
  74. String desciption=jsonObject.getString("description");
  75. JSONArray jsonArray1=jsonObject.getJSONArray("worker");
  76. JSONArray jsonArray2=jsonObject.getJSONArray("report");
  77. }
  78. }catch (Exception e){
  79. return e.getMessage();
  80. }
  81. return "success";
  82. }
  83. private void saveJobDistribution(String workerDistribution,String jobId){
  84. JSONArray jsonArray=new JSONArray(workerDistribution);
  85. for(int i=0;i<jsonArray.length();i++){
  86. JSONObject jsonObject=jsonArray.getJSONObject(i);
  87. String name=jsonObject.getString("name");
  88. String desciption=jsonObject.getString("description");
  89. JSONArray jsonArray1=jsonObject.getJSONArray("worker");
  90. List<String>workerIds=new ArrayList<>();
  91. for(int j=0;j<jsonArray1.length();j++){
  92. workerIds.add(String.valueOf(jsonArray1.get(j)));
  93. }
  94. JSONArray jsonArray2=jsonObject.getJSONArray("report");
  95. List<String>reportIds=new ArrayList<>();
  96. for(int j=0;j<jsonArray2.length();j++){
  97. reportIds.add(String.valueOf(jsonArray1.get(j)));
  98. }
  99. groupDao.save(new ReviewGroup(name,desciption,workerIds,jobId,reportIds));
  100. }
  101. }
  102. public MessageVO uploadJobByJson(JobJsonDTO jobJsonDTO){
  103. String jobName=jobJsonDTO.getJob_name();
  104. String jobDescription=jobJsonDTO.getJob_description();
  105. String startTime=jobJsonDTO.getStart_time();
  106. String endTime=jobJsonDTO.getEnd_time();
  107. String examId=jobJsonDTO.getExamId();
  108. String caseId=jobJsonDTO.getCaseId();
  109. JSONArray workerList_Array=new JSONArray(jobJsonDTO.getWorker_list());
  110. String paperUrl=jobJsonDTO.getPaperUrl();
  111. List<String>workerList=new ArrayList<>();
  112. for(int i=0;i<workerList_Array.length();i++){
  113. workerList.add(String.valueOf(workerList_Array.get(i)));
  114. }
  115. MessageVO messageVO=new MessageVO();
  116. try {
  117. String paperJson=readStringFromUrl(paperUrl);
  118. JSONObject paperResult=reviewPaperService.uploadPaper(paperJson);
  119. if(!paperResult.getString("status").equals("success")){
  120. messageVO.setStatus("500");
  121. messageVO.setMessage("创建paper失败");
  122. return messageVO;
  123. }
  124. String paperId=paperResult.getString("paperId");
  125. List<ReviewReport>reports=reviewPaperService.getReportsByPaperId(paperId);
  126. List<String>reportIds=new ArrayList<>();
  127. for(int i=0;i<reports.size();i++){
  128. reportIds.add(reports.get(i).getId());
  129. }
  130. JSONObject jsonObject=uploadJob("",examId,caseId,jobName,jobDescription,paperId,startTime,endTime,workerList,"",false,0);
  131. // groupDao.save(new ReviewGroup("default","",workerList,jobId,reportIds));
  132. if(jsonObject.getString("status").equals("success")) {
  133. messageVO.setStatus("200");
  134. messageVO.setMessage(jsonObject.getString("jobId"));
  135. }
  136. else{
  137. messageVO.setStatus("500");
  138. messageVO.setMessage(jsonObject.getString("message"));
  139. }
  140. } catch (IOException e) {
  141. messageVO.setStatus("500");
  142. messageVO.setMessage(e.getMessage());
  143. }
  144. return messageVO;
  145. }
  146. public JSONObject updateJob(String jobId,String name, String description, String paperId,String startTime, String endTime,List<String>workerList,String workerDistribution,boolean isCrossValidation,int validationNum){
  147. ReviewJob reviewJob=jobDao.findJob(jobId);
  148. reviewJob.setName(name);
  149. reviewJob.setDescription(description);
  150. reviewJob.setStart_time(startTime);
  151. reviewJob.setEnd_time(endTime);
  152. reviewJob.setCrossValidation(isCrossValidation);
  153. reviewJob.setValidationNum(validationNum);
  154. jobDao.save(reviewJob);
  155. groupDao.removeByJob(jobId);
  156. reviewWorkerDao.removeByJob(jobId);
  157. JSONObject jsonObject1=uploadJob(jobId,"","",name,description,paperId,startTime,endTime,workerList,workerDistribution,isCrossValidation,validationNum);
  158. return jsonObject1;
  159. }
  160. public boolean deleteJob(String jobId){
  161. try {
  162. jobDao.remove(jobId);
  163. groupDao.removeByJob(jobId);
  164. reviewWorkerDao.removeByJob(jobId);
  165. return true;
  166. } catch (Exception e) {
  167. e.printStackTrace();
  168. return false;
  169. }
  170. }
  171. public JSONArray getJobDistribution(String jobId){
  172. List<ReviewGroup>reviewGroups=groupDao.getGroupsByJob(jobId);
  173. JSONArray jsonArray=new JSONArray();
  174. for(int i=0;i<reviewGroups.size();i++){
  175. ReviewGroup reviewGroup=reviewGroups.get(i);
  176. JSONObject jsonObject=new JSONObject();
  177. jsonObject.put("name",reviewGroup.getName());
  178. jsonObject.put("description",reviewGroup.getDescription());
  179. jsonObject.put("worker",reviewGroup.getWorkers_id());
  180. jsonObject.put("report",reviewGroup.getReport_id());
  181. jsonArray.put(jsonObject);
  182. }
  183. return jsonArray;
  184. }
  185. }