|  | @@ -1,17 +1,12 @@
 | 
	
		
			
				|  |  |  package com.mooctest.crowd.domain.repository;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -import com.mooctest.crowd.domain.dao.CrowdTestProjectDao;
 | 
	
		
			
				|  |  | -import com.mooctest.crowd.domain.dao.CrowdTestReportDao;
 | 
	
		
			
				|  |  | -import com.mooctest.crowd.domain.dao.CrowdTestTaskDao;
 | 
	
		
			
				|  |  | -import com.mooctest.crowd.domain.domainobject.CrowdTestProject;
 | 
	
		
			
				|  |  | -import com.mooctest.crowd.domain.domainobject.CrowdTestReport;
 | 
	
		
			
				|  |  | -import com.mooctest.crowd.domain.domainobject.CrowdTestTask;
 | 
	
		
			
				|  |  | -import com.mooctest.crowd.domain.domainobject.DeletedStatus;
 | 
	
		
			
				|  |  | +import com.mooctest.crowd.domain.dao.*;
 | 
	
		
			
				|  |  | +import com.mooctest.crowd.domain.domainobject.*;
 | 
	
		
			
				|  |  |  import com.mooctest.crowd.domain.exception.CrowdTestProjectNotExistException;
 | 
	
		
			
				|  |  | -import com.mooctest.crowd.domain.model.CrowdTestProjectPO;
 | 
	
		
			
				|  |  | -import com.mooctest.crowd.domain.model.CrowdTestReportPO;
 | 
	
		
			
				|  |  | -import com.mooctest.crowd.domain.model.CrowdTestTaskPO;
 | 
	
		
			
				|  |  | +import com.mooctest.crowd.domain.exception.HttpBadRequestException;
 | 
	
		
			
				|  |  | +import com.mooctest.crowd.domain.model.*;
 | 
	
		
			
				|  |  |  import com.mooctest.crowd.domain.util.Converter;
 | 
	
		
			
				|  |  | +import com.mooctest.crowd.domain.domainobject.ReportScopeType;
 | 
	
		
			
				|  |  |  import lombok.extern.slf4j.Slf4j;
 | 
	
		
			
				|  |  |  import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  |  import org.springframework.stereotype.Component;
 | 
	
	
		
			
				|  | @@ -19,6 +14,7 @@ import org.springframework.stereotype.Component;
 | 
	
		
			
				|  |  |  import java.util.ArrayList;
 | 
	
		
			
				|  |  |  import java.util.List;
 | 
	
		
			
				|  |  |  import java.util.Optional;
 | 
	
		
			
				|  |  | +import java.util.stream.Collectors;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  |   * @author guochao
 | 
	
	
		
			
				|  | @@ -37,6 +33,12 @@ public class CrowdTestProjectRepo implements ICrowdTestProjectRepo {
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  |      private CrowdTestReportDao crowdTestReportDao;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private TaskToUserDao taskToUserDao;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private UserDao userDao;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      public CrowdTestProject getByID(Long crowdTestProjectId) throws CrowdTestProjectNotExistException {
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -89,22 +91,35 @@ public class CrowdTestProjectRepo implements ICrowdTestProjectRepo {
 | 
	
		
			
				|  |  |              for(CrowdTestTask crowdTestTask : crowdTestTaskList){
 | 
	
		
			
				|  |  |                  CrowdTestTaskPO crowdTestTaskPO = Converter.convert(CrowdTestTaskPO.class, crowdTestTask);
 | 
	
		
			
				|  |  |                  crowdTestTaskDao.save(crowdTestTaskPO);
 | 
	
		
			
				|  |  | -                List<CrowdTestReport> crowdTestReportList = crowdTestTask.getCrowdTestReportList();
 | 
	
		
			
				|  |  | -                if(crowdTestReportList != null){
 | 
	
		
			
				|  |  | +                List<TaskToUser> acceptedUserList = crowdTestTask.getAcceptedUserList();
 | 
	
		
			
				|  |  | +                for(TaskToUser taskToUser:acceptedUserList){
 | 
	
		
			
				|  |  | +                    taskToUserDao.save(Converter.convert(TaskToUserPO.class, taskToUser));
 | 
	
		
			
				|  |  | +                    // 保存报告信息
 | 
	
		
			
				|  |  | +                    List<CrowdTestReport> crowdTestReportList = taskToUser.getCrowdTestReportList();
 | 
	
		
			
				|  |  |                      for(CrowdTestReport crowdTestReport : crowdTestReportList){
 | 
	
		
			
				|  |  |                          CrowdTestReportPO crowdTestReportPO = Converter.convert(CrowdTestReportPO.class, crowdTestReport);
 | 
	
		
			
				|  |  |                          crowdTestReportDao.save(crowdTestReportPO);
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                // 保存报告
 | 
	
		
			
				|  |  | +//                List<CrowdTestReport> crowdTestReportList = crowdTestTask.getCrowdTestReportList();
 | 
	
		
			
				|  |  | +//                if(crowdTestReportList != null){
 | 
	
		
			
				|  |  | +//                    for(CrowdTestReport crowdTestReport : crowdTestReportList){
 | 
	
		
			
				|  |  | +//                        CrowdTestReportPO crowdTestReportPO = Converter.convert(CrowdTestReportPO.class, crowdTestReport);
 | 
	
		
			
				|  |  | +//                        crowdTestReportDao.save(crowdTestReportPO);
 | 
	
		
			
				|  |  | +//                    }
 | 
	
		
			
				|  |  | +//                }
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          //保存项目报告
 | 
	
		
			
				|  |  | -        CrowdTestReport crowdTestReportForProject = crowdTestProject.getCrowdTestReportForProject();
 | 
	
		
			
				|  |  | -        if(crowdTestReportForProject != null){
 | 
	
		
			
				|  |  | -            CrowdTestReportPO crowdTestReportForProjectPO = Converter.convert(CrowdTestReportPO.class, crowdTestReportForProject);
 | 
	
		
			
				|  |  | -            crowdTestReportDao.save(crowdTestReportForProjectPO);
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | +//        CrowdTestReport crowdTestReportForProject = crowdTestProject.getCrowdTestReportForProject();
 | 
	
		
			
				|  |  | +//        if(crowdTestReportForProject != null){
 | 
	
		
			
				|  |  | +//            CrowdTestReportPO crowdTestReportForProjectPO = Converter.convert(CrowdTestReportPO.class, crowdTestReportForProject);
 | 
	
		
			
				|  |  | +//            crowdTestReportDao.save(crowdTestReportForProjectPO);
 | 
	
		
			
				|  |  | +//        }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  //    @Override
 | 
	
	
		
			
				|  | @@ -188,9 +203,27 @@ public class CrowdTestProjectRepo implements ICrowdTestProjectRepo {
 | 
	
		
			
				|  |  |          List<CrowdTestTask> crowdTestTaskListResult = new ArrayList<>();
 | 
	
		
			
				|  |  |          for(CrowdTestTaskPO crowdTestTaskPO : crowdTestTaskPOList){
 | 
	
		
			
				|  |  |              CrowdTestTask crowdTestTaskResult = Converter.convert(CrowdTestTask.class, crowdTestTaskPO);
 | 
	
		
			
				|  |  | -            // 检索任务中的所有的报告
 | 
	
		
			
				|  |  | -            List<CrowdTestReport> crowdTestReportListResult = getCrowdTestReportByCrowdTestTask(crowdTestTaskPO.getCode());
 | 
	
		
			
				|  |  | -            crowdTestTaskResult.setCrowdTestReportList(crowdTestReportListResult);
 | 
	
		
			
				|  |  | +            // 检索任务中的所有已接收任务的人员信息
 | 
	
		
			
				|  |  | +            List<TaskToUserPO> taskToUserPOList = taskToUserDao.findByTaskCode(crowdTestTaskResult.getCode());
 | 
	
		
			
				|  |  | +            List<TaskToUser> taskToUserList = taskToUserPOList.stream().map(taskToUserPO -> {
 | 
	
		
			
				|  |  | +                TaskToUser taskToUser = Converter.convert(TaskToUser.class, taskToUserPO);
 | 
	
		
			
				|  |  | +                // 获取人员详细信息
 | 
	
		
			
				|  |  | +                Optional<UserPO> userPOOptional = userDao.findById(taskToUser.getUserId());
 | 
	
		
			
				|  |  | +                if(userPOOptional.isPresent()){
 | 
	
		
			
				|  |  | +                    taskToUser.setUser(Converter.convert(User.class, userPOOptional.get()));
 | 
	
		
			
				|  |  | +                }else{
 | 
	
		
			
				|  |  | +                    throw new HttpBadRequestException("无此人员的信息");
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                // 获取每个人员的报告信息
 | 
	
		
			
				|  |  | +                List<CrowdTestReport> crowdTestReportListResult = getReportByTaskCodeAndUserId(crowdTestTaskPO.getCode(), taskToUser.getUserId());
 | 
	
		
			
				|  |  | +                taskToUser.setCrowdTestReportList(crowdTestReportListResult);
 | 
	
		
			
				|  |  | +                return taskToUser;
 | 
	
		
			
				|  |  | +            }).collect(Collectors.toList());
 | 
	
		
			
				|  |  | +            crowdTestTaskResult.setAcceptedUserList(taskToUserList);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +//            // 检索任务中的所有的报告
 | 
	
		
			
				|  |  | +//            List<CrowdTestReport> crowdTestReportListResult = getCrowdTestReportByCrowdTestTask(crowdTestTaskPO.getCode());
 | 
	
		
			
				|  |  | +//            crowdTestTaskResult.setCrowdTestReportList(crowdTestReportListResult);
 | 
	
		
			
				|  |  |              crowdTestTaskListResult.add(crowdTestTaskResult);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          crowdTestProjectResult.setCrowdTestTaskList(crowdTestTaskListResult);
 | 
	
	
		
			
				|  | @@ -206,6 +239,17 @@ public class CrowdTestProjectRepo implements ICrowdTestProjectRepo {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  | +     * 通过任务code和人员id获取报告列表
 | 
	
		
			
				|  |  | +     * @param taskCode
 | 
	
		
			
				|  |  | +     * @param userId
 | 
	
		
			
				|  |  | +     * @return
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    private List<CrowdTestReport> getReportByTaskCodeAndUserId(String taskCode, Long userId) {
 | 
	
		
			
				|  |  | +        List<CrowdTestReportPO> crowdTestReportPOList = crowdTestReportDao.findByDependencyCodeAndUserIdAndScopeAndIsDeleted(taskCode, userId, ReportScopeType.TASK_SCOPE.getId(), DeletedStatus.isNotDeleted);
 | 
	
		
			
				|  |  | +        return crowdTestReportPOList.stream().map(crowdTestReportPO -> Converter.convert(CrowdTestReport.class, crowdTestReportPO)).collect(Collectors.toList());
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  |       * 通过任务信息获取报告信息
 | 
	
		
			
				|  |  |       * @param crowdTestTaskCode
 | 
	
		
			
				|  |  |       * @return
 |