dev-tmp1
luotaiqian 2026-08-19 18:14:19 +08:00
parent 77b6b97804
commit b419b29b28
7 changed files with 92 additions and 0 deletions

View File

@ -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));
}
}

View File

@ -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);
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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
*

View File

@ -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) {

View File

@ -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>