xiaofei 1 an în urmă
părinte
comite
bb4e5e7c5f

+ 24 - 25
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkGroupServiceImpl.java

@@ -1,21 +1,5 @@
 package com.qmth.teachcloud.mark.service.impl;
 
-import java.text.DecimalFormat;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.List;
-import java.util.stream.Collectors;
-
-import javax.annotation.Resource;
-
-import com.qmth.teachcloud.mark.bean.answercard.CardFile;
-import com.qmth.teachcloud.mark.entity.*;
-import com.qmth.teachcloud.mark.service.*;
-import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -27,18 +11,31 @@ import com.qmth.teachcloud.common.bean.dto.mark.PictureConfig;
 import com.qmth.teachcloud.common.bean.params.mark.setting.GroupPictureConfigParams;
 import com.qmth.teachcloud.common.entity.MarkQuestion;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
-import com.qmth.teachcloud.mark.dto.mark.manage.MarkGroupClassProgressDto;
-import com.qmth.teachcloud.mark.dto.mark.manage.MarkGroupProgressDto;
-import com.qmth.teachcloud.mark.dto.mark.manage.MarkGroupQuestionsDto;
-import com.qmth.teachcloud.mark.dto.mark.manage.MarkGroupSummaryProgressDto;
-import com.qmth.teachcloud.mark.dto.mark.manage.MarkGroupTotalProgressDto;
+import com.qmth.teachcloud.mark.bean.answercard.CardFile;
+import com.qmth.teachcloud.mark.dto.mark.manage.*;
 import com.qmth.teachcloud.mark.dto.mark.setting.MarkGroupDto;
 import com.qmth.teachcloud.mark.dto.mark.setting.MarkGroupSingleDto;
 import com.qmth.teachcloud.mark.dto.mark.setting.MarkGroupTaskDto;
+import com.qmth.teachcloud.mark.entity.MarkGroup;
+import com.qmth.teachcloud.mark.entity.MarkPaper;
+import com.qmth.teachcloud.mark.entity.MarkTask;
+import com.qmth.teachcloud.mark.entity.MarkUserGroup;
 import com.qmth.teachcloud.mark.enums.LockType;
 import com.qmth.teachcloud.mark.enums.ScorePolicy;
 import com.qmth.teachcloud.mark.lock.LockService;
 import com.qmth.teachcloud.mark.mapper.MarkGroupMapper;
+import com.qmth.teachcloud.mark.service.*;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.text.DecimalFormat;
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -384,6 +381,9 @@ public class MarkGroupServiceImpl extends MppServiceImpl<MarkGroupMapper, MarkGr
             markQuestionService.updateById(markQuestion);
         }
 
+        // 更新MarkPaper中groupStatus
+        markService.updateMarkGroupStatus(examId, paperNumber);
+
         List<MarkUserGroup> markUserGroupList = markUserGroupService.listByExamIdAndPaperNumberAndGroupNumber(examId, paperNumber, markGroupDto.getGroupNumber());
         if (CollectionUtils.isNotEmpty(markUserGroupList)) {
             List<Long> userIds = markUserGroupList.stream().map(MarkUserGroup::getUserId).collect(Collectors.toList());
@@ -402,11 +402,10 @@ public class MarkGroupServiceImpl extends MppServiceImpl<MarkGroupMapper, MarkGr
         // 单双评切换、开启双评且双评比例值修改过,则删除任务
         if (!doubleEnable.equals(markGroupDto.getDoubleEnable())
                 || (markGroupDto.getDoubleEnable() && (doubleRate == null || markGroupDto.getDoubleRate().doubleValue() != markGroup.getDoubleRate().doubleValue()))) {
-            markSyncService.deleteMarkGroup(markGroup, false);
+            if (lockService.trylock(LockType.GROUP_DELETE, examId, paperNumber, markGroupDto.getGroupNumber())) {
+                markSyncService.deleteMarkGroup(markGroup, false);
+            }
         }
-
-        // 更新MarkPaper中groupStatus
-        markService.updateMarkGroupStatus(examId, paperNumber);
     }
 
     @Override

+ 1 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkSyncServiceImpl.java

@@ -62,7 +62,7 @@ public class MarkSyncServiceImpl implements MarkSyncService {
         lockService.unlock(LockType.BATCH_QUALITY, lockKey);
     }
 
-//    @Async
+    @Async
     @Override
     public void deleteMarkGroup(MarkGroup markGroup, boolean deleteGroupInfo) {
         if (markGroup == null) {

+ 3 - 2
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/ScanConditionServiceImpl.java

@@ -17,6 +17,7 @@ import com.qmth.teachcloud.mark.service.MarkPaperService;
 import com.qmth.teachcloud.mark.service.MarkStudentService;
 import com.qmth.teachcloud.mark.service.ScanConditionService;
 import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -100,12 +101,12 @@ public class ScanConditionServiceImpl implements ScanConditionService {
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(sysUser.getSchoolId(), sysUser.getId(), ServletUtil.getRequest().getServletPath());
         List<MarkStudent> markStudentList = markStudentService.listScanCollegeByExamIdAndCourseCodeAndCoursePaperId(examId, courseCode, coursePaperId, MarkPaperStatus.FORMAL.name(), dpr);
-        Map<String, List<MarkStudent>> map = markStudentList.stream().collect(Collectors.groupingBy(x -> x.getExamPlace()));
+        Map<String, List<MarkStudent>> map = markStudentList.stream().filter(m -> StringUtils.isNotBlank(m.getExamPlace())).collect(Collectors.groupingBy(x -> x.getExamPlace()));
         List<CampusExamRoomDto> campusExamRoomDtoList = new ArrayList<>();
         for (Map.Entry<String, List<MarkStudent>> entry : map.entrySet()) {
             CampusExamRoomDto campusExamRoomDto = new CampusExamRoomDto();
             campusExamRoomDto.setName(entry.getKey());
-            campusExamRoomDto.setExamRoomList(entry.getValue().stream().map(MarkStudent::getExamRoom).distinct().collect(Collectors.toList()));
+            campusExamRoomDto.setExamRoomList(entry.getValue().stream().filter(m -> StringUtils.isNotBlank(m.getExamRoom())).map(MarkStudent::getExamRoom).distinct().collect(Collectors.toList()));
             campusExamRoomDtoList.add(campusExamRoomDto);
         }
         return campusExamRoomDtoList;