添加学员考核成绩统计功能

dev
zhangyue 2026-01-28 15:16:55 +08:00
parent a0893303ce
commit 8b65050d71
27 changed files with 366 additions and 31 deletions

View File

@ -8,6 +8,7 @@ import com.zcloud.edu.api.study.ClassServiceI;
import com.zcloud.edu.api.study.StudentServiceI; import com.zcloud.edu.api.study.StudentServiceI;
import com.zcloud.edu.dto.archives.ClassArchivesQry; import com.zcloud.edu.dto.archives.ClassArchivesQry;
import com.zcloud.edu.dto.clientobject.study.ClassCO; import com.zcloud.edu.dto.clientobject.study.ClassCO;
import com.zcloud.edu.dto.clientobject.study.StudentCO;
import com.zcloud.edu.dto.data.archives.ClassArchivesDTO; import com.zcloud.edu.dto.data.archives.ClassArchivesDTO;
import com.zcloud.edu.dto.data.archives.PersonArchivesDTO; import com.zcloud.edu.dto.data.archives.PersonArchivesDTO;
import com.zcloud.edu.dto.study.ClassPageQry; import com.zcloud.edu.dto.study.ClassPageQry;
@ -33,9 +34,8 @@ public class ArchivesController {
@ApiOperation("分页") @ApiOperation("分页")
@PostMapping("/list") @PostMapping("/list")
public PageResponse<ClassCO> page(@RequestBody ClassPageQry qry) { public PageResponse<StudentCO> page(@RequestBody ClassPageQry qry) {
qry.setEqCorpinfoId(AuthContext.getCurrentUser().getTenantId()); return classService.listStudentClass(qry);
return classService.appListPage(qry);
} }
@ApiOperation("查询学时证明") @ApiOperation("查询学时证明")
@ -61,4 +61,10 @@ public class ArchivesController {
return studentService.getClassSign(qry); return studentService.getClassSign(qry);
} }
@ApiOperation("学员考核成绩统计表")
@PostMapping("/getClassExamResult")
public SingleResponse<ClassArchivesDTO> getClassExamResult(@RequestBody ClassArchivesQry qry) {
return studentService.getClassExamResult(qry);
}
} }

View File

@ -71,7 +71,7 @@ public class ClassController {
return MultiResponse.of(new ArrayList<ClassCO>()); return MultiResponse.of(new ArrayList<ClassCO>());
} }
@ApiOperation("统计人员班级数") @ApiOperation("统计人员班级数")
@GetMapping("/countStuClass") @PostMapping("/countStuClass")
public MultiResponse<StudentCO> countStuClass(@RequestBody ClassCountQry qry) { public MultiResponse<StudentCO> countStuClass(@RequestBody ClassCountQry qry) {
return classService.countStuClass(qry); return classService.countStuClass(qry);
} }

View File

@ -138,5 +138,12 @@ public class ClassQueryExe {
List<StudentCO> studentCOList = BeanUtil.copyToList(studentDOList, StudentCO.class); List<StudentCO> studentCOList = BeanUtil.copyToList(studentDOList, StudentCO.class);
return MultiResponse.of(studentCOList); return MultiResponse.of(studentCOList);
} }
public PageResponse<StudentCO> executeListStudentClass(ClassPageQry classPageQry) {
Map<String, Object> params = PageQueryHelper.toHashMap(classPageQry);
PageResponse<StudentDO> pageResponse = classRepository.listStudentClassPage(params);
List<StudentCO> examCenterCOS = studentCoConvertor.converDOsToCOs(pageResponse.getData());
return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
}
} }

View File

