|
|
@@ -20,6 +20,7 @@ import com.mooctest.crowd.site.command.RegisterCommand;
|
|
|
import com.mooctest.crowd.site.data.ProjectOperationControl;
|
|
|
import com.mooctest.crowd.site.data.TaskOperationControl;
|
|
|
import com.mooctest.crowd.site.data.dto.*;
|
|
|
+import com.mooctest.crowd.site.data.enums.RoleType;
|
|
|
import com.mooctest.crowd.site.data.vo.*;
|
|
|
import com.mooctest.crowd.site.mediator.ViewMediator;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
@@ -74,6 +75,9 @@ public class WebMediatorImpl implements ViewMediator {
|
|
|
@Autowired
|
|
|
private EnterpriseAuthenticationDao enterpriseAuthenticationDao;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private TaskToUserDao taskToUserDao;
|
|
|
+
|
|
|
@Value("${agency}")
|
|
|
private String agencyId;
|
|
|
|
|
|
@@ -208,16 +212,26 @@ public class WebMediatorImpl implements ViewMediator {
|
|
|
List<CrowdTaskVO> unfinishedTasks = null;
|
|
|
List<CrowdTaskVO> finishedTasks = null;
|
|
|
if (user.getRoleList().stream().anyMatch(role -> role.getName().equals("evaluationAgency"))) {
|
|
|
- allTaskOfAgency = taskDao.findByEvaluationAgencyIdAndIsDeleted(user.getEvaluationAgency().getUserId(), 0).stream()
|
|
|
- .sorted(Comparator.comparing(CrowdTestTaskPO::getId).reversed().thenComparing(CrowdTestTaskPO::getStatus).reversed())
|
|
|
- .map(crowdTestTaskPO -> {
|
|
|
+// allTaskOfAgency = taskDao.findByEvaluationAgencyIdAndIsDeleted(user.getEvaluationAgency().getUserId(), 0).stream()
|
|
|
+// .sorted(Comparator.comparing(CrowdTestTaskPO::getId).reversed().thenComparing(CrowdTestTaskPO::getStatus).reversed())
|
|
|
+// .map(crowdTestTaskPO -> {
|
|
|
+// CrowdTestTask task = new CrowdTestTask();
|
|
|
+// BeanUtils.copyProperties(crowdTestTaskPO, task);
|
|
|
+// return task;
|
|
|
+// }).collect(Collectors.toList());
|
|
|
+
|
|
|
+ allTaskOfAgency = taskToUserDao.findByUserId(user.getId()).stream()
|
|
|
+ .map(taskToUserPO -> {
|
|
|
+ CrowdTestTaskPO crowdTestTaskPO = taskDao.findByCodeAndIsDeleted(taskToUserPO.getTaskCode(), DeletedStatus.isNotDeleted);
|
|
|
CrowdTestTask task = new CrowdTestTask();
|
|
|
BeanUtils.copyProperties(crowdTestTaskPO, task);
|
|
|
return task;
|
|
|
}).collect(Collectors.toList());
|
|
|
+
|
|
|
unfinishedTasks = allTaskOfAgency.stream()
|
|
|
.filter(crowdTestTask -> crowdTestTask.getStatus()>=CrowdTestTaskStatus.HAS_RELEASED && crowdTestTask.getStatus()<CrowdTestTaskStatus.HAS_FINISHED)
|
|
|
.map(CrowdTaskVO::new).collect(Collectors.toList());
|
|
|
+
|
|
|
finishedTasks = allTaskOfAgency.stream()
|
|
|
.filter(crowdTestTask -> crowdTestTask.getStatus()==CrowdTestTaskStatus.HAS_FINISHED)
|
|
|
.map(CrowdTaskVO::new).collect(Collectors.toList());
|
|
|
@@ -283,19 +297,24 @@ public class WebMediatorImpl implements ViewMediator {
|
|
|
if (!task.isPresent())
|
|
|
throw new CrowdTestTaskNotExistException();
|
|
|
System.out.println("renderTaskReportDetails userID: " + userId);
|
|
|
- // 查看当前任务指定用户
|
|
|
- Optional<TaskToUser> taskToUserOptional = task.get().getAcceptedUserList().stream().filter(taskToUser -> taskToUser.getUserId().equals(userId)).findFirst();
|
|
|
- if(!taskToUserOptional.isPresent())
|
|
|
- throw new HttpBadRequestException("当前用户没有接收此任务!");
|
|
|
-
|
|
|
- Optional<CrowdTestReport> report = taskToUserOptional.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()));
|
|
|
- System.out.println(task.get().toString());
|
|
|
- if (task.get().getStatus()<CrowdTestTaskStatus.HAS_FINISHED)
|
|
|
- reportDetailsDTO.setOperational(true);
|
|
|
+ if(userRepo.getByID(userId).getRoleList().stream().anyMatch(role -> role.getName().equals(RoleType.REGIONAL_MANAGER)) && !userId.equals(projectRepo.getByProjectCode(projectCode).getRegionalManagerId())){
|
|
|
+ // 区域管理员
|
|
|
+ throw new HttpBadRequestException("当前用户没有不是此任务的区域管理员!");
|
|
|
+ }else if(!userRepo.getByID(userId).getRoleList().stream().anyMatch(role -> role.getName().equals(RoleType.REGIONAL_MANAGER))){
|
|
|
+ // 测评机构
|
|
|
+ Optional<TaskToUser> taskToUserOptional = task.get().getAcceptedUserList().stream().filter(taskToUser -> taskToUser.getUserId().equals(userId)).findFirst();
|
|
|
+ if(!taskToUserOptional.isPresent())
|
|
|
+ throw new HttpBadRequestException("当前用户没有接收此任务!");
|
|
|
+ Optional<CrowdTestReport> report = taskToUserOptional.get().getCrowdTestReportList().stream().filter(crowdTestReport -> crowdTestReport.getCode().equals(reportCode)).findFirst();
|
|
|
+ if (!report.isPresent())
|
|
|
+ throw new CrowdTestReportNotExistException();
|
|
|
+ reportDetailsDTO.setCrowdReportVO(new CrowdReportVO(report.get()));
|
|
|
+ if (task.get().getStatus()<CrowdTestTaskStatus.HAS_FINISHED)
|
|
|
+ reportDetailsDTO.setOperational(true);
|
|
|
+ }
|
|
|
+ // 区域管理员
|
|
|
+
|
|
|
return reportDetailsDTO;
|
|
|
}
|
|
|
|
|
|
@@ -321,27 +340,52 @@ public class WebMediatorImpl implements ViewMediator {
|
|
|
throw new CrowdTestTaskNotExistException();
|
|
|
CrowdTaskVO taskVO = new CrowdTaskVO(task.get());
|
|
|
System.out.println("renderTaskDetails userId:" + userId);
|
|
|
- if (userId == null)
|
|
|
+ if (userId == null) {
|
|
|
taskDetailsDTO.setTaskOperationControl(this.initTaskPermission(project, task.get(), null));
|
|
|
- else
|
|
|
+ } else{
|
|
|
taskDetailsDTO.setTaskOperationControl(this.initTaskPermission(project, task.get(), userRepo.getByID(userId)));
|
|
|
- EvaluationAgencyPO agencyPO = agencyDao.findByUserId(task.get().getEvaluationAgencyId());
|
|
|
- taskVO.setInstitution(agencyPO==null?"该机构已注销":agencyPO.getEvaluationAgencyName());
|
|
|
-
|
|
|
- List<TaskToUserVO> taskToUserVOS = task.get().getAcceptedUserList().stream().map(taskToUser -> {
|
|
|
- TaskToUserVO taskToUserVO = new TaskToUserVO(taskToUser);
|
|
|
- taskToUserVO.setUserVO(Converter.convert(UserVO.class, taskToUser.getUser()));
|
|
|
- // 获取每个人员的报告信息
|
|
|
- List<CrowdTestReport> crowdTestReportList = taskToUser.getCrowdTestReportList();
|
|
|
- if(crowdTestReportList.size() > 0){
|
|
|
- List<CrowdReportVO> crowdReportVOS = crowdTestReportList.stream().map(crowdTestReport -> new CrowdReportVO(crowdTestReport)).collect(Collectors.toList());
|
|
|
- taskToUserVO.setCrowdReportVOS(crowdReportVOS);
|
|
|
+ // 区域管理员视图
|
|
|
+ List<TaskToUserVO> taskToUserVOS = new ArrayList<>();
|
|
|
+ if(userId.equals(project.getRegionalManagerId())){
|
|
|
+ taskToUserVOS = task.get().getAcceptedUserList().stream().map(taskToUser -> {
|
|
|
+ TaskToUserVO taskToUserVO = new TaskToUserVO(taskToUser);
|
|
|
+ taskToUserVO.setUserVO(Converter.convert(UserVO.class, taskToUser.getUser()));
|
|
|
+ // 获取每个人员的报告信息
|
|
|
+ List<CrowdTestReport> crowdTestReportList = taskToUser.getCrowdTestReportList();
|
|
|
+ if(crowdTestReportList.size() > 0){
|
|
|
+ List<CrowdReportVO> crowdReportVOS = crowdTestReportList.stream().map(crowdTestReport -> new CrowdReportVO(crowdTestReport)).collect(Collectors.toList());
|
|
|
+ taskToUserVO.setCrowdReportVOS(crowdReportVOS);
|
|
|
+ }
|
|
|
+ return taskToUserVO;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
}
|
|
|
- return taskToUserVO;
|
|
|
- }).collect(Collectors.toList());
|
|
|
+ // 测评机构视图
|
|
|
+ else if(userRepo.getByID(userId).getRoleList().stream().anyMatch(role -> role.getName().equals(RoleType.AGENCY.getName()))){
|
|
|
+ Optional<TaskToUser> taskToUserOptional = task.get().getAcceptedUserList().stream().filter(taskToUser -> taskToUser.getUserId().equals(userId)).findFirst();
|
|
|
+ if(!taskToUserOptional.isPresent())
|
|
|
+ throw new HttpBadRequestException("当前用户没有接收此任务!");
|
|
|
+
|
|
|
+ taskToUserVOS = task.get().getAcceptedUserList().stream()
|
|
|
+ .filter(taskToUser -> taskToUser.getUserId().equals(userId)).map(taskToUser -> {
|
|
|
+ TaskToUserVO taskToUserVO = new TaskToUserVO(taskToUser);
|
|
|
+ taskToUserVO.setUserVO(Converter.convert(UserVO.class, taskToUser.getUser()));
|
|
|
+ // 获取每个人员的报告信息
|
|
|
+ List<CrowdTestReport> crowdTestReportList = taskToUser.getCrowdTestReportList();
|
|
|
+ if(crowdTestReportList.size() > 0){
|
|
|
+ List<CrowdReportVO> crowdReportVOS = crowdTestReportList.stream().map(crowdTestReport -> new CrowdReportVO(crowdTestReport)).collect(Collectors.toList());
|
|
|
+ taskToUserVO.setCrowdReportVOS(crowdReportVOS);
|
|
|
+ }
|
|
|
+ return taskToUserVO;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ }
|
|
|
+ taskDetailsDTO.setAcceptedUserList(taskToUserVOS);
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
- taskDetailsDTO.setAcceptedUserList(taskToUserVOS);
|
|
|
taskDetailsDTO.setCrowdTaskVO(taskVO);
|
|
|
+// EvaluationAgencyPO agencyPO = agencyDao.findByUserId(task.get().getEvaluationAgencyId());
|
|
|
+// taskVO.setInstitution(agencyPO==null?"该机构已注销":agencyPO.getEvaluationAgencyName());
|
|
|
+
|
|
|
return taskDetailsDTO;
|
|
|
}
|
|
|
|
|
|
@@ -514,7 +558,7 @@ public class WebMediatorImpl implements ViewMediator {
|
|
|
taskOperationControl.setReject(true);
|
|
|
} else if (task.getStatus() == CrowdTestTaskStatus.HAS_RECEIVED){
|
|
|
taskOperationControl.setUploadReport(true);
|
|
|
- if (task.getParticipantHasReportCount() == task.getAcceptedCount()){
|
|
|
+ if (task.getParticipantHasCommittedCount() == task.getAcceptedCount()){
|
|
|
taskOperationControl.setFinish(true);
|
|
|
}
|
|
|
} else if (task.getStatus() == CrowdTestTaskStatus.HAS_COMMITED){
|