Bladeren bron

MOOC-26 完成北斗众测类型测试的区域管理员和其他人员的视图修改

guo00guo 5 jaren geleden
bovenliggende
commit
650801dacf

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

@@ -160,12 +160,12 @@ public class CrowdTestProjectRepo implements ICrowdTestProjectRepo {
                 if(crowdTestTask.getEndPoint() != null){
                     Optional<EndPointPO> endPointPO = endPointDao.findByTaskCode(crowdTestTask.getCode());
                     if(endPointPO.isPresent()){
-                        endPointDao.deleteEndPoint(crowdTestTask.getCode());
+                        EndPointPO addEndPointPO = Converter.convert(EndPointPO.class, crowdTestTask.getEndPoint());
+                        addEndPointPO.setId(endPointPO.get().getId());
+                        addEndPointPO.setProjectCode(crowdTestProject.getCode());
+                        addEndPointPO.setTaskCode(crowdTestTask.getCode());
+                        endPointDao.save(addEndPointPO);
                     }
-                    EndPointPO addEndPointPO = Converter.convert(EndPointPO.class, crowdTestTask.getEndPoint());
-                    addEndPointPO.setProjectCode(crowdTestProject.getCode());
-                    addEndPointPO.setTaskCode(crowdTestTask.getCode());
-                    endPointDao.save(addEndPointPO);
                 }
             }
         }

+ 25 - 7
site/src/main/java/com/mooctest/crowd/site/mediator/impl/WebMediatorImpl.java

@@ -953,11 +953,25 @@ public class WebMediatorImpl implements ViewMediator {
                         }).collect(Collectors.toList());
             }
             taskDetailsDTO.setAcceptedUserList(taskToUserVOS);
+
+            Optional<EndPointPO> endPointPOOptional = endPointDao.findByTaskCode(task.get().getCode());
+            // 判断是否具有配置项,提供跳转url
+            if(endPointPOOptional.isPresent()){
+                // 获取测试类型对应的跳转url
+                TestType testType = commonRepo.getTestTypeByAppCode(task.get().getType());
+                String url = testType.getUrl();
+                String reportUrl = url.replaceFirst("examId", endPointPOOptional.get().getExamId())
+                        .replaceFirst("caseId", endPointPOOptional.get().getCaseId())
+                        .replaceFirst("userId", String.valueOf(userId));
+
+                taskVO.setWriteReportUrl(reportUrl);
+            }
         }
 
         if (saveFlag) {
             projectRepo.saveCrowdTestProject(project);
         }
+
         taskDetailsDTO.setCrowdTaskVO(taskVO);
 //        EvaluationAgencyPO agencyPO = agencyDao.findByUserId(task.get().getEvaluationAgencyId());
 //        taskVO.setInstitution(agencyPO==null?"该机构已注销":agencyPO.getEvaluationAgencyName());
@@ -1606,20 +1620,25 @@ 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.getAcceptedCount() && task.getStatus() == CrowdTestTaskStatus.HAS_RECEIVED) || (task.getParticipantHasCommittedCount() == task.getParticipantCount() && task.getStatus() == CrowdTestTaskStatus.HAS_COMMITED)) {
-                taskOperationControl.setConfirmFinish(true);
-            }
             if (task.getStatus() < CrowdTestTaskStatus.HAS_RECEIVED) {
                 taskOperationControl.setUpdate(true);
             }
-            taskOperationControl.setFinish(false);
-            if (task.getStatus() == CrowdTestTaskStatus.HAS_FINISHED || task.getStatus() == CrowdTestTaskStatus.HAS_TIME_OUT) {
+            else{
+                if ((task.getParticipantHasCommittedCount() == task.getAcceptedCount() && task.getStatus() == CrowdTestTaskStatus.HAS_RECEIVED) || (task.getParticipantHasCommittedCount() == task.getParticipantCount() && task.getStatus() == CrowdTestTaskStatus.HAS_COMMITED)) {
+                    taskOperationControl.setConfirmFinish(true);
+                }
+
+                taskOperationControl.setFinish(false);
+                if (task.getStatus() == CrowdTestTaskStatus.HAS_FINISHED || task.getStatus() == CrowdTestTaskStatus.HAS_TIME_OUT) {
+                    taskOperationControl.setConfirmFinish(false);
+                }
                 // 具有配置项,需要在第三方进行填写报告
                 if(endPointPOOptional.isPresent()){
                     taskOperationControl.setUploadReport(true);
+                    taskOperationControl.setConfirmFinish(true);
                 }
-                taskOperationControl.setConfirmFinish(false);
             }
+            taskOperationControl.setWriteReport(true);
         }
         // TODO 已拒绝视图
         //评测机构和测评人员视角
