浏览代码

Merge branch 'xjw' of http://git.mooctest.net/summer/crowdsource-backend into xjw

xujiawei 5 年之前
父节点
当前提交
18f4c86d06

+ 18 - 35
src/main/java/edu/nju/controller/ExtraController.java

@@ -447,23 +447,6 @@ public class ExtraController {
 		}
 		}
 	}
 	}
 
 
-	@RequestMapping(value = "/uploadJob", method = RequestMethod.POST)
-	@ResponseBody
-	public void uploadReviewJob(String paperJson, HttpServletResponse response) {
-		try {
-//			System.out.println(jobJson);
-			PrintWriter out = response.getWriter();
-			JSONObject result = extraService.savePaper(paperJson);
-			out.print(result);
-//			out.print("success");
-			out.flush();
-			out.close();
-		} catch (IOException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		}
-
-	}
 
 
 //	@RequestMapping(value = "/checkJob", method = RequestMethod.POST)
 //	@RequestMapping(value = "/checkJob", method = RequestMethod.POST)
 //	@ResponseBody
 //	@ResponseBody
@@ -483,24 +466,24 @@ public class ExtraController {
 //
 //
 //	}
 //	}
 
 
-	@RequestMapping(value = "/checkJob", method = RequestMethod.POST)
-	@ResponseBody
-	public void checkReviewJobJson(String jobJson, HttpServletResponse response) {
-		try {
-			PrintWriter out = response.getWriter();
-			JSONObject object = new JSONObject();
-			String result = extraService.checkJob(jobJson);
-			object.put("result", result);
-			out.print(object);
-//			out.print("success");
-			out.flush();
-			out.close();
-		} catch (IOException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		}
-
-	}
+//	@RequestMapping(value = "/checkJob", method = RequestMethod.POST)
+//	@ResponseBody
+//	public void checkReviewJobJson(String jobJson, HttpServletResponse response) {
+//		try {
+//			PrintWriter out = response.getWriter();
+//			JSONObject object = new JSONObject();
+//			String result = extraService.checkJob(jobJson);
+//			object.put("result", result);
+//			out.print(object);
+////			out.print("success");
+//			out.flush();
+//			out.close();
+//		} catch (IOException e) {
+//			// TODO Auto-generated catch block
+//			e.printStackTrace();
+//		}
+//
+//	}
 
 
 
 
 }
 }

+ 0 - 75
src/main/java/edu/nju/controller/ReviewController.java

@@ -51,36 +51,6 @@ public class ReviewController {
         }
         }
     }
     }
 
 
-    @RequestMapping(value = "/getPaperJson")
-    @ResponseBody
-    public void getPaperJson(String paper_id, HttpServletResponse response){
-        try {
-            PrintWriter out = response.getWriter();
-            ReviewPaperJson paperJson = iservice.getReviewPaperJson(paper_id);
-            out.print(new JSONObject(paperJson));
-            out.flush();
-            out.close();
-        }catch (IOException e) {
-            // TODO Auto-generated catch block
-            e.printStackTrace();
-        }
-    }
-
-//    @RequestMapping(value = "/delJob")
-//    @ResponseBody
-//    public void deleteJob(String job_id, HttpServletResponse response){
-//        try {
-//            PrintWriter out = response.getWriter();
-//            ReviewJobJson jobJson = iservice.getReviewJobJson(job_id);
-//            out.print(new JSONObject(jobJson));
-//            out.flush();
-//            out.close();
-//        }catch (IOException e) {
-//            // TODO Auto-generated catch block
-//            e.printStackTrace();
-//        }
-//    }
-
 //    @RequestMapping(value = "/getItemsByJob")
 //    @RequestMapping(value = "/getItemsByJob")
 //    @ResponseBody
 //    @ResponseBody
 //    public void getItemListByJobId(String job_id, HttpServletResponse response){
 //    public void getItemListByJobId(String job_id, HttpServletResponse response){
@@ -230,49 +200,4 @@ public class ReviewController {
             e.printStackTrace();
             e.printStackTrace();
         }
         }
     }
     }
-
-    @RequestMapping(value = "/getPaper")
-    @ResponseBody
-    public void getPaperById(String paper_id, HttpServletResponse response){
-        try {
-            PrintWriter out = response.getWriter();
-            ReviewPaper paper = iservice.getPaper(paper_id);
-            out.print(new JSONObject(paper));
-            out.flush();
-            out.close();
-        }catch (IOException e) {
-            // TODO Auto-generated catch block
-            e.printStackTrace();
-        }
-    }
-
-    @RequestMapping(value = "/getReportsByPaper")
-    @ResponseBody
-    public void getReportsByPaper(String paper_id, HttpServletResponse response){
-        try {
-            PrintWriter out = response.getWriter();
-            List<ReviewReport> reports = iservice.getReportsByPaperId(paper_id);
-            out.print(new JSONArray(reports));
-            out.flush();
-            out.close();
-        }catch (IOException e) {
-            // TODO Auto-generated catch block
-            e.printStackTrace();
-        }
-    }
-
-    @RequestMapping(value = "/getPapers")
-    @ResponseBody
-    public void getPapers(HttpServletResponse response){
-        try {
-            PrintWriter out = response.getWriter();
-            List<ReviewPaper> papers = iservice.getPapers();
-            out.print(new JSONArray(papers));
-            out.flush();
-            out.close();
-        }catch (IOException e) {
-            // TODO Auto-generated catch block
-            e.printStackTrace();
-        }
-    }
 }
 }

+ 139 - 0
src/main/java/edu/nju/controller/ReviewPaperController.java

