Browse Source

修改报告导出

insomniaLee 5 years ago
parent
commit
46d47c5fa5

+ 2 - 1
src/main/java/edu/nju/controller/ReviewAnalyzeController.java

@@ -38,7 +38,8 @@ public class ReviewAnalyzeController {
     @RequestMapping(value = "/getJobExcel")
     @ResponseBody
     public String getExcel (String jobId){
-        return reviewAnalyzeService.getExcel(jobId)?"1111":"tmd";
+        String res = reviewAnalyzeService.getExcel(jobId);
+        return res==null?"errpr":res;
     }
 
 }

+ 25 - 73
src/main/java/edu/nju/service/ReviewAnalyzeService.java

@@ -3,6 +3,7 @@ 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;
@@ -12,8 +13,10 @@ 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.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -93,68 +96,9 @@ public class ReviewAnalyzeService {
         return jsonObject;
     }
 
-    public static void main(String[] args) {
-        getExcelTest();
-    }
 
-    public static boolean getExcelTest (){
-        int rIndex = 0;
-        int iIndex = 0;
-        int oIndex = 0;
-        int tempRI;
-        int temp  ;
-        try {
-            HSSFWorkbook wb = new HSSFWorkbook();
-            tempRI = 0;
-            FileOutputStream fileOut = null; // 为了输出excel 文件
-            HSSFSheet sheet1 = wb.createSheet("job.getName()");
-            Row rTemp ;
-            Cell cTemp;
-            DecimalFormat df = new DecimalFormat("#.00");
-            for( int it = 0 ; it < 10 ; it++){  // report
-                //List<ReviewItem> items = reviewItemDao.findItemsByReport(r.getId());
-                tempRI = 0;
-                for ( int jt = 0 ; jt < 3 ; jt++ ){ //  item
-//                    List<ReviewAnswer> answers = reviewAnswerDao.getItemReportJobAnswers(i.getId(),r.getId(),jobId);
-//                    int [] answerCount = new int [answers.size()];
-                    StringBuffer sb = new StringBuffer() ;
-                    switch ("1"){
-                        case "1":
-                            for( int iit =0;iit<3;iit++){
-                                rTemp = sheet1.createRow(oIndex++);
-                                cTemp = rTemp.createCell(2);
-                                cTemp.setCellValue("this is " + iit + " from jt "+ jt +"oindex"+ oIndex);
-                            }
-                        default:
-                            break;
-                    }
-                    temp = iIndex + 3-1;
-                    sheet1.addMergedRegion(new CellRangeAddress(iIndex,temp,1,1));
-                    rTemp = sheet1.getRow(iIndex);
-                    cTemp = rTemp.createCell(1);
-                    cTemp.setCellValue("i.getDescription()");
-                    iIndex = temp+1;
-                    tempRI+=3;
-                }
-                temp = rIndex + tempRI-1;
-                if(temp!=rIndex){
-                    sheet1.addMergedRegion(new CellRangeAddress(rIndex,temp,0,0));
-                }
-                rTemp = sheet1.getRow(rIndex);
-                cTemp = rTemp.createCell(0);
-                cTemp.setCellValue("r.getNamewhile i = " + it);
-                rIndex = temp+1;
-            }
-            fileOut = new FileOutputStream("/Users/insomniaLee/Desktop/temp/13.xls");
-            wb.write(fileOut);
-            return true;
-        }catch (Exception e){
-            e.printStackTrace();
-            return false;
-        }
-    }
 
-    public boolean getExcel (String jobId){
+    public String getExcel (String jobId){
         int rIndex = 0;
         int iIndex = 0;
         int oIndex = 0;
@@ -188,9 +132,9 @@ public class ReviewAnalyzeService {
                             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(100.0*answerCount[ii]/answers.size())+"%");
+                                cTemp.setCellValue(i.getOptions().get(ii)+":"+answerCount[ii]+" - "+df.format(100.0*answerCount[ii]/ (Arrays.stream(answerCount).sum()==0?1:Arrays.stream(answerCount).sum()))+"%");
                             }
-
+                            break;
                         case "Description" :
                             for(ReviewAnswer answer : answers){
                                 sb.append(answer.getAnswers().toString()+"\n");
@@ -198,6 +142,7 @@ public class ReviewAnalyzeService {
                             rTemp = sheet1.createRow(oIndex++);
                             cTemp = rTemp.createCell(2);
                             cTemp.setCellValue(sb.toString());
+                            break;
                         case "File":
                             for(ReviewAnswer answer : answers){
                                 sb.append(answer.getFile_url()+"\n");
@@ -205,10 +150,11 @@ public class ReviewAnalyzeService {
                             rTemp = sheet1.createRow(oIndex++);
                             cTemp = rTemp.createCell(2);
                             cTemp.setCellValue(sb.toString());
+                            break;
                         default:
                             break;
                     }
-                    if(i.getOptions().size()<=1){
+                    if(i.getOptions().size()<=1){ // File or description
                         temp = iIndex ;
                     }else{
                         temp = iIndex + i.getOptions().size()-1;
@@ -224,21 +170,27 @@ public class ReviewAnalyzeService {
                         tempRI+=i.getOptions().size();
                     }
                 }
-                temp = rIndex + tempRI-1;
-                if(temp!=rIndex){
-                    sheet1.addMergedRegion(new CellRangeAddress(rIndex,temp,0,0));
+                if(items.size()!=0){
+                    // 如果没有item的情况
+                    tempRI=tempRI==0?1:tempRI;
+                    temp = rIndex + tempRI -1;
+                    if(temp!=rIndex){
+                        sheet1.addMergedRegion(new CellRangeAddress(rIndex,temp,0,0));
+                    }
+                    rTemp = sheet1.getRow(rIndex);
+                    cTemp = rTemp.createCell(0);
+                    cTemp.setCellValue(r.getName()+"-"+r.getDescription());
+                    rIndex = temp+1;
                 }
-                rTemp = sheet1.getRow(rIndex);
-                cTemp = rTemp.createCell(0);
-                cTemp.setCellValue(r.getName()+"-"+r.getDescription());
-                rIndex = temp+1;
             }
-            fileOut = new FileOutputStream("/Users/xujiawei/Desktop/temp/"+jobId+".xls");
+            fileOut = new FileOutputStream("/Users/insomnialee/Desktop/temp/"+jobId+".xls");
             wb.write(fileOut);
-            return true;
+            File file = new File("/Users/insomnialee/Desktop/temp/"+jobId+".xls");
+            OssAliyun.uploadFile("auditExcel/"+jobId+".xls",file);
+            return "http://mooctest-site.oss-cn-shanghai.aliyuncs.com/auditExcel/"+jobId+".xls";
         }catch (Exception e){
             e.printStackTrace();
-            return false;
+            return null;
         }
     }
 }