Browse Source

add: 我的众测对需要处理的项目进行标记和通知,项目详情增加进度饼图数据

xuexiaobo 6 years ago
parent
commit
6a504fb87a

+ 3 - 0
site/src/main/java/com/mooctest/crowd/site/data/dto/MyCrowdDTO.java

@@ -2,6 +2,7 @@ package com.mooctest.crowd.site.data.dto;
 
 import com.mooctest.crowd.site.data.vo.CrowdProjectVO;
 import com.mooctest.crowd.site.data.vo.CrowdTaskVO;
+import com.mooctest.crowd.site.data.vo.PieChartDataVO;
 import com.mooctest.crowd.site.data.vo.UserVO;
 import lombok.Data;
 
@@ -19,5 +20,7 @@ public class MyCrowdDTO {
     private List<CrowdProjectVO> myProjects;
     private List<CrowdProjectVO> handlingProjects;
     private List<CrowdProjectVO> acceptableProjects;
+    private Long myProjectNoticeCount;
+    private Long processProjectNoticeCount;
 
 }

+ 2 - 0
site/src/main/java/com/mooctest/crowd/site/data/dto/ProjectDetailsDTO.java

@@ -4,6 +4,7 @@ import com.mooctest.crowd.site.data.ProjectOperationControl;
 import com.mooctest.crowd.site.data.vo.CrowdProjectVO;
 import com.mooctest.crowd.site.data.vo.CrowdReportVO;
 import com.mooctest.crowd.site.data.vo.CrowdTaskVO;
+import com.mooctest.crowd.site.data.vo.PieChartDataVO;
 import lombok.Data;
 
 import java.util.List;
@@ -18,4 +19,5 @@ public class ProjectDetailsDTO {
     private List<CrowdTaskVO> taskList;
     private List<CrowdReportVO> reportList;
     private ProjectOperationControl projectOperationControl;
+    private List<PieChartDataVO> progress;
 }

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

@@ -43,6 +43,7 @@ public class CrowdProjectVO {
     private Integer status;
     private Long regionManagerId;
     private StatusVO statusVO;
+    private Boolean needHandle = false; //该项目需要处理
 
     public CrowdProjectVO(CrowdTestProject project){
         this.id = project.getCode();

+ 18 - 0
site/src/main/java/com/mooctest/crowd/site/data/vo/PieChartDataVO.java

@@ -0,0 +1,18 @@
+package com.mooctest.crowd.site.data.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author: Diors.Po
+ * @Email: 171256175@qq.com
+ * @date 2019-08-28 17:34
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class PieChartDataVO {
+    private String name;
+    private Long value;
+}

+ 18 - 3
site/src/main/java/com/mooctest/crowd/site/mediator/impl/WebMediatorImpl.java

@@ -126,7 +126,11 @@ public class WebMediatorImpl implements ViewMediator {
                 .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());
+                    CrowdProjectVO projectVO = new CrowdProjectVO(project);
+                    if (project.getStatus() == CrowdTestProjectStatus.HAS_COMMITED)
+                        projectVO.setNeedHandle(true);
+                    return projectVO;
+                }).collect(Collectors.toList());
         //对于区域管理员
         if (user.getRoleList().stream().anyMatch(role -> role.getName().equals("RegionalManager"))){
             List<CrowdTestProjectPO> crowdTestProjectPOList = projectDao.findByRegionalManagerIdAndIsDeleted(userId, DeletedStatus.isNotDeleted)
@@ -135,7 +139,11 @@ public class WebMediatorImpl implements ViewMediator {
             myCrowdDTO.setHandlingProjects(crowdTestProjectPOList.stream().filter(crowdTestProjectPO -> crowdTestProjectPO.getStatus()>CrowdTestProjectStatus.HAS_RELEASED).map(crowdTestProjectPO -> {
                 CrowdTestProject project = new CrowdTestProject();
                 BeanUtils.copyProperties(crowdTestProjectPO, project);
-                return new CrowdProjectVO(project); }).collect(Collectors.toList()));
+                CrowdProjectVO projectVO = new CrowdProjectVO(project);
+                if (project.getCrowdTestTaskList()!=null && project.getCrowdTestTaskList().stream().anyMatch(task -> task.getStatus()==CrowdTestTaskStatus.HAS_COMMITED))
+                    projectVO.setNeedHandle(true);
+                return projectVO;
+            }).collect(Collectors.toList()));
             //获取区域管理员可以接收领取的项目列表
             //定向
             List<CrowdTestProjectPO> acceptableProject = crowdTestProjectPOList.stream().filter(crowdTestProjectPO -> crowdTestProjectPO.getStatus()==CrowdTestProjectStatus.HAS_RELEASED).collect(Collectors.toList());
@@ -153,7 +161,8 @@ public class WebMediatorImpl implements ViewMediator {
         UserVO userVO = new UserVO(user);
         myCrowdDTO.setMyProjects(myProejcts);
         myCrowdDTO.setUserVO(userVO);
-
+        myCrowdDTO.setMyProjectNoticeCount(myProejcts.stream().filter(CrowdProjectVO::getNeedHandle).count());
+        myCrowdDTO.setProcessProjectNoticeCount(myCrowdDTO.getHandlingProjects().stream().filter(CrowdProjectVO::getNeedHandle).count());
         if (user.getRoleList().stream().noneMatch(role -> role.getName().equals("evaluationAgency")))
             return myCrowdDTO;
         List<CrowdTestTask> allTaskOfAgency = null;
@@ -214,10 +223,16 @@ public class WebMediatorImpl implements ViewMediator {
             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()
+                .stream().filter(task -> task.getStatus()==CrowdTestTaskStatus.HAS_FINISHED).count()));
+        progress.add(new PieChartDataVO("进行中", project.getCrowdTestTaskList()
+                .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);
         return projectDetailsDTO;
     }