@@ -1667,7 +1686,6 @@ public class WebMediatorImpl implements ViewMediator {
                     }
 
                 }
-
             } else if (task.getDistributionType() == 2) {
                 if (task.getStatus() == CrowdTestTaskStatus.HAS_RELEASED) {
                     taskOperationControl.setReceive(true);

+ 10 - 0
site/src/main/java/com/mooctest/crowd/site/service/impl/CrowdReportServiceImpl.java

@@ -1,5 +1,6 @@
 package com.mooctest.crowd.site.service.impl;
 
+import com.mooctest.crowd.domain.dao.EndPointDao;
 import com.mooctest.crowd.domain.domainobject.*;
 import com.mooctest.crowd.domain.exception.BaseException;
 import com.mooctest.crowd.domain.exception.CrowdTestReportNotExistException;
@@ -30,6 +31,9 @@ public class CrowdReportServiceImpl implements CrowdReportService {
     private CrowdTestProjectRepo projectRepo;
 
     @Autowired
+    private EndPointDao endPointDao;
+
+    @Autowired
     private ViewMediator viewMediator;
 
     @Override
@@ -50,6 +54,12 @@ public class CrowdReportServiceImpl implements CrowdReportService {
         // 判断报告的可操作性
         List<TaskToUser> acceptedUserList = task.get().getAcceptedUserList();
         Optional<TaskToUser> userOptional = acceptedUserList.stream().filter(user -> user.getUserId().equals(userId)).findFirst();
+
+//        Optional<EndPointPO> endPointPOOptional = endPointDao.findByTaskCode(taskCode);
+//        //具有配置项,需要在第三方进行填写报告
+//        if(endPointPOOptional.isPresent() && userId.equals(project.getRegionalManagerId())){
+//
+//        }
         if(!userOptional.isPresent()){
             throw new BaseException("当前用户没有此任务的操作权限!");
         }

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

@@ -1,6 +1,7 @@
 package com.mooctest.crowd.site.service.impl;
 
 import com.mooctest.crowd.domain.dao.CrowdTestTaskDao;
+import com.mooctest.crowd.domain.dao.EndPointDao;
 import com.mooctest.crowd.domain.domainobject.CrowdTestProject;
 import com.mooctest.crowd.domain.domainobject.CrowdTestTask;
 import com.mooctest.crowd.domain.domainobject.CrowdTestTaskStatus;
@@ -8,6 +9,7 @@ import com.mooctest.crowd.domain.domainobject.DistributeType;
 import com.mooctest.crowd.domain.exception.BaseException;
 import com.mooctest.crowd.domain.exception.CrowdTestTaskNotExistException;
 import com.mooctest.crowd.domain.exception.UnauthorizedException;
+import com.mooctest.crowd.domain.model.EndPointPO;
 import com.mooctest.crowd.domain.repository.CommonRepo;
 import com.mooctest.crowd.domain.repository.CrowdTestProjectRepo;
 import com.mooctest.crowd.domain.repository.CrowdTestTaskRepo;
@@ -39,8 +41,7 @@ import java.util.stream.Collectors;
 public class CrowdTaskServiceImpl implements CrowdTaskService {
 
     @Autowired
-    private CrowdTestTaskRepo taskRepo;
-
+    private EndPointDao endPointDao;
 
     @Autowired
     CrowdTestProjectRepo projectRepo;
@@ -153,6 +154,14 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
         CrowdTestTask task = project.getTask(taskCode);
         task.receive(userRepo.getByID(userId));
         project.setJoinCount(project.getJoinCount() + 1);
+
+        // 判断是否为第三方任务,如果是则管理员自身也是一个参与者
+        Optional<EndPointPO> endPointPOOptional = endPointDao.findByTaskCode(task.getCode());
+        if(endPointPOOptional.isPresent()){
+            task.receive(userRepo.getByID(project.getRegionalManagerId()));
+            project.setJoinCount(project.getJoinCount() + 1);
+        }
+
         projectRepo.saveCrowdTestProject(project);
         return getTaskDetails(projectCode, taskCode, userId);
     }