Browse Source

增加机构认证功能和机构录入功能

guochao 6 years ago
parent
commit
1f586b73c8
18 changed files with 392 additions and 37 deletions
  1. 17 0
      core/pom.xml
  2. 82 11
      core/src/main/java/com/mooctest/crowd/domain/controller/CrowdTestProjectController.java
  3. 0 0
      core/src/main/java/com/mooctest/crowd/domain/controller/TestUserController.java
  4. 3 0
      core/src/main/java/com/mooctest/crowd/domain/dao/EvaluationAgencyDao.java
  5. 10 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/AuthenticationStatus.java
  6. 101 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestProject.java
  7. 1 1
      core/src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestTask.java
  8. 6 6
      core/src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestTaskStatus.java
  9. 2 2
      core/src/main/java/com/mooctest/crowd/domain/domainobject/DeletedStatus.java
  10. 6 2
      core/src/main/java/com/mooctest/crowd/domain/domainobject/EvaluationAgency.java
  11. 16 4
      core/src/main/java/com/mooctest/crowd/domain/domainobject/User.java
  12. 11 3
      core/src/main/java/com/mooctest/crowd/domain/model/CrowdTestProjectPO.java
  13. 1 1
      core/src/main/java/com/mooctest/crowd/domain/model/CrowdTestTaskPO.java
  14. 12 0
      core/src/main/java/com/mooctest/crowd/domain/model/EvaluationAgencyPO.java
  15. 7 7
      core/src/main/java/com/mooctest/crowd/domain/repository/CrowdTestProjectRepo.java
  16. 2 0
      core/src/main/java/com/mooctest/crowd/domain/repository/IUserRepo.java
  17. 15 0
      core/src/main/java/com/mooctest/crowd/domain/repository/UserRepo.java
  18. 100 0
      core/src/main/java/com/mooctest/crowd/domain/util/FileUtil.java

+ 17 - 0
core/pom.xml

@@ -107,6 +107,23 @@
             <version>RELEASE</version>
             <scope>compile</scope>
         </dependency>
+
+        <!-- https://mvnrepository.com/artifact/cn.afterturn/easypoi-spring-boot-starter -->
+        <dependency>
+            <groupId>cn.afterturn</groupId>
+            <artifactId>easypoi-base</artifactId>
+            <version>3.0.3</version>
+        </dependency>
+        <dependency>
+            <groupId>cn.afterturn</groupId>
+            <artifactId>easypoi-web</artifactId>
+            <version>3.0.3</version>
+        </dependency>
+        <dependency>
+            <groupId>cn.afterturn</groupId>
+            <artifactId>easypoi-annotation</artifactId>
+            <version>3.0.3</version>
+        </dependency>
     </dependencies>
     <build>
         <plugins>

+ 82 - 11
core/src/main/java/com/mooctest/crowd/domain/controller/CrowdTestProjectController.java

@@ -2,13 +2,17 @@ package com.mooctest.crowd.domain.controller;
 
 import com.google.gson.Gson;
 import com.mooctest.crowd.domain.domainobject.*;
+import com.mooctest.crowd.domain.model.CrowdTestProjectPO;
 import com.mooctest.crowd.domain.repository.CrowdTestProjectRepo;
 import com.mooctest.crowd.domain.repository.UserRepo;
+import com.mooctest.crowd.domain.util.Converter;
+import com.mooctest.crowd.domain.util.FileUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.sql.Timestamp;
 import java.util.ArrayList;
