处理试题类型的问题

This commit is contained in:
wanggeng 2022-05-16 15:36:48 +08:00
parent 7402291bf7
commit a1147c242a
7 changed files with 76 additions and 29 deletions

View File

@ -4,7 +4,7 @@ import ink.wgink.exceptions.RemoveException;
import ink.wgink.exceptions.SaveException; import ink.wgink.exceptions.SaveException;
import ink.wgink.exceptions.SearchException; import ink.wgink.exceptions.SearchException;
import ink.wgink.interfaces.init.IInitBaseTable; import ink.wgink.interfaces.init.IInitBaseTable;
import ink.wgink.module.examine.pojo.dtos.question.QuestionTypeDTO; import ink.wgink.module.examine.pojo.dtos.question.QuestionTypeQuestionDTO;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List; import java.util.List;
@ -51,5 +51,5 @@ public interface IQuestionTypeQuestionDao extends IInitBaseTable {
* @return * @return
* @throws SearchException * @throws SearchException
*/ */
List<QuestionTypeDTO> listQuestionType(Map<String, Object> params) throws SearchException; List<QuestionTypeQuestionDTO> list(Map<String, Object> params) throws SearchException;
} }

View File

@ -0,0 +1,35 @@
package ink.wgink.module.examine.pojo.dtos.question;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
/**
* @ClassName: QuestionTypePO
* @Description: 试题类型
* @Author: CodeFactory
* @Date: 2021-04-04 11:40:13
* @Version: 3.0
**/
@ApiModel
public class QuestionTypeQuestionDTO extends QuestionTypeDTO {
@ApiModelProperty(name = "questionId", value = "试题ID")
private String questionId;
public String getQuestionId() {
return questionId;
}
public void setQuestionId(String questionId) {
this.questionId = questionId;
}
@Override
public String toString() {
final StringBuilder sb = new StringBuilder("{");
sb.append("\"questionId\":\"")
.append(questionId).append('\"');
sb.append('}');
return sb.toString();
}
}

View File

@ -1,6 +1,6 @@
package ink.wgink.module.examine.service.question; package ink.wgink.module.examine.service.question;
import ink.wgink.module.examine.pojo.dtos.question.QuestionTypeDTO; import ink.wgink.module.examine.pojo.dtos.question.QuestionTypeQuestionDTO;
import java.util.List; import java.util.List;
@ -78,7 +78,7 @@ public interface IQuestionTypeQuestionService {
* @param questionId * @param questionId
* @return * @return
*/ */
List<QuestionTypeDTO> listQuestionTypeByQuestionId(String questionId); List<QuestionTypeQuestionDTO> listByQuestionId(String questionId);
/** /**
* 试题类型列表 * 试题类型列表
@ -86,6 +86,6 @@ public interface IQuestionTypeQuestionService {
* @param questionIds * @param questionIds
* @return * @return
*/ */
List<QuestionTypeDTO> listQuestionTypeByQuestionIds(List<String> questionIds); List<QuestionTypeQuestionDTO> listByQuestionIds(List<String> questionIds);
} }

View File