@@ -0,0 +1,139 @@
+package edu.nju.controller;
+
+import edu.nju.entities.ReviewPaper;
+import edu.nju.entities.ReviewPaperJson;
+import edu.nju.entities.ReviewReport;
+import edu.nju.service.ReviewPaperService;
+import org.json.JSONArray;
+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.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.List;
+
+@Controller
+@RequestMapping(value = "/paper")
+@CrossOrigin(origins = "*", maxAge = 3600, allowCredentials = "true")
+public class ReviewPaperController {
+
+    @Autowired
+    ReviewPaperService reviewPaperService;
+
+    @RequestMapping(value = "/uploadPaper", method = RequestMethod.POST)
+    @ResponseBody
+    public void uploadReviewPaper(String paperJson, HttpServletResponse response) {
+        try {
+            PrintWriter out = response.getWriter();
+            JSONObject result = reviewPaperService.savePaper(paperJson);
+            out.print(result);
+            out.flush();
+            out.close();
+        } catch (IOException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+    }
+
+    @RequestMapping(value = "/getPaperJson")
+    @ResponseBody
+    public void getPaperJson(String paper_id, HttpServletResponse response){
+        try {
+            PrintWriter out = response.getWriter();
+            ReviewPaperJson paperJson = reviewPaperService.getReviewPaperJson(paper_id);
+            out.print(new JSONObject(paperJson));
+            out.flush();
+            out.close();
+        }catch (IOException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+    }
+
+    @RequestMapping(value = "/getPaper")
+    @ResponseBody
+    public void getPaperById(String paper_id, HttpServletResponse response){
+        try {
+            PrintWriter out = response.getWriter();
+            ReviewPaper paper = reviewPaperService.getPaper(paper_id);
+            out.print(new JSONObject(paper));
+            out.flush();
+            out.close();
+        }catch (IOException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+    }
+
+    @RequestMapping(value = "/getReportsByPaper")
+    @ResponseBody
+    public void getReportsByPaper(String paper_id, HttpServletResponse response){
+        try {
+            PrintWriter out = response.getWriter();
+            List<ReviewReport> reports = reviewPaperService.getReportsByPaperId(paper_id);
+            out.print(new JSONArray(reports));
+            out.flush();
+            out.close();
+        }catch (IOException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+    }
+
+    @RequestMapping(value = "/getPapers")
+    @ResponseBody
+    public void getPapers(HttpServletResponse response){
+        try {
+            PrintWriter out = response.getWriter();
+            List<ReviewPaper> papers = reviewPaperService.getPapers();
+            out.print(new JSONArray(papers));
+            out.flush();
+            out.close();
+        }catch (IOException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+    }
+
+    @RequestMapping(value = "/delPaper")
+    @ResponseBody
+    public void deletePaper(String paper_id, HttpServletResponse response){
+        try {
+            JSONObject result = new JSONObject();
+            if(reviewPaperService.delPaper(paper_id)){
+                result.put("status", "200");
+            } else {
+                result.put("status", "500");
+            }
+            PrintWriter out = response.getWriter();
+            out.print(result);
+            out.flush();
+            out.close();
+        }catch (IOException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+    }
+
+    @RequestMapping(value = "/updatePaper")
+    @ResponseBody
+    public void updatePaper(String paper_id, String paperJson,HttpServletResponse response){
+        try {
+            PrintWriter out = response.getWriter();
+            JSONObject result = reviewPaperService.updatePaper(paper_id,paperJson);
+            out.print(result);
+            out.flush();
+            out.close();
+        }catch (IOException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+    }
+
+}

+ 5 - 0
src/main/java/edu/nju/dao/ReviewItemDao.java

@@ -52,6 +52,11 @@ public class ReviewItemDao {
 //        if(list.size() == 0 || list == null) {return null;}
 //        if(list.size() == 0 || list == null) {return null;}
 //        return list.get(0);
 //        return list.get(0);
 //    }
 //    }
+    public void removeByPaper(String paperId){
+        Query query = new Query();
+        query.addCriteria(Criteria.where("paper_id").is(paperId));
+        mongoOperations.remove(query,ReviewItem.class);
+    }
 
 
 
 
 
 

+ 6 - 0
src/main/java/edu/nju/dao/ReviewPaperDao.java

@@ -33,4 +33,10 @@ public class ReviewPaperDao {
         return list;
         return list;
     }
     }
 
 
+    public void remove(String id){
+        Query query = new Query();
+        query.addCriteria(Criteria.where("_id").is(id));
+        mongoOperations.remove(query,ReviewPaper.class);
+    }
+
 }
 }

+ 12 - 0
src/main/java/edu/nju/dao/ReviewPaperJsonDao.java

@@ -28,4 +28,16 @@ public class ReviewPaperJsonDao {
         mongoOperations.save(reviewPaperJson);
         mongoOperations.save(reviewPaperJson);
         return reviewPaperJson.getId();
         return reviewPaperJson.getId();
     }
     }
+
+    public void remove(String paperId){
+        Query query = new Query();
+        query.addCriteria(Criteria.where("paper_id").is(paperId));
+        mongoOperations.remove(query,ReviewPaperJson.class);
+    }
+
+    public void update(String paperId,String paperJson){
+        ReviewPaperJson reviewPaperJson=findJsonByPaper(paperId);
+        reviewPaperJson.setJson(paperJson);
+        save(reviewPaperJson);
+    }
 }
 }

+ 6 - 0
src/main/java/edu/nju/dao/ReviewReportDao.java

@@ -35,5 +35,11 @@ public class ReviewReportDao {
         List<ReviewReport> list = mongoOperations.find(query,ReviewReport.class);
         List<ReviewReport> list = mongoOperations.find(query,ReviewReport.class);
         return list;
         return list;
     }
     }
+
+    public void removeByPaper(String paperId){
+        Query query = new Query();
+        query.addCriteria(Criteria.where("paper_id").is(paperId));
+        mongoOperations.remove(query,ReviewReport.class);
+    }
 }
 }
 
 

