xiaofei hai 1 ano
pai
achega
7c85a6f5f9

+ 3 - 3
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/dto/mark/manage/MarkManageDto.java

@@ -21,7 +21,7 @@ public class MarkManageDto {
      * 识别缺考未确认数量
      */
     private Integer omrAbsentCount;
-    private String percent;
+    private Double percent;
     private MarkPaperStatus status;
     private String statusDisplay;
 
@@ -89,11 +89,11 @@ public class MarkManageDto {
         this.omrAbsentCount = omrAbsentCount;
     }
 
-    public String getPercent() {
+    public Double getPercent() {
         return percent;
     }
 
-    public void setPercent(String percent) {
+    public void setPercent(Double percent) {
         this.percent = percent;
     }
 

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

@@ -116,7 +116,7 @@ public interface MarkStudentService extends IService<MarkStudent> {
 
     void exportUnexist(Long examId, String courseCode, String coursePaperId, HttpServletResponse response);
 
-    long countUnmarkByExamIdAndPaperNumber(Long examId, String paperNumber);
+    int countByExamIdAndPaperNumberAndMarkStatus(Long examId, String paperNumber, SubjectiveStatus status);
 
     void updateCheckInfo(Long studentId, Long userId);
 

+ 8 - 7
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkGroupServiceImpl.java

@@ -11,6 +11,7 @@ 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.common.enums.mark.SubjectiveStatus;
 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;
@@ -65,6 +66,8 @@ public class MarkGroupServiceImpl extends MppServiceImpl<MarkGroupMapper, MarkGr
     @Resource
     private MarkTaskService markTaskService;
     @Resource
+    private MarkStudentService markStudentService;
+    @Resource
     private MarkService markService;
     @Resource
     private MarkSyncService markSyncService;
@@ -174,10 +177,9 @@ public class MarkGroupServiceImpl extends MppServiceImpl<MarkGroupMapper, MarkGr
         markGroupTotalProgressDto.setUploadCount(markPaper.getUploadCount());
         markGroupTotalProgressDto.setAbsentCount(markPaper.getAbsentCount());
 
-        List<MarkTask> markTaskList = markTaskService.listByExamIdAndPaperNumberAndGroupNumberAndUserIdAndClassName(examId, paperNumber, null, null, null);
-        int taskCount = markTaskList.size();
-        int totalMarkedCount = markTaskService.markedCount(markTaskList);
-        markGroupTotalProgressDto.setPercent(markTaskService.calcPercent(totalMarkedCount, taskCount));
+        int totalCount = markStudentService.countByExamIdAndPaperNumberAndMarkStatus(examId, paperNumber, null);
+        int markedCount = markStudentService.countByExamIdAndPaperNumberAndMarkStatus(examId, paperNumber, SubjectiveStatus.MARKED);
+        markGroupTotalProgressDto.setPercent(markTaskService.calcPercent(markedCount, totalCount));
         markGroupSummaryProgressDto.setTotalInfo(markGroupTotalProgressDto);
 
         // groupInfo
@@ -191,9 +193,8 @@ public class MarkGroupServiceImpl extends MppServiceImpl<MarkGroupMapper, MarkGr
             markGroupProgressDto.setMarkerCount(markUserList.size());
             markGroup.setQuestionList(markQuestionService.listQuestionByExamIdAndPaperNumberAndGroupNumber(examId, paperNumber, markGroup.getNumber(), false));
             markGroupProgressDto.setScoreList(markGroup.getScoreList());
-            List<MarkTask> groupNumberMarkTask = markTaskList.stream().filter(m -> m.getGroupNumber().equals(markGroup.getNumber())).collect(Collectors.toList());
-            markGroupProgressDto.setTaskCount(groupNumberMarkTask.size());
-            markGroupProgressDto.setMarkedCount(markTaskService.markedCount(groupNumberMarkTask));
+            markGroupProgressDto.setTaskCount(markGroup.getTaskCount());
+            markGroupProgressDto.setMarkedCount(markGroup.getMarkedCount());
             markGroupProgressDto.setLeftCount(markGroupProgressDto.getTaskCount() - markGroupProgressDto.getMarkedCount());
             markGroupProgressDto.setCurrentCount(markService.applyCurrentCount(markGroup));
             markGroupProgressDto.setPercent(markTaskService.calcPercent(markGroupProgressDto.getMarkedCount(), markGroupProgressDto.getTaskCount()));

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

@@ -12,6 +12,7 @@ import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.enums.mark.MarkMode;
 import com.qmth.teachcloud.common.enums.mark.MarkPaperStatus;
+import com.qmth.teachcloud.common.enums.mark.SubjectiveStatus;
 import com.qmth.teachcloud.common.service.BasicRoleDataPermissionService;
 import com.qmth.teachcloud.common.service.TeachcloudCommonService;
 import com.qmth.teachcloud.common.util.ServletUtil;
@@ -144,7 +145,7 @@ public class MarkPaperServiceImpl extends ServiceImpl<MarkPaperMapper, MarkPaper
                         throw ExceptionResultEnum.ERROR.exception(courseInfo + "主观题未全部分组,无法结束评卷");
                     }
                     // 未缺考、未违纪且已上传图片的考生全部评完
-                    if (markStudentService.countUnmarkByExamIdAndPaperNumber(examId, paperNumber) > 0) {
+                    if (markStudentService.countByExamIdAndPaperNumberAndMarkStatus(examId, paperNumber, SubjectiveStatus.UNMARK) > 0) {
                         throw ExceptionResultEnum.ERROR.exception(courseInfo + "考生未全部评完,无法结束评卷");
                     }
                     // 识别缺考未做完,不能结束

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

@@ -186,7 +186,7 @@ public class MarkServiceImpl implements MarkService {
 
     @Override
     public void updateMarkedCount(Long examId, String paperNumber, Integer groupNumber) {
-        List<MarkTaskStatus> markTaskStatuses = Arrays.asList(MarkTaskStatus.MARKED, MarkTaskStatus.ARBITRATED, MarkTaskStatus.WAIT_ARBITRATE);
+        List<MarkTaskStatus> markTaskStatuses = Arrays.asList(MarkTaskStatus.MARKED, MarkTaskStatus.ARBITRATED);
         int count = markTaskService.countByExamIdAndPaperNumberAndGroupNumberAndStatusIn(examId, paperNumber,
                 groupNumber, markTaskStatuses);
         markGroupService.updateMarkedCount(examId, paperNumber, groupNumber, count);

+ 8 - 5
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkStudentServiceImpl.java

@@ -894,12 +894,15 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
     }
 
     @Override
-    public long countUnmarkByExamIdAndPaperNumber(Long examId, String paperNumber) {
+    public int countByExamIdAndPaperNumberAndMarkStatus(Long examId, String paperNumber, SubjectiveStatus status) {
         QueryWrapper<MarkStudent> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(MarkStudent::getExamId, examId)
-                .eq(MarkStudent::getPaperNumber, paperNumber)
-                .eq(MarkStudent::getSubjectiveStatus, SubjectiveStatus.UNMARK)
-                .eq(MarkStudent::getUpload, true)
+        LambdaQueryWrapper<MarkStudent> lambdaQueryWrapper = queryWrapper.lambda();
+        lambdaQueryWrapper.eq(MarkStudent::getExamId, examId)
+                .eq(MarkStudent::getPaperNumber, paperNumber);
+        if (status != null) {
+            lambdaQueryWrapper.eq(MarkStudent::getSubjectiveStatus, status);
+        }
+        lambdaQueryWrapper.eq(MarkStudent::getUpload, true)
                 .eq(MarkStudent::getAbsent, false)
                 .eq(MarkStudent::getBreach, false)
                 .eq(MarkStudent::getOmrAbsent, false);

+ 6 - 2
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkTaskServiceImpl.java

@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
+import com.qmth.teachcloud.common.enums.mark.SubjectiveStatus;
 import com.qmth.teachcloud.common.service.BasicRoleDataPermissionService;
 import com.qmth.teachcloud.common.util.ExcelUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
@@ -56,10 +57,13 @@ public class MarkTaskServiceImpl extends ServiceImpl<MarkTaskMapper, MarkTask> i
         DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(sysUser.getSchoolId(), sysUser.getId(), ServletUtil.getRequest().getServletPath());
         IPage<MarkManageDto> markManageDtoIPage = this.baseMapper.listPaperManage(page, examId, courseCode, paperNumber, progressStatus, dpr);
         for (MarkManageDto record : markManageDtoIPage.getRecords()) {
+            int totalCount = markStudentService.countByExamIdAndPaperNumberAndMarkStatus(record.getExamId(), record.getPaperNumber(), null);
+            record.setTotalCount(totalCount);
+            int markedCount = markStudentService.countByExamIdAndPaperNumberAndMarkStatus(record.getExamId(), record.getPaperNumber(), SubjectiveStatus.MARKED);
+            record.setMarkedCount(markedCount);
             record.setStatusDisplay(record.getStatus() == null ? null : record.getStatus().getName());
             record.setOmrAbsentCount(markStudentService.countOmrAbsentStudent(record.getExamId(), record.getPaperNumber(), record.getPaperType(), false));
-            String percent = record.getTotalCount() > 0 ? new DecimalFormat("####.##").format(record.getMarkedCount() * 100.0 / record.getTotalCount()) : "0";
-            record.setPercent(percent);
+            record.setPercent(calcPercent(record.getMarkedCount(), record.getTotalCount()));
         }
         return markManageDtoIPage;
     }

+ 1 - 1
teachcloud-mark/src/main/resources/mapper/MarkStudentMapper.xml

@@ -306,7 +306,7 @@
     <select id="overview" resultType="com.qmth.teachcloud.mark.bean.archivescore.OverViewVo">
         SELECT 
         count(*) studentCount,
-        sum(case when s.is_absent =1 or s.omr_absent =1 then 0 else 1 end) actualCount,
+        sum(case when s.is_absent =0 and s.omr_absent =0 and s.is_breach = 0 and s.is_upload = 1 then 1 else 0 end) actualCount,
         sum(case when s.is_absent =1 or s.omr_absent =1 then 1 else 0 end) absentCount,
         sum(case when s.is_breach =1 then 1 else 0 end) breachCount,
         avg(case when s.is_absent !=1 then s.objective_score+s.subjective_score else null end) avgScore,

+ 1 - 8
teachcloud-mark/src/main/resources/mapper/MarkTaskMapper.xml

@@ -32,15 +32,8 @@
             mp.course_name courseName,
             mp.paper_number paperNumber,
             mp.paper_type paperType,
-            mp.status,
-            COUNT(1) totalCount,
-            SUM(CASE mt.status
-                    WHEN 'MARKED' THEN 1
-                    WHEN 'ARBITRATED' THEN 1
-                    ELSE 0
-                END) AS markedCount
+            mp.status
         FROM mark_paper mp
-                LEFT JOIN  mark_task mt ON mp.exam_id = mt.exam_id and mp.paper_number = mt.paper_number
         <where>
             mp.exam_id = #{examId}
             <if test="courseCode != null and courseCode != ''">