dev-tmp1
luotaiqian 2026-08-19 14:17:29 +08:00
parent 1abec00b36
commit 8833a1d575
4 changed files with 37 additions and 15 deletions

View File

@ -12,7 +12,6 @@ import org.qinan.cedu.service.PaperService;
import org.qinan.cedu.service.QuestionService;
import org.qinan.safetyeval.client.dto.PageResponse;
import org.qinan.safetyeval.client.dto.SingleResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@ -56,11 +55,16 @@ public class PaperController {
return SingleResponse.success();
}
@ApiOperation("新建试卷-导入试题")
@PostMapping("/import")
public PaperImportVO importQuestions(@Validated PaperImportDTO paperImportDTO) {
return paperService.importQuestions(paperImportDTO);
public SingleResponse<PaperImportVO> importQuestions(@Validated PaperImportDTO paperImportDTO) {
return SingleResponse.success(paperService.importQuestions(paperImportDTO));
}
@ApiOperation("新建试卷-导入试题-模板")
@GetMapping("/import/template")
public SingleResponse<String> importQuestionsTemplate() {
return SingleResponse.success(paperService.importQuestionsTemplate());
}
@ApiOperation("试卷试题分页查询")

View File

@ -80,4 +80,13 @@ public interface PaperService extends IService<PaperDO> {
* @return +
*/
PaperImportVO importQuestions(PaperImportDTO importDTO);
/**
* importQuestionsTemplate
*
* @return String
*/
String importQuestionsTemplate();
}

View File

@ -28,7 +28,7 @@ import org.qinan.cedu.model.vo.PaperPageVO;
import org.qinan.cedu.service.PaperService;
import org.qinan.cedu.service.support.QuestionExcelImporter;
import org.qinan.safetyeval.infrastructure.support.InsertFieldDefaults;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
@ -36,7 +36,6 @@ import org.springframework.util.StringUtils;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@ -52,9 +51,11 @@ public class PaperServiceImpl extends ServiceImpl<PaperMapper, PaperDO> implemen
private final PaperQuestionRelMapper paperQuestionRelMapper;
private final QuestionOptionMapper questionOptionMapper;
private final QuestionExcelImporter questionExcelImporter;
private final PaperConvertor paperConvertor;
@Value("${template.paper.importUrl:}")
private String paperImportUrl;
@Autowired
private PaperConvertor paperConvertor;
@Override
public IPage<PaperPageVO> pageQuery(PaperPageQueryDTO query) {
@ -150,15 +151,18 @@ public class PaperServiceImpl extends ServiceImpl<PaperMapper, PaperDO> implemen
List<QuestionOptionDO> options = allOptions.stream()
.filter(option -> oldQuestionId.equals(option.getQuestionId()))
.collect(Collectors.toList());
List<QuestionOptionDO> newQueOptions = new ArrayList<>();
for (QuestionOptionDO option : options) {
option.setId(IdUtil.getSnowflakeNextId());
option.setQuestionId(newQuestionId);
InsertFieldDefaults.applyIgnoreOrgId(option);
newQueOptions.add(option);
newOptions.add(option);
}
question.setAnswerQuestionOptionIds(newOptions.stream().filter(QuestionOptionDO::getIsCorrect)
question.setAnswerQuestionOptionIds(newQueOptions.stream().filter(QuestionOptionDO::getIsCorrect)
.map(it -> String.valueOf(it.getId())).collect(Collectors.joining(",")));
question.setAnswer(newOptions.stream().filter(QuestionOptionDO::getIsCorrect)
question.setAnswer(newQueOptions.stream().filter(QuestionOptionDO::getIsCorrect)
.map(QuestionOptionDO::getOptionKey).collect(Collectors.joining(",")));
PaperQuestionRelDO rel = new PaperQuestionRelDO();
@ -257,4 +261,9 @@ public class PaperServiceImpl extends ServiceImpl<PaperMapper, PaperDO> implemen
Db.saveBatch(rels);
return new PaperImportVO(questions.size(), parseResult.getErrors());
}
@Override
public String importQuestionsTemplate() {
return paperImportUrl;
}
}

View File

@ -4,20 +4,20 @@
<select id="pagePaperQuestions" resultType="org.qinan.cedu.model.vo.PaperQuestionVO">
SELECT q.id, q.title, q.score, q.answer_question_option_ids, q.analysis
, q.question_type, q.tag_type, pqr.question_num
, cm.courseware_name
, q.question_type, q.tag_type, pqr.question_num,q.answer
, cm.courseware_name
FROM paper_question_rel pqr
JOIN question q ON pqr.question_id = q.id
LEFT JOIN courseware_management cm ON cm.id = q.courseware_management_id
WHERE pqr.paper_id = #{query.paperId}
AND pqr.delete_enum = 0
AND q.delete_enum = 0
AND pqr.delete_enum = 0
AND q.delete_enum = 0
<if test="query.title != null and query.title != ''">
AND q.title LIKE CONCAT('%', #{query.title}, '%')
</if>
<if test="query.questionType != null and query.questionType != ''">
AND q.question_type = #{query.questionType}
</if>
ORDER BY pqr.question_num ASC
ORDER BY pqr.question_num ASC
</select>
</mapper>