+ 21 - 0
src/main/java/edu/nju/entities/ReviewPaper.java

@@ -1,5 +1,6 @@
 package edu.nju.entities;
 package edu.nju.entities;
 
 
+import edu.nju.vo.ReviewPaperVO;
 import org.springframework.data.annotation.Id;
 import org.springframework.data.annotation.Id;
 import org.springframework.data.annotation.PersistenceConstructor;
 import org.springframework.data.annotation.PersistenceConstructor;
 import org.springframework.data.mongodb.core.mapping.Document;
 import org.springframework.data.mongodb.core.mapping.Document;
@@ -34,6 +35,16 @@ public class ReviewPaper implements java.io.Serializable{
         this.requirement_location = requirement_location;
         this.requirement_location = requirement_location;
     }
     }
 
 
+    @PersistenceConstructor
+    public ReviewPaper(ReviewPaperVO reviewPaperVO) {
+        this.description = reviewPaperVO.getDescription();
+        this.name = reviewPaperVO.getName();
+        this.create_time = reviewPaperVO.getCreate_time();
+        this.type = reviewPaperVO.getType();
+        this.application_location = reviewPaperVO.getApplication_location();
+        this.requirement_location = reviewPaperVO.getRequirement_location();
+    }
+
     public String getId() {
     public String getId() {
         return id;
         return id;
     }
     }
@@ -89,4 +100,14 @@ public class ReviewPaper implements java.io.Serializable{
     public void setRequirement_location(String requirement_location) {
     public void setRequirement_location(String requirement_location) {
         this.requirement_location = requirement_location;
         this.requirement_location = requirement_location;
     }
     }
+
+    public void setReviewPaper(ReviewPaperVO reviewPaperVO){
+        this.description = reviewPaperVO.getDescription();
+        this.name = reviewPaperVO.getName();
+        this.create_time = reviewPaperVO.getCreate_time();
+        this.type = reviewPaperVO.getType();
+        this.application_location = reviewPaperVO.getApplication_location();
+        this.requirement_location = reviewPaperVO.getRequirement_location();
+    }
+
 }
 }

+ 0 - 273
src/main/java/edu/nju/service/ExtraService.java

@@ -10,7 +10,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
 import edu.nju.util.ExcelToJson;
 import edu.nju.util.ExcelToJson;
