Explorar el Código

修复截止时间和报价的判断 状态的判断等

guo00guo hace 5 años
padre
commit
0c19cf7304

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

@@ -37,6 +37,7 @@ public class CrowdTestProject {
     private Timestamp deadTime;
     private Timestamp endTime;
     private int isDeleted;
+    private int joinCount;
     private Timestamp createTime;
 
     private List<CrowdTestTask> crowdTestTaskList;
@@ -254,6 +255,16 @@ public class CrowdTestProject {
     public void addTask(CrowdTestTask task){
         if (!(this.getStatus() >= CrowdTestProjectStatus.HAS_RECEIVED || this.getStatus()<=CrowdTestTaskStatus.HAS_COMMITED))
             throw new BaseException("当前阶段不允许创建新任务");
+        if (this.getQuotedPrice() < task.getQuotedPrice()){
+            throw new BaseException("任务的报价不能超过项目的剩余价格,项目的剩余价格为:" + this.getQuotedPrice());
+        }
+        if (this.getDeadTime().getTime() < task.getDeadTime().getTime()){
+            throw new BaseException("任务截止时间不能超过项目的截止时间,项目的截止时间为:" + this.getDeadTime());
+        }
+        if (task.getDeadTime().getTime() < System.currentTimeMillis()){
+            throw new BaseException("任务截止时间不能小于当前时间");
+        }
+
         this.getCrowdTestTaskList().add(task);
     }
 
@@ -334,7 +345,7 @@ public class CrowdTestProject {
 
         //判断项目状态
         if(this.getStatus() != CrowdTestProjectStatus.HAS_RELEASED){
-            throw new CrowdTestProjectException("项目不能被接收,项目状态为: " + this.getStatus());
+            throw new CrowdTestProjectException("项目不能被接收,项目已被接收" );
         }else{
             //项目是定向发布
             if(this.getProjectDistributionTypeId() == 0){

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

@@ -13,4 +13,5 @@ public class CrowdTestProjectStatus {
 //    public static final int HAS_REPORTED = 4; //生成项目报告
     public static final int HAS_COMMITED = 3; //提交项目
     public static final int HAS_FINISHED = 4; //结束项目
+    public static final int HAS_TIME_OUT = 5; //时间截止
 }

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

@@ -13,4 +13,5 @@ public class CrowdTestTaskStatus {
     public static final int HAS_COMMITED = 3;   //测评机构提交任务
 //    public static final int HAS_COMMITED_MANAGER = 4;   //区域管理员提交任务
     public static final int HAS_FINISHED = 4;   //结束任务
+    public static final int HAS_TIME_OUT = 5; //时间截止
 }

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

@@ -81,6 +81,9 @@ public class CrowdTestProjectPO implements Serializable {
     @Column(name = "CTP_IS_DELETED")
     private int isDeleted;
 
+    @Column(name = "CTP_JOIN_COUNT")
+    private int joinCount;
+
     @Column(name = "CTP_CREATE_TIME")
     private Timestamp createTime;
 

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

@@ -33,7 +33,6 @@ public class EvaluationAgencyRepo implements IEvaluationAgencyRepo {
 
     @Override
     public EvaluationAgency findAgencyById(Long id){
-        System.out.println(id);
         Optional<EvaluationAgencyPO> evaluationAgencyPO = evaluationAgencyDao.findById(id);
         if(!evaluationAgencyPO.isPresent()){
             throw new EvaluationAgencyResourceNotExist("测评信息不存在");

+ 6 - 1
site/src/main/java/com/mooctest/crowd/site/data/vo/CrowdProjectVO.java

@@ -41,6 +41,7 @@ public class CrowdProjectVO {
     private Double budget;
     private String usage;
     private Integer status;
+    private int joinCount;
     private Long regionManagerId;
     private StatusVO statusVO;
     private Boolean needHandle = false; //该项目需要处理
@@ -65,6 +66,7 @@ public class CrowdProjectVO {
         this.price = project.getFixedPrice();
         this.usage = null;
         this.status = project.getStatus();
+        this.joinCount = project.getJoinCount();
         this.regionManagerId = project.getRegionalManagerId();
         this.renderStatus();
     }
@@ -77,9 +79,12 @@ public class CrowdProjectVO {
         }else if (this.status > CrowdTestProjectStatus.HAS_REJECTED && this.status < CrowdTestProjectStatus.HAS_RECEIVED){
             this.statusVO.setText("等待接收");
             this.statusVO.setStyle("warning");
-        }else if (this.status >= CrowdTestProjectStatus.HAS_RECEIVED && this.status < CrowdTestProjectStatus.HAS_FINISHED){
+        }else if (this.status == CrowdTestProjectStatus.HAS_RECEIVED){
             this.statusVO.setText("进行中");
             this.statusVO.setStyle("primary");
+        }else if (this.status == CrowdTestProjectStatus.HAS_COMMITED){
+            this.statusVO.setText("已提交");
+            this.statusVO.setStyle("primary");
         }else if (this.status == CrowdTestProjectStatus.HAS_FINISHED) {
             this.statusVO.setText("已完成");
             this.statusVO.setStyle("success");

+ 28 - 26
site/src/main/java/com/mooctest/crowd/site/mediator/impl/WebMediatorImpl.java

@@ -212,29 +212,26 @@ public class WebMediatorImpl implements ViewMediator {
         List<CrowdTaskVO> unfinishedTasks = null;
         List<CrowdTaskVO> finishedTasks = null;
         if (user.getRoleList().stream().anyMatch(role -> role.getName().equals("evaluationAgency"))) {
-//            allTaskOfAgency = taskDao.findByEvaluationAgencyIdAndIsDeleted(user.getEvaluationAgency().getUserId(), 0).stream()
-//                    .sorted(Comparator.comparing(CrowdTestTaskPO::getId).reversed().thenComparing(CrowdTestTaskPO::getStatus).reversed())
-//                    .map(crowdTestTaskPO -> {
-//                        CrowdTestTask task = new CrowdTestTask();
-//                        BeanUtils.copyProperties(crowdTestTaskPO, task);
-//                        return task;
-//                    }).collect(Collectors.toList());
-
-            allTaskOfAgency = taskToUserDao.findByUserId(user.getId()).stream()
-                    .map(taskToUserPO -> {
-                        CrowdTestTaskPO crowdTestTaskPO = taskDao.findByCodeAndIsDeleted(taskToUserPO.getTaskCode(), DeletedStatus.isNotDeleted);
-                        CrowdTestTask task = new CrowdTestTask();
-                        BeanUtils.copyProperties(crowdTestTaskPO, task);
-                        return task;
-                    }).collect(Collectors.toList());
-
-            unfinishedTasks = allTaskOfAgency.stream()
-                    .filter(crowdTestTask -> crowdTestTask.getStatus()>=CrowdTestTaskStatus.HAS_RELEASED && crowdTestTask.getStatus()<CrowdTestTaskStatus.HAS_FINISHED)
-                    .map(CrowdTaskVO::new).collect(Collectors.toList());
-
-            finishedTasks = allTaskOfAgency.stream()
-                    .filter(crowdTestTask -> crowdTestTask.getStatus()==CrowdTestTaskStatus.HAS_FINISHED)
-                    .map(CrowdTaskVO::new).collect(Collectors.toList());
+            List<TaskToUserPO> taskToUserPOS = taskToUserDao.findByUserId(user.getId());
+            if(taskToUserPOS != null && taskToUserPOS.size() > 0){
+                allTaskOfAgency = taskToUserPOS.stream()
+                        .map(taskToUserPO -> {
+                            CrowdTestTaskPO crowdTestTaskPO = taskDao.findByCodeAndIsDeleted(taskToUserPO.getTaskCode(), DeletedStatus.isNotDeleted);
+                            if(crowdTestTaskPO != null){
+                                CrowdTestTask task = new CrowdTestTask();
+                                BeanUtils.copyProperties(crowdTestTaskPO, task);
+                                return task;
+                            }
+                            return null;
+                        }).collect(Collectors.toList());
+                unfinishedTasks = allTaskOfAgency.stream()
+                        .filter(crowdTestTask -> crowdTestTask.getStatus()>=CrowdTestTaskStatus.HAS_RELEASED && crowdTestTask.getStatus()<CrowdTestTaskStatus.HAS_FINISHED)
+                        .map(CrowdTaskVO::new).collect(Collectors.toList());
+
+                finishedTasks = allTaskOfAgency.stream()
+                        .filter(crowdTestTask -> crowdTestTask.getStatus()==CrowdTestTaskStatus.HAS_FINISHED)
+                        .map(CrowdTaskVO::new).collect(Collectors.toList());
+            }
         }
         myCrowdDTO.setFinishedTasks(finishedTasks);
         myCrowdDTO.setUnfinishedTasks(unfinishedTasks);
@@ -513,9 +510,14 @@ public class WebMediatorImpl implements ViewMediator {
                     operationControl.setReject(true);
                 } else if (project.getStatus() == CrowdTestProjectStatus.HAS_RECEIVED){
                     operationControl.setCreateTask(true);
-                    if (project.getCrowdTestTaskList()
-                            .stream().allMatch(task -> task.getStatus()==CrowdTestTaskStatus.HAS_REJECTED||task.getStatus()==CrowdTestTaskStatus.HAS_FINISHED)) {
-                        operationControl.setUploadReport(true);
+                    // 无任务
+                    if(project.getCrowdTestTaskList() == null || project.getCrowdTestTaskList().size() == 0){
+                        operationControl.setUploadReport(false);
+                    }else {
+                        if(project.getCrowdTestTaskList()
+                                .stream().allMatch(task -> task.getStatus()==CrowdTestTaskStatus.HAS_REJECTED||task.getStatus()==CrowdTestTaskStatus.HAS_FINISHED)) {
+                            operationControl.setUploadReport(true);
+                        }
                     }
                     if (project.getCrowdTestReportForProject()!=null){
                         operationControl.setFinish(true);

+ 2 - 1
site/src/main/java/com/mooctest/crowd/site/service/impl/CrowdTaskServiceImpl.java

@@ -83,7 +83,7 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
         updateTask.setRequirementFile(task.get().getRequirementFile());
         updateTask.setStatus(task.get().getStatus());
         project.getCrowdTestTaskList().remove(task);
-        project.getCrowdTestTaskList().add(updateTask);
+        project.addTask(updateTask);
         projectRepo.saveCrowdTestProject(project);
         return getTaskDetails(projectCode, taskCode, userId);
     }
@@ -98,6 +98,7 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
         CrowdTestProject project = projectRepo.getByProjectCode(projectCode);
         CrowdTestTask task = project.getTask(taskCode);
         task.receive(userRepo.getByID(userId));
+        project.setJoinCount(project.getJoinCount()+1);
         projectRepo.saveCrowdTestProject(project);
         return getTaskDetails(projectCode, taskCode, userId);
     }