@@ -137,7 +141,7 @@ public class CrowdTestProjectController {
 
     @RequestMapping(value = "modifyProject/{crowdTestProjectCode}/{linkMan}", method = RequestMethod.GET)
     public void modifyCrowdTestProject(@PathVariable("crowdTestProjectCode") String crowdTestProjectCode,@PathVariable("linkMan") String linkMan){
-        CrowdTestProject crowdTestProjectModify = new CrowdTestProject();
+        CrowdTestProject crowdTestProjectModify;
 
         CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByProjectCode(crowdTestProjectCode);
         Gson gson = new Gson();
@@ -203,7 +207,7 @@ public class CrowdTestProjectController {
         crowdTestProject.setLinkMan("郭超");
         crowdTestProject.setLinkManMobile("13657094936");
         crowdTestProject.setQuotedPrice(200.00);
-        crowdTestProject.setDeadTime(new Timestamp(getNextDay(new Date(System.currentTimeMillis())).getTime()));
+        crowdTestProject.setDeadTime(new Timestamp(getNextDay(new Date(System.currentTimeMillis()),1).getTime()));
         crowdTestProject.setCreateTime(new Timestamp(System.currentTimeMillis()));
 
         User user = userRepo.getByID(userId);
@@ -267,7 +271,7 @@ public class CrowdTestProjectController {
         crowdTestTask.setName(taskName);
         crowdTestTask.setCrowdTestProjectCode(crowdTestProjectCode);
         crowdTestTask.setQuotedPrice(200.00);
-        crowdTestTask.setDeadTime(new Timestamp(getNextDay(new Date(System.currentTimeMillis())).getTime()));
+        crowdTestTask.setDeadTime(new Timestamp(getNextDay(new Date(System.currentTimeMillis()),1).getTime()));
         crowdTestTask.setCreateTime(new Timestamp(System.currentTimeMillis()));
 
         //具体操作
@@ -446,18 +450,85 @@ public class CrowdTestProjectController {
         return crowdTestProjectRepo.getByProjectCode(crowdTestProjectResult.getCode()).toString();
     }
 
+
+    /**
+     * 通过EXCEL向数据库中导入众包项目文件,并补全项目中任务和报告的数据
+     * @param file
+     * @return
+     */
+    @RequestMapping(value = "projectListImportByExcel", method = RequestMethod.GET)
+    public String projectListImportByExcel(MultipartFile file){
+        //解析excel
+        List<CrowdTestProjectPO> crowdTestProjectPOList = FileUtil.importExcel(file,1,1,CrowdTestProjectPO.class);
+
+//        List<CrowdTestProjectPO> crowdTestProjectPOList = new ArrayList<>();
+//        CrowdTestProjectPO crowdTestProjectPO = new CrowdTestProjectPO();
+//        crowdTestProjectPO.setName("途牛APP");
+//        crowdTestProjectPO.setPlatform("[1,2]");
+//        crowdTestProjectPO.setLinkMan("孙加辉");
+//        crowdTestProjectPO.setLinkManMobile("13567908766");
+//        crowdTestProjectPO.setType("[1]");
+//        crowdTestProjectPO.setDescription("测试项目中存在的bug");
+//        crowdTestProjectPOList.add(crowdTestProjectPO);
+
+        for(int i = 0; i < crowdTestProjectPOList.size(); i++){
+            CrowdTestProject crowdTestProject = Converter.convert(CrowdTestProject.class, crowdTestProjectPOList.get(i));
+            CrowdTestProject crowdTestProjectResult = crowdTestProject.setTaskAndReportData();
+            //TODO 保存数据库
+            crowdTestProjectRepo.saveCrowdTestProject(crowdTestProjectResult);
+
+        }
+        System.out.println("共导入数据【"+crowdTestProjectPOList.size()+"】行");
+        return "success";
+    }
+
+
+    /**
+     * 通过表单向数据库中导入众包项目文件,并补全项目中任务和报告的数据
+     * @return
+     */
+    @RequestMapping(value = "projectListImportByForm", method = RequestMethod.GET)
+    public String projectListImportByForm(){
+
+        //数据准备
+        CrowdTestProject crowdTestProject = new CrowdTestProject();
+        crowdTestProject.setName("百度APP");
+        crowdTestProject.setPlatform("[1,2]");
+        crowdTestProject.setLinkMan("薛晓波");
+        crowdTestProject.setLinkManMobile("13567908766");
+        crowdTestProject.setType("[1]");
+        crowdTestProject.setDescription("测试项目中存在的bug");
+
+        //具体操作
+        CrowdTestProject crowdTestProjectResult = crowdTestProject.setTaskAndReportData();
+        //TODO 保存数据库
+        crowdTestProjectRepo.saveCrowdTestProject(crowdTestProjectResult);
+        return "success";
+    }
+
+
+
     /**
-     * 计算指定时间的下一天
-     * @param date 指定时间
-     * @return  指定时间的下一天
+     * 计算指定时间的后几天
      */
-    private Date getNextDay(Date date){
+    private Date getNextDay(Date date, int day){
         //计算相关的时间间隔
-        long addTime=1;
-        addTime*=1;
-        addTime*=24*3600*1000;
+        long addTime = 24*3600*1000;
+        addTime *= day;
         //把时间间隔转换为毫秒数
-        Date nextDate=new Date(date.getTime()+addTime);
+        Date nextDate=new Date(date.getTime() + addTime);
         return nextDate;
     }
+
+    /**
+     * 计算指定时间的前几天
+     */
+    private Date getBeforeDay(Date date, int day){
+        //计算相关的时间间隔
+        long subTime = 24*3600*1000;
+        subTime *= day;
+        //把时间间隔转换为毫秒数
+        Date beforeDate=new Date(date.getTime() - subTime);
+        return beforeDate;
+    }
 }

File diff suppressed because it is too large
+ 0 - 0
core/src/main/java/com/mooctest/crowd/domain/controller/TestUserController.java


+ 3 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/EvaluationAgencyDao.java

@@ -5,6 +5,7 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.repository.PagingAndSortingRepository;
 
 import javax.transaction.Transactional;
+import java.util.List;
 import java.util.Optional;
 
 @Transactional
@@ -14,6 +15,8 @@ public interface EvaluationAgencyDao extends PagingAndSortingRepository<Evaluati
 
     EvaluationAgencyPO findByUserId(Long userId);
 
+    List<EvaluationAgencyPO> findByIsAuthentication(int isAuthentication);
+
     @Override
     Iterable<EvaluationAgencyPO> findAllById(Iterable<Long> iterable);
 

+ 10 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/AuthenticationStatus.java

@@ -0,0 +1,10 @@
+package com.mooctest.crowd.domain.domainobject;
+
+/**
+ * @author guochao
+ * @date 2019/7/9 14:21
+ */
+public class AuthenticationStatus {
+    public static final int isNotAuthenticated = 0; //未认证
+    public static final int isAuthenticated = 1;    //已认证
+}

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

@@ -7,6 +7,7 @@ import lombok.Data;
 
 import java.sql.Timestamp;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -255,4 +256,104 @@ public class CrowdTestProject {
         this.setStatus(CrowdTestProjectStatus.HAS_SPLITED);
     }
 
+    /**
+     * 设置任务和报告的数据
+     * @return
+     */
+    public CrowdTestProject setTaskAndReportData() {
+        this.setCode("PROJ-"+ this.getName()); //换成名称
+        this.setUserId(11L);
+        this.setRegionalManagerId(13L);
+        this.setProjectDistributionTypeId(1L);
+        this.setDistributionProvince("江苏");
+        this.setDistributionCity("南京");
+        this.setFixedPrice(100000.00);
+        this.setQuotedPrice(100000.00);
+        this.setStatus(CrowdTestProjectStatus.HAS_FINISHED);
+        this.setIsDeleted(DeletedStatus.isNotDeleted);
+        this.setCreateTime(new Timestamp(getBeforeDay(new Date(System.currentTimeMillis()),5).getTime()));
+        this.setDeadTime(new Timestamp(getBeforeDay(new Date(System.currentTimeMillis()),1).getTime()));
+        
+        //初始化任务
+        int taskCount = 5;
+        List<CrowdTestTask> crowdTestTaskList = new ArrayList<>();
+        for(int j = 0; j < taskCount; j++){
+            CrowdTestTask crowdTestTask = new CrowdTestTask();
+            crowdTestTask.setCode(this.getCode()+"-TASK-任务"+(j+1));
+            crowdTestTask.setName(this.getName() + "-任务" + (j+1));
+            crowdTestTask.setCrowdTestProjectCode(this.getCode());
+            crowdTestTask.setEvaluationAgencyId(12L);
+            crowdTestTask.setType(0);
+            crowdTestTask.setDistributionType(this.getProjectDistributionTypeId());
+            crowdTestTask.setDistributionProvince(this.getDistributionProvince());
+            crowdTestTask.setDistributionCity(this.getDistributionCity());
+            crowdTestTask.setDescription("这是"+this.getName()+"测试项目的第"+(j+1)+"个测试任务");
+            crowdTestTask.setQuotedPrice(this.getQuotedPrice() / taskCount);
+            crowdTestTask.setFixedPrice(this.getFixedPrice() / taskCount);
+            crowdTestTask.setStatus(CrowdTestTaskStatus.HAS_FINISHED);
+            crowdTestTask.setIsDeleted(DeletedStatus.isNotDeleted);
+            crowdTestTask.setCreateTime(new Timestamp(getBeforeDay(new Date(System.currentTimeMillis()),4).getTime()));
+            crowdTestTask.setDeadTime(new Timestamp(getBeforeDay(new Date(System.currentTimeMillis()),2).getTime()));
+
+            //初始化任务报告
+            int reportCount = 2;
+            List<CrowdTestReport> crowdTestReportList = new ArrayList<>();
+
+            for(int k = 0; k < reportCount; k++){
+                CrowdTestReport crowdTestReport = new CrowdTestReport();
+                crowdTestReport.setCode(crowdTestTask.getCode()+"REPO-报告"+(k+1));
+                crowdTestReport.setName(crowdTestTask.getName()+"-报告"+(k+1));
+                crowdTestReport.setDependencyCode(crowdTestTask.getCode());
+                crowdTestReport.setType(0);
+                crowdTestReport.setScope(0);
+                crowdTestReport.setContent(crowdTestTask.getDescription()+"的第"+(k+1)+"的测试报告");
+                crowdTestReport.setConclusion("TEST SUCCESS");
+                crowdTestReport.setIsDeleted(DeletedStatus.isNotDeleted);
+                crowdTestReport.setCreateTime(new Timestamp(getBeforeDay(new Date(System.currentTimeMillis()),3).getTime()));
+                crowdTestReportList.add(crowdTestReport);
+            }
+            crowdTestTask.setCrowdTestReportList(crowdTestReportList);
+            crowdTestTaskList.add(crowdTestTask);
+        }
+        //初始化项目报告
+        CrowdTestReport crowdTestReportForProject = new CrowdTestReport();
+        crowdTestReportForProject.setCode(this.getCode()+"-项目报告");
+        crowdTestReportForProject.setName(this.getName()+"-项目报告");
+        crowdTestReportForProject.setDependencyCode(this.getCode());
+        crowdTestReportForProject.setType(0);
+        crowdTestReportForProject.setScope(0);
+        crowdTestReportForProject.setContent(this.getName()+"的项目报告");
+        crowdTestReportForProject.setConclusion("PROJECT TEST SUCCESS");
+        crowdTestReportForProject.setIsDeleted(DeletedStatus.isNotDeleted);
+        crowdTestReportForProject.setCreateTime(new Timestamp(getBeforeDay(new Date(System.currentTimeMillis()),2).getTime()));
+
+        this.setCrowdTestReportForProject(crowdTestReportForProject);
+        this.setCrowdTestTaskList(crowdTestTaskList);
+
+        return this;
+    }
+
+    /**
+     * 计算指定时间的后几天
+     */
+    private Date getNextDay(Date date, int day){
+        //计算相关的时间间隔
+        long addTime = 24*3600*1000;
+        addTime *= day;
+        //把时间间隔转换为毫秒数
+        Date nextDate=new Date(date.getTime() + addTime);
+        return nextDate;
+    }
+
+    /**
+     * 计算指定时间的前几天
+     */
+    private Date getBeforeDay(Date date, int day){
+        //计算相关的时间间隔
+        long subTime = 24*3600*1000;
+        subTime *= day;
+        //把时间间隔转换为毫秒数
+        Date beforeDate=new Date(date.getTime() - subTime);
+        return beforeDate;
+    }
 }

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

@@ -21,7 +21,7 @@ public class CrowdTestTask {
     private int type;
     private String description;
     private String requirementFile;
-    private int distributionType;
+    private Long distributionType;
     private String distributionProvince;
     private String distributionCity;
     private Double quotedPrice;

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

@@ -5,10 +5,10 @@ package com.mooctest.crowd.domain.domainobject;
  * @date 2019/7/9 14:21
  */
 public class CrowdTestTaskStatus {
-    public static int HAS_CREATED = 0;
-    public static int HAS_RELEASED = 1;
-    public static int HAS_RECEIVED = 2;
-    public static int HAS_REPORTED = 3;
-    public static int HAS_COMMITED = 4;
-    public static int HAS_FINISHED = 5;
+    public static final int HAS_CREATED = 0;  //创建任务
+    public static final int HAS_RELEASED = 1; //发布任务
+    public static final int HAS_RECEIVED = 2; //接受任务
+    public static final int HAS_REPORTED = 3; //存在任务报告
+    public static final int HAS_COMMITED = 4; //提交任务
+    public static final int HAS_FINISHED = 5; //结束任务
 }

+ 2 - 2
core/src/main/java/com/mooctest/crowd/domain/domainobject/DeletedStatus.java

@@ -5,6 +5,6 @@ package com.mooctest.crowd.domain.domainobject;
  * @date 2019/7/9 14:21
  */
 public class DeletedStatus {
-    public static int isNotDeleted = 0;
-    public static int isDeleted = 1;
+    public static final int isNotDeleted = 0; //未删除
+    public static final int isDeleted = 1;    //已删除
 }

+ 6 - 2
core/src/main/java/com/mooctest/crowd/domain/domainobject/EvaluationAgency.java

@@ -18,8 +18,11 @@ public class EvaluationAgency {
     private String abilities;
     private String resources;
     private String agencyPhoto;
+    private int isAuthentication;
+    private int isDeleted;
     private Timestamp updateTime;
     private Timestamp expireTime;
+    private Timestamp createTime;
 
     @Override
     public String toString() {
@@ -32,10 +35,11 @@ public class EvaluationAgency {
                 ", abilities='" + abilities + '\'' +
                 ", resources='" + resources + '\'' +
                 ", agencyPhoto='" + agencyPhoto + '\'' +
+                ", isAuthentication=" + isAuthentication +
+                ", isDeleted=" + isDeleted +
                 ", updateTime=" + updateTime +
                 ", expireTime=" + expireTime +
+                ", createTime=" + createTime +
                 '}';
     }
-
-
 }

+ 16 - 4
core/src/main/java/com/mooctest/crowd/domain/domainobject/User.java

@@ -27,11 +27,9 @@ public class User {
     private int isDeleted;
     private Timestamp createTime;
 
-    private EvaluationAgency evaluationAgency;
-//    private List<RegionalManager> regionalManagerInfo;
-
     private RegionalManager regionalManager;
     private List<Role> roleList;
+    private EvaluationAgency evaluationAgency;
 
     @Override
     public String toString() {
@@ -48,9 +46,9 @@ public class User {
                 ", isAvailable=" + isAvailable +
                 ", isDeleted=" + isDeleted +
                 ", createTime=" + createTime +
-                ", evaluationAgency=" + evaluationAgency +
                 ", regionalManager=" + regionalManager +
                 ", roleList=" + roleList +
+                ", evaluationAgency=" + evaluationAgency +
                 '}';
     }
 
@@ -239,4 +237,18 @@ public class User {
         }
         return crowdTestProject;
     }
+
+
+    public User applyAgencyAuthentication(EvaluationAgency evaluationAgency) {
+        evaluationAgency.setUserId(this.id);
+        evaluationAgency.setIsAuthentication(AuthenticationStatus.isNotAuthenticated);
+        evaluationAgency.setIsDeleted(DeletedStatus.isNotDeleted);
+        this.setEvaluationAgency(evaluationAgency);
+        return this;
+    }
+
+    public User passApplication() {
+        this.getEvaluationAgency().setIsAuthentication(AuthenticationStatus.isAuthenticated);
+        return this;
+    }
 }

+ 11 - 3
core/src/main/java/com/mooctest/crowd/domain/model/CrowdTestProjectPO.java

@@ -1,5 +1,6 @@
 package com.mooctest.crowd.domain.model;
 
+import cn.afterturn.easypoi.excel.annotation.Excel;
 import lombok.Data;
 
 import javax.persistence.*;
@@ -22,6 +23,7 @@ public class CrowdTestProjectPO {
     @Column(name = "CTP_CODE")
     private String code;
 
+    @Excel(name="项目名称")
     @Column(name = "CTP_NAME")
     private String name;
 
@@ -34,21 +36,26 @@ public class CrowdTestProjectPO {
     @Column(name = "CTP_PDT_ID")
     private Long projectDistributionTypeId;
 
-    @Column(name = "CTP_DESCRIPTION")
-    private String description;
-
+    @Excel(name="测试平台",replace = { "导师_1", "博士后_2","博士_3", "硕士_4","无_5"},orderNum = "0")
     @Column(name = "CTP_PLATFORM")
     private String platform;
 
+    @Excel(name="项目联系人")
     @Column(name = "CTP_LINK_MAN")
     private String linkMan;
 
+    @Excel(name="联系手机号")
     @Column(name = "CTP_Link_MAN_MOBILE")
     private String linkManMobile;
 
+    @Excel(name="项目类型")
     @Column(name = "CTP_TYPE")
     private String type;
 
+    @Excel(name="需求描述")
+    @Column(name = "CTP_DESCRIPTION")
+    private String description;
+
     @Column(name = "CTP_DISTRIBUTION_PROVINCE")
     private String distributionProvince;
 
@@ -64,6 +71,7 @@ public class CrowdTestProjectPO {
     @Column(name = "CTP_QUOTED_PRICE")
     private Double quotedPrice;
 
+//    @Excel(name="项目定价")
     @Column(name = "CTP_FIXED_PRICE")
     private Double fixedPrice;
 

+ 1 - 1
core/src/main/java/com/mooctest/crowd/domain/model/CrowdTestTaskPO.java

@@ -40,7 +40,7 @@ CrowdTestTaskPO {
     private String requirementFile;
 
     @Column(name = "CTT_DISTRIBUTION_TYPE")
-    private int distributionType;
+    private Long distributionType;
 
     @Column(name = "CTT_DISTRIBUTION_PROVINCE")
     private String distributionProvince;

+ 12 - 0
core/src/main/java/com/mooctest/crowd/domain/model/EvaluationAgencyPO.java

@@ -39,12 +39,21 @@ public class EvaluationAgencyPO{
     @Column(name = "EA_PHOTO")
     private String agencyPhoto;
 
+    @Column(name = "EA_IS_AUTHENTICATION")
+    private int isAuthentication;
+
+    @Column(name = "EA_IS_DELETED")
+    private int isDeleted;
+
     @Column(name = "EA_UPDATE_TIME")
     private Timestamp updateTime;
 
     @Column(name = "EA_EXPIRE_TIME")
     private Timestamp expireTime;
 
+    @Column(name = "EA_CREATE_TIME")
+    private Timestamp createTime;
+
     @Override
     public String toString() {
         return "EvaluationAgencyPO{" +
@@ -56,8 +65,11 @@ public class EvaluationAgencyPO{
                 ", abilities='" + abilities + '\'' +
                 ", resources='" + resources + '\'' +
                 ", agencyPhoto='" + agencyPhoto + '\'' +
+                ", isAuthentication=" + isAuthentication +
+                ", isDeleted=" + isDeleted +
                 ", updateTime=" + updateTime +
                 ", expireTime=" + expireTime +
+                ", createTime=" + createTime +
                 '}';
     }
 }

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

@@ -84,13 +84,6 @@ public class CrowdTestProjectRepo implements ICrowdTestProjectRepo {
         CrowdTestProjectPO crowdTestProjectPO = Converter.convert(CrowdTestProjectPO.class, crowdTestProject);
         crowdTestProjectDao.save(crowdTestProjectPO);
 
-        //保存项目报告
-        CrowdTestReport crowdTestReportForProject = crowdTestProject.getCrowdTestReportForProject();
-        if(crowdTestReportForProject != null){
-            CrowdTestReportPO crowdTestReportForProjectPO = Converter.convert(CrowdTestReportPO.class, crowdTestReportForProject);
-            crowdTestReportDao.save(crowdTestReportForProjectPO);
-        }
-
         List<CrowdTestTask> crowdTestTaskList = crowdTestProject.getCrowdTestTaskList();
         if(crowdTestTaskList != null){
             for(CrowdTestTask crowdTestTask : crowdTestTaskList){
@@ -105,6 +98,13 @@ public class CrowdTestProjectRepo implements ICrowdTestProjectRepo {
                 }
             }
         }
+
+        //保存项目报告
+        CrowdTestReport crowdTestReportForProject = crowdTestProject.getCrowdTestReportForProject();
+        if(crowdTestReportForProject != null){
+            CrowdTestReportPO crowdTestReportForProjectPO = Converter.convert(CrowdTestReportPO.class, crowdTestReportForProject);
+            crowdTestReportDao.save(crowdTestReportForProjectPO);
+        }
     }
 
 //    @Override

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

@@ -29,4 +29,6 @@ public interface IUserRepo {
     User saveUser(User user) throws RoleNotFoundException;
 
     User saveUserAndRole(User user);
+
+    List<User> getApplyEvaluationAgencyByIsAuthenticated();
 }

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

@@ -80,6 +80,21 @@ public class UserRepo implements IUserRepo {
         return allUserResult;
     }
 
+    /**
+     * 获取机构认证的申请
+     * @return
+     * @throws RoleNotFoundException
+     */
+    @Override
+    public List<User> getApplyEvaluationAgencyByIsAuthenticated(){
+        List<UserPO> userPOList = new ArrayList<>();
+        evaluationAgencyDao.findByIsAuthentication(AuthenticationStatus.isNotAuthenticated).forEach(evaluationAgencyPO -> {
+            userPOList.add(userDao.findById(evaluationAgencyPO.getUserId()).get());
+        });
+        List<User> allUserResult = getUserAndRoleAndPermissionListByUserPOList(userPOList);
+        return allUserResult;
+    }
+
     @Override
     public List<User> getAllUser() throws RoleNotFoundException {
         Iterable<UserPO> allUserPO = userDao.findAll();

+ 100 - 0
core/src/main/java/com/mooctest/crowd/domain/util/FileUtil.java

@@ -0,0 +1,100 @@
+package com.mooctest.crowd.domain.util;
+
+import cn.afterturn.easypoi.excel.ExcelExportUtil;
+import cn.afterturn.easypoi.excel.ExcelImportUtil;
+import cn.afterturn.easypoi.excel.entity.ExportParams;
+import cn.afterturn.easypoi.excel.entity.ImportParams;
+import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.IOException;
+import java.net.URLEncoder;
+import java.util.List;
+import java.util.Map;
+import java.util.NoSuchElementException;
+
+/**
+ * Created by 郭超 on 2019/8/3.
+ */
+public class FileUtil {
+    public static void exportExcel(List<?> list, String title, String sheetName, Class<?> pojoClass, String fileName, boolean isCreateHeader, HttpServletResponse response){
+        ExportParams exportParams = new ExportParams(title, sheetName);
+        exportParams.setCreateHeadRows(isCreateHeader);
+        defaultExport(list, pojoClass, fileName, response, exportParams);
+
+    }
+    public static void exportExcel(List<?> list, String title, String sheetName, Class<?> pojoClass,String fileName, HttpServletResponse response){
+        defaultExport(list, pojoClass, fileName, response, new ExportParams(title, sheetName));
+    }
+    public static void exportExcel(List<Map<String, Object>> list, String fileName, HttpServletResponse response){
+        defaultExport(list, fileName, response);
+    }
+
+    private static void defaultExport(List<?> list, Class<?> pojoClass, String fileName, HttpServletResponse response, ExportParams exportParams) {
+        Workbook workbook = ExcelExportUtil.exportExcel(exportParams,pojoClass,list);
+        if (workbook != null);
+        downLoadExcel(fileName, response, workbook);
+    }
+
+    private static void downLoadExcel(String fileName, HttpServletResponse response, Workbook workbook) {
+        try {
+            response.setCharacterEncoding("UTF-8");
+            response.setHeader("content-Type", "application/vnd.ms-excel");
+            response.setHeader("Content-Disposition",
+                    "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
+            workbook.write(response.getOutputStream());
+        } catch (IOException e) {
+//            throw new NormalException(e.getMessage());
+            System.out.println("52....");
+        }
+    }
+    private static void defaultExport(List<Map<String, Object>> list, String fileName, HttpServletResponse response) {
+        Workbook workbook = ExcelExportUtil.exportExcel(list, ExcelType.HSSF);
+        if (workbook != null);
+        downLoadExcel(fileName, response, workbook);
+    }
+
+    public static <T> List<T> importExcel(String filePath,Integer titleRows,Integer headerRows, Class<T> pojoClass){
+        if (StringUtils.isBlank(filePath)){
+            return null;
+        }
+        ImportParams params = new ImportParams();
+        params.setTitleRows(titleRows);
+        params.setHeadRows(headerRows);
+        List<T> list = null;
+        try {
+            list = ExcelImportUtil.importExcel(new File(filePath), pojoClass, params);
+        }catch (NoSuchElementException e){
+//            throw new NormalException("模板不能为空");
+            System.out.println("模板不能为空");
+        } catch (Exception e) {
+            e.printStackTrace();
+//            throw new NormalException(e.getMessage());
+            System.out.println("76...");
+        }
+        return list;
+    }
+    public static <T> List<T> importExcel(MultipartFile file, Integer titleRows, Integer headerRows, Class<T> pojoClass){
+        if (file == null){
+            return null;
+        }
+        ImportParams params = new ImportParams();
+        params.setTitleRows(titleRows);
+        params.setHeadRows(headerRows);
+        List<T> list = null;
+        try {
+            list = ExcelImportUtil.importExcel(file.getInputStream(), pojoClass, params);
+        }catch (NoSuchElementException e){
+//            throw new NormalException("excel文件不能为空");
+            System.out.println("excel文件不能为空");
+        } catch (Exception e) {
+//            throw new NormalException(e.getMessage());
+            System.out.println("94...");
+        }
+        return list;
+    }
+}

Some files were not shown because too many files changed in this diff