@ -20,6 +20,7 @@ import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -61,10 +62,9 @@ public class StudentQueryExe {
ClassDO classDO = classRepository.getByClassId(studentDO.getClassId()); ClassDO classDO = classRepository.getByClassId(studentDO.getClassId());
ClassE classE = new ClassE(); ClassE classE = new ClassE();
BeanUtils.copyProperties(classDO, classE); BeanUtils.copyProperties(classDO, classE);
HashMap<String, Object> params = new HashMap<String, Object>();
params.put("classId", studentDO.getClassId());
// 课程信息 // 课程信息
ClassCurriculumE classCurriculumE = new ClassCurriculumE();
Map<String, Object> params = classCurriculumE.initListAllParams(studentDO.getClassId());
List<ClassCurriculumDO> curEList = classCurriculumRepository.listAll(params); List<ClassCurriculumDO> curEList = classCurriculumRepository.listAll(params);
List<ClassCurriculumE> classCurList = BeanUtil.copyToList(curEList, ClassCurriculumE.class); List<ClassCurriculumE> classCurList = BeanUtil.copyToList(curEList, ClassCurriculumE.class);
@ -91,10 +91,9 @@ public class StudentQueryExe {
ClassDO classDO = classRepository.getByClassId(studentDO.getClassId()); ClassDO classDO = classRepository.getByClassId(studentDO.getClassId());
ClassE classE = new ClassE(); ClassE classE = new ClassE();
BeanUtils.copyProperties(classDO, classE); BeanUtils.copyProperties(classDO, classE);
HashMap<String, Object> params = new HashMap<String, Object>();
params.put("classId", studentDO.getClassId());
// 课程信息 // 课程信息
ClassCurriculumE classCurriculumE = new ClassCurriculumE();
Map<String, Object> params = classCurriculumE.initListAllParams(studentDO.getClassId());
List<ClassCurriculumDO> curEList = classCurriculumRepository.listAll(params); List<ClassCurriculumDO> curEList = classCurriculumRepository.listAll(params);
List<ClassCurriculumE> classCurList = BeanUtil.copyToList(curEList, ClassCurriculumE.class); List<ClassCurriculumE> classCurList = BeanUtil.copyToList(curEList, ClassCurriculumE.class);
@ -118,10 +117,9 @@ public class StudentQueryExe {
ClassDO classDO = classRepository.getByClassId(studentDO.getClassId()); ClassDO classDO = classRepository.getByClassId(studentDO.getClassId());
ClassE classE = new ClassE(); ClassE classE = new ClassE();
BeanUtils.copyProperties(classDO, classE); BeanUtils.copyProperties(classDO, classE);
HashMap<String, Object> params = new HashMap<String, Object>();
params.put("classId", studentDO.getClassId());
// 课程信息 // 课程信息
ClassCurriculumE classCurriculumE = new ClassCurriculumE();
Map<String, Object> params = classCurriculumE.initListAllParams(studentDO.getClassId());
List<ClassCurriculumDO> curEList = classCurriculumRepository.listAll(params); List<ClassCurriculumDO> curEList = classCurriculumRepository.listAll(params);
List<ClassCurriculumE> classCurList = BeanUtil.copyToList(curEList, ClassCurriculumE.class); List<ClassCurriculumE> classCurList = BeanUtil.copyToList(curEList, ClassCurriculumE.class);
@ -143,9 +141,10 @@ public class StudentQueryExe {
ClassE classE = new ClassE(); ClassE classE = new ClassE();
long stuCount = studentRepository.countByClassId(qry.getClassId()); long stuCount = studentRepository.countByClassId(qry.getClassId());
BeanUtils.copyProperties(classDO, classE); BeanUtils.copyProperties(classDO, classE);
HashMap<String, Object> params = new HashMap<String, Object>();
params.put("classId", qry.getClassId());
// 课程信息 // 课程信息
ClassCurriculumE classCurriculumE = new ClassCurriculumE();
Map<String, Object> params = classCurriculumE.initListAllParams(qry.getClassId());
List<ClassCurriculumDO> curEList = classCurriculumRepository.listAll(params); List<ClassCurriculumDO> curEList = classCurriculumRepository.listAll(params);
List<ClassCurriculumE> classCurList = BeanUtil.copyToList(curEList, ClassCurriculumE.class); List<ClassCurriculumE> classCurList = BeanUtil.copyToList(curEList, ClassCurriculumE.class);
@ -164,7 +163,46 @@ public class StudentQueryExe {
} }
public SingleResponse<ClassArchivesDTO> executeGetClassExamResult(ClassArchivesQry qry){
// 班级信息
ClassDO classDO = classRepository.getByClassId(qry.getClassId());
ClassE classE = new ClassE();
BeanUtils.copyProperties(classDO, classE);
HashMap<String, Object> params = new HashMap<String, Object>();
params.put("classId", qry.getClassId());
// 学员总数
List<StudentDO> stuList = studentRepository.listAll(params);
List<StudentCO> stuCOList = BeanUtil.copyToList(stuList, StudentCO.class);
// // 课程信息
// List<ClassCurriculumDO> curEList = classCurriculumRepository.listAll(params);
// List<ClassCurriculumE> classCurList = BeanUtil.copyToList(curEList, ClassCurriculumE.class);
// 签到人员数量
params.put("type",1);
List<StudentSignDO> studentSignList = studentSignRepository.listAll(params);
ClassArchivesE classArchivesE = new ClassArchivesE();
// 整理数据
classArchivesE.initClassExamResult(classE, stuList.size(), studentSignList.size());
ClassArchivesDTO classArchivesDTO = new ClassArchivesDTO();
BeanUtils.copyProperties(classArchivesE, classArchivesDTO);
// 获取通过和未通过学员
List<StudentCO> passStudentList = new ArrayList<StudentCO>();
List<StudentCO> failStudentList = new ArrayList<StudentCO>();
stuCOList.forEach(stu -> {
if (stu.getState() == 0){
failStudentList.add(stu);
}
if (stu.getState() == 1){
passStudentList.add(stu);
}
});
classArchivesDTO.setPassStudentList(passStudentList);
classArchivesDTO.setFailStudentList(failStudentList);
return SingleResponse.of(classArchivesDTO);
}
} }

View File

@ -88,5 +88,10 @@ public class ClassServiceImpl implements ClassServiceI {
public MultiResponse<StudentCO> countStuClass(ClassCountQry qry) { public MultiResponse<StudentCO> countStuClass(ClassCountQry qry) {
return classQueryExe.executeCountStuClass(qry); return classQueryExe.executeCountStuClass(qry);
} }
@Override
public PageResponse<StudentCO> listStudentClass(ClassPageQry qry) {
return classQueryExe.executeListStudentClass(qry);
}
} }

