Browse Source

3.4.5 update-20250422,bug修改

xiaofei 2 months ago
parent
commit
027e90348a

+ 10 - 3
distributed-print/src/main/java/com/qmth/distributed/print/api/mark/MarkAiQuestionParamController.java

@@ -15,6 +15,7 @@ import com.qmth.teachcloud.common.util.Result;
 import com.qmth.teachcloud.common.util.ResultUtil;
 import com.qmth.teachcloud.common.util.ResultUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import com.qmth.teachcloud.mark.entity.*;
 import com.qmth.teachcloud.mark.entity.*;
+import com.qmth.teachcloud.mark.enums.AiQuestionParamModeStatus;
 import com.qmth.teachcloud.mark.enums.MarkTaskStatus;
 import com.qmth.teachcloud.mark.enums.MarkTaskStatus;
 import com.qmth.teachcloud.mark.service.*;
 import com.qmth.teachcloud.mark.service.*;
 import io.swagger.annotations.*;
 import io.swagger.annotations.*;
@@ -163,7 +164,7 @@ public class MarkAiQuestionParamController {
                     levelList.sort(Comparator.comparing(MarkAiQuestionLevel::getMinScore));
                     levelList.sort(Comparator.comparing(MarkAiQuestionLevel::getMinScore));
                     Double minRangeScore = 0D;
                     Double minRangeScore = 0D;
                     for (MarkAiQuestionLevel aiQuestionLevel : levelList) {
                     for (MarkAiQuestionLevel aiQuestionLevel : levelList) {
-                        if(minRangeScore.doubleValue() - aiQuestionLevel.getMinScore().doubleValue() != 0){
+                        if (minRangeScore.doubleValue() - aiQuestionLevel.getMinScore().doubleValue() != 0) {
                             throw ExceptionResultEnum.ERROR.exception("区间分数必须从0开始,且区间分数段连续");
                             throw ExceptionResultEnum.ERROR.exception("区间分数必须从0开始,且区间分数段连续");
                         } else {
                         } else {
                             minRangeScore = aiQuestionLevel.getMaxScore();
                             minRangeScore = aiQuestionLevel.getMaxScore();
@@ -219,8 +220,14 @@ public class MarkAiQuestionParamController {
             markAiQuestionParamService.saveOrUpdate(markAiQuestionParam);
             markAiQuestionParamService.saveOrUpdate(markAiQuestionParam);
             markQuestionService.updateAiMark(markAiQuestionParam.getExamId(), markAiQuestionParam.getPaperNumber(), markAiQuestionParam.getQuestionId());
             markQuestionService.updateAiMark(markAiQuestionParam.getExamId(), markAiQuestionParam.getPaperNumber(), markAiQuestionParam.getQuestionId());
 
 
-            if (markAiQuestionParamService.existMarkAiQuestionPointOrLevel(markAiQuestionParam.getExamId(), markAiQuestionParam.getPaperNumber(), markAiQuestionParam.getQuestionId())
-                    && markTaskService.countByExamIdAndPaperNumberAndQuestionIdAndTaskNumberAndAiMarkedAndStatusNotIn(markAiQuestionParam.getExamId(), markAiQuestionParam.getPaperNumber(), markAiQuestionParam.getQuestionId(), 1, false, null) > 0) {
+            boolean existMarkAiQuestionPointOrLevel = markAiQuestionParamService.existMarkAiQuestionPointOrLevel(markAiQuestionParam.getExamId(), markAiQuestionParam.getPaperNumber(), markAiQuestionParam.getQuestionId());
+            int aiMarkedCount = markTaskService.countByExamIdAndPaperNumberAndQuestionIdAndTaskNumberAndAiMarkedAndStatusNotIn(markAiQuestionParam.getExamId(), markAiQuestionParam.getPaperNumber(), markAiQuestionParam.getQuestionId(), 1, true, Arrays.asList(MarkTaskStatus.MARKED));
+            if (!existMarkAiQuestionPointOrLevel && aiMarkedCount > 0) {
+                throw ExceptionResultEnum.ERROR.exception("已开始AI评卷,不能删除" + (AiQuestionParamModeStatus.POINT.equals(markAiQuestionParam.getMode()) ? "标答" : AiQuestionParamModeStatus.LEVEL.equals(markAiQuestionParam.getMode()) ? "档次" : ""));
+            }
+
+            int count = markTaskService.countByExamIdAndPaperNumberAndQuestionIdAndTaskNumberAndAiMarkedAndStatusNotIn(markAiQuestionParam.getExamId(), markAiQuestionParam.getPaperNumber(), markAiQuestionParam.getQuestionId(), 1, false, null);
+            if ((!existMarkAiQuestionPointOrLevel && aiMarkedCount == 0) || (existMarkAiQuestionPointOrLevel && count > 0)) {
                 markService.deleteMarkTask(markQuestion, true, true);
                 markService.deleteMarkTask(markQuestion, true, true);
                 markService.checkStudentSubjectiveScore(markAiQuestionParam.getExamId(), markPaper.getCoursePaperId());
                 markService.checkStudentSubjectiveScore(markAiQuestionParam.getExamId(), markPaper.getCoursePaperId());
             }
             }

+ 5 - 4
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysUserServiceImpl.java

@@ -1265,16 +1265,17 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     public SysUser getAiUserBySchoolId(Long schoolId) {
     public SysUser getAiUserBySchoolId(Long schoolId) {
         SysUser sysUser = sysUserService.findBySchoolIdAndLoginName(schoolId, SystemConstant.AI_USER);
         SysUser sysUser = sysUserService.findBySchoolIdAndLoginName(schoolId, SystemConstant.AI_USER);
         if (sysUser == null) {
         if (sysUser == null) {
-            sysUser = new SysUser(schoolId, SystemConstant.AI_USER, SystemConstant.AI_USER_NAME, "00000000000", true);
+            sysUser = new SysUser(schoolId, SystemConstant.AI_USER, SystemConstant.AI_USER_NAME, null, true);
             BasicSchool basicSchool = commonCacheService.schoolCache(schoolId);
             BasicSchool basicSchool = commonCacheService.schoolCache(schoolId);
             sysUser.setPassword(basicSchool.getInitPassword());
             sysUser.setPassword(basicSchool.getInitPassword());
             SysOrg sysOrg = sysOrgService.findRootOrg(schoolId);
             SysOrg sysOrg = sysOrgService.findRootOrg(schoolId);
             sysUser.setOrgId(sysOrg.getId());
             sysUser.setOrgId(sysOrg.getId());
             this.save(sysUser);
             this.save(sysUser);
 
 
-            SysRole sysRole = sysRoleService.getDefaultRoleByType(RoleTypeEnum.MARKER);
-            SysUserRole sysUserRole = new SysUserRole(sysUser.getId(), sysRole.getId());
-            sysUserRoleService.save(sysUserRole);
+            // 不绑定角色
+//            SysRole sysRole = sysRoleService.getDefaultRoleByType(RoleTypeEnum.MARKER);
+//            SysUserRole sysUserRole = new SysUserRole(sysUser.getId(), sysRole.getId());
+//            sysUserRoleService.save(sysUserRole);
         }
         }
         return sysUser;
         return sysUser;
     }
     }

+ 7 - 5
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkQuestionServiceImpl.java

@@ -773,11 +773,13 @@ public class MarkQuestionServiceImpl extends ServiceImpl<MarkQuestionMapper, Mar
         }
         }
 
 
         MarkPaper markPaper = markPaperService.getByExamIdAndPaperNumber(examId, paperNumber);
         MarkPaper markPaper = markPaperService.getByExamIdAndPaperNumber(examId, paperNumber);
-        if (oldDoubleRate == 0 && doubleRate > 0 && MarkPaperAiMark.AI_ONLY.equals(markPaper.getAiMark())) {
-            throw ExceptionResultEnum.ERROR.exception("仅AI评卷模式,不允许单评改双评");
-        }
-        if (oldDoubleRate > 0 && doubleRate == 0 && MarkPaperAiMark.MAN_MACHINE.equals(markPaper.getAiMark())) {
-            throw ExceptionResultEnum.ERROR.exception("人机双评模式,不允许双评改单评");
+        if (markAiQuestionParamService.existMarkAiQuestionPointOrLevel(examId, paperNumber, questionId)) {
+            if (oldDoubleRate == 0 && doubleRate > 0 && MarkPaperAiMark.AI_ONLY.equals(markPaper.getAiMark())) {
+                throw ExceptionResultEnum.ERROR.exception("仅AI评卷模式,不允许单评改双评");
+            }
+            if (oldDoubleRate > 0 && doubleRate == 0 && MarkPaperAiMark.MAN_MACHINE.equals(markPaper.getAiMark())) {
+                throw ExceptionResultEnum.ERROR.exception("人机双评模式,不允许双评改单评");
+            }
         }
         }
 
 
         if (doubleRate > 0 && doubleMarkParam.getArbitrateThreshold() > 0 && doubleMarkParam.getArbitrateThreshold() > markQuestion.getTotalScore()) {
         if (doubleRate > 0 && doubleMarkParam.getArbitrateThreshold() > 0 && doubleMarkParam.getArbitrateThreshold() > markQuestion.getTotalScore()) {

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

@@ -1524,6 +1524,7 @@ public class MarkServiceImpl implements MarkService {
             // 更新任务数量
             // 更新任务数量
             this.updateMarkedCount(markQuestion.getExamId(), markQuestion.getPaperNumber(), markQuestion.getId());
             this.updateMarkedCount(markQuestion.getExamId(), markQuestion.getPaperNumber(), markQuestion.getId());
             this.updateMarkTaskCount(markQuestion.getExamId(), markQuestion.getPaperNumber(), markQuestion.getId());
             this.updateMarkTaskCount(markQuestion.getExamId(), markQuestion.getPaperNumber(), markQuestion.getId());
+            this.updatePersonTask(markQuestion.getExamId(), markQuestion.getPaperNumber(), markQuestion.getId());
         }
         }
     }
     }
 
 

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

@@ -118,7 +118,7 @@ public class MarkUserQuestionServiceImpl extends ServiceImpl<MarkUserQuestionMap
                 record.setPercent(bigDecimal.doubleValue());
                 record.setPercent(bigDecimal.doubleValue());
             }
             }
             // 分组题目
             // 分组题目
-            record.setQuestionNumber(markQuestionList.stream().map(m -> m.getMainNumber() + "-" + m.getSubNumber()).collect(Collectors.joining(",")));
+            record.setQuestionNumber(markQuestionList.stream().filter(MarkQuestion::getPersonTask).map(m -> m.getMainNumber() + "-" + m.getSubNumber()).collect(Collectors.joining(",")));
         }
         }
 
 
         return markEntranceDtoIPage;
         return markEntranceDtoIPage;