@ -9,7 +9,7 @@ import ink.wgink.module.examine.dao.question.IQuestionDao;
import ink.wgink.module.examine.enums.question.QuestionTypeEnum; import ink.wgink.module.examine.enums.question.QuestionTypeEnum;
import ink.wgink.module.examine.pojo.dtos.question.QuestionDTO; import ink.wgink.module.examine.pojo.dtos.question.QuestionDTO;
import ink.wgink.module.examine.pojo.dtos.question.QuestionOptionsDTO; import ink.wgink.module.examine.pojo.dtos.question.QuestionOptionsDTO;
import ink.wgink.module.examine.pojo.dtos.question.QuestionTypeDTO; import ink.wgink.module.examine.pojo.dtos.question.QuestionTypeQuestionDTO;
import ink.wgink.module.examine.pojo.pos.question.QuestionPO; import ink.wgink.module.examine.pojo.pos.question.QuestionPO;
import ink.wgink.module.examine.pojo.vos.question.QuestionVO; import ink.wgink.module.examine.pojo.vos.question.QuestionVO;
import ink.wgink.module.examine.service.question.IQuestionOptionsService; import ink.wgink.module.examine.service.question.IQuestionOptionsService;
@ -205,10 +205,8 @@ public class QuestionServiceImpl extends DefaultBaseService implements IQuestion
List<QuestionOptionsDTO> questionOptionsDTOs = questionOptionsService.listByQuestionId(questionId); List<QuestionOptionsDTO> questionOptionsDTOs = questionOptionsService.listByQuestionId(questionId);
questionDTO.setOptions(questionOptionsDTOs); questionDTO.setOptions(questionOptionsDTOs);
} }
if (!StringUtils.isBlank(questionDTO.getQuestionType())) { List<QuestionTypeQuestionDTO> questionTypeQuestionDTOS = questionTypeQuestionService.listByQuestionId(questionId);
List<QuestionTypeDTO> questionTypeDTOs = questionTypeQuestionService.listQuestionTypeByQuestionId(questionId); setQuestionTypeName(questionDTO, questionTypeQuestionDTOS);
setQuestionTypeName(questionDTO, questionTypeDTOs);
}
return questionDTO; return questionDTO;
} }
@ -218,8 +216,8 @@ public class QuestionServiceImpl extends DefaultBaseService implements IQuestion
List<QuestionDTO> questionDTOs = questionDao.list(params); List<QuestionDTO> questionDTOs = questionDao.list(params);
if (!questionDTOs.isEmpty()) { if (!questionDTOs.isEmpty()) {
List<String> questionIds = ArrayListUtil.listBeanStringIdValue(questionDTOs, "questionId", QuestionDTO.class); List<String> questionIds = ArrayListUtil.listBeanStringIdValue(questionDTOs, "questionId", QuestionDTO.class);
List<QuestionTypeDTO> questionTypeDTOs = questionTypeQuestionService.listQuestionTypeByQuestionIds(questionIds); List<QuestionTypeQuestionDTO> questionTypeQuestionDTOS = questionTypeQuestionService.listByQuestionIds(questionIds);
setQuestionTypeName(questionDTOs, questionTypeDTOs); setQuestionTypeName(questionDTOs, questionTypeQuestionDTOS);
} }
return questionDTOs; return questionDTOs;
} }
@ -255,11 +253,11 @@ public class QuestionServiceImpl extends DefaultBaseService implements IQuestion
* 设置试题类型名称 * 设置试题类型名称
* *
* @param questionDTOs * @param questionDTOs
* @param questionTypeDTOs * @param questionTypeQuestionDTOS
*/ */
private void setQuestionTypeName(List<QuestionDTO> questionDTOs, List<QuestionTypeDTO> questionTypeDTOs) { private void setQuestionTypeName(List<QuestionDTO> questionDTOs, List<QuestionTypeQuestionDTO> questionTypeQuestionDTOS) {
questionDTOs.forEach(questionDTO -> { questionDTOs.forEach(questionDTO -> {
setQuestionTypeName(questionDTO, questionTypeDTOs); setQuestionTypeName(questionDTO, questionTypeQuestionDTOS);
}); });
} }
@ -267,18 +265,21 @@ public class QuestionServiceImpl extends DefaultBaseService implements IQuestion
* 设置试题类型名称 * 设置试题类型名称
* *
* @param questionDTO * @param questionDTO
* @param questionTypeDTOs * @param questionTypeQuestionDTOS
*/ */
private void setQuestionTypeName(QuestionDTO questionDTO, List<QuestionTypeDTO> questionTypeDTOs) { private void setQuestionTypeName(QuestionDTO questionDTO, List<QuestionTypeQuestionDTO> questionTypeQuestionDTOS) {
String questionType = ""; String questionType = "";
String questionTypeName = ""; String questionTypeName = "";
for (QuestionTypeDTO questionTypeDTO : questionTypeDTOs) { for (QuestionTypeQuestionDTO questionTypeQuestionDTO : questionTypeQuestionDTOS) {
if (!StringUtils.equals(questionDTO.getQuestionId(), questionTypeQuestionDTO.getQuestionId())) {
continue;
}
if (!StringUtils.isBlank(questionType)) { if (!StringUtils.isBlank(questionType)) {
questionType += ","; questionType += ",";
questionTypeName += ","; questionTypeName += ",";
} }
questionType += questionTypeDTO.getQuestionTypeId(); questionType += questionTypeQuestionDTO.getQuestionTypeId();
questionTypeName += questionTypeDTO.getTypeSummary(); questionTypeName += questionTypeQuestionDTO.getTypeSummary();
} }
questionDTO.setQuestionType(questionType); questionDTO.setQuestionType(questionType);
questionDTO.setQuestionTypeName(questionTypeName); questionDTO.setQuestionTypeName(questionTypeName);

View File

@ -2,7 +2,7 @@ package ink.wgink.module.examine.service.question.impl;
import ink.wgink.common.base.DefaultBaseService; import ink.wgink.common.base.DefaultBaseService;
import ink.wgink.module.examine.dao.question.IQuestionTypeQuestionDao; import ink.wgink.module.examine.dao.question.IQuestionTypeQuestionDao;
import ink.wgink.module.examine.pojo.dtos.question.QuestionTypeDTO; import ink.wgink.module.examine.pojo.dtos.question.QuestionTypeQuestionDTO;
import ink.wgink.module.examine.service.question.IQuestionTypeQuestionService; import ink.wgink.module.examine.service.question.IQuestionTypeQuestionService;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -90,17 +90,17 @@ public class QuestionTypeQuestionServiceImpl extends DefaultBaseService implemen
} }
@Override @Override
public List<QuestionTypeDTO> listQuestionTypeByQuestionId(String questionId) { public List<QuestionTypeQuestionDTO> listByQuestionId(String questionId) {
Map<String, Object> params = getHashMap(2); Map<String, Object> params = getHashMap(2);
params.put("questionId", questionId); params.put("questionId", questionId);
return questionTypeQuestionDao.listQuestionType(params); return questionTypeQuestionDao.list(params);
} }
@Override @Override
public List<QuestionTypeDTO> listQuestionTypeByQuestionIds(List<String> questionIds) { public List<QuestionTypeQuestionDTO> listByQuestionIds(List<String> questionIds) {
Map<String, Object> params = getHashMap(2); Map<String, Object> params = getHashMap(2);
params.put("questionIds", questionIds); params.put("questionIds", questionIds);
return questionTypeQuestionDao.listQuestionType(params); return questionTypeQuestionDao.list(params);
} }
} }

