Explorar el Código

修改区域管理员结束任务的判断、测评机构提交任务的判断等

guo00guo hace 5 años
padre
commit
21e665a3c3

+ 44 - 13
core/src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestTask.java

@@ -7,6 +7,7 @@ import lombok.Data;
 import java.sql.Timestamp;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Optional;
 
 /**
  * @author guochao
@@ -35,7 +36,7 @@ public class CrowdTestTask {
     private Timestamp createTime;
     private int participantCount;
     private int acceptedCount;
-    private int participantHasReportCount;
+    private int participantHasCommittedCount;
     private List<TaskToUser> acceptedUserList = new ArrayList<>();
 //    private List<CrowdTestReport> crowdTestReportList = new ArrayList<>();
 
@@ -93,10 +94,10 @@ public class CrowdTestTask {
         }else if (this.getStatus()!=CrowdTestTaskStatus.HAS_RELEASED)
             throw new CrowdTestTaskException("任务当前状态不能被接收,当前状态为:"+this.getStatus());
         //定向发布类型
-        if (this.getDistributionType() == 0) {
-            if (!this.getEvaluationAgencyId().equals(user.getId()))
-                throw new CrowdTestTaskException("当前用户没有权限接收此定向发布的任务!");
-        }
+//        if (this.getDistributionType() == 0) {
+//            if (!this.getEvaluationAgencyId().equals(user.getId()))
+//                throw new CrowdTestTaskException("当前用户没有权限接收此定向发布的任务!");
+//        }
 //        this.setEvaluationAgencyId(user.getId());
 
         // 判断人数是否满员
@@ -104,10 +105,17 @@ public class CrowdTestTask {
             throw new CrowdTestTaskException("当前任务已经满员!");
         }
         // 新增接收者信息
+
+//        TaskToUser taskToUser = null;
+//        if(this.getDistributionType().equals(DistributeType.DIRECT.getId())){
+//            // 定向发布类型
+//            taskToUser = new TaskToUser(this.code, user.getId(), new Timestamp(System.currentTimeMillis()));
+//        }else if(this.getDistributionType().equals(DistributeType.SQUARE.getId())){
+//            // 广场发布类型
+//        }
         TaskToUser taskToUser = new TaskToUser();
-        taskToUser.setValue(this.code, user.getId(), new Timestamp(System.currentTimeMillis()));
-        List<TaskToUser> acceptedUserList = this.getAcceptedUserList();
-        acceptedUserList.add(taskToUser);
+        taskToUser.setValue(this.code, user.getId(), 0, this.getDistributionType(), 1, new Timestamp(System.currentTimeMillis()));
+        this.getAcceptedUserList().add(taskToUser);
         this.setAcceptedUserList(acceptedUserList);
         this.setAcceptedCount(this.acceptedCount+1);
         if (this.getAcceptedCount() == this.getParticipantCount()){
@@ -130,14 +138,36 @@ public class CrowdTestTask {
         this.isDeleted = DeletedStatus.isDeleted;
     }
 
-    public void commit(Long userId) {
-        if (this.getStatus()!=CrowdTestTaskStatus.HAS_RECEIVED || this.getParticipantHasReportCount() < this.getAcceptedCount()){
+    public void commitByRegionalManager() {
+        if (this.getStatus()!=CrowdTestTaskStatus.HAS_RECEIVED || this.getParticipantHasCommittedCount() < this.getAcceptedCount()){
             throw new CrowdTestTaskException("当前状态不能提交任务");
         }
-        if (!this.getEvaluationAgencyId().equals(userId)){
-            throw new UnauthorizedException("无权对此任务进行操作");
-        }
         this.setStatus(CrowdTestTaskStatus.HAS_COMMITED);
+        this.setEndTime(new Timestamp(System.currentTimeMillis()));
+    }
+
+    public void commitByAgency(String taskCode, Long userId) {
+        if (this.getStatus()!= CrowdTestTaskStatus.HAS_RECEIVED){
+            throw new CrowdTestTaskException("当前状态不能提交任务");
+        }
+
+        Optional<TaskToUser> taskToUserOptional = this.getAcceptedUserList().stream().filter(taskToUser -> taskToUser.getTaskCode().equals(taskCode)
+                && taskToUser.getUserId().equals(userId) && taskToUser.getDistributionType().equals(this.distributionType)).findFirst();
+        if(!taskToUserOptional.isPresent()){
+            throw new CrowdTestTaskException("当前用户无权对此任务进行操作");
+        }else{
+            TaskToUser taskToUser = taskToUserOptional.get();
+            if (taskToUser.getIsAccepted() == 0){
+                throw new CrowdTestTaskException("当前用户未接受此任务");
+            }else if(taskToUser.getHasReport() == 0){
+                throw new CrowdTestTaskException("当前用户未提交报告");
+            }else{
+                taskToUser.setIsCommitted(1);
+                taskToUser.setCommitReportTime(new Timestamp(System.currentTimeMillis()));
+            }
+        }
+        this.setParticipantHasCommittedCount(this.getParticipantHasCommittedCount()+1);
+
     }
 
     public void confirmFinish(Long userId) {
@@ -147,4 +177,5 @@ public class CrowdTestTask {
         this.setStatus(CrowdTestTaskStatus.HAS_FINISHED);
         this.setEndTime(new Timestamp(System.currentTimeMillis()));
     }
+
 }

+ 17 - 13
core/src/main/java/com/mooctest/crowd/domain/domainobject/DistributeType.java

@@ -1,25 +1,29 @@
 package com.mooctest.crowd.domain.domainobject;
 
-import lombok.Data;
-
-import java.util.Date;
+import lombok.AllArgsConstructor;
+import lombok.NoArgsConstructor;
 
 /**
  * @author guochao
  * @date 2019/7/15 20:47
  */