-import org.springframework.transaction.annotation.Transactional;
 
 
 @Service
 @Service
 public class ExtraService {
 public class ExtraService {
@@ -26,27 +25,6 @@ public class ExtraService {
 	
 	
 	@Autowired
 	@Autowired
 	BugDao bugDao;
 	BugDao bugDao;
-
-	@Autowired
-	ReviewJobDao jobDao;
-
-	@Autowired
-	ReviewItemDao itemDao;
-
-	@Autowired
-	ReviewAnswerDao answerDao;
-
-	@Autowired
-	ReviewService reviewService;
-
-	@Autowired
-	ReviewReportDao reviewReportDao;
-
-	@Autowired
-	ReviewPaperJsonDao reviewPaperJsonDao;
-
-	@Autowired
-	ReviewPaperDao reviewPaperDao;
 	
 	
 	//测试用例相关
 	//测试用例相关
 	public String saveTestCase(String report_id, String name, String front, String behind, String description) {
 	public String saveTestCase(String report_id, String name, String front, String behind, String description) {
@@ -150,256 +128,5 @@ public class ExtraService {
 		return examDao.findById(id);
 		return examDao.findById(id);
 	}
 	}
 
 
-	@Transactional(rollbackFor = Exception.class)
-	public  JSONObject savePaper(String paperJson){
-		JSONObject object = new JSONObject();
-		String result=checkPaper(paperJson);
-		if(!result.equals("success")){
-			object.put("status","fail");
-			object.put("message",result);
-			return object;
-		}
-		try {
-			JSONObject jsonObject = new JSONObject(paperJson);
-			String description = jsonObject.getString("description");
-			String name = jsonObject.getString("name");
-			String time = jsonObject.getString("create_time");
-			String type = jsonObject.getString("type");
-			String applicationLocation = jsonObject.getString("application_url");
-			String requirementLocation = jsonObject.getString("requirement_url");
-			String paperId = reviewPaperDao.save(new ReviewPaper(description, name, time, type, applicationLocation, requirementLocation));
-			reviewPaperJsonDao.save(new ReviewPaperJson(paperId,paperJson));
-
-			JSONArray reportArray = jsonObject.getJSONArray("report_list");
-			HashMap<Integer, String> reportIndexToId = new HashMap<>();
-			for (int i = 0; i < reportArray.length(); i++) {
-				JSONObject reportObject = reportArray.getJSONObject(i);
-				int reportIndex = reportObject.getInt("index");
-				String id = saveReport(reportObject, paperId);
-				reportIndexToId.put(reportIndex, id);
-			}
-
-			JSONArray itemGroupArray = jsonObject.getJSONArray("item_group_list");
-			//save item
-			//item index-id
-			HashMap<String, Integer> itemIdToOptionNum = new HashMap<>();
-			HashMap<Integer, String> itemIndexToId = new HashMap<>();
-			for (int i = 0; i < itemGroupArray.length(); i++) {
-				JSONObject itemGroupObject = itemGroupArray.getJSONObject(i);
-				saveItem(itemGroupObject, paperId, itemIdToOptionNum, reportIndexToId, itemIndexToId);
-			}
-		}catch (Exception e){
-			object.put("status","fail");
-			object.put("message",e.getMessage());
-			//TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-		}
-		return object;
-	}
-
-	private String saveReport(JSONObject reportObject,String paper_id)throws Exception{
-		try {
-			JSONArray imgArray=reportObject.getJSONArray("img_url");
-			List<String> img_urls=new ArrayList<>();
-			for(int i=0;i<imgArray.length();i++){
-				img_urls.add(String.valueOf(imgArray.get(i)));
-			}
-			JSONArray fileArray=reportObject.getJSONArray("file_url");
-			List<String> file_urls=new ArrayList<>();
-			for(int i=0;i<fileArray.length();i++){
-				file_urls.add(String.valueOf(fileArray.get(i)));
-			}
-			String name=reportObject.getString("name");
-			String description=reportObject.getString("description");
-			String original_id=reportObject.getString("original_id");
-			ReviewReport reviewReport=new ReviewReport(original_id,paper_id,name,description,img_urls,file_urls);
-			return reviewReportDao.save(reviewReport);
-		}catch (Exception e){
-			throw new Exception("report 创建失败: "+e.getMessage());
-		}
-	}
-
-	private void saveItem(JSONObject itemGroupObject,String paper_id,HashMap<String,Integer>item_id_to_option_num,HashMap<Integer,String>report_index_to_id,HashMap<Integer,String>item_index_to_id)throws Exception{
-		//List<String>itemIds=new ArrayList<>();
-		List<String> reportIds=new ArrayList<>();
-		try {
-			JSONArray reportArray=itemGroupObject.getJSONArray("report_list");
-			for (int j=0;j<reportArray.length();j++){
-				int reportIndex= Integer.parseInt(String.valueOf(reportArray.get(j)));
-				reportIds.add(report_index_to_id.get(reportIndex));
-			}
-			JSONArray itemArray=itemGroupObject.getJSONArray("item_list");
-
-			for (int j=0;j<itemArray.length();j++){
-				JSONObject itemObject=itemArray.getJSONObject(j);
-				int index=itemObject.getInt("index");
-				Boolean isRequired=itemObject.getBoolean("is_required");
-				String description=itemObject.getString("description");
-				String type=itemObject.getString("type");
-				List<String>options=new ArrayList<>();
-				JSONArray optionArray=itemObject.getJSONArray("options");
-				for(int k=0;k<optionArray.length();k++){
-					options.add(String.valueOf(optionArray.get(k)));
-				}
-				ReviewItem item=new ReviewItem(paper_id,isRequired,options,description,reportIds,type);
-				String item_id = itemDao.saveItem(item);
-//				itemIds.add(item_id);
-//				item_id_to_option_num.put(item_id,options.size());
-				item_index_to_id.put(index,item_id);
-			}
-		}catch (Exception e){
-			throw new Exception("item 创建失败: "+e.getMessage());
-		}
-//		try {
-//			for(int j=0;j<reportIds.size();j++){
-//				ReviewReport report=reviewReportDao.findReviewReport(reportIds.get(j));
-//				report.setItem_id(itemIds);
-//				reviewReportDao.save(report);
-//			}
-//		}catch (Exception e){
-//			throw new Exception("item创建失败,请检查配置的report_index是否存在! ");
-//		}
-	}
-
-//	private void createWorkerToItem(JSONArray groupArray,String job_id,HashMap<Integer,String>report_index_to_id,HashMap<String,Integer>item_id_to_option_num)throws Exception{
-//		for(int i=0;i<groupArray.length();i++){
-//			List<String> reportIdList=new ArrayList<>();
-//			List<String> workerList=new ArrayList<>();
-//			try {
-//				JSONObject groupObject=groupArray.getJSONObject(i);
-//				String description=groupObject.getString("description");
-//				String name=groupObject.getString("name");
-//				JSONArray workerArray=groupObject.getJSONArray("worker_list");
-//				for (int j=0;j<workerArray.length();j++){
-//					workerList.add(String.valueOf(workerArray.get(j)));
-//				}
-//				JSONArray reportIndexArray=groupObject.getJSONArray("report_list");
-//				for (int j=0;j<reportIndexArray.length();j++){
-//					int reportIndex=Integer.parseInt(String.valueOf(reportIndexArray.get(j)));
-//					reportIdList.add(report_index_to_id.get(reportIndex));
-//				}
-//				reviewService.saveGroup(name,description,workerList,job_id,reportIdList);
-//			}catch (Exception e){
-//				throw new Exception("group 创建失败: "+e.getMessage());
-//			}
-//			try {
-//				for(int j=0;j<workerList.size();j++){
-//					String worker_id=workerList.get(j);
-////				reviewService.saveUserToItem(worker_id,itemIdList,job_id,"","","","");
-//					for(int k=0;k<reportIdList.size();k++){
-//						String report_id=reportIdList.get(k);
-//						List<ReviewItem>items= reviewService.getItemsByReport(report_id);
-//						for(int l=0;l<items.size();l++) {
-//							String item_id=items.get(l).getId();
-//							int optionNum=item_id_to_option_num.get(item_id);
-//							ReviewAnswer answer=new ReviewAnswer(item_id,report_id,worker_id,job_id,optionNum);
-//							answerDao.save(answer);
-//						}
-//					}
-//				}
-//			}catch (Exception e){
-//				throw new Exception("group创建失败,请检查配置的report_index是否存在! ");
-//			}
-//		}
-//	}
-
-	public String checkPaper(String paperJson){
-		String result="success";
-		try {
-			JSONObject jsonObject=new JSONObject(paperJson);
-			String description=jsonObject.getString("description");
-			String name=jsonObject.getString("name");
-			String time=jsonObject.getString("time");
-			String type=jsonObject.getString("type");
-			String application_location=jsonObject.getString("application_url");
-			String requirement_location=jsonObject.getString("requirement_url");
-//			int report_num=jsonObject.getInt("report_num");
-//			int worker_num=jsonObject.getInt("worker_num");
-
-			Set<Integer>reportIndexs=new HashSet<>();
-			JSONArray reportList=jsonObject.getJSONArray("report_list");
-			for(int i=0;i<reportList.length();i++){
-				JSONObject report=reportList.getJSONObject(i);
-				int index=report.getInt("index");
-				if(reportIndexs.contains(index)){
-					throw new Exception("report_list中report的index不能重复");
-				}else{
-					reportIndexs.add(index);
-				}
-				String reportName=report.getString("name");
-				String originalId=report.getString("original_id");
-				String reportDescription=report.getString("description");
-				JSONArray imgUrls=report.getJSONArray("img_url");
-				JSONArray fileUrls=report.getJSONArray("file_url");
-			}
-
-			JSONArray itemGroupArray=jsonObject.getJSONArray("item_group_list");
-			Set<Integer>itemReportIndexs=new HashSet<>();
-
-			for(int i=0;i<itemGroupArray.length();i++){
-				Set<Integer>itemIndexs=new HashSet<>();
-				JSONObject itemGroup=itemGroupArray.getJSONObject(i);
-				JSONArray itemReportList=itemGroup.getJSONArray("report_list");
-				for(int j=0;j<itemReportList.length();j++){
-					int reportIndex=Integer.parseInt(String.valueOf(itemReportList.get(j)));
-					if(!reportIndexs.contains(reportIndex)){
-						throw new Exception("item_group_list中包含不存在的report ");
-					}else{
-						if(itemReportIndexs.contains(reportIndex)){
-							throw new Exception("item_group_list中的report不能重复");
-						}
-						else{
-							itemReportIndexs.add(reportIndex);
-						}
-					}
-				}
-				JSONArray itemList=itemGroup.getJSONArray("item_list");
-				for(int j=0;j<itemList.length();j++){
-					JSONObject item=itemList.getJSONObject(j);
-					int index=item.getInt("index");
-					if(itemIndexs.contains(index)){
-						throw new Exception("item_group_list中的item_index不能重复");
-					}
-					else {
-						itemIndexs.add(index);
-					}
-					String itemDescription=item.getString("description");
-					Boolean isRequired=item.getBoolean("is_required");
-					String itemType=item.getString("type");
-					JSONArray options=item.getJSONArray("options");
-				}
-			}
-
-
-//			JSONArray groupList=jsonObject.getJSONArray("group_list");
-//			Set<String>workers=new HashSet<>();
-//			for(int i=0;i<groupList.length();i++){
-//				JSONObject groupObject=groupList.getJSONObject(i);
-//				String groupName=groupObject.getString("name");
-//				String groupDescription=groupObject.getString("description");
-//				JSONArray workerList=groupObject.getJSONArray("worker_list");
-//				for(int j=0;j<workerList.length();j++){
-//					String workerId=String.valueOf(workerList.get(j));
-//					if(workers.contains(workerId)){
-//						throw new Exception("同一个worker不能属于不同的group");
-//					}else{
-//						workers.add(workerId);
-//					}
-//				}
-//				JSONArray workerReportList=groupObject.getJSONArray("report_list");
-//				for(int j=0;j<workerReportList.length();j++){
-//					int reportIndex= Integer.parseInt(String.valueOf(workerReportList.get(j)));
-//					if(!reportIndexs.contains(reportIndex)){
-//						throw new Exception("group_report_list中包含不存在的report ");
-//					}
-//				}
-//			}
-		}catch (Exception e){
-			return e.getMessage();
-		}
-
-		return result;
-	}
-
-
 
 
 }
 }

+ 318 - 0
src/main/java/edu/nju/service/ReviewPaperService.java

@@ -0,0 +1,318 @@
+package edu.nju.service;
+
+import edu.nju.dao.*;
+import edu.nju.entities.ReviewItem;
+import edu.nju.entities.ReviewPaper;
+import edu.nju.entities.ReviewPaperJson;
+import edu.nju.entities.ReviewReport;
+import edu.nju.vo.ReviewPaperVO;
+import org.json.JSONArray;
+import org.json.JSONObject;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+
+@Service
+public class ReviewPaperService {
+    @Autowired
+    ReviewJobDao jobDao;
+
+    @Autowired
+    ReviewItemDao itemDao;
+
+    @Autowired
+    ReviewAnswerDao answerDao;
+
+    @Autowired
+    ReviewService reviewService;
+
+    @Autowired
+    ReviewReportDao reviewReportDao;
+
+    @Autowired
+    ReviewPaperJsonDao reviewPaperJsonDao;
+
+    @Autowired
+    ReviewPaperDao reviewPaperDao;
+
+    public ReviewPaperJson getReviewPaperJson(String paper_id) {
+        return reviewPaperJsonDao.findJsonByPaper(paper_id);
+    }
+
+    public ReviewPaper getPaper(String paper_id){
+        return reviewPaperDao.findPaper(paper_id);
+    }
+
+    public List<ReviewReport> getReportsByPaperId(String paper_id){
+        return reviewReportDao.getReportsByPaperId(paper_id);
+    }
+
+    public List<ReviewPaper> getPapers(){
+        return reviewPaperDao.findPapers();
+    }
+
+    public JSONObject updatePaper(String paperId,String paperJson){
+        JSONObject object = new JSONObject();
+        String result=checkPaper(paperJson);
+        if(!result.equals("success")){
+            object.put("status","fail");
+            object.put("message",result);
+            return object;
+        }
+        try {
+            JSONObject jsonObject = new JSONObject(paperJson);
+            ReviewPaperVO reviewPaperVO = getReviewPaperVO(jsonObject);
+            ReviewPaper reviewPaper = reviewPaperDao.findPaper(paperId);
+            reviewPaper.setReviewPaper(reviewPaperVO);
+            reviewPaperDao.save(reviewPaper);  //实际是update
+            reviewPaperJsonDao.update(paperId, paperJson);
+            reviewReportDao.removeByPaper(paperId);
+            itemDao.removeByPaper(paperId);
+            saveReportAndItem(paperId, jsonObject);
+            object.put("status","success");
+            object.put("paperId",paperId);
+        }catch (Exception e){
+            object.put("status","fail");
+            object.put("message",e.getMessage());
+    }
+        return object;
+    }
+
+    public JSONObject savePaper(String paperJson){
+        JSONObject object = new JSONObject();
+        String result=checkPaper(paperJson);
+        if(!result.equals("success")){
+            object.put("status","fail");
+            object.put("message",result);
+            return object;
+        }
+        try {
+            JSONObject jsonObject = new JSONObject(paperJson);
+            ReviewPaperVO reviewPaperVO=getReviewPaperVO(jsonObject);
+            String paperId = reviewPaperDao.save(new ReviewPaper(reviewPaperVO));
+            reviewPaperJsonDao.save(new ReviewPaperJson(paperId,paperJson));
+            saveReportAndItem(paperId,jsonObject);
+            object.put("status","success");
+            object.put("paperId",paperId);
+        }catch (Exception e){
+            object.put("status","fail");
+            object.put("message",e.getMessage());
+            //TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+        }
+        return object;
+    }
+
+    private void saveReportAndItem(String paperId,JSONObject jsonObject)throws Exception{
+        try {
+            JSONArray reportArray = jsonObject.getJSONArray("report_list");
+            HashMap<Integer, String> reportIndexToId = new HashMap<>();
+            for (int i = 0; i < reportArray.length(); i++) {
+                JSONObject reportObject = reportArray.getJSONObject(i);
+                int reportIndex = reportObject.getInt("index");
+                String id = saveReport(reportObject, paperId);
+                reportIndexToId.put(reportIndex, id);
+            }
+
+            JSONArray itemGroupArray = jsonObject.getJSONArray("item_group_list");
+            //save item
+            //item index-id
+            HashMap<String, Integer> itemIdToOptionNum = new HashMap<>();
+            HashMap<Integer, String> itemIndexToId = new HashMap<>();
+            for (int i = 0; i < itemGroupArray.length(); i++) {
+                JSONObject itemGroupObject = itemGroupArray.getJSONObject(i);
+                saveItem(itemGroupObject, paperId, itemIdToOptionNum, reportIndexToId, itemIndexToId);
+            }
+        }catch (Exception e){
+            throw new Exception(e.getMessage());
+        }
+    }
+
+    private ReviewPaperVO getReviewPaperVO(JSONObject jsonObject)throws Exception{
+        try {
+            String description = jsonObject.getString("description");
+            String name = jsonObject.getString("name");
+            String time = jsonObject.getString("create_time");
+            String type = jsonObject.getString("type");
+            String applicationLocation = jsonObject.getString("application_url");
+            String requirementLocation = jsonObject.getString("requirement_url");
+            ReviewPaperVO reviewPaperVO=new ReviewPaperVO(description, name, time, type, applicationLocation, requirementLocation);
+            return reviewPaperVO;
+        }catch (Exception e){
+            throw new Exception(e.getMessage());
+        }
+    }
+
+    private String saveReport(JSONObject reportObject,String paper_id)throws Exception{
+        try {
+            JSONArray imgArray=reportObject.getJSONArray("img_url");
+            List<String> img_urls=new ArrayList<>();
+            for(int i=0;i<imgArray.length();i++){
+                img_urls.add(String.valueOf(imgArray.get(i)));
+            }
+            JSONArray fileArray=reportObject.getJSONArray("file_url");
+            List<String> file_urls=new ArrayList<>();
+            for(int i=0;i<fileArray.length();i++){
+                file_urls.add(String.valueOf(fileArray.get(i)));
+            }
+            String name=reportObject.getString("name");
+            String description=reportObject.getString("description");
+            String original_id=reportObject.getString("original_id");
+            ReviewReport reviewReport=new ReviewReport(original_id,paper_id,name,description,img_urls,file_urls);
+            return reviewReportDao.save(reviewReport);
+        }catch (Exception e){
+            throw new Exception("report 创建失败: "+e.getMessage());
+        }
+    }
+
+    private void saveItem(JSONObject itemGroupObject,String paper_id,HashMap<String,Integer>item_id_to_option_num,HashMap<Integer,String>report_index_to_id,HashMap<Integer,String>item_index_to_id)throws Exception{
+        //List<String>itemIds=new ArrayList<>();
+        List<String> reportIds=new ArrayList<>();
+        try {
+            JSONArray reportArray=itemGroupObject.getJSONArray("report_list");
+            for (int j=0;j<reportArray.length();j++){
+                int reportIndex= Integer.parseInt(String.valueOf(reportArray.get(j)));
+                reportIds.add(report_index_to_id.get(reportIndex));
+            }
+            JSONArray itemArray=itemGroupObject.getJSONArray("item_list");
+
+            for (int j=0;j<itemArray.length();j++){
+                JSONObject itemObject=itemArray.getJSONObject(j);
+                int index=itemObject.getInt("index");
+                Boolean isRequired=itemObject.getBoolean("is_required");
+                String description=itemObject.getString("description");
+                String type=itemObject.getString("type");
+                List<String>options=new ArrayList<>();
+                JSONArray optionArray=itemObject.getJSONArray("options");
+                for(int k=0;k<optionArray.length();k++){
+                    options.add(String.valueOf(optionArray.get(k)));
+                }
+                ReviewItem item=new ReviewItem(paper_id,isRequired,options,description,reportIds,type);
+                String item_id = itemDao.saveItem(item);
+//				itemIds.add(item_id);
+//				item_id_to_option_num.put(item_id,options.size());
+                item_index_to_id.put(index,item_id);
+            }
+        }catch (Exception e){
+            throw new Exception("item 创建失败: "+e.getMessage());
+        }
+//		try {
+//			for(int j=0;j<reportIds.size();j++){
+//				ReviewReport report=reviewReportDao.findReviewReport(reportIds.get(j));
+//				report.setItem_id(itemIds);
+//				reviewReportDao.save(report);
+//			}
+//		}catch (Exception e){
+//			throw new Exception("item创建失败,请检查配置的report_index是否存在! ");
+//		}
+    }
+
+    public String checkPaper(String paperJson){
+        String result="success";
+        try {
+            JSONObject jsonObject=new JSONObject(paperJson);
+            String description=jsonObject.getString("description");
+            String name=jsonObject.getString("name");
+            String time=jsonObject.getString("create_time");
+            String type=jsonObject.getString("type");
+            String application_location=jsonObject.getString("application_url");
+            String requirement_location=jsonObject.getString("requirement_url");
+
+            Set<Integer> reportIndexs=new HashSet<>();
+            JSONArray reportList=jsonObject.getJSONArray("report_list");
+            for(int i=0;i<reportList.length();i++){
+                JSONObject report=reportList.getJSONObject(i);
+                int index=report.getInt("index");
+                if(reportIndexs.contains(index)){
+                    throw new Exception("report_list中report的index不能重复");
+                }else{
+                    reportIndexs.add(index);
+                }
+                String reportName=report.getString("name");
+                String originalId=report.getString("original_id");
+                String reportDescription=report.getString("description");
+                JSONArray imgUrls=report.getJSONArray("img_url");
+                JSONArray fileUrls=report.getJSONArray("file_url");
+            }
+
+            JSONArray itemGroupArray=jsonObject.getJSONArray("item_group_list");
+            Set<Integer>itemReportIndexs=new HashSet<>();
+
+            for(int i=0;i<itemGroupArray.length();i++){
+                Set<Integer>itemIndexs=new HashSet<>();
+                JSONObject itemGroup=itemGroupArray.getJSONObject(i);
+                JSONArray itemReportList=itemGroup.getJSONArray("report_list");
+                for(int j=0;j<itemReportList.length();j++){
+                    int reportIndex=Integer.parseInt(String.valueOf(itemReportList.get(j)));
+                    if(!reportIndexs.contains(reportIndex)){
+                        throw new Exception("item_group_list中包含不存在的report ");
+                    }else{
+                        if(itemReportIndexs.contains(reportIndex)){
+                            throw new Exception("item_group_list中的report不能重复");
+                        }
+                        else{
+                            itemReportIndexs.add(reportIndex);
+                        }
+                    }
+                }
+                JSONArray itemList=itemGroup.getJSONArray("item_list");
+                for(int j=0;j<itemList.length();j++){
+                    JSONObject item=itemList.getJSONObject(j);
+                    int index=item.getInt("index");
+                    if(itemIndexs.contains(index)){
+                        throw new Exception("item_group_list中的item_index不能重复");
+                    }
+                    else {
+                        itemIndexs.add(index);
+                    }
+                    String itemDescription=item.getString("description");
+                    Boolean isRequired=item.getBoolean("is_required");
+                    String itemType=item.getString("type");
+                    JSONArray options=item.getJSONArray("options");
+                }
+            }
+
+
+//			JSONArray groupList=jsonObject.getJSONArray("group_list");
+//			Set<String>workers=new HashSet<>();
+//			for(int i=0;i<groupList.length();i++){
+//				JSONObject groupObject=groupList.getJSONObject(i);
+//				String groupName=groupObject.getString("name");
+//				String groupDescription=groupObject.getString("description");
+//				JSONArray workerList=groupObject.getJSONArray("worker_list");
+//				for(int j=0;j<workerList.length();j++){
+//					String workerId=String.valueOf(workerList.get(j));
+//					if(workers.contains(workerId)){
+//						throw new Exception("同一个worker不能属于不同的group");
+//					}else{
+//						workers.add(workerId);
+//					}
+//				}
+//				JSONArray workerReportList=groupObject.getJSONArray("report_list");
+//				for(int j=0;j<workerReportList.length();j++){
+//					int reportIndex= Integer.parseInt(String.valueOf(workerReportList.get(j)));
+//					if(!reportIndexs.contains(reportIndex)){
+//						throw new Exception("group_report_list中包含不存在的report ");
+//					}
+//				}
+//			}
+        }catch (Exception e){
+            return e.getMessage();
+        }
+        return result;
+    }
+
+    public boolean delPaper(String paperId){
+        try {
+            reviewPaperDao.remove(paperId);
+            reviewPaperJsonDao.remove(paperId);
+            reviewReportDao.removeByPaper(paperId);
+            itemDao.removeByPaper(paperId);
+            return true;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return false;
+        }
+    }
+}
+

+ 0 - 21
src/main/java/edu/nju/service/ReviewService.java

@@ -35,13 +35,6 @@ public class ReviewService {
         return jobDao.findJobs();
         return jobDao.findJobs();
     }
     }
 
 
-    public ReviewPaperJson getReviewPaperJson(String paper_id) {
-        return reviewPaperJsonDao.findJsonByPaper(paper_id);
-    }
-
-//    public String delJob(String job_id){
-//
-//    }
 
 
     public List<ReviewAnswer> getAnswersByReportWorker(String report_id, String worker_id){
     public List<ReviewAnswer> getAnswersByReportWorker(String report_id, String worker_id){
         return answerDao.findAnswersByReportWorker(report_id, worker_id);
         return answerDao.findAnswersByReportWorker(report_id, worker_id);
@@ -54,8 +47,6 @@ public class ReviewService {
         return answerDao.findAnswerByWorkerItem(report_id,worker_id, item_id);
         return answerDao.findAnswerByWorkerItem(report_id,worker_id, item_id);
     }
     }
 
 
-
-
     public boolean updateAnswer(String id, List<String>answers,List<String> file_url){
     public boolean updateAnswer(String id, List<String>answers,List<String> file_url){
         try {
         try {
             if(id == null || id.equals("undefined")) { return false; }
             if(id == null || id.equals("undefined")) { return false; }
@@ -105,16 +96,4 @@ public class ReviewService {
         return groupDao.save(group);
         return groupDao.save(group);
     }
     }
 
 
-    public ReviewPaper getPaper(String paper_id){
-        return reviewPaperDao.findPaper(paper_id);
-    }
-
-    public List<ReviewReport> getReportsByPaperId(String paper_id){
-        return reportDao.getReportsByPaperId(paper_id);
-    }
-
-    public List<ReviewPaper> getPapers(){
-        return reviewPaperDao.findPapers();
-    }
-
 }
 }

+ 77 - 0
src/main/java/edu/nju/vo/ReviewPaperVO.java

@@ -0,0 +1,77 @@
+package edu.nju.vo;
+
+import org.springframework.stereotype.Component;
+
+
+public class ReviewPaperVO {
+
+    private String description;
+
+    private String name;
+
+    private String create_time;
+
+    private String type;
+
+    private String application_location;
+
+    private String requirement_location;
+
+    public ReviewPaperVO(String description, String name, String create_time, String type, String application_location,String requirement_location) {
+        this.description = description;
+        this.name = name;
+        this.create_time = create_time;
+        this.type = type;
+        this.application_location = application_location;
+        this.requirement_location = requirement_location;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getCreate_time() {
+        return create_time;
+    }
+
+    public void setCreate_time(String create_time) {
+        this.create_time = create_time;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public String getApplication_location() {
+        return application_location;
+    }
+
+    public void setApplication_location(String application_location) {
+        this.application_location = application_location;
+    }
+
+    public String getRequirement_location() {
+        return requirement_location;
+    }
+
+    public void setRequirement_location(String requirement_location) {
+        this.requirement_location = requirement_location;
+    }
+}
+

+ 8 - 8
src/main/java/paperjson

@@ -1,5 +1,5 @@
 {
 {
-	"description": "job描述",
+	"description": "job描述ddd",
 	"name": "jobname",
 	"name": "jobname",
 	"create_time":"2019/10/02",
 	"create_time":"2019/10/02",
 	"type":"漏洞扫描分析",
 	"type":"漏洞扫描分析",
@@ -9,25 +9,25 @@
 		"report_list": [0,1],
 		"report_list": [0,1],
 		"item_list": [{
 		"item_list": [{
             "index": 0,
             "index": 0,
-            "description":"des1",
+            "description":"des1dd",
         	"is_required":true,
         	"is_required":true,
         	"type":"File",
         	"type":"File",
         	"options":[]
         	"options":[]
         },{
         },{
             "index": 1,
             "index": 1,
-            "description":"des2",
+            "description":"des2dd",
             "is_required":true,
             "is_required":true,
             "type":"Single",
             "type":"Single",
             "options":["op1","op2"]
             "options":["op1","op2"]
         },{
         },{
             "index": 2,
             "index": 2,
-            "description":"des3",
+            "description":"des3dd",
             "is_required":true,
             "is_required":true,
             "type":"Multiple",
             "type":"Multiple",
             "options":["op1","op2"]
             "options":["op1","op2"]
         },{
         },{
             "index": 3,
             "index": 3,
-            "description":"des4",
+            "description":"des4dd",
             "is_required":true,
             "is_required":true,
             "type":"Description",
             "type":"Description",
             "options":[]
             "options":[]
@@ -35,21 +35,21 @@
 	}],
 	}],
     "report_list":[{
     "report_list":[{
         "index":0,
         "index":0,
-        "name":"name1",
+        "name":"name111",
         "original_id":"id1",
         "original_id":"id1",
         "description":"des1",
         "description":"des1",
         "img_url":["url1","url2"],
         "img_url":["url1","url2"],
         "file_url":["url1","url2"],
         "file_url":["url1","url2"],
     },{
     },{
         "index":1,
         "index":1,
-        "name":"name2",
+        "name":"name2222",
         "original_id":"id2",
         "original_id":"id2",
         "description":"des2",
         "description":"des2",
         "img_url":["url1","url2"],
         "img_url":["url1","url2"],
         "file_url":["url1","url2"],
         "file_url":["url1","url2"],
     },{
     },{
         "index":2,
         "index":2,
-        "name":"name3",
+        "name":"name3333",
         "original_id":"id3",
         "original_id":"id3",
         "description":"des3",
         "description":"des3",
         "img_url":["url1","url2"],
         "img_url":["url1","url2"],