Bladeren bron

增加项目最终报告

guochao 6 jaren geleden
bovenliggende
commit
9dfb6f9860

+ 6 - 0
core/pom.xml

@@ -101,6 +101,12 @@
             <artifactId>druid-spring-boot-starter</artifactId>
             <version>1.1.10</version>
         </dependency>
+        <dependency>
+            <groupId>org.jetbrains</groupId>
+            <artifactId>annotations</artifactId>
+            <version>RELEASE</version>
+            <scope>compile</scope>
+        </dependency>
     </dependencies>
     <build>
         <plugins>

+ 101 - 19
core/src/main/java/com/mooctest/crowd/domain/controller/CrowdTestProjectController.java

@@ -60,11 +60,65 @@ public class CrowdTestProjectController {
         return allCrowdTestProject.toString();
     }
 
-    @RequestMapping(value = "deleteByProjectCode/{crowdTestProjectCode}", method = RequestMethod.GET)
-    public void deleteCrowdTestProjectByProjectCode(@PathVariable("crowdTestProjectCode") String crowdTestProjectCode) {
-        crowdTestProjectRepo.removeCrowdTestProject(crowdTestProjectCode);
+    /**
+     * 删除项目(普通用户)
+     * @param crowdTestProjectCode
+     * @return
+     */
+    @RequestMapping(value = "deleteProject/{crowdTestProjectCode}", method = RequestMethod.GET)
+    public String deleteCrowdTestProjectByProjectCode(@PathVariable("crowdTestProjectCode") String crowdTestProjectCode) {
+        CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByProjectCode(crowdTestProjectCode);
+        CrowdTestProject crowdTestProjectResult = crowdTestProject.removeCrowdTestProject();
+        crowdTestProjectRepo.saveCrowdTestProject(crowdTestProjectResult);
+        return crowdTestProjectRepo.getAllCrowdTestProject().toString();
+    }
+
+    /**
+     * 删除任务(区域管理员)
+     * @param crowdTestProjectCode
+     * @param crowdTestTaskCode
+     * @return
+     */
+    @RequestMapping(value = "deleteTask/{crowdTestProjectCode}/{crowdTestTaskCode}", method = RequestMethod.GET)
+    public String deleteCrowdTestTask(@PathVariable("crowdTestProjectCode") String crowdTestProjectCode,
+                                      @PathVariable("crowdTestTaskCode") String crowdTestTaskCode) {
+        CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByProjectCode(crowdTestProjectCode);
+        CrowdTestProject crowdTestProjectResult = crowdTestProject.removeCrowdTestTask(crowdTestTaskCode);
+        crowdTestProjectRepo.saveCrowdTestProject(crowdTestProjectResult);
+        return crowdTestProjectRepo.getAllCrowdTestProject().toString();
+    }
+
+    /**
+     * 删除任务报告(测评机构)
+     * @param crowdTestProjectCode
+     * @param crowdTestTaskCode
+     * @param crowdTestReportCode
+     * @return
+     */
+    @RequestMapping(value = "deleteReport/{crowdTestProjectCode}/{crowdTestTaskCode}/{crowdTestReportCode}", method = RequestMethod.GET)
+    public String deleteCrowdTestReport(@PathVariable("crowdTestProjectCode") String crowdTestProjectCode,
+                                        @PathVariable("crowdTestTaskCode") String crowdTestTaskCode,
+                                        @PathVariable("crowdTestReportCode") String crowdTestReportCode) {
+        CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByProjectCode(crowdTestProjectCode);
+        CrowdTestProject crowdTestProjectResult = crowdTestProject.removeCrowdTestReport(crowdTestTaskCode,crowdTestReportCode);
+        crowdTestProjectRepo.saveCrowdTestProject(crowdTestProjectResult);
+        return crowdTestProjectRepo.getAllCrowdTestProject().toString();
+    }
+
+    /**
+     * 删除项目报告(区域管理员)
+     * @param crowdTestProjectCode
+     * @return
+     */
+    @RequestMapping(value = "deleteProjectReport/{crowdTestProjectCode}", method = RequestMethod.GET)
+    public String deleteCrowdTestReport(@PathVariable("crowdTestProjectCode") String crowdTestProjectCode) {
+        CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByProjectCode(crowdTestProjectCode);
+        CrowdTestProject crowdTestProjectResult = crowdTestProject.removeCrowdTestProjectReport();
+        crowdTestProjectRepo.saveCrowdTestProject(crowdTestProjectResult);
+        return crowdTestProjectRepo.getAllCrowdTestProject().toString();
     }
 
+
     @RequestMapping(value = "deleteListByProjectCode/{crowdTestProjectCode1}/{crowdTestProjectCode2}", method = RequestMethod.GET)
     public void deleteCrowdTestProjectByProjectCode(@PathVariable("crowdTestProjectCode1") String crowdTestProjectCode1,
                                                     @PathVariable("crowdTestProjectCode2") String crowdTestProjectCode2) {
@@ -198,7 +252,7 @@ public class CrowdTestProjectController {
     }
 
     /**
-     * 项目中新建任务(区域管理员)
+     * 项目中新建任务(区域管理员拆分项目
      * @param crowdTestProjectCode
      * @param taskName
      * @return
@@ -248,18 +302,18 @@ public class CrowdTestProjectController {
 
     /**
      * 接收任务(测评机构)
-     * @param userForAgencyManagerId
+     * @param userForEvaluationAgencyId
      * @param crowdTestProjectCode
      * @param crowdTestTaskCode
      * @return
      */
-    @RequestMapping(value = "receiveTask/{userForAgencyManagerId}/{crowdTestProjectCode}/{crowdTestTaskCode}", method = RequestMethod.GET)
-    public String receiveTaskByProjectCode(@PathVariable("userForAgencyManagerId") Long userForAgencyManagerId, @PathVariable("crowdTestProjectCode") String crowdTestProjectCode,
+    @RequestMapping(value = "receiveTask/{userForEvaluationAgencyId}/{crowdTestProjectCode}/{crowdTestTaskCode}", method = RequestMethod.GET)
+    public String receiveTaskByProjectCode(@PathVariable("userForEvaluationAgencyId") Long userForEvaluationAgencyId, @PathVariable("crowdTestProjectCode") String crowdTestProjectCode,
                                                     @PathVariable("crowdTestTaskCode") String crowdTestTaskCode) {
         CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByProjectCode(crowdTestProjectCode);
 
-        User userForAgencyManager = userRepo.getByID(userForAgencyManagerId);
-        CrowdTestProject crowdTestProjectResult = userForAgencyManager.receiveTask(crowdTestProject, crowdTestTaskCode);
+        User userForEvaluationAgency = userRepo.getByID(userForEvaluationAgencyId);
+        CrowdTestProject crowdTestProjectResult = userForEvaluationAgency.receiveTask(crowdTestProject, crowdTestTaskCode);
         System.out.println(crowdTestProjectResult);
         crowdTestProjectRepo.saveCrowdTestProject(crowdTestProjectResult);
         return crowdTestProjectRepo.getByProjectCode(crowdTestProjectResult.getCode()).toString();
@@ -271,21 +325,21 @@ public class CrowdTestProjectController {
      * @param reportName
      * @return
      */
-    @RequestMapping(value = "createReport/{userForAgencyManagerId}/{crowdTestProjectCode}/{crowdTestTaskCode}/{reportName}", method = RequestMethod.GET)
-    public String createCrowdTestReport(@PathVariable("crowdTestProjectCode") String crowdTestProjectCode,@PathVariable("userForAgencyManagerId") Long userForAgencyManagerId,
+    @RequestMapping(value = "createReport/{userForEvaluationAgencyId}/{crowdTestProjectCode}/{crowdTestTaskCode}/{reportName}", method = RequestMethod.GET)
+    public String createCrowdTestReport(@PathVariable("crowdTestProjectCode") String crowdTestProjectCode,@PathVariable("userForEvaluationAgencyId") Long userForEvaluationAgencyId,
                                         @PathVariable("reportName") String reportName, @PathVariable("crowdTestTaskCode") String crowdTestTaskCode){
 
         CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByProjectCode(crowdTestProjectCode);
 
         //report数据准备
         CrowdTestReport crowdTestReport = new CrowdTestReport();
-        crowdTestReport.setCode(crowdTestProjectCode+crowdTestTaskCode+"_REP"+System.currentTimeMillis());
+        crowdTestReport.setCode(crowdTestTaskCode+"_REP"+System.currentTimeMillis());
         crowdTestReport.setName(reportName);
         crowdTestReport.setDependencyCode(crowdTestTaskCode);
         crowdTestReport.setCreateTime(new Timestamp(System.currentTimeMillis()));
 
-        User userForAgencyManager = userRepo.getByID(userForAgencyManagerId);
-        CrowdTestProject crowdTestProjectResult = userForAgencyManager.createCrowdTestReport(crowdTestProject, crowdTestTaskCode, crowdTestReport);
+        User userForEvaluationAgency = userRepo.getByID(userForEvaluationAgencyId);
+        CrowdTestProject crowdTestProjectResult = userForEvaluationAgency.createCrowdTestReport(crowdTestProject, crowdTestTaskCode, crowdTestReport);
         crowdTestProjectRepo.saveCrowdTestProject(crowdTestProjectResult);
         return crowdTestProjectRepo.getByProjectCode(crowdTestProjectResult.getCode()).toString();
     }
@@ -293,17 +347,17 @@ public class CrowdTestProjectController {
     /**
      * 提交任务(测评机构)
      * @param crowdTestProjectCode
-     * @param userForAgencyManagerId
+     * @param userForEvaluationAgencyId
      * @param crowdTestTaskCode
      * @return
      */
-    @RequestMapping(value = "commitTask/{userForAgencyManagerId}/{crowdTestProjectCode}/{crowdTestTaskCode}", method = RequestMethod.GET)
-    public String commitCrowdTestReport(@PathVariable("crowdTestProjectCode") String crowdTestProjectCode,@PathVariable("userForAgencyManagerId") Long userForAgencyManagerId,
+    @RequestMapping(value = "commitTask/{userForEvaluationAgencyId}/{crowdTestProjectCode}/{crowdTestTaskCode}", method = RequestMethod.GET)
+    public String commitCrowdTestReport(@PathVariable("crowdTestProjectCode") String crowdTestProjectCode,@PathVariable("userForEvaluationAgencyId") Long userForEvaluationAgencyId,
                                         @PathVariable("crowdTestTaskCode") String crowdTestTaskCode){
 
         CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByProjectCode(crowdTestProjectCode);
-        User userForAgencyManager = userRepo.getByID(userForAgencyManagerId);
-        CrowdTestProject crowdTestProjectResult = userForAgencyManager.commitCrowdTestTask(crowdTestProject, crowdTestTaskCode);
+        User userForEvaluationAgency = userRepo.getByID(userForEvaluationAgencyId);
+        CrowdTestProject crowdTestProjectResult = userForEvaluationAgency.commitCrowdTestTask(crowdTestProject, crowdTestTaskCode);
         crowdTestProjectRepo.saveCrowdTestProject(crowdTestProjectResult);
         return crowdTestProjectRepo.getByProjectCode(crowdTestProjectResult.getCode()).toString();
     }
@@ -330,6 +384,34 @@ public class CrowdTestProjectController {
     }
 
     /**
+     * 创建项目报告(区域管理员)
+     * @param crowdTestProjectCode
+     * @return
+     */
+    @RequestMapping(value = "createProjectReport/{regionalManagerId}/{crowdTestProjectCode}/{projectReportName}", method = RequestMethod.GET)
+    public String createCrowdTestReport(@PathVariable("crowdTestProjectCode") String crowdTestProjectCode,
+                                        @PathVariable("regionalManagerId") Long regionalManagerId,
+                                        @PathVariable("projectReportName") String projectReportName){
+
+        CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByProjectCode(crowdTestProjectCode);
+
+        //report数据准备
+        CrowdTestReport crowdTestReport = new CrowdTestReport();
+        crowdTestReport.setCode(crowdTestProjectCode+"_REP"+System.currentTimeMillis());
+        crowdTestReport.setName(projectReportName);
+        crowdTestReport.setDependencyCode(crowdTestProjectCode);
+        crowdTestReport.setCreateTime(new Timestamp(System.currentTimeMillis()));
+
+        User userForRegionalManager = userRepo.getByID(regionalManagerId);
+        RegionalManager regionalManager = userForRegionalManager.getRegionalManager();
+
+        CrowdTestProject crowdTestProjectResult = regionalManager.createCrowdTestProjectReport(crowdTestProject, crowdTestReport);
+
+        crowdTestProjectRepo.saveCrowdTestProject(crowdTestProjectResult);
+        return crowdTestProjectRepo.getByProjectCode(crowdTestProjectResult.getCode()).toString();
+    }
+
+    /**
      * 提交项目(区域管理员)
      * @param crowdTestProjectCode
      * @return

+ 113 - 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.BaseException;
+import com.mooctest.crowd.domain.exception.CrowdTestProjectException;
 import lombok.Data;
 
 import java.sql.Timestamp;
@@ -39,6 +40,7 @@ public class CrowdTestProject {
     private Timestamp createTime;
 
     private List<CrowdTestTask> crowdTestTaskList;
+    private CrowdTestReport crowdTestReportForProject;
 
     @Override
     public String toString() {
@@ -66,6 +68,7 @@ public class CrowdTestProject {
                 ", createTime=" + createTime +
                 ", isDeleted=" + isDeleted +
                 ", crowdTestTaskList=" + crowdTestTaskList +
+                ", crowdTestReportForProject=" + crowdTestReportForProject +
                 '}';
     }
 
@@ -135,6 +138,116 @@ public class CrowdTestProject {
         return crowdTestProject;
     }
 
+    /**
+     * 逻辑删除项目
+     * @return
+     */
+    public CrowdTestProject removeCrowdTestProject() {
+        if(this.getIsDeleted() == DeletedStatus.isDeleted){
+            throw new CrowdTestProjectException("项目已被删除,不能再次删除");
+        }else{
+            List<CrowdTestTask> crowdTestTaskList = this.getCrowdTestTaskList();
+            for(CrowdTestTask crowdTestTask : crowdTestTaskList){
+                crowdTestTask.removeCrowdTestTask();
+                List<CrowdTestReport> crowdTestReportList = crowdTestTask.getCrowdTestReportList();
+                for(CrowdTestReport crowdTestReport : crowdTestReportList){
+                    crowdTestReport.removeCrowdTestReport();
+                }
+            }
+            this.setStatus(DeletedStatus.isDeleted);
+        }
+        return this;
+    }
+
+    /**
+     * 逻辑删除任务
+     * @param crowdTestTaskCode
+     * @return
+     */
+    public CrowdTestProject removeCrowdTestTask(String crowdTestTaskCode) {
+        List<CrowdTestTask> crowdTestTaskList = this.getCrowdTestTaskList();
+        for(CrowdTestTask crowdTestTask : crowdTestTaskList){
+            if(crowdTestTaskCode.equals(crowdTestTask.getCode())){
+                crowdTestTask.removeCrowdTestTask();
+                List<CrowdTestReport> crowdTestReportList = crowdTestTask.getCrowdTestReportList();
+                for(CrowdTestReport crowdTestReport : crowdTestReportList){
+                    crowdTestReport.removeCrowdTestReport();
+                }
+            }
+        }
+
+        boolean judgeHasCrowdTestTask = false;
+        for(CrowdTestTask crowdTestTask : this.getCrowdTestTaskList()){
+            if(crowdTestTask.getIsDeleted() == DeletedStatus.isNotDeleted){
+                judgeHasCrowdTestTask = true;
+            }
+        }
+
+        // 如果删除任务后,项目中不存在任务,把项目状态从HAS_SPLITED改为HAS_RECEIVED
+        if(!judgeHasCrowdTestTask){
+            this.setStatus(CrowdTestProjectStatus.HAS_RECEIVED);
+        }
+        return this;
+    }
+
+    /**
+     * 逻辑删除报告
+     * @param crowdTestTaskCode
+     * @param crowdTestReportCode
+     * @return
+     */
+    public CrowdTestProject removeCrowdTestReport(String crowdTestTaskCode, String crowdTestReportCode) {
+        List<CrowdTestTask> crowdTestTaskList = this.getCrowdTestTaskList();
+        for(CrowdTestTask crowdTestTask : crowdTestTaskList){
+            if(crowdTestTaskCode.equals(crowdTestTask.getCode())){
+                List<CrowdTestReport> crowdTestReportList = crowdTestTask.getCrowdTestReportList();
+                for(CrowdTestReport crowdTestReport : crowdTestReportList){
+                    if(crowdTestReportCode.equals(crowdTestReport.getCode())){
+                        crowdTestReport.removeCrowdTestReport();
+                    }
+                }
+            }
+        }
+
+        boolean judgeHasCrowdTestReport = false;
+        for(CrowdTestTask crowdTestTask : this.getCrowdTestTaskList()){
+            if(crowdTestTaskCode.equals(crowdTestTask.getCode())){
+                List<CrowdTestReport> crowdTestReportList = crowdTestTask.getCrowdTestReportList();
+                for(CrowdTestReport crowdTestReport : crowdTestReportList){
+                    if(crowdTestReport.getIsDeleted() == DeletedStatus.isNotDeleted){
+                        judgeHasCrowdTestReport = true;
+                    }
+                }
+                // 删除报告后,如果任务中不存在报告,把任务状态从HAS_REPORTED改为HAS_RECEIVED
+                if(!judgeHasCrowdTestReport){
+                    crowdTestTask.setStatus(CrowdTestTaskStatus.HAS_RECEIVED);
+                }
+            }
+        }
+        return this;
+    }
+
+
+    /**
+     * 删除项目报告,并修改项目转态
+     * @return
+     */
+    public CrowdTestProject removeCrowdTestProjectReport() {
+        CrowdTestReport crowdTestReportForProject = this.getCrowdTestReportForProject();
+        if(crowdTestReportForProject.getIsDeleted() != DeletedStatus.isNotDeleted){
+            throw new CrowdTestProjectException("项目报告已经被删除,不可重复删除");
+        }else{
+            crowdTestReportForProject.setIsDeleted(DeletedStatus.isDeleted);
+        }
+
+        if(CrowdTestProjectStatus.HAS_REPORTED == this.getStatus()){
+            this.setStatus(CrowdTestProjectStatus.HAS_SPLITED);
+        }else{
+            throw new CrowdTestProjectException("项目当前状态不可进行报告删除,当前状态为:"+this.getStatus());
+        }
+        return this;
+    }
+
     public void addTask(CrowdTestTask task){
         if (this.getStatus() != CrowdTestProjectStatus.HAS_RECEIVED && this.getStatus() != CrowdTestProjectStatus.HAS_SPLITED)
             throw new BaseException("当前阶段不允许创建新任务");

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

@@ -9,6 +9,7 @@ public class CrowdTestProjectStatus {
     public static final int HAS_RELEASED = 1; //发布项目
     public static final int HAS_RECEIVED = 2; //接收项目
     public static final int HAS_SPLITED = 3;  //拆分项目
-    public static final int HAS_COMMITED = 4; //提交项目
-    public static final int HAS_FINISHED = 5; //结束项目
+    public static final int HAS_REPORTED = 4; //生成报告
+    public static final int HAS_COMMITED = 5; //提交项目
+    public static final int HAS_FINISHED = 6; //结束项目
 }

+ 4 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestReport.java

@@ -43,4 +43,8 @@ public class CrowdTestReport {
                 ", createTime=" + createTime +
                 '}';
     }
+
+    public void removeCrowdTestReport() {
+        this.isDeleted = DeletedStatus.isDeleted;
+    }
 }

+ 0 - 11
core/src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestReportStatus.java

@@ -1,11 +0,0 @@
-package com.mooctest.crowd.domain.domainobject;
-
-/**
- * @author guochao
- * @date 2019/7/9 14:21
- */
-public class CrowdTestReportStatus {
-    public static final int HAS_CREATED = 0;
-    public static final int HAS_COMMITED = 1;
-    public static final int HAS_FINISHED = 2;
-}

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

@@ -68,4 +68,7 @@ public class CrowdTestTask {
         throw new CrowdTestReportNotExistException();
     }
 
+    public void removeCrowdTestTask() {
+        this.isDeleted = DeletedStatus.isDeleted;
+    }
 }

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

@@ -8,6 +8,7 @@ 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_COMMITED = 3;
-    public static int HAS_FINISHED = 4;
+    public static int HAS_REPORTED = 3;
+    public static int HAS_COMMITED = 4;
+    public static int HAS_FINISHED = 5;
 }

+ 22 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/RegionalManager.java

@@ -129,6 +129,24 @@ public class RegionalManager {
         return crowdTestProject;
     }
 
+
+    /**
+     * 创建项目报告
+     * @param crowdTestProject
+     * @param crowdTestReport
+     * @return
+     */
+    public CrowdTestProject createCrowdTestProjectReport(CrowdTestProject crowdTestProject, CrowdTestReport crowdTestReport) {
+        crowdTestProject.setCrowdTestReportForProject(crowdTestReport);
+        if(crowdTestProject.getStatus() != (CrowdTestProjectStatus.HAS_REPORTED - 1)){
+            throw new CrowdTestProjectException("项目报告不能被提交,当前状态为:"+crowdTestProject.getStatus());
+        }else {
+            crowdTestProject.setStatus(CrowdTestProjectStatus.HAS_REPORTED);
+        }
+        return crowdTestProject;
+    }
+
+
     /**
      * 提交项目
      * @param crowdTestProject
@@ -136,6 +154,10 @@ public class RegionalManager {
      */
     public CrowdTestProject commitCrowdTestProject(CrowdTestProject crowdTestProject) {
         List<CrowdTestTask> crowdTestTaskList = crowdTestProject.getCrowdTestTaskList();
+        if(crowdTestProject.getCrowdTestReportForProject() == null){
+            throw new CrowdTestProjectException("还未创建项目报告,项目不能被提交");
+        }
+
         //结束项目时查看是否已结束任务
         if(crowdTestProject.getStatus() != (CrowdTestProjectStatus.HAS_COMMITED - 1)){
             throw new CrowdTestProjectException("项目不能被结束,状态为:"+crowdTestProject.getStatus());

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

@@ -125,6 +125,7 @@ public class User {
                 crowdTestReportList.add(crowdTestReport);
                 crowdTestTask.setCrowdTestReportList(crowdTestReportList);
             }
+            crowdTestTask.setStatus(CrowdTestTaskStatus.HAS_REPORTED);
             crowdTestTaskListResult.add(crowdTestTask);
         }
         crowdTestProject.setCrowdTestTaskList(crowdTestTaskListResult);
@@ -208,18 +209,17 @@ public class User {
         List<CrowdTestTask> crowdTestTaskList = crowdTestProject.getCrowdTestTaskList();
         List<CrowdTestTask> crowdTestTaskListResult = new ArrayList<>();
         for(CrowdTestTask crowdTestTask : crowdTestTaskList){
-            if(crowdTestTask.getCrowdTestReportList() == null){
-                throw new CrowdTestTaskException("当前任务中没有报告,不能提交此任务");
-            }else{
-                if(crowdTestTask.getCode().equals(crowdTestTaskCode)){
-                    if(crowdTestTask.getStatus() != (CrowdTestTaskStatus.HAS_COMMITED-1)){
-                        throw new CrowdTestTaskException("任务状态有误,无法提交,任务状态为:"+crowdTestTask.getStatus());
-                    }else if(CrowdTestTaskStatus.HAS_RECEIVED == crowdTestTask.getStatus()){
-                        crowdTestTask.setStatus(CrowdTestTaskStatus.HAS_COMMITED);
-                    }
+            if(crowdTestTask.getCode().equals(crowdTestTaskCode)){
+                System.out.println("list:"+crowdTestTask.getCrowdTestReportList());
+                if(crowdTestTask.getCrowdTestReportList().size() == 0){
+                    throw new CrowdTestTaskException("当前任务中没有报告,不能提交此任务");
+                }else if(crowdTestTask.getStatus() != (CrowdTestTaskStatus.HAS_COMMITED-1)){
+                    throw new CrowdTestTaskException("任务状态有误,无法提交,任务状态为:"+crowdTestTask.getStatus());
+                }else if((CrowdTestTaskStatus.HAS_COMMITED - 1) == crowdTestTask.getStatus()){
+                    crowdTestTask.setStatus(CrowdTestTaskStatus.HAS_COMMITED);
                 }
-                crowdTestTaskListResult.add(crowdTestTask);
             }
+            crowdTestTaskListResult.add(crowdTestTask);
 
         }
         crowdTestProject.setCrowdTestTaskList(crowdTestTaskListResult);

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

@@ -83,6 +83,14 @@ public class CrowdTestProjectRepo implements ICrowdTestProjectRepo {
     public void saveCrowdTestProject(CrowdTestProject crowdTestProject) {
         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){
@@ -99,11 +107,11 @@ public class CrowdTestProjectRepo implements ICrowdTestProjectRepo {
         }
     }
 
-    @Override
-    public void removeCrowdTestProject(String crowdTestProjectCode){
-        CrowdTestProject crowdTestProject = getByProjectCode(crowdTestProjectCode);
-        crowdTestProjectDao.delete(Converter.convert(CrowdTestProjectPO.class, crowdTestProject));
-    }
+//    @Override
+//    public void removeCrowdTestProject(String crowdTestProjectCode){
+//        CrowdTestProject crowdTestProject = getByProjectCode(crowdTestProjectCode);
+//        crowdTestProjectDao.delete(Converter.convert(CrowdTestProjectPO.class, crowdTestProject));
+//    }
 
     public void removeCrowdTestProjectList(List<CrowdTestProject> crowdTestProjectList) {
         List<CrowdTestProjectPO> crowdTestProjectPOList = new ArrayList<>();
@@ -186,6 +194,14 @@ public class CrowdTestProjectRepo implements ICrowdTestProjectRepo {
             crowdTestTaskListResult.add(crowdTestTaskResult);
         }
         crowdTestProjectResult.setCrowdTestTaskList(crowdTestTaskListResult);
+
+        //检索出项目报告
+        List<CrowdTestReportPO> crowdTestProjectReportPOList = crowdTestReportDao.findByDependencyCodeAndIsDeleted(crowdTestProjectResult.getCode(), DeletedStatus.isNotDeleted);
+        if(crowdTestProjectReportPOList.size() != 0){
+            CrowdTestReportPO crowdTestProjectReportPO = crowdTestProjectReportPOList.get(0);
+            CrowdTestReport crowdTestProjectReport = Converter.convert(CrowdTestReport.class, crowdTestProjectReportPO);
+            crowdTestProjectResult.setCrowdTestReportForProject(crowdTestProjectReport);
+        }
         return crowdTestProjectResult;
     }
 
@@ -217,51 +233,4 @@ public class CrowdTestProjectRepo implements ICrowdTestProjectRepo {
         }
         return crowdTestProjectListResult;
     }
-//    @Override
-//    public List<CrowdTestProject> getByIDList(String[] ids) {
-//        return null;
-//    }
-//
-//
-//    private void createLogForCreateTestProject(CrowdTestProject crowdTestProject, String reason) {
-//        Object testProjectName = crowdTestProject.getName();
-//        Date date = new Date();
-//        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-//        log.error("用户{}创建项目失败,失败时间:{},失败原因:{}",new Object[]{testProjectName,df.format(date), reason});
-//    }
-//
-//
-//    @Override
-//    public CrowdTestProject updateCrowdTestProject(CrowdTestProject crowdTestProject) throws CrowdTestProjectNotExistException {
-//        CrowdTestProject oldCrowdTestProject = getByID(crowdTestProject.getId());
-//        if(oldCrowdTestProject.getId().equals(crowdTestProject.getId())){
-//            oldCrowdTestProject = crowdTestProject;
-//            return oldCrowdTestProject;
-//        }
-//        throw new CrowdTestProjectNotExistException();
-//    }
-//
-//    @Override
-//    public CrowdTestProject updateCrowdTestProjectStatus(Long id, String status) throws CrowdTestProjectNotExistException {
-//        if (this.getByID(id).getId().equals(id)){
-//            CrowdTestProject crowdTestProject = this.getByID(id);
-//            crowdTestProject.setStatus(status);
-//            return crowdTestProject;
-//        }
-//        throw new CrowdTestProjectNotExistException();
-//    }
-//
-//    public boolean updateCrowdTestProjectList(List<CrowdTestProject> crowdTestProjects) throws CrowdTestProjectNotExistException {
-//        List<CrowdTestProject> oldCrowdTestProjects = new ArrayList<CrowdTestProject>();
-//        for (CrowdTestProject crowdTestProject : crowdTestProjects){
-//            if (crowdTestProject.getId().equals(1L) || crowdTestProject.getId().equals(2L)){
-//                oldCrowdTestProjects.add(crowdTestProject);
-//            }else{
-//                throw new CrowdTestProjectNotExistException();
-//            }
-//        }
-//        return true;
-//
-//    }
-
 }

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

@@ -22,7 +22,7 @@ public interface ICrowdTestProjectRepo {
 
     void saveCrowdTestProject(CrowdTestProject crowdTestProject);
 
-    void removeCrowdTestProject(String crowdTestProjectCode) throws CrowdTestProjectNotExistException;
+//    void removeCrowdTestProject(String crowdTestProjectCode) throws CrowdTestProjectNotExistException;
 
 //    CrowdTestProject saveCreateCrowdTestProject(CrowdTestProject crowdTestProject);
 //
@@ -31,7 +31,7 @@ public interface ICrowdTestProjectRepo {
 //    boolean saveCreateCrowdTestReport(String crowdTestProjectCode, String crowdTestTaskCode, CrowdTestReport crowdTestReport);
 
 
-    void deleteByProjectId(Long projectId);
+//    void deleteByProjectId(Long projectId);
 
 //    List<CrowdTestProject> getByIDList(String[] ids);
 //