package edu.nju.service; import edu.nju.dao.*; import edu.nju.entities.*; import edu.nju.model.ReviewWorkerVO; import edu.nju.util.OssAliyun; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.util.CellRangeAddress; import org.json.JSONArray; import org.json.JSONObject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.io.File; import java.io.FileOutputStream; import java.text.DecimalFormat; import java.util.*; @Service public class ReviewAnalyzeService { @Autowired ReviewAnswerDao reviewAnswerDao; @Autowired ReviewItemDao reviewItemDao; @Autowired ReviewWorkerDao reviewWorkerDao; @Autowired ReviewJobDao reviewJobDao; @Autowired ReviewPaperDao reviewPaperDao; @Autowired ReviewReportDao reviewReportDao; @Autowired BugDao bugDao; @Autowired BugScoreDao bugScoreDao; @Autowired AnalyzeService analyzeService; public JSONObject analyzeItem(String itemId,String reportId,String jobId){ JSONObject jsonObject=new JSONObject(); ReviewItem reviewItem=reviewItemDao.findById(itemId); String type=reviewItem.getType(); ListreviewAnswers=reviewAnswerDao.getItemReportJobAnswers(itemId,reportId,jobId); if(type.equals("File")){ Map>map=new HashMap<>(); for(int i=0;iurls=reviewAnswer.getFile_url(); if(urls.size()!=0){ String workerId=reviewAnswer.getWorker_id(); ReviewWorker worker=reviewWorkerDao.find(workerId); ReviewWorkerVO workerVO=reviewWorkerDao.getEduInfo(worker); map.put(new JSONObject(workerVO).toString(),urls); } } jsonObject=new JSONObject(map); } else if(type.equals("Description")){ Mapmap=new HashMap<>(); for(int i=0;ianswers=reviewAnswer.getAnswers(); if(answers.size()!=0){ String answer=answers.get(0); String workerId=reviewAnswer.getWorker_id(); ReviewWorker worker=reviewWorkerDao.find(workerId); ReviewWorkerVO workerVO=reviewWorkerDao.getEduInfo(worker); map.put(new JSONObject(workerVO).toString(),answer); } } jsonObject=new JSONObject(map); } else{ Mapmap=new HashMap<>(); for(int i=0;ianswers=reviewAnswer.getAnswers(); for(int j=0;j jobs = reviewJobDao.findJobsByPaper(paperId); JSONArray res = new JSONArray(); for (ReviewJob job : jobs){ res.put(getJsonExport(job.getId())); } return res; } public JSONObject getJsonExport ( String jobId){ ReviewJob job = reviewJobDao.findJob(jobId) ; JSONObject res = new JSONObject(); JSONArray reportInfo = new JSONArray(); List reports = reviewReportDao.getReportsByPaperId(job.getPaper_id()); JSONObject reportJsonInfo ; for( ReviewReport r : reports){ // 便利所有的报告,报告报告的信息 和 评审信息 reportJsonInfo = new JSONObject(); reportJsonInfo.put("info",new JSONObject(r)); List items = reviewItemDao.findItemsByReport(r.getId()); JSONArray itemArray = new JSONArray(); for (ReviewItem i : items){ JSONObject itemJson = new JSONObject(); itemJson.put("description" , i.getDescription()); List answers = reviewAnswerDao.getItemReportJobAnswers(i.getId(),r.getId(),jobId); int [] answerCount = new int [i.getOptions().size()]; StringBuffer sb = new StringBuffer() ; JSONArray answerTemp = new JSONArray(); JSONObject jsonTemp ; itemJson.put("type",i.getType()); switch (i.getType()){ case "Single" : case "Multiple": for(ReviewAnswer answer : answers){ for( int ii = 0 ;ii < answer.getAnswers().size();ii++){ answerCount[ii] ++; } } for( int ii =0;ii reports = reviewReportDao.getReportsByPaperId(job.getPaper_id()); Row rTemp ; Cell cTemp; DecimalFormat df = new DecimalFormat("#.00"); for( ReviewReport r : reports){ List items = reviewItemDao.findItemsByReport(r.getId()); tempRI = 0; for (ReviewItem i : items){ List answers = reviewAnswerDao.getItemReportJobAnswers(i.getId(),r.getId(),jobId); int [] answerCount = new int [answers.size()]; StringBuffer sb = new StringBuffer() ; switch (i.getType()){ case "Single" : case "Multiple": for(ReviewAnswer answer : answers){ for( int ii = 0 ;ii < answer.getAnswers().size();ii++){ answerCount[ii] ++; } } for( int ii =0;ii reviewReportList = reviewReportDao.getReportsByPaperId(reviewJob.getPaper_id()); if(reviewReportList==null){ result.put("status","500"); result.put("更新bugScore","该job内不存在report"); }else { //一个report对应一个bug for (ReviewReport reviewReport : reviewReportList) { String bugId = reviewReport.getOriginal_id(); List 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 reviewAnswerList = reviewAnswerDao.getItemReportJobAnswers(reviewItem.getId(), reviewReport.getId(), jobId); for (ReviewAnswer reviewAnswer : reviewAnswerList) { List answers = reviewAnswer.getAnswers(); //该题进行了选择 if (answers != null && answers.size() > 0) { for (int i = 0; i < answers.size(); i++) { if ("1".equals(answers.get(i))) { allScore += i; count++; break; } } } } int grade = allScore / count; //新建bugScore并保存 BugScore bugScore = new BugScore(bugId, grade, 0); bugScoreDao.save(bugScore); } } } result.put("status","200"); result.put("更新bugScore","更新bugScore成功"); } } } return result; } }