From 9eae6adbece0816ab25d9df1c9769375d0e9e15e Mon Sep 17 00:00:00 2001
From: xiaoCJ <406612557@qq.com>
Date: Tue, 29 Aug 2023 15:08:09 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=AE=97=E5=88=86=E6=8E=A5?=
 =?UTF-8?q?=E5=8F=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../controller/TrainingScoreController.java   |  4 +--
 .../com/ruoyi/system/domain/vo/ReportDto.java | 14 +++-----
 .../impl/SysTrainingScoreServiceImpl.java     | 35 ++++++++++---------
 3 files changed, 25 insertions(+), 28 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 ac03c43..1981e31 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
@@ -200,8 +200,8 @@ public class TrainingScoreController {
     //   老师端报告提交页面查询
     @GetMapping("/teacherGetReport")
     public PageInfo<ReportDto> getReport(@RequestParam Integer index, @RequestParam Integer size,
-                                         @RequestParam(required = false) Double operatorWeight,
-                                         @RequestParam(required = false) Double reportWeight,
+                                         @RequestParam Double operatorWeight,
+                                         @RequestParam Double reportWeight,
                                          @RequestParam(required = false) String keyWord,
                                          @RequestParam(required = false) String stuClass) {
         return trainingScoreService.teacherGetReport(index, size, reportWeight, operatorWeight, keyWord, stuClass);
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 305b92c..975f68f 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
@@ -34,10 +34,11 @@ public class ReportDto {
                 "stuClass='" + stuClass + '\'' +
                 ", stuNumber='" + stuNumber + '\'' +
                 ", name='" + name + '\'' +
-                ", reportSubmissionScore=" + trainingReportScore +
+                ", trainingReportScore=" + trainingReportScore +
                 ", trainingOperationScore=" + trainingOperationScore +
                 ", scoreTotal=" + scoreTotal +
                 ", fileName='" + fileName + '\'' +
+                ", userId=" + userId +
                 '}';
     }
 
@@ -65,10 +66,6 @@ public class ReportDto {
         this.name = name;
     }
 
-    public Double getReportSubmissionScore() {
-        return trainingReportScore;
-    }
-
     public Double getTrainingReportScore() {
         return trainingReportScore;
     }
@@ -77,14 +74,13 @@ public class ReportDto {
         this.trainingReportScore = trainingReportScore;
     }
 
-    public void setTrainingOperationScore(Double trainingOperationScore) {
-        this.trainingOperationScore = trainingOperationScore;
-    }
-
     public Double getTrainingOperationScore() {
         return trainingOperationScore;
     }
 
+    public void setTrainingOperationScore(Double trainingOperationScore) {
+        this.trainingOperationScore = trainingOperationScore;
+    }
 
     public Double getScoreTotal() {
         return scoreTotal;
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 a220398..e3f1987 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
@@ -23,6 +23,7 @@ import org.springframework.util.StringUtils;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
+import java.text.DecimalFormat;
 import java.util.*;
 
 @Service
@@ -149,13 +150,9 @@ public class SysTrainingScoreServiceImpl implements ISysTrainingScoreService {
                     if (sysTrainingScore.getTotalscore() != null &&
                             sysTrainingScore.getTrainingReportScore() != null &&
                             sysTrainingScore.getTrainingOperationScore() != null) {
-                        if (reportWeight==null){
-                            reportWeight=0.1;
-                        }if (operatorWeight==null){
-                            operatorWeight=0.9;
-                        }
-                        double reportScore = (sysTrainingScore.getTrainingReportScore().doubleValue() )* reportWeight;
+                        double reportScore = (sysTrainingScore.getTrainingReportScore().doubleValue()) * reportWeight;
                         double operatorScore = (sysTrainingScore.getTrainingOperationScore().doubleValue()) * operatorWeight;
+                        double totalScore = reportScore + operatorScore;
                         // 使用数据库中的分数创建ReportDto
                         ReportDto reportDto = new ReportDto(
                                 user.getStuClass(),
@@ -163,7 +160,7 @@ public class SysTrainingScoreServiceImpl implements ISysTrainingScoreService {
                                 user.getUserName(),
                                 reportScore,
                                 operatorScore,
-                                sysTrainingScore.getTotalscore(),
+                                totalScore,
                                 sysTrainingScore.getReportFilename()
                         );
                         reportDto.setUserId(user.getUserId());
@@ -189,13 +186,9 @@ public class SysTrainingScoreServiceImpl implements ISysTrainingScoreService {
                 if (sysTrainingScore.getTotalscore() != null &&
                         sysTrainingScore.getTrainingReportScore() != null &&
                         sysTrainingScore.getTrainingOperationScore() != null) {
-                    if (reportWeight==null){
-                        reportWeight=0.1;
-                    }if (operatorWeight==null){
-                        operatorWeight=0.9;
-                    }
-                    double reportScore = (sysTrainingScore.getTrainingReportScore().doubleValue() )* reportWeight;
+                    double reportScore = (sysTrainingScore.getTrainingReportScore().doubleValue()) * reportWeight;
                     double operatorScore = (sysTrainingScore.getTrainingOperationScore().doubleValue()) * operatorWeight;
+                    double totalScore = reportScore + operatorScore;
                     // 使用数据库中的分数创建ReportDto
                     ReportDto reportDto = new ReportDto(
                             sysUser.getStuClass(),
@@ -203,7 +196,7 @@ public class SysTrainingScoreServiceImpl implements ISysTrainingScoreService {
                             sysUser.getUserName(),
                             reportScore,
                             operatorScore,
-                            sysTrainingScore.getTotalscore(),
+                            totalScore,
                             sysTrainingScore.getReportFilename()
                     );
                     reportDto.setUserId(sysUser.getUserId());
@@ -215,7 +208,7 @@ public class SysTrainingScoreServiceImpl implements ISysTrainingScoreService {
                 }
             }
         }
-        PageInfo<ReportDto> pageInfo= new PageInfo<>(reportDtoList);
+        PageInfo<ReportDto> pageInfo = new PageInfo<>(reportDtoList);
         pageInfo.setTotal(total);
         return pageInfo;
     }
@@ -229,6 +222,7 @@ public class SysTrainingScoreServiceImpl implements ISysTrainingScoreService {
 
     //    算分
     private ReportDto createReportDto(SysTrainingScore sysTrainingScore, SysUser user, Double reportWeight, Double operatorWeight) {
+        DecimalFormat df = new DecimalFormat("#.##"); // 指定保留两位小数
         ReportDto reportDto = new ReportDto();
         reportDto.setFileName(sysTrainingScore.getReportFilename());
         Integer reportScore = sysTrainingScore.getTrainingReportScore();   // 报告成绩
@@ -258,6 +252,9 @@ public class SysTrainingScoreServiceImpl implements ISysTrainingScoreService {
         if (reportScore != null && trainingOperationScore != null) {
             Double resultReportScore = reportScore * reportWeight;  //报告成绩 加权重后
             Double resultOperationScore = trainingOperationScore * operatorWeight;  //操作成绩 加权重后
+
+            resultReportScore = Double.valueOf(df.format(resultReportScore)); // 格式化结果
+            resultOperationScore = Double.valueOf(df.format(resultOperationScore));
             Double totalScore = resultReportScore + resultOperationScore;   //总成绩
 
             reportDto.setTrainingReportScore(resultReportScore);
@@ -272,12 +269,16 @@ public class SysTrainingScoreServiceImpl implements ISysTrainingScoreService {
             return reportDto;
         }    //当两个成绩有一个时,也需要查询返回已有的 (不能算权重) 只有一个时不计算权重 否则查询一次就会算一次哦
         else if (reportScore != null) { // 当只有报告成绩可用时
-            reportDto.setTrainingReportScore(reportScore.doubleValue() * reportWeight);
+            double resultReportScore = reportScore.doubleValue() * reportWeight;
+            resultReportScore = Double.parseDouble(df.format(resultReportScore));
+            reportDto.setTrainingReportScore(resultReportScore);
             sysTrainingScore.setPreTrainingReportScore(reportScore);
             trainingScoreMapper.updateByPrimaryKeySelective(sysTrainingScore);
             return reportDto;
         } else if (trainingOperationScore != null) { // 当只有操作成绩可用时
-            reportDto.setTrainingOperationScore(trainingOperationScore.doubleValue() * operatorWeight);
+            double resultOperationScore = trainingOperationScore.doubleValue() * operatorWeight;
+            resultOperationScore = Double.parseDouble(df.format(resultOperationScore));
+            reportDto.setTrainingOperationScore(resultOperationScore);
             trainingScoreMapper.updateByPrimaryKeySelective(sysTrainingScore);
             return reportDto;
         } else {