فهرست منبع

增加获取总体数据的接口

guo00guo 5 سال پیش
والد
کامیت
1981c8b80f
17فایلهای تغییر یافته به همراه230 افزوده شده و 24 حذف شده
  1. 6 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestProject.java
  2. 1 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/EvaluationAgency.java
  3. 21 0
      core/src/main/java/com/mooctest/crowd/domain/repository/CrowdTestProjectRepo.java
  4. 4 0
      core/src/main/java/com/mooctest/crowd/domain/repository/IUserRepo.java
  5. 7 0
      core/src/main/java/com/mooctest/crowd/domain/repository/UserRepo.java
  6. 0 0
      site/src/main/java/com/mooctest/crowd/site/controller/CommonController.java
  7. 16 0
      site/src/main/java/com/mooctest/crowd/site/data/dto/DataDTO.java
  8. 20 0
      site/src/main/java/com/mooctest/crowd/site/data/dto/UserDataDTO.java
  9. 1 0
      site/src/main/java/com/mooctest/crowd/site/data/vo/AgencyVO.java
  10. 26 0
      site/src/main/java/com/mooctest/crowd/site/data/vo/CrowdProjectDataVO.java
  11. 22 0
      site/src/main/java/com/mooctest/crowd/site/data/vo/CrowdTaskDataVO.java
  12. 3 2
      site/src/main/java/com/mooctest/crowd/site/mediator/ViewMediator.java
  13. 61 12
      site/src/main/java/com/mooctest/crowd/site/mediator/impl/WebMediatorImpl.java
  14. 5 4
      site/src/main/java/com/mooctest/crowd/site/service/CommonService.java
  15. 13 2
      site/src/main/java/com/mooctest/crowd/site/service/impl/AgencyServiceImpl.java
  16. 24 4
      site/src/main/java/com/mooctest/crowd/site/service/impl/CommonServiceImpl.java
  17. 0 0
      site/src/main/java/com/mooctest/crowd/site/service/impl/UserServiceImpl.java

+ 6 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestProject.java

@@ -2,6 +2,7 @@ package com.mooctest.crowd.domain.domainobject;
 
 import com.google.gson.Gson;
 import com.mooctest.crowd.domain.exception.*;