View File

@ -84,5 +84,10 @@ public class StudentServiceImpl implements StudentServiceI {
public Long countStudent(String classId) { public Long countStudent(String classId) {
return studentQueryExe.executeCountStudent(classId); return studentQueryExe.executeCountStudent(classId);
} }
@Override
public SingleResponse<ClassArchivesDTO> getClassExamResult(ClassArchivesQry qry) {
return studentQueryExe.executeGetClassExamResult(qry);
}
} }

View File

@ -40,5 +40,8 @@ public interface ClassServiceI {
SingleResponse<ClassCountDTO> statisticsCount(ClassPageQry qry); SingleResponse<ClassCountDTO> statisticsCount(ClassPageQry qry);
MultiResponse<StudentCO> countStuClass(ClassCountQry qry); MultiResponse<StudentCO> countStuClass(ClassCountQry qry);
PageResponse<StudentCO> listStudentClass(ClassPageQry qry);
} }

View File

@ -38,5 +38,7 @@ public interface StudentServiceI {
SingleResponse<ClassArchivesDTO> getClassSign(ClassArchivesQry qry); SingleResponse<ClassArchivesDTO> getClassSign(ClassArchivesQry qry);
Long countStudent(String classId); Long countStudent(String classId);
SingleResponse<ClassArchivesDTO> getClassExamResult(ClassArchivesQry qry);
} }

View File

