|
@@ -172,7 +172,7 @@ public class WebMediatorImpl implements ViewMediator {
|
|
|
//对于区域管理员
|
|
|
if (user.getRoleList().stream().anyMatch(role -> role.getName().equals("RegionalManager"))){
|
|
|
List<CrowdTestProjectPO> crowdTestProjectPOList = projectDao.findByRegionalManagerIdAndIsDeleted(userId, DeletedStatus.isNotDeleted)
|
|
|
- .stream().sorted(Comparator.comparing(CrowdTestProjectPO::getCreateTime).reversed().thenComparing(CrowdTestProjectPO::getStatus).reversed()).collect(Collectors.toList());
|
|
|
+ .stream().sorted(Comparator.comparing(CrowdTestProjectPO::getCreateTime).thenComparing(CrowdTestProjectPO::getStatus).reversed()).collect(Collectors.toList());
|
|
|
//获取区域管理员正在处理中的项目列表
|
|
|
myCrowdDTO.setHandlingProjects(crowdTestProjectPOList.stream().filter(crowdTestProjectPO -> crowdTestProjectPO.getStatus()>CrowdTestProjectStatus.HAS_RELEASED).map(crowdTestProjectPO -> {
|
|
|
CrowdTestProject project = new CrowdTestProject();
|
|
@@ -212,29 +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 -> {
|
|
|
-// 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());
|
|
|
+ List<TaskToUserPO> taskToUserPOS = taskToUserDao.findByUserId(user.getId());
|
|
|
+ if(taskToUserPOS != null && taskToUserPOS.size() > 0){
|
|
|
+ allTaskOfAgency = taskToUserPOS.stream()
|
|
|
+ .map(taskToUserPO -> {
|
|
|
+ CrowdTestTaskPO crowdTestTaskPO = taskDao.findByCodeAndIsDeleted(taskToUserPO.getTaskCode(), DeletedStatus.isNotDeleted);
|
|
|
+ if(crowdTestTaskPO != null){
|
|
|
+ CrowdTestTask task = new CrowdTestTask();
|
|
|
+ BeanUtils.copyProperties(crowdTestTaskPO, task);
|
|
|
+ return task;
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }).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());
|
|
|
+ }
|
|
|
}
|
|
|
myCrowdDTO.setFinishedTasks(finishedTasks);
|
|
|
myCrowdDTO.setUnfinishedTasks(unfinishedTasks);
|
|
@@ -258,35 +255,55 @@ public class WebMediatorImpl implements ViewMediator {
|
|
|
|
|
|
@Override
|
|
|
public ProjectDetailsDTO renderProjectDetails(CrowdTestProject project, User user) {
|
|
|
+ boolean saveFlag = false;
|
|
|
+ // 判断项目是否截止
|
|
|
+ if (project.getDeadTime().getTime() <= System.currentTimeMillis() && project.getStatus() < CrowdTestProjectStatus.HAS_FINISHED){
|
|
|
+ project.setStatus(CrowdTestProjectStatus.HAS_TIME_OUT);
|
|
|
+ saveFlag = true;
|
|
|
+ }
|
|
|
+
|
|
|
ProjectDetailsDTO projectDetailsDTO = new ProjectDetailsDTO();
|
|
|
- List<CrowdTaskVO> taskVOList = project.getCrowdTestTaskList().stream().map(crowdTestTask -> {
|
|
|
+ List<CrowdTestTask> crowdTestTaskList = project.getCrowdTestTaskList();
|
|
|
+ List<CrowdTaskVO> taskVOList = new ArrayList<>();
|
|
|
+ for(CrowdTestTask crowdTestTask : crowdTestTaskList){
|
|
|
+ // 判断任务是否截止
|
|
|
+ if(crowdTestTask.getDeadTime().getTime() <= System.currentTimeMillis() && crowdTestTask.getStatus() < CrowdTestTaskStatus.HAS_FINISHED){
|
|
|
+ crowdTestTask.setStatus(CrowdTestTaskStatus.HAS_TIME_OUT);
|
|
|
+ saveFlag = true;
|
|
|
+ }
|
|
|
+
|
|
|
CrowdTaskVO crowdTaskVO = new CrowdTaskVO(crowdTestTask);
|
|
|
if (crowdTestTask.getDistributionType()==0){
|
|
|
EvaluationAgencyPO agencyPO = agencyDao.findByUserId(crowdTestTask.getEvaluationAgencyId());
|
|
|
crowdTaskVO.setInstitution(agencyPO==null?"该机构已注销":agencyPO.getEvaluationAgencyName());
|
|
|
}
|
|
|
- return crowdTaskVO;
|
|
|
- }).collect(Collectors.toList());
|
|
|
+ taskVOList.add(crowdTaskVO);
|
|
|
+ }
|
|
|
+
|
|
|
List<CrowdReportVO> reportVOList = null;
|
|
|
if (project.getCrowdTestReportForProject() != null) {
|
|
|
reportVOList = new ArrayList<>();
|
|
|
reportVOList.add(new CrowdReportVO(project.getCrowdTestReportForProject()));
|
|
|
}
|
|
|
CrowdProjectVO projectVO = new CrowdProjectVO(project);
|
|
|
- if (project.getStatus() > CrowdTestProjectStatus.HAS_RELEASED){
|
|
|
+ if (project.getStatus() > CrowdTestProjectStatus.HAS_RELEASED && project.getRegionalManagerId() != null){
|
|
|
Optional<UserPO> regionManager = userDao.findById(project.getRegionalManagerId());
|
|
|
projectVO.setInstitution(regionManager.isPresent()?regionManager.get().getName():"区域管理员已注销");
|
|
|
}
|
|
|
List<PieChartDataVO> progress = new ArrayList<>();
|
|
|
- progress.add(new PieChartDataVO("已完成", project.getCrowdTestTaskList()
|
|
|
+ progress.add(new PieChartDataVO("已完成", crowdTestTaskList
|
|
|
.stream().filter(task -> task.getStatus()==CrowdTestTaskStatus.HAS_FINISHED).count()));
|
|
|
- progress.add(new PieChartDataVO("进行中", project.getCrowdTestTaskList()
|
|
|
+ progress.add(new PieChartDataVO("进行中", crowdTestTaskList
|
|
|
.stream().filter(task -> task.getStatus()>CrowdTestTaskStatus.HAS_CREATED&&task.getStatus()<CrowdTestTaskStatus.HAS_FINISHED).count()));
|
|
|
projectDetailsDTO.setProjectDetails(projectVO);
|
|
|
projectDetailsDTO.setTaskList(taskVOList);
|
|
|
projectDetailsDTO.setReportList(reportVOList);
|
|
|
projectDetailsDTO.setProjectOperationControl(initProjectPermission(project, user));
|
|
|
projectDetailsDTO.setProgress(progress);
|
|
|
+
|
|
|
+ if(saveFlag){
|
|
|
+ projectRepo.saveCrowdTestProject(project);
|
|
|
+ }
|
|
|
return projectDetailsDTO;
|
|
|
}
|
|
|
|
|
@@ -339,9 +356,24 @@ public class WebMediatorImpl implements ViewMediator {
|
|
|
public TaskDetailsDTO renderTaskDetails(String projectCode, String taskCode, Long userId) {
|
|
|
TaskDetailsDTO taskDetailsDTO = new TaskDetailsDTO();
|
|
|
CrowdTestProject project = projectRepo.getByProjectCode(projectCode);
|
|
|
+
|
|
|
+ boolean saveFlag = false;
|
|
|
+ // 判断项目是否截止
|
|
|
+ if (project.getDeadTime().getTime() <= System.currentTimeMillis() && project.getStatus() < CrowdTestProjectStatus.HAS_FINISHED){
|
|
|
+ project.setStatus(CrowdTestProjectStatus.HAS_TIME_OUT);
|
|
|
+ saveFlag = true;
|
|
|
+ }
|
|
|
+
|
|
|
Optional<CrowdTestTask> task = project.getCrowdTestTaskList().stream().filter(crowdTestTask -> crowdTestTask.getCode().equals(taskCode)).findFirst();
|
|
|
if (!task.isPresent())
|
|
|
throw new CrowdTestTaskNotExistException();
|
|
|
+
|
|
|
+ // 判断任务是否截止
|
|
|
+ if(task.get().getDeadTime().getTime() <= System.currentTimeMillis() && task.get().getStatus() < CrowdTestTaskStatus.HAS_FINISHED){
|
|
|
+ task.get().setStatus(CrowdTestTaskStatus.HAS_TIME_OUT);
|
|
|
+ saveFlag = true;
|
|
|
+ }
|
|
|
+
|
|
|
CrowdTaskVO taskVO = new CrowdTaskVO(task.get());
|
|
|
System.out.println("renderTaskDetails userId:" + userId);
|
|
|
if (userId == null) {
|
|
@@ -391,7 +423,9 @@ public class WebMediatorImpl implements ViewMediator {
|
|
|
taskDetailsDTO.setAcceptedUserList(taskToUserVOS);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
+ if(saveFlag){
|
|
|
+ projectRepo.saveCrowdTestProject(project);
|
|
|
+ }
|
|
|
taskDetailsDTO.setCrowdTaskVO(taskVO);
|
|
|
// EvaluationAgencyPO agencyPO = agencyDao.findByUserId(task.get().getEvaluationAgencyId());
|
|
|
// taskVO.setInstitution(agencyPO==null?"该机构已注销":agencyPO.getEvaluationAgencyName());
|
|
@@ -513,9 +547,14 @@ public class WebMediatorImpl implements ViewMediator {
|
|
|
operationControl.setReject(true);
|
|
|
} else if (project.getStatus() == CrowdTestProjectStatus.HAS_RECEIVED){
|
|
|
operationControl.setCreateTask(true);
|
|
|
- if (project.getCrowdTestTaskList()
|
|
|
- .stream().allMatch(task -> task.getStatus()==CrowdTestTaskStatus.HAS_REJECTED||task.getStatus()==CrowdTestTaskStatus.HAS_FINISHED)) {
|
|
|
- operationControl.setUploadReport(true);
|
|
|
+ // 无任务
|
|
|
+ if(project.getCrowdTestTaskList() == null || project.getCrowdTestTaskList().size() == 0){
|
|
|
+ operationControl.setUploadReport(false);
|
|
|
+ }else {
|
|
|
+ if(project.getCrowdTestTaskList()
|
|
|
+ .stream().allMatch(task -> task.getStatus()==CrowdTestTaskStatus.HAS_REJECTED||task.getStatus()==CrowdTestTaskStatus.HAS_FINISHED)) {
|
|
|
+ operationControl.setUploadReport(true);
|
|
|
+ }
|
|
|
}
|
|
|
if (project.getCrowdTestReportForProject()!=null){
|
|
|
operationControl.setFinish(true);
|
|
@@ -555,7 +594,7 @@ public class WebMediatorImpl implements ViewMediator {
|
|
|
taskOperationControl.setUpdate(true);
|
|
|
}
|
|
|
taskOperationControl.setFinish(false);
|
|
|
- if (task.getStatus() == CrowdTestTaskStatus.HAS_FINISHED){
|
|
|
+ if (task.getStatus() == CrowdTestTaskStatus.HAS_FINISHED || task.getStatus() == CrowdTestTaskStatus.HAS_TIME_OUT){
|
|
|
taskOperationControl.setConfirmFinish(false);
|
|
|
}
|
|
|
}
|
|
@@ -600,7 +639,7 @@ public class WebMediatorImpl implements ViewMediator {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- if(task.getStatus() == CrowdTestTaskStatus.HAS_FINISHED){
|
|
|
+ if(task.getStatus() == CrowdTestTaskStatus.HAS_FINISHED || task.getStatus() == CrowdTestTaskStatus.HAS_TIME_OUT){
|
|
|
taskOperationControl.noAll();
|
|
|
}
|
|
|
System.out.println(taskOperationControl);
|