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 17025c6..e685183 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
@@ -1,14 +1,9 @@
 package com.ruoyi.biemo.business.controller;
 
 import com.alibaba.fastjson.JSONObject;
-
 import com.github.pagehelper.PageInfo;
-import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.domain.entity.SysUser;
-import com.ruoyi.common.enums.BusinessType;
-import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.system.domain.SysGradeWeight;
 import com.ruoyi.system.domain.SysTrainingScore;
@@ -20,9 +15,7 @@ import com.ruoyi.system.mapper.SysGradeWeightMapper;
 import com.ruoyi.system.mapper.SysTrainingScoreMapper;
 import com.ruoyi.system.mapper.SysUserMapper;
 import com.ruoyi.system.service.ISysTrainingScoreService;
-import com.ruoyi.system.service.ISysUserService;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -98,7 +91,7 @@ public class TrainingScoreController {
         }
         for (int i = 0; i < trainingScoreList.size(); i++) {
             SysTrainingScore sysTrainingScore = trainingScoreList.get(i);
-            if (sysTrainingScore.getReportContent()==null || "".equals(sysTrainingScore.getReportContent())){
+            if (sysTrainingScore.getReportContent() == null || "".equals(sysTrainingScore.getReportContent())) {
                 continue;
             }
             String reportContent = sysTrainingScore.getReportContent();
@@ -136,7 +129,7 @@ public class TrainingScoreController {
         Long userId = jsonObject.getLong("userId");
         String content = jsonObject.getString("content");
         boolean isSubmit = jsonObject.getBoolean("isSubmit");
-        return trainingScoreService.saveOrSubmitReport(content, userId,isSubmit);
+        return trainingScoreService.saveOrSubmitReport(content, userId, isSubmit);
     }
 
     //学生端实验报告回显
@@ -222,19 +215,26 @@ public class TrainingScoreController {
     }
 
 
-    //   老师端报告评分
+    //    //   老师端报告评分
+//    @PostMapping("/reportGrade")
+//    public void reportGrade(@RequestBody JSONObject jsonObject) {
+//        Integer reportScore = jsonObject.getInteger("reportScore");
+//        Long userId = jsonObject.getLong("userId");
+//        SysTrainingScoreExample trainingScoreExample = new SysTrainingScoreExample();
+//        trainingScoreExample.createCriteria().andUseridEqualTo(userId);
+//        List<SysTrainingScore> sysTrainingScores = trainingScoreMapper.selectByExample(trainingScoreExample);
+//        if (!sysTrainingScores.isEmpty()) {
+//            SysTrainingScore sysTrainingScore = sysTrainingScores.get(0);
+//            sysTrainingScore.setTrainingReportScore(reportScore);
+//            trainingScoreMapper.updateByPrimaryKeySelective(sysTrainingScore);
+//        }
+//    }
+//   老师端报告评分
     @PostMapping("/reportGrade")
-    public void reportGrade(@RequestBody JSONObject jsonObject) {
+    public Map<Long, Integer> reportGrade(@RequestBody JSONObject jsonObject) {
         Integer reportScore = jsonObject.getInteger("reportScore");
         Long userId = jsonObject.getLong("userId");
-        SysTrainingScoreExample trainingScoreExample = new SysTrainingScoreExample();
-        trainingScoreExample.createCriteria().andUseridEqualTo(userId);
-        List<SysTrainingScore> sysTrainingScores = trainingScoreMapper.selectByExample(trainingScoreExample);
-        if (!sysTrainingScores.isEmpty()) {
-            SysTrainingScore sysTrainingScore = sysTrainingScores.get(0);
-            sysTrainingScore.setTrainingReportScore(reportScore);
-            trainingScoreMapper.updateByPrimaryKeySelective(sysTrainingScore);
-        }
+        return trainingScoreService.reportGrade(reportScore, userId);
     }
 
 
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysTrainingScoreService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysTrainingScoreService.java
index 2263125..84e3010 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysTrainingScoreService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysTrainingScoreService.java
@@ -1,5 +1,6 @@
 package com.ruoyi.system.service;
 
+import com.alibaba.fastjson2.JSONObject;
 import com.github.pagehelper.PageInfo;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.system.domain.SysTrainingScore;
@@ -8,6 +9,7 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
 import java.util.List;
+import java.util.Map;
 
 public interface ISysTrainingScoreService {
 
@@ -32,4 +34,6 @@ public interface ISysTrainingScoreService {
     void insertByUserId(Long userId);
 
     AjaxResult downloadReport(HttpServletResponse response, Long id);
+
+    Map<Long,Integer> reportGrade(Integer reportScore, Long userId);
 }
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 aa1f85f..8bb7a34 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
@@ -20,10 +20,7 @@ import org.springframework.util.StringUtils;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
+import java.util.*;
 
 @Service
 public class SysTrainingScoreServiceImpl implements ISysTrainingScoreService {
@@ -215,25 +212,25 @@ public class SysTrainingScoreServiceImpl implements ISysTrainingScoreService {
         reportDto.setStuClass(user.getStuClass());
         reportDto.setStuNumber(user.getStudentNumber());
         reportDto.setUserId(user.getUserId());
-        if (reportScore != null && trainingOperationScore != null) {
-            SysGradeWeight sysGradeWeight = gradeWeightMapper.selectByPrimaryKey(1L);
-            Double oldReportWeight = sysGradeWeight.getReportWeight();
-            Double oldOperatorWeight = sysGradeWeight.getOperatorWeight();
-            if (reportWeight != null) {
-                sysGradeWeight.setReportWeight(reportWeight);
-            } else if (oldReportWeight != null) {
-                reportWeight = oldReportWeight;
-            } else {
-                reportWeight = 0.1; // 设置默认权重
-            }
+        SysGradeWeight sysGradeWeight = gradeWeightMapper.selectByPrimaryKey(1L);
+        Double oldReportWeight = sysGradeWeight.getReportWeight();
+        Double oldOperatorWeight = sysGradeWeight.getOperatorWeight();
+        if (reportWeight != null) {
+            sysGradeWeight.setReportWeight(reportWeight);
+        } else if (oldReportWeight != null) {
+            reportWeight = oldReportWeight;
+        } else {
+            reportWeight = 0.1; // 设置默认权重
+        }
 
-            if (operatorWeight != null) {
-                sysGradeWeight.setOperatorWeight(operatorWeight);
-            } else if (oldOperatorWeight != null) {
-                operatorWeight = oldOperatorWeight;
-            } else {
-                operatorWeight = 0.9; // 设置默认权重
-            }
+        if (operatorWeight != null) {
+            sysGradeWeight.setOperatorWeight(operatorWeight);
+        } else if (oldOperatorWeight != null) {
+            operatorWeight = oldOperatorWeight;
+        } else {
+            operatorWeight = 0.9; // 设置默认权重
+        }
+        if (reportScore != null && trainingOperationScore != null) {
             Double resultReportScore = reportScore * reportWeight;  //报告成绩 加权重后
             Double resultOperationScore = trainingOperationScore * operatorWeight;  //操作成绩 加权重后
             Double totalScore = resultReportScore + resultOperationScore;   //总成绩
@@ -249,11 +246,11 @@ public class SysTrainingScoreServiceImpl implements ISysTrainingScoreService {
             return reportDto;
         }    //当两个成绩有一个时,也需要查询返回已有的 (不能算权重) 只有一个时不计算权重 否则查询一次就会算一次哦
         else if (reportScore != null) { // 当只有报告成绩可用时
-            reportDto.setTrainingReportScore(reportScore.doubleValue());
+            reportDto.setTrainingReportScore(reportScore.doubleValue() * reportWeight);
             trainingScoreMapper.updateByPrimaryKeySelective(sysTrainingScore);
             return reportDto;
         } else if (trainingOperationScore != null) { // 当只有操作成绩可用时
-            reportDto.setTrainingOperationScore(trainingOperationScore.doubleValue());
+            reportDto.setTrainingOperationScore(trainingOperationScore.doubleValue() * operatorWeight);
             trainingScoreMapper.updateByPrimaryKeySelective(sysTrainingScore);
             return reportDto;
         } else {
@@ -367,4 +364,29 @@ public class SysTrainingScoreServiceImpl implements ISysTrainingScoreService {
         }
         return AjaxResult.success("下载成功");
     }
+
+
+    //修改实训报告分数,并重新算分
+    @Override
+    public Map<Long,Integer> reportGrade(Integer reportScore, Long userId) {
+        Map<Long,Integer> resultMap = new HashMap<>();
+        SysTrainingScoreExample trainingScoreExample = new SysTrainingScoreExample();
+        trainingScoreExample.createCriteria().andUseridEqualTo(userId);
+        List<SysTrainingScore> sysTrainingScores = trainingScoreMapper.selectByExample(trainingScoreExample);
+        if (!sysTrainingScores.isEmpty()) {
+            SysTrainingScore sysTrainingScore = sysTrainingScores.get(0);
+            sysTrainingScore.setTrainingReportScore(reportScore);
+            trainingScoreMapper.updateByPrimaryKeySelective(sysTrainingScore);
+            // 调用重新计算分数和总成绩的逻辑
+            SysUser user = sysUserMapper.selectUserById(userId);
+            SysGradeWeight sysGradeWeight = gradeWeightMapper.selectByPrimaryKey(1L);
+            Double operatorWeight = sysGradeWeight.getOperatorWeight();
+            Double reportWeight = sysGradeWeight.getReportWeight();
+            //修改完调用算分方法重新算分
+            createReportDto(sysTrainingScore, user, reportWeight, operatorWeight);
+            resultMap.put(userId,reportScore);
+            return resultMap;
+        }
+        return null;
+    }
 }