|
@@ -1,14 +1,13 @@
|
|
|
package com.mooctest.crowd.domain.domainobject;
|
|
package com.mooctest.crowd.domain.domainobject;
|
|
|
|
|
|
|
|
-import com.mooctest.crowd.domain.exception.CrowdTestProjectNotExistException;
|
|
|
|
|
-import com.mooctest.crowd.domain.exception.CrowdTestReportNotExistException;
|
|
|
|
|
-import com.mooctest.crowd.domain.exception.CrowdTestTaskNoPriceException;
|
|
|
|
|
-import com.mooctest.crowd.domain.exception.CrowdTestTaskNotExistException;
|
|
|
|
|
-import com.mooctest.crowd.domain.repository.CrowdTestProjectRepo;
|
|
|
|
|
|
|
+import com.google.gson.Gson;
|
|
|
|
|
+import com.mooctest.crowd.domain.exception.*;
|
|
|
import lombok.Data;
|
|
import lombok.Data;
|
|
|
|
|
|
|
|
import java.sql.Timestamp;
|
|
import java.sql.Timestamp;
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
|
+import java.util.Optional;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* @author guochao
|
|
* @author guochao
|
|
@@ -19,143 +18,670 @@ public class CrowdTestProject {
|
|
|
|
|
|
|
|
private Long id;
|
|
private Long id;
|
|
|
private String name;
|
|
private String name;
|
|
|
|
|
+ private String code;
|
|
|
private Long userId;
|
|
private Long userId;
|
|
|
private Long regionalManagerId;
|
|
private Long regionalManagerId;
|
|
|
- private ProjectDistributeType projectDistributeType;
|
|
|
|
|
|
|
+ private Long projectDistributionTypeId;
|
|
|
|
|
+ private String platform;
|
|
|
|
|
+ private String linkMan;
|
|
|
|
|
+ private String linkManMobile;
|
|
|
|
|
+ private String type;
|
|
|
private String description;
|
|
private String description;
|
|
|
private String projectFile;
|
|
private String projectFile;
|
|
|
private String requirementFile;
|
|
private String requirementFile;
|
|
|
- private double quotedPrice;
|
|
|
|
|
- private double fixedPrice;
|
|
|
|
|
- private String status;
|
|
|
|
|
- private Timestamp creatTime;
|
|
|
|
|
|
|
+ private String distributionProvince;
|
|
|
|
|
+ private String distributionCity;
|
|
|
|
|
+ private Double quotedPrice;
|
|
|
|
|
+ private Double fixedPrice;
|
|
|
|
|
+ private int status;
|
|
|
|
|
+ private Timestamp deadTime;
|
|
|
|
|
+ private Timestamp endTime;
|
|
|
|
|
+ private int isDeleted;
|
|
|
|
|
+ private Timestamp createTime;
|
|
|
|
|
+
|
|
|
private List<CrowdTestTask> crowdTestTaskList;
|
|
private List<CrowdTestTask> crowdTestTaskList;
|
|
|
|
|
+ private CrowdTestReport crowdTestReportForProject;
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public String toString() {
|
|
public String toString() {
|
|
|
return "CrowdTestProject{" +
|
|
return "CrowdTestProject{" +
|
|
|
"id=" + id +
|
|
"id=" + id +
|
|
|
", name='" + name + '\'' +
|
|
", name='" + name + '\'' +
|
|
|
|
|
+ ", code='" + code + '\'' +
|
|
|
", userId=" + userId +
|
|
", userId=" + userId +
|
|
|
", regionalManagerId=" + regionalManagerId +
|
|
", regionalManagerId=" + regionalManagerId +
|
|
|
- ", projectDistributeType=" + projectDistributeType +
|
|
|
|
|
|
|
+ ", projectDistributionTypeId=" + projectDistributionTypeId +
|
|
|
|
|
+ ", platform='" + platform + '\'' +
|
|
|
|
|
+ ", linkMan='" + linkMan + '\'' +
|
|
|
|
|
+ ", linkManMobile='" + linkManMobile + '\'' +
|
|
|
|
|
+ ", type='" + type + '\'' +
|
|
|
", description='" + description + '\'' +
|
|
", description='" + description + '\'' +
|
|
|
- ", projectFile=" + projectFile +
|
|
|
|
|
- ", requirementFile=" + requirementFile +
|
|
|
|
|
|
|
+ ", projectFile='" + projectFile + '\'' +
|
|
|
|
|
+ ", requirementFile='" + requirementFile + '\'' +
|
|
|
|
|
+ ", distributionProvince='" + distributionProvince + '\'' +
|
|
|
|
|
+ ", distributionCity='" + distributionCity + '\'' +
|
|
|
", quotedPrice=" + quotedPrice +
|
|
", quotedPrice=" + quotedPrice +
|
|
|
", fixedPrice=" + fixedPrice +
|
|
", fixedPrice=" + fixedPrice +
|
|
|
- ", status='" + status + '\'' +
|
|
|
|
|
- ", creatTime=" + creatTime +
|
|
|
|
|
|
|
+ ", status=" + status +
|
|
|
|
|
+ ", deadTime=" + deadTime +
|
|
|
|
|
+ ", endTime=" + endTime +
|
|
|
|
|
+ ", isDeleted=" + isDeleted +
|
|
|
|
|
+ ", createTime=" + createTime +
|
|
|
", crowdTestTaskList=" + crowdTestTaskList +
|
|
", crowdTestTaskList=" + crowdTestTaskList +
|
|
|
|
|
+ ", crowdTestReportForProject=" + crowdTestReportForProject +
|
|
|
'}';
|
|
'}';
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- public CrowdTestTask getCrowdTestTaskByTaskId(CrowdTestProject crowdTestProject, Long taskId) throws CrowdTestTaskNotExistException {
|
|
|
|
|
- List<CrowdTestTask> crowdTestTaskList = crowdTestProject.getCrowdTestTaskList();
|
|
|
|
|
- for (CrowdTestTask crowdTestTask : crowdTestTaskList) {
|
|
|
|
|
- if (crowdTestTask.getId().equals(taskId)) {
|
|
|
|
|
- return crowdTestTask;
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 更新项目信息
|
|
|
|
|
+ * @param crowdTestProjectModify
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ public CrowdTestProject updateCrowdTestProject( CrowdTestProject crowdTestProjectModify){
|
|
|
|
|
+ Gson gson = new Gson();
|
|
|
|
|
+ return gson.fromJson(gson.toJson(crowdTestProjectModify),CrowdTestProject.class);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 更新项目中的指定任务信息
|
|
|
|
|
+ * @param crowdTestTaskCode
|
|
|
|
|
+ * @param crowdTestTaskModify
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ public CrowdTestProject updateCrowdTestTask(String crowdTestTaskCode, CrowdTestTask crowdTestTaskModify){
|
|
|
|
|
+ List<CrowdTestTask> crowdTestTaskListNew = new ArrayList<>();
|
|
|
|
|
+ List<CrowdTestTask> crowdTestTaskList = this.getCrowdTestTaskList();
|
|
|
|
|
+ for(CrowdTestTask crowdTestTaskSelect : crowdTestTaskList){
|
|
|
|
|
+ List<CrowdTestReport> crowdTestReportList = crowdTestTaskSelect.getCrowdTestReportList();
|
|
|
|
|
+ if(crowdTestTaskCode.equals(crowdTestTaskSelect.getCode())){
|
|
|
|
|
+ Gson gson = new Gson();
|
|
|
|
|
+ crowdTestTaskSelect = gson.fromJson(gson.toJson(crowdTestTaskModify), CrowdTestTask.class);
|
|
|
}
|
|
}
|
|
|
|
|
+ crowdTestTaskSelect.setCrowdTestReportList(crowdTestReportList);
|
|
|
|
|
+ crowdTestTaskListNew.add(crowdTestTaskSelect);
|
|
|
}
|
|
}
|
|
|
- throw new CrowdTestTaskNotExistException();
|
|
|
|
|
|
|
+ this.setCrowdTestTaskList(crowdTestTaskListNew);
|
|
|
|
|
+ return this;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- public CrowdTestProject updateCrowdTestReportStatus(Long projectId, Long taskId, Long reportId, String status) throws CrowdTestTaskNoPriceException, CrowdTestTaskNotExistException, CrowdTestProjectNotExistException, CrowdTestReportNotExistException {
|
|
|
|
|
- CrowdTestProjectRepo crowdTestProjectRepo = new CrowdTestProjectRepo();
|
|
|
|
|
- CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByID(projectId);
|
|
|
|
|
- CrowdTestTask crowdTestTask = crowdTestProject.getCrowdTestTaskByTaskId(crowdTestProject, taskId);
|
|
|
|
|
- CrowdTestReport crowdTestReport = crowdTestTask.getCrowdTestReportByReportId(crowdTestTask, reportId);
|
|
|
|
|
- crowdTestReport.setStatus(status);
|
|
|
|
|
- return crowdTestProject;
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 更新项目中任务的指定报告信息
|
|
|
|
|
+ * @param crowdTestTaskCode
|
|
|
|
|
+ * @param crowdTestReportCode
|
|
|
|
|
+ * @param crowdTestReportModify
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ public CrowdTestProject updateCrowdTestReport( String crowdTestTaskCode, String crowdTestReportCode, CrowdTestReport crowdTestReportModify) {
|
|
|
|
|
+ List<CrowdTestTask> crowdTestTaskListNew = new ArrayList<>();
|
|
|
|
|
+ List<CrowdTestTask> crowdTestTaskList = this.getCrowdTestTaskList();
|
|
|
|
|
+ for(CrowdTestTask crowdTestTaskSelect : crowdTestTaskList){
|
|
|
|
|
+ List<CrowdTestReport> crowdTestReportListNew = new ArrayList<>();
|
|
|
|
|
+ if(crowdTestTaskCode.equals(crowdTestTaskSelect.getCode())){
|
|
|
|
|
+ List<CrowdTestReport> crowdTestReportList = crowdTestTaskSelect.getCrowdTestReportList();
|
|
|
|
|
+ for(CrowdTestReport crowdTestReportSelect : crowdTestReportList){
|
|
|
|
|
+ if(crowdTestReportCode.equals(crowdTestReportSelect.getCode())){
|
|
|
|
|
+ Gson gson = new Gson();
|
|
|
|
|
+ crowdTestReportSelect = gson.fromJson(gson.toJson(crowdTestReportModify), CrowdTestReport.class);
|
|
|
|
|
+ }
|
|
|
|
|
+ crowdTestReportListNew.add(crowdTestReportSelect);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ crowdTestTaskSelect.setCrowdTestReportList(crowdTestReportListNew);
|
|
|
|
|
+ crowdTestTaskListNew.add(crowdTestTaskSelect);
|
|
|
|
|
+ }
|
|
|
|
|
+ this.setCrowdTestTaskList(crowdTestTaskListNew);
|
|
|
|
|
+ return this;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- /** Task */
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 逻辑删除项目(项目发布者)
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ public CrowdTestProject removeCrowdTestProject(User user) {
|
|
|
|
|
+ //判断用户是否认证
|
|
|
|
|
+ if(user.getPersonalAuthentication() == null && user.getEnterpriseAuthentication() == null && user.getRegionalManager() == null && user.getEvaluationAgency() == null){
|
|
|
|
|
+ throw new CrowdTestProjectException("当前用户未进行认证,无权限对项目操作");
|
|
|
|
|
+ }
|
|
|
|
|
+ //判断用户是否为项目发起者
|
|
|
|
|
+ if(!this.getUserId().equals(user.getId())){
|
|
|
|
|
+ throw new CrowdTestProjectException("当前用户无权限发布此项目");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ this.getCrowdTestTaskList()
|
|
|
|
|
+ .stream().forEach(crowdTestTask -> crowdTestTask.removeCrowdTestTask());
|
|
|
|
|
+ this.getCrowdTestTaskList()
|
|
|
|
|
+ .stream().forEach(crowdTestTask -> crowdTestTask.getCrowdTestReportList().stream().forEach(crowdTestReport -> crowdTestReport.removeCrowdTestReport()));
|
|
|
|
|
|
|
|
- public boolean updateCrowdTestTaskStatus(Long projectId, Long taskId, String status) throws CrowdTestProjectNotExistException, CrowdTestTaskNotExistException, CrowdTestTaskNoPriceException {
|
|
|
|
|
- CrowdTestProjectRepo crowdTestProjectRepo = new CrowdTestProjectRepo();
|
|
|
|
|
- CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByID(projectId);
|
|
|
|
|
- CrowdTestTask crowdTestTask = crowdTestProject.getCrowdTestTaskByTaskId(crowdTestProject, taskId);
|
|
|
|
|
- boolean flag = true;
|
|
|
|
|
- if (crowdTestTask.getPrice() > 0) {
|
|
|
|
|
- crowdTestTask.setStatus(status);
|
|
|
|
|
- return true;
|
|
|
|
|
- } else {
|
|
|
|
|
- throw new CrowdTestTaskNoPriceException();
|
|
|
|
|
|
|
+ CrowdTestReport crowdTestReportForProject = this.getCrowdTestReportForProject();
|
|
|
|
|
+ if(crowdTestReportForProject != null){
|
|
|
|
|
+ crowdTestReportForProject.removeCrowdTestReport();
|
|
|
}
|
|
}
|
|
|
|
|
+ this.setIsDeleted(DeletedStatus.isDeleted);
|
|
|
|
|
+ return this;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- public boolean modifyCrowdTestTaskStatusToCommit(Long taskId, String status) throws CrowdTestTaskNotExistException {
|
|
|
|
|
- CrowdTestTask crowdTestTask = this.getCrowdTestTaskByTaskId(this, taskId);
|
|
|
|
|
- boolean flag = true;
|
|
|
|
|
- List<CrowdTestReport> crowdTestReportList = crowdTestTask.getCrowdTestReportList();
|
|
|
|
|
- for (CrowdTestReport crowdTestReport : crowdTestReportList) {
|
|
|
|
|
- if (!crowdTestReport.getStatus().equals(CrowdTestReportStatus.COMMITED)) {
|
|
|
|
|
- flag = false;
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 逻辑删除任务(区域管理员)
|
|
|
|
|
+ * @param crowdTestTaskCode
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ public CrowdTestProject removeCrowdTestTask(String crowdTestTaskCode, User user) {
|
|
|
|
|
+ //判断是否为区域管理员
|
|
|
|
|
+ RegionalManager regionalManager = user.getRegionalManager();
|
|
|
|
|
+ if(regionalManager == null){
|
|
|
|
|
+ throw new UserNotExistException("当前用户不是区域管理员,没有权限对任务进行操作");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //判断是否是当前项目的区域管理员
|
|
|
|
|
+ if(!this.getRegionalManagerId().equals(user.getId())){
|
|
|
|
|
+ throw new CrowdTestTaskException("当前用户没有权限删除此测试任务!");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ Optional<CrowdTestTask> task = this.getCrowdTestTaskList()
|
|
|
|
|
+ .stream().filter(crowdTestTask -> crowdTestTask.getCode().equals(crowdTestTaskCode)).findFirst();
|
|
|
|
|
+ if(!task.isPresent()){
|
|
|
|
|
+ throw new CrowdTestTaskException("当前项目下没有此测试任务!");
|
|
|
|
|
+ }else{
|
|
|
|
|
+ task.get().removeCrowdTestTask();
|
|
|
|
|
+ task.get().getCrowdTestReportList().stream().forEach(crowdTestReport -> crowdTestReport.removeCrowdTestReport());
|
|
|
|
|
+ }
|
|
|
|
|
+ return this;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 逻辑删除报告(测评机构)
|
|
|
|
|
+ * @param crowdTestTaskCode
|
|
|
|
|
+ * @param crowdTestReportCode
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ public CrowdTestProject removeCrowdTestReport(String crowdTestTaskCode, String crowdTestReportCode, User user) {
|
|
|
|
|
+
|
|
|
|
|
+ //判断是否为测评机构
|
|
|
|
|
+ EvaluationAgency evaluationAgency = user.getEvaluationAgency();
|
|
|
|
|
+ if(evaluationAgency == null){
|
|
|
|
|
+ throw new UserNotExistException("当前用户不是测评机构,没有权限操作测试报告");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ Optional<CrowdTestTask> task = this.getCrowdTestTaskList()
|
|
|
|
|
+ .stream().filter(crowdTestTask -> crowdTestTask.getCode().equals(crowdTestTaskCode)).findFirst();
|
|
|
|
|
+ if(!task.isPresent()){
|
|
|
|
|
+ throw new CrowdTestTaskException("当前项目下没有此测试任务!");
|
|
|
|
|
+ }else{
|
|
|
|
|
+ //判断是否是当前任务的测评机构
|
|
|
|
|
+ if(!task.get().getEvaluationAgencyId().equals(user.getId())){
|
|
|
|
|
+ throw new CrowdTestTaskException("当前用户没有权限删除此任务的测试报告!");
|
|
|
|
|
+ }else{
|
|
|
|
|
+ Optional<CrowdTestReport> report = task.get().getCrowdTestReportList()
|
|
|
|
|
+ .stream().filter(crowdTestReport -> crowdTestReport.getCode().equals(crowdTestReportCode)).findFirst();
|
|
|
|
|
+ if(!report.isPresent()){
|
|
|
|
|
+ throw new CrowdTestReportException("当前任务下没有此测试报告!");
|
|
|
|
|
+ }else{
|
|
|
|
|
+ report.get().removeCrowdTestReport();
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- if (flag) {
|
|
|
|
|
- crowdTestTask.setStatus(status);
|
|
|
|
|
- return true;
|
|
|
|
|
- } else {
|
|
|
|
|
- return flag;
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- public boolean updateCrowdTestTaskStatusNoPrice(Long projectId, Long taskId, String status) throws CrowdTestProjectNotExistException, CrowdTestTaskNotExistException, CrowdTestTaskNoPriceException {
|
|
|
|
|
- CrowdTestProjectRepo crowdTestProjectRepo = new CrowdTestProjectRepo();
|
|
|
|
|
- if (crowdTestProjectRepo.getByID(projectId) != null) {
|
|
|
|
|
- CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByID(projectId);
|
|
|
|
|
- CrowdTestTask crowdTestTask = crowdTestProject.getCrowdTestTaskByTaskId(crowdTestProject, taskId);
|
|
|
|
|
- crowdTestTask.setPrice(0.0);
|
|
|
|
|
- if (crowdTestTask.getPrice() > 0) {
|
|
|
|
|
- crowdTestTask.setStatus(status);
|
|
|
|
|
- return true;
|
|
|
|
|
- } else {
|
|
|
|
|
- throw new CrowdTestTaskNoPriceException();
|
|
|
|
|
|
|
+ return this;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 删除项目报告(区域管理员)
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ public CrowdTestProject removeCrowdTestProjectReport(String crowdTestProjectReportCode,User user) {
|
|
|
|
|
+ //判断是否为区域管理员
|
|
|
|
|
+ RegionalManager regionalManager = user.getRegionalManager();
|
|
|
|
|
+ if(regionalManager == null){
|
|
|
|
|
+ throw new UserNotExistException("当前用户不是区域管理员,没有权限对项目进行操作");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //判断是否是当前项目的区域管理员
|
|
|
|
|
+ if(!this.getRegionalManagerId().equals(user.getId())){
|
|
|
|
|
+ throw new CrowdTestTaskException("当前用户没有权限删除此测试任务!");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ CrowdTestReport crowdTestReportForProject = this.getCrowdTestReportForProject();
|
|
|
|
|
+ if(crowdTestReportForProject == null){
|
|
|
|
|
+ throw new CrowdTestProjectException("当前项目下没有项目报告!");
|
|
|
|
|
+ }else if(!crowdTestProjectReportCode.equals(crowdTestReportForProject.getCode())){
|
|
|
|
|
+ throw new CrowdTestProjectException("当前项目下没有此项目报告!");
|
|
|
|
|
+ }else{
|
|
|
|
|
+ crowdTestReportForProject.setIsDeleted(DeletedStatus.isDeleted);
|
|
|
|
|
+ }
|
|
|
|
|
+ return this;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public void addTask(CrowdTestTask task){
|
|
|
|
|
+ if (!(this.getStatus() >= CrowdTestProjectStatus.HAS_RECEIVED || this.getStatus()<=CrowdTestTaskStatus.HAS_COMMITED))
|
|
|
|
|
+ throw new BaseException("当前阶段不允许创建新任务");
|
|
|
|
|
+ this.getCrowdTestTaskList().add(task);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public CrowdTestTask getTask(String taskCode){
|
|
|
|
|
+ Optional<CrowdTestTask> testTask = this.getCrowdTestTaskList().stream().filter(crowdTestTask -> crowdTestTask.getCode().equals(taskCode)).findFirst();
|
|
|
|
|
+ if (!testTask.isPresent())
|
|
|
|
|
+ throw new CrowdTestTaskNotExistException();
|
|
|
|
|
+ return testTask.get();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public CrowdTestReport getTaskReport(String taskCode, String reportCode){
|
|
|
|
|
+ Optional<CrowdTestReport> report = getTask(taskCode).getCrowdTestReportList().stream().filter(crowdTestReport -> crowdTestReport.getCode().equals(reportCode)).findFirst();
|
|
|
|
|
+ if (!report.isPresent())
|
|
|
|
|
+ throw new CrowdTestReportNotExistException();
|
|
|
|
|
+ return report.get();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 创建测试项目(普通用户)
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ public CrowdTestProject createCrowdTestProject(User user) {
|
|
|
|
|
+// //判断用户是否认证
|
|
|
|
|
+// if(user.getPersonalAuthentication() == null && user.getEnterpriseAuthentication() == null && user.getRegionalManager() == null && user.getEvaluationAgency() == null){
|
|
|
|
|
+// throw new CrowdTestProjectException("当前用户未进行认证,无权限对项目操作");
|
|
|
|
|
+// }
|
|
|
|
|
+ //增加设置项目code ---------需要补上
|
|
|
|
|
+// String projectCode = GenerateFlowCodeUtil.generateFlowCode("PROJ");
|
|
|
|
|
+// this.setCode(projectCode);
|
|
|
|
|
+
|
|
|
|
|
+ this.setStatus(CrowdTestProjectStatus.HAS_CREATED);
|
|
|
|
|
+ this.setCreateTime(new Timestamp(System.currentTimeMillis()));
|
|
|
|
|
+ return this;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 发布项目(普通用户)
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ public CrowdTestProject releaseCrowdTestProject(User user) {
|
|
|
|
|
+ //判断用户是否认证
|
|
|
|
|
+ if(user.getPersonalAuthentication() == null && user.getEnterpriseAuthentication() == null && user.getRegionalManager() == null && user.getEvaluationAgency() == null){
|
|
|
|
|
+ throw new CrowdTestProjectException("当前用户未进行认证,无权限对项目操作");
|
|
|
|
|
+ }
|
|
|
|
|
+ //判断用户是否为项目发起者
|
|
|
|
|
+ if(!this.getUserId().equals(user.getId())){
|
|
|
|
|
+ throw new CrowdTestProjectException("当前用户无权限发布此项目");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //判断项目状态
|
|
|
|
|
+ if(this.status != (CrowdTestProjectStatus.HAS_RELEASED-1)){
|
|
|
|
|
+ throw new CrowdTestProjectException("当前项目状态不能被发布,当前状态为:"+this.getStatus());
|
|
|
|
|
+ }else{
|
|
|
|
|
+ this.setStatus(CrowdTestProjectStatus.HAS_RELEASED);
|
|
|
|
|
+ }
|
|
|
|
|
+ return this;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 接收项目(区域管理员)
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ public CrowdTestProject receiveProject(User user) {
|
|
|
|
|
+ //判断是否为区域管理员
|
|
|
|
|
+ RegionalManager regionalManager = user.getRegionalManager();
|
|
|
|
|
+ if(regionalManager == null){
|
|
|
|
|
+ throw new UserNotExistException("当前用户不是区域管理员,没有权限接收项目");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //判断项目状态
|
|
|
|
|
+ if(this.getStatus() != CrowdTestProjectStatus.HAS_RELEASED){
|
|
|
|
|
+ throw new CrowdTestProjectException("项目不能被接收,项目状态为: " + this.getStatus());
|
|
|
|
|
+ }else{
|
|
|
|
|
+ //项目是定向发布
|
|
|
|
|
+ if(this.getProjectDistributionTypeId() == 0){
|
|
|
|
|
+ if(!this.getRegionalManagerId().equals(user.getId())){
|
|
|
|
|
+ throw new CrowdTestProjectException("当前用户没有权限接收此定向发布的项目!");
|
|
|
|
|
+ }else{
|
|
|
|
|
+ this.setStatus(CrowdTestProjectStatus.HAS_RECEIVED);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ //项目是区域发布
|
|
|
|
|
+ else if(this.getProjectDistributionTypeId() == 1){
|
|
|
|
|
+ List<RegionalManagerToRegional> regionalList = regionalManager.getRegionalList();
|
|
|
|
|
+ boolean isValidCity = false;
|
|
|
|
|
+ //判断管理员管辖的区域是否符合要求
|
|
|
|
|
+ for(RegionalManagerToRegional regional : regionalList){
|
|
|
|
|
+ //判断市是否相同
|
|
|
|
|
+ if(this.getDistributionCity().equals(regional.getCity())){
|
|
|
|
|
+ isValidCity = true;
|
|
|
|
|
+ }
|
|
|
|
|
+ //如果市区是"*",则判断省份是否相同
|
|
|
|
|
+ if(regional.getCity().equals("*")){
|
|
|
|
|
+ if(this.getDistributionProvince().equals(regional.getProvince())){
|
|
|
|
|
+ isValidCity = true;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if(!isValidCity){
|
|
|
|
|
+ throw new CrowdTestProjectException("项目发布的区域不符合当前区域管理员所管辖的区域!");
|
|
|
|
|
+ }else{
|
|
|
|
|
+ this.setRegionalManagerId(user.getId());
|
|
|
|
|
+ this.setStatus(CrowdTestProjectStatus.HAS_RECEIVED);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ //项目是广场发布
|
|
|
|
|
+ else{
|
|
|
|
|
+ this.setRegionalManagerId(user.getId());
|
|
|
|
|
+ this.setStatus(CrowdTestProjectStatus.HAS_RECEIVED);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- throw new CrowdTestProjectNotExistException();
|
|
|
|
|
|
|
+ return this;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- public List<CrowdTestTask> updateCrowdTestTaskListStatus(Long projectId, String status) throws CrowdTestProjectNotExistException {
|
|
|
|
|
- CrowdTestProjectRepo crowdTestProjectRepo = new CrowdTestProjectRepo();
|
|
|
|
|
- CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByID(projectId);
|
|
|
|
|
- List<CrowdTestTask> crowdTestTaskList = crowdTestProject.getCrowdTestTaskList();
|
|
|
|
|
- for (CrowdTestTask crowdTestTask : crowdTestTaskList) {
|
|
|
|
|
- crowdTestTask.setStatus(status);
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 创建测试任务(区域管理员)
|
|
|
|
|
+ * @param crowdTestTask
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ public CrowdTestProject createCrowdTestTask(CrowdTestTask crowdTestTask, User user) {
|
|
|
|
|
+ //判断是否为区域管理员
|
|
|
|
|
+ RegionalManager regionalManager = user.getRegionalManager();
|
|
|
|
|
+ if(regionalManager == null){
|
|
|
|
|
+ throw new UserNotExistException("当前用户不是区域管理员,没有权限创建测试任务");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //判断是否是当前项目的区域管理员
|
|
|
|
|
+ if(!this.getRegionalManagerId().equals(user.getId())){
|
|
|
|
|
+ throw new CrowdTestTaskException("当前用户没有权限为此项目创建测试任务!");
|
|
|
|
|
+ }else{
|
|
|
|
|
+ //判断项目状态
|
|
|
|
|
+ if(this.getStatus() != (CrowdTestProjectStatus.HAS_COMMITED-1)){
|
|
|
|
|
+ throw new CrowdTestProjectException("当前项目状态不能创建任务,项目状态为: " + this.getStatus());
|
|
|
|
|
+ }else{
|
|
|
|
|
+ List<CrowdTestTask> crowdTestTaskList = this.getCrowdTestTaskList();
|
|
|
|
|
+// //增加设置任务code -------需要加上
|
|
|
|
|
+// String taskCode = GenerateFlowCodeUtil.generateFlowCode("TASK-"+ command.getType());
|
|
|
|
|
+// crowdTestTask.setCode(taskCode);
|
|
|
|
|
+
|
|
|
|
|
+ crowdTestTask.setStatus(CrowdTestTaskStatus.HAS_CREATED);
|
|
|
|
|
+ //添加测试任务
|
|
|
|
|
+ crowdTestTaskList.add(crowdTestTask);
|
|
|
|
|
+ this.setCrowdTestTaskList(crowdTestTaskList);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
- return crowdTestTaskList;
|
|
|
|
|
|
|
+ return this;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 发布任务(区域管理员)
|
|
|
|
|
+ * @param crowdTestTaskCode
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ public CrowdTestProject releaseCrowdTestTask(String crowdTestTaskCode, User user) {
|
|
|
|
|
+ //判断是否为区域管理员
|
|
|
|
|
+ RegionalManager regionalManager = user.getRegionalManager();
|
|
|
|
|
+ if(regionalManager == null){
|
|
|
|
|
+ throw new UserNotExistException("当前用户不是区域管理员,没有权限发布测试任务");
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- /** Project */
|
|
|
|
|
- public CrowdTestReport getCrowdTestReportByProjectId(Long projectId, Long taskId, Long reportId) throws CrowdTestTaskNoPriceException, CrowdTestTaskNotExistException, CrowdTestProjectNotExistException, CrowdTestReportNotExistException {
|
|
|
|
|
- CrowdTestProjectRepo crowdTestProjectRepo = new CrowdTestProjectRepo();
|
|
|
|
|
- CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByID(projectId);
|
|
|
|
|
- CrowdTestTask crowdTestTask = crowdTestProject.getCrowdTestTaskByTaskId(crowdTestProject, taskId);
|
|
|
|
|
- CrowdTestReport crowdTestReport = crowdTestTask.getCrowdTestReportByReportId(crowdTestTask, reportId);
|
|
|
|
|
- return crowdTestReport;
|
|
|
|
|
|
|
+ //判断是否是当前项目的区域管理员
|
|
|
|
|
+ if(!this.regionalManagerId.equals(user.getId())){
|
|
|
|
|
+ throw new CrowdTestProjectException("当前用户没有权限发布的当前项目下的任务!");
|
|
|
|
|
+ }else {
|
|
|
|
|
+ List<CrowdTestTask> crowdTestTaskList = this.getCrowdTestTaskList();
|
|
|
|
|
+ List<CrowdTestTask> crowdTestTaskListResult = new ArrayList<>();
|
|
|
|
|
+ //发布任务时修改任务状态
|
|
|
|
|
+ for(CrowdTestTask crowdTestTask : crowdTestTaskList){
|
|
|
|
|
+ if(crowdTestTaskCode.equals(crowdTestTask.getCode())){
|
|
|
|
|
+ if(crowdTestTask.getStatus() != (CrowdTestTaskStatus.HAS_RELEASED-1)){
|
|
|
|
|
+ throw new CrowdTestTaskException("当前任务不能被发布,当前任务状态为:"+crowdTestTask.getStatus());
|
|
|
|
|
+ }else{
|
|
|
|
|
+ crowdTestTask.setStatus(CrowdTestTaskStatus.HAS_RELEASED);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ crowdTestTaskListResult.add(crowdTestTask);
|
|
|
|
|
+ }
|
|
|
|
|
+ this.setCrowdTestTaskList(crowdTestTaskListResult);
|
|
|
|
|
+ return this;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- public List<CrowdTestReport> getCrowdTestReportListByProjectId(Long projectId, Long taskId) throws CrowdTestTaskNoPriceException, CrowdTestTaskNotExistException, CrowdTestProjectNotExistException, CrowdTestReportNotExistException {
|
|
|
|
|
- CrowdTestProjectRepo crowdTestProjectRepo = new CrowdTestProjectRepo();
|
|
|
|
|
- CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByID(projectId);
|
|
|
|
|
- CrowdTestTask crowdTestTask = crowdTestProject.getCrowdTestTaskByTaskId(crowdTestProject, taskId);
|
|
|
|
|
- return crowdTestTask.getCrowdTestReportList();
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 接收任务(测评机构)
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ public CrowdTestProject receiveTask(String crowdTestTaskCode, User user) {
|
|
|
|
|
+ //判断是否为测评机构
|
|
|
|
|
+ EvaluationAgency evaluationAgency = user.getEvaluationAgency();
|
|
|
|
|
+ if(evaluationAgency == null){
|
|
|
|
|
+ throw new UnauthorizedException("当前用户不是测评机构,没有权限接收任务");
|
|
|
|
|
+ }
|
|
|
|
|
+ Optional<CrowdTestTask> taskOp = this.getCrowdTestTaskList().stream().filter(task -> task.getCode().equals(crowdTestTaskCode)).findFirst();
|
|
|
|
|
+ //任务是否不存在
|
|
|
|
|
+ if (!taskOp.isPresent())
|
|
|
|
|
+ throw new CrowdTestTaskNotExistException();
|
|
|
|
|
+ CrowdTestTask task = taskOp.get();
|
|
|
|
|
+ //任务当前状态
|
|
|
|
|
+ if (task.getStatus()!=CrowdTestTaskStatus.HAS_RELEASED)
|
|
|
|
|
+ throw new CrowdTestTaskException("任务当前状态不能被接收,当前状态为:"+task.getStatus());
|
|
|
|
|
+ //定向发布类型
|
|
|
|
|
+ if (task.getDistributionType() == 0) {
|
|
|
|
|
+ if (!task.getEvaluationAgencyId().equals(user.getId()))
|
|
|
|
|
+ throw new CrowdTestTaskException("当前用户没有权限接收此定向发布的任务!");
|
|
|
|
|
+ }
|
|
|
|
|
+ task.setEvaluationAgencyId(user.getId());
|
|
|
|
|
+ task.setStatus(CrowdTestTaskStatus.HAS_RECEIVED);
|
|
|
|
|
+ return this;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 创建测试报告(测评机构)
|
|
|
|
|
+ * @param crowdTestTaskCode
|
|
|
|
|
+ * @param crowdTestReport
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ public CrowdTestProject createCrowdTestReport(String crowdTestTaskCode, CrowdTestReport crowdTestReport, User user) {
|
|
|
|
|
+ //判断是否为测评机构
|
|
|
|
|
+ EvaluationAgency evaluationAgency = user.getEvaluationAgency();
|
|
|
|
|
+ if(evaluationAgency == null){
|
|
|
|
|
+ throw new UserNotExistException("当前用户不是测评机构,没有权限创建测试报告");
|
|
|
|
|
+ }
|
|
|
|
|
+ List<CrowdTestTask> crowdTestTaskList = this.getCrowdTestTaskList();
|
|
|
|
|
+ List<CrowdTestTask> crowdTestTaskListResult = new ArrayList<>();
|
|
|
|
|
+ for(CrowdTestTask crowdTestTask : crowdTestTaskList){
|
|
|
|
|
+ if(crowdTestTask.getCode().equals(crowdTestTaskCode)){
|
|
|
|
|
+ //判断是否是当前任务的测评机构
|
|
|
|
|
+ if(!crowdTestTask.getEvaluationAgencyId().equals(user.getId())){
|
|
|
|
|
+ throw new CrowdTestTaskException("当前用户没有权限创建任务测试报告!");
|
|
|
|
|
+ }else{
|
|
|
|
|
+ if(crowdTestTask.getStatus() != (CrowdTestTaskStatus.HAS_COMMITED-1)){
|
|
|
|
|
+ throw new CrowdTestTaskException("当前任务无法创建测试报告,任务状态为:"+crowdTestTask.getStatus());
|
|
|
|
|
+ }else{
|
|
|
|
|
+ //设置报告code ----------需要添加
|
|
|
|
|
+// String reportCode = GenerateFlowCodeUtil.generateFlowCode("REPORT");
|
|
|
|
|
+// crowdTestReport.setCode(reportCode);
|
|
|
|
|
+
|
|
|
|
|
+ crowdTestReport.setScope(1);
|
|
|
|
|
+ crowdTestReport.setDependencyCode(crowdTestTaskCode);
|
|
|
|
|
+ List<CrowdTestReport> crowdTestReportList = crowdTestTask.getCrowdTestReportList();
|
|
|
|
|
+ crowdTestReportList.add(crowdTestReport);
|
|
|
|
|
+ crowdTestTask.setCrowdTestReportList(crowdTestReportList);
|
|
|
|
|
+ crowdTestTaskListResult.add(crowdTestTask);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ this.setCrowdTestTaskList(crowdTestTaskListResult);
|
|
|
|
|
+ return this;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- public CrowdTestProject updateCrowdTestProjectStatusToFinish(Long projectId, String status) throws CrowdTestProjectNotExistException {
|
|
|
|
|
- CrowdTestProjectRepo crowdTestProjectRepo = new CrowdTestProjectRepo();
|
|
|
|
|
- CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByID(projectId);
|
|
|
|
|
- List<CrowdTestTask> crowdTestTaskList = crowdTestProject.getCrowdTestTaskList();
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 提交测试任务(测评机构)
|
|
|
|
|
+ * @param crowdTestTaskCode
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ public CrowdTestProject commitCrowdTestTask(String crowdTestTaskCode, User user) {
|
|
|
|
|
+ //判断是否为测评机构
|
|
|
|
|
+ EvaluationAgency evaluationAgency = user.getEvaluationAgency();
|
|
|
|
|
+ if(evaluationAgency == null){
|
|
|
|
|
+ throw new UserNotExistException("当前用户不是测评机构,没有权限提交测试任务");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ List<CrowdTestTask> crowdTestTaskList = this.getCrowdTestTaskList();
|
|
|
|
|
+ List<CrowdTestTask> crowdTestTaskListResult = new ArrayList<>();
|
|
|
for(CrowdTestTask crowdTestTask : crowdTestTaskList){
|
|
for(CrowdTestTask crowdTestTask : crowdTestTaskList){
|
|
|
- List<CrowdTestReport> crowdTestReportList = crowdTestTask.getCrowdTestReportList();
|
|
|
|
|
- for(CrowdTestReport crowdTestReport : crowdTestReportList){
|
|
|
|
|
- crowdTestReport.setStatus(status);
|
|
|
|
|
|
|
+ if(crowdTestTask.getCode().equals(crowdTestTaskCode)){
|
|
|
|
|
+ //判断是否是当前任务的测评机构
|
|
|
|
|
+ if(!crowdTestTask.getEvaluationAgencyId().equals(user.getId())){
|
|
|
|
|
+ throw new CrowdTestTaskException("当前用户没有权限提交任务!");
|
|
|
|
|
+ }else{
|
|
|
|
|
+ if(crowdTestTask.getCrowdTestReportList().size() == 0){
|
|
|
|
|
+ throw new CrowdTestTaskException("当前任务中没有报告,不能提交此任务");
|
|
|
|
|
+ }
|
|
|
|
|
+ if(crowdTestTask.getStatus() != (CrowdTestTaskStatus.HAS_COMMITED-1)){
|
|
|
|
|
+ throw new CrowdTestTaskException("当前任务无法提交,任务状态为:"+crowdTestTask.getStatus());
|
|
|
|
|
+ }else{
|
|
|
|
|
+ crowdTestTask.setStatus(CrowdTestTaskStatus.HAS_COMMITED);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ crowdTestTaskListResult.add(crowdTestTask);
|
|
|
|
|
+ }
|
|
|
|
|
+ this.setCrowdTestTaskList(crowdTestTaskListResult);
|
|
|
|
|
+ return this;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 结束任务(区域管理员)
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ public CrowdTestProject finishCrowdTestTask(String crowdTestTaskCode, User user) {
|
|
|
|
|
+ //判断是否为区域管理员
|
|
|
|
|
+ RegionalManager regionalManager = user.getRegionalManager();
|
|
|
|
|
+ if(regionalManager == null){
|
|
|
|
|
+ throw new UserNotExistException("当前用户不是区域管理员,没有权限结束测试任务");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //判断是否是当前项目的区域管理员
|
|
|
|
|
+ if(!this.regionalManagerId.equals(user.getId())){
|
|
|
|
|
+ throw new CrowdTestProjectException("当前用户没有权限结束当前项目下的任务!");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //项目状态判断
|
|
|
|
|
+ if(this.getStatus() != (CrowdTestProjectStatus.HAS_COMMITED-1)){
|
|
|
|
|
+ throw new CrowdTestProjectException("当前项目状态不可结束任务!");
|
|
|
|
|
+ }else {
|
|
|
|
|
+ List<CrowdTestTask> crowdTestTaskList = this.getCrowdTestTaskList();
|
|
|
|
|
+ List<CrowdTestTask> crowdTestTaskListResult = new ArrayList<>();
|
|
|
|
|
+
|
|
|
|
|
+ for(CrowdTestTask crowdTestTask : crowdTestTaskList){
|
|
|
|
|
+ if(crowdTestTaskCode.equals(crowdTestTask.getCode())){
|
|
|
|
|
+ if(crowdTestTask.getStatus() != (CrowdTestTaskStatus.HAS_FINISHED-1)){
|
|
|
|
|
+ throw new CrowdTestTaskException("当前任务不能被结束,任务状态为:"+crowdTestTask.getStatus());
|
|
|
|
|
+ }else{
|
|
|
|
|
+ //结束任务时修改任务状态为"已结束"
|
|
|
|
|
+ crowdTestTask.setStatus(CrowdTestTaskStatus.HAS_FINISHED);
|
|
|
|
|
+ crowdTestTask.setEndTime(new Timestamp(System.currentTimeMillis()));
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ crowdTestTaskListResult.add(crowdTestTask);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ this.setCrowdTestTaskList(crowdTestTaskListResult);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ return this;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 创建项目报告(区域管理员)
|
|
|
|
|
+ * @param crowdTestReport
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ public CrowdTestProject createCrowdTestProjectReport(CrowdTestReport crowdTestReport, User user) {
|
|
|
|
|
+ //判断是否为区域管理员
|
|
|
|
|
+ RegionalManager regionalManager = user.getRegionalManager();
|
|
|
|
|
+ if(regionalManager == null){
|
|
|
|
|
+ throw new UserNotExistException("当前用户不是区域管理员,没有权限创建项目报告");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //判断是否是当前项目的区域管理员
|
|
|
|
|
+ if(!this.regionalManagerId.equals(user.getId())){
|
|
|
|
|
+ throw new CrowdTestProjectException("当前用户没有权限创建项目报告!");
|
|
|
|
|
+ }
|
|
|
|
|
+ //项目状态判断
|
|
|
|
|
+ if(this.getStatus() != (CrowdTestProjectStatus.HAS_COMMITED-1)){
|
|
|
|
|
+ throw new CrowdTestProjectException("当前项目状态不可创建项目报告!状态为:"+this.getStatus());
|
|
|
|
|
+ }else{
|
|
|
|
|
+ crowdTestReport.setScope(0);
|
|
|
|
|
+ crowdTestReport.setDependencyCode(this.getCode());
|
|
|
|
|
+ this.setCrowdTestReportForProject(crowdTestReport);
|
|
|
|
|
+ return this;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 提交项目(区域管理员)
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ public CrowdTestProject commitCrowdTestProject(User user) {
|
|
|
|
|
+ //判断是否为区域管理员
|
|
|
|
|
+ RegionalManager regionalManager = user.getRegionalManager();
|
|
|
|
|
+ if(regionalManager == null){
|
|
|
|
|
+ throw new UserNotExistException("当前用户不是区域管理员,没有权限提交项目");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //判断是否是当前项目的区域管理员
|
|
|
|
|
+ if(!this.regionalManagerId.equals(user.getId())){
|
|
|
|
|
+ throw new CrowdTestProjectException("当前用户没有权限操作此项目!");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //项目状态判断
|
|
|
|
|
+ if(this.getStatus() != CrowdTestProjectStatus.HAS_RECEIVED){
|
|
|
|
|
+ throw new CrowdTestProjectException("当前项目状态不可提交项目!状态为:"+this.getStatus());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //判断项目下是否有任务
|
|
|
|
|
+ if(this.getCrowdTestTaskList()==null || this.getCrowdTestTaskList().size() < 1){
|
|
|
|
|
+ throw new CrowdTestProjectException("还未创建任务,项目不能被提交");
|
|
|
|
|
+ }else{
|
|
|
|
|
+ //结束项目时查看是否已结束任务
|
|
|
|
|
+ if(this.getCrowdTestTaskList().stream().filter(task -> task.getStatus()!=CrowdTestTaskStatus.HAS_REJECTED)
|
|
|
|
|
+ .anyMatch(task -> task.getStatus()!=CrowdTestTaskStatus.HAS_FINISHED)){
|
|
|
|
|
+ throw new CrowdTestTaskException("存在未结束的任务,项目不能被提交");
|
|
|
}
|
|
}
|
|
|
- crowdTestTask.setStatus(status);
|
|
|
|
|
}
|
|
}
|
|
|
- crowdTestProject.setStatus(status);
|
|
|
|
|
- return crowdTestProject;
|
|
|
|
|
|
|
+ //判断项目下是否有项目报告
|
|
|
|
|
+ if(this.getCrowdTestReportForProject() == null){
|
|
|
|
|
+ throw new CrowdTestProjectException("还未创建项目报告,项目不能被提交");
|
|
|
|
|
+ }
|
|
|
|
|
+ this.setStatus(CrowdTestProjectStatus.HAS_COMMITED);
|
|
|
|
|
+ return this;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 结束项目(项目发起者)
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ public CrowdTestProject finishCrowdTestProject(User user) {
|
|
|
|
|
+ //判断用户是否认证
|
|
|
|
|
+// if(user.getPersonalAuthentication() == null && user.getEnterpriseAuthentication() == null && user.getRegionalManager() == null && user.getEvaluationAgency() == null){
|
|
|
|
|
+// throw new CrowdTestProjectException("当前用户未进行认证,无权限对项目操作");
|
|
|
|
|
+// }
|
|
|
|
|
+ //判断是否为项目发起者
|
|
|
|
|
+ if(!this.getUserId().equals(user.getId())){
|
|
|
|
|
+ throw new CrowdTestProjectException("当前用户没有权限结束项目!");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if(this.getStatus() != CrowdTestProjectStatus.HAS_COMMITED){
|
|
|
|
|
+ throw new CrowdTestProjectException("项目不能确认结束,当前状态为:"+this.getStatus());
|
|
|
|
|
+ }else{
|
|
|
|
|
+ this.setStatus(CrowdTestProjectStatus.HAS_FINISHED);
|
|
|
|
|
+ this.setEndTime(new Timestamp(System.currentTimeMillis()));
|
|
|
|
|
+ }
|
|
|
|
|
+ return this;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public void reject(Long userId) {
|
|
|
|
|
+ if (this.getProjectDistributionTypeId()!=0
|
|
|
|
|
+ || this.getStatus() != CrowdTestProjectStatus.HAS_RELEASED
|
|
|
|
|
+ || !this.getRegionalManagerId().equals(userId)){
|
|
|
|
|
+ throw new CrowdTestProjectException("非法的操作");
|
|
|
|
|
+ }
|
|
|
|
|
+ this.setStatus(CrowdTestProjectStatus.HAS_REJECTED);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|