From 8b831de35aba39c5b8f77b57959f7f4db8492a60 Mon Sep 17 00:00:00 2001 From: xiaoCJ <406612557@qq.com> Date: Mon, 8 Apr 2024 17:02:34 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=BB=83=E4=B9=A0=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F=E8=AF=A6=E6=83=85=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tea/TeaGradeManageController.java | 22 ++----- .../entity/tea_dto/TeaTrainingDto.java | 36 ++++++++++ .../entity/tea_dto/TeaTrainingInfoDTO.java | 3 + .../service/tea/ITeaGradeManageService.java | 4 ++ .../tea/impl/TeaGradeManageServiceImpl.java | 66 ++++++++++++++++--- 5 files changed, 105 insertions(+), 26 deletions(-) create mode 100644 src/main/java/com/sztzjy/financial_bigdata/entity/tea_dto/TeaTrainingDto.java diff --git a/src/main/java/com/sztzjy/financial_bigdata/controller/tea/TeaGradeManageController.java b/src/main/java/com/sztzjy/financial_bigdata/controller/tea/TeaGradeManageController.java index 0ee9402..eddd02e 100644 --- a/src/main/java/com/sztzjy/financial_bigdata/controller/tea/TeaGradeManageController.java +++ b/src/main/java/com/sztzjy/financial_bigdata/controller/tea/TeaGradeManageController.java @@ -5,10 +5,7 @@ import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.sztzjy.financial_bigdata.annotation.AnonymousAccess; import com.sztzjy.financial_bigdata.entity.*; -import com.sztzjy.financial_bigdata.entity.tea_dto.TeaExamAndUserDto; -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.entity.tea_dto.*; import com.sztzjy.financial_bigdata.mapper.*; import com.sztzjy.financial_bigdata.service.tea.ITeaGradeManageService; 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.ApiParam; 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.XWPFParagraph; 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.web.bind.annotation.*; -import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import java.io.FileOutputStream; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.*; @@ -165,11 +156,6 @@ public class TeaGradeManageController { } - @PostMapping("/getGradeDetails") - @ApiOperation("考试模式--成绩详情页面") //TODO 待写 成绩详情页面 - public void getGradeDetails() { - - } @PostMapping("/exportRank") @@ -268,13 +254,15 @@ public class TeaGradeManageController { @PostMapping("/getTrainingDetailsInfo") @ApiOperation("练习模式--详情页面展示") - public void getTrainingDetailsInfo() { //todo 待写 详情页面展示 + public ResultEntity> getTrainingDetailsInfo(@RequestParam String trainingId) { + return new ResultEntity<>(iTeaGradeManageService.getTrainingDetailsInfo(trainingId)); } @PostMapping("/exportTrainingDetailsInfo") @ApiOperation("练习模式--详情页面导出") - public void exportTrainingDetailsInfo(HttpServletResponse response) {//todo 待写 详情页面导出 + public void exportTrainingDetailsInfo(HttpServletResponse response,@RequestParam String trainingId) { + iTeaGradeManageService.exportTrainingDetailsInfo(response,trainingId); } diff --git a/src/main/java/com/sztzjy/financial_bigdata/entity/tea_dto/TeaTrainingDto.java b/src/main/java/com/sztzjy/financial_bigdata/entity/tea_dto/TeaTrainingDto.java new file mode 100644 index 0000000..c347c63 --- /dev/null +++ b/src/main/java/com/sztzjy/financial_bigdata/entity/tea_dto/TeaTrainingDto.java @@ -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; +} diff --git a/src/main/java/com/sztzjy/financial_bigdata/entity/tea_dto/TeaTrainingInfoDTO.java b/src/main/java/com/sztzjy/financial_bigdata/entity/tea_dto/TeaTrainingInfoDTO.java index 623a238..7e1b96e 100644 --- a/src/main/java/com/sztzjy/financial_bigdata/entity/tea_dto/TeaTrainingInfoDTO.java +++ b/src/main/java/com/sztzjy/financial_bigdata/entity/tea_dto/TeaTrainingInfoDTO.java @@ -13,6 +13,9 @@ import java.math.BigDecimal; @Data @NoArgsConstructor public class TeaTrainingInfoDTO { + @ApiModelProperty("排名") + private String trainingId; + @ApiModelProperty("排名") private int rank; diff --git a/src/main/java/com/sztzjy/financial_bigdata/service/tea/ITeaGradeManageService.java b/src/main/java/com/sztzjy/financial_bigdata/service/tea/ITeaGradeManageService.java index cb573e5..c65d631 100644 --- a/src/main/java/com/sztzjy/financial_bigdata/service/tea/ITeaGradeManageService.java +++ b/src/main/java/com/sztzjy/financial_bigdata/service/tea/ITeaGradeManageService.java @@ -2,6 +2,7 @@ package com.sztzjy.financial_bigdata.service.tea; import com.github.pagehelper.PageInfo; 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 javax.servlet.http.HttpServletResponse; @@ -18,4 +19,7 @@ public interface ITeaGradeManageService { TeaExaminationDetailsDto getCountChart(String examManageId,String classId); + List getTrainingDetailsInfo(String trainingId); + + void exportTrainingDetailsInfo(HttpServletResponse response, String trainingId); } diff --git a/src/main/java/com/sztzjy/financial_bigdata/service/tea/impl/TeaGradeManageServiceImpl.java b/src/main/java/com/sztzjy/financial_bigdata/service/tea/impl/TeaGradeManageServiceImpl.java index aca2fdc..9d48fdc 100644 --- a/src/main/java/com/sztzjy/financial_bigdata/service/tea/impl/TeaGradeManageServiceImpl.java +++ b/src/main/java/com/sztzjy/financial_bigdata/service/tea/impl/TeaGradeManageServiceImpl.java @@ -5,22 +5,21 @@ import com.github.pagehelper.PageInfo; import com.sztzjy.financial_bigdata.entity.*; 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.TeaTrainingDto; import com.sztzjy.financial_bigdata.entity.tea_dto.TeaTrainingInfoDTO; import com.sztzjy.financial_bigdata.mapper.*; import com.sztzjy.financial_bigdata.service.tea.ITeaGradeManageService; import com.sztzjy.financial_bigdata.util.PageUtil; import com.sztzjy.financial_bigdata.util.excel.FilePortUtil; import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletResponse; import java.math.BigDecimal; import java.math.RoundingMode; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Comparator; -import java.util.List; +import java.util.*; /** * @Author xcj @@ -41,10 +40,11 @@ public class TeaGradeManageServiceImpl implements ITeaGradeManageService { @Autowired private TeaExamManageMapper teaExamManageMapper; @Autowired - private TeaAndStudentExamMapper teaAndStudentExamMapper; + private SysCourseChapterMapper sysCourseChapterMapper; @Autowired private StuStudentExamMapper studentExamMapper; + @Override public PageInfo getTrainingInfo(Integer index, Integer size, String schoolId, String keyWord, String classId) { List list = getTeaTrainingInfoDTOS(schoolId, keyWord, classId); @@ -83,7 +83,7 @@ public class TeaGradeManageServiceImpl implements ITeaGradeManageService { //饼形图 @Override - public TeaExaminationDetailsDto getCountChart(String examManageId,String classId) { + public TeaExaminationDetailsDto getCountChart(String examManageId, String classId) { int passNum = 0; //及格人数 int topScore = 0; //最高分 int lowScore = 0; //最低分 @@ -93,7 +93,7 @@ public class TeaGradeManageServiceImpl implements ITeaGradeManageService { int generalNum = 0; //一般人数 60-79 int failNumber = 0; //不及格人数 //根据考试ID查出所有user的数量 - int sumUserCount = userMapper.getAllUsersByExamManageId(examManageId,classId); //获取老师指定的参加考试的人数 + int sumUserCount = userMapper.getAllUsersByExamManageId(examManageId, classId); //获取老师指定的参加考试的人数 TeaExaminationDetailsDto teaExaminationDetailsDto = new TeaExaminationDetailsDto(); teaExaminationDetailsDto.setExamNum(sumUserCount); TeaExamManageWithBLOBs teaExamManageWithBLOBs = teaExamManageMapper.selectByPrimaryKey(examManageId); @@ -102,7 +102,7 @@ public class TeaGradeManageServiceImpl implements ITeaGradeManageService { StuStudentExamExample studentExamExample = new StuStudentExamExample(); StuStudentExamExample.Criteria criteria = studentExamExample.createCriteria(); criteria.andExamManageIdEqualTo(examManageId); - if (StringUtils.isNotBlank(classId)){ + if (StringUtils.isNotBlank(classId)) { criteria.andClassIdEqualTo(classId); } List stuStudentExamWithBLOBs = studentExamMapper.selectByExampleWithBLOBs(studentExamExample); @@ -161,6 +161,53 @@ public class TeaGradeManageServiceImpl implements ITeaGradeManageService { } + @Override + public List getTrainingDetailsInfo(String userId) { + StuTrainingExample trainingExample = new StuTrainingExample(); + trainingExample.createCriteria().andUserIdEqualTo(userId); + List stuTrainingWithBLOBs = trainingMapper.selectByExampleWithBLOBs(trainingExample); + List 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 list = getTrainingDetailsInfo(trainingId); + //导出的表名 + String title = IdUtil.simpleUUID(); + //表中第一行表头字段 + String[] headers = {"任务模块", "模块得分", "知识概要得分", "资源学习得分", "学习测评得分", "实验实训得分","实验报告得分"}; + + //具体需要写入excel需要哪些字段,这些字段取自UserReward类,也就是上面的实际数据结果集的泛型 + List 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 getTeaTrainingInfoDTOS(String schoolId, String keyWord, String classId) { StuUserExample userExample = new StuUserExample(); @@ -189,7 +236,7 @@ public class TeaGradeManageServiceImpl implements ITeaGradeManageService { teaTrainingInfoDTO.setStudentId(stuUser.getStudentId()); teaTrainingInfoDTO.setName(stuUser.getName()); StuTrainingExample stuTrainingExample = new StuTrainingExample(); - stuTrainingExample.createCriteria().andUserIdEqualTo(stuUser.getClassId()); + stuTrainingExample.createCriteria().andUserIdEqualTo(stuUser.getUserid()); List stuTrainingWithBLOBs = trainingMapper.selectByExampleWithBLOBs(stuTrainingExample); for (StuTrainingWithBLOBs stuTrainingWithBLOB : stuTrainingWithBLOBs) { 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)); } teaTrainingInfoDTO.setTotalScore(totalScore); + teaTrainingInfoDTO.setTrainingId(stuTrainingWithBLOB.getTrainingId()); list.add(teaTrainingInfoDTO); } }