PaperBasicInfo

dev-tmp1
luotaiqian 2026-08-21 16:21:12 +08:00
parent b4043e8238
commit 0b4461d06b
5 changed files with 93 additions and 1 deletions

View File

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

View File

@ -93,4 +93,10 @@ public class ClassManagementVO extends BaseVO {
*/
@ApiModelProperty("试卷id")
private String paperId;
@ApiModelProperty("涉及学员人员数")
private Long studentCount;
@ApiModelProperty("完成人员数")
private Long completedCount;
}

View File

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

View File

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

View File

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