|
@@ -5,12 +5,15 @@ import com.mooctest.crowd.domain.dao.EvaluationAgencyDao;
|
|
|
import com.mooctest.crowd.domain.domainobject.CrowdTestProject;
|
|
import com.mooctest.crowd.domain.domainobject.CrowdTestProject;
|
|
|
import com.mooctest.crowd.domain.domainobject.CrowdTestTask;
|
|
import com.mooctest.crowd.domain.domainobject.CrowdTestTask;
|
|
|
import com.mooctest.crowd.domain.domainobject.CrowdTestTaskStatus;
|
|
import com.mooctest.crowd.domain.domainobject.CrowdTestTaskStatus;
|
|
|
|
|
+import com.mooctest.crowd.domain.domainobject.User;
|
|
|
import com.mooctest.crowd.domain.exception.BaseException;
|
|
import com.mooctest.crowd.domain.exception.BaseException;
|
|
|
import com.mooctest.crowd.domain.exception.CrowdTestTaskNotExistException;
|
|
import com.mooctest.crowd.domain.exception.CrowdTestTaskNotExistException;
|
|
|
import com.mooctest.crowd.domain.factory.CrowdTestProjectFactory;
|
|
import com.mooctest.crowd.domain.factory.CrowdTestProjectFactory;
|
|
|
import com.mooctest.crowd.domain.model.EvaluationAgencyPO;
|
|
import com.mooctest.crowd.domain.model.EvaluationAgencyPO;
|
|
|
import com.mooctest.crowd.domain.repository.CrowdTestProjectRepo;
|
|
import com.mooctest.crowd.domain.repository.CrowdTestProjectRepo;
|
|
|
|
|
+import com.mooctest.crowd.domain.repository.UserRepo;
|
|
|
import com.mooctest.crowd.site.command.CrowdTestTaskCommand;
|
|
import com.mooctest.crowd.site.command.CrowdTestTaskCommand;
|
|
|
|
|
+import com.mooctest.crowd.site.data.TaskOperationControl;
|
|
|
import com.mooctest.crowd.site.data.dto.TaskDetailsDTO;
|
|
import com.mooctest.crowd.site.data.dto.TaskDetailsDTO;
|
|
|
import com.mooctest.crowd.site.data.dto.TaskSquareDTO;
|
|
import com.mooctest.crowd.site.data.dto.TaskSquareDTO;
|
|
|
import com.mooctest.crowd.site.data.enums.ProjectType;
|
|
import com.mooctest.crowd.site.data.enums.ProjectType;
|
|
@@ -20,6 +23,7 @@ import com.mooctest.crowd.site.data.vo.EvolutionAgencyVO;
|
|
|
import com.mooctest.crowd.site.mediator.ViewMediator;
|
|
import com.mooctest.crowd.site.mediator.ViewMediator;
|
|
|
import com.mooctest.crowd.site.service.CrowdTaskService;
|
|
import com.mooctest.crowd.site.service.CrowdTaskService;
|
|
|
import com.mooctest.crowd.site.util.GenerateFlowCodeUtil;
|
|
import com.mooctest.crowd.site.util.GenerateFlowCodeUtil;
|
|
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
@@ -34,6 +38,7 @@ import java.util.stream.Collectors;
|
|
|
* @Email: 171256175@qq.com
|
|
* @Email: 171256175@qq.com
|
|
|
* @date 2019-07-29 18:47
|
|
* @date 2019-07-29 18:47
|
|
|
*/
|
|
*/
|
|
|
|
|
+@Slf4j
|
|
|
@Service
|
|
@Service
|
|
|
public class CrowdTaskServiceImpl implements CrowdTaskService {
|
|
public class CrowdTaskServiceImpl implements CrowdTaskService {
|
|
|
|
|
|
|
@@ -44,6 +49,9 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
|
|
|
CrowdTestTaskDao taskDao;
|
|
CrowdTestTaskDao taskDao;
|
|
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
|
|
|
+ private UserRepo userRepo;
|
|
|
|
|
+
|
|
|
|
|
+ @Autowired
|
|
|
private ViewMediator viewMediator;
|
|
private ViewMediator viewMediator;
|
|
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
@@ -53,13 +61,17 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
|
|
|
// GenerateFlowCodeUtil codeUtil;
|
|
// GenerateFlowCodeUtil codeUtil;
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
- public TaskDetailsDTO getTaskDetails(String projectCode, String taskCode) {
|
|
|
|
|
|
|
+ public TaskDetailsDTO getTaskDetails(String projectCode, String taskCode, Long userId) {
|
|
|
TaskDetailsDTO taskDetailsDTO = new TaskDetailsDTO();
|
|
TaskDetailsDTO taskDetailsDTO = new TaskDetailsDTO();
|
|
|
CrowdTestProject project = projectRepo.getByProjectCode(projectCode);
|
|
CrowdTestProject project = projectRepo.getByProjectCode(projectCode);
|
|
|
Optional<CrowdTestTask> task = project.getCrowdTestTaskList().stream().filter(crowdTestTask -> crowdTestTask.getCode().equals(taskCode)).findFirst();
|
|
Optional<CrowdTestTask> task = project.getCrowdTestTaskList().stream().filter(crowdTestTask -> crowdTestTask.getCode().equals(taskCode)).findFirst();
|
|
|
if (!task.isPresent())
|
|
if (!task.isPresent())
|
|
|
throw new CrowdTestTaskNotExistException();
|
|
throw new CrowdTestTaskNotExistException();
|
|
|
CrowdTaskVO taskVO = new CrowdTaskVO(task.get());
|
|
CrowdTaskVO taskVO = new CrowdTaskVO(task.get());
|
|
|
|
|
+ if (userId == null)
|
|
|
|
|
+ taskDetailsDTO.setTaskOperationControl(this.initPermission(project, task.get(), null));
|
|
|
|
|
+ else
|
|
|
|
|
+ taskDetailsDTO.setTaskOperationControl(this.initPermission(project, task.get(), userRepo.getByID(userId)));
|
|
|
EvaluationAgencyPO agencyPO = agencyDao.findByUserId(task.get().getEvaluationAgencyId());
|
|
EvaluationAgencyPO agencyPO = agencyDao.findByUserId(task.get().getEvaluationAgencyId());
|
|
|
taskVO.setInstitution(agencyPO==null?"该机构已注销":agencyPO.getEvaluationAgencyName());
|
|
taskVO.setInstitution(agencyPO==null?"该机构已注销":agencyPO.getEvaluationAgencyName());
|
|
|
taskDetailsDTO.setCrowdTaskVO(taskVO);
|
|
taskDetailsDTO.setCrowdTaskVO(taskVO);
|
|
@@ -72,7 +84,7 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
- public TaskDetailsDTO createTask(String projectCode, CrowdTestTaskCommand command) {
|
|
|
|
|
|
|
+ public TaskDetailsDTO createTask(String projectCode, CrowdTestTaskCommand command, Long userId) {
|
|
|
CrowdTestTask task = command.toCrowdTask(projectCode);
|
|
CrowdTestTask task = command.toCrowdTask(projectCode);
|
|
|
CrowdTestProject project = projectRepo.getByProjectCode(projectCode);
|
|
CrowdTestProject project = projectRepo.getByProjectCode(projectCode);
|
|
|
String taskCode = GenerateFlowCodeUtil.generateFlowCode("TASK-"+ ProjectType.getCode(command.getType()));
|
|
String taskCode = GenerateFlowCodeUtil.generateFlowCode("TASK-"+ ProjectType.getCode(command.getType()));
|
|
@@ -80,11 +92,11 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
|
|
|
task.setStatus(CrowdTestTaskStatus.HAS_RELEASED);
|
|
task.setStatus(CrowdTestTaskStatus.HAS_RELEASED);
|
|
|
project.addTask(task);
|
|
project.addTask(task);
|
|
|
projectRepo.saveCrowdTestProject(project);
|
|
projectRepo.saveCrowdTestProject(project);
|
|
|
- return getTaskDetails(projectCode, taskCode);
|
|
|
|
|
|
|
+ return getTaskDetails(projectCode, taskCode, userId);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
- public TaskDetailsDTO updateTask(String projectCode, String taskCode, CrowdTestTaskCommand command) {
|
|
|
|
|
|
|
+ public TaskDetailsDTO updateTask(String projectCode, String taskCode, CrowdTestTaskCommand command, Long userId) {
|
|
|
CrowdTestProject project = projectRepo.getByProjectCode(projectCode);
|
|
CrowdTestProject project = projectRepo.getByProjectCode(projectCode);
|
|
|
Optional<CrowdTestTask> task = project.getCrowdTestTaskList().stream().filter(crowdTestTask -> crowdTestTask.getCode().equals(taskCode)).findFirst();
|
|
Optional<CrowdTestTask> task = project.getCrowdTestTaskList().stream().filter(crowdTestTask -> crowdTestTask.getCode().equals(taskCode)).findFirst();
|
|
|
if (!task.isPresent())
|
|
if (!task.isPresent())
|
|
@@ -100,7 +112,7 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
|
|
|
project.getCrowdTestTaskList().remove(task);
|
|
project.getCrowdTestTaskList().remove(task);
|
|
|
project.getCrowdTestTaskList().add(updateTask);
|
|
project.getCrowdTestTaskList().add(updateTask);
|
|
|
projectRepo.saveCrowdTestProject(project);
|
|
projectRepo.saveCrowdTestProject(project);
|
|
|
- return getTaskDetails(projectCode, taskCode);
|
|
|
|
|
|
|
+ return getTaskDetails(projectCode, taskCode, userId);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -116,4 +128,38 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
|
|
|
taskSquareDTO.setCrowdTaskVOList(taskVOList);
|
|
taskSquareDTO.setCrowdTaskVOList(taskVOList);
|
|
|
return taskSquareDTO;
|
|
return taskSquareDTO;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ private TaskOperationControl initPermission(CrowdTestProject project,CrowdTestTask task, User user){
|
|
|
|
|
+ TaskOperationControl taskOperationControl = new TaskOperationControl();
|
|
|
|
|
+ if (user==null)
|
|
|
|
|
+ return taskOperationControl;
|
|
|
|
|
+ if (user.getRoleList().stream().anyMatch(role -> role.getName().equals("SystemAdministrator"))
|
|
|
|
|
+ ||(user.getRoleList().stream().anyMatch(role -> role.getName().equals("RegionalManager"))&&user.getId().equals(project.getRegionalManagerId()))){
|
|
|
|
|
+ if (task.getStatus()<CrowdTestTaskStatus.HAS_RECEIVED){
|
|
|
|
|
+ taskOperationControl.setUpdate(true);
|
|
|
|
|
+ }else if (task.getStatus()==CrowdTestTaskStatus.HAS_COMMITED){
|
|
|
|
|
+ taskOperationControl.setConfirmFinish(true);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ if (user.getEvaluationAgency()!=null){
|
|
|
|
|
+ if ((task.getDistributionType()==0 && task.getEvaluationAgencyId().equals(user.getId()))
|
|
|
|
|
+ ||(task.getDistributionType()==2 && task.getStatus()>CrowdTestTaskStatus.HAS_RELEASED && task.getEvaluationAgencyId().equals(user.getId()))){
|
|
|
|
|
+ if (task.getStatus()<CrowdTestTaskStatus.HAS_RECEIVED){
|
|
|
|
|
+ taskOperationControl.setReceive(true);
|
|
|
|
|
+ } else if (task.getStatus() == CrowdTestTaskStatus.HAS_RECEIVED){
|
|
|
|
|
+ taskOperationControl.setUploadReport(true);
|
|
|
|
|
+ } else if (task.getStatus() == CrowdTestTaskStatus.HAS_REPORTED){
|
|
|
|
|
+ taskOperationControl.setFinish(true);
|
|
|
|
|
+ taskOperationControl.setUploadReport(true);
|
|
|
|
|
+ } else if (task.getStatus() == CrowdTestTaskStatus.HAS_COMMITED){
|
|
|
|
|
+ taskOperationControl.setUploadReport(true);
|
|
|
|
|
+ }
|
|
|
|
|
+ } else {
|
|
|
|
|
+ if (task.getStatus()<CrowdTestTaskStatus.HAS_RECEIVED){
|
|
|
|
|
+ taskOperationControl.setReceive(true);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return taskOperationControl;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|