@ -49,6 +49,9 @@ public class ClassCO extends ClientObject {
//机构ID //机构ID
@ApiModelProperty(value = "机构ID") @ApiModelProperty(value = "机构ID")
private Long corpinfoId; private Long corpinfoId;
//机构ID
@ApiModelProperty(value = "所属单位")
private String corpName;
//状态1-未申请 2-待开班 3- 培训中 4-培训结束 //状态1-未申请 2-待开班 3- 培训中 4-培训结束
@ApiModelProperty(value = "状态1-未申请 2-待开班 3- 培训中 4-培训结束 ") @ApiModelProperty(value = "状态1-未申请 2-待开班 3- 培训中 4-培训结束 ")
private Integer state; private Integer state;

View File

@ -82,7 +82,7 @@ public class StudentCO extends ClientObject {
@ApiModelProperty(value = "考试签到状态 0-未签到 1-已签到") @ApiModelProperty(value = "考试签到状态 0-未签到 1-已签到")
private Integer examSignFlag; private Integer examSignFlag;
//学员状态 0-未学习 1-已签到 2-考试通过 3-未签到 4-考试未通过 //学员状态 0-未学习 1-已签到 2-考试通过 3-未签到 4-考试未通过
@ApiModelProperty(value = "学员状态 0-未学习 1-已签到 2-考试通过 3-未签到 4-考试未通过") @ApiModelProperty(value = "学员状态 0-未完成 1-已完成")
private Integer state; private Integer state;
//相关方id集合 //相关方id集合
@ApiModelProperty(value = "相关方id集合") @ApiModelProperty(value = "相关方id集合")
@ -108,6 +108,77 @@ public class StudentCO extends ClientObject {
private Integer completeClassCount; private Integer completeClassCount;
//班级名称
@ApiModelProperty(value = "班级名称")
@TableField(exist = false)
private String className;
//培训日期 开始时间
@ApiModelProperty(value = "培训日期 开始时间")
@TableField(exist = false)
private String startTime;
//培训日期 结束日期
@ApiModelProperty(value = "培训日期 结束日期")
@TableField(exist = false)
private String endTime;
//培训教师id
@ApiModelProperty(value = "培训教师id")
@TableField(exist = false)
private Long teacherId;
//教师名称
@ApiModelProperty(value = "教师名称")
@TableField(exist = false)
private String teacherName;
//培训行业类型
@ApiModelProperty(value = "培训行业类型")
@TableField(exist = false)
private String trainType;
//培训行业类型名称
@ApiModelProperty(value = "培训行业类型名称")
@TableField(exist = false)
private String trainTypeName;
//培训地点
@ApiModelProperty(value = "培训地点")
@TableField(exist = false)
private String trainingLocation;
//机构ID
@ApiModelProperty(value = "机构ID")
@TableField(exist = false)
private Long corpinfoId;
//所属单位
@ApiModelProperty(value = "所属单位")
@TableField(exist = false)
private String corpName;
//状态1-未申请 2-待开班 3- 培训中 4-培训结束
@ApiModelProperty(value = "状态1-未申请 2-待开班 3- 培训中 4-培训结束 ")
@TableField(exist = false)
private Integer classState;
//培训有效期日期 开始时间
@ApiModelProperty(value = "培训有效期日期 开始时间")
@TableField(exist = false)
private String validStartTime;
//培训有效期日期 结束时间
@ApiModelProperty(value = "培训有效期日期 结束时间")
@TableField(exist = false)
private String validEndTime;
//1考试0不考试
@ApiModelProperty(value = "1考试0不考试")
@TableField(exist = false)
private Integer examination;
//考试次数只有考试时候有用
@ApiModelProperty(value = "考试次数只有考试时候有用")
@TableField(exist = false)
private Integer numberofexams;
//环境 //环境
@ApiModelProperty(value = "环境") @ApiModelProperty(value = "环境")
private String env; private String env;

View File

@ -1,5 +1,6 @@
package com.zcloud.edu.dto.data.archives; package com.zcloud.edu.dto.data.archives;
import com.zcloud.edu.dto.clientobject.study.StudentCO;
import com.zcloud.edu.dto.clientobject.study.StudentSignCO; import com.zcloud.edu.dto.clientobject.study.StudentSignCO;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
@ -48,6 +49,9 @@ public class ClassArchivesDTO {
//机构ID //机构ID
@ApiModelProperty(value = "机构ID") @ApiModelProperty(value = "机构ID")
private Long corpinfoId; private Long corpinfoId;
//所属单位名称
@ApiModelProperty(value = "所属单位名称")
private Long corpName;
//状态1-未申请 2-待开班 3- 培训中 4-培训结束 //状态1-未申请 2-待开班 3- 培训中 4-培训结束
@ApiModelProperty(value = "状态1-未申请 2-待开班 3- 培训中 4-培训结束 ") @ApiModelProperty(value = "状态1-未申请 2-待开班 3- 培训中 4-培训结束 ")
private Integer state; private Integer state;
@ -83,4 +87,11 @@ public class ClassArchivesDTO {
@ApiModelProperty(value = "学员数") @ApiModelProperty(value = "学员数")
private Long studentCount; private Long studentCount;
@ApiModelProperty(value = "实际参加培训人数")
private Long signCount;
@ApiModelProperty(value = "合格学员列表")
private List<StudentCO> passStudentList;
@ApiModelProperty(value = "不合格学员列表")
private List<StudentCO> failStudentList;
} }

View File

@ -83,6 +83,9 @@ public class ClassArchivesE extends BaseE {
@ApiModelProperty(value = "学员数") @ApiModelProperty(value = "学员数")
private Long studentCount; private Long studentCount;
@ApiModelProperty(value = "实际参加培训人数")
private Long signCount;
public void initClassSign(ClassE classE, Long studentCount, List<ClassCurriculumE> classCurList) { public void initClassSign(ClassE classE, Long studentCount, List<ClassCurriculumE> classCurList) {
BeanUtils.copyProperties(classE, this); BeanUtils.copyProperties(classE, this);
String trainSubject = classCurList.stream().map(ClassCurriculumE::getCurriculumName).collect(Collectors.joining(",")); String trainSubject = classCurList.stream().map(ClassCurriculumE::getCurriculumName).collect(Collectors.joining(","));
@ -91,5 +94,14 @@ public class ClassArchivesE extends BaseE {
setStudentCount(studentCount); setStudentCount(studentCount);
setClzId(classE.getId()); setClzId(classE.getId());
} }
public void initClassExamResult(ClassE classE, Integer studentCount, Integer signCount) {
BeanUtils.copyProperties(classE, this);
setClassName(classE.getName());
// String trainSubject = classCurList.stream().map(ClassCurriculumE::getCurriculumName).collect(Collectors.joining(","));
// setTrainSubject(trainSubject);
setStudentCount(Long.valueOf(studentCount));
setSignCount(Long.valueOf(signCount));
setClzId(classE.getId());
}
} }

View File

@ -100,11 +100,6 @@ public class ClassCurriculumE extends BaseE {
}); });
} }
public HashMap<String, Object> initListAllParams(String classId){
HashMap<String, Object> params = new HashMap<String, Object>();
params.put("classId", classId);
return params;
}
} }

