123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232 |
- package edu.nju.service;
- import edu.nju.dao.*;
- import edu.nju.entities.*;
- import edu.nju.model.ReviewWorkerVO;
- import edu.nju.util.HTTP;
- import org.json.JSONObject;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.http.HttpEntity;
- import org.springframework.http.HttpHeaders;
- import org.springframework.http.converter.StringHttpMessageConverter;
- import org.springframework.stereotype.Service;
- import org.springframework.util.LinkedMultiValueMap;
- import org.springframework.util.MultiValueMap;
- import org.springframework.web.client.RestTemplate;
- import java.nio.charset.StandardCharsets;
- import java.util.ArrayList;
- import java.util.List;
- @Service
- public class ReviewService {
- @Autowired
- ReviewItemDao itemDao;
- @Autowired
- ReviewAnswerDao answerDao;
- @Autowired
- ReviewGroupDao groupDao;
- @Autowired
- ReviewReportDao reportDao;
- @Autowired
- ReviewWorkerDao reviewWorkerDao;
- @Autowired
- ReviewCorrectAnswerDao reviewCorrectAnswerDao;
- @Autowired
- ReviewJobDao reviewJobDao;
- @Autowired
- ReviewReportDao reviewReportDao;
- @Autowired
- BugDao bugDao;
- @Autowired
- BugScoreDao bugScoreDao;
- @Autowired
- ReviewItemDao reviewItemDao;
- @Autowired
- ReviewAnswerDao reviewAnswerDao;
- @Autowired
- ReviewPaperDao reviewPaperDao;
- public ReviewAnswer getAnswerByWorkerJobReportItem(String jobId,String reportId,String workerId,String itemId){
- ReviewAnswer reviewAnswer= answerDao.findAnswerByWorkerJobReportItem(jobId,reportId,workerId, itemId);
- if(reviewAnswer==null){
- ReviewWorker reviewWorker=reviewWorkerDao.find(workerId);
- // String jobId=reviewWorker.getJob_id();
- String paperId=reviewWorker.getPaper_id();
- reviewAnswer=new ReviewAnswer(itemId,reportId,workerId,jobId,paperId);
- answerDao.save(reviewAnswer);
- }
- return reviewAnswer;
- }
- public boolean saveAnswer(String answerId,List<String>answers,List<String>fileUrl){
- try {
- ReviewAnswer reviewAnswer=answerDao.getAnswerById(answerId);
- reviewAnswer.setAnswers(answers);
- reviewAnswer.setFile_url(fileUrl);
- answerDao.save(reviewAnswer);
- return true;
- } catch(Exception e) {
- e.printStackTrace();
- return false;
- }
- }
- public ReviewCorrectAnswer getCorrectAnswerByReportItem(String reportId,String itemId,String jobId){
- ReviewCorrectAnswer reviewCorrectAnswer= reviewCorrectAnswerDao.findCorrectAnswerByReportItem(reportId,itemId,jobId);
- if(reviewCorrectAnswer==null){
- ReviewReport reviewReport=reportDao.findReviewReport(reportId);
- String paperId=reviewReport.getPaper_id();
- reviewCorrectAnswer=new ReviewCorrectAnswer(itemId,reportId,jobId,paperId);
- reviewCorrectAnswerDao.save(reviewCorrectAnswer);
- }
- return reviewCorrectAnswer;
- }
- public boolean updateCorrectAnswer(String answerId,List<String> answer,List<String>fileUrl,String grade){
- try {
- ReviewCorrectAnswer reviewCorrectAnswer=reviewCorrectAnswerDao.getCorrectAnswerById(answerId);
- reviewCorrectAnswer.setCorrect_answer(answer);
- reviewCorrectAnswer.setFile_url(fileUrl);
- reviewCorrectAnswer.setGrade(grade);
- reviewCorrectAnswerDao.save(reviewCorrectAnswer);
- return true;
- } catch(Exception e) {
- e.printStackTrace();
- return false;
- }
- }
- public List<ReviewReport>getReportsByWorkerJob(String worker_id,String job_id){
- List<String>reportIds = groupDao.getReportsByUserJob(worker_id, job_id);
- List<ReviewReport>reports=new ArrayList<>();
- if(reportIds==null||reportIds.size()==0){
- return null;
- }else{
- for(int i=0;i<reportIds.size();i++){
- reports.add(reportDao.findReviewReport(reportIds.get(i)));
- }
- }
- return reports;
- }
- public List<ReviewItem> getItemsByReport(String report_id){
- List<ReviewItem> items=itemDao.findItemsByReport(report_id);
- return items;
- }
- public List<ReviewWorkerVO>getWorkersByJob(String jobId){
- List<ReviewWorker>reviewWorkers=reviewWorkerDao.getWorkersByJob(jobId);
- List<ReviewWorkerVO>reviewWorkerVOS=new ArrayList<>();
- try {
- for(int i=0;i<reviewWorkers.size();i++){
- ReviewWorker reviewWorker=reviewWorkers.get(i);
- String result = HTTP.sendGet("http://114.55.91.83:8191/api/user/" + reviewWorker.getOriginal_id(), "");
- String name="";
- String school="";
- if(result != null && !result.equals("")) {
- JSONObject json = new JSONObject(result);
- if(json.has("name")&&!json.isNull("name")) {
- name = json.getString("name");
- }
- if(json.has("school")&&!json.isNull("school")) {
- school = json.getString("school");
- }
- reviewWorkerVOS.add(new ReviewWorkerVO(reviewWorker,name,school));
- }
- else{
- reviewWorkerVOS.add(new ReviewWorkerVO(reviewWorker,"",""));
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- return reviewWorkerVOS;
- }
- public List<ReviewAnswer>getItemReportJobAnswers(String itemId, String reportId,String jobId){
- return answerDao.getItemReportJobAnswers(itemId,reportId,jobId);
- }
- public boolean setGrade(String jobId,String itemId, String reportId, String workerId,String grade){
- try {
- ReviewAnswer reviewAnswer=answerDao.findAnswerByWorkerJobReportItem(jobId,reportId,workerId,itemId);
- if(reviewAnswer==null){
- return false;
- }
- else{
- reviewAnswer.setGrade(grade);
- }
- return true;
- } catch(Exception e) {
- e.printStackTrace();
- return false;
- }
- }
- public List<ReviewReport>getReportsByJob(String jobId){
- ReviewJob reviewJob=reviewJobDao.findJob(jobId);
- String paperId=reviewJob.getPaper_id();
- List<ReviewReport>reviewReports=reportDao.getReportsByPaperId(paperId);
- return reviewReports;
- }
- //回写众审结束后的bug分数至bugScore
- public void UploadCrowdTestBugGrade(String jobId){
- ReviewJob reviewJob=reviewJobDao.findJob(jobId);
- ReviewPaper reviewPaper=reviewPaperDao.findPaper(reviewJob.getPaper_id());
- if(reviewPaper.getType().equals("众包测试")) {
- List<ReviewReport> reviewReportList = getReportsByJob(jobId);
- //一个report对应一个bug
- for (ReviewReport reviewReport : reviewReportList) {
- String bugId = reviewReport.getOriginal_id();
- // Bug bug=bugDao.findByid(bugId);
- // BugScore bugScore=bugScoreDao.findById(bug.getId());
- List<ReviewItem> reviewItemList=reviewItemDao.findItemsByReport(reviewReport.getId());
- //众测转成的众审,item只有一个,单选题,选择得几分
- if(reviewItemList!=null&&reviewItemList.size()==1) {
- ReviewItem reviewItem = reviewItemList.get(0);
- if(reviewItem.getType().equals("Single")) {
- int allScore=0;//总分
- int count=0;//共有几人评分
- List<ReviewAnswer> reviewAnswerList = reviewAnswerDao.getItemReportJobAnswers(reviewItem.getId(),reviewReport.getId(),jobId);
- for (ReviewAnswer reviewAnswer : reviewAnswerList) {
- List<String> answers=reviewAnswer.getAnswers();
- //该题进行了选择
- if (answers!=null&&answers.size()>0){
- for(int i=0;i<answers.size();i++){
- if(answers.get(i).equals("1")){
- allScore+=i;
- count++;
- break;
- }
- }
- }
- }
- int grade=allScore/count;
- //新建bugScore
- BugScore bugScore=new BugScore(bugId,grade,0);
- // bugScore.setGrade(grade);
- bugScoreDao.save(bugScore);
- }
- }
- }
- }
- }
- // //生成一次众审任务的数据统计报告
- // public void generateResultStatisticsReport(String jobId){
- // }
- }
|