Explorar o código

3.4.5 update-20250422,bug修改

xiaofei hai 2 meses
pai
achega
f23e436c92

+ 2 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/SysConfigService.java

@@ -23,4 +23,6 @@ public interface SysConfigService extends IService<SysConfig> {
      * @return
      */
     List<SysConfig> selectAll();
+
+    boolean getEnableByType(Long schoolId, String type);
 }

+ 20 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysConfigServiceImpl.java

@@ -1,5 +1,7 @@
 package com.qmth.teachcloud.common.service.impl;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.teachcloud.common.contant.SystemConstant;
@@ -78,4 +80,22 @@ public class SysConfigServiceImpl extends ServiceImpl<SysConfigMapper, SysConfig
         }
         return sysConfigList;
     }
+
+    @Override
+    public boolean getEnableByType(Long schoolId, String type) {
+        if (SystemConstant.AI_MARK_SET.equals(type)) {
+            SysConfig aiMarkSet = commonCacheService.addSysConfigCache(schoolId, SystemConstant.AI_MARK_SET);
+            if (aiMarkSet == null) {
+                return false;
+            } else {
+                JSONObject jsonObject = JSON.parseObject(aiMarkSet.getConfigValue());
+                if (!jsonObject.containsKey("enable")) {
+                    return false;
+                } else {
+                    return jsonObject.getBoolean("enable");
+                }
+            }
+        }
+        return false;
+    }
 }

+ 4 - 2
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkQuestionServiceImpl.java

@@ -788,6 +788,7 @@ public class MarkQuestionServiceImpl extends ServiceImpl<MarkQuestionMapper, Mar
         updateWrapper.lambda().set(MarkQuestion::getDoubleRate, doubleRate)
                 .set(MarkQuestion::getArbitrateThreshold, doubleRate > 0 ? doubleMarkParam.getArbitrateThreshold() : null)
                 .set(MarkQuestion::getScorePolicy, doubleRate > 0 ? doubleMarkParam.getScorePolicy() : null)
+                .set(MarkQuestion::getAiMark, markPaper.getAiMark())
                 .eq(MarkQuestion::getId, doubleMarkParam.getQuestionId());
         this.update(updateWrapper);
 
@@ -932,10 +933,11 @@ public class MarkQuestionServiceImpl extends ServiceImpl<MarkQuestionMapper, Mar
     public void updateAiMark(Long examId, String paperNumber, Long questionId) {
         MarkPaper markPaper = markPaperService.getByExamIdAndPaperNumber(examId, paperNumber);
         boolean isExist = markAiQuestionParamService.existMarkAiQuestionPointOrLevel(examId, paperNumber, questionId);
+        MarkQuestion markQuestion = this.getById(questionId);
         UpdateWrapper<MarkQuestion> updateWrapper = new UpdateWrapper<>();
         updateWrapper.lambda().set(MarkQuestion::getAiMark, isExist && !MarkPaperAiMark.NONE.equals(markPaper.getAiMark()) ? markPaper.getAiMark() : MarkPaperAiMark.NONE)
-                .set(MarkQuestion::getDoubleRate, isExist && MarkPaperAiMark.MAN_MACHINE.equals(markPaper.getAiMark()) ? 100 : 0)
-                .set(MarkQuestion::getScorePolicy, isExist && MarkPaperAiMark.MAN_MACHINE.equals(markPaper.getAiMark()) ? ScorePolicy.AVG : null)
+                .set(markQuestion.getDoubleRate() == 0, MarkQuestion::getDoubleRate, isExist && MarkPaperAiMark.MAN_MACHINE.equals(markPaper.getAiMark()) ? 100 : 0)
+                .set(markQuestion.getScorePolicy() == null, MarkQuestion::getScorePolicy, isExist && MarkPaperAiMark.MAN_MACHINE.equals(markPaper.getAiMark()) ? ScorePolicy.AVG : null)
                 .eq(MarkQuestion::getId, questionId);
         this.update(updateWrapper);
     }

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