View File

@ -57,7 +57,6 @@
INSERT INTO exam_question( INSERT INTO exam_question(
question_id, question_id,
subject, subject,
question_type,
type, type,
choice_type, choice_type,
analysis, analysis,
@ -73,7 +72,6 @@
) VALUES( ) VALUES(
#{questionId}, #{questionId},
#{subject}, #{subject},
#{questionType},
#{type}, #{type},
#{choiceType}, #{choiceType},
#{analysis}, #{analysis},

View File

@ -8,6 +8,14 @@
<result column="question_id" property="questionId"/> <result column="question_id" property="questionId"/>
</resultMap> </resultMap>
<resultMap id="questionTypeQuestionDTO" type="ink.wgink.module.examine.pojo.dtos.question.QuestionTypeQuestionDTO">
<result column="question_id" property="questionId"/>
<result column="question_type_id" property="questionTypeId"/>
<result column="question_parent_id" property="questionTypeParentId"/>
<result column="type_name" property="typeName"/>
<result column="type_summary" property="typeSummary"/>
</resultMap>
<!-- 建表 --> <!-- 建表 -->
<update id="createTable"> <update id="createTable">
CREATE TABLE IF NOT EXISTS `exam_question_type_question` ( CREATE TABLE IF NOT EXISTS `exam_question_type_question` (
@ -70,14 +78,19 @@
</select> </select>
<!-- 试题类型列表 --> <!-- 试题类型列表 -->
<select id="listQuestionType" parameterType="map" resultMap="ink.wgink.module.examine.dao.question.IQuestionTypeDao.questionTypeDTO"> <select id="list" parameterType="map" resultMap="questionTypeQuestionDTO">
SELECT SELECT
t1.question_type_id, t1.question_type_id,
t1.question_type_parent_id, t1.question_type_parent_id,
t1.type_name, t1.type_name,
t1.type_summary t1.type_summary,
jt1.question_id
FROM FROM
exam_question_type t1 exam_question_type t1
INNER JOIN
exam_question_type_question jt1
ON
t1.question_type_id = jt1.question_type_id
WHERE WHERE
t1.is_delete = 0 t1.is_delete = 0
AND AND