Browse Source

Merge branch 'feature-V2.0' into 'Test'

Feature v2.0

See merge request crowd-2019/crowd-test-service-backend!142
郭超 5 năm trước cách đây
mục cha
commit
bdb415ddd7

+ 9 - 0
core/src/main/java/com/mooctest/crowd/domain/repository/CommonRepo.java

@@ -273,6 +273,15 @@ public class CommonRepo {
         }
     }
 
+    public String getFieldNameByFieldCode(String code) {
+        Optional<FieldPO> fieldPO = fieldDao.findByCode(code);
+        if (!fieldPO.isPresent()) {
+            throw new HttpBadRequestException("领域类型有误");
+        } else {
+            return fieldPO.get().getName();
+        }
+    }
+
     public String getApplicationCodeByName(String name) {
         Optional<ApplicationTypePO> applicationTypePO = applicationTypeDao.findByName(name);
         if (!applicationTypePO.isPresent()) {

+ 11 - 0
core/src/main/java/com/mooctest/crowd/domain/repository/EvaluationAgencyRepo.java

@@ -21,6 +21,7 @@ import javax.persistence.criteria.CriteriaBuilder;
 import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Optional;
 import java.util.stream.Collectors;
@@ -50,6 +51,8 @@ public class EvaluationAgencyRepo implements IEvaluationAgencyRepo {
         }
     }
 
+
+
     @Override
     public EvaluationAgency findAgencyByUserId(Long userId){
         EvaluationAgencyPO evaluationAgencyPO = evaluationAgencyDao.findByUserIdAndIsDeleted(userId, DeletedStatus.isNotDeleted);
@@ -57,6 +60,14 @@ public class EvaluationAgencyRepo implements IEvaluationAgencyRepo {
     }
 
     @Override
+    public List<EvaluationAgency> findAll() {
+        List<EvaluationAgency> evaluationAgencyList = new ArrayList<>();
+        Iterable<EvaluationAgencyPO> agencyPOS = evaluationAgencyDao.findAll();
+        agencyPOS.forEach(agencyPO -> evaluationAgencyList.add(Converter.convert(EvaluationAgency.class, agencyPO)));
+        return evaluationAgencyList;
+    }
+
+    @Override
     public EvaluationAgencyResource findById(Long id){
         Optional<EvaluationAgencyResourcePO> evaluationAgencyResourcePOOptional = agencyResourceDao.findById(id);
         if(!evaluationAgencyResourcePOOptional.isPresent()){

+ 2 - 0
core/src/main/java/com/mooctest/crowd/domain/repository/IEvaluationAgencyRepo.java

@@ -18,6 +18,8 @@ public interface IEvaluationAgencyRepo {
 
     EvaluationAgency findAgencyByUserId(Long userId);
 
+    List<EvaluationAgency> findAll();
+
     EvaluationAgencyResource findById(Long id);
 
     List<EvaluationAgencyResource> findByEvaluationAgencyId(Long evaluationAgencyId);

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
site/src/main/java/com/mooctest/crowd/site/controller/CommonController.java


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

@@ -24,4 +24,9 @@ public class MyCrowdDTO implements Serializable {
     private Long myProjectNoticeCount;
     private Long processProjectNoticeCount;
     private Long acceptableProjectNoticeCount;
+    private Long myProjectCount;
+    private Long handlingProjectCount;
+    private Long acceptableProjectCount;
+    private Long unfinishedTaskCount;
+    private Long finishedTaskCount;
 }

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

@@ -565,7 +565,7 @@ public class WebMediatorImpl implements ViewMediator {
         User user = userRepo.getByID(userId);
         //我的众测 - 项目相关信息
         //获取我创建的项目列表
-        List<CrowdProjectVO> myProejcts = projectDao.findByUserIdAndIsDeleted(userId, DeletedStatus.isNotDeleted)
+        List<CrowdProjectVO> myProjects = projectDao.findByUserIdAndIsDeleted(userId, DeletedStatus.isNotDeleted)
                 .stream().map(crowdTestProjectPO -> {
                     CrowdTestProject project = new CrowdTestProject();
                     BeanUtils.copyProperties(crowdTestProjectPO, project);
@@ -581,7 +581,8 @@ public class WebMediatorImpl implements ViewMediator {
                     }
                     return projectVO;
                 }).collect(Collectors.toList()).stream().sorted(Comparator.comparing(CrowdProjectVO::getCreateTime).thenComparing(CrowdProjectVO::getStatus).reversed()).collect(Collectors.toList());
-        myCrowdDTO.setMyProjects(myProejcts);
+        myCrowdDTO.setMyProjects(myProjects);
+        myCrowdDTO.setMyProjectCount((long) (myCrowdDTO.getMyProjects() == null ? 0 : myProjects.size()));
 
         //对于区域管理员crowdTestProjectPO -> crowdTestProjectPO.getStatus() > CrowdTestProjectStatus.HAS_RELEASED
         if (user.getRoleList().stream().anyMatch(role -> role.getName().equals("RegionalManager"))) {
@@ -625,12 +626,15 @@ public class WebMediatorImpl implements ViewMediator {
                         return projectVO;
                     }).collect(Collectors.toList()));
             myCrowdDTO.setAcceptableProjectNoticeCount(Long.parseLong("" + acceptableProject.size()));
+            myCrowdDTO.setAcceptableProjectCount((long) (myCrowdDTO.getAcceptableProjects() == null ? 0 : myCrowdDTO.getAcceptableProjects().size()));
         }
         UserVO userVO = new UserVO(user);
         myCrowdDTO.setUserVO(userVO);
-        myCrowdDTO.setMyProjectNoticeCount(myProejcts.stream().filter(CrowdProjectVO::getNeedHandle).count());
+        myCrowdDTO.setMyProjectNoticeCount(myProjects.stream().filter(CrowdProjectVO::getNeedHandle).count());
         myCrowdDTO.setProcessProjectNoticeCount(myCrowdDTO.getHandlingProjects() == null ? 0 : myCrowdDTO
                 .getHandlingProjects().stream().filter(CrowdProjectVO::getNeedHandle).count());
+        myCrowdDTO.setHandlingProjectCount((long) (myCrowdDTO.getHandlingProjects() == null ? 0 : myCrowdDTO.getHandlingProjects().size()));
+
         if (!AuthCheckServiceImpl.isAgency(user))
             return myCrowdDTO;
         List<CrowdTestTask> allTaskOfAgency = null;
@@ -670,6 +674,8 @@ public class WebMediatorImpl implements ViewMediator {
         }
         myCrowdDTO.setFinishedTasks(finishedTasks);
         myCrowdDTO.setUnfinishedTasks(unfinishedTasks);
+        myCrowdDTO.setFinishedTaskCount((long) (myCrowdDTO.getFinishedTasks() == null ? 0 : myCrowdDTO.getFinishedTasks().size()));
+        myCrowdDTO.setUnfinishedTaskCount((long) (myCrowdDTO.getUnfinishedTasks() == null ? 0 : myCrowdDTO.getUnfinishedTasks().size()));
         return myCrowdDTO;
     }
 

+ 6 - 1
site/src/main/java/com/mooctest/crowd/site/service/CommonService.java

@@ -6,8 +6,9 @@ import com.mooctest.crowd.site.data.vo.*;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
-import java.util.List;
 
+import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 @Service
@@ -51,4 +52,8 @@ public interface CommonService {
     Boolean checkCreateProject(Long userId);
 
     Boolean checkAcceptTask(Long userId);
+
+    List<HashMap<String, Long>> getStatisticsCount();
+
+    List<Map.Entry<String, Long>> getAgencyProjectCount();
 }

+ 90 - 6
site/src/main/java/com/mooctest/crowd/site/service/impl/CommonServiceImpl.java

@@ -2,11 +2,10 @@ package com.mooctest.crowd.site.service.impl;
 
 import com.mooctest.crowd.domain.dao.CrowdTestProjectDao;
 import com.mooctest.crowd.domain.dao.ResourceTypeDao;
-import com.mooctest.crowd.domain.domainobject.CrowdTestProject;
-import com.mooctest.crowd.domain.domainobject.CrowdTestProjectStatus;
-import com.mooctest.crowd.domain.domainobject.User;
+import com.mooctest.crowd.domain.domainobject.*;
 import com.mooctest.crowd.domain.exception.HaveNotAgencyAuthException;
 import com.mooctest.crowd.domain.exception.HaveNotPartAuthException;
+import com.mooctest.crowd.domain.model.CrowdTestProjectPO;
 import com.mooctest.crowd.domain.model.ResourceTypePO;
 import com.mooctest.crowd.domain.repository.*;
 import com.mooctest.crowd.site.constants.CommonConstant;
@@ -28,9 +27,7 @@ import org.springframework.data.domain.Pageable;
 import org.springframework.data.domain.Sort;
 import org.springframework.stereotype.Service;
 
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
+import java.util.*;
 import java.util.stream.Collectors;
 
 @Service
@@ -226,6 +223,93 @@ public class CommonServiceImpl implements CommonService {
         return isAgency;
     }
 
+    @Override
+    public List<HashMap<String, Long>> getStatisticsCount() {
+        List<HashMap<String, Long>> statisticsList = new ArrayList<>();
+        HashMap<String, Long> fieldMap = new HashMap<>();
+        HashMap<String, Long> applicationMap = new HashMap<>();
+        HashMap<String, Long> testTypeMap = new HashMap<>();
+        List<CrowdTestProject> crowdTestProjects = projectRepo.getAllCrowdTestProject();
+        for(CrowdTestProject crowdTestProject : crowdTestProjects){
+            String fieldType = crowdTestProject.getFieldType();
+            if(!fieldMap.containsKey(fieldType)){
+                fieldMap.put(fieldType, 1L);
+            }else{
+                fieldMap.put(fieldType, fieldMap.get(fieldType) + 1);
+            }
+            String applicationType = crowdTestProject.getApplicationType();
+            if(!applicationMap.containsKey(applicationType)){
+                applicationMap.put(applicationType, 1L);
+            }else{
+                applicationMap.put(applicationType, applicationMap.get(applicationType) + 1L);
+            }
+            List<CrowdTestTask> crowdTestTaskList = crowdTestProject.getCrowdTestTaskList();
+            for(CrowdTestTask crowdTestTask : crowdTestTaskList){
+                String type = crowdTestTask.getType();
+                if(!testTypeMap.containsKey(type)){
+                    testTypeMap.put(type, 1L);
+                }else{
+                    testTypeMap.put(type, testTypeMap.get(type) + 1L);
+                }
+            }
+        }
+
+        HashMap<String, Long> fieldResultMap = new HashMap<>();
+        HashMap<String, Long> applicationResultMap = new HashMap<>();
+        HashMap<String, Long> testTypeResultMap = new HashMap<>();
+
+        Iterator<String> fieldIterator = fieldMap.keySet().iterator();
+        while(fieldIterator.hasNext()){
+            String fieldCode = fieldIterator.next();
+            String fieldName = commonRepo.getFieldNameByFieldCode(fieldCode);
+            fieldResultMap.put(fieldName, fieldMap.get(fieldCode));
+        }
+
+        for(Map.Entry<String, Long> entry : applicationMap.entrySet()){
+            String applicationName = commonRepo.getApplicationNameByCode(entry.getKey());
+            applicationResultMap.put(applicationName, entry.getValue());
+        }
+
+        for(Map.Entry<String, Long> entry : testTypeMap.entrySet()){
+            String typeName = commonRepo.getTypeNameByCode(entry.getKey());
+            testTypeResultMap.put(typeName, entry.getValue());
+        }
+
+        statisticsList.add(fieldResultMap);
+        statisticsList.add(applicationResultMap);
+        statisticsList.add(testTypeResultMap);
+        return statisticsList;
+    }
+
+    @Override
+    public List<Map.Entry<String, Long>> getAgencyProjectCount() {
+        HashMap<String, Long> agencyProjectCountMap = new HashMap<>();
+        List<EvaluationAgency> evaluationAgencyList = agencyRepo.findAll();
+        for (EvaluationAgency evaluationAgency : evaluationAgencyList){
+            //获取我创建的项目列表
+            List<CrowdTestProjectPO> myProjects = projectDao.findByUserIdAndIsDeleted(evaluationAgency.getUserId(), DeletedStatus.isNotDeleted);
+            agencyProjectCountMap.put(evaluationAgency.getEvaluationAgencyName(), (long) myProjects.size());
+        }
+
+        //////借助list实现hashMap排序//////
+        //注意 ArrayList<>() 括号里要传入map.entrySet()
+        List<Map.Entry<String, Long>> resultList = new ArrayList<>(agencyProjectCountMap.entrySet());
+        Collections.sort(resultList, new Comparator<Map.Entry<String, Long>>()
+        {
+            @Override
+            public int compare(Map.Entry<String, Long> o1, Map.Entry<String, Long> o2)
+            {
+                //按照value值,重小到大排序
+//                return o1.getValue() - o2.getValue();
+                //按照value值,从大到小排序
+                return (int) (o2.getValue() - o1.getValue());
+                //按照value值,用compareTo()方法默认是从小到大排序
+//                return o1.getValue().compareTo(o2.getValue());
+            }
+        });
+        return resultList.stream().filter(result -> !result.getValue().equals(0L)).collect(Collectors.toList());
+    }
+
     Pageable getPageable(SearchConditionVO searchConditionVO) {
         int activePage = searchConditionVO.getActivePage() == 0 ? 1 : searchConditionVO.getActivePage();
         Sort sort = new Sort(Sort.Direction.DESC, "id");

+ 2 - 1
site/src/main/resources/application.yml

@@ -1,6 +1,7 @@
 spring:
   profiles:
-    active: dev-localhost
+#    active: online
+      active: dev-localhost
   cache:
     guava:
       spec: expireAfterWrite=30s

Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác