浏览代码

添加Report创建,查看,更新接口

Diors.Po 6 年之前
父节点
当前提交
6b2df24343

+ 1 - 1
core/src/main/java/com/mooctest/crowd/domain/model/CrowdTestReportPO.java

@@ -25,7 +25,7 @@ public class CrowdTestReportPO {
     private String code;
 
 
-    @Column(name = "CTR_CTT_CODE")
+    @Column(name = "CTR_DEPENDENCY_CODE")
     private String crowdTestTaskCode;
 
     @Column(name = "CTR_TYPE")

+ 2 - 4
site/src/main/java/com/mooctest/crowd/site/command/CrowdTestProjectCommand.java

@@ -4,11 +4,9 @@ import com.mooctest.crowd.domain.domainobject.CrowdTestProject;
 
 import com.mooctest.crowd.domain.factory.CrowdTestProjectFactory;
 import lombok.Data;
-import org.springframework.beans.BeanUtils;
 
 import javax.validation.constraints.NotNull;
 import javax.validation.constraints.Pattern;
-import java.sql.Date;
 import java.sql.Timestamp;
 import java.util.Map;
 
@@ -26,9 +24,9 @@ public class CrowdTestProjectCommand {
     private String name;
 
     @NotNull(message = "项目服务类型不可为空")
-    private String type;
+    private int type;
 
-    private String platform;
+    private int platform;
 
     @NotNull(message = "项目描述不可为空")
     private String desc;

+ 42 - 5
site/src/main/java/com/mooctest/crowd/site/command/CrowdTestReportCommand.java

@@ -1,7 +1,12 @@
 package com.mooctest.crowd.site.command;
 
+import com.mooctest.crowd.domain.domainobject.CrowdTestReport;
 import lombok.Data;
 
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotNull;
+
 /**
  * @author guochao
  * @date 2019/7/11 14:16
@@ -9,12 +14,44 @@ import lombok.Data;
 @Data
 public class CrowdTestReportCommand {
 
-    private Long id;
-    private Long projectId;
-    private Long taskId;
+    @NotNull(message = "请填写报告名称")
+    private String name;
+
+    @NotNull(message = "请选择报告范围")
+    private int scope;
+
+    @NotNull(message = "请选择报告类型 ")
+    @Min(0)
+    @Max(5)
     private int type;
-    private String description;
+
+    private String dependencyCode;
+
+    @NotNull(message = "请填写测试对象")
+    private String target;
+
+    @NotNull(message = "请填写摘要内容")
     private String content;
-    private String status;
+
+    @NotNull(message = "缺少报告文件url")
+    private String file;
+
+    @NotNull(message = "请填写结论信息")
+    private String conclusion;
+
+
+
+    public CrowdTestReport toCrowdTestReport(){
+        CrowdTestReport report = new CrowdTestReport();
+        report.setName(name);
+        report.setType(type);
+        report.setConclusion(conclusion);
+        report.setContent(content);
+        report.setFile(file);
+        report.setTestObject(target);
+        report.setCrowdTestTaskCode(dependencyCode);
+        return report;
+    }
+
 
 }

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

@@ -23,7 +23,7 @@ public class CrowdTestTaskCommand {
     private String desc;
 
     @NotNull(message = "请填写任务类型")
-    private String type;
+    private int type;
 
     @NotNull(message = "请指定任务发布类型")
     private int resource;
@@ -55,7 +55,7 @@ public class CrowdTestTaskCommand {
         crowdTestTask.setDescription(desc);
         crowdTestTask.setDistributionProvince(location.get("provinceCode"));
         crowdTestTask.setDistributionCity(location.get("cityCode"));
-        crowdTestTask.setDistributionType(resource+"");
+        crowdTestTask.setDistributionType(resource);
         crowdTestTask.setEvaluationAgencyId(institution);
         crowdTestTask.setType(type);
         crowdTestTask.setQuotedPrice(quotePrice);

+ 51 - 11
site/src/main/java/com/mooctest/crowd/site/controller/CrowdReportController.java

@@ -1,11 +1,15 @@
 package com.mooctest.crowd.site.controller;
 
+import com.mooctest.crowd.domain.domainobject.CrowdTestReport;
+import com.mooctest.crowd.domain.exception.BaseException;
 import com.mooctest.crowd.site.command.CrowdTestReportCommand;
 import com.mooctest.crowd.site.data.dto.ReportDetailsDTO;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RestController;
+import com.mooctest.crowd.site.service.CrowdReportService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
@@ -14,24 +18,60 @@ import java.util.List;
  * @Email: 171256175@qq.com
  * @date 2019-07-24 23:50
  */
+@Slf4j
 @RestController
+@RequestMapping("/api")
 public class CrowdReportController {
 
-    @RequestMapping(value = "/api/report", method = RequestMethod.POST)
-    public ReportDetailsDTO createReport(CrowdTestReportCommand command){
-        return null;
+    @Autowired
+    private CrowdReportService reportService;
+
+    @RequestMapping(value = "/project/{projectCode}/task/{taskCode}/report/{reportCode}", method = RequestMethod.GET)
+    public ReportDetailsDTO getTaskReport(@PathVariable("projectCode") String projectCode,
+                                          @PathVariable("taskCode") String taskCode,
+                                          @PathVariable("reportCode") String reportCode){
+        return reportService.getTaskReport(projectCode, taskCode, reportCode);
+    }
+
+    @RequestMapping(value = "/project/{projectCode}/task/{taskCode}/report", method = RequestMethod.POST)
+    public ReportDetailsDTO createTaskReport(@PathVariable("projectCode") String projectCode,
+                                             @PathVariable("taskCode") String taskCode,
+                                             @Validated @RequestBody CrowdTestReportCommand command, BindingResult result){
+        log.info("projectCode: " + projectCode + ", taskCode: "+taskCode);
+        if (result.hasErrors())
+            throw new BaseException(result.getFieldError().getDefaultMessage());
+        return reportService.createTaskReport(projectCode, taskCode, command);
     }
 
-    @RequestMapping(value = "/api/report/{reportId}", method = RequestMethod.DELETE)
-    public boolean deleteReport(@PathVariable("reportId")Long reportId){
+    @RequestMapping(value = "/project/{projectCode}/task/{taskCode}/report/{reportCode}", method = RequestMethod.PUT)
+    public ReportDetailsDTO updateTaskReport(@PathVariable("projectCode") String projectCode,
+                                             @PathVariable("taskCode") String taskCode,
+                                             @PathVariable("reportCode") String reportCode,
+                                             @Validated @RequestBody CrowdTestReportCommand command, BindingResult result){
+        return reportService.updateTaskReport(projectCode, taskCode, reportCode, command);
+    }
+
+    @RequestMapping(value = "/project/{projectCode}/task/{taskCode}/report/{reportCode}", method = RequestMethod.DELETE)
+    public boolean deleteTaskReport(@PathVariable("reportCode")String reportCode){
         return true;
     }
 
-    @RequestMapping(value = "/api/report/{reportId}", method = RequestMethod.GET)
-    public ReportDetailsDTO getReport(@PathVariable("reportId") Long reportId){
+
+    @RequestMapping(value = "/project/{projectCode}/report", method = RequestMethod.POST)
+    public ReportDetailsDTO createProjectReport(CrowdTestReportCommand command){
         return null;
     }
 
+    @RequestMapping(value = "/project/{projectCode}/report/{reportCode}", method = RequestMethod.GET)
+    public ReportDetailsDTO getProjectReport(@PathVariable("projectCode") String projectCode, @PathVariable("reportCode") String reportCode){
+        return null;
+    }
+
+    @RequestMapping(value = "/project/{projectCode}/report/{reportCode}", method = RequestMethod.DELETE)
+    public boolean deleteProjectReport(@PathVariable("reportCode")String reportCode){
+        return true;
+    }
+
     @RequestMapping(value = "/api/report", method = RequestMethod.GET)
     public List<ReportDetailsDTO> getReports(){
         return null;

+ 2 - 2
site/src/main/java/com/mooctest/crowd/site/data/vo/CrowdProjectVO.java

@@ -22,8 +22,8 @@ public class CrowdProjectVO {
     private String name;
     private String contactName;
     private String contactPhone;
-    private String type;
-    private String platform;
+    private int type;
+    private int platform;
     private String desc;
     private String doc;
     private String file;

+ 6 - 10
site/src/main/java/com/mooctest/crowd/site/data/vo/CrowdReportVO.java

@@ -15,22 +15,18 @@ import java.sql.Timestamp;
  */
 @Data
 public class CrowdReportVO {
-    private Long id;
+    private String code;
     private String name;
     private Long crowdTestTaskId;
-    private String type;
+    private int type;
     private String description;
     private String content;
-    private String status;
-    private Timestamp createTime;
+    private String file;
+    private String conclusion;
+    private String target;
 
     public CrowdReportVO(CrowdTestReport report){
         BeanUtils.copyProperties(report, this);
-    }
-
-    public CrowdTestReport toCrowdTestReport(){
-        CrowdTestReport crowdTestReport = new CrowdTestReport();
-        BeanUtils.copyProperties(this, crowdTestReport);
-        return crowdTestReport;
+        this.target = report.getTestObject();
     }
 }

+ 3 - 3
site/src/main/java/com/mooctest/crowd/site/data/vo/CrowdTaskVO.java

@@ -26,10 +26,10 @@ public class CrowdTaskVO {
     private String title;
     private String description;
     private Double price;
-    private String resource;
+    private int resource;
     private Map<String, String> location;
     private Long institution;
-    private String serviceType;
+    private int serviceType;
     private int status;
     private Timestamp datetime;
 
@@ -45,7 +45,7 @@ public class CrowdTaskVO {
         location.put("cityCode", task.getDistributionCity());
         institution = task.getEvaluationAgencyId();
         serviceType = task.getType();
-        status = task.getStatus()== CrowdTestTaskStatus.FINISHED?1:0;
+        status = task.getStatus()== CrowdTestTaskStatus.HAS_FINISHED?1:0;
         datetime = task.getDeadTime();
     }
 

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

@@ -0,0 +1,17 @@
+package com.mooctest.crowd.site.service;
+
+import com.mooctest.crowd.site.command.CrowdTestReportCommand;
+import com.mooctest.crowd.site.data.dto.ReportDetailsDTO;
+
+/**
+ * @author: Diors.Po
+ * @Email: 171256175@qq.com
+ * @date 2019-07-30 18:02
+ */
+public interface CrowdReportService {
+    ReportDetailsDTO getTaskReport(String projectCode, String taskCode, String reportCode);
+
+    ReportDetailsDTO createTaskReport(String projectCode, String taskCode, CrowdTestReportCommand command);
+
+    ReportDetailsDTO updateTaskReport(String projectCode, String taskCode, String reportCode, CrowdTestReportCommand command);
+}

+ 2 - 2
site/src/main/java/com/mooctest/crowd/site/service/impl/CrowdProjectServiceImpl.java

@@ -45,7 +45,7 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
     @Override
     public ProjectDetailsDTO createCrowdProject(CrowdTestProjectCommand command) {
         CrowdTestProject project = command.toCrowdProject();
-        project.setStatus(CrowdTestProjectStatus.CREATED);
+        project.setStatus(CrowdTestProjectStatus.HAS_CREATED);
         log.info("\n"+project.toString()+"\n");
         String projectCode = codeUtil.generateFlowCode("PROJ-"+ProjectType.getCode(new Integer(command.getType())));
         project.setCode(projectCode);
@@ -58,7 +58,7 @@ public class CrowdProjectServiceImpl implements CrowdProjectService {
     @Override
     public ProjectDetailsDTO updateProject(String projectCode, CrowdTestProjectCommand crowdTestProjectCommand) {
         CrowdTestProject project = projectRepo.getByProjectCode(projectCode);
-        if (project.getStatus().equals(CrowdTestProjectStatus.FINISHED))
+        if (project.getStatus() == CrowdTestProjectStatus.HAS_FINISHED)
             throw new BaseException("结项项目禁止修改!");
         if (project.getUserId() != crowdTestProjectCommand.getUserId())
             throw new BaseException("UserId不一致");

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

@@ -0,0 +1,87 @@
+package com.mooctest.crowd.site.service.impl;
+
+import com.mooctest.crowd.domain.domainobject.*;
+import com.mooctest.crowd.domain.exception.BaseException;
+import com.mooctest.crowd.domain.exception.CrowdTestReportNotExistException;
+import com.mooctest.crowd.domain.exception.CrowdTestTaskNotExistException;
+import com.mooctest.crowd.domain.repository.CrowdTestProjectRepo;
+import com.mooctest.crowd.site.command.CrowdTestReportCommand;
+import com.mooctest.crowd.site.data.dto.ReportDetailsDTO;
+import com.mooctest.crowd.site.data.vo.CrowdReportVO;
+import com.mooctest.crowd.site.service.CrowdReportService;
+import com.mooctest.crowd.site.util.GenerateFlowCodeUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Optional;
+
+/**
+ * @author: Diors.Po
+ * @Email: 171256175@qq.com
+ * @date 2019-07-30 18:03
+ */
+@Service
+public class CrowdReportServiceImpl implements CrowdReportService {
+
+    @Autowired
+    private CrowdTestProjectRepo projectRepo;
+
+    @Autowired
+    private GenerateFlowCodeUtil codeUtil;
+
+    @Override
+    public ReportDetailsDTO getTaskReport(String projectCode, String taskCode, String reportCode) {
+        Optional<CrowdTestTask> task = projectRepo.getByProjectCode(projectCode).getCrowdTestTaskList()
+                .stream().filter(crowdTestTask -> crowdTestTask.getCode().equals(taskCode)).findFirst();
+        if (!task.isPresent())
+            throw new CrowdTestTaskNotExistException();
+        Optional<CrowdTestReport> report = task.get().getCrowdTestReportList()
+                .stream().filter(crowdTestReport -> crowdTestReport.getCode().equals(reportCode)).findFirst();
+        if (!report.isPresent())
+            throw new CrowdTestReportNotExistException();
+        ReportDetailsDTO reportDetailsDTO  = new ReportDetailsDTO();
+        reportDetailsDTO.setCrowdReportVO(new CrowdReportVO(report.get()));
+        return reportDetailsDTO;
+    }
+
+    @Override
+    public ReportDetailsDTO createTaskReport(String projectCode, String taskCode, CrowdTestReportCommand command) {
+        CrowdTestProject project = projectRepo.getByProjectCode(projectCode);
+        Optional<CrowdTestTask> task = project.getCrowdTestTaskList()
+                .stream().filter(crowdTestTask -> crowdTestTask.getCode().equals(taskCode)).findFirst();
+        if (!task.isPresent())
+            throw new CrowdTestTaskNotExistException();
+        if (task.get().getStatus() != CrowdTestTaskStatus.HAS_RECEIVED)
+            throw new BaseException("当前阶段无法创建报告");
+        CrowdTestReport report = command.toCrowdTestReport();
+        String reportCode = codeUtil.generateFlowCode("REPORT");
+        report.setCrowdTestTaskCode(taskCode);
+        report.setCode(reportCode);
+        task.get().getCrowdTestReportList().add(report);
+        projectRepo.saveCrowdTestProject(project);
+        return getTaskReport(projectCode, taskCode, reportCode);
+    }
+
+    @Override
+    public ReportDetailsDTO updateTaskReport(String projectCode, String taskCode, String reportCode, CrowdTestReportCommand command) {
+        CrowdTestProject project = projectRepo.getByProjectCode(projectCode);
+        Optional<CrowdTestTask> task = project.getCrowdTestTaskList()
+                .stream().filter(crowdTestTask -> crowdTestTask.getCode().equals(taskCode)).findFirst();
+        if (!task.isPresent())
+            throw new CrowdTestTaskNotExistException();
+        if (task.get().getStatus() == CrowdTestTaskStatus.HAS_FINISHED)
+            throw new BaseException("当前阶段无法修改报告");
+        Optional<CrowdTestReport> report = task.get().getCrowdTestReportList()
+                .stream().filter(crowdTestReport -> crowdTestReport.getCode().equals(reportCode)).findFirst();
+        if (!report.isPresent())
+            throw new CrowdTestReportNotExistException();
+        CrowdTestReport updatedReport = command.toCrowdTestReport();
+        updatedReport.setId(report.get().getId());
+        updatedReport.setCode(report.get().getCode());
+        updatedReport.setCrowdTestTaskCode(report.get().getCrowdTestTaskCode());
+        task.get().getCrowdTestReportList().remove(report.get());
+        task.get().getCrowdTestReportList().add(updatedReport);
+        projectRepo.saveCrowdTestProject(project);
+        return getTaskReport(projectCode, taskCode, reportCode);
+    }
+}

+ 2 - 2
site/src/main/java/com/mooctest/crowd/site/service/impl/CrowdTaskServiceImpl.java

@@ -56,7 +56,7 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
         CrowdTestProject project = projectRepo.getByProjectCode(projectCode);
         String taskCode = codeUtil.generateFlowCode("TASK-"+ ProjectType.getCode(new Integer(command.getType())));
         task.setCode(taskCode);
-        task.setStatus(CrowdTestTaskStatus.CREATED);
+        task.setStatus(CrowdTestTaskStatus.HAS_CREATED);
         project.addTask(task);
         projectRepo.saveCrowdTestProject(project);
         return getTaskDetails(projectCode, taskCode);
@@ -68,7 +68,7 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
         Optional<CrowdTestTask> task = project.getCrowdTestTaskList().stream().filter(crowdTestTask -> crowdTestTask.getCode().equals(taskCode)).findFirst();
         if (!task.isPresent())
             throw new CrowdTestTaskNotExistException();
-        if (task.get().getStatus().equals(CrowdTestTaskStatus.FINISHED))
+        if (task.get().getStatus() == CrowdTestTaskStatus.HAS_FINISHED)
             throw new BaseException("禁止修改已结束的任务!");
         CrowdTestTask updateTask = command.toCrowdTask(projectCode);
         updateTask.setId(task.get().getId());