PaperBasicInfo
parent
b4043e8238
commit
0b4461d06b
|
|
@ -2,11 +2,23 @@ package org.qinan.cedu.mapper;
|
|||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.qinan.cedu.model.entity.ClassStudentDO;
|
||||
import org.qinan.cedu.model.vo.ClassStudentStatVO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 班级学员 Mapper
|
||||
*/
|
||||
@Mapper
|
||||
public interface ClassStudentMapper extends BaseMapper<ClassStudentDO> {
|
||||
|
||||
/**
|
||||
* 按班级分组统计学员数量(涉及学员人员数、完成人员数)
|
||||
*
|
||||
* @param classIds 班级id集合
|
||||
* @return 各班级学员统计结果
|
||||
*/
|
||||
List<ClassStudentStatVO> countByClassIds(@Param("classIds") List<Long> classIds);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -93,4 +93,10 @@ public class ClassManagementVO extends BaseVO {
|
|||
*/
|
||||
@ApiModelProperty("试卷id")
|
||||
private String paperId;
|
||||
|
||||
@ApiModelProperty("涉及学员人员数")
|
||||
private Long studentCount;
|
||||
|
||||
@ApiModelProperty("完成人员数")
|
||||
private Long completedCount;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,20 @@
|
|||
package org.qinan.cedu.model.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 班级学员数量统计结果
|
||||
*/
|
||||
@Data
|
||||
public class ClassStudentStatVO {
|
||||
|
||||
@ApiModelProperty("班级id")
|
||||
private Long classId;
|
||||
|
||||
@ApiModelProperty("涉及学员人员数")
|
||||
private Long studentCount;
|
||||
|
||||
@ApiModelProperty("完成人员数")
|
||||
private Long completedCount;
|
||||
}
|
||||
|
|
@ -7,20 +7,27 @@ import org.qinan.cedu.convertor.ClassManagementConvertor;
|
|||
import org.qinan.cedu.enums.ClassStatusEnum;
|
||||
import org.qinan.cedu.enums.DeleteEnum;
|
||||
import org.qinan.cedu.mapper.ClassManagementMapper;
|
||||
import org.qinan.cedu.mapper.ClassStudentMapper;
|
||||
import org.qinan.cedu.model.dto.ClassManagementDTO;
|
||||
import org.qinan.cedu.model.entity.ClassManagementDO;
|
||||
import org.qinan.cedu.model.query.ClassManagementPageQuery;
|
||||
import org.qinan.cedu.model.vo.ClassManagementVO;
|
||||
import org.qinan.cedu.model.vo.ClassStudentStatVO;
|
||||
import org.qinan.cedu.service.ClassManagementService;
|
||||
import org.qinan.safetyeval.infrastructure.support.InsertFieldDefaults;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 班级管理服务实现
|
||||
|
|
@ -32,9 +39,12 @@ public class ClassManagementServiceImpl extends ServiceImpl<ClassManagementMappe
|
|||
@Autowired
|
||||
private ClassManagementConvertor classManagementConvertor;
|
||||
|
||||
@Autowired
|
||||
private ClassStudentMapper classStudentMapper;
|
||||
|
||||
@Override
|
||||
public IPage<ClassManagementVO> pageQuery(ClassManagementPageQuery query) {
|
||||
return this.lambdaQuery()
|
||||
IPage<ClassManagementVO> page = this.lambdaQuery()
|
||||
.eq(ClassManagementDO::getDeleteEnum, DeleteEnum.FALSE.getCode())
|
||||
.like(StringUtils.hasText(query.getClassCode()), ClassManagementDO::getClassCode, query.getClassCode())
|
||||
.like(StringUtils.hasText(query.getClassName()), ClassManagementDO::getClassName, query.getClassName())
|
||||
|
|
@ -45,6 +55,32 @@ public class ClassManagementServiceImpl extends ServiceImpl<ClassManagementMappe
|
|||
.orderByDesc(ClassManagementDO::getCreateTime)
|
||||
.page(new Page<>(query.getCurrent(), query.getSize()))
|
||||
.convert(classManagementConvertor::convertEToVo);
|
||||
fillStudentCount(page.getRecords());
|
||||
return page;
|
||||
}
|
||||
|
||||
/**
|
||||
* 填充当前页各班级的学员统计数(涉及学员人员数、完成人员数)
|
||||
*
|
||||
* @param records 当前页班级列表
|
||||
*/
|
||||
private void fillStudentCount(List<ClassManagementVO> records) {
|
||||
if (CollectionUtils.isEmpty(records)) {
|
||||
return;
|
||||
}
|
||||
List<Long> classIds = records.stream()
|
||||
.map(vo -> Long.valueOf(vo.getId()))
|
||||
.collect(Collectors.toList());
|
||||
Map<Long, ClassStudentStatVO> statMap = classStudentMapper.countByClassIds(classIds).stream()
|
||||
.collect(Collectors.toMap(ClassStudentStatVO::getClassId, Function.identity()));
|
||||
for (ClassManagementVO vo : records) {
|
||||
ClassStudentStatVO stat = statMap.get(Long.valueOf(vo.getId()));
|
||||
if (stat == null) {
|
||||
continue;
|
||||
}
|
||||
vo.setStudentCount(stat.getStudentCount());
|
||||
vo.setCompletedCount(stat.getCompletedCount());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -0,0 +1,18 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.qinan.cedu.mapper.ClassStudentMapper">
|
||||
|
||||
<select id="countByClassIds" resultType="org.qinan.cedu.model.vo.ClassStudentStatVO">
|
||||
SELECT class_id AS classId
|
||||
, COUNT(*) AS studentCount
|
||||
<!-- 学习状态:3-已完成 -->
|
||||
, SUM(study_status = 3) AS completedCount
|
||||
FROM class_student
|
||||
WHERE delete_enum = 'false'
|
||||
AND class_id IN
|
||||
<foreach collection="classIds" item="classId" open="(" separator="," close=")">
|
||||
#{classId}
|
||||
</foreach>
|
||||
GROUP BY class_id
|
||||
</select>
|
||||
</mapper>
|
||||
Loading…
Reference in New Issue