浏览代码

修复流程

guo00guo 5 年之前
父节点
当前提交
2a45c853d6

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

@@ -143,6 +143,7 @@ public class CrowdTestTask {
             throw new CrowdTestTaskException("当前状态不能提交任务");
         }
         this.setStatus(CrowdTestTaskStatus.HAS_COMMITED);
+        System.out.println(this.status);
         this.setEndTime(new Timestamp(System.currentTimeMillis()));
     }
 
@@ -163,11 +164,13 @@ public class CrowdTestTask {
                 throw new CrowdTestTaskException("当前用户未提交报告");
             }else{
                 taskToUser.setIsCommitted(1);
-                taskToUser.setCommitReportTime(new Timestamp(System.currentTimeMillis()));
+                taskToUser.setCommitTaskTime(new Timestamp(System.currentTimeMillis()));
             }
         }
         this.setParticipantHasCommittedCount(this.getParticipantHasCommittedCount()+1);
-
+        if(this.getParticipantCount() == this.getParticipantHasCommittedCount()){
+            this.setStatus(CrowdTestTaskStatus.HAS_COMMITED);
+        }
     }
 
     public void confirmFinish(Long userId) {

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

@@ -10,6 +10,7 @@ public class CrowdTestTaskStatus {
     public static final int HAS_RELEASED = 1;   //发布任务
     public static final int HAS_RECEIVED = 2;   //接受任务
 //    public static final int HAS_REPORTED = 3; //存在任务报告
-    public static final int HAS_COMMITED = 3;   //提交任务
+    public static final int HAS_COMMITED = 3;   //测评机构提交任务
+//    public static final int HAS_COMMITED_MANAGER = 4;   //区域管理员提交任务
     public static final int HAS_FINISHED = 4;   //结束任务
 }

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

@@ -105,6 +105,12 @@ public class CrowdTestProjectRepo implements ICrowdTestProjectRepo {
                 crowdTestTaskDao.save(crowdTestTaskPO);
             }
         }
+        // 保存项目报告
+        if (crowdTestProject.getCrowdTestReportForProject() != null){
+            CrowdTestReport reportForProject = crowdTestProject.getCrowdTestReportForProject();
+            CrowdTestReportPO crowdTestReportPO = Converter.convert(CrowdTestReportPO.class, reportForProject);
+            crowdTestReportDao.save(crowdTestReportPO);
+        }
     }
 
 //    @Override

+ 3 - 3
site/src/main/java/com/mooctest/crowd/site/controller/CrowdTaskController.java

