Ver Fonte

添加获取job答案信息的接口

insomniaLee há 5 anos atrás
pai
commit
893e87670b

+ 26 - 5
src/main/java/edu/nju/controller/ReviewAnalyzeController.java

@@ -1,12 +1,11 @@
 package edu.nju.controller;
 
+import edu.nju.entities.ReviewJob;
 import edu.nju.service.ReviewAnalyzeService;
 import org.json.JSONObject;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.CrossOrigin;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
@@ -35,11 +34,33 @@ public class ReviewAnalyzeController {
     }
 
     //获取众审任务的结果excel
-    @RequestMapping(value = "/getJobExcel")
+    @RequestMapping(value = "/job/excel" , method = RequestMethod.GET)
     @ResponseBody
     public String getExcel (String jobId){
         String res = reviewAnalyzeService.getExcel(jobId);
-        return res==null?"errpr":res;
+        return res==null?"err0r":res;
     }
 
+    @RequestMapping(value = "/job/json", method = RequestMethod.GET)
+    @ResponseBody
+    public void getJson ( @RequestParam("id") String jobId , HttpServletResponse response){
+        try {
+            PrintWriter out = response.getWriter();
+            JSONObject job = reviewAnalyzeService.getJsonExport(jobId);
+            out.print(job);
+            out.flush();
+            out.close();
+        }catch (IOException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+    }
+
+//    @RequestMapping(value = "/job/json", method = RequestMethod.GET)
+//    @ResponseBody
+//    public JSONObject getJson ( @RequestParam("id") String jobId , HttpServletResponse response){
+//        JSONObject job = reviewAnalyzeService.getJsonExport(jobId);
+//        return job;
+//    }
+
 }

+ 66 - 0
src/main/java/edu/nju/service/ReviewAnalyzeService.java

@@ -9,6 +9,7 @@ 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;
@@ -96,6 +97,71 @@ public class ReviewAnalyzeService {
         return jsonObject;
     }
 
+    public JSONObject getJsonExport ( String jobId){
+        ReviewJob job = reviewJobDao.findJob(jobId) ;
+        JSONObject res = new JSONObject();
+
+        JSONArray reportInfo = new JSONArray();
+        List<ReviewReport > reports = reviewReportDao.getReportsByPaperId(job.getPaper_id());
+        JSONObject reportJsonInfo ;
+        for( ReviewReport r : reports){ // 便利所有的报告,报告报告的信息 和 评审信息
+            reportJsonInfo = new JSONObject();
+            reportJsonInfo.put("info",new JSONObject(r));
+            List<ReviewItem> items = reviewItemDao.findItemsByReport(r.getId());
+            JSONArray itemArray = new JSONArray();
+            for (ReviewItem i : items){
+                JSONObject itemJson = new JSONObject();
+                itemJson.put("description" , i.getDescription());
+                List<ReviewAnswer> 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<i.getOptions().size();ii++){
+                            jsonTemp = new JSONObject();
+                            jsonTemp.put(i.getOptions().get(ii),answerCount[ii]);
+                            answerTemp.put(jsonTemp);
+                        }
+                        break;
+                    case "Description" :
+                        for(ReviewAnswer answer : answers){
+                            sb.append(answer.getAnswers().toString()+"\n");
+                        }
+                        jsonTemp = new JSONObject();
+                        jsonTemp.put(i.getDescription(),sb.toString());
+                        answerTemp.put(jsonTemp);
+                        break;
+                    case "File":
+                        for(ReviewAnswer answer : answers){
+                            sb.append(answer.getFile_url()+"\n");
+                        }
+                        jsonTemp = new JSONObject();
+                        jsonTemp.put(i.getDescription(),sb.toString());
+                        answerTemp.put(jsonTemp);
+                        break;
+                    default:
+                        break;
+                }
+                itemJson.put("answer",answerTemp);
+                itemArray.put(itemJson);
+            }
+            reportJsonInfo.put("checkItem",itemArray);
+            reportInfo.put(reportJsonInfo);
+        }
+        res.put("reportInfo",reportInfo);
+        res.put("jobInfo",new JSONObject(job));
+        return res;
+    }
+
 
 
     public String getExcel (String jobId){