View File

@ -116,5 +116,6 @@ public class StudentE extends BaseE {
} }
} }
} }

View File

@ -50,6 +50,10 @@ public class ClassDO extends BaseDO {
//机构ID //机构ID
@ApiModelProperty(value = "机构ID") @ApiModelProperty(value = "机构ID")
private Long corpinfoId; private Long corpinfoId;
//所属单位
@ApiModelProperty(value = "所属单位")
@TableField(exist = false)
private String corpName;
//状态1-未申请 2-待开班 3- 培训中 4-培训结束 //状态1-未申请 2-待开班 3- 培训中 4-培训结束
@ApiModelProperty(value = "状态1-未申请 2-待开班 3- 培训中 4-培训结束 ") @ApiModelProperty(value = "状态1-未申请 2-待开班 3- 培训中 4-培训结束 ")
private Integer state; private Integer state;

View File

@ -81,8 +81,8 @@ public class StudentDO extends BaseDO {
//考试签到状态 0-未签到 1-已签到 //考试签到状态 0-未签到 1-已签到
@ApiModelProperty(value = "考试签到状态 0-未签到 1-已签到") @ApiModelProperty(value = "考试签到状态 0-未签到 1-已签到")
private Integer examSignFlag; private Integer examSignFlag;
//学员状态 0-未学习 1-已签到 2-考试通过 3-未签到 4-考试未通过 //学员状态 0-未完成 1-已完成
@ApiModelProperty(value = "学员状态 0-未学习 1-已签到 2-考试通过 3-未签到 4-考试未通过") @ApiModelProperty(value = "学员状态 0-未完成 1-已完成")
private Integer state; private Integer state;
//相关方id集合 //相关方id集合
@ApiModelProperty(value = "相关方id集合") @ApiModelProperty(value = "相关方id集合")
@ -105,5 +105,67 @@ public class StudentDO extends BaseDO {
@TableField(exist = false) @TableField(exist = false)
private Integer completeClassCount; private Integer completeClassCount;
//班级名称
@ApiModelProperty(value = "班级名称")
@TableField(exist = false)
private String className;
//培训日期 开始时间
@ApiModelProperty(value = "培训日期 开始时间")
@TableField(exist = false)
private String startTime;
//培训日期 结束日期
@ApiModelProperty(value = "培训日期 结束日期")
@TableField(exist = false)
private String endTime;
//培训教师id
@ApiModelProperty(value = "培训教师id")
@TableField(exist = false)
private Long teacherId;
//教师名称
@ApiModelProperty(value = "教师名称")
@TableField(exist = false)
private String teacherName;
//培训行业类型
@ApiModelProperty(value = "培训行业类型")
@TableField(exist = false)
private String trainType;
//培训行业类型名称
@ApiModelProperty(value = "培训行业类型名称")
@TableField(exist = false)
private String trainTypeName;
//培训地点
@ApiModelProperty(value = "培训地点")
@TableField(exist = false)
private String trainingLocation;
//机构ID
@ApiModelProperty(value = "机构ID")
@TableField(exist = false)
private Long corpinfoId;
//所属单位
@ApiModelProperty(value = "所属单位")
@TableField(exist = false)
private String corpName;
//状态1-未申请 2-待开班 3- 培训中 4-培训结束
@ApiModelProperty(value = "状态1-未申请 2-待开班 3- 培训中 4-培训结束 ")
@TableField(exist = false)
private Integer classState;
//培训有效期日期 开始时间
@ApiModelProperty(value = "培训有效期日期 开始时间")
@TableField(exist = false)
private String validStartTime;
//培训有效期日期 结束时间
@ApiModelProperty(value = "培训有效期日期 结束时间")
@TableField(exist = false)
private String validEndTime;
//1考试0不考试
@ApiModelProperty(value = "1考试0不考试")
@TableField(exist = false)
private Integer examination;
//考试次数只有考试时候有用
@ApiModelProperty(value = "考试次数只有考试时候有用")
@TableField(exist = false)
private Integer numberofexams;
} }

View File

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zcloud.edu.persistence.dataobject.study.ClassDO; import com.zcloud.edu.persistence.dataobject.study.ClassDO;
import com.zcloud.edu.persistence.dataobject.study.StudentDO;
import com.zcloud.edu.persistence.mapper.po.study.ClassQuestionPO; import com.zcloud.edu.persistence.mapper.po.study.ClassQuestionPO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@ -25,9 +26,12 @@ public interface ClassMapper extends BaseMapper<ClassDO> {
List<ClassDO> listStatistics(@Param("ew") QueryWrapper<ClassDO> queryWrapper, String menuPerms); List<ClassDO> listStatistics(@Param("ew") QueryWrapper<ClassDO> queryWrapper, String menuPerms);
IPage<ClassDO> listStuClassPage(IPage<ClassDO> page, @Param("params") Map<String, Object> params, String menuPerms); IPage<ClassDO> listStuClassPage(IPage<ClassDO> page, @Param("params") Map<String, Object> params, String menuPerms);
IPage<StudentDO> listStudentClassPage(IPage<StudentDO> page, @Param("params") Map<String, Object> params, String menuPerms);
List<ClassQuestionPO> countQuestionByClassId(String classId); List<ClassQuestionPO> countQuestionByClassId(String classId);
ClassDO getInfoById(long id); ClassDO getInfoById(long id);
ClassDO getInfoByClassId(String classId);
} }

