|
|
@@ -27,8 +27,13 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.data.domain.PageRequest;
|
|
|
import org.springframework.data.domain.Pageable;
|
|
|
+import org.springframework.data.jpa.domain.Specification;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
+import javax.persistence.criteria.CriteriaBuilder;
|
|
|
+import javax.persistence.criteria.CriteriaQuery;
|
|
|
+import javax.persistence.criteria.Predicate;
|
|
|
+import javax.persistence.criteria.Root;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
@@ -44,7 +49,8 @@ public class WebMediatorImpl implements ViewMediator {
|
|
|
private CrowdTestProjectRepo projectRepo;
|
|
|
|
|
|
@Autowired
|
|
|
- private UserRepo userRepo;
|
|
|
+ private UserRepo
|
|
|
+ userRepo;
|
|
|
|
|
|
@Autowired
|
|
|
private EvaluationAgencyRepo evaluationAgencyRepo;
|
|
|
@@ -113,7 +119,7 @@ public class WebMediatorImpl implements ViewMediator {
|
|
|
String agencyName = agencyDao.findById(Long.parseLong(agencyId)).get().getEvaluationAgencyName();
|
|
|
List<EvolutionAgencyVO> agencyRanks = taskToUserDao.findTotalCountOfUser().stream().map(rankInfo -> {
|
|
|
EvaluationAgencyPO agency = agencyDao.findByUserId(rankInfo.getEntityId());
|
|
|
- if (agency!=null && !agency.getEvaluationAgencyName().equals(agencyName)) {
|
|
|
+ if (agency != null && !agency.getEvaluationAgencyName().equals(agencyName)) {
|
|
|
EvolutionAgencyVO agencyVO = new EvolutionAgencyVO();
|
|
|
agencyVO.setName(agency.getEvaluationAgencyName());
|
|
|
agencyVO.setLogo(agency.getAgencyPhoto());
|
|
|
@@ -124,14 +130,14 @@ public class WebMediatorImpl implements ViewMediator {
|
|
|
}
|
|
|
return null;
|
|
|
}).filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
- if(agencyRanks.size() > top){
|
|
|
- agencyRanks = agencyRanks.subList(0,top);
|
|
|
+ if (agencyRanks.size() > top) {
|
|
|
+ agencyRanks = agencyRanks.subList(0, top);
|
|
|
}
|
|
|
|
|
|
//获取众测人员排名
|
|
|
List<UserVO> userRanks = taskToUserDao.findTotalCountOfUser().stream().map(rankInfo -> {
|
|
|
EvaluationAgencyPO agency = agencyDao.findByUserId(rankInfo.getEntityId());
|
|
|
- if (agency!=null && agency.getEvaluationAgencyName().equals(agencyName)) {
|
|
|
+ if (agency != null && agency.getEvaluationAgencyName().equals(agencyName)) {
|
|
|
User user = userRepo.getByID(agency.getUserId());
|
|
|
UserVO userVO = new UserVO(user);
|
|
|
userVO.setTaskCount(rankInfo.getCount());
|
|
|
@@ -139,14 +145,14 @@ public class WebMediatorImpl implements ViewMediator {
|
|
|
}
|
|
|
return null;
|
|
|
}).filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
- if(userRanks.size() > top){
|
|
|
- userRanks = userRanks.subList(0,top);
|
|
|
+ if (userRanks.size() > top) {
|
|
|
+ userRanks = userRanks.subList(0, top);
|
|
|
}
|
|
|
|
|
|
// 获取大赛信息
|
|
|
List<Competition> competitionList = commonRepo.getAllCompetition();
|
|
|
- if(competitionList.size() > top){
|
|
|
- competitionList = competitionList.subList(0,top);
|
|
|
+ if (competitionList.size() > top) {
|
|
|
+ competitionList = competitionList.subList(0, top);
|
|
|
}
|
|
|
List<CompetitionVO> competitionVOS = competitionList.stream().map(competition -> {
|
|
|
CompetitionVO competitionVO = new CompetitionVO(competition);
|
|
|
@@ -221,22 +227,22 @@ public class WebMediatorImpl implements ViewMediator {
|
|
|
public IndexDTO renderIndex() {
|
|
|
|
|
|
Pageable pageable = PageRequest.of(0, 10);
|
|
|
- //获取用户排名
|
|
|
- List<UserVO> userRanks = projectDao.findTotalPriceOfUser(pageable).stream().map(rankInfo -> {
|
|
|
- Optional<UserPO> userPO = userDao.findById(rankInfo.getEntityId());
|
|
|
- if (userPO.isPresent()) {
|
|
|
- UserVO userVO = new UserVO();
|
|
|
- userVO.setName(userPO.get().getName());
|
|
|
- userVO.setUserName(userPO.get().getUserName());
|
|
|
- userVO.setAllProjectPrice(rankInfo.getTotalPrice());
|
|
|
- return userVO;
|
|
|
- }
|
|
|
+ //获取用户排名
|
|
|
+ List<UserVO> userRanks = projectDao.findTotalPriceOfUser(pageable).stream().map(rankInfo -> {
|
|
|
+ Optional<UserPO> userPO = userDao.findById(rankInfo.getEntityId());
|
|
|
+ if (userPO.isPresent()) {
|
|
|
+ UserVO userVO = new UserVO();
|
|
|
+ userVO.setName(userPO.get().getName());
|
|
|
+ userVO.setUserName(userPO.get().getUserName());
|
|
|
+ userVO.setAllProjectPrice(rankInfo.getTotalPrice());
|
|
|
+ return userVO;
|
|
|
+ }
|
|
|
return null;
|
|
|
}).filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
//获取机构排名
|
|
|
List<EvolutionAgencyVO> agencyRanks = taskToUserDao.findTotalPriceOfAgency(pageable).stream().map(rankInfo -> {
|
|
|
EvaluationAgencyPO agency = agencyDao.findByUserId(rankInfo.getEntityId());
|
|
|
- if (agency!=null) {
|
|
|
+ if (agency != null) {
|
|
|
EvolutionAgencyVO agencyVO = new EvolutionAgencyVO();
|
|
|
agencyVO.setName(agency.getEvaluationAgencyName());
|
|
|
agencyVO.setLogo(agency.getAgencyPhoto());
|
|
|
@@ -296,16 +302,16 @@ public class WebMediatorImpl implements ViewMediator {
|
|
|
return projectVO;
|
|
|
}).collect(Collectors.toList());
|
|
|
//对于区域管理员
|
|
|
- if (user.getRoleList().stream().anyMatch(role -> role.getName().equals("RegionalManager"))){
|
|
|
+ if (user.getRoleList().stream().anyMatch(role -> role.getName().equals("RegionalManager"))) {
|
|
|
List<CrowdTestProjectPO> crowdTestProjectPOList = projectDao.findByRegionalManagerIdAndIsDeleted(userId, DeletedStatus.isNotDeleted)
|
|
|
.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 -> {
|
|
|
+ myCrowdDTO.setHandlingProjects(crowdTestProjectPOList.stream().filter(crowdTestProjectPO -> crowdTestProjectPO.getStatus() > CrowdTestProjectStatus.HAS_RELEASED).map(crowdTestProjectPO -> {
|
|
|
CrowdTestProject project = new CrowdTestProject();
|
|
|
BeanUtils.copyProperties(crowdTestProjectPO, project);
|
|
|
CrowdProjectVO projectVO = new CrowdProjectVO(project);
|
|
|
List<CrowdTestTaskPO> tasksOfProject = taskDao.findByCrowdTestProjectCodeAndIsDeleted(project.getCode(), DeletedStatus.isNotDeleted);
|
|
|
- if (tasksOfProject!=null && tasksOfProject.stream().anyMatch(task -> task.getStatus()==CrowdTestTaskStatus.HAS_COMMITED)) {
|
|
|
+ if (tasksOfProject != null && tasksOfProject.stream().anyMatch(task -> task.getStatus() == CrowdTestTaskStatus.HAS_COMMITED)) {
|
|
|
log.info("\n\n需要处理!!!\n\n");
|
|
|
projectVO.setNeedHandle(true);
|
|
|
}
|
|
|
@@ -313,25 +319,26 @@ public class WebMediatorImpl implements ViewMediator {
|
|
|
}).collect(Collectors.toList()));
|
|
|
//获取区域管理员可以接收领取的项目列表
|
|
|
//定向
|
|
|
- List<CrowdTestProjectPO> acceptableProject = crowdTestProjectPOList.stream().filter(crowdTestProjectPO -> crowdTestProjectPO.getStatus()==CrowdTestProjectStatus.HAS_RELEASED).collect(Collectors.toList());
|
|
|
+ List<CrowdTestProjectPO> acceptableProject = crowdTestProjectPOList.stream().filter(crowdTestProjectPO -> crowdTestProjectPO.getStatus() == CrowdTestProjectStatus.HAS_RELEASED).collect(Collectors.toList());
|
|
|
//广场的
|
|
|
- acceptableProject.addAll(projectDao.findAllByStatusLessThanAndProjectDistributionTypeIdAndIsDeletedAndUserIdIsNot(CrowdTestProjectStatus.HAS_RECEIVED, 2L,DeletedStatus.isNotDeleted, userId));
|
|
|
+ acceptableProject.addAll(projectDao.findAllByStatusLessThanAndProjectDistributionTypeIdAndIsDeletedAndUserIdIsNot(CrowdTestProjectStatus.HAS_RECEIVED, 2L, DeletedStatus.isNotDeleted, userId));
|
|
|
//区域的
|
|
|
- acceptableProject.addAll(projectDao.findByStatusLessThanAndProjectDistributionTypeIdAndIsDeletedAndUserIdIsNot(CrowdTestProjectStatus.HAS_RECEIVED, 1L,DeletedStatus.isNotDeleted, userId)
|
|
|
+ acceptableProject.addAll(projectDao.findByStatusLessThanAndProjectDistributionTypeIdAndIsDeletedAndUserIdIsNot(CrowdTestProjectStatus.HAS_RECEIVED, 1L, DeletedStatus.isNotDeleted, userId)
|
|
|
.stream().filter(crowdTestProjectPO -> user.getRegionalManager().getRegionalList().stream()
|
|
|
- .anyMatch(reg -> (reg.getProvince().equals("*") || reg.getProvince().equals(crowdTestProjectPO.getDistributionProvince())) && (reg.getCity().equals("*")||reg.getCity().equals(crowdTestProjectPO.getDistributionCity())))).collect(Collectors.toList()));
|
|
|
+ .anyMatch(reg -> (reg.getProvince().equals("*") || reg.getProvince().equals(crowdTestProjectPO.getDistributionProvince())) && (reg.getCity().equals("*") || reg.getCity().equals(crowdTestProjectPO.getDistributionCity())))).collect(Collectors.toList()));
|
|
|
myCrowdDTO.setAcceptableProjects(acceptableProject.stream().sorted(Comparator.comparing(CrowdTestProjectPO::getCreateTime).thenComparing(CrowdTestProjectPO::getStatus).reversed())
|
|
|
.map(crowdTestProjectPO -> {
|
|
|
CrowdTestProject project = new CrowdTestProject();
|
|
|
BeanUtils.copyProperties(crowdTestProjectPO, project);
|
|
|
- return new CrowdProjectVO(project); }).collect(Collectors.toList()));
|
|
|
- myCrowdDTO.setAcceptableProjectNoticeCount(Long.parseLong(""+acceptableProject.size()));
|
|
|
+ return new CrowdProjectVO(project);
|
|
|
+ }).collect(Collectors.toList()));
|
|
|
+ myCrowdDTO.setAcceptableProjectNoticeCount(Long.parseLong("" + acceptableProject.size()));
|
|
|
}
|
|
|
UserVO userVO = new UserVO(user);
|
|
|
myCrowdDTO.setMyProjects(myProejcts);
|
|
|
myCrowdDTO.setUserVO(userVO);
|
|
|
myCrowdDTO.setMyProjectNoticeCount(myProejcts.stream().filter(CrowdProjectVO::getNeedHandle).count());
|
|
|
- myCrowdDTO.setProcessProjectNoticeCount(myCrowdDTO.getHandlingProjects()==null?0:myCrowdDTO
|
|
|
+ myCrowdDTO.setProcessProjectNoticeCount(myCrowdDTO.getHandlingProjects() == null ? 0 : myCrowdDTO
|
|
|
.getHandlingProjects().stream().filter(CrowdProjectVO::getNeedHandle).count());
|
|
|
if (user.getRoleList().stream().noneMatch(role -> role.getName().equals("evaluationAgency")))
|
|
|
return myCrowdDTO;
|
|
|
@@ -340,11 +347,11 @@ public class WebMediatorImpl implements ViewMediator {
|
|
|
List<CrowdTaskVO> finishedTasks = null;
|
|
|
if (user.getRoleList().stream().anyMatch(role -> role.getName().equals("evaluationAgency"))) {
|
|
|
List<TaskToUserPO> taskToUserPOS = taskToUserDao.findByUserId(user.getId());
|
|
|
- if(taskToUserPOS != null && taskToUserPOS.size() > 0){
|
|
|
+ if (taskToUserPOS != null && taskToUserPOS.size() > 0) {
|
|
|
allTaskOfAgency = taskToUserPOS.stream().sorted(Comparator.comparing(TaskToUserPO::getAcceptTime))
|
|
|
.map(taskToUserPO -> {
|
|
|
CrowdTestTaskPO crowdTestTaskPO = taskDao.findByCodeAndIsDeleted(taskToUserPO.getTaskCode(), DeletedStatus.isNotDeleted);
|
|
|
- if(crowdTestTaskPO != null){
|
|
|
+ if (crowdTestTaskPO != null) {
|
|
|
CrowdTestTask task = new CrowdTestTask();
|
|
|
BeanUtils.copyProperties(crowdTestTaskPO, task);
|
|
|
return task;
|
|
|
@@ -352,11 +359,11 @@ public class WebMediatorImpl implements ViewMediator {
|
|
|
return null;
|
|
|
}).collect(Collectors.toList());
|
|
|
unfinishedTasks = allTaskOfAgency.stream()
|
|
|
- .filter(crowdTestTask -> crowdTestTask.getStatus()>=CrowdTestTaskStatus.HAS_RELEASED && crowdTestTask.getStatus()<CrowdTestTaskStatus.HAS_FINISHED)
|
|
|
+ .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)
|
|
|
+ .filter(crowdTestTask -> crowdTestTask.getStatus() == CrowdTestTaskStatus.HAS_FINISHED)
|
|
|
.map(CrowdTaskVO::new).collect(Collectors.toList());
|
|
|
}
|
|
|
}
|
|
|
@@ -374,7 +381,7 @@ public class WebMediatorImpl implements ViewMediator {
|
|
|
return task;
|
|
|
}).collect(Collectors.toList()).stream().filter(crowdTestTask -> crowdTestTask.getStatus() == CrowdTestTaskStatus.HAS_RELEASED ||
|
|
|
(crowdTestTask.getStatus() == CrowdTestTaskStatus.HAS_RECEIVED && crowdTestTask.getFullStatus() == CrowdTestTaskAcceptStatus.NOT_FULL))
|
|
|
- .filter(crowdTestTask -> crowdTestTask.getDistributionType()==2)
|
|
|
+ .filter(crowdTestTask -> crowdTestTask.getDistributionType() == 2)
|
|
|
.map(CrowdTaskVO::new).sorted(Comparator.comparing(CrowdTaskVO::getCreateTime).reversed()).collect(Collectors.toList());
|
|
|
TaskSquareDTO taskSquareDTO = new TaskSquareDTO();
|
|
|
taskSquareDTO.setCrowdTaskVOList(taskVOList);
|
|
|
@@ -385,7 +392,7 @@ public class WebMediatorImpl implements ViewMediator {
|
|
|
public ProjectDetailsDTO renderProjectDetails(CrowdTestProject project, User user) {
|
|
|
boolean saveFlag = false;
|
|
|
// 判断项目是否截止
|
|
|
- if (project.getDeadTime().getTime() <= System.currentTimeMillis() && project.getStatus() < CrowdTestProjectStatus.HAS_FINISHED){
|
|
|
+ if (project.getDeadTime().getTime() <= System.currentTimeMillis() && project.getStatus() < CrowdTestProjectStatus.HAS_FINISHED) {
|
|
|
project.setStatus(CrowdTestProjectStatus.HAS_TIME_OUT);
|
|
|
saveFlag = true;
|
|
|
}
|
|
|
@@ -393,17 +400,17 @@ public class WebMediatorImpl implements ViewMediator {
|
|
|
ProjectDetailsDTO projectDetailsDTO = new ProjectDetailsDTO();
|
|
|
List<CrowdTestTask> crowdTestTaskList = project.getCrowdTestTaskList();
|
|
|
List<CrowdTaskVO> taskVOList = new ArrayList<>();
|
|
|
- for(CrowdTestTask crowdTestTask : crowdTestTaskList){
|
|
|
+ for (CrowdTestTask crowdTestTask : crowdTestTaskList) {
|
|
|
// 判断任务是否截止
|
|
|
- if(crowdTestTask.getDeadTime().getTime() <= System.currentTimeMillis() && crowdTestTask.getStatus() < CrowdTestTaskStatus.HAS_FINISHED){
|
|
|
+ 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){
|
|
|
+ if (crowdTestTask.getDistributionType() == 0) {
|
|
|
EvaluationAgencyPO agencyPO = agencyDao.findByUserId(crowdTestTask.getEvaluationAgencyId());
|
|
|
- crowdTaskVO.setInstitution(agencyPO==null?"该机构已注销":agencyPO.getEvaluationAgencyName());
|
|
|
+ crowdTaskVO.setInstitution(agencyPO == null ? "该机构已注销" : agencyPO.getEvaluationAgencyName());
|
|
|
}
|
|
|
taskVOList.add(crowdTaskVO);
|
|
|
}
|
|
|
@@ -414,22 +421,22 @@ public class WebMediatorImpl implements ViewMediator {
|
|
|
reportVOList.add(new CrowdReportVO(project.getCrowdTestReportForProject()));
|
|
|
}
|
|
|
CrowdProjectVO projectVO = new CrowdProjectVO(project);
|
|
|
- if (project.getStatus() > CrowdTestProjectStatus.HAS_RELEASED && project.getRegionalManagerId() != null){
|
|
|
+ if (project.getStatus() > CrowdTestProjectStatus.HAS_RELEASED && project.getRegionalManagerId() != null) {
|
|
|
Optional<UserPO> regionManager = userDao.findById(project.getRegionalManagerId());
|
|
|
- projectVO.setInstitution(regionManager.isPresent()?regionManager.get().getName():"区域管理员已注销");
|
|
|
+ projectVO.setInstitution(regionManager.isPresent() ? regionManager.get().getName() : "区域管理员已注销");
|
|
|
}
|
|
|
List<PieChartDataVO> progress = new ArrayList<>();
|
|
|
progress.add(new PieChartDataVO("已完成", crowdTestTaskList
|
|
|
- .stream().filter(task -> task.getStatus()==CrowdTestTaskStatus.HAS_FINISHED).count()));
|
|
|
+ .stream().filter(task -> task.getStatus() == CrowdTestTaskStatus.HAS_FINISHED).count()));
|
|
|
progress.add(new PieChartDataVO("进行中", crowdTestTaskList
|
|
|
- .stream().filter(task -> task.getStatus()>CrowdTestTaskStatus.HAS_CREATED&&task.getStatus()<CrowdTestTaskStatus.HAS_FINISHED).count()));
|
|
|
+ .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){
|
|
|
+ if (saveFlag) {
|
|
|
projectRepo.saveCrowdTestProject(project);
|
|
|
}
|
|
|
return projectDetailsDTO;
|
|
|
@@ -442,24 +449,24 @@ public class WebMediatorImpl implements ViewMediator {
|
|
|
if (!task.isPresent())
|
|
|
throw new CrowdTestTaskNotExistException();
|
|
|
System.out.println("renderTaskReportDetails userID: " + userId);
|
|
|
- ReportDetailsDTO reportDetailsDTO = new ReportDetailsDTO();
|
|
|
- if(userId.equals(projectRepo.getByProjectCode(projectCode).getRegionalManagerId())){
|
|
|
+ ReportDetailsDTO reportDetailsDTO = new ReportDetailsDTO();
|
|
|
+ if (userId.equals(projectRepo.getByProjectCode(projectCode).getRegionalManagerId())) {
|
|
|
// 区域管理员
|
|
|
reportDetailsDTO.setCrowdReportVO(new CrowdReportVO(Converter.convert(CrowdTestReport.class, crowdTestReportDao.findByCodeAndIsDeleted(reportCode, DeletedStatus.isNotDeleted))));
|
|
|
- if (task.get().getStatus()<CrowdTestTaskStatus.HAS_FINISHED)
|
|
|
+ if (task.get().getStatus() < CrowdTestTaskStatus.HAS_FINISHED)
|
|
|
reportDetailsDTO.setOperational(false);
|
|
|
- }else if(!userRepo.getByID(userId).getRoleList().stream().anyMatch(role -> role.getName().equals(RoleType.REGIONAL_MANAGER))){
|
|
|
+ } 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())
|
|
|
+ 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)
|
|
|
+ if (task.get().getStatus() < CrowdTestTaskStatus.HAS_FINISHED)
|
|
|
reportDetailsDTO.setOperational(true);
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
// 区域管理员
|
|
|
throw new HttpBadRequestException("当前用户无法查看此报告!");
|
|
|
}
|
|
|
@@ -471,11 +478,11 @@ public class WebMediatorImpl implements ViewMediator {
|
|
|
public ReportDetailsDTO renderProjectReportDetails(String projectCode, String reportCode, Long userId) {
|
|
|
CrowdTestProject project = projectRepo.getByProjectCode(projectCode);
|
|
|
CrowdTestReport report = project.getCrowdTestReportForProject();
|
|
|
- if (report==null)
|
|
|
+ if (report == null)
|
|
|
throw new CrowdTestReportNotExistException();
|
|
|
- ReportDetailsDTO reportDetailsDTO = new ReportDetailsDTO();
|
|
|
+ ReportDetailsDTO reportDetailsDTO = new ReportDetailsDTO();
|
|
|
reportDetailsDTO.setCrowdReportVO(new CrowdReportVO(report));
|
|
|
- if (project.getStatus()<CrowdTestProjectStatus.HAS_FINISHED && project.getRegionalManagerId().equals(userId))
|
|
|
+ if (project.getStatus() < CrowdTestProjectStatus.HAS_FINISHED && project.getRegionalManagerId().equals(userId))
|
|
|
reportDetailsDTO.setOperational(true);
|
|
|
return reportDetailsDTO;
|
|
|
}
|
|
|
@@ -487,17 +494,17 @@ public class WebMediatorImpl implements ViewMediator {
|
|
|
|
|
|
boolean saveFlag = false;
|
|
|
// 判断项目是否截止
|
|
|
- if (project.getDeadTime().getTime() <= System.currentTimeMillis() && project.getStatus() < CrowdTestProjectStatus.HAS_FINISHED){
|
|
|
+ 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();
|
|
|
+ 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){
|
|
|
+ if (task.get().getDeadTime().getTime() <= System.currentTimeMillis() && task.get().getStatus() < CrowdTestTaskStatus.HAS_FINISHED) {
|
|
|
task.get().setStatus(CrowdTestTaskStatus.HAS_TIME_OUT);
|
|
|
saveFlag = true;
|
|
|
}
|
|
|
@@ -506,17 +513,17 @@ public class WebMediatorImpl implements ViewMediator {
|
|
|
System.out.println("renderTaskDetails userId:" + userId);
|
|
|
if (userId == null) {
|
|
|
taskDetailsDTO.setTaskOperationControl(this.initTaskPermission(project, task.get(), null));
|
|
|
- } else{
|
|
|
+ } else {
|
|
|
taskDetailsDTO.setTaskOperationControl(this.initTaskPermission(project, task.get(), userRepo.getByID(userId)));
|
|
|
// 区域管理员视图
|
|
|
List<TaskToUserVO> taskToUserVOS = new ArrayList<>();
|
|
|
- if(userId.equals(project.getRegionalManagerId())){
|
|
|
+ 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){
|
|
|
+ if (crowdTestReportList.size() > 0) {
|
|
|
List<CrowdReportVO> crowdReportVOS = crowdTestReportList.stream().map(crowdTestReport -> new CrowdReportVO(crowdTestReport)).collect(Collectors.toList());
|
|
|
taskToUserVO.setCrowdReportVOS(crowdReportVOS);
|
|
|
}
|
|
|
@@ -524,34 +531,34 @@ public class WebMediatorImpl implements ViewMediator {
|
|
|
}).collect(Collectors.toList());
|
|
|
}
|
|
|
// 测评机构视图
|
|
|
- else if(userRepo.getByID(userId).getRoleList().stream().anyMatch(role -> role.getName().equals(RoleType.AGENCY.getName()))){
|
|
|
+ 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()));
|
|
|
- if(taskToUser.getIsCommitted() == 1){
|
|
|
- StatusVO statusVO = new StatusVO();
|
|
|
- statusVO.setText("已提交");
|
|
|
- statusVO.setStyle("primary");
|
|
|
- taskVO.setStatusVO(statusVO);
|
|
|
- }
|
|
|
- // 获取当前用户的报告信息
|
|
|
- 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());
|
|
|
+ TaskToUserVO taskToUserVO = new TaskToUserVO(taskToUser);
|
|
|
+ taskToUserVO.setUserVO(Converter.convert(UserVO.class, taskToUser.getUser()));
|
|
|
+ if (taskToUser.getIsCommitted() == 1) {
|
|
|
+ StatusVO statusVO = new StatusVO();
|
|
|
+ statusVO.setText("已提交");
|
|
|
+ statusVO.setStyle("primary");
|
|
|
+ taskVO.setStatusVO(statusVO);
|
|
|
+ }
|
|
|
+ // 获取当前用户的报告信息
|
|
|
+ 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);
|
|
|
}
|
|
|
|
|
|
- if(saveFlag){
|
|
|
+ if (saveFlag) {
|
|
|
projectRepo.saveCrowdTestProject(project);
|
|
|
}
|
|
|
taskDetailsDTO.setCrowdTaskVO(taskVO);
|
|
|
@@ -568,11 +575,11 @@ public class WebMediatorImpl implements ViewMediator {
|
|
|
userDTO.setUserVO(new UserVO(user));
|
|
|
userDTO.setAuthStatus(new StatusVO());
|
|
|
userDTO.getAuthStatus().initUserAuthStatus(user);
|
|
|
- if (user.getEvaluationAgency()!=null)
|
|
|
+ if (user.getEvaluationAgency() != null)
|
|
|
userDTO.setAgencyVO(new AgencyVO(user.getEvaluationAgency()));
|
|
|
- if (user.getPersonalAuthentication()!=null)
|
|
|
+ if (user.getPersonalAuthentication() != null)
|
|
|
userDTO.setPersonalAuthVO(new PersonalAuthVO(user.getPersonalAuthentication()));
|
|
|
- if (user.getEnterpriseAuthentication()!=null)
|
|
|
+ if (user.getEnterpriseAuthentication() != null)
|
|
|
userDTO.setEnterpriseAuthVO(new EnterpriseAuthVO(user.getEnterpriseAuthentication()));
|
|
|
List<PermissionVO> permissionList = new ArrayList<>();
|
|
|
user.getRoleList().forEach(role -> role.getPermissionList().forEach(permission -> permissionList.add(new PermissionVO(permission))));
|
|
|
@@ -674,52 +681,76 @@ public class WebMediatorImpl implements ViewMediator {
|
|
|
return results;
|
|
|
}
|
|
|
|
|
|
- private ProjectOperationControl initProjectPermission(CrowdTestProject project, User user){
|
|
|
+
|
|
|
+ public List<CrowdTestProjectVO> crowdTestProjects() {
|
|
|
+ List<CrowdTestProjectVO> authingList = new ArrayList<>();
|
|
|
+ authingList.addAll(projectDao.findAll().stream().map(crowdTestProjectPO -> {
|
|
|
+ CrowdTestProject crowdTestProject = new CrowdTestProject();
|
|
|
+ BeanUtils.copyProperties(crowdTestProjectPO, crowdTestProject);
|
|
|
+ return new CrowdTestProjectVO(crowdTestProject);
|
|
|
+ }).collect(Collectors.toList()));
|
|
|
+ return authingList;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<CrowdTaskVO> crowdTaskVos() {
|
|
|
+
|
|
|
+
|
|
|
+ List<CrowdTaskVO> authingList = new ArrayList<>();
|
|
|
+ authingList.addAll(taskDao.findAll().stream().map(crowdTestTaskPO -> {
|
|
|
+ CrowdTestTask crowdTestTask = new CrowdTestTask();
|
|
|
+ BeanUtils.copyProperties(crowdTestTaskPO, crowdTestTask);
|
|
|
+ return new CrowdTaskVO(crowdTestTask);
|
|
|
+ }).collect(Collectors.toList()));
|
|
|
+ return authingList;
|
|
|
+ }
|
|
|
+
|
|
|
+ private ProjectOperationControl initProjectPermission(CrowdTestProject project, User user) {
|
|
|
ProjectOperationControl operationControl = new ProjectOperationControl();
|
|
|
- if (user==null)
|
|
|
+ if (user == null)
|
|
|
return operationControl;
|
|
|
//需求提出者和系统管理员视角
|
|
|
- if (project.getUserId().equals(user.getId())||user.getRoleList().stream().anyMatch(role -> role.getName().equals("SystemAdministrator"))){
|
|
|
- if (project.getStatus() < CrowdTestProjectStatus.HAS_RECEIVED){
|
|
|
+ if (project.getUserId().equals(user.getId()) || user.getRoleList().stream().anyMatch(role -> role.getName().equals("SystemAdministrator"))) {
|
|
|
+ if (project.getStatus() < CrowdTestProjectStatus.HAS_RECEIVED) {
|
|
|
operationControl.setUpdate(true);
|
|
|
- } else if (project.getStatus() == CrowdTestProjectStatus.HAS_COMMITED){
|
|
|
+ } else if (project.getStatus() == CrowdTestProjectStatus.HAS_COMMITED) {
|
|
|
operationControl.setConfirmFinish(true);
|
|
|
}
|
|
|
}
|
|
|
//区域管理员视角
|
|
|
- if (user.getRoleList().stream().anyMatch(role -> role.getName().equals("RegionalManager"))){
|
|
|
+ if (user.getRoleList().stream().anyMatch(role -> role.getName().equals("RegionalManager"))) {
|
|
|
if ((project.getProjectDistributionTypeId() == 0 && project.getRegionalManagerId().equals(user.getId()))
|
|
|
- || (project.getProjectDistributionTypeId()>0 && project.getStatus()>=CrowdTestProjectStatus.HAS_RECEIVED && project.getRegionalManagerId().equals(user.getId()))){
|
|
|
- if (project.getStatus() == CrowdTestProjectStatus.HAS_RELEASED){
|
|
|
+ || (project.getProjectDistributionTypeId() > 0 && project.getStatus() >= CrowdTestProjectStatus.HAS_RECEIVED && project.getRegionalManagerId().equals(user.getId()))) {
|
|
|
+ if (project.getStatus() == CrowdTestProjectStatus.HAS_RELEASED) {
|
|
|
operationControl.setReceive(true);
|
|
|
operationControl.setReject(true);
|
|
|
- } else if (project.getStatus() == CrowdTestProjectStatus.HAS_RECEIVED){
|
|
|
+ } else if (project.getStatus() == CrowdTestProjectStatus.HAS_RECEIVED) {
|
|
|
operationControl.setCreateTask(true);
|
|
|
// 无任务
|
|
|
- if(project.getCrowdTestTaskList() == null || project.getCrowdTestTaskList().size() == 0){
|
|
|
+ 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)) {
|
|
|
+ } else {
|
|
|
+ if (project.getCrowdTestTaskList()
|
|
|
+ .stream().allMatch(task -> task.getStatus() == CrowdTestTaskStatus.HAS_REJECTED || task.getStatus() == CrowdTestTaskStatus.HAS_FINISHED)) {
|
|
|
operationControl.setUploadReport(true);
|
|
|
}
|
|
|
}
|
|
|
- if (project.getCrowdTestReportForProject()!=null){
|
|
|
+ if (project.getCrowdTestReportForProject() != null) {
|
|
|
operationControl.setFinish(true);
|
|
|
}
|
|
|
- } else if (project.getStatus() == CrowdTestProjectStatus.HAS_COMMITED){
|
|
|
+ } else if (project.getStatus() == CrowdTestProjectStatus.HAS_COMMITED) {
|
|
|
operationControl.setCreateTask(false);
|
|
|
}
|
|
|
} //下面两种情况为非定向未被接收
|
|
|
- else if (project.getProjectDistributionTypeId()==1){
|
|
|
- if (project.getStatus()==CrowdTestProjectStatus.HAS_RELEASED
|
|
|
+ else if (project.getProjectDistributionTypeId() == 1) {
|
|
|
+ if (project.getStatus() == CrowdTestProjectStatus.HAS_RELEASED
|
|
|
&& user.getRegionalManager().getRegionalList()
|
|
|
- .stream().anyMatch(regional -> (regional.getProvince().equals("*")||regional.getProvince().equals(project.getDistributionProvince()))
|
|
|
- && (regional.getCity().equals("*")||regional.getCity().equals(project.getDistributionCity())))){
|
|
|
+ .stream().anyMatch(regional -> (regional.getProvince().equals("*") || regional.getProvince().equals(project.getDistributionProvince()))
|
|
|
+ && (regional.getCity().equals("*") || regional.getCity().equals(project.getDistributionCity())))) {
|
|
|
operationControl.setReceive(true);
|
|
|
}
|
|
|
- } else if (project.getProjectDistributionTypeId() == 2){
|
|
|
- if (project.getStatus() == CrowdTestProjectStatus.HAS_RELEASED){
|
|
|
+ } else if (project.getProjectDistributionTypeId() == 2) {
|
|
|
+ if (project.getStatus() == CrowdTestProjectStatus.HAS_RELEASED) {
|
|
|
operationControl.setReceive(true);
|
|
|
}
|
|
|
}
|
|
|
@@ -727,70 +758,70 @@ public class WebMediatorImpl implements ViewMediator {
|
|
|
return operationControl;
|
|
|
}
|
|
|
|
|
|
- private TaskOperationControl initTaskPermission(CrowdTestProject project, CrowdTestTask task, User user){
|
|
|
+ private TaskOperationControl initTaskPermission(CrowdTestProject project, CrowdTestTask task, User user) {
|
|
|
TaskOperationControl taskOperationControl = new TaskOperationControl();
|
|
|
- if (user==null)
|
|
|
+ if (user == null)
|
|
|
return taskOperationControl;
|
|
|
//区域管理员或系统管理员视角
|
|
|
if (user.getRoleList().stream().anyMatch(role -> role.getName().equals("SystemAdministrator"))
|
|
|
- ||(user.getRegionalManager()!=null&&user.getId().equals(project.getRegionalManagerId()))){
|
|
|
- if ((task.getParticipantHasCommittedCount() == task.getAcceptedCount() && task.getStatus() == CrowdTestTaskStatus.HAS_RECEIVED)|| (task.getParticipantHasCommittedCount() == task.getParticipantCount() && task.getStatus() == CrowdTestTaskStatus.HAS_COMMITED)){
|
|
|
+ || (user.getRegionalManager() != null && user.getId().equals(project.getRegionalManagerId()))) {
|
|
|
+ if ((task.getParticipantHasCommittedCount() == task.getAcceptedCount() && task.getStatus() == CrowdTestTaskStatus.HAS_RECEIVED) || (task.getParticipantHasCommittedCount() == task.getParticipantCount() && task.getStatus() == CrowdTestTaskStatus.HAS_COMMITED)) {
|
|
|
taskOperationControl.setConfirmFinish(true);
|
|
|
}
|
|
|
- if (task.getStatus()<CrowdTestTaskStatus.HAS_RECEIVED){
|
|
|
+ if (task.getStatus() < CrowdTestTaskStatus.HAS_RECEIVED) {
|
|
|
taskOperationControl.setUpdate(true);
|
|
|
}
|
|
|
taskOperationControl.setFinish(false);
|
|
|
- if (task.getStatus() == CrowdTestTaskStatus.HAS_FINISHED || task.getStatus() == CrowdTestTaskStatus.HAS_TIME_OUT){
|
|
|
+ if (task.getStatus() == CrowdTestTaskStatus.HAS_FINISHED || task.getStatus() == CrowdTestTaskStatus.HAS_TIME_OUT) {
|
|
|
taskOperationControl.setConfirmFinish(false);
|
|
|
}
|
|
|
}
|
|
|
//评测机构视角
|
|
|
- if (user.getRoleList().stream().anyMatch(role -> role.getName().equals("evaluationAgency")) && task.getStatus()!=CrowdTestTaskStatus.HAS_REJECTED){
|
|
|
- if ((task.getDistributionType()==0 && task.getEvaluationAgencyId().equals(user.getId()))
|
|
|
- ||(task.getDistributionType()==2 && task.getStatus()>=CrowdTestTaskStatus.HAS_RECEIVED)){
|
|
|
+ if (user.getRoleList().stream().anyMatch(role -> role.getName().equals("evaluationAgency")) && task.getStatus() != CrowdTestTaskStatus.HAS_REJECTED) {
|
|
|
+ if ((task.getDistributionType() == 0 && task.getEvaluationAgencyId().equals(user.getId()))
|
|
|
+ || (task.getDistributionType() == 2 && task.getStatus() >= CrowdTestTaskStatus.HAS_RECEIVED)) {
|
|
|
List<TaskToUser> acceptedUserList = task.getAcceptedUserList();
|
|
|
Optional<TaskToUser> taskToUserOptional = acceptedUserList.stream().filter(taskToUser -> taskToUser.getUserId().equals(user.getId())).findFirst();
|
|
|
|
|
|
- if(taskToUserOptional.isPresent()){
|
|
|
+ if (taskToUserOptional.isPresent()) {
|
|
|
// 已接收用户
|
|
|
- if (task.getStatus()==CrowdTestTaskStatus.HAS_RELEASED){
|
|
|
+ if (task.getStatus() == CrowdTestTaskStatus.HAS_RELEASED) {
|
|
|
taskOperationControl.setReceive(true);
|
|
|
- if (task.getDistributionType()==0)
|
|
|
+ if (task.getDistributionType() == 0)
|
|
|
taskOperationControl.setReject(true);
|
|
|
- } else if (task.getStatus() == CrowdTestTaskStatus.HAS_RECEIVED){
|
|
|
+ } else if (task.getStatus() == CrowdTestTaskStatus.HAS_RECEIVED) {
|
|
|
taskOperationControl.setUploadReport(true);
|
|
|
- if (taskToUserOptional.get().getHasReport() == 1 && taskToUserOptional.get().getIsCommitted() == 0){
|
|
|
+ if (taskToUserOptional.get().getHasReport() == 1 && taskToUserOptional.get().getIsCommitted() == 0) {
|
|
|
taskOperationControl.setFinish(true);
|
|
|
- }else if (taskToUserOptional.get().getHasReport() == 1 && taskToUserOptional.get().getIsCommitted() == 1){
|
|
|
+ } else if (taskToUserOptional.get().getHasReport() == 1 && taskToUserOptional.get().getIsCommitted() == 1) {
|
|
|
taskOperationControl.setFinish(false);
|
|
|
taskOperationControl.setUploadReport(false);
|
|
|
}
|
|
|
- } else if (task.getStatus() == CrowdTestTaskStatus.HAS_COMMITED){
|
|
|
+ } else if (task.getStatus() == CrowdTestTaskStatus.HAS_COMMITED) {
|
|
|
taskOperationControl.setUploadReport(false);
|
|
|
}
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
// 未接收用户
|
|
|
taskOperationControl.setReceive(true);
|
|
|
- if (task.getStatus()==CrowdTestTaskStatus.HAS_RELEASED){
|
|
|
+ if (task.getStatus() == CrowdTestTaskStatus.HAS_RELEASED) {
|
|
|
// 定向的
|
|
|
- if (task.getDistributionType()==0) {
|
|
|
+ if (task.getDistributionType() == 0) {
|
|
|
taskOperationControl.setReject(true);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- } else if (task.getDistributionType()==2){
|
|
|
- if (task.getStatus()==CrowdTestTaskStatus.HAS_RELEASED){
|
|
|
+ } else if (task.getDistributionType() == 2) {
|
|
|
+ if (task.getStatus() == CrowdTestTaskStatus.HAS_RELEASED) {
|
|
|
taskOperationControl.setReceive(true);
|
|
|
// 项目发起者
|
|
|
- if(project.getUserId().equals(user.getId())){
|
|
|
+ if (project.getUserId().equals(user.getId())) {
|
|
|
taskOperationControl.setReceive(false);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- if(task.getStatus() == CrowdTestTaskStatus.HAS_FINISHED || task.getStatus() == CrowdTestTaskStatus.HAS_TIME_OUT){
|
|
|
+ if (task.getStatus() == CrowdTestTaskStatus.HAS_FINISHED || task.getStatus() == CrowdTestTaskStatus.HAS_TIME_OUT) {
|
|
|
taskOperationControl.noAll();
|
|
|
}
|
|
|
System.out.println(taskOperationControl);
|