-@Data
-public class DistributeType {
+
+@AllArgsConstructor
+@NoArgsConstructor
+public enum DistributeType {
+
+    SQUARE(2L, "square"),
+    DIRECT(0L, "direct"),
+    AREA(1L, "area");
+
     private Long id;
     private String name;
-    private Date createTime;
 
-    @Override
-    public String toString() {
-        return "DistributeType{" +
-                "id=" + id +
-                ", name='" + name + '\'' +
-                ", createTime=" + createTime +
-                '}';
+    public Long getId() {
+        return id;
+    }
+
+    public String getName() {
+        return name;
     }
 }

+ 11 - 8
core/src/main/java/com/mooctest/crowd/domain/domainobject/TaskToUser.java

@@ -15,23 +15,26 @@ public class TaskToUser {
     private Long id;
     private String taskCode;
     private Long userId;
-    private Timestamp acceptTime;
     private int hasReport;
+    private Long distributionType;
+    private int isAccepted;
+    private Timestamp acceptTime;
+    private int isCommitted;
     private User user;
+    private Timestamp commitTaskTime;
+    private Timestamp commitReportTime;
     private List<CrowdTestReport> crowdTestReportList = new ArrayList<>();
 
-//    public TaskToUser(String taskCode, Long userId, Timestamp acceptTime) {
-//        this.taskCode = taskCode;
-//        this.userId = userId;
-//        this.acceptTime = acceptTime;
-//    }
-
-    public void setValue(String taskCode, Long userId, Timestamp acceptTime) {
+    public void setValue(String taskCode, Long userId, int hasReport, Long distributionType, int isAccepted, Timestamp acceptTime) {
         this.taskCode = taskCode;
         this.userId = userId;
+        this.hasReport = hasReport;
+        this.distributionType = distributionType;
+        this.isAccepted = isAccepted;
         this.acceptTime = acceptTime;
     }
 
+
     @Override
     public String toString() {
         return "TaskToUser{" +

+ 2 - 2
core/src/main/java/com/mooctest/crowd/domain/model/CrowdTestTaskPO.java

@@ -79,8 +79,8 @@ CrowdTestTaskPO {
     @Column(name = "CTT_ACCEPTED_COUNT")
     private int acceptedCount;
 
-    @Column(name = "CTT_PARTICIPANT_HAS_REPORT_COUNT")
-    private int participantHasReportCount;
+    @Column(name = "CTT_PARTICIPANT_HAS_COMMITTED_COUNT")
+    private int participantHasCommittedCount;
 
     @Override
     public String toString() {

+ 17 - 2
core/src/main/java/com/mooctest/crowd/domain/model/TaskToUserPO.java

@@ -24,9 +24,24 @@ public class TaskToUserPO {
     @Column(name = "TTU_U_ID")
     private Long userId;
 
+    @Column(name = "TTU_HAS_REPORT")
+    private int hasReport;
+
+    @Column (name = "TTU_DISTRIBUTION_TYPE")
+    private Long distributionType;
+
+    @Column (name = "TTU_IS_ACCEPTED")
+    private int isAccepted;
+
     @Column(name = "TTU_ACCEPT_TIME")
     private Timestamp acceptTime;
 
-    @Column(name = "TTU_HAS_REPORT")
-    private int hasReport;
+    @Column (name = "TTU_IS_COMMITTED")
+    private int isCommitted;
+
+    @Column (name = "TTU_COMMIT_TASK_TIME")
+    private Timestamp commitTaskTime;
+
+    @Column (name = "TTU_COMMIT_REPORT_TIME")
+    private Timestamp commitReportTime;
 }

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

@@ -6,7 +6,6 @@ import com.mooctest.crowd.domain.exception.CrowdTestProjectNotExistException;
 import com.mooctest.crowd.domain.exception.HttpBadRequestException;
 import com.mooctest.crowd.domain.model.*;
 import com.mooctest.crowd.domain.util.Converter;
-import com.mooctest.crowd.domain.domainobject.ReportScopeType;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -14,7 +13,6 @@ import org.springframework.stereotype.Component;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Optional;
-import java.util.Set;
 import java.util.stream.Collectors;
 
 /**
@@ -101,9 +99,9 @@ public class CrowdTestProjectRepo implements ICrowdTestProjectRepo {
                         crowdTestReportDao.save(crowdTestReportPO);
                     }
                 }
-                List<TaskToUserPO> taskToUserPOS = taskToUserDao.findByTaskCodeAndHasReport(crowdTestTask.getCode(), 1);
-                Set<Long> collect = taskToUserPOS.stream().map(TaskToUserPO::getUserId).collect(Collectors.toSet());
-                crowdTestTaskPO.setParticipantHasReportCount(collect.size());
+//                List<TaskToUserPO> taskToUserPOS = taskToUserDao.findByTaskCodeAndHasReport(crowdTestTask.getCode(), 1);
+//                Set<Long> collect = taskToUserPOS.stream().map(TaskToUserPO::getUserId).collect(Collectors.toSet());
+//                crowdTestTaskPO.setParticipantHasReportCount(collect.size());
                 crowdTestTaskDao.save(crowdTestTaskPO);
             }
         }

+ 27 - 0
site/src/main/java/com/mooctest/crowd/site/data/enums/BooleanType.java

@@ -0,0 +1,27 @@
+package com.mooctest.crowd.site.data.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author: Diors.Po
+ * @Email: 171256175@qq.com
+ * @date 2019-07-30 00:33
+ */
+@AllArgsConstructor
+@NoArgsConstructor
+public enum BooleanType {
+    YES(1, "yes"),
+    NO(0, "no");
+
+    private int id;
+    private String name;
+
+    public int getId() {
+        return id;
+    }
+
+    public String getName() {
+        return name;
+    }
+}

+ 2 - 2
site/src/main/java/com/mooctest/crowd/site/data/vo/CrowdTaskVO.java

@@ -35,7 +35,7 @@ public class CrowdTaskVO {
     private Timestamp datetime;
     private int participantCount;
     private int acceptedCount;
-    private int participantHasReportCount;
+    private int participantHasCommittedCount;
     private StatusVO statusVO;
     private FullStatusVO fullStatusVO;
     private List<TaskToUserVO> taskToUserVOS = new ArrayList<>();
@@ -59,7 +59,7 @@ public class CrowdTaskVO {
         datetime = task.getDeadTime();
         participantCount = task.getParticipantCount();
         acceptedCount = task.getAcceptedCount();
-        participantHasReportCount = task.getParticipantHasReportCount();
+        participantHasCommittedCount = task.getParticipantHasCommittedCount();
         this.renderStatus();
     }
 

+ 10 - 1
site/src/main/java/com/mooctest/crowd/site/data/vo/TaskToUserVO.java

@@ -15,8 +15,13 @@ public class TaskToUserVO {
     private Long id;
     private String taskCode;
     private Long userId;
-    private Timestamp acceptTime;
     private int hasReport;
+    private Long distributionType;
+    private int isAccepted;
+    private Timestamp acceptTime;
+    private int isCommitted;
+    private Timestamp commitTaskTime;
+    private Timestamp commitReportTime;
     private UserVO userVO;
     private List<CrowdReportVO> crowdReportVOS;
 
@@ -26,5 +31,9 @@ public class TaskToUserVO {
         userId = taskToUser.getUserId();
         acceptTime = taskToUser.getAcceptTime();
         hasReport = taskToUser.getHasReport();
+        isCommitted = taskToUser.getIsCommitted();
+        distributionType = taskToUser.getDistributionType();
+        isAccepted = taskToUser.getIsAccepted();
+        commitTaskTime = taskToUser.getCommitTaskTime();
     }
 }

+ 76 - 32
site/src/main/java/com/mooctest/crowd/site/mediator/impl/WebMediatorImpl.java

@@ -20,6 +20,7 @@ import com.mooctest.crowd.site.command.RegisterCommand;
 import com.mooctest.crowd.site.data.ProjectOperationControl;
 import com.mooctest.crowd.site.data.TaskOperationControl;
 import com.mooctest.crowd.site.data.dto.*;
+import com.mooctest.crowd.site.data.enums.RoleType;
 import com.mooctest.crowd.site.data.vo.*;
 import com.mooctest.crowd.site.mediator.ViewMediator;
 import lombok.extern.slf4j.Slf4j;
@@ -74,6 +75,9 @@ public class WebMediatorImpl implements ViewMediator {
     @Autowired
     private EnterpriseAuthenticationDao enterpriseAuthenticationDao;
 
+    @Autowired
+    private TaskToUserDao taskToUserDao;
+
     @Value("${agency}")
     private String agencyId;
 
@@ -208,16 +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 -> {
+//            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());
@@ -283,19 +297,24 @@ public class WebMediatorImpl implements ViewMediator {
         if (!task.isPresent())
             throw new CrowdTestTaskNotExistException();
         System.out.println("renderTaskReportDetails userID: " + userId);
-        // 查看当前任务指定用户
-        Optional<TaskToUser> taskToUserOptional = task.get().getAcceptedUserList().stream().filter(taskToUser -> taskToUser.getUserId().equals(userId)).findFirst();
-        if(!taskToUserOptional.isPresent())
-            throw new HttpBadRequestException("当前用户没有接收此任务!");
-
-        Optional<CrowdTestReport> report = taskToUserOptional.get().getCrowdTestReportList().stream().filter(crowdTestReport -> crowdTestReport.getCode().equals(reportCode)).findFirst();
-        if (!report.isPresent())
-            throw new CrowdTestReportNotExistException();
         ReportDetailsDTO reportDetailsDTO  = new ReportDetailsDTO();
-        reportDetailsDTO.setCrowdReportVO(new CrowdReportVO(report.get()));
-        System.out.println(task.get().toString());
-        if (task.get().getStatus()<CrowdTestTaskStatus.HAS_FINISHED)
-            reportDetailsDTO.setOperational(true);
+        if(userRepo.getByID(userId).getRoleList().stream().anyMatch(role -> role.getName().equals(RoleType.REGIONAL_MANAGER)) && !userId.equals(projectRepo.getByProjectCode(projectCode).getRegionalManagerId())){
+            // 区域管理员
+            throw new HttpBadRequestException("当前用户没有不是此任务的区域管理员!");
+        }else if(!userRepo.getByID(userId).getRoleList().stream().anyMatch(role -> role.getName().equals(RoleType.REGIONAL_MANAGER))){
+            // 测评机构
+            Optional<TaskToUser> taskToUserOptional = task.get().getAcceptedUserList().stream().filter(taskToUser -> taskToUser.getUserId().equals(userId)).findFirst();
+            if(!taskToUserOptional.isPresent())
+                throw new HttpBadRequestException("当前用户没有接收此任务!");
+            Optional<CrowdTestReport> report = taskToUserOptional.get().getCrowdTestReportList().stream().filter(crowdTestReport -> crowdTestReport.getCode().equals(reportCode)).findFirst();
+            if (!report.isPresent())
+                throw new CrowdTestReportNotExistException();
+            reportDetailsDTO.setCrowdReportVO(new CrowdReportVO(report.get()));
+            if (task.get().getStatus()<CrowdTestTaskStatus.HAS_FINISHED)
+                reportDetailsDTO.setOperational(true);
+        }
+        // 区域管理员
+
         return reportDetailsDTO;
     }
 
@@ -321,27 +340,52 @@ public class WebMediatorImpl implements ViewMediator {
             throw new CrowdTestTaskNotExistException();
         CrowdTaskVO taskVO = new CrowdTaskVO(task.get());
         System.out.println("renderTaskDetails userId:" + userId);
-        if (userId == null)
+        if (userId == null) {
             taskDetailsDTO.setTaskOperationControl(this.initTaskPermission(project, task.get(), null));
-        else
+        } else{
             taskDetailsDTO.setTaskOperationControl(this.initTaskPermission(project, task.get(), userRepo.getByID(userId)));
-        EvaluationAgencyPO agencyPO = agencyDao.findByUserId(task.get().getEvaluationAgencyId());
-        taskVO.setInstitution(agencyPO==null?"该机构已注销":agencyPO.getEvaluationAgencyName());
-
-        List<TaskToUserVO> taskToUserVOS = task.get().getAcceptedUserList().stream().map(taskToUser -> {
-            TaskToUserVO taskToUserVO = new TaskToUserVO(taskToUser);
-            taskToUserVO.setUserVO(Converter.convert(UserVO.class, taskToUser.getUser()));
-            // 获取每个人员的报告信息
-            List<CrowdTestReport> crowdTestReportList = taskToUser.getCrowdTestReportList();
-            if(crowdTestReportList.size() > 0){
-                List<CrowdReportVO> crowdReportVOS = crowdTestReportList.stream().map(crowdTestReport -> new CrowdReportVO(crowdTestReport)).collect(Collectors.toList());
-                taskToUserVO.setCrowdReportVOS(crowdReportVOS);
+            // 区域管理员视图
+            List<TaskToUserVO> taskToUserVOS = new ArrayList<>();
+            if(userId.equals(project.getRegionalManagerId())){
+                taskToUserVOS = task.get().getAcceptedUserList().stream().map(taskToUser -> {
+                    TaskToUserVO taskToUserVO = new TaskToUserVO(taskToUser);
+                    taskToUserVO.setUserVO(Converter.convert(UserVO.class, taskToUser.getUser()));
+                    // 获取每个人员的报告信息
+                    List<CrowdTestReport> crowdTestReportList = taskToUser.getCrowdTestReportList();
+                    if(crowdTestReportList.size() > 0){
+                        List<CrowdReportVO> crowdReportVOS = crowdTestReportList.stream().map(crowdTestReport -> new CrowdReportVO(crowdTestReport)).collect(Collectors.toList());
+                        taskToUserVO.setCrowdReportVOS(crowdReportVOS);
+                    }
+                    return taskToUserVO;
+                }).collect(Collectors.toList());
             }
-            return taskToUserVO;
-        }).collect(Collectors.toList());
+            // 测评机构视图
+            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("当前用户没有接收此任务!");
+
+                taskToUserVOS = task.get().getAcceptedUserList().stream()
+                        .filter(taskToUser -> taskToUser.getUserId().equals(userId)).map(taskToUser -> {
+                    TaskToUserVO taskToUserVO = new TaskToUserVO(taskToUser);
+                    taskToUserVO.setUserVO(Converter.convert(UserVO.class, taskToUser.getUser()));
+                    // 获取每个人员的报告信息
+                    List<CrowdTestReport> crowdTestReportList = taskToUser.getCrowdTestReportList();
+                    if(crowdTestReportList.size() > 0){
+                        List<CrowdReportVO> crowdReportVOS = crowdTestReportList.stream().map(crowdTestReport -> new CrowdReportVO(crowdTestReport)).collect(Collectors.toList());
+                        taskToUserVO.setCrowdReportVOS(crowdReportVOS);
+                    }
+                    return taskToUserVO;
+                }).collect(Collectors.toList());
+            }
+            taskDetailsDTO.setAcceptedUserList(taskToUserVOS);
+        }
+
 
-        taskDetailsDTO.setAcceptedUserList(taskToUserVOS);
         taskDetailsDTO.setCrowdTaskVO(taskVO);
+//        EvaluationAgencyPO agencyPO = agencyDao.findByUserId(task.get().getEvaluationAgencyId());
+//        taskVO.setInstitution(agencyPO==null?"该机构已注销":agencyPO.getEvaluationAgencyName());
+
         return taskDetailsDTO;
     }
 
@@ -514,7 +558,7 @@ public class WebMediatorImpl implements ViewMediator {
                             taskOperationControl.setReject(true);
                     } else if (task.getStatus() == CrowdTestTaskStatus.HAS_RECEIVED){
                         taskOperationControl.setUploadReport(true);
-                        if (task.getParticipantHasReportCount() == task.getAcceptedCount()){
+                        if (task.getParticipantHasCommittedCount() == task.getAcceptedCount()){
                             taskOperationControl.setFinish(true);
                         }
                     } else if (task.getStatus() == CrowdTestTaskStatus.HAS_COMMITED){

+ 6 - 2
site/src/main/java/com/mooctest/crowd/site/service/impl/CrowdReportServiceImpl.java

@@ -7,12 +7,14 @@ import com.mooctest.crowd.domain.exception.CrowdTestTaskNotExistException;
 import com.mooctest.crowd.domain.repository.CrowdTestProjectRepo;
 import com.mooctest.crowd.site.command.CrowdTestReportCommand;
 import com.mooctest.crowd.site.data.dto.ReportDetailsDTO;
+import com.mooctest.crowd.site.data.enums.BooleanType;
 import com.mooctest.crowd.site.mediator.ViewMediator;
 import com.mooctest.crowd.site.service.CrowdReportService;
 import com.mooctest.crowd.site.util.GenerateFlowCodeUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.sql.Timestamp;
 import java.util.List;
 import java.util.Optional;
 
@@ -61,8 +63,9 @@ public class CrowdReportServiceImpl implements CrowdReportService {
         TaskToUser taskToUser = userOptional.get();
         List<CrowdTestReport> crowdTestReportList = taskToUser.getCrowdTestReportList();
         crowdTestReportList.add(report);
-        taskToUser.setHasReport(1);
-
+        taskToUser.setHasReport(BooleanType.YES.getId());
+//        taskToUser.setIsCommitted(BooleanType.YES.getId());
+        taskToUser.setCommitReportTime(new Timestamp(System.currentTimeMillis()));
         projectRepo.saveCrowdTestProject(project);
         return getTaskReport(projectCode, taskCode, reportCode, userId);
     }
@@ -92,6 +95,7 @@ public class CrowdReportServiceImpl implements CrowdReportService {
                 flag = true;
                 taskToUser.getCrowdTestReportList().remove(report.get());
                 taskToUser.getCrowdTestReportList().add(updatedReport);
+                taskToUser.setCommitReportTime(new Timestamp(System.currentTimeMillis()));
             }
         }
 

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

@@ -14,6 +14,7 @@ import com.mooctest.crowd.site.command.CrowdTestTaskCommand;
 import com.mooctest.crowd.site.data.dto.TaskDetailsDTO;
 import com.mooctest.crowd.site.data.dto.TaskSquareDTO;
 import com.mooctest.crowd.site.data.enums.ProjectType;
+import com.mooctest.crowd.site.data.enums.RoleType;
 import com.mooctest.crowd.site.mediator.ViewMediator;
 import com.mooctest.crowd.site.service.CrowdTaskService;
 import com.mooctest.crowd.site.util.GenerateFlowCodeUtil;
@@ -113,7 +114,13 @@ public class CrowdTaskServiceImpl implements CrowdTaskService {
     public TaskDetailsDTO commitTask(String projectCode, String taskCode, Long userId) {
         CrowdTestProject project = projectRepo.getByProjectCode(projectCode);
         CrowdTestTask task = project.getTask(taskCode);
-        task.commit(userId);
+        // 测评机构提交任务
+        if(userRepo.getByID(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);
+        }
+
         projectRepo.saveCrowdTestProject(project);
         return getTaskDetails(projectCode, taskCode, userId);
     }