View File

@ -27,6 +27,8 @@ public interface StudentMapper extends BaseMapper<StudentDO> {
List<StudentDO> countStuClass(@Param("params") Map<String, Object> params); List<StudentDO> countStuClass(@Param("params") Map<String, Object> params);
List<StudentDO> listAll(@Param("params") Map<String, Object> params);
} }

View File

@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jjb.saas.framework.repository.common.PageHelper; import com.jjb.saas.framework.repository.common.PageHelper;
import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl; import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl;
import com.zcloud.edu.persistence.dataobject.study.ClassDO; import com.zcloud.edu.persistence.dataobject.study.ClassDO;
import com.zcloud.edu.persistence.dataobject.study.StudentDO;
import com.zcloud.edu.persistence.mapper.study.ClassMapper; import com.zcloud.edu.persistence.mapper.study.ClassMapper;
import com.zcloud.edu.persistence.mapper.po.study.ClassQuestionPO; import com.zcloud.edu.persistence.mapper.po.study.ClassQuestionPO;
import com.zcloud.edu.persistence.repository.study.ClassRepository; import com.zcloud.edu.persistence.repository.study.ClassRepository;
@ -56,11 +57,16 @@ public class ClassRepositoryImpl extends BaseRepositoryImpl<ClassMapper, ClassDO
return PageHelper.pageToResponse(result, result.getRecords()); return PageHelper.pageToResponse(result, result.getRecords());
} }
@Override
public PageResponse<StudentDO> listStudentClassPage(Map<String, Object> params) {
IPage<StudentDO> iPage = new Query<StudentDO>().getPage(params);
IPage<StudentDO> result = classMapper.listStudentClassPage(iPage, params, null);
return PageHelper.pageToResponse(result, result.getRecords());
}
@Override @Override
public ClassDO getByClassId(String classId) { public ClassDO getByClassId(String classId) {
QueryWrapper<ClassDO> queryWrapper = new QueryWrapper<>(); return classMapper.getInfoByClassId(classId);
queryWrapper.eq("class_id", classId);
return classMapper.selectOne(queryWrapper);
} }
@Override @Override