@@ -30,9 +30,9 @@ public class CrowdTaskController {
 
     @RequestMapping(value = "/project/{projectCode}/task/{taskCode}", method = RequestMethod.GET)
     public TaskDetailsDTO getTask(@PathVariable("projectCode") String projectCode, @PathVariable("taskCode") String taskCode, HttpSession session){
-        Object user = session.getAttribute("userId");
-        if (user == null)
-            return taskService.getTaskDetails(projectCode, taskCode, null);
+//        Object user = session.getAttribute("userId");
+//        if (user == null)
+//            return taskService.getTaskDetails(projectCode, taskCode, null);
         Long userId = Long.parseLong((String)session.getAttribute("userId"));
         return taskService.getTaskDetails(projectCode, taskCode, userId);
     }

+ 2 - 0
site/src/main/java/com/mooctest/crowd/site/data/TaskOperationControl.java

@@ -18,6 +18,7 @@ public class TaskOperationControl {
     private boolean update = false;
     private boolean uploadReport = false;
     private boolean finish = false;
+    private boolean finishByManager = false;
     private boolean confirmFinish = false;
 
     public void hasAll(){
@@ -26,6 +27,7 @@ public class TaskOperationControl {
         this.confirmFinish = true;
         this.update = true;
         this.finish = true;
+        this.finishByManager = true;
         this.uploadReport = true;
     }
 }

+ 16 - 9
site/src/main/java/com/mooctest/crowd/site/mediator/impl/WebMediatorImpl.java

@@ -365,9 +365,9 @@ public class WebMediatorImpl implements ViewMediator {
             }
             // 测评机构视图
             else if(userRepo.getByID(userId).getRoleList().stream().anyMatch(role -> role.getName().equals(RoleType.AGENCY.getName()))){
-                Optional<TaskToUser> taskToUserOptional = task.get().getAcceptedUserList().stream().filter(taskToUser -> taskToUser.getUserId().equals(userId)).findFirst();
-                if(!taskToUserOptional.isPresent())
-                    throw new HttpBadRequestException("当前用户没有接收此任务!");
+//                Optional<TaskToUser> taskToUserOptional = task.get().getAcceptedUserList().stream().filter(taskToUser -> taskToUser.getUserId().equals(userId)).findFirst();
+//                if(!taskToUserOptional.isPresent())
+//                    throw new HttpBadRequestException("当前用户没有接收此任务!");
 
                 taskToUserVOS = task.get().getAcceptedUserList().stream()
                         .filter(taskToUser -> taskToUser.getUserId().equals(userId)).map(taskToUser -> {
@@ -547,10 +547,16 @@ public class WebMediatorImpl implements ViewMediator {
         //区域管理员或系统管理员视角
         if (user.getRoleList().stream().anyMatch(role -> role.getName().equals("SystemAdministrator"))
                 ||(user.getRegionalManager()!=null&&user.getId().equals(project.getRegionalManagerId()))){
+            if (task.getParticipantHasCommittedCount() == task.getParticipantCount() && task.getStatus() == CrowdTestTaskStatus.HAS_RECEIVED){
+                task.setStatus(CrowdTestTaskStatus.HAS_COMMITED);
+                taskOperationControl.setConfirmFinish(true);
+            }
             if (task.getStatus()<CrowdTestTaskStatus.HAS_RECEIVED){
                 taskOperationControl.setUpdate(true);
-            }else if (task.getStatus()==CrowdTestTaskStatus.HAS_COMMITED){
-                taskOperationControl.setConfirmFinish(true);
+            }
+            taskOperationControl.setFinish(false);
+            if (task.getStatus() == CrowdTestTaskStatus.HAS_FINISHED){
+                taskOperationControl.setConfirmFinish(false);
             }
         }
         //评测机构视角
@@ -568,10 +574,10 @@ public class WebMediatorImpl implements ViewMediator {
                             taskOperationControl.setReject(true);
                     } else if (task.getStatus() == CrowdTestTaskStatus.HAS_RECEIVED){
                         taskOperationControl.setUploadReport(true);
-                        if (task.getParticipantHasCommittedCount() == task.getAcceptedCount()){
+                        if (taskToUserOptional.get().getHasReport() == 1 && taskToUserOptional.get().getIsCommitted() == 0){
                             taskOperationControl.setFinish(true);
-                        }
-                        if (taskToUserOptional.get().getIsCommitted() == 1){
+                        }else if (taskToUserOptional.get().getHasReport() == 1 && taskToUserOptional.get().getIsCommitted() == 1){
+                            taskOperationControl.setFinish(false);
                             taskOperationControl.setUploadReport(false);
                         }
                     } else if (task.getStatus() == CrowdTestTaskStatus.HAS_COMMITED){
@@ -582,8 +588,9 @@ public class WebMediatorImpl implements ViewMediator {
                     taskOperationControl.setReceive(true);
                     if (task.getStatus()==CrowdTestTaskStatus.HAS_RELEASED){
                         // 定向的
-                        if (task.getDistributionType()==0)
+                        if (task.getDistributionType()==0) {
                             taskOperationControl.setReject(true);
+                        }
                     }
                 }
 

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

@@ -114,10 +114,11 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
     public TaskDetailsDTO commitTask(String projectCode, String taskCode, Long userId) {
         CrowdTestProject project = projectRepo.getByProjectCode(projectCode);
         CrowdTestTask task = project.getTask(taskCode);
-        // 测评机构提交任务
-        if(userRepo.getByID(userId).equals(project.getRegionalManagerId())){
+        if(userId.equals(project.getRegionalManagerId())){
+            // 区域管理员提交任务
             task.commitByRegionalManager();
         }else if(userRepo.getByID(userId).getRoleList().stream().anyMatch(role -> role.getName().equals(RoleType.AGENCY.getName()))){
+            // 测评机构提交任务
             task.commitByAgency(taskCode, userId);
         }
 

+ 1 - 4
site/src/main/java/com/mooctest/crowd/site/service/impl/OSSUploadServiceImpl.java

@@ -1,7 +1,6 @@
 package com.mooctest.crowd.site.service.impl;
 
 import com.aliyun.oss.OSS;
-import com.aliyun.oss.OSSClientBuilder;
 import com.aliyun.oss.model.PutObjectResult;
 import com.mooctest.crowd.domain.exception.BaseException;
 import com.mooctest.crowd.site.configuration.OSSConfiguration;
@@ -12,8 +11,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
-import java.io.IOException;
-
 /**
  * @author: Diors.Po
  * @Email: 171256175@qq.com
@@ -86,7 +83,7 @@ public class OSSUploadServiceImpl implements UploadService {
         try {
             PutObjectResult result = ossClient.putObject(ossConfig.getBucketName(), fileName, file.getInputStream());
             return ossConfig.getBaseUrl()+fileName;
-        } catch (IOException e) {
+        } catch (Exception e) {
             log.error("OSS上传出错!", e);
             throw new BaseException(e.getMessage());
         } finally {