Commit 3674ae68 by zhengyunfei

答题记录详情列表修改

新增审批阅卷列表接口
parent 556759aa
...@@ -43,7 +43,7 @@ public class DbTestPaperRecordController extends BaseController { ...@@ -43,7 +43,7 @@ public class DbTestPaperRecordController extends BaseController {
private final IDbTestPaperRecordService iDbTestPaperRecordService; private final IDbTestPaperRecordService iDbTestPaperRecordService;
/** /**
* 【PC】 审批阅卷阶段列表 * 【PC】 审批阅卷班级列表
*/ */
@GetMapping("/getPhaseList") @GetMapping("/getPhaseList")
public TableDataInfo<DbTestPaperVo> getPhaseList(DbTestPaperBo bo, PageQuery pageQuery) { public TableDataInfo<DbTestPaperVo> getPhaseList(DbTestPaperBo bo, PageQuery pageQuery) {
......
...@@ -42,7 +42,7 @@ public class DbTestPaperBo extends BaseEntity { ...@@ -42,7 +42,7 @@ public class DbTestPaperBo extends BaseEntity {
/** /**
* 阶段id * 阶段id
*/ */
@NotNull(message = "阶段id不能为空", groups = {AddGroup.class, EditGroup.class}) // @NotNull(message = "阶段id不能为空", groups = {AddGroup.class, EditGroup.class})
private Long phaseId; private Long phaseId;
/** /**
...@@ -54,9 +54,9 @@ public class DbTestPaperBo extends BaseEntity { ...@@ -54,9 +54,9 @@ public class DbTestPaperBo extends BaseEntity {
/** /**
* 强度:1基础,2中等,3提高(多个中间用逗号分割) * 强度:1基础,2中等,3提高(多个中间用逗号分割)
*/ */
@NotBlank(message = "强度不能为空", groups = {AddGroup.class, EditGroup.class}) // @NotBlank(message = "强度不能为空", groups = {AddGroup.class, EditGroup.class})
private String intensity; private String intensity;
private List<String> intensitys; private List<Integer> intensitys;
/** /**
* 总分:100,150 * 总分:100,150
...@@ -75,5 +75,5 @@ public class DbTestPaperBo extends BaseEntity { ...@@ -75,5 +75,5 @@ public class DbTestPaperBo extends BaseEntity {
@NotNull(message = "状态:0正常,1删除不能为空", groups = { EditGroup.class }) @NotNull(message = "状态:0正常,1删除不能为空", groups = { EditGroup.class })
private Integer status; private Integer status;
private String nickName;
} }
...@@ -94,7 +94,7 @@ public class DbTestPaperRecordDetailVo { ...@@ -94,7 +94,7 @@ public class DbTestPaperRecordDetailVo {
private String righAnswersPic; private String righAnswersPic;
@TableField(exist = false) @TableField(exist = false)
private List<DbQuestionBankAnswerTestPaperVo> answers; private List<DbQuestionBankAnswerTestPaperVo> options;
@TableField(exist = false) @TableField(exist = false)
private List<GoodsAnswersVo> goodsAnswers; private List<GoodsAnswersVo> goodsAnswers;
......
...@@ -72,5 +72,13 @@ public class DbTestPaperVo { ...@@ -72,5 +72,13 @@ public class DbTestPaperVo {
@ExcelProperty(value = "状态:0正常,1删除") @ExcelProperty(value = "状态:0正常,1删除")
private Integer status; private Integer status;
/**
* 阶段班级
*/
private String phaseClass;
/**
* 用户昵称
*/
private String nickName;
} }
...@@ -11,5 +11,5 @@ public class GoodsAnswersVo { ...@@ -11,5 +11,5 @@ public class GoodsAnswersVo {
private String goodsAnswer; private String goodsAnswer;
private String userName; private String nickName;
} }
...@@ -22,7 +22,12 @@ public interface DbTestPaperRecordMapper extends BaseMapperPlus<DbTestPaperRecor ...@@ -22,7 +22,12 @@ public interface DbTestPaperRecordMapper extends BaseMapperPlus<DbTestPaperRecor
Page<DbTestPaperRecordVo> getTestPaperlist(Page<Object> build, @Param("bo") DbTestPaperRecordBo bo); Page<DbTestPaperRecordVo> getTestPaperlist(Page<Object> build, @Param("bo") DbTestPaperRecordBo bo);
/** /**
* pd段 审批阅卷阶段列表 * pc段 审批阅卷班级列表
*/ */
Page<DbTestPaperVo> getPhaseList(Page<Object> build, @Param("bo") DbTestPaperBo bo); Page<DbTestPaperVo> getPhaseList(Page<Object> build, @Param("bo") DbTestPaperBo bo);
/**
* 审批阅卷学生列表
*/
Page<DbTestPaperVo> getClassList(Page<Object> build, @Param("bo") DbTestPaperBo bo);
} }
...@@ -61,7 +61,7 @@ public interface IDbTestPaperRecordService { ...@@ -61,7 +61,7 @@ public interface IDbTestPaperRecordService {
DbTestPaperRecord getOne(Wrapper<DbTestPaperRecord> wrapper); DbTestPaperRecord getOne(Wrapper<DbTestPaperRecord> wrapper);
/** /**
* 【PC】 审批阅卷阶段列表 * 【PC】 审批阅卷班级列表
*/ */
TableDataInfo<DbTestPaperVo> getPhaseList(DbTestPaperBo bo, PageQuery pageQuery); TableDataInfo<DbTestPaperVo> getPhaseList(DbTestPaperBo bo, PageQuery pageQuery);
......
...@@ -44,7 +44,6 @@ public class DbTestPaperRecordDetailServiceImpl implements IDbTestPaperRecordDet ...@@ -44,7 +44,6 @@ public class DbTestPaperRecordDetailServiceImpl implements IDbTestPaperRecordDet
*/ */
@Override @Override
public TableDataInfo<DbTestPaperRecordDetailVo> queryPageList(DbTestPaperRecordDetailBo bo, PageQuery pageQuery) { public TableDataInfo<DbTestPaperRecordDetailVo> queryPageList(DbTestPaperRecordDetailBo bo, PageQuery pageQuery) {
Page<DbTestPaperRecordDetailVo> result = baseMapper.queryPageList(pageQuery.build(), bo); Page<DbTestPaperRecordDetailVo> result = baseMapper.queryPageList(pageQuery.build(), bo);
return TableDataInfo.build(result); return TableDataInfo.build(result);
} }
......
...@@ -137,7 +137,7 @@ public class DbTestPaperRecordServiceImpl implements IDbTestPaperRecordService { ...@@ -137,7 +137,7 @@ public class DbTestPaperRecordServiceImpl implements IDbTestPaperRecordService {
} }
/** /**
* 审批阅卷阶段列表【PC】 * 审批阅卷班级列表【PC】
*/ */
@Override @Override
public TableDataInfo<DbTestPaperVo> getPhaseList(DbTestPaperBo bo, PageQuery pageQuery) { public TableDataInfo<DbTestPaperVo> getPhaseList(DbTestPaperBo bo, PageQuery pageQuery) {
...@@ -150,6 +150,7 @@ public class DbTestPaperRecordServiceImpl implements IDbTestPaperRecordService { ...@@ -150,6 +150,7 @@ public class DbTestPaperRecordServiceImpl implements IDbTestPaperRecordService {
*/ */
@Override @Override
public TableDataInfo<DbTestPaperVo> getClassList(DbTestPaperBo bo, PageQuery pageQuery) { public TableDataInfo<DbTestPaperVo> getClassList(DbTestPaperBo bo, PageQuery pageQuery) {
return null; Page<DbTestPaperVo> result = baseMapper.getClassList(pageQuery.build(), bo);
return TableDataInfo.build(result);
} }
} }
...@@ -2,6 +2,7 @@ package com.ruoyi.school.paper.service.impl; ...@@ -2,6 +2,7 @@ package com.ruoyi.school.paper.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import com.baomidou.dynamic.datasource.annotation.Slave;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
...@@ -24,6 +25,7 @@ import com.ruoyi.school.paper.service.IDbTestPaperService; ...@@ -24,6 +25,7 @@ import com.ruoyi.school.paper.service.IDbTestPaperService;
import com.ruoyi.system.service.ISysDeptService; import com.ruoyi.system.service.ISysDeptService;
import com.ruoyi.system.service.ISysUserService; import com.ruoyi.system.service.ISysUserService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.ArrayUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
...@@ -37,6 +39,7 @@ import java.util.stream.Collectors; ...@@ -37,6 +39,7 @@ import java.util.stream.Collectors;
* @author zyf * @author zyf
* @date 2023-07-20 * @date 2023-07-20
*/ */
@Slf4j
@RequiredArgsConstructor @RequiredArgsConstructor
@Service @Service
public class DbTestPaperServiceImpl implements IDbTestPaperService { public class DbTestPaperServiceImpl implements IDbTestPaperService {
...@@ -151,10 +154,12 @@ public class DbTestPaperServiceImpl implements IDbTestPaperService { ...@@ -151,10 +154,12 @@ public class DbTestPaperServiceImpl implements IDbTestPaperService {
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Boolean randomGeneration(DbTestPaperBo bo) { public Boolean randomGeneration(DbTestPaperBo bo) {
DbTestPaper add = BeanUtil.toBean(bo, DbTestPaper.class); DbTestPaper add = BeanUtil.toBean(bo, DbTestPaper.class);
add.setIntensity(String.join(",", bo.getIntensitys())); List<String> stringList = bo.getIntensitys().stream().map(String::valueOf).collect(Collectors.toList());
add.setIntensity(String.join(",", stringList));
// 根据班级id获取阶段信息 // 根据班级id获取阶段信息
SysDept phase = deptService.getParent(bo.getClassId()); SysDept phase = deptService.getParent(bo.getClassId());
add.setPhaseId(phase.getDeptId()); add.setPhaseId(phase.getDeptId());
bo.setPhaseId(phase.getDeptId());
baseMapper.insert(add); baseMapper.insert(add);
// 从redis中获取所有题目 // 从redis中获取所有题目
List<DbQuestionBank> dbQuestionBanks = JsonUtils.parseArray(RedisUtils.getCacheObject(DEFAULT_QUESTIOBN_BANK_KEY), DbQuestionBank.class); List<DbQuestionBank> dbQuestionBanks = JsonUtils.parseArray(RedisUtils.getCacheObject(DEFAULT_QUESTIOBN_BANK_KEY), DbQuestionBank.class);
...@@ -162,15 +167,15 @@ public class DbTestPaperServiceImpl implements IDbTestPaperService { ...@@ -162,15 +167,15 @@ public class DbTestPaperServiceImpl implements IDbTestPaperService {
Map<Integer, List<DbQuestionBank>> collect = dbQuestionBanks.stream() Map<Integer, List<DbQuestionBank>> collect = dbQuestionBanks.stream()
.filter(bank -> bank.getCategoryId().equals(bo.getCategoryId()) .filter(bank -> bank.getCategoryId().equals(bo.getCategoryId())
&& bank.getPhaseId().equals(bo.getPhaseId()) && bank.getPhaseId().equals(bo.getPhaseId())
&& ArrayUtils.contains(bo.getIntensity().split(","), bank.getIntensity()) && bo.getIntensitys().contains(bank.getIntensity())
).collect(Collectors.groupingBy(DbQuestionBank::getSpecies)); ).collect(Collectors.groupingBy(DbQuestionBank::getSpecies));
// 根据习题种类分组 // 根据习题种类分组
// 选择题 // 选择题
List<DbQuestionBank> select = collect.get("2"); List<DbQuestionBank> select = collect.get(2);
// 填空题 // 填空题
List<DbQuestionBank> gapFilling = collect.get("1"); List<DbQuestionBank> gapFilling = collect.get(1);
// 解答题 // 解答题
List<DbQuestionBank> resolve = collect.get("3"); List<DbQuestionBank> resolve = collect.get(3);
// 随机筛选题目 // 随机筛选题目
List<DbQuestionBankTestPaper> papers = new ArrayList<>(); List<DbQuestionBankTestPaper> papers = new ArrayList<>();
List<DbQuestionBankTestPaper> selectList = null; List<DbQuestionBankTestPaper> selectList = null;
...@@ -191,7 +196,7 @@ public class DbTestPaperServiceImpl implements IDbTestPaperService { ...@@ -191,7 +196,7 @@ public class DbTestPaperServiceImpl implements IDbTestPaperService {
} }
questionBankTestPaperMapper.insertBatch(papers); questionBankTestPaperMapper.insertBatch(papers);
this.saveSelectListOptions(add.getId()); this.saveSelectListOptions(add.getId());
return null; return true;
} }
/** /**
...@@ -226,7 +231,7 @@ public class DbTestPaperServiceImpl implements IDbTestPaperService { ...@@ -226,7 +231,7 @@ public class DbTestPaperServiceImpl implements IDbTestPaperService {
* @return * @return
*/ */
private List<DbQuestionBankTestPaper> generatePaper(List<DbQuestionBank> list, int num, Integer totalPoints, Long paperId) { private List<DbQuestionBankTestPaper> generatePaper(List<DbQuestionBank> list, int num, Integer totalPoints, Long paperId) {
System.out.println("系统正在随机抽取题目生成试卷,这可能需要一段时间,请耐心等候···"); log.info("系统正在随机抽取题目生成试卷,这可能需要一段时间,请耐心等候···");
HashSet<DbQuestionBankTestPaper> paper = new HashSet<>();//用来存储题目,set集合去重复 HashSet<DbQuestionBankTestPaper> paper = new HashSet<>();//用来存储题目,set集合去重复
//这个while循环用来生成不重复的一套题目 //这个while循环用来生成不重复的一套题目
while (paper.size() != num) { while (paper.size() != num) {
......
...@@ -21,43 +21,52 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -21,43 +21,52 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<resultMap type="com.ruoyi.school.paper.domain.vo.DbTestPaperRecordDetailVo" id="TestPaperRecordDetailResult"> <resultMap type="com.ruoyi.school.paper.domain.vo.DbTestPaperRecordDetailVo" id="TestPaperRecordDetailResult">
<result property="topic" column="topic"/> <result property="topic" column="topic"/>
<result property="questionBankId" column="question_bank_id"/>
<result property="answer" column="answer"/> <result property="answer" column="answer"/>
<result property="answerPic" column="answers_pic"/> <result property="answerPic" column="answers_pic"/>
<result property="score" column="score"/> <result property="score" column="score"/>
<result property="correctAnswer" column="correctAnswer"/> <result property="correctAnswer" column="correctAnswer"/>
<result property="righAnswersPic" column="right_answers_pic"/> <result property="righAnswersPic" column="right_answers_pic"/>
<collection property="answers" ofType="com.ruoyi.school.paper.domain.vo.DbQuestionBankAnswerTestPaperVo"> <collection property="options" javaType="java.util.List" column="question_bank_id" select="getOptionList" ofType="com.ruoyi.school.paper.domain.vo.DbQuestionBankAnswerTestPaperVo">
<result property="optionTag" column="option_tag"/> <result property="optionTag" column="option_tag"/>
<result property="optionContent" column="option_content"/> <result property="optionContent" column="option_content"/>
</collection> </collection>
<collection property="goodsAnswers" ofType="com.ruoyi.school.paper.domain.vo.GoodsAnswersVo"> <collection property="goodsAnswers" javaType="java.util.List" column="question_bank_id" select="getGoodsAnserList" ofType="com.ruoyi.school.paper.domain.vo.GoodsAnswersVo">
<result property="goodsAnswer" column="goods_answer"/> <result property="goodsAnswer" column="goods_answer"/>
<result property="userName" column="user_name"/> <result property="nickName" column="nick_name"/>
</collection> </collection>
</resultMap> </resultMap>
<select id="queryPageList" resultMap="TestPaperRecordDetailResult"> <select id="queryPageList" resultMap="TestPaperRecordDetailResult">
SELECT dqbatp.topic, SELECT
dqbatp.right_answers as correctAnswer, dqbatp.topic,
dqbatp.right_answers_pic, dtprd.question_bank_id,
dtprd.answer, dqbatp.right_answers AS correctAnswer,
dtprd.answers_pic, dqbatp.right_answers_pic,
dtprd.score, dtprd.answer,
d.option_tag, dtprd.answers_pic,
d.option_content, dtprd.score
m.answer goods_answer, FROM
m.user_name db_test_paper_record_detail dtprd
FROM db_test_paper_record_detail dtprd LEFT JOIN db_question_bank_test_paper dqbatp ON dtprd.question_bank_id = dqbatp.id
LEFT JOIN db_question_bank_test_paper dqbatp ON dtprd.question_bank_id = dqbatp.id WHERE
LEFT JOIN db_question_bank_answer_test_paper d ON dtprd.question_bank_id = d.question_bank_id dtprd.record_id = #{bo.recordId}
LEFT JOIN (SELECT a.answer, </select>
su.user_name,
a.question_bank_id <select id="getOptionList" resultType="com.ruoyi.school.paper.domain.vo.DbQuestionBankAnswerTestPaperVo">
FROM db_test_paper_record_detail a select option_tag, option_content from db_question_bank_answer_test_paper where question_bank_id = #{question_bank_id}
LEFT JOIN db_test_paper_record dtpr ON a.record_id = dtpr.id </select>
LEFT JOIN sys_user su ON dtpr.user_id = su.user_id <select id="getGoodsAnserList" resultType="com.ruoyi.school.paper.domain.vo.GoodsAnswersVo">
WHERE a.question_bank_id = #{bo.questionBankId,jdbcType=BIGINT} SELECT
AND good = 0) m ON m.question_bank_id = dqbatp.id a.answer as goods_answer,
WHERE dtprd.record_id = #{bo.recordId,jdbcType=BIGINT} su.nick_name
FROM
db_test_paper_record_detail a
LEFT JOIN db_test_paper_record dtpr ON a.record_id = dtpr.id
LEFT JOIN sys_user su ON dtpr.user_id = su.user_id
WHERE
a.question_bank_id = #{question_bank_id}
AND good = 0
</select> </select>
</mapper> </mapper>
...@@ -21,7 +21,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -21,7 +21,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
select dtpr.*,dtp.test_name select dtpr.*,dtp.test_name
from db_test_paper_record dtpr from db_test_paper_record dtpr
left join db_test_paper dtp on dtpr.test_paper_id = dtp.id left join db_test_paper dtp on dtpr.test_paper_id = dtp.id
where dtpr.user_id = #{bo.userId,jdbcType=BIGINT} where dtpr.user_id = #{bo.userId,jdbcType=BIGINT} and dtpr.status > 0
</select> </select>
<select id="getPhaseList" resultType="com.ruoyi.school.paper.domain.vo.DbTestPaperVo"> <select id="getPhaseList" resultType="com.ruoyi.school.paper.domain.vo.DbTestPaperVo">
...@@ -34,11 +34,30 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -34,11 +34,30 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
LEFT JOIN sys_dept phase on dtp.phase_id = phase.dept_id LEFT JOIN sys_dept phase on dtp.phase_id = phase.dept_id
left join sys_dept class on dtp.class_id = class.dept_id left join sys_dept class on dtp.class_id = class.dept_id
where dtpr.status in (1, 2, 3) where dtpr.status in (1, 2, 3)
<if test="bo.phaseId != null"> <if test="bo.classId != null">
and dtp.phase_id = #{bo.phaseId,jdbcType=BIGINT} and dtp.class_id = #{bo.classId,jdbcType=BIGINT}
</if> </if>
<if test="bo.testName != null and bo.testName != ''"> <if test="bo.testName != null and bo.testName != ''">
and dtp.test_name like concat('%', #{bo.testName,jdbcType=VARCHAR}, '%') and dtp.test_name like concat('%', #{bo.testName,jdbcType=VARCHAR}, '%')
</if> </if>
</select> </select>
<select id="getClassList" resultType="com.ruoyi.school.paper.domain.vo.DbTestPaperVo">
select dtpr.id,
su.nick_name,
dtp.total_points,
concat(phase.dept_name, '', class.dept_name) as phase_class
from db_test_paper_record dtpr
left join db_test_paper dtp on dtp.id = dtpr.test_paper_id
left join sys_user su on su.user_id = dtpr.user_id
LEFT JOIN sys_dept phase on dtp.phase_id = phase.dept_id
left join sys_dept class on dtp.class_id = class.dept_id
where dtpr.status in (1, 2, 3)
<if test="bo.classId != null">
and dtp.class_id = #{bo.classId,jdbcType=BIGINT}
</if>
<if test="bo.nickName != null and bo.testName != ''">
and su.nick_name like concat('%', #{bo.nickName,jdbcType=VARCHAR}, '%')
</if>
</select>
</mapper> </mapper>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment