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多个逗号隔开") @ApiModelProperty("答案选项id多个逗号隔开")
private String answerQuestionOptionIds; private String answerQuestionOptionIds;
@ApiModelProperty("答案选项,多个逗号隔开")
private String answer;
@ApiModelProperty("答案解析") @ApiModelProperty("答案解析")
private String analysis; private String analysis;

View File

@ -125,7 +125,6 @@ public class PaperServiceImpl extends ServiceImpl<PaperMapper, PaperDO> implemen
.eq(QuestionOptionDO::getDeleteEnum, DeleteEnum.FALSE.getCode())); .eq(QuestionOptionDO::getDeleteEnum, DeleteEnum.FALSE.getCode()));
// 新增试卷(使用请求中的名称/总分/合格分数) // 新增试卷(使用请求中的名称/总分/合格分数)
LocalDateTime now = LocalDateTime.now();
PaperDO target = new PaperDO(); PaperDO target = new PaperDO();
target.setPaperName(copyDTO.getPaperName().trim()); target.setPaperName(copyDTO.getPaperName().trim());
target.setPaperTotalScore(copyDTO.getPaperTotalScore()); target.setPaperTotalScore(copyDTO.getPaperTotalScore());
@ -146,40 +145,28 @@ public class PaperServiceImpl extends ServiceImpl<PaperMapper, PaperDO> implemen
Long oldQuestionId = question.getId(); Long oldQuestionId = question.getId();
Long newQuestionId = IdUtil.getSnowflakeNextId(); Long newQuestionId = IdUtil.getSnowflakeNextId();
question.setId(newQuestionId); question.setId(newQuestionId);
question.setCreateTime(now); InsertFieldDefaults.applyIgnoreOrgId(question);
question.setUpdateTime(now);
question.setVersion(0);
List<QuestionOptionDO> options = allOptions.stream() List<QuestionOptionDO> options = allOptions.stream()
.filter(option -> oldQuestionId.equals(option.getQuestionId())) .filter(option -> oldQuestionId.equals(option.getQuestionId()))
.collect(Collectors.toList()); .collect(Collectors.toList());
for (QuestionOptionDO option : options) { for (QuestionOptionDO option : options) {
Long oldOptionId = option.getId();
option.setId(IdUtil.getSnowflakeNextId()); option.setId(IdUtil.getSnowflakeNextId());
option.setQuestionId(newQuestionId); option.setQuestionId(newQuestionId);
option.setCreateTime(now); InsertFieldDefaults.applyIgnoreOrgId(option);
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);
}
newOptions.add(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(); PaperQuestionRelDO rel = new PaperQuestionRelDO();
rel.setPaperId(target.getId()); rel.setPaperId(target.getId());
rel.setQuestionId(newQuestionId); rel.setQuestionId(newQuestionId);
rel.setQuestionNum(questionNumByQuestionId.get(oldQuestionId)); rel.setQuestionNum(questionNumByQuestionId.get(oldQuestionId));
rel.setCreateTime(now);
rel.setUpdateTime(now);
newRels.add(rel); newRels.add(rel);
InsertFieldDefaults.applyIgnoreOrgId(rel);
} }
Db.saveBatch(questions); Db.saveBatch(questions);
Db.saveBatch(newOptions); Db.saveBatch(newOptions);