| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
- package com.xjrsoft.module.student.service.impl;
- import cn.dev33.satoken.stp.StpUtil;
- import com.alibaba.excel.EasyExcel;
- import com.alibaba.excel.support.ExcelTypeEnum;
- import com.baomidou.mybatisplus.core.toolkit.Wrappers;
- import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
- import com.github.yulichang.base.MPJBaseServiceImpl;
- import com.github.yulichang.toolkit.MPJWrappers;
- import com.xjrsoft.common.enums.ScoreTypeEnum;
- import com.xjrsoft.common.model.result.RT;
- import com.xjrsoft.common.utils.VoToColumnUtil;
- import com.xjrsoft.module.base.entity.BaseClass;
- import com.xjrsoft.module.base.mapper.BaseClassMapper;
- import com.xjrsoft.module.evaluate.vo.ResultViewingExcelVo;
- import com.xjrsoft.module.student.dto.BaseStudentAssessmentInspectionMobilePageDto;
- import com.xjrsoft.module.student.dto.BaseStudentAssessmentInspectionPageDto;
- import com.xjrsoft.module.student.dto.QuantitativeAssessmentExcelDto;
- import com.xjrsoft.module.student.entity.BaseStudentAssessmentClassRelation;
- import com.xjrsoft.module.student.entity.BaseStudentAssessmentInspection;
- import com.xjrsoft.module.student.entity.BaseStudentAssessmentStudentRelation;
- import com.xjrsoft.module.student.mapper.BaseStudentAssessmentClassRelationMapper;
- import com.xjrsoft.module.student.mapper.BaseStudentAssessmentInspectionMapper;
- import com.xjrsoft.module.student.mapper.BaseStudentAssessmentStudentRelationMapper;
- import com.xjrsoft.module.student.service.IBaseStudentAssessmentInspectionService;
- import com.xjrsoft.module.student.vo.*;
- import com.xjrsoft.module.system.entity.File;
- import com.xjrsoft.module.system.service.IFileService;
- import com.xjrsoft.module.teacher.entity.XjrUser;
- import lombok.AllArgsConstructor;
- import org.springframework.http.ResponseEntity;
- import org.springframework.stereotype.Service;
- import java.io.ByteArrayOutputStream;
- import java.util.List;
- import java.util.Map;
- import java.util.stream.Collectors;
- /**
- * @title: 学生班级巡查考核
- * @Author dzx
- * @Date: 2023-11-16
- * @Version 1.0
- */
- @Service
- @AllArgsConstructor
- public class BaseStudentAssessmentInspectionServiceImpl extends MPJBaseServiceImpl<BaseStudentAssessmentInspectionMapper, BaseStudentAssessmentInspection> implements IBaseStudentAssessmentInspectionService {
- private final BaseStudentAssessmentInspectionMapper assessmentInspectionMapper;
- private final BaseStudentAssessmentStudentRelationMapper assessmentStudentRelationMapper;
- private final BaseStudentAssessmentClassRelationMapper assessmentClassRelationMapper;
- private final BaseClassMapper baseClassMapper;
- private final IFileService fileService;
- @Override
- public Page<BaseStudentAssessmentInspectionPageVo> getPage(Page<BaseStudentAssessmentInspectionPageDto> page, BaseStudentAssessmentInspectionPageDto dto) {
- Page<BaseStudentAssessmentInspectionPageVo> result = assessmentInspectionMapper.getPage(page, dto);
- // 处理加减分
- result.getRecords().forEach((node) -> {
- if (node.getScoreType().equals(ScoreTypeEnum.ScoreMinus.getCode())) {
- node.setScore(node.getScore() * -1);
- }
- });
- return result;
- }
- @Override
- public BaseStudentAssessmentInspectionVo getInfo(Long id) {
- BaseStudentAssessmentInspectionVo result = assessmentInspectionMapper.getInfo(id);
- // 处理加减分
- if (result.getScoreType().equals(ScoreTypeEnum.ScoreMinus.getCode())) {
- result.setScore(result.getScore() * -1);
- }
- // 获取班级信息
- List<BaseStudentAssessmentClassListVo> baseStudentAssessmentClassListVos = assessmentClassRelationMapper.selectJoinList(BaseStudentAssessmentClassListVo.class,
- MPJWrappers.<BaseStudentAssessmentClassRelation>lambdaJoin()
- .leftJoin(BaseClass.class, BaseClass::getId, BaseStudentAssessmentClassRelation::getClassId)
- .leftJoin(XjrUser.class, XjrUser::getId, BaseClass::getTeacherId)
- .eq(BaseStudentAssessmentClassRelation::getBaseStudentAssessmentInspectionId, id)
- .select(BaseStudentAssessmentClassRelation::getId)
- .selectAs(BaseClass::getName, BaseStudentAssessmentClassListVo::getClassName)
- .selectAs(XjrUser::getName, BaseStudentAssessmentClassListVo::getTeacherName)
- .selectAs(XjrUser::getMobile, BaseStudentAssessmentClassListVo::getMobile)
- .select(BaseStudentAssessmentClassRelation.class, x -> VoToColumnUtil.fieldsToColumns(BaseStudentAssessmentClassRelation.class).contains(x.getProperty()))
- );
- result.setClassList(baseStudentAssessmentClassListVos);
- // 获取学生信息
- List<BaseStudentAssessmentStudentRelation> baseStudentAssessmentStudentRelations = assessmentStudentRelationMapper.selectList(
- Wrappers.<BaseStudentAssessmentStudentRelation>query().lambda()
- .eq(BaseStudentAssessmentStudentRelation::getBaseStudentAssessmentInspectionId, result.getId())
- );
- result.setStudentList(baseStudentAssessmentStudentRelations);
- // 获取文件列表
- result.setFileInfos(fileService.list(Wrappers.<File>query().lambda().eq(File::getFolderId, result.getFileId())));
- return result;
- }
- @Override
- public Page<BaseStudentAssessmentInspectionMobilePageVo> getMobilePage(Page<BaseStudentAssessmentInspectionMobilePageDto> page, BaseStudentAssessmentInspectionMobilePageDto dto) {
- if (dto.getClassIds() == null || dto.getClassIds().size() == 0) {
- // 获取当前用户所管班级
- List<Long> classIds = baseClassMapper.selectList(
- Wrappers.<BaseClass>query().lambda()
- .eq(BaseClass::getTeacherId, StpUtil.getLoginIdAsLong())
- .select(BaseClass::getId)
- ).stream().map(BaseClass::getId).collect(Collectors.toList());
- dto.setClassIds(classIds);
- }
- if (dto.getClassIds() == null || dto.getClassIds().size() == 0) {
- return null;
- }
- Page<BaseStudentAssessmentInspectionMobilePageVo> result = assessmentInspectionMapper.getMobilePage(page, dto);
- // 处理加减分
- result.getRecords().forEach((node) -> {
- if (node.getScoreType().equals(ScoreTypeEnum.ScoreMinus.getCode())) {
- node.setScore(node.getScore() * -1);
- }
- });
- return result;
- }
- @Override
- public BaseStudentAssessmentInspectionMobileVo getMobileInfo(Long id) {
- BaseStudentAssessmentInspectionMobileVo result = assessmentInspectionMapper.getMobileInfo(id);
- // 处理加减分
- if (result.getScoreType().equals(ScoreTypeEnum.ScoreMinus.getCode())) {
- result.setScore(result.getScore() * -1);
- }
- // 获取学生信息
- List<BaseStudentAssessmentStudentRelation> baseStudentAssessmentStudentRelations = assessmentStudentRelationMapper.selectList(
- Wrappers.<BaseStudentAssessmentStudentRelation>query().lambda()
- .eq(BaseStudentAssessmentStudentRelation::getBaseStudentAssessmentInspectionId, result.getBaseStudentAssessmentInspectionId())
- .eq(BaseStudentAssessmentStudentRelation::getClassId, result.getClassId())
- );
- result.setStudentList(baseStudentAssessmentStudentRelations);
- result.setStudentCount(baseStudentAssessmentStudentRelations.size());
- // 获取文件列表
- result.setFileInfos(fileService.list(Wrappers.<File>query().lambda().eq(File::getFolderId, result.getFileId())));
- return result;
- }
- @Override
- public ResponseEntity<byte[]> getQuantitativeAssessmentExcelByte(QuantitativeAssessmentExcelDto dto) {
- String fileName = "StudentAssessmentInspection" + ExcelTypeEnum.XLSX.getValue();
- ByteArrayOutputStream bot = new ByteArrayOutputStream();
- //TODO 学生个人行为原始数据
- //求所有的个人行为集合
- List<StudentIndividualBehaviorExcelVo> studentIndividualBehaviorExcelVoList = assessmentInspectionMapper.getStudentIndividualBehaviorExcelVoList(dto);
- Map<Long, List<StudentIndividualBehaviorExcelVo>> studentIndividualBehaviorExcelVoListMap = studentIndividualBehaviorExcelVoList.stream()
- .collect(Collectors.groupingBy(StudentIndividualBehaviorExcelVo::getStudentUserId));
- //未合并
- EasyExcel.write(bot, ResultViewingExcelVo.class)
- .automaticMergeHead(false)
- .excelType(ExcelTypeEnum.XLSX)
- .sheet("学生个人行为")
- .doWrite(studentIndividualBehaviorExcelVoList);
- //TODO 班级常规管理原始数据
- //TODO 获奖原始数据
- //TODO 班级量化考核统计表总
- return RT.fileStream(bot.toByteArray(), fileName);
- }
- }
|