|
|
@@ -7,21 +7,29 @@ import cn.iselab.mooctest.site.common.web.ErrorResult;
|
|
|
import cn.iselab.mooctest.site.common.web.ResponseMessage;
|
|
|
import cn.iselab.mooctest.site.common.web.StatusCode;
|
|
|
import cn.iselab.mooctest.site.common.web.SuccessResult;
|
|
|
-import cn.iselab.mooctest.site.models.fromKibug.CaseFromKibug;
|
|
|
+import cn.iselab.mooctest.site.models.CaseExtends;
|
|
|
+import cn.iselab.mooctest.site.models.fromKibug.CaseTake;
|
|
|
+import cn.iselab.mooctest.site.models.fromKibug.ManagerScore;
|
|
|
import cn.iselab.mooctest.site.models.fromKibug.Report;
|
|
|
+import cn.iselab.mooctest.site.models.fromKibug.ScriptAutoResult;
|
|
|
+import cn.iselab.mooctest.site.service.CaseService;
|
|
|
import cn.iselab.mooctest.site.service.fromKibug.KibugCaseService;
|
|
|
import cn.iselab.mooctest.site.service.fromKibug.KibugTaskService;
|
|
|
import cn.iselab.mooctest.site.service.fromKibug.ReportService;
|
|
|
import cn.iselab.mooctest.site.web.data.fromKibug.ReportListItemVO;
|
|
|
+import cn.iselab.mooctest.site.web.data.fromKibug.ReportScoreVO;
|
|
|
import cn.iselab.mooctest.site.web.data.fromKibug.ReportVO;
|
|
|
import cn.iselab.mooctest.site.web.exception.IllegalOperationException;
|
|
|
import cn.iselab.mooctest.site.web.util.Converter;
|
|
|
import com.google.common.collect.Lists;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.data.domain.Page;
|
|
|
+import org.springframework.data.domain.PageRequest;
|
|
|
+import org.springframework.data.domain.Pageable;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
import javax.validation.constraints.NotNull;
|
|
|
-import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
|
|
|
@@ -33,52 +41,49 @@ public class ReportController {
|
|
|
@Autowired
|
|
|
private ReportService reportService;
|
|
|
@Autowired
|
|
|
- private KibugCaseService caseService;
|
|
|
+ private CaseService caseService;
|
|
|
+ @Autowired
|
|
|
+ private KibugCaseService kibugCaseService;
|
|
|
@Autowired
|
|
|
private KibugTaskService taskService;
|
|
|
@Autowired
|
|
|
EventUtil eventUtil;
|
|
|
|
|
|
- /**
|
|
|
- * 查询报告
|
|
|
- * @param caseId
|
|
|
- * @param taskId
|
|
|
- * @param workerId
|
|
|
- * @param page
|
|
|
- * @param count
|
|
|
- * @return
|
|
|
- * @throws Exception
|
|
|
- */
|
|
|
- @RequestMapping(value= UrlConstants.API_KIBUG+"report", method = RequestMethod.GET)
|
|
|
- public Map<String, Object> search(@RequestParam(name = "caseId", required = false) Long caseId,
|
|
|
- @RequestParam(name = "taskId", required = false) Long taskId,
|
|
|
- @RequestParam(name = "workerId", required = false) Long workerId,
|
|
|
- @RequestParam(name = "page", defaultValue = "0") Integer page,
|
|
|
- @RequestParam(name = "count", defaultValue = "10") Integer count) throws Exception {
|
|
|
- List<Report> reportList;
|
|
|
- if (workerId==null) {
|
|
|
- reportList = reportService.listReportMergeByWorker(taskId, caseId, page, count);
|
|
|
- } else {
|
|
|
- reportList = reportService.listReport(taskId, caseId, workerId);
|
|
|
+ @RequestMapping(value= UrlConstants.API_KIBUG+"reports", method = RequestMethod.GET)
|
|
|
+ public Page<ReportListItemVO> search(@RequestParam(name = "caseId", required = false) Long caseId,
|
|
|
+ @RequestParam(name = "taskId", required = false) Long taskId, HttpServletRequest request) throws Exception {
|
|
|
+ String activePage = request.getHeader("activePage");
|
|
|
+ String rowsOnPage = request.getHeader("rowsOnPage");
|
|
|
+ if(activePage == null || rowsOnPage == null) {
|
|
|
+ throw new IllegalArgumentException("缺少分页信息");
|
|
|
}
|
|
|
- List<ReportListItemVO> reportListItemVos = Lists.transform(reportList, item -> {
|
|
|
- return Converter.convert(ReportListItemVO.class, item);
|
|
|
+ Pageable pageable = new PageRequest(Integer.parseInt(activePage) - 1, Integer.parseInt(rowsOnPage));
|
|
|
+ Page<Report> reportPage = reportService.listReport(taskId, caseId,pageable);
|
|
|
+ Page<ReportListItemVO> reportVOPage = reportPage.map(new org.springframework.core.convert.converter.Converter<Report, ReportListItemVO>() {
|
|
|
+ @Override
|
|
|
+ public ReportListItemVO convert(Report report) {
|
|
|
+ return Converter.convert(ReportListItemVO.class,report);
|
|
|
+ }
|
|
|
});
|
|
|
- return SuccessResult.ok(ResponseMessage.List_RESULT, reportListItemVos);
|
|
|
+ return reportVOPage;
|
|
|
+ }
|
|
|
+ @RequestMapping(value= UrlConstants.API_KIBUG+"report", method = RequestMethod.GET)
|
|
|
+ public ReportListItemVO getReportByJob(@RequestParam(name = "caseId", required = false) Long caseId,
|
|
|
+ @RequestParam(name = "taskId", required = false) Long taskId,
|
|
|
+ @RequestParam(name = "workerId", required = false) Long workerId, HttpServletRequest request) throws Exception {
|
|
|
+ Report report = reportService.getReport(taskId,caseId,workerId);
|
|
|
+ if(report==null){
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ ReportListItemVO vo = Converter.convert(ReportListItemVO.class, report);
|
|
|
+ return vo;
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 创建报告
|
|
|
- *
|
|
|
- * @param vo
|
|
|
- * @return
|
|
|
- * @throws Exception
|
|
|
- */
|
|
|
@RequestMapping(value= UrlConstants.API_KIBUG+"report", method = RequestMethod.POST)
|
|
|
public Map<String, Object> create(@RequestBody @NotNull ReportVO vo) throws Exception {
|
|
|
vo.validate();
|
|
|
- CaseFromKibug caseItem = caseService.getCaseById(vo.getCaseId());
|
|
|
- boolean isTaken = caseService.isTaken(vo.getWorkerId(),vo.getCaseId(),vo.getTaskId());
|
|
|
+ CaseExtends caseItem = caseService.getCaseExtendsById(vo.getCaseId());
|
|
|
+ boolean isTaken = kibugCaseService.isTaken(vo.getWorkerId(),vo.getCaseId(),vo.getTaskId());
|
|
|
if (!isTaken) throw new IllegalOperationException("请先选择加入该任务后再上传报告");
|
|
|
|
|
|
boolean isTaskTimeEnd = taskService.isTaskEnd(vo.getTaskId());
|
|
|
@@ -86,32 +91,88 @@ public class ReportController {
|
|
|
return new ErrorResult(StatusCode.TASK_TIME_END);
|
|
|
}
|
|
|
|
|
|
- vo.setApplicationId(caseItem.getApplicationId());
|
|
|
-
|
|
|
- Long reportId = reportService.getFirstReportId(vo.getTaskId(), vo.getCaseId(), vo.getWorkerId());
|
|
|
- if (reportId == null) {
|
|
|
- Report report = reportService.createReport(vo);
|
|
|
- reportId = report.getId();
|
|
|
- //应用测试人数和机型统计
|
|
|
- ReportCreateEvent reportCreateEvent = ReportCreateEvent.create(vo.getApplicationId(), vo.getDeviceBrand(), vo.getDeviceOs());
|
|
|
- eventUtil.post(reportCreateEvent);
|
|
|
- } else {
|
|
|
- vo.setId(reportId);
|
|
|
- reportService.updateReport(vo);
|
|
|
+ vo.setApplicationId(caseItem.getTargetId());
|
|
|
+
|
|
|
+ Report report = reportService.getReport(vo.getTaskId(), vo.getCaseId(), vo.getWorkerId());
|
|
|
+ if(report!=null){
|
|
|
+ throw new IllegalOperationException("report already exist");
|
|
|
}
|
|
|
+ Report newReport = reportService.createReport(vo);
|
|
|
+ long reportId = newReport.getId();
|
|
|
+ //应用测试人数和机型统计
|
|
|
+ ReportCreateEvent reportCreateEvent = ReportCreateEvent.create(caseItem.getTargetId(), vo.getDeviceBrand(), vo.getDeviceOs());
|
|
|
+ eventUtil.post(reportCreateEvent);
|
|
|
+
|
|
|
return SuccessResult.ok(ResponseMessage.ID_RESULT, reportId );
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 删除报告
|
|
|
- *
|
|
|
- * @param reportId
|
|
|
- * @return
|
|
|
- * @throws Exception
|
|
|
- */
|
|
|
+ @RequestMapping(value= UrlConstants.API_KIBUG+"report/{reportId}", method = RequestMethod.GET)
|
|
|
+ public Map<String, Object> get(@PathVariable @NotNull Long reportId) throws Exception {
|
|
|
+ Report report = reportService.getReport(reportId);
|
|
|
+ if (report == null) {
|
|
|
+ throw new IllegalOperationException("report id 错误,查询不到数据");
|
|
|
+ }
|
|
|
+ ReportVO vo = Converter.convert(ReportVO.class, report);
|
|
|
+ CaseTake caseTake = kibugCaseService.getCaseTakeById(report.getCaseTakeId());
|
|
|
+ vo.setWorkerId(caseTake.getWorkerId());
|
|
|
+ vo.setCaseId(caseTake.getCaseId());
|
|
|
+ vo.setTaskId(caseTake.getTaskId());
|
|
|
+ ScriptAutoResult scriptAutoResult = reportService.getScriptAutoResult(reportId);
|
|
|
+ if (scriptAutoResult != null) {
|
|
|
+ vo.setScriptScore(scriptAutoResult.getScore());
|
|
|
+ vo.setScriptResult(scriptAutoResult.getResult());
|
|
|
+ }
|
|
|
+ vo.setId(reportId);
|
|
|
+ return SuccessResult.ok(ResponseMessage.ITEM_RESULT, vo);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @RequestMapping(value= UrlConstants.API_KIBUG+"report/{reportId}", method = RequestMethod.PUT)
|
|
|
+ public Map<String, Object> update(@PathVariable @NotNull Long reportId,
|
|
|
+ @RequestBody @NotNull ReportVO vo) throws Exception {
|
|
|
+ boolean isTaskTimeEnd = taskService.isTaskEnd(vo.getTaskId());
|
|
|
+ if (isTaskTimeEnd) {
|
|
|
+ return new ErrorResult(StatusCode.TASK_TIME_END);
|
|
|
+ }
|
|
|
+ vo.validate();
|
|
|
+ vo.setId(reportId);
|
|
|
+ reportService.updateReport(vo);
|
|
|
+ return new SuccessResult();
|
|
|
+ }
|
|
|
+
|
|
|
@RequestMapping(value= UrlConstants.API_KIBUG+"report/{reportId}", method = RequestMethod.DELETE)
|
|
|
public Map<String, Object> deleteReport(@PathVariable @NotNull Long reportId) throws Exception {
|
|
|
reportService.deleteReport(reportId);
|
|
|
return SuccessResult.ok();
|
|
|
}
|
|
|
+
|
|
|
+ @RequestMapping(value= UrlConstants.API_KIBUG+"/review/{caseTakeId}", method = RequestMethod.POST)
|
|
|
+ public Map<String, Object> reviewReport(@PathVariable @NotNull Long caseTakeId,
|
|
|
+ @RequestBody @NotNull ReportScoreVO vo) throws Exception {
|
|
|
+ vo.validate();
|
|
|
+ reportService.reviewReport(caseTakeId, vo);
|
|
|
+ return SuccessResult.ok();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取报告的人工打分列表
|
|
|
+ */
|
|
|
+ @RequestMapping(value= UrlConstants.API_KIBUG+"/reviews", method = RequestMethod.GET)
|
|
|
+ public Map<String, Object> getReportScores(@RequestParam(name = "caseTakeId", required = false) Long caseTakeId) throws Exception {
|
|
|
+ //获取分数列表
|
|
|
+ List<ManagerScore> reportScoreList;
|
|
|
+ reportScoreList = reportService.getReportScores(caseTakeId);
|
|
|
+
|
|
|
+ //判断是否显示打分人姓名
|
|
|
+ List<ReportScoreVO> voList = Lists.transform(reportScoreList, item -> {
|
|
|
+ ReportScoreVO vo = Converter.convert(ReportScoreVO.class, item);
|
|
|
+ return vo;
|
|
|
+ });
|
|
|
+
|
|
|
+ //返回结果
|
|
|
+ SuccessResult successResult = new SuccessResult();
|
|
|
+ successResult.put(ResponseMessage.List_RESULT, voList);
|
|
|
+ return successResult;
|
|
|
+ }
|
|
|
}
|