View File

@ -97,5 +97,10 @@ public class StudentRepositoryImpl extends BaseRepositoryImpl<StudentMapper, Stu
return studentMapper.selectOne(queryWrapper); return studentMapper.selectOne(queryWrapper);
} }
@Override
public List<StudentDO> listAll(Map<String, Object> params) {
return studentMapper.listAll(params);
}
} }

View File

@ -69,5 +69,10 @@ public class StudentSignRepositoryImpl extends BaseRepositoryImpl<StudentSignMap
queryWrapper.isNotNull("sign_url"); queryWrapper.isNotNull("sign_url");
return studentSignMapper.selectList(queryWrapper); return studentSignMapper.selectList(queryWrapper);
} }
@Override
public Integer countByClassId(String classId) {
return 1;
}
} }

View File

@ -3,6 +3,7 @@ package com.zcloud.edu.persistence.repository.study;
import com.alibaba.cola.dto.PageResponse; import com.alibaba.cola.dto.PageResponse;
import com.jjb.saas.framework.repository.repo.BaseRepository; import com.jjb.saas.framework.repository.repo.BaseRepository;
import com.zcloud.edu.persistence.dataobject.study.ClassDO; import com.zcloud.edu.persistence.dataobject.study.ClassDO;
import com.zcloud.edu.persistence.dataobject.study.StudentDO;
import com.zcloud.edu.persistence.mapper.po.study.ClassQuestionPO; import com.zcloud.edu.persistence.mapper.po.study.ClassQuestionPO;
import java.util.List; import java.util.List;
@ -20,6 +21,8 @@ public interface ClassRepository extends BaseRepository<ClassDO> {
PageResponse<ClassDO> listStuClassPage(Map<String, Object> params); PageResponse<ClassDO> listStuClassPage(Map<String, Object> params);
PageResponse<StudentDO> listStudentClassPage(Map<String, Object> params);
ClassDO getByClassId(String classId); ClassDO getByClassId(String classId);
List<ClassQuestionPO> countQuestionByClassId(String classId); List<ClassQuestionPO> countQuestionByClassId(String classId);

View File

@ -33,11 +33,9 @@ public interface StudentRepository extends BaseRepository<StudentDO> {
List<StudentDO> countStuClass(Map<String, Object> params); List<StudentDO> countStuClass(Map<String, Object> params);
StudentDO findInfoByStudentId(String studentId); StudentDO findInfoByStudentId(String studentId);
List<StudentDO> listAll(Map<String, Object> params);
} }

View File

@ -23,6 +23,7 @@ public interface StudentSignRepository extends BaseRepository<StudentSignDO> {
List<StudentSignDO> listAllByStudentId(Map<String, Object> params); List<StudentSignDO> listAllByStudentId(Map<String, Object> params);
Integer countByClassId(String classId);
} }

