Bläddra i källkod

添加ProjectReport相关接口

xuexiaobo 6 år sedan
förälder
incheckning
d28333d78b

+ 17 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestProject.java

@@ -3,11 +3,14 @@ package com.mooctest.crowd.domain.domainobject;
 import com.google.gson.Gson;
 import com.mooctest.crowd.domain.exception.BaseException;
 import com.mooctest.crowd.domain.exception.CrowdTestProjectException;
+import com.mooctest.crowd.domain.exception.CrowdTestReportNotExistException;
+import com.mooctest.crowd.domain.exception.CrowdTestTaskNotExistException;
 import lombok.Data;
 
 import java.sql.Timestamp;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Optional;
 
 /**
  * @author guochao
@@ -251,6 +254,20 @@ public class CrowdTestProject {
         this.setStatus(CrowdTestProjectStatus.HAS_SPLITED);
     }
 
+    public CrowdTestTask getTask(String taskCode){
+        Optional<CrowdTestTask> testTask = this.getCrowdTestTaskList().stream().filter(crowdTestTask -> crowdTestTask.getCode().equals(taskCode)).findFirst();
+        if (!testTask.isPresent())
+            throw new CrowdTestTaskNotExistException();
+        return testTask.get();
+    }
+
+    public CrowdTestReport getTaskReport(String taskCode, String reportCode){
+        Optional<CrowdTestReport> report = getTask(taskCode).getCrowdTestReportList().stream().filter(crowdTestReport -> crowdTestReport.getCode().equals(reportCode)).findFirst();
+        if (!report.isPresent())
+            throw new CrowdTestReportNotExistException();
+        return report.get();
+    }
+
 //    /**
 //     * 设置任务和报告的数据
 //     * @return

+ 1 - 2
site/src/main/java/com/mooctest/crowd/site/command/CrowdTestReportCommand.java

@@ -17,8 +17,7 @@ public class CrowdTestReportCommand {
     @NotNull(message = "请填写报告名称")
     private String name;
 
-    @NotNull(message = "请选择报告所属范围")
-    private Integer scope;
+    private Integer scope=0;
 
     @NotNull(message = "请选择报告类型 ")
     private String type;

+ 18 - 12
site/src/main/java/com/mooctest/crowd/site/controller/CrowdReportController.java

@@ -54,19 +54,24 @@ public class CrowdReportController {
     }
 
     @RequestMapping(value = "/project/{projectCode}/task/{taskCode}/report/{reportCode}", method = RequestMethod.DELETE)
-    public boolean deleteTaskReport(@PathVariable("reportCode")String reportCode){
-        return true;
+    public void deleteTaskReport(@PathVariable("projectCode") String projectCode,
+                                 @PathVariable("taskCode") String taskCode,
+                                 @PathVariable("reportCode") String reportCode){
+        reportService.deleteTaskReport(projectCode, taskCode, reportCode);
     }
 
 
     @RequestMapping(value = "/project/{projectCode}/report", method = RequestMethod.POST)
-    public ReportDetailsDTO createProjectReport(CrowdTestReportCommand command){
-        return null;
+    public ReportDetailsDTO createProjectReport(@PathVariable("projectCode") String projectCode,
+                                                @RequestBody @Validated CrowdTestReportCommand command, BindingResult result){
+        if (result.hasErrors())
+            throw new BaseException(result.getFieldError().getDefaultMessage());
+        return reportService.createProjectReport(projectCode, command);
     }
 
     @RequestMapping(value = "/project/{projectCode}/report/{reportCode}", method = RequestMethod.GET)
     public ReportDetailsDTO getProjectReport(@PathVariable("projectCode") String projectCode, @PathVariable("reportCode") String reportCode){
-        return null;
+        return reportService.getProjectReport(projectCode, reportCode);
     }
 
     @RequestMapping(value = "/project/{projectCode}/report/{reportCode}", method = RequestMethod.DELETE)
@@ -74,14 +79,15 @@ public class CrowdReportController {
         return true;
     }
 
-    @RequestMapping(value = "/api/report", method = RequestMethod.GET)
-    public List<ReportDetailsDTO> getReports(){
-        return null;
-    }
 
-    @RequestMapping(value = "/api/report", method = RequestMethod.PUT)
-    public ReportDetailsDTO updateReport(CrowdTestReportCommand command){
-        return null;
+    @RequestMapping(value = "/project/{projectCode}/report/{reportCode}", method = RequestMethod.PUT)
+    public ReportDetailsDTO updateProjectReport(@PathVariable("projectCode") String projectCode,
+                                                @PathVariable("reportCode") String reportCode,
+                                                @RequestBody @Validated CrowdTestReportCommand command, BindingResult result){
+        log.info("更行项目报告,projectCode: " + projectCode);
+        if (result.hasErrors())
+            throw new BaseException(result.getFieldError().getDefaultMessage());
+        return reportService.updatePorjctReport(projectCode, reportCode, command);
     }
 
 

+ 8 - 0
site/src/main/java/com/mooctest/crowd/site/service/CrowdReportService.java

@@ -14,4 +14,12 @@ public interface CrowdReportService {
     ReportDetailsDTO createTaskReport(String projectCode, String taskCode, CrowdTestReportCommand command);
 
     ReportDetailsDTO updateTaskReport(String projectCode, String taskCode, String reportCode, CrowdTestReportCommand command);
+
+    void deleteTaskReport(String projectCode, String taskCode, String reportCode);
+
+    ReportDetailsDTO getProjectReport(String projectCode, String reportCode);
+
+    ReportDetailsDTO createProjectReport(String projectCode, CrowdTestReportCommand command);
+
+    ReportDetailsDTO updatePorjctReport(String projectCode, String reportCode, CrowdTestReportCommand command);
 }

+ 51 - 0
site/src/main/java/com/mooctest/crowd/site/service/impl/CrowdReportServiceImpl.java

@@ -55,6 +55,7 @@ public class CrowdReportServiceImpl implements CrowdReportService {
             throw new BaseException("当前阶段无法创建报告");
         CrowdTestReport report = command.toCrowdTestReport();
         String reportCode = GenerateFlowCodeUtil.generateFlowCode("REPORT");
+        report.setScope(1);
         report.setDependencyCode(taskCode);
         report.setCode(reportCode);
         task.get().getCrowdTestReportList().add(report);
@@ -78,10 +79,60 @@ public class CrowdReportServiceImpl implements CrowdReportService {
         CrowdTestReport updatedReport = command.toCrowdTestReport();
         updatedReport.setId(report.get().getId());
         updatedReport.setCode(report.get().getCode());
+        updatedReport.setScope(1);
         updatedReport.setDependencyCode(report.get().getDependencyCode());
         task.get().getCrowdTestReportList().remove(report.get());
         task.get().getCrowdTestReportList().add(updatedReport);
         projectRepo.saveCrowdTestProject(project);
         return getTaskReport(projectCode, taskCode, reportCode);
     }
+
+    @Override
+    public void deleteTaskReport(String projectCode, String taskCode, String reportCode) {
+        CrowdTestProject project = projectRepo.getByProjectCode(projectCode);
+        project.getTaskReport(taskCode, reportCode).setIsDeleted(1);
+        projectRepo.saveCrowdTestProject(project);
+    }
+
+    @Override
+    public ReportDetailsDTO getProjectReport(String projectCode, String reportCode) {
+        CrowdTestProject project = projectRepo.getByProjectCode(projectCode);
+        CrowdTestReport report = project.getCrowdTestReportForProject();
+        if (report==null)
+            throw new CrowdTestReportNotExistException();
+        ReportDetailsDTO reportDetailsDTO  = new ReportDetailsDTO();
+        reportDetailsDTO.setCrowdReportVO(new CrowdReportVO(report));
+        return reportDetailsDTO;
+    }
+
+    @Override
+    public ReportDetailsDTO createProjectReport(String projectCode, CrowdTestReportCommand command) {
+        CrowdTestProject project = projectRepo.getByProjectCode(projectCode);
+        if (project.getStatus() != CrowdTestProjectStatus.HAS_RELEASED)
+            throw new BaseException("当前阶段无法创建报告");
+        CrowdTestReport report = command.toCrowdTestReport();
+        String reportCode = GenerateFlowCodeUtil.generateFlowCode("REPORT");
+        report.setDependencyCode(projectCode);
+        report.setCode(reportCode);
+        project.setCrowdTestReportForProject(report);
+        projectRepo.saveCrowdTestProject(project);
+        return getProjectReport(projectCode, reportCode);
+    }
+
+    @Override
+    public ReportDetailsDTO updatePorjctReport(String projectCode, String reportCode, CrowdTestReportCommand command) {
+        CrowdTestProject project = projectRepo.getByProjectCode(projectCode);
+        if (project.getStatus() == CrowdTestProjectStatus.HAS_FINISHED)
+            throw new BaseException("当前阶段无法修改报告");
+        CrowdTestReport report = project.getCrowdTestReportForProject();
+        if (report==null)
+            throw new CrowdTestReportNotExistException();
+        CrowdTestReport updatedReport = command.toCrowdTestReport();
+        updatedReport.setId(report.getId());
+        updatedReport.setCode(report.getCode());
+        updatedReport.setDependencyCode(report.getDependencyCode());
+        project.setCrowdTestReportForProject(updatedReport);
+        projectRepo.saveCrowdTestProject(project);
+        return getProjectReport(projectCode, reportCode);
+    }
 }