+import com.mooctest.crowd.domain.model.CrowdTestProjectPO;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
@@ -62,6 +63,11 @@ public class CrowdTestProject {
 //        return crowdTestProject;
 //    }
 
+    public CrowdTestProject(CrowdTestProjectPO crowdTestProjectPO){
+        this.code = crowdTestProjectPO.getCode();
+        this.name = crowdTestProjectPO.getName();
+    }
+
     /**
      * 更新项目信息
      *

+ 1 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/EvaluationAgency.java

@@ -43,6 +43,7 @@ public class EvaluationAgency {
         agencyPhoto = evaluationAgencyPO.getAgencyPhoto();
         evaluationAgencyName = evaluationAgencyPO.getEvaluationAgencyName();
         userId = evaluationAgencyPO.getUserId();
+        address = evaluationAgencyPO.getAddress();
         updateTime=evaluationAgencyPO.getUpdateTime();
         expireTime=evaluationAgencyPO.getExpireTime();
         checkTime=evaluationAgencyPO.getCheckTime();

+ 21 - 0
core/src/main/java/com/mooctest/crowd/domain/repository/CrowdTestProjectRepo.java

@@ -296,6 +296,27 @@ public class CrowdTestProjectRepo implements ICrowdTestProjectRepo {
         return crowdTestProjectResult;
     }
 
+    public CrowdTestTask getTaskDetail(CrowdTestTask crowdTestTask, Long userId){
+        // 检索任务中的所有已接收任务的人员信息
+        List<TaskToUserPO> taskToUserPOList = taskToUserDao.findByTaskCode(crowdTestTask.getCode()).stream().filter(taskToUserPO -> taskToUserPO.getUserId().equals(userId)).collect(Collectors.toList());
+        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(crowdTestTask.getCode(), taskToUser.getUserId());
+            taskToUser.setCrowdTestReportList(crowdTestReportListResult);
+            return taskToUser;
+        }).collect(Collectors.toList());
+        crowdTestTask.setAcceptedUserList(taskToUserList);
+        return crowdTestTask;
+    }
+
     /**
      * 通过任务code和人员id获取报告列表
      *

+ 4 - 0
core/src/main/java/com/mooctest/crowd/domain/repository/IUserRepo.java

@@ -2,8 +2,10 @@ package com.mooctest.crowd.domain.repository;
 
 import com.mooctest.crowd.domain.domainobject.User;
 import com.mooctest.crowd.domain.exception.UserNotExistException;
+import com.mooctest.crowd.domain.model.UserPO;
 
 import javax.management.relation.RoleNotFoundException;
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -20,6 +22,8 @@ public interface IUserRepo {
 
     List<User> getAllUser() throws RoleNotFoundException;
 
+    ArrayList<UserPO> getAllUserInfo() throws RoleNotFoundException;
+
 //    User getByEvaluationAgencyByUserId(Long userId) throws UserNotExistException, com.mooctest.crowd.domain.exception.RoleNotFoundException;
 
     void removeUser(User user);

+ 7 - 0
core/src/main/java/com/mooctest/crowd/domain/repository/UserRepo.java

@@ -119,6 +119,13 @@ public class UserRepo implements IUserRepo {
         return userListByIds;
     }
 
+    @Override
+    public ArrayList<UserPO> getAllUserInfo() throws RoleNotFoundException {
+        Iterable<UserPO> allUserPO = userDao.findAll();
+        ArrayList<UserPO> userPOArrayList = Lists.newArrayList(allUserPO);
+        return userPOArrayList;
+    }
+
 
     //add
 //    @Override

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
site/src/main/java/com/mooctest/crowd/site/controller/CommonController.java


+ 16 - 0
site/src/main/java/com/mooctest/crowd/site/data/dto/DataDTO.java

@@ -0,0 +1,16 @@
+package com.mooctest.crowd.site.data.dto;
+
+import com.mooctest.crowd.domain.domainobject.CrowdTestProject;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @Author: xuexb
+ * @Date: 2019.7.15 20:15
+ */
+@Data
+public class DataDTO {
+    private List<CrowdTestProject> projectList;
+    private List<UserDataDTO> userDataList;
+}

+ 20 - 0
site/src/main/java/com/mooctest/crowd/site/data/dto/UserDataDTO.java

@@ -0,0 +1,20 @@
+package com.mooctest.crowd.site.data.dto;
+
+import com.mooctest.crowd.domain.domainobject.CrowdTestTask;
+import com.mooctest.crowd.site.data.vo.CrowdProjectDataVO;
+import com.mooctest.crowd.site.data.vo.UserVO;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @Author: xuexb
+ * @Date: 2019.7.15 20:15
+ */
+@Data
+public class UserDataDTO {
+    private UserVO userVO;
+    private List<CrowdTestTask> unfinishedTasks;
+    private List<CrowdTestTask> finishedTasks;
+    private List<CrowdProjectDataVO> myProjects;
+}

+ 1 - 0
site/src/main/java/com/mooctest/crowd/site/data/vo/AgencyVO.java

@@ -27,6 +27,7 @@ public class AgencyVO {
     private String agencyPhoto;
     private Integer isAuthentication;
     private String explain;
+    private Long taskCount;
     private int isDeleted;
     private Timestamp updateTime;
     private Timestamp expireTime;

+ 26 - 0
site/src/main/java/com/mooctest/crowd/site/data/vo/CrowdProjectDataVO.java

@@ -0,0 +1,26 @@
+package com.mooctest.crowd.site.data.vo;
+
+
+import com.mooctest.crowd.domain.domainobject.CrowdTestProject;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * @Author: xuexb
+ * @Date: 2019.7.15 20:41
+ */
+@Data
+@NoArgsConstructor
+public class CrowdProjectDataVO implements Serializable {
+
+    private String code;
+    private String name;
+
+    public CrowdProjectDataVO(CrowdTestProject crowdTestProject){
+        this.code = crowdTestProject.getCode();
+        this.name = crowdTestProject.getName();
+    }
+
+}

+ 22 - 0
site/src/main/java/com/mooctest/crowd/site/data/vo/CrowdTaskDataVO.java

@@ -0,0 +1,22 @@
+package com.mooctest.crowd.site.data.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Author: xuexb
+ * @Date: 2019.7.15 20:36
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class CrowdTaskDataVO implements Serializable{
+    private String code;
+    private String title;
+    private List<TaskToUserVO> taskToUserVOS = new ArrayList<>();
+}

+ 3 - 2
site/src/main/java/com/mooctest/crowd/site/mediator/ViewMediator.java

@@ -40,6 +40,8 @@ public interface ViewMediator {
 
     MyCrowdDTO renderMyCrowd(Long userId);
 
+    UserDataDTO renderMyCrowdData(Long userId);
+
     TaskSquareDTO renderTaskSquare();
 
     ProjectDetailsDTO renderProjectDetails(CrowdTestProject project, User user);
@@ -66,8 +68,6 @@ public interface ViewMediator {
     //任务模糊查询
     List<CrowdTaskVO>  findTaskByNameLike(String name);
 
-
-
     List<CrowdTestProjectVO>   crowdTestProjects();
 
     List<CrowdTaskVO>    crowdTaskVos();
@@ -97,4 +97,5 @@ public interface ViewMediator {
     ResourceVO getResourceDetailed(String code);
 
     List<ResourceVO>  getSearchResource(String name);
+
 }

+ 61 - 12
site/src/main/java/com/mooctest/crowd/site/mediator/impl/WebMediatorImpl.java

@@ -113,20 +113,18 @@ public class WebMediatorImpl implements ViewMediator {
 
     @Override
     public List<UserVO> renderMoreUser(Pageable pageable) {
-        List<UserVO> userVOS = new ArrayList<>();
-        List<RankCountInfo> rankCountInfos = taskToUserDao.findTotalCountOfUser();
-        long[] ids = new long[rankCountInfos.size()];
-        for (int i = 0; i < rankCountInfos.size(); i++) {
-            if (userDao.findById(rankCountInfos.get(i).getEntityId()).isPresent()) {
-                ids[i] = rankCountInfos.get(i).getEntityId();
-                Optional<UserPO> userPO = userDao.findById(ids[i]);
-                User user = new User(userPO.get());
+        //获取众测人员排名
+        String agencyName = agencyDao.findById(Long.parseLong(agencyId)).get().getEvaluationAgencyName();
+        List<UserVO> userVOS = taskToUserDao.findTotalCountOfUser().stream().map(rankInfo -> {
+            EvaluationAgencyPO agency = agencyDao.findByUserId(rankInfo.getEntityId());
+            if (agency != null && agency.getEvaluationAgencyName().equals(agencyName)) {
+                User user = userRepo.getByID(agency.getUserId());
                 UserVO userVO = new UserVO(user);
-                userVO.setTaskCount(rankCountInfos.get(i).getCount());
-                userVOS.add(userVO);
+                userVO.setTaskCount(rankInfo.getCount());
+                return userVO;
             }
-
-        }
+            return null;
+        }).filter(Objects::nonNull).collect(Collectors.toList());
         return userVOS;
     }
 
@@ -495,6 +493,57 @@ public class WebMediatorImpl implements ViewMediator {
         return myCrowdDTO;
     }
 
+    @Override
+    public UserDataDTO renderMyCrowdData(Long userId) {
+        UserDataDTO userDataDTO = new UserDataDTO();
+        User user = userRepo.getByID(userId);
+        //我的众测 - 项目相关信息
+        //获取我创建的项目列表
+        List<CrowdProjectDataVO> myProjects = projectDao.findByUserIdAndIsDeleted(userId, DeletedStatus.isNotDeleted).stream().map(CrowdTestProject::new).collect(Collectors.toList())
+                .stream().map(CrowdProjectDataVO::new).collect(Collectors.toList());
+        UserVO userVO = new UserVO(user);
+        userDataDTO.setMyProjects(myProjects);
+        userDataDTO.setUserVO(userVO);
+        if (user.getRoleList().stream().noneMatch(role -> role.getName().equals("evaluationAgency")))
+            return userDataDTO;
+        List<CrowdTestTask> allTaskOfAgency = null;
+        List<CrowdTestTask> unfinishedTasks = null;
+        List<CrowdTestTask> 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) {
+                allTaskOfAgency = taskToUserPOS.stream().sorted(Comparator.comparing(TaskToUserPO::getAcceptTime))
+                        .map(taskToUserPO -> {
+                            CrowdTestTaskPO crowdTestTaskPO = taskDao.findByCodeAndIsDeleted(taskToUserPO.getTaskCode(), DeletedStatus.isNotDeleted);
+                            if (crowdTestTaskPO != null) {
+                                CrowdTestTask task = new CrowdTestTask();
+                                BeanUtils.copyProperties(crowdTestTaskPO, task);
+
+                                // 测试类型的转换
+                                Optional<TestTypePO> testTypePO = testTypeDao.findByCode(task.getType());
+                                if (!testTypePO.isPresent()) {
+                                    throw new HttpBadRequestException("请选择测试类型");
+                                }
+                                task.setType(testTypePO.get().getName());
+                                CrowdTestTask taskDetail = projectRepo.getTaskDetail(task, user.getId());
+                                return taskDetail;
+                            }
+                            return null;
+                        }).collect(Collectors.toList());
+                unfinishedTasks = allTaskOfAgency.stream()
+                        .filter(crowdTestTask -> crowdTestTask.getStatus() >= CrowdTestTaskStatus.HAS_RELEASED && crowdTestTask.getStatus() < CrowdTestTaskStatus.HAS_FINISHED)
+                        .collect(Collectors.toList());
+
+                finishedTasks = allTaskOfAgency.stream()
+                        .filter(crowdTestTask -> crowdTestTask.getStatus() == CrowdTestTaskStatus.HAS_FINISHED)
+                        .collect(Collectors.toList());
+            }
+        }
+        userDataDTO.setFinishedTasks(finishedTasks);
+        userDataDTO.setUnfinishedTasks(unfinishedTasks);
+        return userDataDTO;
+    }
+
     private CrowdProjectVO changeApplicationType(CrowdProjectVO projectVO) {
         // 应用类型值的转换
         Optional<ApplicationTypePO> applicationTypePO = applicationTypeDao.findByCode(projectVO.getPlatform());

+ 5 - 4
site/src/main/java/com/mooctest/crowd/site/service/CommonService.java

@@ -1,9 +1,6 @@
 package com.mooctest.crowd.site.service;
 
-import com.mooctest.crowd.site.data.dto.IndexDTO;
-import com.mooctest.crowd.site.data.dto.IndexInfoDTO;
-import com.mooctest.crowd.site.data.dto.IndexPageDTO;
-import com.mooctest.crowd.site.data.dto.MyCrowdDTO;
+import com.mooctest.crowd.site.data.dto.*;
 import com.mooctest.crowd.site.data.response.ResponseVO;
 import com.mooctest.crowd.site.data.vo.*;
 import org.springframework.data.domain.Page;
@@ -23,6 +20,8 @@ public interface CommonService {
 
     MyCrowdDTO getPersonCrowd(Long userId);
 
+    UserDataDTO getPersonCrowdData(Long userId);
+
     IndexInfoDTO getIndexInfos(Long userId);
 
     IndexPageDTO getIndexPageInfo(Pageable pageable, Map<String, String> extraCondition, String keyword, int deletedStatus);
@@ -44,4 +43,6 @@ public interface CommonService {
     ResponseVO findByNameLike(SearchConditionVO searchConditionVO);
 
     ExpertVO getExpert(Long id);
+
+    DataDTO getAllData();
 }

+ 13 - 2
site/src/main/java/com/mooctest/crowd/site/service/impl/AgencyServiceImpl.java

@@ -104,7 +104,8 @@ public class AgencyServiceImpl implements AgencyService {
                 EvaluationAgency evaluationAgency = new EvaluationAgency(evaluationAgencyPO);
                 EvaluationAgencyVO evalutionAgencyVO = new EvaluationAgencyVO(evaluationAgency);
                 evalutionAgencyVO.setTaskCount(rankInfos.get(i).getCount());
-                evalutionAgencyVO.setAddress((user.get().getProvince() + user.get().getCity()).replaceAll("null", ""));
+                evalutionAgencyVO.setAddress(evaluationAgency.getAddress());
+//                evalutionAgencyVO.setAddress((user.get().getProvince() + user.get().getCity()).replaceAll("null", ""));
                 list.add(evalutionAgencyVO);
             }
         }
@@ -209,7 +210,17 @@ public class AgencyServiceImpl implements AgencyService {
         EvaluationAgency agency = user.getEvaluationAgency();
         if (agency == null)
             throw new EvaluationAgencyNotExistException("当前用户未申请机构认证");
-        return new AgencyVO(user.getEvaluationAgency());
+        AgencyVO agencyVO = new AgencyVO(user.getEvaluationAgency());
+
+        List<RankCountInfo> rankCountInfoList = taskToUserDao.findTotalCountOfUser();
+        long ids[] = new long[rankCountInfoList.size()];
+        for (int i = 0; i < ids.length; i++) {
+            ids[i] = rankCountInfoList.get(i).getEntityId();
+            if (ids[i] == agencyVO.getUserId()) {
+                agencyVO.setTaskCount(rankCountInfoList.get(i).getCount());
+            }
+        }
+        return agencyVO;
     }
 
 

+ 24 - 4
site/src/main/java/com/mooctest/crowd/site/service/impl/CommonServiceImpl.java

@@ -1,12 +1,10 @@
 package com.mooctest.crowd.site.service.impl;
 
+import com.mooctest.crowd.domain.domainobject.CrowdTestProject;
 import com.mooctest.crowd.domain.repository.*;
 import com.mooctest.crowd.site.constants.CommonConstant;
 import com.mooctest.crowd.site.data.ColumnFilter;
-import com.mooctest.crowd.site.data.dto.IndexDTO;
-import com.mooctest.crowd.site.data.dto.IndexInfoDTO;
-import com.mooctest.crowd.site.data.dto.IndexPageDTO;
-import com.mooctest.crowd.site.data.dto.MyCrowdDTO;
+import com.mooctest.crowd.site.data.dto.*;
 import com.mooctest.crowd.site.data.enums.ColumnFilterType;
 import com.mooctest.crowd.site.data.response.ResponseVO;
 import com.mooctest.crowd.site.data.response.ServerCode;
@@ -25,6 +23,7 @@ import org.springframework.stereotype.Service;
 
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 @Service
 public class CommonServiceImpl implements CommonService {
@@ -32,6 +31,9 @@ public class CommonServiceImpl implements CommonService {
     private CrowdTestTaskRepo taskRepo;
 
     @Autowired
+    private UserRepo userRepo;
+
+    @Autowired
     @Qualifier("WebMediator")
     private ViewMediator viewMediator;
 
@@ -67,6 +69,11 @@ public class CommonServiceImpl implements CommonService {
     }
 
     @Override
+    public UserDataDTO getPersonCrowdData(Long userId) {
+        return viewMediator.renderMyCrowdData(userId);
+    }
+
+    @Override
     @Cacheable(value = "userCache",key = "#userId")
     public IndexInfoDTO getIndexInfos(Long userId){
         IndexInfoDTO indexInfoDTO = viewMediator.renderIndexInfos();
@@ -140,6 +147,19 @@ public class CommonServiceImpl implements CommonService {
         return new ExpertVO(commonRepo.findExpertById(id));
     }
 
+    @Override
+    public DataDTO getAllData() {
+        DataDTO dataDTO = new DataDTO();
+        List<CrowdTestProject> allCrowdTestProject = projectRepo.getAllCrowdTestProject();
+        dataDTO.setProjectList(allCrowdTestProject);
+        List<UserDataDTO> userDataList = userRepo.getAllUserInfo().stream().map(userPO -> {
+            UserDataDTO personCrowdData = this.getPersonCrowdData(userPO.getId());
+            return personCrowdData;
+        }).collect(Collectors.toList());
+        dataDTO.setUserDataList(userDataList);
+        return dataDTO;
+    }
+
     Pageable getPageable(SearchConditionVO searchConditionVO) {
         int activePage = searchConditionVO.getActivePage() == 0 ? 1 : searchConditionVO.getActivePage();
         Sort sort = new Sort(Sort.Direction.DESC, "id");

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
site/src/main/java/com/mooctest/crowd/site/service/impl/UserServiceImpl.java


برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است