|
@@ -1,16 +1,19 @@
|
|
|
package edu.nju.service;
|
|
|
|
|
|
-import edu.nju.dao.ReviewAnswerDao;
|
|
|
-import edu.nju.dao.ReviewItemDao;
|
|
|
-import edu.nju.dao.ReviewWorkerDao;
|
|
|
-import edu.nju.entities.ReviewAnswer;
|
|
|
-import edu.nju.entities.ReviewItem;
|
|
|
-import edu.nju.entities.ReviewWorker;
|
|
|
+import edu.nju.dao.*;
|
|
|
+import edu.nju.entities.*;
|
|
|
import edu.nju.model.ReviewWorkerVO;
|
|
|
+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.JSONObject;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import java.io.FileOutputStream;
|
|
|
+import java.text.DecimalFormat;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
@@ -24,6 +27,12 @@ public class ReviewAnalyzeService {
|
|
|
ReviewItemDao reviewItemDao;
|
|
|
@Autowired
|
|
|
ReviewWorkerDao reviewWorkerDao;
|
|
|
+ @Autowired
|
|
|
+ ReviewJobDao reviewJobDao;
|
|
|
+ @Autowired
|
|
|
+ ReviewPaperDao reviewPaperDao;
|
|
|
+ @Autowired
|
|
|
+ ReviewReportDao reviewReportDao;
|
|
|
|
|
|
public JSONObject analyzeItem(String itemId,String reportId,String jobId){
|
|
|
JSONObject jsonObject=new JSONObject();
|
|
@@ -82,4 +91,71 @@ public class ReviewAnalyzeService {
|
|
|
}
|
|
|
return jsonObject;
|
|
|
}
|
|
|
+
|
|
|
+ public boolean getExcel (String jobId){
|
|
|
+ int rIndex = 0;
|
|
|
+ int iIndex = 0;
|
|
|
+ int oIndex = 0;
|
|
|
+ int tempIO ;
|
|
|
+ int tempRI;
|
|
|
+ int temp ;
|
|
|
+ try {
|
|
|
+ HSSFWorkbook wb = new HSSFWorkbook();
|
|
|
+ tempIO = 0;
|
|
|
+ tempRI = 0;
|
|
|
+ FileOutputStream fileOut = null; // 为了输出excel 文件
|
|
|
+ ReviewJob job = reviewJobDao.findJob(jobId);
|
|
|
+ HSSFSheet sheet1 = wb.createSheet(job.getName());
|
|
|
+ ReviewPaper paper = reviewPaperDao.findPaper(job.getPaper_id());
|
|
|
+ List<ReviewReport> reports = reviewReportDao.getReportsByPaperId(job.getPaper_id());
|
|
|
+ Row rTemp ;
|
|
|
+ Cell cTemp;
|
|
|
+ DecimalFormat df = new DecimalFormat("#.00");
|
|
|
+ for( ReviewReport r : reports){
|
|
|
+ List<ReviewItem> items = reviewItemDao.findItemsByReport(r.getId());
|
|
|
+ for (ReviewItem i : items){
|
|
|
+ List<ReviewAnswer> 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<i.getOptions().size();ii++){
|
|
|
+ rTemp = sheet1.createRow(oIndex++);
|
|
|
+ cTemp = rTemp.createCell(2);
|
|
|
+ cTemp.setCellValue(i.getOptions().get(ii)+":"+answerCount[ii]+" "+df.format(1.0*answerCount[ii]/answers.size()));
|
|
|
+ }
|
|
|
+
|
|
|
+ case "Description" :
|
|
|
+ case "File":
|
|
|
+ for(ReviewAnswer answer : answers){
|
|
|
+ sb.append(answer.getAnswers().toString()+"\n");
|
|
|
+ }
|
|
|
+ rTemp = sheet1.createRow(oIndex++);
|
|
|
+ cTemp = rTemp.createCell(2);
|
|
|
+ cTemp.setCellValue(i.getOptions().get(0)+":"+sb.toString());
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ temp = iIndex + i.getOptions().size()-1;
|
|
|
+ sheet1.addMergedRegion(new CellRangeAddress(iIndex,temp,1,1));
|
|
|
+ iIndex = temp+1;
|
|
|
+ tempRI += i.getOptions().size();
|
|
|
+ }
|
|
|
+ temp = rIndex + tempRI-1;
|
|
|
+ sheet1.addMergedRegion(new CellRangeAddress(rIndex,temp,0,0));
|
|
|
+ rIndex = temp+1;
|
|
|
+ }
|
|
|
+ fileOut = new FileOutputStream("/Users/insomnialee/Desktop/temp/1.xls");
|
|
|
+ wb.write(fileOut);
|
|
|
+ return true;
|
|
|
+ }catch (Exception e){
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|