Преглед изворни кода

3.4.5 update-20250425,bug修改

xiaofei пре 1 месец
родитељ
комит
9ddca08b2c

+ 3 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamPrintPlanServiceImpl.java

@@ -254,12 +254,12 @@ public class ExamPrintPlanServiceImpl extends ServiceImpl<ExamPrintPlanMapper, E
         if (examPrintPlan == null) {
             throw ExceptionResultEnum.ERROR.exception("要删除的项目计划不存在");
         }
-        if (!PrintPlanStatusEnum.NEW.equals(examPrintPlan.getStatus())) {
-            throw ExceptionResultEnum.ERROR.exception("只有'新建'状态的项目计划可以被删除");
-        }
         if (!tbTaskPdfService.countByPrintPlanIdAndEntityId(examPrintPlan.getSchoolId(), id)) {
             throw ExceptionResultEnum.ERROR.exception("要删除的印刷计划正在生成pdf中,无法删除");
         }
+        if (!PrintPlanStatusEnum.NEW.equals(examPrintPlan.getStatus())) {
+            throw ExceptionResultEnum.ERROR.exception("只有'新建'状态的项目计划可以被删除");
+        }
         examDetailService.deleteExaminationData(id, null);
         return this.removeById(id);
     }

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java

@@ -2427,7 +2427,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         try {
             log.debug("导出Excel开始...");
             response.setHeader("Content-Disposition",
-                    "inline;filename=" + URLEncoder.encode("成绩导出", SystemConstant.CHARSET_NAME) + ".xlsx");
+                    "inline;filename=" + URLEncoder.encode("试卷清单", SystemConstant.CHARSET_NAME) + ".xlsx");
             response.setContentType("application/vnd.ms-excel");
             ServletOutputStream outputStream = response.getOutputStream();
             ExcelWriter writer = ExcelWriter.create(ExcelType.XLSX);

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

@@ -780,6 +780,10 @@ public class MarkQuestionServiceImpl extends ServiceImpl<MarkQuestionMapper, Mar
         }
 
         MarkPaper markPaper = markPaperService.getByExamIdAndPaperNumber(examId, paperNumber);
+        if (oldDoubleRate == 0 && doubleRate > 0 && !markPaper.getDoubleMark()) {
+            throw ExceptionResultEnum.ERROR.exception("评卷设置中未开启双评,不允许单评改双评");
+        }
+
         boolean pointOrLevel = markAiQuestionParamService.existMarkAiQuestionPointOrLevel(examId, paperNumber, questionId);
         if (pointOrLevel) {
             if (oldDoubleRate == 0 && doubleRate > 0 && MarkPaperAiMark.AI_ONLY.equals(markPaper.getAiMark())) {

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

@@ -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());
                 }