test
parent
1abec00b36
commit
8833a1d575
|
|
@ -12,7 +12,6 @@ import org.qinan.cedu.service.PaperService;
|
||||||
import org.qinan.cedu.service.QuestionService;
|
import org.qinan.cedu.service.QuestionService;
|
||||||
import org.qinan.safetyeval.client.dto.PageResponse;
|
import org.qinan.safetyeval.client.dto.PageResponse;
|
||||||
import org.qinan.safetyeval.client.dto.SingleResponse;
|
import org.qinan.safetyeval.client.dto.SingleResponse;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
|
@ -56,11 +55,16 @@ public class PaperController {
|
||||||
return SingleResponse.success();
|
return SingleResponse.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ApiOperation("新建试卷-导入试题")
|
@ApiOperation("新建试卷-导入试题")
|
||||||
@PostMapping("/import")
|
@PostMapping("/import")
|
||||||
public PaperImportVO importQuestions(@Validated PaperImportDTO paperImportDTO) {
|
public SingleResponse<PaperImportVO> importQuestions(@Validated PaperImportDTO paperImportDTO) {
|
||||||
return paperService.importQuestions(paperImportDTO);
|
return SingleResponse.success(paperService.importQuestions(paperImportDTO));
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation("新建试卷-导入试题-模板")
|
||||||
|
@GetMapping("/import/template")
|
||||||
|
public SingleResponse<String> importQuestionsTemplate() {
|
||||||
|
return SingleResponse.success(paperService.importQuestionsTemplate());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation("试卷试题分页查询")
|
@ApiOperation("试卷试题分页查询")
|
||||||
|
|
|
||||||
|
|
@ -80,4 +80,13 @@ public interface PaperService extends IService<PaperDO> {
|
||||||
* @return 导入结果(成功条数+异常明细)
|
* @return 导入结果(成功条数+异常明细)
|
||||||
*/
|
*/
|
||||||
PaperImportVO importQuestions(PaperImportDTO importDTO);
|
PaperImportVO importQuestions(PaperImportDTO importDTO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* importQuestionsTemplate
|
||||||
|
*
|
||||||
|
* @return String
|
||||||
|
*/
|
||||||
|
String importQuestionsTemplate();
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ import org.qinan.cedu.model.vo.PaperPageVO;
|
||||||
import org.qinan.cedu.service.PaperService;
|
import org.qinan.cedu.service.PaperService;
|
||||||
import org.qinan.cedu.service.support.QuestionExcelImporter;
|
import org.qinan.cedu.service.support.QuestionExcelImporter;
|
||||||
import org.qinan.safetyeval.infrastructure.support.InsertFieldDefaults;
|
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.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
@ -36,7 +36,6 @@ import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
@ -52,9 +51,11 @@ public class PaperServiceImpl extends ServiceImpl<PaperMapper, PaperDO> implemen
|
||||||
private final PaperQuestionRelMapper paperQuestionRelMapper;
|
private final PaperQuestionRelMapper paperQuestionRelMapper;
|
||||||
private final QuestionOptionMapper questionOptionMapper;
|
private final QuestionOptionMapper questionOptionMapper;
|
||||||
private final QuestionExcelImporter questionExcelImporter;
|
private final QuestionExcelImporter questionExcelImporter;
|
||||||
|
private final PaperConvertor paperConvertor;
|
||||||
|
|
||||||
|
@Value("${template.paper.importUrl:}")
|
||||||
|
private String paperImportUrl;
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private PaperConvertor paperConvertor;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IPage<PaperPageVO> pageQuery(PaperPageQueryDTO query) {
|
public IPage<PaperPageVO> pageQuery(PaperPageQueryDTO query) {
|
||||||
|
|
@ -150,15 +151,18 @@ public class PaperServiceImpl extends ServiceImpl<PaperMapper, PaperDO> implemen
|
||||||
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());
|
||||||
|
|
||||||
|
List<QuestionOptionDO> newQueOptions = new ArrayList<>();
|
||||||
for (QuestionOptionDO option : options) {
|
for (QuestionOptionDO option : options) {
|
||||||
option.setId(IdUtil.getSnowflakeNextId());
|
option.setId(IdUtil.getSnowflakeNextId());
|
||||||
option.setQuestionId(newQuestionId);
|
option.setQuestionId(newQuestionId);
|
||||||
InsertFieldDefaults.applyIgnoreOrgId(option);
|
InsertFieldDefaults.applyIgnoreOrgId(option);
|
||||||
|
newQueOptions.add(option);
|
||||||
newOptions.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(",")));
|
.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(",")));
|
.map(QuestionOptionDO::getOptionKey).collect(Collectors.joining(",")));
|
||||||
|
|
||||||
PaperQuestionRelDO rel = new PaperQuestionRelDO();
|
PaperQuestionRelDO rel = new PaperQuestionRelDO();
|
||||||
|
|
@ -257,4 +261,9 @@ public class PaperServiceImpl extends ServiceImpl<PaperMapper, PaperDO> implemen
|
||||||
Db.saveBatch(rels);
|
Db.saveBatch(rels);
|
||||||
return new PaperImportVO(questions.size(), parseResult.getErrors());
|
return new PaperImportVO(questions.size(), parseResult.getErrors());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String importQuestionsTemplate() {
|
||||||
|
return paperImportUrl;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,20 +4,20 @@
|
||||||
|
|
||||||
<select id="pagePaperQuestions" resultType="org.qinan.cedu.model.vo.PaperQuestionVO">
|
<select id="pagePaperQuestions" resultType="org.qinan.cedu.model.vo.PaperQuestionVO">
|
||||||
SELECT q.id, q.title, q.score, q.answer_question_option_ids, q.analysis
|
SELECT q.id, q.title, q.score, q.answer_question_option_ids, q.analysis
|
||||||
, q.question_type, q.tag_type, pqr.question_num
|
, q.question_type, q.tag_type, pqr.question_num,q.answer
|
||||||
, cm.courseware_name
|
, cm.courseware_name
|
||||||
FROM paper_question_rel pqr
|
FROM paper_question_rel pqr
|
||||||
JOIN question q ON pqr.question_id = q.id
|
JOIN question q ON pqr.question_id = q.id
|
||||||
LEFT JOIN courseware_management cm ON cm.id = q.courseware_management_id
|
LEFT JOIN courseware_management cm ON cm.id = q.courseware_management_id
|
||||||
WHERE pqr.paper_id = #{query.paperId}
|
WHERE pqr.paper_id = #{query.paperId}
|
||||||
AND pqr.delete_enum = 0
|
AND pqr.delete_enum = 0
|
||||||
AND q.delete_enum = 0
|
AND q.delete_enum = 0
|
||||||
<if test="query.title != null and query.title != ''">
|
<if test="query.title != null and query.title != ''">
|
||||||
AND q.title LIKE CONCAT('%', #{query.title}, '%')
|
AND q.title LIKE CONCAT('%', #{query.title}, '%')
|
||||||
</if>
|
</if>
|
||||||
<if test="query.questionType != null and query.questionType != ''">
|
<if test="query.questionType != null and query.questionType != ''">
|
||||||
AND q.question_type = #{query.questionType}
|
AND q.question_type = #{query.questionType}
|
||||||
</if>
|
</if>
|
||||||
ORDER BY pqr.question_num ASC
|
ORDER BY pqr.question_num ASC
|
||||||
</select>
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue