新增总成绩字段,以及部分接口

master
xiaoCJ 2 years ago
parent b22851c553
commit 1dfd9f2b44

@ -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);
}

@ -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);
}

@ -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,7 +212,6 @@ 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();
@ -234,6 +230,7 @@ public class SysTrainingScoreServiceImpl implements ISysTrainingScoreService {
} 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;
}
}

Loading…
Cancel
Save