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