|
@@ -1,6 +1,7 @@
|
|
|
package com.qmth.teachcloud.mark.service.impl;
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
@@ -20,19 +21,13 @@ import com.qmth.teachcloud.common.bean.marking.MarkConfigItem;
|
|
|
import com.qmth.teachcloud.common.bean.vo.FilePathVo;
|
|
|
import com.qmth.teachcloud.common.config.DictionaryConfig;
|
|
|
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.entity.SysUser;
|
|
|
+import com.qmth.teachcloud.common.entity.*;
|
|
|
import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
|
|
|
import com.qmth.teachcloud.common.enums.ScorePolicy;
|
|
|
import com.qmth.teachcloud.common.enums.mark.*;
|
|
|
import com.qmth.teachcloud.common.mapper.BasicCourseMapper;
|
|
|
import com.qmth.teachcloud.common.mapper.BasicSchoolMapper;
|
|
|
-import com.qmth.teachcloud.common.service.BasicCourseService;
|
|
|
-import com.qmth.teachcloud.common.service.BasicOperationLogService;
|
|
|
-import com.qmth.teachcloud.common.service.FileUploadService;
|
|
|
-import com.qmth.teachcloud.common.service.SysUserService;
|
|
|
+import com.qmth.teachcloud.common.service.*;
|
|
|
import com.qmth.teachcloud.common.util.FileUtil;
|
|
|
import com.qmth.teachcloud.common.util.ServletUtil;
|
|
|
import com.qmth.teachcloud.mark.dto.ai.SheetImageDto;
|
|
@@ -139,6 +134,8 @@ public class MarkServiceImpl implements MarkService {
|
|
|
private MarkAiQuestionLevelService markAiQuestionLevelService;
|
|
|
@Resource
|
|
|
private OcrApiClient ocrApiClient;
|
|
|
+ @Resource
|
|
|
+ private SysConfigService sysConfigService;
|
|
|
|
|
|
/**
|
|
|
* 释放某个评卷员的考生
|
|
@@ -1638,8 +1635,16 @@ public class MarkServiceImpl implements MarkService {
|
|
|
request.setQuestionBody(markAiQuestionParam.getMainTitle());
|
|
|
request.setStudentAnswer(studentQuestionAnswer);
|
|
|
request.setStandardAnswer(buildStandardAnswer(markAiQuestionParam));
|
|
|
+ String aiUrl = null;
|
|
|
+ SysConfig sysConfig = sysConfigService.getByKey(SystemConstant.AI_MARK_SET);
|
|
|
+ if (sysConfig != null && StringUtils.isNotBlank(sysConfig.getConfigValue())) {
|
|
|
+ JSONObject object = JSON.parseObject(sysConfig.getConfigValue(), JSONObject.class);
|
|
|
+ if (object.containsKey("url")) {
|
|
|
+ aiUrl = object.getString("url");
|
|
|
+ }
|
|
|
+ }
|
|
|
// AI评卷
|
|
|
- AutoScoreResult autoScoreResult = aiService.autoScore(request, AiUtil.signature(basicSchool));
|
|
|
+ AutoScoreResult autoScoreResult = aiService.autoScore(aiUrl, AiUtil.signature(basicSchool), request);
|
|
|
long endTime = System.currentTimeMillis();
|
|
|
submitAiTask(t, aiUser.getId(), markQuestion, autoScoreResult, buildTrack(markAiQuestionParam.getMode(), autoScoreResult, markQuestion, markOcrStudentQuestions), endTime - startTime);
|
|
|
t.setAiMarkErrorMsg(null);
|
|
@@ -1842,6 +1847,15 @@ public class MarkServiceImpl implements MarkService {
|
|
|
deleteFileList.add(file);
|
|
|
}
|
|
|
|
|
|
+ String ocrUrl = null;
|
|
|
+ SysConfig sysConfig = sysConfigService.getByKey(SystemConstant.AI_MARK_SET);
|
|
|
+ if (sysConfig != null && StringUtils.isNotBlank(sysConfig.getConfigValue())) {
|
|
|
+ JSONObject object = JSON.parseObject(sysConfig.getConfigValue(), JSONObject.class);
|
|
|
+ if (object.containsKey("ocrUrl")) {
|
|
|
+ ocrUrl = object.getString("ocrUrl");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
// 题目评卷区
|
|
|
List<PictureConfig> pictureConfigList = JSON.parseArray(markQuestion.getPicList(), PictureConfig.class);
|
|
|
|
|
@@ -1855,7 +1869,7 @@ public class MarkServiceImpl implements MarkService {
|
|
|
// OCR识别
|
|
|
String ocrResult;
|
|
|
try {
|
|
|
- ocrResult = ocrApiClient.forImage(AiUtil.signatureOcr(dictionaryConfig.sysDomain()), OcrType.HANDWRITING, UploadFile.build("image", "", file));
|
|
|
+ ocrResult = ocrApiClient.forImage(ocrUrl, AiUtil.signatureOcr(dictionaryConfig.sysDomain()), OcrType.HANDWRITING, UploadFile.build("image", "", file));
|
|
|
} catch (Exception e) {
|
|
|
throw ExceptionResultEnum.ERROR.exception("OCR识别失败" + ",考号[" + markStudent.getStudentCode() + "。" + e.getMessage());
|
|
|
}
|