test
parent
77b6b97804
commit
b419b29b28
|
|
@ -4,13 +4,17 @@ import io.swagger.annotations.Api;
|
|||
import io.swagger.annotations.ApiOperation;
|
||||
import io.swagger.annotations.ApiParam;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.qinan.cedu.model.dto.QuestionTypeCountQueryDTO;
|
||||
import org.qinan.cedu.model.dto.QuestionUpdateDTO;
|
||||
import org.qinan.cedu.model.vo.QuestionTypeCountVO;
|
||||
import org.qinan.cedu.model.vo.QuestionVO;
|
||||
import org.qinan.cedu.service.QuestionService;
|
||||
import org.qinan.safetyeval.client.dto.SingleResponse;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 试题管理
|
||||
*/
|
||||
|
|
@ -36,4 +40,13 @@ public class QuestionController {
|
|||
return SingleResponse.success(questionVO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 按题型统计试题数量(按关联课件过滤)
|
||||
*/
|
||||
@ApiOperation("根据课件按题型统计试题数量")
|
||||
@PostMapping("/countType")
|
||||
public SingleResponse<List<QuestionTypeCountVO>> countType(@Validated @RequestBody QuestionTypeCountQueryDTO dto) {
|
||||
return SingleResponse.success(questionService.countQuestionType(dto));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,10 +6,13 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.qinan.cedu.model.dto.PaperQuestionPageQueryDTO;
|
||||
import org.qinan.cedu.model.dto.QuestionTypeCountQueryDTO;
|
||||
import org.qinan.cedu.model.entity.QuestionDO;
|
||||
import org.qinan.cedu.model.vo.PaperQuestionVO;
|
||||
import org.qinan.cedu.model.vo.QuestionTypeCountVO;
|
||||
import org.qinan.cedu.model.vo.QuestionVO;
|
||||
|
||||
import java.util.List;
|
||||
/**
|
||||
* 试题 Mapper
|
||||
*/
|
||||
|
|
@ -32,4 +35,12 @@ public interface QuestionMapper extends BaseMapper<QuestionDO> {
|
|||
* @return 习题详情
|
||||
*/
|
||||
QuestionVO findQuestion(@Param("questionId") Long questionId);
|
||||
|
||||
/**
|
||||
* 按题型统计试题数量(按关联课件过滤,一条SQL聚合)
|
||||
*
|
||||
* @param dto 查询条件(关联课件管理id集合)
|
||||
* @return 各题型的试题数量
|
||||
*/
|
||||
List<QuestionTypeCountVO> countQuestionType(@Param("dto") QuestionTypeCountQueryDTO dto);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,22 @@
|
|||
package org.qinan.cedu.model.dto;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.Size;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 题型数量统计查询请求
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(value = "QuestionTypeCountQueryDTO", description = "题型数量统计查询请求")
|
||||
public class QuestionTypeCountQueryDTO {
|
||||
|
||||
@ApiModelProperty(value = "关联课件管理id集合", required = true)
|
||||
@NotEmpty(message = "关联课件不能为空")
|
||||
@Size(min = 1, max = 200)
|
||||
private List<Long> coursewareManagementIdList;
|
||||
}
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
package org.qinan.cedu.model.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import org.qinan.cedu.enums.QuestionTypeEnum;
|
||||
|
||||
/**
|
||||
* 题型数量统计结果
|
||||
*/
|
||||
@Data
|
||||
public class QuestionTypeCountVO {
|
||||
|
||||
@ApiModelProperty(QuestionTypeEnum.REMARKS)
|
||||
private String questionType;
|
||||
|
||||
@ApiModelProperty("试题数量")
|
||||
private Long count;
|
||||
}
|
||||
|
|
@ -3,10 +3,12 @@ package org.qinan.cedu.service;
|
|||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.qinan.cedu.model.dto.PaperQuestionPageQueryDTO;
|
||||
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.QuestionOptionDO;
|
||||
import org.qinan.cedu.model.vo.PaperQuestionVO;
|
||||
import org.qinan.cedu.model.vo.QuestionTypeCountVO;
|
||||
import org.qinan.cedu.model.vo.QuestionVO;
|
||||
|
||||
import java.util.List;
|
||||
|
|
@ -31,6 +33,14 @@ public interface QuestionService extends IService<QuestionDO> {
|
|||
*/
|
||||
QuestionVO find(Long questionId);
|
||||
|
||||
/**
|
||||
* 按题型统计试题数量(按关联课件过滤,一条SQL聚合)
|
||||
*
|
||||
* @param dto 查询条件(关联课件管理id集合)
|
||||
* @return 各题型的试题数量
|
||||
*/
|
||||
List<QuestionTypeCountVO> countQuestionType(QuestionTypeCountQueryDTO dto);
|
||||
|
||||
/**
|
||||
* 试卷试题分页查询(XML关联查询,含课件名称)
|
||||
*
|
||||
|
|
|
|||
|
|
@ -12,10 +12,12 @@ import org.qinan.cedu.enums.DeleteEnum;
|
|||
import org.qinan.cedu.mapper.QuestionMapper;
|
||||
import org.qinan.cedu.model.dto.PaperQuestionPageQueryDTO;
|
||||
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.QuestionOptionDO;
|
||||
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.service.QuestionOptionService;
|
||||
import org.qinan.cedu.service.QuestionService;
|
||||
|
|
@ -70,6 +72,11 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, QuestionDO>
|
|||
return questionVO;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<QuestionTypeCountVO> countQuestionType(QuestionTypeCountQueryDTO dto) {
|
||||
return this.baseMapper.countQuestionType(dto);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateQuestion(QuestionUpdateDTO dto) {
|
||||
|
|
|
|||
|
|
@ -31,4 +31,15 @@
|
|||
WHERE q.id = #{questionId}
|
||||
AND q.delete_enum = 'false'
|
||||
</select>
|
||||
|
||||
<select id="countQuestionType" resultType="org.qinan.cedu.model.vo.QuestionTypeCountVO">
|
||||
SELECT q.question_type AS questionType, COUNT(*) AS `count`
|
||||
FROM question q
|
||||
WHERE q.courseware_management_id IN
|
||||
<foreach collection="dto.coursewareManagementIdList" item="coursewareManagementId" open="(" separator="," close=")">
|
||||
#{coursewareManagementId}
|
||||
</foreach>
|
||||
AND q.delete_enum = 'false'
|
||||
GROUP BY q.question_type
|
||||
</select>
|
||||
</mapper>
|
||||
|
|
|
|||
Loading…
Reference in New Issue