View File

@ -38,10 +38,36 @@
c.numberofexams c.numberofexams
FROM FROM
class c class c
left join training_type t on t.training_type_id = c.train_type left join training_type t on t.training_type_id = c.train_type
WHERE WHERE
c.id = #{id} c.id = #{id}
</select> </select>
<select id="getInfoByClassId" resultType="com.zcloud.edu.persistence.dataobject.study.ClassDO">
SELECT
c.id,
c.class_id,
c.name,
c.start_time,
c.end_time,
c.teacher_id,
c.teacher_name,
c.train_type,
ci.corp_name,
t.name train_type_name,
c.training_location,
c.corpinfo_id,
c.state,
c.valid_start_time,
c.valid_end_time,
c.examination,
c.numberofexams
FROM
class c
left join training_type t on t.training_type_id = c.train_type
left join corp_info ci on ci.id = c.corpinfo_id
WHERE
c.class_id = #{classId}
</select>
<select id="listPage" resultType="com.zcloud.edu.persistence.dataobject.study.ClassDO"> <select id="listPage" resultType="com.zcloud.edu.persistence.dataobject.study.ClassDO">
SELECT SELECT
c.id, c.id,
@ -120,7 +146,51 @@
c.state, c.state,
c.create_time desc c.create_time desc
</select> </select>
<select id="listStudentClassPage" resultType="com.zcloud.edu.persistence.dataobject.study.StudentDO">
SELECT
c.id clz_id,
c.class_id,
c.name class_name,
c.start_time,
c.end_time,
c.teacher_id,
c.teacher_name,
c.train_type,
t.name train_type_name,
c.training_location,
c.corpinfo_id,
ci.corp_name,
case when c.state = 1 then 1
when c.state = 2 and c.start_time > now() then 2
when c.state = 2 and c.start_time &lt;= now() and c.end_time > now() then 3
when c.state = 2 and c.end_time &gt;= now() then 4
end class_state,
c.valid_start_time,
c.valid_end_time,
c.examination,
c.numberofexams,
s.*
FROM
student s
left join class c on c.class_id = s.class_id
left join training_type t on t.training_type_id = c.train_type
left join corp_info ci on ci.id = c.corpinfo_id
<where>
AND s.phone = #{params.phone}
AND s.delete_enum = 'FALSE'
AND c.delete_enum = 'FALSE'
<if test="params.likeName != null and params.likeName !='' ">
and c.name like concat('%',#{params.likeName},'%')
</if>
<if test="params.eqCorpinfoId != null and params.eqCorpinfoId !='' ">
and c.corpinfo_id = #{params.eqCorpinfoId}
</if>
</where>
order by
c.state,
c.create_time desc
</select>
</mapper> </mapper>

View File

@ -90,5 +90,18 @@
group by s.phone group by s.phone
</select> </select>
<select id="listAll" resultType="com.zcloud.edu.persistence.dataobject.study.StudentDO">
SELECT
*
FROM
student
<where>
and delete_enum = 'FALSE'
<if test="params.classId != null and params.classId != ''">
and class_id = #{params.classId}
</if>
</where>
</select>
</mapper> </mapper>

View File

@ -11,7 +11,7 @@
ss.* ss.*
FROM FROM
student_sign ss student_sign ss
LEFT JOIN student s ON ss.student_id = ss.student_id LEFT JOIN student s ON ss.student_id = s.student_id
LEFT JOIN class cl ON cl.class_id = s.class_id LEFT JOIN class cl ON cl.class_id = s.class_id
<where> <where>
<if test="params.classId != null and params.classId != ''"> <if test="params.classId != null and params.classId != ''">
@ -20,6 +20,9 @@
<if test="params.studentId != null and params.studentId != ''"> <if test="params.studentId != null and params.studentId != ''">
AND ss.student_id = #{params.studentId} AND ss.student_id = #{params.studentId}
</if> </if>
<if test="params.type != null and params.type != ''">
AND ss.type = #{params.type}
</if>
AND ss.delete_enum = 'FALSE' AND ss.delete_enum = 'FALSE'
and ss.sign_url is not null and ss.sign_url is not null
and ss.sign_url != '' and ss.sign_url != ''