ReviewService.java 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  1. package edu.nju.service;
  2. import edu.nju.dao.*;
  3. import edu.nju.entities.*;
  4. import edu.nju.model.ReviewWorkerVO;
  5. import edu.nju.util.HTTP;
  6. import org.json.JSONObject;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.http.HttpEntity;
  9. import org.springframework.http.HttpHeaders;
  10. import org.springframework.http.converter.StringHttpMessageConverter;
  11. import org.springframework.stereotype.Service;
  12. import org.springframework.util.LinkedMultiValueMap;
  13. import org.springframework.util.MultiValueMap;
  14. import org.springframework.web.client.RestTemplate;
  15. import java.nio.charset.StandardCharsets;
  16. import java.util.ArrayList;
  17. import java.util.List;
  18. @Service
  19. public class ReviewService {
  20. @Autowired
  21. ReviewItemDao itemDao;
  22. @Autowired
  23. ReviewAnswerDao answerDao;
  24. @Autowired
  25. ReviewGroupDao groupDao;
  26. @Autowired
  27. ReviewReportDao reportDao;
  28. @Autowired
  29. ReviewWorkerDao reviewWorkerDao;
  30. @Autowired
  31. ReviewCorrectAnswerDao reviewCorrectAnswerDao;
  32. @Autowired
  33. ReviewJobDao reviewJobDao;
  34. @Autowired
  35. ReviewReportDao reviewReportDao;
  36. @Autowired
  37. BugDao bugDao;
  38. @Autowired
  39. BugScoreDao bugScoreDao;
  40. @Autowired
  41. ReviewItemDao reviewItemDao;
  42. @Autowired
  43. ReviewAnswerDao reviewAnswerDao;
  44. @Autowired
  45. ReviewPaperDao reviewPaperDao;
  46. public ReviewAnswer getAnswerByWorkerJobReportItem(String jobId,String reportId,String workerId,String itemId){
  47. ReviewAnswer reviewAnswer= answerDao.findAnswerByWorkerJobReportItem(jobId,reportId,workerId, itemId);
  48. if(reviewAnswer==null){
  49. ReviewWorker reviewWorker=reviewWorkerDao.find(workerId);
  50. // String jobId=reviewWorker.getJob_id();
  51. String paperId=reviewWorker.getPaper_id();
  52. reviewAnswer=new ReviewAnswer(itemId,reportId,workerId,jobId,paperId);
  53. answerDao.save(reviewAnswer);
  54. }
  55. return reviewAnswer;
  56. }
  57. public boolean saveAnswer(String answerId,List<String>answers,List<String>fileUrl){
  58. try {
  59. ReviewAnswer reviewAnswer=answerDao.getAnswerById(answerId);
  60. reviewAnswer.setAnswers(answers);
  61. reviewAnswer.setFile_url(fileUrl);
  62. answerDao.save(reviewAnswer);
  63. return true;
  64. } catch(Exception e) {
  65. e.printStackTrace();
  66. return false;
  67. }
  68. }
  69. public ReviewCorrectAnswer getCorrectAnswerByReportItem(String reportId,String itemId,String jobId){
  70. ReviewCorrectAnswer reviewCorrectAnswer= reviewCorrectAnswerDao.findCorrectAnswerByReportItem(reportId,itemId,jobId);
  71. if(reviewCorrectAnswer==null){
  72. ReviewReport reviewReport=reportDao.findReviewReport(reportId);
  73. String paperId=reviewReport.getPaper_id();
  74. reviewCorrectAnswer=new ReviewCorrectAnswer(itemId,reportId,jobId,paperId);
  75. reviewCorrectAnswerDao.save(reviewCorrectAnswer);
  76. }
  77. return reviewCorrectAnswer;
  78. }
  79. public boolean updateCorrectAnswer(String answerId,List<String> answer,List<String>fileUrl,String grade){
  80. try {
  81. ReviewCorrectAnswer reviewCorrectAnswer=reviewCorrectAnswerDao.getCorrectAnswerById(answerId);
  82. reviewCorrectAnswer.setCorrect_answer(answer);
  83. reviewCorrectAnswer.setFile_url(fileUrl);
  84. reviewCorrectAnswer.setGrade(grade);
  85. reviewCorrectAnswerDao.save(reviewCorrectAnswer);
  86. return true;
  87. } catch(Exception e) {
  88. e.printStackTrace();
  89. return false;
  90. }
  91. }
  92. public List<ReviewReport>getReportsByWorkerJob(String worker_id,String job_id){
  93. List<String>reportIds = groupDao.getReportsByUserJob(worker_id, job_id);
  94. List<ReviewReport>reports=new ArrayList<>();
  95. if(reportIds==null||reportIds.size()==0){
  96. return null;
  97. }else{
  98. for(int i=0;i<reportIds.size();i++){
  99. reports.add(reportDao.findReviewReport(reportIds.get(i)));
  100. }
  101. }
  102. return reports;
  103. }
  104. public List<ReviewItem> getItemsByReport(String report_id){
  105. List<ReviewItem> items=itemDao.findItemsByReport(report_id);
  106. return items;
  107. }
  108. public List<ReviewWorkerVO>getWorkersByJob(String jobId){
  109. List<ReviewWorker>reviewWorkers=reviewWorkerDao.getWorkersByJob(jobId);
  110. List<ReviewWorkerVO>reviewWorkerVOS=new ArrayList<>();
  111. try {
  112. for(int i=0;i<reviewWorkers.size();i++){
  113. ReviewWorker reviewWorker=reviewWorkers.get(i);
  114. String result = HTTP.sendGet("http://114.55.91.83:8191/api/user/" + reviewWorker.getOriginal_id(), "");
  115. String name="";
  116. String school="";
  117. if(result != null && !result.equals("")) {
  118. JSONObject json = new JSONObject(result);
  119. if(json.has("name")&&!json.isNull("name")) {
  120. name = json.getString("name");
  121. }
  122. if(json.has("school")&&!json.isNull("school")) {
  123. school = json.getString("school");
  124. }
  125. reviewWorkerVOS.add(new ReviewWorkerVO(reviewWorker,name,school));
  126. }
  127. else{
  128. reviewWorkerVOS.add(new ReviewWorkerVO(reviewWorker,"",""));
  129. }
  130. }
  131. } catch (Exception e) {
  132. e.printStackTrace();
  133. }
  134. return reviewWorkerVOS;
  135. }
  136. public List<ReviewAnswer>getItemReportJobAnswers(String itemId, String reportId,String jobId){
  137. return answerDao.getItemReportJobAnswers(itemId,reportId,jobId);
  138. }
  139. public boolean setGrade(String jobId,String itemId, String reportId, String workerId,String grade){
  140. try {
  141. ReviewAnswer reviewAnswer=answerDao.findAnswerByWorkerJobReportItem(jobId,reportId,workerId,itemId);
  142. if(reviewAnswer==null){
  143. return false;
  144. }
  145. else{
  146. reviewAnswer.setGrade(grade);
  147. }
  148. return true;
  149. } catch(Exception e) {
  150. e.printStackTrace();
  151. return false;
  152. }
  153. }
  154. public List<ReviewReport>getReportsByJob(String jobId){
  155. ReviewJob reviewJob=reviewJobDao.findJob(jobId);
  156. String paperId=reviewJob.getPaper_id();
  157. List<ReviewReport>reviewReports=reportDao.getReportsByPaperId(paperId);
  158. return reviewReports;
  159. }
  160. //回写众审结束后的bug分数至bugScore
  161. public void UploadCrowdTestBugGrade(String jobId){
  162. ReviewJob reviewJob=reviewJobDao.findJob(jobId);
  163. ReviewPaper reviewPaper=reviewPaperDao.findPaper(reviewJob.getPaper_id());
  164. if(reviewPaper.getType().equals("众包测试")) {
  165. List<ReviewReport> reviewReportList = getReportsByJob(jobId);
  166. //一个report对应一个bug
  167. for (ReviewReport reviewReport : reviewReportList) {
  168. String bugId = reviewReport.getOriginal_id();
  169. // Bug bug=bugDao.findByid(bugId);
  170. // BugScore bugScore=bugScoreDao.findById(bug.getId());
  171. List<ReviewItem> reviewItemList=reviewItemDao.findItemsByReport(reviewReport.getId());
  172. //众测转成的众审,item只有一个,单选题,选择得几分
  173. if(reviewItemList!=null&&reviewItemList.size()==1) {
  174. ReviewItem reviewItem = reviewItemList.get(0);
  175. if(reviewItem.getType().equals("Single")) {
  176. int allScore=0;//总分
  177. int count=0;//共有几人评分
  178. List<ReviewAnswer> reviewAnswerList = reviewAnswerDao.getItemReportJobAnswers(reviewItem.getId(),reviewReport.getId(),jobId);
  179. for (ReviewAnswer reviewAnswer : reviewAnswerList) {
  180. List<String> answers=reviewAnswer.getAnswers();
  181. //该题进行了选择
  182. if (answers!=null&&answers.size()>0){
  183. for(int i=0;i<answers.size();i++){
  184. if(answers.get(i).equals("1")){
  185. allScore+=i;
  186. count++;
  187. break;
  188. }
  189. }
  190. }
  191. }
  192. int grade=allScore/count;
  193. //新建bugScore
  194. BugScore bugScore=new BugScore(bugId,grade,0);
  195. // bugScore.setGrade(grade);
  196. bugScoreDao.save(bugScore);
  197. }
  198. }
  199. }
  200. }
  201. }
  202. // //生成一次众审任务的数据统计报告
  203. // public void generateResultStatisticsReport(String jobId){
  204. // }
  205. }