package edu.nju.controller; import java.io.IOException; import java.io.PrintWriter; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletResponse; import edu.nju.model.AnalysePeopleVO; import edu.nju.model.AnalyseVO; import edu.nju.model.AnalyseVO2; import edu.nju.model.BugDataVO; import edu.nju.model.HistoricalDataVO; import edu.nju.util.BlockChainAspect; 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.ResponseBody; import edu.nju.service.AnalyzeService; import edu.nju.service.ReportService; @Controller @RequestMapping(value = "/analyze") @CrossOrigin(origins = "*", maxAge = 3600, allowCredentials = "true") public class AnalyzeController { @Autowired AnalyzeService aservice; @Autowired ReportService rservice; @Autowired BlockChainAspect blockChainAspect; //根据用例获取所有有效bug @RequestMapping(value = "/valid") @ResponseBody public void getValid(String case_take_id, HttpServletResponse response) { try { PrintWriter out = response.getWriter(); JSONObject result = new JSONObject(); List list = aservice.getValid(case_take_id); result.put("Count", list.size()); result.put("Detail", new JSONArray(list)); out.print(result); out.flush(); out.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } //根据用例获取所有有效bug @RequestMapping(value = "/validByBugId") @ResponseBody public void getValidByBugId(String id, HttpServletResponse response) { try { PrintWriter out = response.getWriter(); JSONObject result = new JSONObject(); List list = aservice.getValidByBugId(id); result.put("Count", list.size()); result.put("Detail", new JSONArray(list)); out.print(result); out.flush(); out.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } //根据用例获取所有有效bug @RequestMapping(value = "/bugData") @ResponseBody public List getBugDataVO(String case_take_id) { return aservice.getBugDataVO(case_take_id); } //获取所有有点赞记录的bug @RequestMapping(value = "/thums") @ResponseBody public void getThums(String case_take_id, HttpServletResponse response) { try { JSONObject result = new JSONObject(); PrintWriter out = response.getWriter(); Map map = aservice.getThums(case_take_id); result.put("Count", map.size()); result.put("Detail", new JSONObject(map)); out.print(result); out.flush(); out.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * 47.99.140.117:9001/Bug/api/analyze/scores * * @param case_take_id * caseId - taskId,示例1632-2927 * @return [{"名字":"庄坤涛","report_id":"10010000035757","报告得分":28,"审查得分":4,"worker_id":"39669"}] */ @RequestMapping(value = "/scores") @ResponseBody public void getScores(String case_take_id, HttpServletResponse response) { try { PrintWriter out = response.getWriter(); out.print(aservice.getScores(case_take_id)); out.flush(); out.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * 47.99.140.117:9001/Bug/api/analyze/newScores * * @param case_take_id * caseId - taskId,示例1632-2927 * @return [{"名字":"庄坤涛","report_id":"10010000035757","报告得分":28,"审查得分":4,"worker_id":"39669"}] */ @RequestMapping(value = "/newScores") @ResponseBody public void getNewScores(String case_take_id, HttpServletResponse response) { try { PrintWriter out = response.getWriter(); out.print(aservice.getNewScores(aservice.getScores(case_take_id))); out.flush(); out.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } //获取所有的参与用户,这个方法之前写的,ms有点问题啊 @RequestMapping(value = "/users") @ResponseBody public void getUsers(String case_take_id, HttpServletResponse response) { try { PrintWriter out = response.getWriter(); out.print(new JSONArray(aservice.getReports(case_take_id))); out.flush(); out.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } //真正获取所有的参与用户 @RequestMapping(value = "/workers") @ResponseBody public List getUserss(Long examId) { return aservice.getUsers(String.valueOf(examId)); } //获取指定bug的打分等级 @RequestMapping(value = "/grade") @ResponseBody public void getGrade(String id, HttpServletResponse response) { try { JSONObject result = new JSONObject(); result.put("grade", aservice.getGrade(id)); PrintWriter out = response.getWriter(); out.print(result); out.flush(); out.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } //存储单个bug的打分等级 @RequestMapping(value = "/save") @ResponseBody public void saveGrade(String id, String grade, HttpServletResponse response) { try { JSONObject result = new JSONObject(); if(aservice.saveGrade(id, Integer.parseInt(grade))) {result.put("status", "200");} else {result.put("status", "500");} PrintWriter out = response.getWriter(); out.print(result); out.flush(); out.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } @RequestMapping(value = "/saveSimiliar") @ResponseBody public void saveSimiliarGrade(String id, String grade,String similiarBug, HttpServletResponse response) { try { JSONObject result = new JSONObject(); if(aservice.saveSimiliarGrade(id, Integer.parseInt(grade),similiarBug)) {result.put("status", "200");} else {result.put("status", "500");} PrintWriter out = response.getWriter(); out.print(result); out.flush(); out.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } @RequestMapping(value = "/saveByWorker") @ResponseBody public void saveGradeByWorker(String id,String worker_id, String grade, HttpServletResponse response) { try { JSONObject result = new JSONObject(); if(aservice.saveGradeByWorker(id, worker_id,Integer.parseInt(grade))) {result.put("status", "200");} else {result.put("status", "500");} PrintWriter out = response.getWriter(); out.print(result); out.flush(); out.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } //获取页面和种类的分布情况 @RequestMapping(value = "/bugDetail") @ResponseBody public void getDetail(String case_take_id, HttpServletResponse response) { try { PrintWriter out = response.getWriter(); out.print(aservice.getCaseDetail(case_take_id)); out.flush(); out.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } //获取所有打分等级 @RequestMapping(value = "/allGrades") @ResponseBody public void getAllGrades(String case_take_id, HttpServletResponse response) { try { JSONObject result = new JSONObject(); Map map = aservice.getAllGrades(case_take_id); result.put("Count", map.size()); result.put("Detail", new JSONObject(map)); PrintWriter out = response.getWriter(); out.print(result); out.flush(); out.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } //判断哪些还没有打分,split后面是用例表中不存在的bug @RequestMapping(value = "/diff") @ResponseBody public void getDiff(String case_take_id, HttpServletResponse response) { try { PrintWriter out = response.getWriter(); JSONObject result = new JSONObject(); List list = aservice.getDiff(case_take_id); result.put("Count", list.size()); result.put("Detail", new JSONArray(list)); out.print(result); out.flush(); out.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } //获取路径信息 @RequestMapping(value = "/path") @ResponseBody public void getUserPath(String case_take_id, String report_id, HttpServletResponse response) { try { PrintWriter out = response.getWriter(); JSONObject result = new JSONObject(); result.put("all", filter(aservice.getBugDetail(case_take_id))); result.put("self", filter(rservice.getUserPath(report_id, case_take_id))); out.print(result); out.flush(); out.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } private Map filter(Map maps) { Map result = new HashMap(); for(Map.Entry entry : maps.entrySet()) { String[] pages = entry.getKey().split("-"); if(pages.length > 0) { String key = pages[pages.length - 1]; result.put(key, result.getOrDefault(key, 0) + entry.getValue()); } } return result; } @RequestMapping(value = "/afterSimilarBug") @ResponseBody public void getAfterSimilarBug(String bug_id, HttpServletResponse response){ try { PrintWriter out = response.getWriter(); JSONObject result = new JSONObject(); result.put("bugList",aservice.getAfterSimilarBug(bug_id)); out.print(result); out.flush(); out.close(); } catch (Exception e) { e.printStackTrace(); } } @RequestMapping(value = "/analyseExam") @ResponseBody public void analyseExam(String caseId, String taskId, HttpServletResponse response){ try { PrintWriter out = response.getWriter(); AnalyseVO analyseVO=aservice.getReviewAnalyseVO(caseId, taskId); out.print(new JSONObject(analyseVO)); out.flush(); out.close(); } catch (Exception e) { e.printStackTrace(); } } /** * todo 引进 guvva 来做缓存 * @param caseId * @param taskId * @param workId * @param response */ @RequestMapping(value = "/analysePeople") @ResponseBody public void analyseTask(String caseId, String taskId, String workId , HttpServletResponse response){ try { PrintWriter out = response.getWriter(); AnalysePeopleVO analyseVO=aservice.getReviewAnalysePeopleVO(caseId, taskId,workId); out.print(new JSONObject(analyseVO)); out.flush(); out.close(); } catch (Exception e) { e.printStackTrace(); } } @RequestMapping(value = "/historicalData") @ResponseBody public HistoricalDataVO getHistoricalData(Long workerId,int caseTypeId){ return aservice.getHistoricalData(workerId, caseTypeId); } @RequestMapping(value = "/uploadTestReportToBlockChain") @ResponseBody public void uploadTestReport(String bug_id,HttpServletResponse response){ try { PrintWriter out = response.getWriter(); JSONObject result = new JSONObject(); if (blockChainAspect.uploadTestReportInfoToBlockChain(bug_id)) { result.put("status","200"); }else{ result.put("status","500"); } out.print(result); out.flush(); out.close(); }catch (IOException e){ e.printStackTrace(); } } @RequestMapping(value = "/analyseExam2") @ResponseBody public void analyseExam2(String caseId, String taskId, HttpServletResponse response){ try { PrintWriter out = response.getWriter(); AnalyseVO2 analyseVO=aservice.getReviewAnalyseVO2(caseId, taskId); out.print(new JSONObject(analyseVO)); out.flush(); out.close(); } catch (Exception e) { e.printStackTrace(); } } }