@@ -132,8 +132,6 @@ public class MarkServiceImpl implements MarkService {
     @Resource
     private MarkRejectHistoryService markRejectHistoryService;
     @Resource
-    private BasicOperationLogService basicOperationLogService;
-    @Resource
     private MarkAiQuestionParamService markAiQuestionParamService;
     @Resource
     private MarkAiQuestionPointService markAiQuestionPointService;

+ 0 - 3
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/utils/AiUtil.java

@@ -22,9 +22,6 @@ import java.util.Iterator;
 
 public class AiUtil {
 
-    @Resource
-    DictionaryConfig dictionaryConfig;
-
     public static SignatureInfo signature(BasicSchool school) {
         return SignatureInfo.secret(school.getAccessKey(), school.getAccessSecret());
     }

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

@@ -1114,7 +1114,7 @@
                 and mt.paper_number = #{paperNumber}
             </if>
             and mt.ai_marked = true
-            and ms.subjective_status = 'MARK'
+            and ms.subjective_status = 'MARKED'
             and ms.subjective_score_list is not null
         </where>) t
         where (t.studentTotalScore = t.totalScore or t.studentTotalScore <![CDATA[ < ]]> passScore)

+ 28 - 6
teachcloud-task/src/main/java/com/qmth/teachcloud/task/job/service/impl/JobServiceImpl.java

@@ -12,12 +12,15 @@ import com.qmth.teachcloud.common.bean.dto.MqDto;
 import com.qmth.teachcloud.common.bean.vo.PaperInfoVo;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.BasicCourse;
+import com.qmth.teachcloud.common.entity.BasicSchool;
 import com.qmth.teachcloud.common.entity.MarkQuestion;
 import com.qmth.teachcloud.common.enums.PushTypeEnum;
 import com.qmth.teachcloud.common.enums.TaskResultEnum;
 import com.qmth.teachcloud.common.enums.TaskStatusEnum;
 import com.qmth.teachcloud.common.enums.mark.MarkPaperStatus;
+import com.qmth.teachcloud.common.mapper.BasicSchoolMapper;
 import com.qmth.teachcloud.common.service.BasicCourseService;
+import com.qmth.teachcloud.common.service.SysConfigService;
 import com.qmth.teachcloud.common.util.DateDisposeUtils;
 import com.qmth.teachcloud.common.util.RedisUtil;
 import com.qmth.teachcloud.data.service.TSyncDataService;
@@ -41,6 +44,7 @@ import java.util.Objects;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
 
 /**
  * @Description: job service impl
@@ -95,6 +99,10 @@ public class JobServiceImpl implements JobService {
 
     @Resource
     MarkStudentService markStudentService;
+    @Resource
+    BasicSchoolMapper basicSchoolMapper;
+    @Resource
+    SysConfigService sysConfigService;
 
     @Override
     public void sendSmsExpireTask() {
@@ -275,9 +283,16 @@ public class JobServiceImpl implements JobService {
         log.info("start auto ocr_question");
         try {
             List<MarkQuestion> markQuestionList = markQuestionService.listUnOcrQuestion();
-            for (MarkQuestion markQuestion : markQuestionList) {
-                // AI评卷任务自动评卷
-                markQuestionService.ocrMarkQuestion(markQuestion);
+            Map<Long, List<MarkQuestion>> listMap = markQuestionList.stream().collect(Collectors.groupingBy(MarkQuestion::getExamId));
+            for (Map.Entry<Long, List<MarkQuestion>> entry : listMap.entrySet()) {
+                BasicSchool basicSchool = basicSchoolMapper.selectByExamId(entry.getKey());
+                if (!sysConfigService.getEnableByType(basicSchool.getId(), SystemConstant.AI_MARK_SET)) {
+                    continue;
+                }
+                for (MarkQuestion markQuestion : entry.getValue()) {
+                    // AI评卷任务自动评卷
+                    markQuestionService.ocrMarkQuestion(markQuestion);
+                }
             }
         } catch (Exception e) {
             log.error("auto ocr_question error", e);
@@ -291,9 +306,16 @@ public class JobServiceImpl implements JobService {
         log.info("start auto ai_question");
         try {
             List<MarkQuestion> markQuestionList = markQuestionService.listUnMarkQuestion();
-            for (MarkQuestion markQuestion : markQuestionList) {
-                // AI评卷任务自动评卷
-                markQuestionService.autoAiMark(markQuestion);
+            Map<Long, List<MarkQuestion>> listMap = markQuestionList.stream().collect(Collectors.groupingBy(MarkQuestion::getExamId));
+            for (Map.Entry<Long, List<MarkQuestion>> entry : listMap.entrySet()) {
+                BasicSchool basicSchool = basicSchoolMapper.selectByExamId(entry.getKey());
+                if (!sysConfigService.getEnableByType(basicSchool.getId(), SystemConstant.AI_MARK_SET)) {
+                    continue;
+                }
+                for (MarkQuestion markQuestion : entry.getValue()) {
+                    // AI评卷任务自动评卷
+                    markQuestionService.autoAiMark(markQuestion);
+                }
             }
         } catch (Exception e) {
             log.error("auto ai_question error", e);