소스 검색

新增ai评卷参数表

wangliang 2 달 전
부모
커밋
04a08fd48a

+ 21 - 4
distributed-print/src/main/java/com/qmth/distributed/print/api/mark/MarkAiQuestionParamController.java

@@ -8,6 +8,7 @@ import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.enums.FieldUniqueEnum;
+import com.qmth.teachcloud.common.util.RedisUtil;
 import com.qmth.teachcloud.common.util.Result;
 import com.qmth.teachcloud.common.util.ResultUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
@@ -55,22 +56,33 @@ public class MarkAiQuestionParamController {
     @Resource
     MarkAiQuestionLevelService markAiQuestionLevelService;
 
+    @Resource
+    RedisUtil redisUtil;
+
     @ApiOperation(value = "AI评卷参数新增/修改")
     @RequestMapping(value = "/save", method = RequestMethod.POST)
-    @ApiResponses({@ApiResponse(code = 200, message = "新增", response = EditResult.class)})
+    @ApiResponses({@ApiResponse(code = 200, message = "成功/失败", response = EditResult.class)})
     @Transactional
     public Result save(@ApiParam(value = "AI评卷参数信息", required = true) @Valid @RequestBody MarkAiQuestionParam markAiQuestionParam, BindingResult bindingResult) {
         if (bindingResult.hasErrors()) {
             return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage());
         }
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        String lockKey = SystemConstant.REDIS_AI_QUESTION_PARAM_SAVE_PREFIX + markAiQuestionParam.getQuestionId();
+        boolean lock = redisUtil.lock(lockKey, SystemConstant.REDIS_LOCK_DEFAULT_TIME_OUT);
+        if (!lock) {
+            throw ExceptionResultEnum.ERROR.exception("正在设置AI评卷参数,请稍候再试!");
+        }
         try {
             switch (markAiQuestionParam.getMode()) {
                 case POINT://按得分点
                     if (CollectionUtils.isEmpty(markAiQuestionParam.getPointList())) {
                         throw ExceptionResultEnum.ERROR.exception("得分点信息为空");
                     }
-                    markAiQuestionParam.getPointList().stream().peek(s -> s.setAiQuestionId(markAiQuestionParam.getId())).collect(Collectors.toList());
+                    markAiQuestionParam.getPointList().stream().peek(s -> {
+                        s.setAiQuestionId(markAiQuestionParam.getId());
+                        s.setId(SystemConstant.getDbUuid());
+                    }).collect(Collectors.toList());
                     if (Objects.isNull(markAiQuestionParam.getId())) {//新增
                         markAiQuestionParam.insertInfo(sysUser.getId());
                         markAiQuestionPointService.saveBatch(markAiQuestionParam.getPointList());
@@ -93,7 +105,10 @@ public class MarkAiQuestionParamController {
                     if (CollectionUtils.isEmpty(markAiQuestionParam.getLevelList())) {
                         throw ExceptionResultEnum.ERROR.exception("档次信息为空");
                     }
-                    markAiQuestionParam.getLevelList().stream().peek(s -> s.setAiQuestionId(markAiQuestionParam.getId())).collect(Collectors.toList());
+                    markAiQuestionParam.getLevelList().stream().peek(s -> {
+                        s.setAiQuestionId(markAiQuestionParam.getId());
+                        s.setId(SystemConstant.getDbUuid());
+                    }).collect(Collectors.toList());
                     if (Objects.isNull(markAiQuestionParam.getId())) {//新增
                         markAiQuestionParam.insertInfo(sysUser.getId());
                         markAiQuestionLevelService.saveBatch(markAiQuestionParam.getLevelList());
@@ -127,13 +142,15 @@ public class MarkAiQuestionParamController {
             } else {
                 ResultUtil.error(e.getMessage());
             }
+        } finally {
+            redisUtil.releaseLock(lockKey);
         }
         return ResultUtil.ok(true);
     }
 
     @ApiOperation(value = "AI评卷参数查询")
     @RequestMapping(value = "/info", method = RequestMethod.POST)
-    @ApiResponses({@ApiResponse(code = 200, message = "AI评卷参数查询", response = MarkAiQuestionParam.class)})
+    @ApiResponses({@ApiResponse(code = 200, message = "AI评卷参数信息", response = MarkAiQuestionParam.class)})
     public Result info(@ApiParam(value = "题目id", required = true) @RequestParam Long questionId) {
         MarkAiQuestionParam markAiQuestionParam = markAiQuestionParamService.getByExamIdAndPaperNumberAndQuestionId(null, null, questionId);
         Objects.requireNonNull(markAiQuestionParam, "AI评卷参数信息为空");

+ 1 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/contant/SystemConstant.java

@@ -568,6 +568,7 @@ public class SystemConstant {
     public static final String REDIS_OBE_RADAR_AGAIN_DATA_PREFIX = "redis:lock:obe:radar:again:data:";//obe雷达报表重新计算锁
     public static final String REDIS_OBE_RADAR_STUDENT_DATA_PREFIX = "redis:lock:obe:student:again:data:";//obe学生重新计算锁
     public static final String REDIS_COURSE_DEGREE_DATA_PREFIX = "redis:lock:course:degree:data:";//课程目标达成度重新计算锁
+    public static final String REDIS_AI_QUESTION_PARAM_SAVE_PREFIX = "redis:lock:ai:question:save:";//AI评卷参数保存锁
 
     public static final String REDIS_LOCK_IMPORT_EXAM_DATA = "redis:lock:import:exam:data:";//导入考务数据锁
     public static final long REDIS_LOCK_IMPORT_EXAM_DATA_TIME_OUT = 60L * 10;

+ 1 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/entity/MarkAiQuestionParam.java

@@ -43,7 +43,7 @@ public class MarkAiQuestionParam extends BaseEntity implements Serializable {
     @NotNull(message = "试卷类型不能为空")
     private String paperNumber;
 
-    @ApiModelProperty(value = "评分模式,SCORE:按得分点,LEVEL:按档次")
+    @ApiModelProperty(value = "评分模式,POINT:按得分点,LEVEL:按档次")
     @NotNull(message = "评分模式不能为空")
     private AiQuestionParamModeStatus mode;