From f96bc3c0f061ed3d81a9aeef2c342a6fd3d1d2f0 Mon Sep 17 00:00:00 2001 From: xiaoCJ <406612557@qq.com> Date: Tue, 15 Aug 2023 18:32:36 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=8E=A5=E5=8F=A3=EF=BC=8C?= =?UTF-8?q?=E4=BF=AE=E6=94=B9BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/TrainingScoreController.java | 68 ++++++-- .../com/ruoyi/system/domain/vo/ReportDto.java | 30 ++-- .../impl/SysTrainingScoreServiceImpl.java | 151 +++++++++++++----- .../resources/mapper/system/SysUserMapper.xml | 4 +- 4 files changed, 190 insertions(+), 63 deletions(-) diff --git a/ruoyi-biemo/src/main/java/com/ruoyi/biemo/business/controller/TrainingScoreController.java b/ruoyi-biemo/src/main/java/com/ruoyi/biemo/business/controller/TrainingScoreController.java index fcd36ac..d297f17 100644 --- a/ruoyi-biemo/src/main/java/com/ruoyi/biemo/business/controller/TrainingScoreController.java +++ b/ruoyi-biemo/src/main/java/com/ruoyi/biemo/business/controller/TrainingScoreController.java @@ -28,6 +28,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -131,21 +132,46 @@ public class TrainingScoreController { //学生端实训报告提交 @PostMapping("/submitReport") - public AjaxResult submitReport(@RequestParam String content, - @RequestParam Long userId) { + public AjaxResult submitReport(@RequestBody JSONObject jsonObject) { + Long userId = jsonObject.getLong("userId"); + String content = jsonObject.getString("content"); return trainingScoreService.submitReport(content, userId); } + //学生端实验报告回显 + @GetMapping("/getSubmitAndSaveReport") + public AjaxResult getSubmitAndSaveReport(@RequestParam Long userId){ + SysTrainingScoreExample trainingScoreExample = new SysTrainingScoreExample(); + trainingScoreExample.createCriteria().andUseridEqualTo(userId); + List sysTrainingScores = trainingScoreMapper.selectByExample(trainingScoreExample); + if (!sysTrainingScores.isEmpty()){ + SysTrainingScore sysTrainingScore = sysTrainingScores.get(0); + return AjaxResult.success(sysTrainingScore.getReportContent()); + } + return null; + } + // 老师端文件下载 @GetMapping("/downloadReport") - public AjaxResult downloadReport(@RequestParam HttpServletResponse response, @RequestParam Long id) { + public AjaxResult downloadReport(@RequestParam Long id,HttpServletResponse response) { return trainingScoreService.downloadReport(response, id); } + // 老师端获取文件ID用于下载 + @GetMapping("/getReportIdByUserId") + public AjaxResult getReportIdByUserId(@RequestParam Long userId) { + SysTrainingScoreExample trainingScoreExample = new SysTrainingScoreExample(); + trainingScoreExample.createCriteria().andUseridEqualTo(userId); + List sysTrainingScores = trainingScoreMapper.selectByExample(trainingScoreExample); + if (!sysTrainingScores.isEmpty()) { + return AjaxResult.success(sysTrainingScores.get(0)); + } + return AjaxResult.error(404, "未查询到文件"); + } // 老师端按班级导出 @PostMapping("/exportByClass") - public void exportByClass(HttpServletResponse response, String className) { + public void exportByClass(HttpServletResponse response,@RequestBody String className) { // 根据班级名称查询对应的用户列表 List userList = sysUserMapper.selectClassStuNumberNameByClass(className); SysTrainingScoreExample trainingScoreExample = new SysTrainingScoreExample(); @@ -158,13 +184,13 @@ public class TrainingScoreController { ReportDto reportDto = new ReportDto(); reportDto.setFileName(sysTrainingScore.getReportFilename()); if (sysTrainingScore.getReportSubmissionScore() == null) { - reportDto.setReportSubmissionScore(0); + reportDto.setTrainingReportScore(0.0); } if (sysTrainingScore.getTrainingOperationScore() == null) { - reportDto.setTrainingOperationScore(0); + reportDto.setTrainingOperationScore(0.0); } - reportDto.setReportSubmissionScore(sysTrainingScore.getReportSubmissionScore()); - reportDto.setTrainingOperationScore(sysTrainingScore.getTrainingOperationScore()); + reportDto.setTrainingReportScore(sysTrainingScore.getTrainingReportScore().doubleValue()); + reportDto.setTrainingOperationScore(sysTrainingScore.getTrainingOperationScore().doubleValue()); reportDto.setScoreTotal(sysTrainingScore.getTotalscore()); reportDto.setName(sysUser.getUserName()); reportDto.setStuClass(sysUser.getStuClass()); @@ -217,7 +243,9 @@ public class TrainingScoreController { // 老师端保存修改权重 @PutMapping("/saveOrUpdateWeight") - public void saveWeight(@RequestParam Double reportWeight, @RequestParam Double operatorWeight) { + public void saveWeight(@RequestBody JSONObject jsonObject) { + Double reportWeight = jsonObject.getDouble("reportWeight"); + Double operatorWeight = jsonObject.getDouble("operatorWeight"); SysGradeWeight sysGradeWeight = gradeWeightMapper.selectByPrimaryKey(1L); sysGradeWeight.setReportWeight(reportWeight); sysGradeWeight.setOperatorWeight(operatorWeight); @@ -229,4 +257,24 @@ public class TrainingScoreController { public SysGradeWeight getWeight() { return gradeWeightMapper.selectByPrimaryKey(1L); } -} + + // 老师端右侧成绩(为经过权重计算) + @GetMapping("/getReportScore") + public Map getWeightReport(){ + SysTrainingScoreExample trainingScoreExample = new SysTrainingScoreExample(); + List sysTrainingScores = trainingScoreMapper.selectByExample(trainingScoreExample); + Map resultScores= new HashMap<>(); + if (!sysTrainingScores.isEmpty()){ + for (SysTrainingScore sysTrainingScore : sysTrainingScores) { + if (sysTrainingScore.getTrainingReportScore() != null) { + Integer trainingReportScore = sysTrainingScore.getTrainingReportScore(); + Long userid = sysTrainingScore.getUserid(); + resultScores.put(userid,trainingReportScore); + } + } + return resultScores; + } + return null; + } + +} \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/ReportDto.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/ReportDto.java index d9437da..62048e6 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/ReportDto.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/ReportDto.java @@ -5,8 +5,8 @@ public class ReportDto { private String stuClass; private String stuNumber; private String name; - private Integer reportSubmissionScore; //报告提交成绩 - private Integer trainingOperationScore; //实验操作成绩 + private Double trainingReportScore; //报告提交成绩 + private Double trainingOperationScore; //实验操作成绩 private Double scoreTotal; //总成绩 private String fileName; //上传报告名称 private Long userId; @@ -25,7 +25,7 @@ public class ReportDto { "stuClass='" + stuClass + '\'' + ", stuNumber='" + stuNumber + '\'' + ", name='" + name + '\'' + - ", reportSubmissionScore=" + reportSubmissionScore + + ", reportSubmissionScore=" + trainingReportScore + ", trainingOperationScore=" + trainingOperationScore + ", scoreTotal=" + scoreTotal + ", fileName='" + fileName + '\'' + @@ -56,22 +56,28 @@ public class ReportDto { this.name = name; } - public Integer getReportSubmissionScore() { - return reportSubmissionScore; + public Double getReportSubmissionScore() { + return trainingReportScore; } - public void setReportSubmissionScore(Integer reportSubmissionScore) { - this.reportSubmissionScore = reportSubmissionScore; + public Double getTrainingReportScore() { + return trainingReportScore; } - public Integer getTrainingOperationScore() { - return trainingOperationScore; + public void setTrainingReportScore(Double trainingReportScore) { + this.trainingReportScore = trainingReportScore; } - public void setTrainingOperationScore(Integer trainingOperationScore) { + public void setTrainingOperationScore(Double trainingOperationScore) { this.trainingOperationScore = trainingOperationScore; } + public Double getTrainingOperationScore() { + return trainingOperationScore; + } + + + public Double getScoreTotal() { return scoreTotal; } @@ -91,11 +97,11 @@ public class ReportDto { public ReportDto() { } - public ReportDto(String stuClass, String stuNumber, String name, Integer reportSubmissionScore, Integer trainingOperationScore, Double scoreTotal, String fileName) { + public ReportDto(String stuClass, String stuNumber, String name, Double trainingReportScore, Double trainingOperationScore, Double scoreTotal, String fileName) { this.stuClass = stuClass; this.stuNumber = stuNumber; this.name = name; - this.reportSubmissionScore = reportSubmissionScore; + this.trainingReportScore = trainingReportScore; this.trainingOperationScore = trainingOperationScore; this.scoreTotal = scoreTotal; this.fileName = fileName; diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTrainingScoreServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTrainingScoreServiceImpl.java index 9688d0d..921eca5 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTrainingScoreServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTrainingScoreServiceImpl.java @@ -37,7 +37,7 @@ public class SysTrainingScoreServiceImpl implements ISysTrainingScoreService { SysGradeWeightMapper gradeWeightMapper; @Override - public void deleteByUserId(Long userId){ + public void deleteByUserId(Long userId) { SysTrainingScoreExample example = new SysTrainingScoreExample(); SysTrainingScoreExample.Criteria criteria = example.createCriteria(); criteria.andUseridEqualTo(userId); @@ -46,7 +46,7 @@ public class SysTrainingScoreServiceImpl implements ISysTrainingScoreService { @Override public void insertByUserId(Long userId) { - SysTrainingScore sysTrainingScore=new SysTrainingScore(); + SysTrainingScore sysTrainingScore = new SysTrainingScore(); sysTrainingScore.setId(String.valueOf(UUID.randomUUID())); sysTrainingScore.setUserid(userId); sysTrainingScore.setStatus(0); @@ -79,9 +79,9 @@ public class SysTrainingScoreServiceImpl implements ISysTrainingScoreService { SysTrainingScore trainingScore = new SysTrainingScore(); trainingScore.setId(sysTrainingScore.getId()); trainingScore.set(controlsName, String.valueOf(score)); - if(controlsName.equals("dataCollectionStepDescription")){ - trainingScore.set("dataCollectionToolbarButton","2"); - sysTrainingScore.set("dataCollectionToolbarButton","2"); + if (controlsName.equals("dataCollectionStepDescription")) { + trainingScore.set("dataCollectionToolbarButton", "2"); + sysTrainingScore.set("dataCollectionToolbarButton", "2"); } trainingScoreMapper.updateByPrimaryKeySelective(trainingScore); sysTrainingScore.set(controlsName, String.valueOf(score)); @@ -97,36 +97,106 @@ public class SysTrainingScoreServiceImpl implements ISysTrainingScoreService { } - @Override - public PageInfo teacherGetReport(Integer index, Integer size, Double reportWeight, Double operatorWeight, String keyWord, String stuClass) { - PageHelper.startPage(index, size); - List reportDtoList = new ArrayList<>(); - SysTrainingScoreExample trainingScoreExample = new SysTrainingScoreExample(); - if (stuClass != null || keyWord != null) { - List users = sysUserMapper.selectByNameStuNum(stuClass, keyWord); - for (SysUser user : users) { - trainingScoreExample.createCriteria().andUseridEqualTo(user.getUserId()); - List sysTrainingScores = trainingScoreMapper.selectByExample(trainingScoreExample); - if (!sysTrainingScores.isEmpty()) { - SysTrainingScore sysTrainingScore = sysTrainingScores.get(0); +// @Override +// public PageInfo teacherGetReport(Integer index, Integer size, Double reportWeight, Double operatorWeight, String keyWord, String stuClass) { +// PageHelper.startPage(index, size); +// List reportDtoList = new ArrayList<>(); +// if (stuClass != null || keyWord != null) { +// List users = sysUserMapper.selectByNameStuNum(stuClass, keyWord); +// for (SysUser user : users) { +// SysTrainingScoreExample trainingScoreExample = new SysTrainingScoreExample(); +// trainingScoreExample.createCriteria().andUseridEqualTo(user.getUserId()); +// List sysTrainingScores = trainingScoreMapper.selectByExample(trainingScoreExample); +// if (!sysTrainingScores.isEmpty()) { +// SysTrainingScore sysTrainingScore = sysTrainingScores.get(0); +// ReportDto reportDto = createReportDto(sysTrainingScore, user, reportWeight, operatorWeight); +// reportDtoList.add(reportDto); +// } +// } +// return new PageInfo<>(reportDtoList); +// } +// List userList = sysUserMapper.selectClassStuNumberName(); +// for (SysUser sysUser : userList) { +// SysTrainingScoreExample trainingScoreExample = new SysTrainingScoreExample(); +// trainingScoreExample.createCriteria().andUseridEqualTo(sysUser.getUserId()); +// List sysTrainingScores = trainingScoreMapper.selectByExample(trainingScoreExample); +// if (!sysTrainingScores.isEmpty()) { +// SysTrainingScore sysTrainingScore = sysTrainingScores.get(0); +// ReportDto reportDto = createReportDto(sysTrainingScore, sysUser, reportWeight, operatorWeight); +// reportDtoList.add(reportDto); +// } +// } +// return new PageInfo<>(reportDtoList); +// } + +@Override +public PageInfo teacherGetReport(Integer index, Integer size, Double reportWeight, Double operatorWeight, String keyWord, String stuClass) { + PageHelper.startPage(index, size); + List reportDtoList = new ArrayList<>(); + if (stuClass != null || keyWord != null) { + List users = sysUserMapper.selectByNameStuNum(stuClass, keyWord); + for (SysUser user : users) { + SysTrainingScoreExample trainingScoreExample = new SysTrainingScoreExample(); + trainingScoreExample.createCriteria().andUseridEqualTo(user.getUserId()); + List sysTrainingScores = trainingScoreMapper.selectByExample(trainingScoreExample); + if (!sysTrainingScores.isEmpty()) { + SysTrainingScore sysTrainingScore = sysTrainingScores.get(0); + // 检查是否已经存在分数 + if (sysTrainingScore.getTotalscore() != null && + sysTrainingScore.getTrainingReportScore() != null && + sysTrainingScore.getTrainingOperationScore() != null) { + // 使用数据库中的分数创建ReportDto + ReportDto reportDto = new ReportDto( + user.getStuClass(), + user.getStudentNumber(), + user.getUserName(), + sysTrainingScore.getTrainingReportScore().doubleValue(), + sysTrainingScore.getTrainingOperationScore().doubleValue(), + sysTrainingScore.getTotalscore(), + sysTrainingScore.getReportFilename() + ); + reportDto.setUserId(user.getUserId()); + reportDtoList.add(reportDto); + } else { + // 进行计算分数的逻辑,调用createReportDto方法 ReportDto reportDto = createReportDto(sysTrainingScore, user, reportWeight, operatorWeight); reportDtoList.add(reportDto); } } - return new PageInfo<>(reportDtoList); } - List userList = sysUserMapper.selectClassStuNumberName(); - for (SysUser sysUser : userList) { - trainingScoreExample.createCriteria().andUseridEqualTo(sysUser.getUserId()); - List sysTrainingScores = trainingScoreMapper.selectByExample(trainingScoreExample); - if (!sysTrainingScores.isEmpty()) { - SysTrainingScore sysTrainingScore = sysTrainingScores.get(0); + return new PageInfo<>(reportDtoList); + } + List userList = sysUserMapper.selectClassStuNumberName(); + for (SysUser sysUser : userList) { + SysTrainingScoreExample trainingScoreExample = new SysTrainingScoreExample(); + trainingScoreExample.createCriteria().andUseridEqualTo(sysUser.getUserId()); + List sysTrainingScores = trainingScoreMapper.selectByExample(trainingScoreExample); + if (!sysTrainingScores.isEmpty()) { + SysTrainingScore sysTrainingScore = sysTrainingScores.get(0); + if (sysTrainingScore.getTotalscore() != null && + sysTrainingScore.getTrainingReportScore() != null && + sysTrainingScore.getTrainingOperationScore() != null) { + // 使用数据库中的分数创建ReportDto + ReportDto reportDto = new ReportDto( + sysUser.getStuClass(), + sysUser.getStudentNumber(), + sysUser.getUserName(), + sysTrainingScore.getTrainingReportScore().doubleValue(), + sysTrainingScore.getTrainingOperationScore().doubleValue(), + sysTrainingScore.getTotalscore(), + sysTrainingScore.getReportFilename() + ); + reportDto.setUserId(sysUser.getUserId()); + reportDtoList.add(reportDto); + } else { + // 进行计算分数的逻辑,调用createReportDto方法 ReportDto reportDto = createReportDto(sysTrainingScore, sysUser, reportWeight, operatorWeight); reportDtoList.add(reportDto); } } - return new PageInfo<>(reportDtoList); } + return new PageInfo<>(reportDtoList); +} @Override public List selectAllReportContent() { @@ -138,15 +208,13 @@ public class SysTrainingScoreServiceImpl implements ISysTrainingScoreService { private ReportDto createReportDto(SysTrainingScore sysTrainingScore, SysUser user, Double reportWeight, Double operatorWeight) { ReportDto reportDto = new ReportDto(); reportDto.setFileName(sysTrainingScore.getReportFilename()); - Integer reportSubmissionScore = sysTrainingScore.getReportSubmissionScore(); // 报告成绩 - reportDto.setReportSubmissionScore(reportSubmissionScore); + Integer reportScore = sysTrainingScore.getTrainingReportScore(); // 报告成绩 Integer trainingOperationScore = sysTrainingScore.getTrainingOperationScore(); // 操作成绩 - reportDto.setTrainingOperationScore(trainingOperationScore); reportDto.setName(user.getUserName()); reportDto.setStuClass(user.getStuClass()); reportDto.setStuNumber(user.getStudentNumber()); reportDto.setUserId(user.getUserId()); - if (reportSubmissionScore != null && trainingOperationScore != null) { + if (reportScore != null &&reportScore!=0 && trainingOperationScore != null&&trainingOperationScore != 0) { SysGradeWeight sysGradeWeight = gradeWeightMapper.selectByPrimaryKey(1L); Double oldReportWeight = sysGradeWeight.getReportWeight(); Double oldOperatorWeight = sysGradeWeight.getOperatorWeight(); @@ -165,10 +233,16 @@ public class SysTrainingScoreServiceImpl implements ISysTrainingScoreService { } else { operatorWeight = 0.9; // 设置默认权重 } + Double resultReportScore = reportScore * reportWeight; //报告成绩 加权重后 + Double resultOperationScore = trainingOperationScore * operatorWeight; //操作成绩 加权重后 + Double totalScore = resultReportScore + resultOperationScore; //总成绩 - Double totalScore = (reportSubmissionScore * reportWeight) + (trainingOperationScore * operatorWeight); + reportDto.setTrainingReportScore(resultReportScore); + reportDto.setTrainingOperationScore(resultOperationScore); reportDto.setScoreTotal(totalScore); sysTrainingScore.setTotalscore(totalScore); + sysTrainingScore.setTrainingReportScore(resultReportScore.intValue()); + sysTrainingScore.setTrainingOperationScore(resultOperationScore.intValue()); trainingScoreMapper.updateByPrimaryKeySelective(sysTrainingScore); gradeWeightMapper.updateByPrimaryKeySelective(sysGradeWeight); } else { @@ -195,14 +269,14 @@ public class SysTrainingScoreServiceImpl implements ISysTrainingScoreService { sysTrainingScore.setReportUploadPath(filePath); sysTrainingScore.setReportFilename(fileName); trainingScoreMapper.updateByExample(sysTrainingScore, sysTrainingScoreExample); - return AjaxResult.error("上传成功"); + return AjaxResult.success("上传成功"); } else { if (sysTrainingScore != null) { sysTrainingScore.setReportUploadPath(filePath); sysTrainingScore.setReportFilename(fileName); } trainingScoreMapper.updateByPrimaryKeySelective(sysTrainingScore); - return AjaxResult.error("上传成功"); + return AjaxResult.success("上传成功"); } } return null; @@ -223,7 +297,7 @@ public class SysTrainingScoreServiceImpl implements ISysTrainingScoreService { sysTrainingScore.setReportContent(content); trainingScoreMapper.updateByExample(sysTrainingScore, trainingScoreExample); } - return null; + return AjaxResult.success("提交成功"); } @@ -234,13 +308,12 @@ public class SysTrainingScoreServiceImpl implements ISysTrainingScoreService { @Override public AjaxResult downloadReport(HttpServletResponse response, Long id) { + SysTrainingScoreExample trainingScoreExample = new SysTrainingScoreExample(); + trainingScoreExample.createCriteria().andUseridEqualTo(id); // 根据id获取文件路径信息 - SysTrainingScoreExample sysTrainingScoreExample = new SysTrainingScoreExample(); - sysTrainingScoreExample.createCriteria().andUseridEqualTo(id); - List sysTrainingScores = trainingScoreMapper.selectByExample(sysTrainingScoreExample); - + List sysTrainingScores = trainingScoreMapper.selectByExample(trainingScoreExample); if (sysTrainingScores.isEmpty()) { - return AjaxResult.error(404,"报告不存在"); + return AjaxResult.error(404, "报告不存在"); } SysTrainingScore sysTrainingScore = sysTrainingScores.get(0); String filePath = sysTrainingScore.getReportUploadPath(); @@ -250,7 +323,7 @@ public class SysTrainingScoreServiceImpl implements ISysTrainingScoreService { // 下载文件 fileUtil.download(response, fileName, filePath); } catch (IllegalArgumentException e) { - return AjaxResult.error(400,"下载失败"); + return AjaxResult.error(400, "下载失败"); } return AjaxResult.success("下载成功"); } diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml index 9e90ecf..1f1aaf8 100644 --- a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -87,12 +87,12 @@