dev-tmp1
luotaiqian 2026-08-19 14:01:48 +08:00
parent 95989f88d3
commit 38793d70f1
2 changed files with 10 additions and 20 deletions

View File

@ -25,6 +25,9 @@ public class PaperQuestionVO {
@ApiModelProperty("答案选项id多个逗号隔开")
private String answerQuestionOptionIds;
@ApiModelProperty("答案选项,多个逗号隔开")
private String answer;
@ApiModelProperty("答案解析")
private String analysis;

View File

@ -125,7 +125,6 @@ public class PaperServiceImpl extends ServiceImpl<PaperMapper, PaperDO> implemen
.eq(QuestionOptionDO::getDeleteEnum, DeleteEnum.FALSE.getCode()));
// 新增试卷(使用请求中的名称/总分/合格分数)
LocalDateTime now = LocalDateTime.now();
PaperDO target = new PaperDO();
target.setPaperName(copyDTO.getPaperName().trim());
target.setPaperTotalScore(copyDTO.getPaperTotalScore());
@ -146,40 +145,28 @@ public class PaperServiceImpl extends ServiceImpl<PaperMapper, PaperDO> implemen
Long oldQuestionId = question.getId();
Long newQuestionId = IdUtil.getSnowflakeNextId();
question.setId(newQuestionId);
question.setCreateTime(now);
question.setUpdateTime(now);
question.setVersion(0);
InsertFieldDefaults.applyIgnoreOrgId(question);
List<QuestionOptionDO> options = allOptions.stream()
.filter(option -> oldQuestionId.equals(option.getQuestionId()))
.collect(Collectors.toList());
for (QuestionOptionDO option : options) {
Long oldOptionId = option.getId();
option.setId(IdUtil.getSnowflakeNextId());
option.setQuestionId(newQuestionId);
option.setCreateTime(now);
option.setUpdateTime(now);
option.setVersion(0);
if (StringUtils.hasText(question.getAnswerQuestionOptionIds())) {
// 替换正确选项id引用
String replaced = Arrays.stream(question.getAnswerQuestionOptionIds().split(","))
.map(String::trim)
.filter(StringUtils::hasText)
.map(oldId -> oldId.equals(String.valueOf(oldOptionId))
? String.valueOf(option.getId()) : oldId)
.collect(Collectors.joining(","));
question.setAnswerQuestionOptionIds(replaced);
}
InsertFieldDefaults.applyIgnoreOrgId(option);
newOptions.add(option);
}
question.setAnswerQuestionOptionIds(newOptions.stream().filter(QuestionOptionDO::getIsCorrect)
.map(it -> String.valueOf(it.getId())).collect(Collectors.joining(",")));
question.setAnswer(newOptions.stream().filter(QuestionOptionDO::getIsCorrect)
.map(QuestionOptionDO::getOptionKey).collect(Collectors.joining(",")));
PaperQuestionRelDO rel = new PaperQuestionRelDO();
rel.setPaperId(target.getId());
rel.setQuestionId(newQuestionId);
rel.setQuestionNum(questionNumByQuestionId.get(oldQuestionId));
rel.setCreateTime(now);
rel.setUpdateTime(now);
newRels.add(rel);
InsertFieldDefaults.applyIgnoreOrgId(rel);
}
Db.saveBatch(questions);
Db.saveBatch(newOptions);