|
|
@@ -1,9 +1,25 @@
|
|
|
package com.mooctest.crowd.site.service.impl;
|
|
|
|
|
|
+import com.mooctest.crowd.domain.domainobject.CrowdTestProject;
|
|
|
+import com.mooctest.crowd.domain.domainobject.CrowdTestTask;
|
|
|
+import com.mooctest.crowd.domain.domainobject.CrowdTestTaskStatus;
|
|
|
+import com.mooctest.crowd.domain.exception.BaseException;
|
|
|
+import com.mooctest.crowd.domain.exception.CrowdTestTaskNotExistException;
|
|
|
+import com.mooctest.crowd.domain.repository.CrowdTestProjectRepo;
|
|
|
+import com.mooctest.crowd.site.command.CrowdTestTaskCommand;
|
|
|
import com.mooctest.crowd.site.data.dto.TaskDetailsDTO;
|
|
|
+import com.mooctest.crowd.site.data.enums.ProjectType;
|
|
|
+import com.mooctest.crowd.site.data.vo.CrowdReportVO;
|
|
|
+import com.mooctest.crowd.site.data.vo.CrowdTaskVO;
|
|
|
import com.mooctest.crowd.site.service.CrowdTaskService;
|
|
|
+import com.mooctest.crowd.site.util.GenerateFlowCodeUtil;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import java.util.List;
|
|
|
+import java.util.Optional;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
/**
|
|
|
* @author: Diors.Po
|
|
|
* @Email: 171256175@qq.com
|
|
|
@@ -11,8 +27,58 @@ import org.springframework.stereotype.Service;
|
|
|
*/
|
|
|
@Service
|
|
|
public class CrowdTaskServiceImpl implements CrowdTaskService {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ CrowdTestProjectRepo projectRepo;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ GenerateFlowCodeUtil codeUtil;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public TaskDetailsDTO getTaskDetails(String projectCode, String taskCode) {
|
|
|
+ TaskDetailsDTO taskDetailsDTO = new TaskDetailsDTO();
|
|
|
+ CrowdTestProject project = projectRepo.getByProjectCode(projectCode);
|
|
|
+ Optional<CrowdTestTask> task = project.getCrowdTestTaskList().stream().filter(crowdTestTask -> crowdTestTask.getCode().equals(taskCode)).findFirst();
|
|
|
+ if (!task.isPresent())
|
|
|
+ throw new CrowdTestTaskNotExistException();
|
|
|
+ taskDetailsDTO.setCrowdTaskVO(new CrowdTaskVO(task.get()));
|
|
|
+ List<CrowdReportVO> reportVOList = task.get().getCrowdTestReportList()
|
|
|
+ .stream().map(crowdTestReport -> {
|
|
|
+ return new CrowdReportVO(crowdTestReport);
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ taskDetailsDTO.setCrowdReportVOList(reportVOList);
|
|
|
+ return taskDetailsDTO;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public TaskDetailsDTO createTask(String projectCode, CrowdTestTaskCommand command) {
|
|
|
+ CrowdTestTask task = command.toCrowdTask(projectCode);
|
|
|
+ CrowdTestProject project = projectRepo.getByProjectCode(projectCode);
|
|
|
+ String taskCode = codeUtil.generateFlowCode("TASK-"+ ProjectType.getCode(new Integer(command.getType())));
|
|
|
+ task.setCode(taskCode);
|
|
|
+ task.setStatus(CrowdTestTaskStatus.CREATED);
|
|
|
+ project.addTask(task);
|
|
|
+ projectRepo.saveCrowdTestProject(project);
|
|
|
+ return getTaskDetails(projectCode, taskCode);
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
- public TaskDetailsDTO getTaskDetails(Long projectId, String taskCode) {
|
|
|
- return null;
|
|
|
+ public TaskDetailsDTO updateTask(String projectCode, String taskCode, CrowdTestTaskCommand 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().equals(CrowdTestTaskStatus.FINISHED))
|
|
|
+ throw new BaseException("禁止修改已结束的任务!");
|
|
|
+ CrowdTestTask updateTask = command.toCrowdTask(projectCode);
|
|
|
+ updateTask.setId(task.get().getId());
|
|
|
+ updateTask.setCode(taskCode);
|
|
|
+ updateTask.setCreateTime(task.get().getCreateTime());
|
|
|
+ updateTask.setRequirementFile(task.get().getRequirementFile());
|
|
|
+ updateTask.setStatus(task.get().getStatus());
|
|
|
+ project.getCrowdTestTaskList().remove(task);
|
|
|
+ project.getCrowdTestTaskList().add(updateTask);
|
|
|
+ projectRepo.saveCrowdTestProject(project);
|
|
|
+ return getTaskDetails(projectCode, taskCode);
|
|
|
}
|
|
|
}
|