xujiawei 5 years ago
parent
commit
a23a12df64

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

@@ -15,6 +15,12 @@ public class JobDao {
     @Autowired
     private MongoOperations mongoOperations;
 
+    //save存在则更新,不存在则插入
+    public String save(Job job) {
+        mongoOperations.save(job);
+        return job.getId();
+    }
+
     //id查询,find查询所有
     public Job findJob(String id){
         Query query = new Query();

+ 11 - 1
src/main/java/edu/nju/entities/Answer.java

@@ -20,11 +20,14 @@ public class Answer implements java.io.Serializable{
 
     private String worker_id;
 
-    public Answer(String id, String item_id, List<String> answers, String worker_id) {
+    private String job_id;
+
+    public Answer(String id, String item_id, List<String> answers, String worker_id, String job_id) {
         this.id = id;
         this.item_id = item_id;
         this.answers = answers;
         this.worker_id = worker_id;
+        this.job_id = job_id;
     }
 
 
@@ -60,6 +63,13 @@ public class Answer implements java.io.Serializable{
         this.worker_id = worker_id;
     }
 
+    public String getJob_id() {
+        return job_id;
+    }
+
+    public void setJob_id(String job_id) {
+        this.job_id = job_id;
+    }
 
 
 }

+ 1 - 2
src/main/java/edu/nju/entities/Item.java

@@ -33,8 +33,7 @@ public class Item implements java.io.Serializable {
     private List<String> options;
 
     @PersistenceConstructor
-    public Item(String id, String description, List<String> img_urls, boolean isRequired, boolean isMultiple, List<String> attachment_locations, List<String> options, String job_id) {
-        this.id = id;
+    public Item(String description, List<String> img_urls, boolean isRequired, boolean isMultiple, List<String> attachment_locations, List<String> options, String job_id) {
         this.description = description;
         this.img_urls = img_urls;
         this.isRequired = isRequired;

+ 7 - 8
src/main/java/edu/nju/entities/Job.java

@@ -11,7 +11,7 @@ public class Job implements java.io.Serializable{
     @Id
     private String id;
 
-    private String desciption;
+    private String description;
 
     private String name;
 
@@ -29,9 +29,8 @@ public class Job implements java.io.Serializable{
 
     private String log_location;
 
-    public Job(String id, String desciption, String name, String create_time_millis, String device_model, String device_brand, String device_os, String script_location, String report_location, String log_location) {
-        this.id = id;
-        this.desciption = desciption;
+    public Job(String description, String name, String create_time_millis, String device_model, String device_brand, String device_os, String script_location, String report_location, String log_location) {
+        this.description = description;
         this.name = name;
         this.create_time_millis = create_time_millis;
         this.device_model = device_model;
@@ -50,12 +49,12 @@ public class Job implements java.io.Serializable{
         this.id = id;
     }
 
-    public String getDesciption() {
-        return desciption;
+    public String getDescription() {
+        return description;
     }
 
-    public void setDesciption(String desciption) {
-        this.desciption = desciption;
+    public void setDescription(String description) {
+        this.description = description;
     }
 
     public String getName() {

+ 133 - 19
src/main/java/edu/nju/service/ExtraService.java

@@ -2,16 +2,14 @@ package edu.nju.service;
 
 import java.util.*;
 
+import com.google.gson.JsonArray;
+import edu.nju.dao.*;
 import edu.nju.entities.*;
 import org.json.JSONArray;
 import org.json.JSONObject;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import edu.nju.dao.ReportDao;
-import edu.nju.dao.BugDao;
-import edu.nju.dao.ExamDao;
-import edu.nju.dao.TestCaseDao;
 import edu.nju.util.ExcelToJson;
 
 @Service
@@ -28,6 +26,12 @@ public class ExtraService {
 	
 	@Autowired
 	BugDao bugDao;
+
+	@Autowired
+	JobDao jobDao;
+
+	@Autowired
+	ItemDao itemDao;
 	
 	//测试用例相关
 	public String saveTestCase(String report_id, String name, String front, String behind, String description) {
@@ -135,41 +139,151 @@ public class ExtraService {
 		JSONObject jsonObject=new JSONObject(jobJson);
 		String description=jsonObject.getString("description");
 		String name=jsonObject.getString("name");
-		String create_time_millis=Long.toString(System.currentTimeMillis());
-
-		//todo save job, item-user分组
-
-		saveItem(jsonObject.getJSONArray("itemList"),"111");
-
-		return null;
-
+//		String create_time_millis=Long.toString(System.currentTimeMillis());
 
+		String job_id=jobDao.save(new Job(description,name,Long.toString(System.currentTimeMillis()),"","","","","",""));
 
+		JSONArray itemArray=jsonObject.getJSONArray("itemList");
+		//save item
+		//item index-id
+		HashMap<String,String> item_index_to_id=new HashMap<>();
+		for(int i=0;i<itemArray.length();i++) {
+			JSONObject itemObject = itemArray.getJSONObject(i);
+			String item_id=saveItem(itemObject,job_id);
+			String item_index=itemObject.getString("index");
+			item_index_to_id.put(item_index,item_id);
+		}
 
+		//worker_id-item_id_list
+		JSONArray workerArray=jsonObject.getJSONArray("workerList");
+		createWorkerToItem(item_index_to_id,workerArray);
 
+		return job_id;
 
 	}
 
-	private void saveItem(JSONArray itemArray,String job_id){
-		for(int i=0;i<itemArray.length();i++){
-			JSONObject itemObject=itemArray.getJSONObject(i);
+	private String saveItem(JSONObject itemObject,String job_id){
+
+//			JSONObject itemObject=itemArray.getJSONObject(i);
 			String description=itemObject.getString("description");
-			Set<String> img_urls=new HashSet<>();
+			List<String> img_urls=new ArrayList<>();
 			JSONArray imgUrlArray=itemObject.getJSONArray("img_urls");
 			for (int j=0;j<imgUrlArray.length();j++){
-				img_urls.add(imgUrlArray.getString(i));
+				JSONObject imgUrlObject=imgUrlArray.getJSONObject(j);
+				img_urls.add(imgUrlObject.getString("url"));
 			}
 			boolean isRequired=Boolean.parseBoolean(itemObject.getString("isRequired"));
 			boolean isMultiple=Boolean.parseBoolean(itemObject.getString("isMultiple"));
-			//todo files, options
-
+			List<String> file_urls=new ArrayList<>();
+			JSONArray fileArray=itemObject.getJSONArray("file_urls");
+//			System.out.println(fileArray);
+			for (int j=0;j<fileArray.length();j++){
+				JSONObject fileObject=fileArray.getJSONObject(j);
+//				System.out.println(fileObject.getString("url"));
+				file_urls.add(fileObject.getString("url"));
 
+			}
 
+			List<String>  options=new ArrayList<>();
+			JSONArray optionArray=itemObject.getJSONArray("options");
+//			System.out.println(optionArray);
+			for (int j=0;j<optionArray.length();j++){
+				JSONObject optionObject=optionArray.getJSONObject(j);
+//				System.out.println(optionObject.getString("option"));
+				options.add(optionObject.getString("option"));
+			}
+			Item item=new Item(description,img_urls,isRequired,isMultiple,file_urls,options,job_id);
+			return itemDao.saveItem(item);
 
 
+	}
 
+	private void createWorkerToItem(HashMap<String,String> item_index_to_id,JSONArray workerArray){
+		HashMap<String,List<String>> worker_to_item=new HashMap<>();
 
+		for(int i=0;i<workerArray.length();i++){
+			JSONObject workerObject=workerArray.getJSONObject(i);
+			String worker_id=workerObject.getString("worker_id");
+			JSONArray itemIndexArray=workerObject.getJSONArray("item_index_list");
+			List<String> itemIdList=new ArrayList<>();
+			for (int j=0;j<itemIndexArray.length();j++){
+				JSONObject itemIndexObject=itemIndexArray.getJSONObject(j);
+				itemIdList.add(item_index_to_id.get(itemIndexObject.getString("index")));
+			}
+			worker_to_item.put(worker_id,itemIdList);
 		}
 
+		//todo worker-to-item
 	}
+
+
+//	public static void main(String[] args) {
+//		System.out.println("11");
+////		String jobJson = "{\"description\":\"job描述\",\"name\":\"jobname\",\"itemList\":[{\"description\":\"itemdesc\",\"img_urls\":[{\"url\":\"imgurl1\"},{\"url\":\"imgurl2\"},{\"url\":\"imgurl3\"}]}],\"isReuqired\":\"true\",\"isMutilple\":\"true\",\"file_urls\":[{\"url\":\"fileurl1\"},{\"url\":\"fileurl2\"},{\"url\":\"fileurl3\"}],\"options\":[{\"option\":\"option1\"},{\"option\":\"option2\"},{\"option\":\"option3\"}]}";
+////		String jobJson="{\"description\":\"job描述\",\"name\":\"jobname\",\"itemList\":[{\"description\":\"itemdesc1\",\"img_urls\":[{\"url\":\"imgurl1\"},{\"url\":\"imgurl2\"},{\"url\":\"imgurl3\"},{\"description\":\"itemdesc2\",\"img_urls\":[{\"url\":\"imgurl1\"},{\"url\":\"imgurl2\"},{\"url\":\"imgurl3\"},{\"description\":\"itemdesc3\",\"img_urls\":[{\"url\":\"imgurl1\"},{\"url\":\"imgurl2\"},{\"url\":\"imgurl3\"}]}],\"isReuqired\":\"true\",\"isMutilple\":\"true\",\"file_urls\":[{\"url\":\"fileurl1\"},{\"url\":\"fileurl2\"},{\"url\":\"fileurl3\"}],\"options\":[{\"option\":\"option1\"},{\"option\":\"option2\"},{\"option\":\"option3\"}]}";
+////		String jobJson="{\"description\":\"job描述\",\"name\":\"jobname\",\"itemList\":[{\"description\":\"itemdesc1\",\"img_urls\":[{\"url\":\"imgurl1\"},{\"url\":\"imgurl2\"},{\"url\":\"imgurl3\"}]},{\"description\":\"itemdesc2\",\"img_urls\":[{\"url\":\"imgurl1\"},{\"url\":\"imgurl2\"},{\"url\":\"imgurl3\"}]},{\"description\":\"itemdesc3\",\"img_urls\":[{\"url\":\"imgurl1\"},{\"url\":\"imgurl2\"},{\"url\":\"imgurl3\"}]}],\"isReuqired\":\"true\",\"isMutilple\":\"true\",\"file_urls\":[{\"url\":\"fileurl1\"},{\"url\":\"fileurl2\"},{\"url\":\"fileurl3\"}],\"options\":[{\"option\":\"option1\"},{\"option\":\"option2\"},{\"option\":\"option3\"}]}";
+////		String jobJson="{\"description\":\"job描述\",\"name\":\"jobname\",\"itemList\":[{\"description\":\"itemdesc1\",\"img_urls\":[{\"url\":\"imgurl1\"},{\"url\":\"imgurl2\"},{\"url\":\"imgurl3\"}],\"isRequired\":\"true\",\"isMultiple\":\"true\",\"file_urls\":[{\"url\":\"fileurl1\"},{\"url\":\"fileurl2\"},{\"url\":\"fileurl3\"}],\"options\":[{\"option\":\"option1\"},{\"option\":\"option2\"},{\"option\":\"option3\"}]},{\"description\":\"itemdesc2\",\"img_urls\":[{\"url\":\"imgurl1\"},{\"url\":\"imgurl2\"},{\"url\":\"imgurl3\"}],\"isReuqired\":\"true\",\"isMutilple\":\"true\",\"file_urls\":[{\"url\":\"fileurl1\"},{\"url\":\"fileurl2\"},{\"url\":\"fileurl3\"}],\"options\":[{\"option\":\"option1\"},{\"option\":\"option2\"},{\"option\":\"option3\"}]},{\"description\":\"itemdesc3\",\"img_urls\":[{\"url\":\"imgurl1\"},{\"url\":\"imgurl2\"},{\"url\":\"imgurl3\"}],\"isReuqired\":\"true\",\"isMutilple\":\"true\",\"file_urls\":[{\"url\":\"fileurl1\"},{\"url\":\"fileurl2\"},{\"url\":\"fileurl3\"}],\"options\":[{\"option\":\"option1\"},{\"option\":\"option2\"},{\"option\":\"option3\"}]}]}";
+//		String jobJson="{\"description\":\"job描述\",\"name\":\"jobname\",\"itemList\":[{\"description\":\"itemdesc1\",\"img_urls\":[{\"url\":\"imgurl1\"},{\"url\":\"imgurl2\"},{\"url\":\"imgurl3\"}],\"isRequired\":\"true\",\"isMultiple\":\"false\",\"file_urls\":[{\"url\":\"fileurl1\"},{\"url\":\"fileurl2\"},{\"url\":\"fileurl3\"}],\"options\":[{\"option\":\"option1\"},{\"option\":\"option2\"},{\"option\":\"option3\"}]},{\"description\":\"itemdesc2\",\"img_urls\":[{\"url\":\"imgurl1\"},{\"url\":\"imgurl2\"},{\"url\":\"imgurl3\"}],\"isRequired\":\"true\",\"isMultiple\":\"true\",\"file_urls\":[{\"url\":\"fileurl1\"},{\"url\":\"fileurl2\"},{\"url\":\"fileurl3\"}],\"options\":[{\"option\":\"option1\"},{\"option\":\"option2\"},{\"option\":\"option3\"}]},{\"description\":\"itemdesc3\",\"img_urls\":[{\"url\":\"imgurl1\"},{\"url\":\"imgurl2\"},{\"url\":\"imgurl3\"}],\"isRequired\":\"true\",\"isMultiple\":\"true\",\"file_urls\":[{\"url\":\"fileurl1\"},{\"url\":\"fileurl2\"},{\"url\":\"fileurl3\"}],\"options\":[{\"option\":\"option1\"},{\"option\":\"option2\"},{\"option\":\"option3\"}]}]}";
+//
+//		JSONObject jsonObject = new JSONObject(jobJson);
+//		String description = jsonObject.getString("description");
+//		String name = jsonObject.getString("name");
+//		System.out.println(description);
+//		System.out.println(name);
+//
+////		System.out.println();
+//
+//		JSONArray itemArray = jsonObject.getJSONArray("itemList");
+////		System.out.println(itemArray);
+//		for (int i = 0; i < itemArray.length(); i++) {
+//			JSONObject itemObject = itemArray.getJSONObject(i);
+//
+//			System.out.println(itemObject);
+////			System.out.println(itemObject);
+//
+//			String itemDescription=itemObject.getString("description");
+//			System.out.println(itemDescription);
+//
+////			System.out.println(itemObject.getString("isRequired"));
+//
+//
+//
+//			boolean isRequired=Boolean.parseBoolean(itemObject.getString("isRequired"));
+//			boolean isMultiple=Boolean.parseBoolean(itemObject.getString("isMultiple"));
+//
+//			System.out.println(isRequired);
+//			System.out.println(isMultiple);
+//			List<String> img_urls=new ArrayList<>();
+//			JSONArray imgUrlArray=itemObject.getJSONArray("img_urls");
+//			System.out.println(imgUrlArray);
+//			for (int j=0;j<imgUrlArray.length();j++){
+//				JSONObject imgUrlObject=imgUrlArray.getJSONObject(j);
+//				System.out.println(imgUrlObject.getString("url"));
+//
+//			}
+//
+//
+//			System.out.println(itemObject.keySet());
+//
+//			JSONArray fileArray=itemObject.getJSONArray("file_urls");
+//			System.out.println(fileArray);
+//			for (int j=0;j<fileArray.length();j++){
+//				JSONObject fileObject=fileArray.getJSONObject(j);
+//				System.out.println(fileObject.getString("url"));
+//
+//			}
+//
+//			JSONArray optionArray=itemObject.getJSONArray("options");
+//			System.out.println(optionArray);
+//			for (int j=0;j<optionArray.length();j++){
+//				JSONObject optionObject=optionArray.getJSONObject(j);
+//				System.out.println(optionObject.getString("option"));
+//
+//			}
+//
+//
+//
+//
+//		}
+//	}
 }