ec4bee21 康伟

kangwei:在线考试:试题、试卷功能

3、试题管理的提交人都是空的
4、试题新增后增加审批过程,增加审批状态字段,新提交的试题都是待审批状态,集团审批后的试题才能在考试中新增(审批按钮配置按钮权限)
5、增加随机生成试卷功能(类似于科目一考试)
1 个父辈 11da9057
......@@ -18,6 +18,7 @@ import com.skua.core.util.push.IPushService;
import com.skua.core.util.push.MessageEntity;
import com.skua.core.util.push.PushMessageFactory;
import com.skua.modules.edu.entity.Paper;
import com.skua.modules.edu.entity.Question;
import com.skua.modules.edu.service.IPaperService;
import java.util.Date;
import java.util.stream.Collectors;
......@@ -25,6 +26,8 @@ import java.util.stream.Collectors;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.skua.modules.edu.service.IQuestionService;
import com.skua.modules.edu.vo.PaperRandomVO;
import com.skua.modules.edu.vo.PaperVO;
import com.skua.modules.guest.util.DateUtil;
import com.skua.modules.system.entity.SysUser;
......@@ -65,18 +68,10 @@ public class PaperController {
@Autowired
private IPaperService paperService;
/**
* <pre>
* 分页列表查询
* </pre>
* @param paper
* @param pageNo
* @param pageSize
* @param req
* @return
* @author 开发者姓名, 开发时间
* @Description: TODO(这里描述这个方法的需求变更情况)
*/
@Autowired
private IQuestionService questionService;
@AutoLog(value = "在线考试-试卷-分页列表查询")
@ApiOperation(value="在线考试-试卷-分页列表查询", notes="在线考试-试卷-分页列表查询")
@GetMapping(value = "/list")
......@@ -93,15 +88,24 @@ public class PaperController {
return result;
}
/**
* <pre>
* 添加
* </pre>
* @param paperVO
* @return
* @author 开发者姓名, 开发时间
* @Description: TODO(这里描述这个方法的需求变更情况)
*/
@AutoLog(value = "在线考试-随机组卷试题")
@ApiOperation(value="在线考试-随机组卷试题", notes="在线考试-随机组卷试题")
@PostMapping(value = "/randomQuestion")
public Result<List<Question>> randomQuestion(@RequestBody PaperRandomVO paperRandomVO) throws Exception{
Result<List<Question>> result = new Result<>();
try {
List<Question> dataList = questionService.randomQuestion(paperRandomVO);
result.setResult( dataList );
result.success("操作成功!");
} catch (Exception e) {
log.error(e.getMessage(),e);
result.error500("操作失败");
}
return result;
}
@AutoLog(value = "在线考试-试卷-添加")
@ApiOperation(value="在线考试-试卷-添加", notes="在线考试-试卷-添加")
@PostMapping(value = "/add")
......@@ -116,15 +120,7 @@ public class PaperController {
}
return result;
}
/**
* <pre>
* 编辑
* </pre>
* @param paperVO
* @return
* @author 开发者姓名, 开发时间
* @Description: TODO(这里描述这个方法的需求变更情况)
*/
@AutoLog(value = "在线考试-试卷-编辑")
@ApiOperation(value="在线考试-试卷-编辑", notes="在线考试-试卷-编辑")
@PutMapping(value = "/edit")
......
......@@ -27,6 +27,7 @@ import com.skua.modules.system.service.ISysDepartService;
import com.skua.tool.util.JSUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
......@@ -65,15 +66,39 @@ public class QuestionController {
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
Result<IPage<Question>> result = new Result<IPage<Question>>();
//QueryWrapper<Question> queryWrapper = QueryGenerator.initQueryWrapper(question, req.getParameterMap());
QueryWrapper<Question> queryWrapper = QueryGenerator.initQueryWrapper(question, req.getParameterMap());
Page<Question> page = new Page<Question>(pageNo, pageSize);
//IPage<Question> pageList = questionService.page(page, queryWrapper);
IPage<Question> pageList = questionService.queryPageList(page, question);
queryWrapper.orderByDesc("create_time");
IPage<Question> pageList = questionService.page(page, queryWrapper);
//IPage<Question> pageList = questionService.queryPageList(page, question);
result.setSuccess(true);
result.setResult(pageList);
return result;
}
@AutoLog(value = "在线考试-试题-审批列表")
@ApiOperation(value="在线考试-试题-审批列表", notes="在线考试-试题-审批列表")
@GetMapping(value = "/handleList")
public Result<IPage<Question>> handleList(Question question,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
Result<IPage<Question>> result = new Result<IPage<Question>>();
QueryWrapper<Question> queryWrapper = QueryGenerator.initQueryWrapper(question, req.getParameterMap());
Page<Question> page = new Page<Question>(pageNo, pageSize);
//queryWrapper.gt("audit_status","0");//>0
//queryWrapper.lt("audit_status","3");// < 3
if(StringUtils.isEmpty(question.getAuditStatus())){
queryWrapper.eq("audit_status","1");
}
queryWrapper.orderByDesc("create_time");
IPage<Question> pageList = questionService.page(page, queryWrapper);
//IPage<Question> pageList = questionService.queryPageList(page, question);
result.setSuccess(true);
result.setResult(pageList);
return result;
}
@AutoLog(value = "在线考试-题库-题库下试题列表")
@ApiOperation(value="在线考试-题库下试题列表", notes="在线考试-题库下试题列表")
@GetMapping(value = "/questionList/{dbId}")
......@@ -250,6 +275,9 @@ public class QuestionController {
return result;
}
@RequestMapping(value = "/exportXlsTemplate")
public ModelAndView exportXls(HttpServletRequest request, HttpServletResponse response) {
// Step.1 组装查询条件
......
package com.skua.modules.edu.mapper;
import java.util.Collection;
import java.util.List;
import com.baomidou.mybatisplus.core.metadata.IPage;
......@@ -61,4 +62,7 @@ public interface QuestionMapper extends BaseMapper<Question> {
* @return
*/
public int batchSendAudit(@Param("id")String ids, @Param("auditStatus")String auditStatus);
/**随机试题集合*/
List<Question> randomQuestion(@Param("dbId")String dbId, @Param("questionType")String questionType, @Param("qNums")String qNums, @Param("qScore")String qScore);
}
......
......@@ -20,6 +20,8 @@
<result property="departName" column="depart_name" />
<result property="userName" column="user_name" />
<result property="score" column="score" />
</resultMap>
<sql id="selectEduQuestionVo">
......@@ -36,12 +38,23 @@
<if test="param.questionAnswer != null and param.questionAnswer != ''"> and t.question_answer = #{param.questionAnswer}</if>
<if test="param.questionData != null and param.questionData != ''"> and t.question_data = #{param.questionData}</if>
<if test="param.analyzes != null and param.analyzes != ''"> and t.analyzes = #{param.analyzes}</if>
<if test="param.createDept != null and param.createDept != ''"> and t.create_dept = #{param.createDept}</if>
<if test="param.auditStatus != null and param.auditStatus != ''"> and t.audit_status = #{param.auditStatus}</if>
<if test="param.delFlag != null "> and t.del_flag = #{param.delFlag}</if>
</where>
order by create_time desc
</select>
<!-- 随机试题集合-->
<select id="randomQuestion" resultMap="EduQuestionResult">
select t.* , #{qScore} score from edu_question t
<where> t.audit_status = 3
<if test="dbId!= null and dbId != ''"> and t.question_db_id = #{dbId}</if>
<if test="questionType != null and questionType != ''"> and t.question_type = #{questionType}</if>
</where>
order by rand() limit ${qNums}
</select>
<select id="selectQuestionList" parameterType="com.skua.modules.edu.entity.Question" resultMap="EduQuestionResult">
select d.depart_name ,u.realname 'user_name' , t.* from edu_question t
......
......@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.skua.modules.edu.entity.Question;
import com.baomidou.mybatisplus.extension.service.IService;
import com.skua.modules.edu.vo.PaperRandomVO;
import com.skua.modules.edu.vo.QuestionExcel;
import java.util.List;
......@@ -80,4 +81,11 @@ public interface IQuestionService extends IService<Question> {
* @return
*/
String auditBatchQuestion(String ids, String approveState, String approveMessage);
/***
* 随机组卷的试题集合
* @param paperRandomVO
* @return
*/
List<Question> randomQuestion(PaperRandomVO paperRandomVO);
}
......
......@@ -13,6 +13,7 @@ import com.skua.modules.edu.mapper.QuestionMapper;
import com.skua.modules.edu.mapper.QuestionOptionMapper;
import com.skua.modules.edu.service.IQuestionOptionService;
import com.skua.modules.edu.service.IQuestionService;
import com.skua.modules.edu.vo.PaperRandomVO;
import com.skua.modules.edu.vo.QuestionExcel;
import com.skua.modules.erp.entity.ApproveRecord;
import com.skua.modules.erp.mapper.ApproveRecordMapper;
......@@ -185,6 +186,28 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
return "0" ;
}
/***
* 随机组卷的试题集合
* @param paperRandomVO
* @return
*/
public List<Question> randomQuestion(PaperRandomVO paperRandomVO){
List<Question> dataList = new ArrayList<>();
//单选题
if(StringUtils.isNotEmpty(paperRandomVO.getSingleNums())){
dataList.addAll( this.baseMapper.randomQuestion(paperRandomVO.getDbId(),"1",paperRandomVO.getSingleNums(),paperRandomVO.getSingleScore()) );
}
// 多选题
if(StringUtils.isNotEmpty(paperRandomVO.getMultipleNums())){
dataList.addAll( this.baseMapper.randomQuestion(paperRandomVO.getDbId(),"2",paperRandomVO.getMultipleNums(),paperRandomVO.getMultipleScore()) );
}
// 判断题
if(StringUtils.isNotEmpty(paperRandomVO.getJudgeNums())){
dataList.addAll( this.baseMapper.randomQuestion(paperRandomVO.getDbId(),"3",paperRandomVO.getJudgeNums(),paperRandomVO.getJudgeScore()) );
}
return dataList;
}
/***
* 批量送审
......
package com.skua.modules.edu.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @auther kangwei
* @create 2025-02-25-17:18
*/
@Data
@ApiModel(value="随机组卷对象", description="随机组卷对象")
public class PaperRandomVO {
@ApiModelProperty(value = "题库编号")
private String dbId;
@ApiModelProperty(value = "单选-试题数量")
private String singleNums;
@ApiModelProperty(value = "单选-试题分值")
private String singleScore;
@ApiModelProperty(value = "多选-试题数量")
private String multipleNums;
@ApiModelProperty(value = "多选-试题分值")
private String multipleScore;
@ApiModelProperty(value = "判断-试题数量")
private String judgeNums;
@ApiModelProperty(value = "判断-试题分值")
private String judgeScore;
}
package com.skua.modules.edu.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.jeecgframework.poi.excel.annotation.Excel;
/**
* @auther kangwei
* @create 2025-02-25-17:18
*/
@Data
@ApiModel(value="随机组卷--章节对象", description="随机组卷--章节")
public class PaperSectionVO {
@ApiModelProperty(value = "题库编号")
private String dbId;
@ApiModelProperty(value = "试题类型:1 单选、2多选、3判断")
private String questionType;
//@ApiModelProperty(value = "试题难易程度")
//private String qLevel;
@ApiModelProperty(value = "试题数量")
private String qNums;
@ApiModelProperty(value = "试题分值")
private String qScore;
}
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!