新增练习模式详情相关接口

newBigdata
xiaoCJ 12 months ago
parent 6be68bd284
commit 8b831de35a

@ -5,10 +5,7 @@ import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.sztzjy.financial_bigdata.annotation.AnonymousAccess; import com.sztzjy.financial_bigdata.annotation.AnonymousAccess;
import com.sztzjy.financial_bigdata.entity.*; import com.sztzjy.financial_bigdata.entity.*;
import com.sztzjy.financial_bigdata.entity.tea_dto.TeaExamAndUserDto; import com.sztzjy.financial_bigdata.entity.tea_dto.*;
import com.sztzjy.financial_bigdata.entity.tea_dto.TeaExamManageCountDto;
import com.sztzjy.financial_bigdata.entity.tea_dto.TeaExaminationDetailsDto;
import com.sztzjy.financial_bigdata.entity.tea_dto.TeaTrainingInfoDTO;
import com.sztzjy.financial_bigdata.mapper.*; import com.sztzjy.financial_bigdata.mapper.*;
import com.sztzjy.financial_bigdata.service.tea.ITeaGradeManageService; import com.sztzjy.financial_bigdata.service.tea.ITeaGradeManageService;
import com.sztzjy.financial_bigdata.service.tea.impl.TeaGradeManageServiceImpl; import com.sztzjy.financial_bigdata.service.tea.impl.TeaGradeManageServiceImpl;
@ -19,10 +16,6 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiParam;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph; import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun; import org.apache.poi.xwpf.usermodel.XWPFRun;
@ -30,10 +23,8 @@ import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
@ -165,11 +156,6 @@ public class TeaGradeManageController {
} }
@PostMapping("/getGradeDetails")
@ApiOperation("考试模式--成绩详情页面") //TODO 待写 成绩详情页面
public void getGradeDetails() {
}
@PostMapping("/exportRank") @PostMapping("/exportRank")
@ -268,13 +254,15 @@ public class TeaGradeManageController {
@PostMapping("/getTrainingDetailsInfo") @PostMapping("/getTrainingDetailsInfo")
@ApiOperation("练习模式--详情页面展示") @ApiOperation("练习模式--详情页面展示")
public void getTrainingDetailsInfo() { //todo 待写 详情页面展示 public ResultEntity<List<TeaTrainingDto>> getTrainingDetailsInfo(@RequestParam String trainingId) {
return new ResultEntity<>(iTeaGradeManageService.getTrainingDetailsInfo(trainingId));
} }
@PostMapping("/exportTrainingDetailsInfo") @PostMapping("/exportTrainingDetailsInfo")
@ApiOperation("练习模式--详情页面导出") @ApiOperation("练习模式--详情页面导出")
public void exportTrainingDetailsInfo(HttpServletResponse response) {//todo 待写 详情页面导出 public void exportTrainingDetailsInfo(HttpServletResponse response,@RequestParam String trainingId) {
iTeaGradeManageService.exportTrainingDetailsInfo(response,trainingId);
} }

@ -0,0 +1,36 @@
package com.sztzjy.financial_bigdata.entity.tea_dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
/**
* @Author xcj
* @Date 2024/4/8
*/
@Data
@NoArgsConstructor
public class TeaTrainingDto {
@ApiModelProperty("任务模块")
private String taskModule;
@ApiModelProperty("模块得分")
private BigDecimal moduleScore;
@ApiModelProperty("知识概要得分")
private BigDecimal knowledgeSummaryScore;
@ApiModelProperty("资源学习得分")
private BigDecimal resourceLearningScore;
@ApiModelProperty("学习评测得分")
private BigDecimal learningEvalScore;
@ApiModelProperty("实验实训得分")
private BigDecimal expTrainingScore;
@ApiModelProperty("实验报告得分")
private BigDecimal reportScore;
}

