|
|
@@ -240,9 +240,7 @@ public class CrowdTestProject {
|
|
|
crowdTestReportForProject.setIsDeleted(DeletedStatus.isDeleted);
|
|
|
}
|
|
|
|
|
|
- if(CrowdTestProjectStatus.HAS_REPORTED == this.getStatus()){
|
|
|
- this.setStatus(CrowdTestProjectStatus.HAS_SPLITED);
|
|
|
- }else{
|
|
|
+ if((CrowdTestProjectStatus.HAS_COMMITED-1) != this.getStatus()){
|
|
|
throw new CrowdTestProjectException("项目当前状态不可进行报告删除,当前项目状态为:"+this.getStatus());
|
|
|
}
|
|
|
return this;
|
|
|
@@ -250,10 +248,9 @@ public class CrowdTestProject {
|
|
|
|
|
|
|
|
|
public void addTask(CrowdTestTask task){
|
|
|
- if (this.getStatus() != CrowdTestProjectStatus.HAS_RECEIVED && this.getStatus() != CrowdTestProjectStatus.HAS_SPLITED)
|
|
|
+ if (this.getStatus() != CrowdTestProjectStatus.HAS_RECEIVED)
|
|
|
throw new BaseException("当前阶段不允许创建新任务");
|
|
|
this.getCrowdTestTaskList().add(task);
|
|
|
- this.setStatus(CrowdTestProjectStatus.HAS_SPLITED);
|
|
|
}
|
|
|
|
|
|
public CrowdTestTask getTask(String taskCode){
|
|
|
@@ -274,12 +271,18 @@ public class CrowdTestProject {
|
|
|
* 创建测试项目(普通用户)
|
|
|
* @return
|
|
|
*/
|
|
|
- public CrowdTestProject createCrowdTestProject() {
|
|
|
- //增加设置项目code
|
|
|
+ public CrowdTestProject createCrowdTestProject(User user) {
|
|
|
+ //判断用户是否认证
|
|
|
+ List<Role> roleList = user.getRoleList();
|
|
|
+ if(roleList.size() == 1 && roleList.get(0).getId() == 6L){
|
|
|
+ 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;
|
|
|
}
|
|
|
|
|
|
@@ -287,9 +290,20 @@ public class CrowdTestProject {
|
|
|
* 发布项目(普通用户)
|
|
|
* @return
|
|
|
*/
|
|
|
- public CrowdTestProject releaseCrowdTestProject() {
|
|
|
+ public CrowdTestProject releaseCrowdTestProject(User user) {
|
|
|
+ //判断用户是否认证
|
|
|
+ List<Role> roleList = user.getRoleList();
|
|
|
+ if(roleList.size() == 1 && roleList.get(0).getId() == 6L){
|
|
|
+ throw new CrowdTestProjectException("当前用户未进行认证,无创建项目权限");
|
|
|
+ }
|
|
|
+ //判断用户是否为项目发起者
|
|
|
+ if(!this.getUserId().equals(user.getId())){
|
|
|
+ throw new CrowdTestProjectException("当前用户无权限发布此项目");
|
|
|
+ }
|
|
|
+
|
|
|
+ //判断项目状态
|
|
|
if(this.status != (CrowdTestProjectStatus.HAS_RELEASED-1)){
|
|
|
- throw new CrowdTestProjectException("当前项目状态不能被发布");
|
|
|
+ throw new CrowdTestProjectException("当前项目状态不能被发布,当前状态为:"+this.getStatus());
|
|
|
}else{
|
|
|
this.setStatus(CrowdTestProjectStatus.HAS_RELEASED);
|
|
|
}
|
|
|
@@ -297,41 +311,85 @@ public class CrowdTestProject {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 创建测试任务
|
|
|
- * @param crowdTestTask
|
|
|
+ * 接收项目(区域管理员)
|
|
|
* @return
|
|
|
*/
|
|
|
- public CrowdTestProject createCrowdTestTask(CrowdTestTask crowdTestTask) {
|
|
|
- List<CrowdTestTask> crowdTestTaskList = this.getCrowdTestTaskList();
|
|
|
-
|
|
|
- //增加设置任务code
|
|
|
-// String taskCode = GenerateFlowCodeUtil.generateFlowCode("TASK-"+ command.getType());
|
|
|
-// crowdTestTask.setCode(taskCode);
|
|
|
-
|
|
|
- crowdTestTask.setStatus(CrowdTestTaskStatus.HAS_CREATED);
|
|
|
+ public CrowdTestProject receiveProject(User user) {
|
|
|
+ //判断是否为区域管理员
|
|
|
+ RegionalManager regionalManager = user.getRegionalManager();
|
|
|
+ if(regionalManager == null){
|
|
|
+ throw new UserNotExistException("当前用户不是区域管理员,没有权限接收此项目");
|
|
|
+ }
|
|
|
|
|
|
- //添加测试任务
|
|
|
- crowdTestTaskList.add(crowdTestTask);
|
|
|
+ //判断项目状态
|
|
|
+ if(this.getStatus() != (CrowdTestProjectStatus.HAS_RECEIVED-1)){
|
|
|
+ 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<Regional> regionalList = regionalManager.getRegionalList();
|
|
|
+ boolean isValidCity = false;
|
|
|
+ //判断管理员管辖的区域是否符合要求
|
|
|
+ for(Regional regional : regionalList){
|
|
|
+ if(this.getDistributionCity().equals(regional.getName())){
|
|
|
+ isValidCity = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- //修改项目状态
|
|
|
- if(CrowdTestProjectStatus.HAS_SPLITED != this.getStatus()){
|
|
|
- this.setStatus(CrowdTestProjectStatus.HAS_SPLITED);
|
|
|
+ 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);
|
|
|
+ }
|
|
|
}
|
|
|
- this.setCrowdTestTaskList(crowdTestTaskList);
|
|
|
return this;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 接收项目(区域管理员)
|
|
|
+ * 创建测试任务(区域管理员)
|
|
|
+ * @param crowdTestTask
|
|
|
* @return
|
|
|
*/
|
|
|
- public CrowdTestProject receiveProject() {
|
|
|
- if(this.getRegionalManagerId() != null){
|
|
|
- throw new CrowdTestProjectException("项目已被接收");
|
|
|
- }else if(this.getStatus() != (CrowdTestProjectStatus.HAS_RECEIVED-1)){
|
|
|
- throw new CrowdTestProjectException("项目不能被接收,项目状态为: " + this.getStatus());
|
|
|
+ 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{
|
|
|
- this.setStatus(CrowdTestProjectStatus.HAS_RECEIVED);
|
|
|
+ //判断项目状态
|
|
|
+ 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 this;
|
|
|
}
|
|
|
@@ -341,23 +399,33 @@ public class CrowdTestProject {
|
|
|
* @param crowdTestTaskCode
|
|
|
* @return
|
|
|
*/
|
|
|
- public CrowdTestProject releaseCrowdTestTask(String crowdTestTaskCode) {
|
|
|
- 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);
|
|
|
+ public CrowdTestProject releaseCrowdTestTask(String crowdTestTaskCode, User user) {
|
|
|
+ //判断是否为区域管理员
|
|
|
+ RegionalManager regionalManager = user.getRegionalManager();
|
|
|
+ if(regionalManager == null){
|
|
|
+ throw new UserNotExistException("当前用户不是区域管理员,没有权限发布测试任务");
|
|
|
+ }
|
|
|
+
|
|
|
+ //判断是否是当前项目的区域管理员
|
|
|
+ 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);
|
|
|
}
|
|
|
- crowdTestTaskListResult.add(crowdTestTask);
|
|
|
+ this.setCrowdTestTaskList(crowdTestTaskListResult);
|
|
|
+ return this;
|
|
|
}
|
|
|
-
|
|
|
- this.setCrowdTestTaskList(crowdTestTaskListResult);
|
|
|
- return this;
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -365,17 +433,44 @@ public class CrowdTestProject {
|
|
|
* 接收任务(测评机构)
|
|
|
* @return
|
|
|
*/
|
|
|
- public CrowdTestProject receiveTask(Long userForEvaluationAgencyId, String crowdTestTaskCode) {
|
|
|
+ public CrowdTestProject receiveTask(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){
|
|
|
if(crowdTestTaskCode.equals(crowdTestTask.getCode())){
|
|
|
+ //判断任务状态
|
|
|
if(crowdTestTask.getStatus() != (CrowdTestTaskStatus.HAS_RECEIVED - 1)){
|
|
|
throw new CrowdTestTaskException("任务当前状态不能被接收,当前状态为:"+crowdTestTask.getStatus());
|
|
|
}else{
|
|
|
- crowdTestTask.setStatus(CrowdTestTaskStatus.HAS_RECEIVED);
|
|
|
- crowdTestTask.setEvaluationAgencyId(userForEvaluationAgencyId);
|
|
|
+ //任务是定向发布
|
|
|
+ if(crowdTestTask.getDistributionType() == 0){
|
|
|
+ if(!crowdTestTask.getEvaluationAgencyId().equals(user.getId())){
|
|
|
+ throw new CrowdTestTaskException("当前用户没有权限接收此定向发布的任务!");
|
|
|
+ }else{
|
|
|
+ crowdTestTask.setStatus(CrowdTestTaskStatus.HAS_RECEIVED);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //任务是区域发布
|
|
|
+ else if(crowdTestTask.getDistributionType() == 1){
|
|
|
+ //判断测评机构的区域是否符合要求
|
|
|
+ if(!crowdTestTask.getDistributionCity().equals(user.getCity())){
|
|
|
+ throw new CrowdTestTaskException("任务发布的区域不符合当前测评机构的区域!");
|
|
|
+ }else{
|
|
|
+ crowdTestTask.setEvaluationAgencyId(user.getId());
|
|
|
+ crowdTestTask.setStatus(CrowdTestTaskStatus.HAS_RECEIVED);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //任务是广场发布
|
|
|
+ else{
|
|
|
+ crowdTestTask.setEvaluationAgencyId(user.getId());
|
|
|
+ crowdTestTask.setStatus(CrowdTestTaskStatus.HAS_RECEIVED);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
crowdTestTaskListResult.add(crowdTestTask);
|
|
|
@@ -391,46 +486,69 @@ public class CrowdTestProject {
|
|
|
* @param crowdTestReport
|
|
|
* @return
|
|
|
*/
|
|
|
- public CrowdTestProject createCrowdTestReport(String crowdTestTaskCode, CrowdTestReport crowdTestReport) {
|
|
|
+ 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)){
|
|
|
-// //设置报告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);
|
|
|
+ //判断是否是当前任务的测评机构
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
- crowdTestTask.setStatus(CrowdTestTaskStatus.HAS_REPORTED);
|
|
|
- crowdTestTaskListResult.add(crowdTestTask);
|
|
|
}
|
|
|
this.setCrowdTestTaskList(crowdTestTaskListResult);
|
|
|
return this;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 提交测试任务
|
|
|
+ * 提交测试任务(测评机构)
|
|
|
* @param crowdTestTaskCode
|
|
|
* @return
|
|
|
*/
|
|
|
- public CrowdTestProject commitCrowdTestTask(String crowdTestTaskCode) {
|
|
|
+ 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){
|
|
|
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);
|
|
|
- crowdTestTask.setEndTime(new Timestamp(System.currentTimeMillis()));
|
|
|
+ //判断是否是当前任务的测评机构
|
|
|
+ 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);
|
|
|
@@ -443,75 +561,136 @@ public class CrowdTestProject {
|
|
|
* 结束任务(区域管理员)
|
|
|
* @return
|
|
|
*/
|
|
|
- public CrowdTestProject finishCrowdTestTask() {
|
|
|
- List<CrowdTestTask> crowdTestTaskList = this.getCrowdTestTaskList();
|
|
|
- List<CrowdTestTask> crowdTestTaskListResult = new ArrayList<>();
|
|
|
- //结束任务时修改任务状态为"已结束"
|
|
|
- for(CrowdTestTask crowdTestTask : crowdTestTaskList){
|
|
|
- if(crowdTestTask.getStatus() != (CrowdTestTaskStatus.HAS_FINISHED-1)){
|
|
|
- throw new CrowdTestTaskException("存在任务不能被结束,任务状态为:"+crowdTestTask.getStatus());
|
|
|
- }else{
|
|
|
- crowdTestTask.setStatus(CrowdTestTaskStatus.HAS_FINISHED);
|
|
|
+ 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);
|
|
|
}
|
|
|
- crowdTestTaskListResult.add(crowdTestTask);
|
|
|
+
|
|
|
+ this.setCrowdTestTaskList(crowdTestTaskListResult);
|
|
|
}
|
|
|
|
|
|
- this.setCrowdTestTaskList(crowdTestTaskListResult);
|
|
|
+
|
|
|
return this;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 创建项目报告
|
|
|
+ * 创建项目报告(区域管理员)
|
|
|
* @param crowdTestReport
|
|
|
* @return
|
|
|
*/
|
|
|
- public CrowdTestProject createCrowdTestProjectReport(CrowdTestReport crowdTestReport) {
|
|
|
- crowdTestReport.setScope(0);
|
|
|
- crowdTestReport.setDependencyCode(this.getCode());
|
|
|
+ public CrowdTestProject createCrowdTestProjectReport(CrowdTestReport crowdTestReport, User user) {
|
|
|
+ //判断是否为区域管理员
|
|
|
+ RegionalManager regionalManager = user.getRegionalManager();
|
|
|
+ if(regionalManager == null){
|
|
|
+ throw new UserNotExistException("当前用户不是区域管理员,没有权限创建项目报告");
|
|
|
+ }
|
|
|
|
|
|
- this.setCrowdTestReportForProject(crowdTestReport);
|
|
|
- if(this.getStatus() != (CrowdTestProjectStatus.HAS_REPORTED - 1)){
|
|
|
- throw new CrowdTestProjectException("项目报告不能被提交,当前状态为:"+this.getStatus());
|
|
|
- }else {
|
|
|
- this.setStatus(CrowdTestProjectStatus.HAS_REPORTED);
|
|
|
+ //判断是否是当前项目的区域管理员
|
|
|
+ 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 this;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 提交项目
|
|
|
+ * 提交项目(区域管理员)
|
|
|
* @return
|
|
|
*/
|
|
|
- public CrowdTestProject commitCrowdTestProject() {
|
|
|
- List<CrowdTestTask> crowdTestTaskList = this.getCrowdTestTaskList();
|
|
|
- if(this.getCrowdTestReportForProject() == null){
|
|
|
- throw new CrowdTestProjectException("还未创建项目报告,项目不能被提交");
|
|
|
+ public CrowdTestProject commitCrowdTestProject(User user) {
|
|
|
+ //判断是否为区域管理员
|
|
|
+ RegionalManager regionalManager = user.getRegionalManager();
|
|
|
+ if(regionalManager == null){
|
|
|
+ throw new UserNotExistException("当前用户不是区域管理员,没有权限提交项目");
|
|
|
}
|
|
|
|
|
|
- //结束项目时查看是否已结束任务
|
|
|
- if(this.getStatus() != (CrowdTestProjectStatus.HAS_COMMITED - 1)){
|
|
|
- throw new CrowdTestProjectException("项目不能被结束,状态为:"+this.getStatus());
|
|
|
+ //判断是否是当前项目的区域管理员
|
|
|
+ if(!this.regionalManagerId.equals(user.getId())){
|
|
|
+ throw new CrowdTestProjectException("当前用户没有权限提交项目!");
|
|
|
+ }
|
|
|
+
|
|
|
+ //项目状态判断
|
|
|
+ if(this.getStatus() != (CrowdTestProjectStatus.HAS_COMMITED-1)){
|
|
|
+ throw new CrowdTestProjectException("当前项目状态不可提交项目!状态为:"+this.getStatus());
|
|
|
+ }
|
|
|
+
|
|
|
+ //判断项目下是否有任务
|
|
|
+ List<CrowdTestTask> crowdTestTaskList = this.getCrowdTestTaskList();
|
|
|
+ if(crowdTestTaskList.size() < 1){
|
|
|
+ throw new CrowdTestProjectException("还未创建任务,项目不能被提交");
|
|
|
}else{
|
|
|
+ //结束项目时查看是否已结束任务
|
|
|
for(CrowdTestTask crowdTestTask : crowdTestTaskList){
|
|
|
if(crowdTestTask.getStatus() != CrowdTestTaskStatus.HAS_FINISHED){
|
|
|
throw new CrowdTestTaskException("存在未结束的任务,项目不能被提交");
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ //判断项目下是否有项目报告
|
|
|
+ if(this.getCrowdTestReportForProject() == null){
|
|
|
+ throw new CrowdTestProjectException("还未创建项目报告,项目不能被提交");
|
|
|
+ }
|
|
|
+
|
|
|
this.setStatus(CrowdTestProjectStatus.HAS_COMMITED);
|
|
|
this.setEndTime(new Timestamp(System.currentTimeMillis()));
|
|
|
return this;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 结束项目
|
|
|
+ * 结束项目(项目发起者)
|
|
|
* @return
|
|
|
*/
|
|
|
- public CrowdTestProject finishCrowdTestProject() {
|
|
|
+ public CrowdTestProject finishCrowdTestProject(User user) {
|
|
|
+ //判断用户是否认证
|
|
|
+ List<Role> roleList = user.getRoleList();
|
|
|
+ if(roleList.size() == 1 && roleList.get(0).getId() == 6L){
|
|
|
+ throw new CrowdTestProjectException("当前用户未进行认证,无创建项目权限");
|
|
|
+ }
|
|
|
+ //判断是否为项目发起者
|
|
|
+ if(!this.getUserId().equals(user.getId())){
|
|
|
+ throw new CrowdTestProjectException("当前用户没有权限结束项目!");
|
|
|
+ }
|
|
|
+
|
|
|
if(this.getStatus() != (CrowdTestProjectStatus.HAS_FINISHED - 1)){
|
|
|
throw new CrowdTestProjectException("项目不能被提交,当前状态为:"+this.getStatus());
|
|
|
}else{
|
|
|
this.setStatus(CrowdTestProjectStatus.HAS_FINISHED);
|
|
|
+ this.setEndTime(new Timestamp(System.currentTimeMillis()));
|
|
|
}
|
|
|
return this;
|
|
|
}
|