xiaofei 1 rok pred
rodič
commit
02cb07b132

+ 1 - 2
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/entity/MarkUserGroup.java

@@ -81,13 +81,12 @@ public class MarkUserGroup implements Serializable {
     public MarkUserGroup() {
     }
 
-    public MarkUserGroup(Long examId, String paperNumber, Integer groupNumber, Long userId, MarkMode mode) {
+    public MarkUserGroup(Long examId, String paperNumber, Integer groupNumber, Long userId) {
         this.id = SystemConstant.getDbUuid();
         this.examId = examId;
         this.paperNumber = paperNumber;
         this.groupNumber = groupNumber;
         this.userId = userId;
-        this.mode = mode;
     }
 
     public Long getId() {

+ 2 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/mapper/ScanAnswerCardMapper.java

@@ -2,6 +2,7 @@ package com.qmth.teachcloud.mark.mapper;
 
 import java.util.List;
 
+import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
 import org.apache.ibatis.annotations.Param;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -18,7 +19,7 @@ import com.qmth.teachcloud.mark.entity.ScanAnswerCard;
  */
 public interface ScanAnswerCardMapper extends BaseMapper<ScanAnswerCard> {
 
-	List<AnswerCardVo> cardList(@Param("examId")Long examId,@Param("coursePaperId") String coursePaperId);
+	List<AnswerCardVo> cardList(@Param("examId")Long examId, @Param("coursePaperId") String coursePaperId, @Param("dpr") DataPermissionRule dpr);
 
 	List<AnswerCardVo> cardGet(@Param("examId")Long examId,@Param("number")Integer number);
 

+ 10 - 6
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkGroupServiceImpl.java

@@ -284,8 +284,8 @@ public class MarkGroupServiceImpl extends MppServiceImpl<MarkGroupMapper, MarkGr
             }
             if (markGroupDto.getArbitrateThreshold() == null) {
                 throw ExceptionResultEnum.ERROR.exception("开启双评,仲裁阀值必填");
-            } else if (markGroupDto.getArbitrateThreshold() < 0 || markGroupDto.getArbitrateThreshold() > 1) {
-                throw ExceptionResultEnum.ERROR.exception("开启双评,仲裁阀值必填且范围为0-1");
+            } else if (markGroupDto.getArbitrateThreshold() < 0) {
+                throw ExceptionResultEnum.ERROR.exception("开启双评,仲裁阀值大于等于0");
             }
             if (markGroupDto.getScorePolicy() == null) {
                 throw ExceptionResultEnum.ERROR.exception("开启双评,合分规则必填");
@@ -331,7 +331,7 @@ public class MarkGroupServiceImpl extends MppServiceImpl<MarkGroupMapper, MarkGr
             if (userIds.contains(marker.getUserId())) {
                 continue;
             }
-            markUserGroups.add(new MarkUserGroup(examId, paperNumber, markGroupDto.getGroupNumber(), marker.getUserId(), markPaper.getMarkMode()));
+            markUserGroups.add(new MarkUserGroup(examId, paperNumber, markGroupDto.getGroupNumber(), marker.getUserId()));
         }
         if (CollectionUtils.isNotEmpty(markUserGroups)) {
             markUserGroupService.saveBatch(markUserGroups);
@@ -350,6 +350,8 @@ public class MarkGroupServiceImpl extends MppServiceImpl<MarkGroupMapper, MarkGr
         String paperNumber = markGroupSingleDto.getPaperNumber();
         MarkGroupDto markGroupDto = markGroupSingleDto.getGroupInfo();
         MarkGroup markGroup = this.getByExamIdAndPaperNumberAndGroupNumber(examId, paperNumber, markGroupDto.getGroupNumber());
+        Boolean doubleEnable = markGroup.getDoubleEnable();
+        Double doubleRate = markGroup.getDoubleRate();
         if (markGroup == null) {
             throw ExceptionResultEnum.ERROR.exception("数据不存在");
         }
@@ -359,6 +361,8 @@ public class MarkGroupServiceImpl extends MppServiceImpl<MarkGroupMapper, MarkGr
             }
             if (markGroupDto.getArbitrateThreshold() == null) {
                 throw ExceptionResultEnum.ERROR.exception("开启双评,仲裁阀值必填");
+            } else if (markGroupDto.getArbitrateThreshold() < 0) {
+                throw ExceptionResultEnum.ERROR.exception("开启双评,仲裁阀值大于等于0");
             }
             if (markGroupDto.getScorePolicy() == null) {
                 throw ExceptionResultEnum.ERROR.exception("开启双评,合分规则必填");
@@ -380,14 +384,13 @@ public class MarkGroupServiceImpl extends MppServiceImpl<MarkGroupMapper, MarkGr
 
         List<MarkUserGroup> markUserGroupList = markUserGroupService.listByExamIdAndPaperNumberAndGroupNumber(examId, paperNumber, markGroupDto.getGroupNumber());
         if (CollectionUtils.isNotEmpty(markUserGroupList)) {
-            MarkPaper markPaper = markPaperService.getByExamIdAndPaperNumber(examId, paperNumber);
             List<Long> userIds = markUserGroupList.stream().map(MarkUserGroup::getUserId).collect(Collectors.toList());
             List<MarkUserGroup> markUserGroups = new ArrayList<>();
             for (MarkUser marker : markGroupDto.getMarkers()) {
                 if (userIds.contains(marker.getUserId())) {
                     continue;
                 }
-                markUserGroups.add(new MarkUserGroup(examId, paperNumber, markGroupDto.getGroupNumber(), marker.getUserId(), markPaper.getMarkMode()));
+                markUserGroups.add(new MarkUserGroup(examId, paperNumber, markGroupDto.getGroupNumber(), marker.getUserId()));
             }
             if (CollectionUtils.isNotEmpty(markUserGroups)) {
                 markUserGroupService.saveBatch(markUserGroups);
@@ -395,7 +398,8 @@ public class MarkGroupServiceImpl extends MppServiceImpl<MarkGroupMapper, MarkGr
         }
 
         // 开启双评且双评比例值修改过,则删除任务
-        if (markGroupDto.getDoubleEnable() && markGroup.getDoubleRate() != null && markGroupDto.getDoubleRate().doubleValue() != markGroup.getDoubleRate().doubleValue()) {
+        if (!doubleEnable.equals(markGroupDto.getDoubleEnable())
+                || (markGroupDto.getDoubleEnable() && (doubleRate == null || markGroupDto.getDoubleRate().doubleValue() != markGroup.getDoubleRate().doubleValue()))) {
             markSyncService.deleteMarkGroup(markGroup, false);
         }
     }

+ 2 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkStudentServiceImpl.java

@@ -301,6 +301,8 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
 //        student.setUpdaterId(userId);
 //        student.setUpdateTime(System.currentTimeMillis());
         this.saveOrUpdate(student);
+        // 客观题统分
+        this.calculateObjectiveScore(student);
 
         // 更新课程表中上传人数
         markPaperService.updateUploadCount(student.getExamId(), student.getPaperNumber(),

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

@@ -116,7 +116,7 @@ public class MarkUserGroupServiceImpl extends ServiceImpl<MarkUserGroupMapper, M
             for (Long userId : userIds) {
                 MarkUserGroup markUserGroup = this.getByExamIdAndPaperNumberAndGroupNumberAndUserId(examId, paperNumber, groupNumber, userId);
                 if (markUserGroup == null) {
-                    markUserGroups.add(new MarkUserGroup(examId, paperNumber, groupNumber, userId, markPaper.getMarkMode()));
+                    markUserGroups.add(new MarkUserGroup(examId, paperNumber, groupNumber, userId));
                 }
             }
             if (CollectionUtils.isNotEmpty(markUserGroups)) {

+ 9 - 2
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/ScanAnswerCardServiceImpl.java

@@ -7,9 +7,13 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.qmth.boot.core.exception.ParameterException;
+import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
 import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.mark.MarkPaperStatus;
+import com.qmth.teachcloud.common.service.BasicRoleDataPermissionService;
 import com.qmth.teachcloud.common.service.TeachcloudCommonService;
+import com.qmth.teachcloud.common.util.ServletUtil;
 import com.qmth.teachcloud.mark.bean.UriVo;
 import com.qmth.teachcloud.mark.bean.answercard.AnswerCardSaveDomain;
 import com.qmth.teachcloud.mark.bean.answercard.AnswerCardVo;
@@ -50,10 +54,11 @@ public class ScanAnswerCardServiceImpl extends ServiceImpl<ScanAnswerCardMapper,
 
     @Autowired
     private ScanPaperService scanPaperService;
-
     @Resource
     private MarkFileService markFileService;
     @Resource
+    private BasicRoleDataPermissionService basicRoleDataPermissionService;
+    @Resource
     private TeachcloudCommonService teachcloudCommonService;
 
     @Resource
@@ -76,7 +81,9 @@ public class ScanAnswerCardServiceImpl extends ServiceImpl<ScanAnswerCardMapper,
 
     @Override
     public List<AnswerCardVo> cardList(Long examId, String coursePaperId) {
-        List<AnswerCardVo> answerCardVos = baseMapper.cardList(examId, coursePaperId);
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(sysUser.getSchoolId(), sysUser.getId(), ServletUtil.getRequest().getServletPath());
+        List<AnswerCardVo> answerCardVos = baseMapper.cardList(examId, coursePaperId, dpr);
         for (AnswerCardVo answerCardVo : answerCardVos) {
             answerCardVo.setUri(fileStoreUtils.filePreview(answerCardVo.getUri()));
             answerCardVo.setAdapteUri(fileStoreUtils.filePreview(answerCardVo.getAdapteUri()));

+ 12 - 0
teachcloud-mark/src/main/resources/mapper/ScanAnswerCardMapper.xml

@@ -31,10 +31,22 @@
         select t.*,t.paper_number coursePaperNumber,f.course_code,f.course_name
         from scan_answer_card t
         left join mark_paper f on t.exam_id=f.exam_id and t.course_paper_id=f.course_paper_id
+        left join sys_user su on f.user_id = su.id
         where t.exam_id=#{examId}
         <if test="coursePaperId != null and coursePaperId !=''">
             and t.course_paper_id=#{coursePaperId}
         </if>
+        <if test="dpr != null">
+            <if test="dpr.requestUserId != null">
+                AND f.user_id = #{dpr.requestUserId}
+            </if>
+            <if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
+                AND su.org_id IN
+                <foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+        </if>
         order by t.exam_id, t.number
     </select>
     <select id="cardGet"