@ -13,6 +13,9 @@ import java.math.BigDecimal;
@Data @Data
@NoArgsConstructor @NoArgsConstructor
public class TeaTrainingInfoDTO { public class TeaTrainingInfoDTO {
@ApiModelProperty("排名")
private String trainingId;
@ApiModelProperty("排名") @ApiModelProperty("排名")
private int rank; private int rank;

@ -2,6 +2,7 @@ package com.sztzjy.financial_bigdata.service.tea;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.sztzjy.financial_bigdata.entity.tea_dto.TeaExaminationDetailsDto; import com.sztzjy.financial_bigdata.entity.tea_dto.TeaExaminationDetailsDto;
import com.sztzjy.financial_bigdata.entity.tea_dto.TeaTrainingDto;
import com.sztzjy.financial_bigdata.entity.tea_dto.TeaTrainingInfoDTO; import com.sztzjy.financial_bigdata.entity.tea_dto.TeaTrainingInfoDTO;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
@ -18,4 +19,7 @@ public interface ITeaGradeManageService {
TeaExaminationDetailsDto getCountChart(String examManageId,String classId); TeaExaminationDetailsDto getCountChart(String examManageId,String classId);
List<TeaTrainingDto> getTrainingDetailsInfo(String trainingId);
void exportTrainingDetailsInfo(HttpServletResponse response, String trainingId);
} }

@ -5,22 +5,21 @@ import com.github.pagehelper.PageInfo;
import com.sztzjy.financial_bigdata.entity.*; import com.sztzjy.financial_bigdata.entity.*;
import com.sztzjy.financial_bigdata.entity.tea_dto.TeaExamAndUserDto; import com.sztzjy.financial_bigdata.entity.tea_dto.TeaExamAndUserDto;
import com.sztzjy.financial_bigdata.entity.tea_dto.TeaExaminationDetailsDto; import com.sztzjy.financial_bigdata.entity.tea_dto.TeaExaminationDetailsDto;
import com.sztzjy.financial_bigdata.entity.tea_dto.TeaTrainingDto;
import com.sztzjy.financial_bigdata.entity.tea_dto.TeaTrainingInfoDTO; import com.sztzjy.financial_bigdata.entity.tea_dto.TeaTrainingInfoDTO;
import com.sztzjy.financial_bigdata.mapper.*; import com.sztzjy.financial_bigdata.mapper.*;
import com.sztzjy.financial_bigdata.service.tea.ITeaGradeManageService; import com.sztzjy.financial_bigdata.service.tea.ITeaGradeManageService;
import com.sztzjy.financial_bigdata.util.PageUtil; import com.sztzjy.financial_bigdata.util.PageUtil;
import com.sztzjy.financial_bigdata.util.excel.FilePortUtil; import com.sztzjy.financial_bigdata.util.excel.FilePortUtil;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.util.ArrayList; import java.util.*;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
/** /**
* @Author xcj * @Author xcj
@ -41,10 +40,11 @@ public class TeaGradeManageServiceImpl implements ITeaGradeManageService {
@Autowired @Autowired
private TeaExamManageMapper teaExamManageMapper; private TeaExamManageMapper teaExamManageMapper;
@Autowired @Autowired
private TeaAndStudentExamMapper teaAndStudentExamMapper; private SysCourseChapterMapper sysCourseChapterMapper;
@Autowired @Autowired
private StuStudentExamMapper studentExamMapper; private StuStudentExamMapper studentExamMapper;
@Override @Override
public PageInfo<TeaTrainingInfoDTO> getTrainingInfo(Integer index, Integer size, String schoolId, String keyWord, String classId) { public PageInfo<TeaTrainingInfoDTO> getTrainingInfo(Integer index, Integer size, String schoolId, String keyWord, String classId) {
List<TeaTrainingInfoDTO> list = getTeaTrainingInfoDTOS(schoolId, keyWord, classId); List<TeaTrainingInfoDTO> list = getTeaTrainingInfoDTOS(schoolId, keyWord, classId);
@ -83,7 +83,7 @@ public class TeaGradeManageServiceImpl implements ITeaGradeManageService {
//饼形图 //饼形图
@Override @Override
public TeaExaminationDetailsDto getCountChart(String examManageId,String classId) { public TeaExaminationDetailsDto getCountChart(String examManageId, String classId) {
int passNum = 0; //及格人数 int passNum = 0; //及格人数
int topScore = 0; //最高分 int topScore = 0; //最高分
int lowScore = 0; //最低分 int lowScore = 0; //最低分
@ -93,7 +93,7 @@ public class TeaGradeManageServiceImpl implements ITeaGradeManageService {
int generalNum = 0; //一般人数 60-79 int generalNum = 0; //一般人数 60-79
int failNumber = 0; //不及格人数 int failNumber = 0; //不及格人数
//根据考试ID查出所有user的数量 //根据考试ID查出所有user的数量
int sumUserCount = userMapper.getAllUsersByExamManageId(examManageId,classId); //获取老师指定的参加考试的人数 int sumUserCount = userMapper.getAllUsersByExamManageId(examManageId, classId); //获取老师指定的参加考试的人数
TeaExaminationDetailsDto teaExaminationDetailsDto = new TeaExaminationDetailsDto(); TeaExaminationDetailsDto teaExaminationDetailsDto = new TeaExaminationDetailsDto();
teaExaminationDetailsDto.setExamNum(sumUserCount); teaExaminationDetailsDto.setExamNum(sumUserCount);
TeaExamManageWithBLOBs teaExamManageWithBLOBs = teaExamManageMapper.selectByPrimaryKey(examManageId); TeaExamManageWithBLOBs teaExamManageWithBLOBs = teaExamManageMapper.selectByPrimaryKey(examManageId);
@ -102,7 +102,7 @@ public class TeaGradeManageServiceImpl implements ITeaGradeManageService {
StuStudentExamExample studentExamExample = new StuStudentExamExample(); StuStudentExamExample studentExamExample = new StuStudentExamExample();
StuStudentExamExample.Criteria criteria = studentExamExample.createCriteria(); StuStudentExamExample.Criteria criteria = studentExamExample.createCriteria();
criteria.andExamManageIdEqualTo(examManageId); criteria.andExamManageIdEqualTo(examManageId);
if (StringUtils.isNotBlank(classId)){ if (StringUtils.isNotBlank(classId)) {
criteria.andClassIdEqualTo(classId); criteria.andClassIdEqualTo(classId);
} }
List<StuStudentExamWithBLOBs> stuStudentExamWithBLOBs = studentExamMapper.selectByExampleWithBLOBs(studentExamExample); List<StuStudentExamWithBLOBs> stuStudentExamWithBLOBs = studentExamMapper.selectByExampleWithBLOBs(studentExamExample);
@ -161,6 +161,53 @@ public class TeaGradeManageServiceImpl implements ITeaGradeManageService {
} }
@Override
public List<TeaTrainingDto> getTrainingDetailsInfo(String userId) {
StuTrainingExample trainingExample = new StuTrainingExample();
trainingExample.createCriteria().andUserIdEqualTo(userId);
List<StuTrainingWithBLOBs> stuTrainingWithBLOBs = trainingMapper.selectByExampleWithBLOBs(trainingExample);
List<TeaTrainingDto> list =new ArrayList<>();
for (StuTrainingWithBLOBs stuTrainingWithBLOB : stuTrainingWithBLOBs) {
BigDecimal moduleScore = getModuleScore(stuTrainingWithBLOB);
SysCourseChapter sysCourseChapter = sysCourseChapterMapper.selectByPrimaryKey(stuTrainingWithBLOB.getChapterId());
TeaTrainingDto newData = new TeaTrainingDto();
BeanUtils.copyProperties(stuTrainingWithBLOBs, newData);
newData.setTaskModule(sysCourseChapter.getChapterName());
String reportId = stuTrainingWithBLOB.getReportId();
TrainingReport trainingReport = trainingReportMapper.selectByPrimaryKey(reportId);
newData.setReportScore(trainingReport.getReportScore());
newData.setModuleScore(moduleScore);
list.add(newData);
}
return list;
}
//计算模块得分
private BigDecimal getModuleScore(StuTrainingWithBLOBs stuTrainingWithBLOB) {
BigDecimal knowledgeSummaryScore = Optional.ofNullable(stuTrainingWithBLOB.getKnowledgeSummaryScore()).orElse(BigDecimal.ZERO);
BigDecimal resourceLearningScore = Optional.ofNullable(stuTrainingWithBLOB.getResourceLearningScore()).orElse(BigDecimal.ZERO);
BigDecimal learningEvalScore = Optional.ofNullable(stuTrainingWithBLOB.getLearningEvalScore()).orElse(BigDecimal.ZERO);
BigDecimal expTrainingScore = Optional.ofNullable(stuTrainingWithBLOB.getExpTrainingScore()).orElse(BigDecimal.ZERO);
return knowledgeSummaryScore.add(resourceLearningScore).add(learningEvalScore).add(expTrainingScore);
}
@Override
public void exportTrainingDetailsInfo(HttpServletResponse response, String trainingId) {
List<TeaTrainingDto> list = getTrainingDetailsInfo(trainingId);
//导出的表名
String title = IdUtil.simpleUUID();
//表中第一行表头字段
String[] headers = {"任务模块", "模块得分", "知识概要得分", "资源学习得分", "学习测评得分", "实验实训得分","实验报告得分"};
//具体需要写入excel需要哪些字段这些字段取自UserReward类也就是上面的实际数据结果集的泛型
List<String> listColumn = Arrays.asList("taskModule", "moduleScore", "knowledgeSummaryScore", "resourceLearningScore", "learningEvalScore", "expTrainingScore","reportScore");
try {
FilePortUtil.exportExcel(response, title, headers, list, listColumn);
} catch (Exception e) {
e.printStackTrace();
}
}
private List<TeaTrainingInfoDTO> getTeaTrainingInfoDTOS(String schoolId, String keyWord, String classId) { private List<TeaTrainingInfoDTO> getTeaTrainingInfoDTOS(String schoolId, String keyWord, String classId) {
StuUserExample userExample = new StuUserExample(); StuUserExample userExample = new StuUserExample();
@ -189,7 +236,7 @@ public class TeaGradeManageServiceImpl implements ITeaGradeManageService {
teaTrainingInfoDTO.setStudentId(stuUser.getStudentId()); teaTrainingInfoDTO.setStudentId(stuUser.getStudentId());
teaTrainingInfoDTO.setName(stuUser.getName()); teaTrainingInfoDTO.setName(stuUser.getName());
StuTrainingExample stuTrainingExample = new StuTrainingExample(); StuTrainingExample stuTrainingExample = new StuTrainingExample();
stuTrainingExample.createCriteria().andUserIdEqualTo(stuUser.getClassId()); stuTrainingExample.createCriteria().andUserIdEqualTo(stuUser.getUserid());
List<StuTrainingWithBLOBs> stuTrainingWithBLOBs = trainingMapper.selectByExampleWithBLOBs(stuTrainingExample); List<StuTrainingWithBLOBs> stuTrainingWithBLOBs = trainingMapper.selectByExampleWithBLOBs(stuTrainingExample);
for (StuTrainingWithBLOBs stuTrainingWithBLOB : stuTrainingWithBLOBs) { for (StuTrainingWithBLOBs stuTrainingWithBLOB : stuTrainingWithBLOBs) {
if (StringUtils.isNotBlank(stuTrainingWithBLOB.getReportId())) { //之展示提交完报告的数据 if (StringUtils.isNotBlank(stuTrainingWithBLOB.getReportId())) { //之展示提交完报告的数据
@ -217,6 +264,7 @@ public class TeaGradeManageServiceImpl implements ITeaGradeManageService {
totalScore = totalScore.add(learningEvalScore.multiply(learningEvalWeight).setScale(2, RoundingMode.HALF_UP)); totalScore = totalScore.add(learningEvalScore.multiply(learningEvalWeight).setScale(2, RoundingMode.HALF_UP));
} }
teaTrainingInfoDTO.setTotalScore(totalScore); teaTrainingInfoDTO.setTotalScore(totalScore);
teaTrainingInfoDTO.setTrainingId(stuTrainingWithBLOB.getTrainingId());
list.add(teaTrainingInfoDTO); list.add(teaTrainingInfoDTO);
} }
} }

Loading…
Cancel
Save