user paper exam
parent
502c83667a
commit
1a97101ee5
|
|
@ -1,14 +1,18 @@
|
||||||
package org.qinan.cedu.controller;
|
package org.qinan.cedu.controller;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import io.swagger.annotations.ApiParam;
|
import io.swagger.annotations.ApiParam;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.qinan.cedu.model.dto.PaperCoursewarePageQueryDTO;
|
||||||
import org.qinan.cedu.model.dto.QuestionTypeCountQueryDTO;
|
import org.qinan.cedu.model.dto.QuestionTypeCountQueryDTO;
|
||||||
import org.qinan.cedu.model.dto.QuestionUpdateDTO;
|
import org.qinan.cedu.model.dto.QuestionUpdateDTO;
|
||||||
|
import org.qinan.cedu.model.vo.QuestionCoursewareVO;
|
||||||
import org.qinan.cedu.model.vo.QuestionTypeCountVO;
|
import org.qinan.cedu.model.vo.QuestionTypeCountVO;
|
||||||
import org.qinan.cedu.model.vo.QuestionVO;
|
import org.qinan.cedu.model.vo.QuestionVO;
|
||||||
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.SingleResponse;
|
import org.qinan.safetyeval.client.dto.SingleResponse;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
@ -49,4 +53,11 @@ public class QuestionController {
|
||||||
return SingleResponse.success(questionService.countQuestionType(dto));
|
return SingleResponse.success(questionService.countQuestionType(dto));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ApiOperation("分页试题信息,根据课件或者试题id")
|
||||||
|
@GetMapping("/page/courseware")
|
||||||
|
public PageResponse<QuestionCoursewareVO> pageCourseware(PaperCoursewarePageQueryDTO query) {
|
||||||
|
IPage<QuestionCoursewareVO> page = questionService.pageCourseware(query);
|
||||||
|
return PageResponse.of(page.getRecords(), page.getTotal());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,16 +5,14 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
import org.qinan.cedu.model.dto.PaperCoursewarePageQueryDTO;
|
||||||
import org.qinan.cedu.model.dto.PaperQuestionPageQueryDTO;
|
import org.qinan.cedu.model.dto.PaperQuestionPageQueryDTO;
|
||||||
import org.qinan.cedu.model.dto.QuestionTypeCountQueryDTO;
|
import org.qinan.cedu.model.dto.QuestionTypeCountQueryDTO;
|
||||||
import org.qinan.cedu.model.entity.QuestionDO;
|
import org.qinan.cedu.model.entity.QuestionDO;
|
||||||
import org.qinan.cedu.model.vo.PaperQuestionDetailVO;
|
import org.qinan.cedu.model.vo.*;
|
||||||
import org.qinan.cedu.model.vo.PaperQuestionVO;
|
|
||||||
import org.qinan.cedu.model.vo.QuestionTypeCountVO;
|
|
||||||
import org.qinan.cedu.model.vo.QuestionVO;
|
|
||||||
import org.qinan.cedu.model.vo.StartExamQuestionVO;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 试题 Mapper
|
* 试题 Mapper
|
||||||
*/
|
*/
|
||||||
|
|
@ -82,4 +80,14 @@ public interface QuestionMapper extends BaseMapper<QuestionDO> {
|
||||||
List<Long> listRandomQuestionIds(@Param("coursewareManagementIdList") List<Long> coursewareManagementIdList,
|
List<Long> listRandomQuestionIds(@Param("coursewareManagementIdList") List<Long> coursewareManagementIdList,
|
||||||
@Param("questionType") String questionType,
|
@Param("questionType") String questionType,
|
||||||
@Param("num") Integer num);
|
@Param("num") Integer num);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* pageCourseware
|
||||||
|
*
|
||||||
|
* @param page page
|
||||||
|
* @param query query
|
||||||
|
* @return QuestionCoursewareVO
|
||||||
|
*/
|
||||||
|
IPage<QuestionCoursewareVO> pageCourseware(Page<PaperQuestionVO> page
|
||||||
|
,@Param("qry") PaperCoursewarePageQueryDTO query);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
package org.qinan.cedu.model.dto;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import org.qinan.cedu.enums.PaperTypeEnum;
|
||||||
|
import org.qinan.cedu.model.query.BasePageQuery;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 试卷分页查询请求
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ApiModel(value = "PaperCoursewarePageQueryDTO", description = "科技分页查询")
|
||||||
|
public class PaperCoursewarePageQueryDTO extends BasePageQuery {
|
||||||
|
|
||||||
|
@ApiModelProperty("课件id")
|
||||||
|
@NotNull
|
||||||
|
private Long coursewareManagementId;
|
||||||
|
|
||||||
|
@ApiModelProperty(PaperTypeEnum.REMARKS)
|
||||||
|
private String paperType;
|
||||||
|
|
||||||
|
@ApiModelProperty("题干id")
|
||||||
|
private String title;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,52 @@
|
||||||
|
package org.qinan.cedu.model.vo;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||||
|
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 试卷试题分页返回
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@ApiModel(value = "QuestionCoursewareVO", description = "课件试题对象")
|
||||||
|
public class QuestionCoursewareVO {
|
||||||
|
|
||||||
|
@ApiModelProperty("试题id")
|
||||||
|
@JsonSerialize(using = ToStringSerializer.class)
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@ApiModelProperty("题干")
|
||||||
|
private String title;
|
||||||
|
|
||||||
|
@ApiModelProperty("分值")
|
||||||
|
private BigDecimal score;
|
||||||
|
|
||||||
|
@ApiModelProperty("答案选项id,多个逗号隔开")
|
||||||
|
private String answerQuestionOptionIds;
|
||||||
|
|
||||||
|
@ApiModelProperty("答案选项,多个逗号隔开")
|
||||||
|
private String answer;
|
||||||
|
|
||||||
|
@ApiModelProperty("答案解析")
|
||||||
|
private String analysis;
|
||||||
|
|
||||||
|
@ApiModelProperty("题型:single单选/multiple多选/judge判断")
|
||||||
|
private String questionType;
|
||||||
|
|
||||||
|
@ApiModelProperty("标签类型")
|
||||||
|
private String tagType;
|
||||||
|
|
||||||
|
@ApiModelProperty("试题号")
|
||||||
|
private Integer questionNum;
|
||||||
|
|
||||||
|
@ApiModelProperty("关联课件名称")
|
||||||
|
private String coursewareName;
|
||||||
|
|
||||||
|
@ApiModelProperty("关联课件id")
|
||||||
|
@JsonSerialize(using = ToStringSerializer.class)
|
||||||
|
private Long coursewareManagementId;
|
||||||
|
}
|
||||||
|
|
@ -2,12 +2,14 @@ package org.qinan.cedu.service;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import org.qinan.cedu.model.dto.PaperCoursewarePageQueryDTO;
|
||||||
import org.qinan.cedu.model.dto.PaperQuestionPageQueryDTO;
|
import org.qinan.cedu.model.dto.PaperQuestionPageQueryDTO;
|
||||||
import org.qinan.cedu.model.dto.QuestionTypeCountQueryDTO;
|
import org.qinan.cedu.model.dto.QuestionTypeCountQueryDTO;
|
||||||
import org.qinan.cedu.model.dto.QuestionUpdateDTO;
|
import org.qinan.cedu.model.dto.QuestionUpdateDTO;
|
||||||
import org.qinan.cedu.model.entity.QuestionDO;
|
import org.qinan.cedu.model.entity.QuestionDO;
|
||||||
import org.qinan.cedu.model.entity.QuestionOptionDO;
|
import org.qinan.cedu.model.entity.QuestionOptionDO;
|
||||||
import org.qinan.cedu.model.vo.PaperQuestionVO;
|
import org.qinan.cedu.model.vo.PaperQuestionVO;
|
||||||
|
import org.qinan.cedu.model.vo.QuestionCoursewareVO;
|
||||||
import org.qinan.cedu.model.vo.QuestionTypeCountVO;
|
import org.qinan.cedu.model.vo.QuestionTypeCountVO;
|
||||||
import org.qinan.cedu.model.vo.QuestionVO;
|
import org.qinan.cedu.model.vo.QuestionVO;
|
||||||
|
|
||||||
|
|
@ -72,7 +74,7 @@ public interface QuestionService extends IService<QuestionDO> {
|
||||||
* 新增试题(含选项)
|
* 新增试题(含选项)
|
||||||
*
|
*
|
||||||
* @param questionDO 试题
|
* @param questionDO 试题
|
||||||
* @param options 选项列表
|
* @param options 选项列表
|
||||||
* @return 是否成功
|
* @return 是否成功
|
||||||
*/
|
*/
|
||||||
boolean saveWithOptions(QuestionDO questionDO, List<QuestionOptionDO> options);
|
boolean saveWithOptions(QuestionDO questionDO, List<QuestionOptionDO> options);
|
||||||
|
|
@ -81,7 +83,7 @@ public interface QuestionService extends IService<QuestionDO> {
|
||||||
* 修改试题(选项全量覆盖)
|
* 修改试题(选项全量覆盖)
|
||||||
*
|
*
|
||||||
* @param questionDO 试题
|
* @param questionDO 试题
|
||||||
* @param options 选项列表
|
* @param options 选项列表
|
||||||
* @return 是否成功
|
* @return 是否成功
|
||||||
*/
|
*/
|
||||||
boolean updateWithOptions(QuestionDO questionDO, List<QuestionOptionDO> options);
|
boolean updateWithOptions(QuestionDO questionDO, List<QuestionOptionDO> options);
|
||||||
|
|
@ -93,4 +95,12 @@ public interface QuestionService extends IService<QuestionDO> {
|
||||||
* @return 是否成功
|
* @return 是否成功
|
||||||
*/
|
*/
|
||||||
boolean deleteById(Long id);
|
boolean deleteById(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param query query
|
||||||
|
* @return QuestionCoursewareVO
|
||||||
|
*/
|
||||||
|
IPage<QuestionCoursewareVO> pageCourseware(PaperCoursewarePageQueryDTO query);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,13 +13,11 @@ import org.qinan.cedu.convertor.QuestionConvertor;
|
||||||
import org.qinan.cedu.enums.DeleteEnum;
|
import org.qinan.cedu.enums.DeleteEnum;
|
||||||
import org.qinan.cedu.mapper.QuestionMapper;
|
import org.qinan.cedu.mapper.QuestionMapper;
|
||||||
import org.qinan.cedu.mapper.QuestionOptionMapper;
|
import org.qinan.cedu.mapper.QuestionOptionMapper;
|
||||||
import org.qinan.cedu.model.dto.PaperQuestionPageQueryDTO;
|
import org.qinan.cedu.model.dto.*;
|
||||||
import org.qinan.cedu.model.dto.QuestionOptionUpdateDTO;
|
|
||||||
import org.qinan.cedu.model.dto.QuestionTypeCountQueryDTO;
|
|
||||||
import org.qinan.cedu.model.dto.QuestionUpdateDTO;
|
|
||||||
import org.qinan.cedu.model.entity.QuestionDO;
|
import org.qinan.cedu.model.entity.QuestionDO;
|
||||||
import org.qinan.cedu.model.entity.QuestionOptionDO;
|
import org.qinan.cedu.model.entity.QuestionOptionDO;
|
||||||
import org.qinan.cedu.model.vo.PaperQuestionVO;
|
import org.qinan.cedu.model.vo.PaperQuestionVO;
|
||||||
|
import org.qinan.cedu.model.vo.QuestionCoursewareVO;
|
||||||
import org.qinan.cedu.model.vo.QuestionTypeCountVO;
|
import org.qinan.cedu.model.vo.QuestionTypeCountVO;
|
||||||
import org.qinan.cedu.model.vo.QuestionVO;
|
import org.qinan.cedu.model.vo.QuestionVO;
|
||||||
import org.qinan.cedu.service.QuestionService;
|
import org.qinan.cedu.service.QuestionService;
|
||||||
|
|
@ -229,6 +227,11 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, QuestionDO>
|
||||||
return deleted;
|
return deleted;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IPage<QuestionCoursewareVO> pageCourseware(PaperCoursewarePageQueryDTO query) {
|
||||||
|
return this.baseMapper.pageCourseware(new Page<>(query.getCurrent(), query.getSize()), query);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 保存试题选项(重置id并绑定试题id、统一填充时间后批量插入)
|
* 保存试题选项(重置id并绑定试题id、统一填充时间后批量插入)
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -90,4 +90,28 @@
|
||||||
AND q.delete_enum = 'false'
|
AND q.delete_enum = 'false'
|
||||||
ORDER BY pqr.question_num ASC, pqr.id ASC
|
ORDER BY pqr.question_num ASC, pqr.id ASC
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="pageCourseware" resultType="org.qinan.cedu.model.vo.QuestionCoursewareVO">
|
||||||
|
SELECT q.id
|
||||||
|
, q.title
|
||||||
|
, q.score
|
||||||
|
, q.answer_question_option_ids
|
||||||
|
, q.analysis
|
||||||
|
, q.question_type
|
||||||
|
, q.tag_type
|
||||||
|
, q.answer
|
||||||
|
, cm.courseware_name
|
||||||
|
, q.courseware_management_id
|
||||||
|
FROM question q
|
||||||
|
JOIN courseware_management cm ON cm.id = q.courseware_management_id
|
||||||
|
WHERE cm.id = #{qry.coursewareManagementId}
|
||||||
|
AND q.delete_enum = 'false'
|
||||||
|
<if test="qry.title != null and qry.title != ''">
|
||||||
|
AND q.title LIKE CONCAT('%', #{qry.title}, '%')
|
||||||
|
</if>
|
||||||
|
<if test="qry.questionType != null and qry.questionType != ''">
|
||||||
|
AND q.question_type = #{qry.questionType}
|
||||||
|
</if>
|
||||||
|
ORDER BY q.id DESC
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue