whb 4 months ago
commit efb7b83220

@ -86,7 +86,10 @@ public class ExamController {
@GetMapping("startCase")
@ApiOperation("**案例考核开始考试")
@AnonymousAccess
public ResultEntity<List<TestTestSysCaseQuestionStepWithBLOBs>> startCase(@RequestParam String examManageId,@RequestParam String userId,@RequestParam String classId,@ApiParam("默认差第一条 传递first")@RequestParam String caseId){
public ResultEntity<List<TestTestSysCaseQuestionStepWithBLOBs>> startCase(@RequestParam String examManageId,
@RequestParam String userId,
@RequestParam String classId,
@ApiParam("默认差第一条 传递first")@RequestParam String caseId){
List<TestTestSysCaseQuestionStepWithBLOBs> list= null;
try {
list = examService.startCase(examManageId,userId,classId,caseId);

@ -5,13 +5,14 @@ import com.sztzjy.financial_bigdata.annotation.AnonymousAccess;
import com.sztzjy.financial_bigdata.entity.StuTrainingExample;
import com.sztzjy.financial_bigdata.entity.StuTrainingWithBLOBs;
import com.sztzjy.financial_bigdata.entity.SysKnowledgeSummary;
import com.sztzjy.financial_bigdata.entity.SysObjectiveQuestionExample;
import com.sztzjy.financial_bigdata.entity.SysWeight;
import com.sztzjy.financial_bigdata.entity.resource_entity.TestSysKnowledgeSummary;
import com.sztzjy.financial_bigdata.entity.stu_dto.ReceivingObject;
import com.sztzjy.financial_bigdata.mapper.StuTrainingMapper;
import com.sztzjy.financial_bigdata.mapper.SysKnowledgeSummaryMapper;
import com.sztzjy.financial_bigdata.mapper.SysObjectiveQuestionMapper;
import com.sztzjy.financial_bigdata.mapper.SysWeightMapper;
import com.sztzjy.financial_bigdata.resourceCenterAPI.KnowledgeSummaryApi;
import com.sztzjy.financial_bigdata.service.tea.ITeaGradeManageService;
import com.sztzjy.financial_bigdata.util.PdfUtil;
import com.sztzjy.financial_bigdata.util.ResultEntity;
import com.sztzjy.financial_bigdata.util.file.IFileUtil;
@ -32,6 +33,7 @@ import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.List;
/**
@ -50,6 +52,10 @@ public class StuKnowledgeNote {
private String filePath;
@Autowired
private SysKnowledgeSummaryMapper sysKnowledgeSummaryMapper;
@Autowired
private SysWeightMapper sysWeightMapper;
@Autowired
private ITeaGradeManageService iTeaGradeManageService;
@AnonymousAccess
@ApiOperation("知识笔记-保存")
@ -112,10 +118,13 @@ public class StuKnowledgeNote {
@AnonymousAccess
@ApiOperation("***知识概要-获取页面")
@PostMapping("getSysKnowledgeSummaryByChapterId")
public ResultEntity<TestSysKnowledgeSummary> getSysKnowledgeSummaryByChapterId(@RequestParam String chapterId,@RequestParam String courseId, @RequestParam String schoolId, @RequestParam String systemOwner) {
public ResultEntity<TestSysKnowledgeSummary> getSysKnowledgeSummaryByChapterId(@RequestParam String chapterId, @RequestParam String courseId, @RequestParam String schoolId, @RequestParam String systemOwner) {
TestSysKnowledgeSummary sysKnowledgeSummary = null;
try {
sysKnowledgeSummary = KnowledgeSummaryApi.getSysKnowledgeSummary(courseId,chapterId, schoolId, systemOwner);
sysKnowledgeSummary = KnowledgeSummaryApi.getSysKnowledgeSummary(courseId, chapterId, schoolId, systemOwner);
if(sysKnowledgeSummary==null){
return new ResultEntity<>(HttpStatus.OK, "无知识概要");
}
} catch (IOException e) {
return new ResultEntity<>(HttpStatus.BAD_REQUEST, "资源中心接口异常");
}
@ -161,7 +170,39 @@ public class StuKnowledgeNote {
} else {
return new ResultEntity<>(list.get(0).getTrainingId());
}
}
@AnonymousAccess
@ApiOperation("知识概要-算分")
@PostMapping("getScore") //阅读1分钟得60分,1分钟以下不得分多1分钟加10分。 60分为默认值老师可修改
public ResultEntity<BigDecimal> getScore(@ApiParam("数字 单位分钟") @RequestParam Integer minutes,
@RequestParam String courseId,
@RequestParam String schoolId,
@RequestParam String systemOwner,
@RequestParam String trainingId) {
StuTrainingWithBLOBs stuTrainingWithBLOBs = stuTrainingMapper.selectByPrimaryKey(trainingId);
if (stuTrainingWithBLOBs.getKnowledgeSummaryCompleteStatus() != null) {
//不为空直接返回
return new ResultEntity<>(stuTrainingWithBLOBs.getKnowledgeSummaryScore());
}
//为空设置
SysWeight sysWeight = iTeaGradeManageService.getSysWeightResultEntity(courseId, schoolId, systemOwner);
BigDecimal knowledgeSummaryDefaultRule = sysWeight.getKnowledgeSummaryDefaultRule();
if (minutes < 1) {
stuTrainingWithBLOBs.setKnowledgeSummaryScore(BigDecimal.ZERO);
} else if (minutes == 1) {
stuTrainingWithBLOBs.setKnowledgeSummaryScore(knowledgeSummaryDefaultRule); //老师只能修改这个分值
} else {
int extraMinutes = minutes - 1;
int totalScore = 60 + extraMinutes * 10;
knowledgeSummaryDefaultRule = BigDecimal.valueOf(totalScore);
stuTrainingWithBLOBs.setKnowledgeSummaryScore(knowledgeSummaryDefaultRule);
}
stuTrainingWithBLOBs.setResourceLearningCompleteStatus(minutes);
stuTrainingMapper.updateByPrimaryKey(stuTrainingWithBLOBs);
return new ResultEntity<>(knowledgeSummaryDefaultRule);
}

@ -9,6 +9,8 @@ import com.sztzjy.financial_bigdata.mapper.StuTrainingMapper;
import com.sztzjy.financial_bigdata.mapper.SysWeightMapper;
import com.sztzjy.financial_bigdata.mapper.TrainingReportMapper;
import com.sztzjy.financial_bigdata.resourceCenterAPI.CourseAPI;
import com.sztzjy.financial_bigdata.service.stu.StuScoreService;
import com.sztzjy.financial_bigdata.service.tea.ITeaGradeManageService;
import com.sztzjy.financial_bigdata.util.ResultEntity;
import com.sztzjy.financial_bigdata.util.file.IFileUtil;
import io.swagger.annotations.Api;
@ -43,19 +45,24 @@ public class StuScoreController {
private SysWeightMapper sysWeightMapper;
@Autowired
private StuTrainingMapper stuTrainingMapper;
@Autowired
private ITeaGradeManageService gradeManageService;
@Autowired
private StuScoreService stuScoreService;
@AnonymousAccess
@ApiOperation("***得分情况展示")
@PostMapping("getScoreInfo")
public ResultEntity<StuTrainingDto> getScoreInfo(@RequestParam String userId,
@RequestParam String chapterId,
@RequestParam String schoolId) {
@RequestParam String schoolId,
@RequestParam String systemOwner) {
StuTrainingDto stuTrainingDto = new StuTrainingDto();
StuTrainingExample stuTrainingExample = new StuTrainingExample();
stuTrainingExample.createCriteria().andUserIdEqualTo(userId).andChapterIdEqualTo(chapterId);
List<StuTrainingWithBLOBs> stuTrainings = stuTrainingMapper.selectByExampleWithBLOBs(stuTrainingExample);
StuTrainingDto stuTrainingDto = new StuTrainingDto();
//根据章节ID拿到课程ID 再去拿权重
SysThreeCatalog sysCourseChapter = null;
try {
@ -63,30 +70,14 @@ public class StuScoreController {
} catch (IOException e) {
return new ResultEntity<>(HttpStatus.BAD_REQUEST, "资源中心根据章节ID查询章节信息失败");
}
SysWeightExample sysWeightExample = new SysWeightExample();
sysWeightExample.createCriteria().andCourseIdEqualTo(sysCourseChapter.getTwoId()).andSchoolIdEqualTo(schoolId);
List<SysWeight> sysWeights = sysWeightMapper.selectByExample(sysWeightExample);
if (!sysWeights.isEmpty()) {
SysWeight sysWeight = sysWeights.get(0);
BeanUtils.copyProperties(sysWeight, stuTrainingDto); //五个权重
}
if (!stuTrainings.isEmpty()) {
StuTrainingWithBLOBs stuTrainingWithBLOBs = stuTrainings.get(0);
BeanUtils.copyProperties(stuTrainingWithBLOBs, stuTrainingDto); //四个完成情况和四个得分
TrainingReport trainingReport = trainingReportMapper.selectByPrimaryKey(stuTrainingWithBLOBs.getReportId());
//设置报告相关数据
if (trainingReport == null || trainingReport.getTeacherScore() == null) {
stuTrainingDto.setReportCompleteStatus("未提交");
stuTrainingDto.setReportScore(null);
} else {
stuTrainingDto.setReportCompleteStatus("已提交");
stuTrainingDto.setReportScore(trainingReport.getTeacherScore());
}
stuTrainingDto = stuScoreService.getScoreByChapterId(schoolId, systemOwner, stuTrainingWithBLOBs, stuTrainingDto, sysCourseChapter);
}
return new ResultEntity<StuTrainingDto>(stuTrainingDto);
}
@AnonymousAccess
@ApiOperation("实验报告展示")
@PostMapping("getReportByUserId")

@ -6,14 +6,17 @@ import com.github.pagehelper.PageInfo;
import com.sztzjy.financial_bigdata.annotation.AnonymousAccess;
import com.sztzjy.financial_bigdata.entity.*;
import com.sztzjy.financial_bigdata.entity.resource_entity.SysObjectiveQuestions;
import com.sztzjy.financial_bigdata.entity.resource_entity.SysThreeCatalog;
import com.sztzjy.financial_bigdata.entity.resource_entity.SysTwoCatalog;
import com.sztzjy.financial_bigdata.entity.resource_entity.TestTestSysCaseQuestionStepWithBLOBs;
import com.sztzjy.financial_bigdata.entity.stu_dto.StuTrainingDto;
import com.sztzjy.financial_bigdata.entity.stu_dto.StuUserDto;
import com.sztzjy.financial_bigdata.entity.tea_dto.*;
import com.sztzjy.financial_bigdata.mapper.*;
import com.sztzjy.financial_bigdata.resourceCenterAPI.CaseApi;
import com.sztzjy.financial_bigdata.resourceCenterAPI.CourseAPI;
import com.sztzjy.financial_bigdata.resourceCenterAPI.ObjectiveApi;
import com.sztzjy.financial_bigdata.service.stu.StuScoreService;
import com.sztzjy.financial_bigdata.service.tea.ITeaGradeManageService;
import com.sztzjy.financial_bigdata.service.tea.impl.TeaGradeManageServiceImpl;
import com.sztzjy.financial_bigdata.util.PageUtil;
@ -71,6 +74,11 @@ public class TeaGradeManageController {
private SysWeightMapper sysWeightMapper;
@Autowired
private StuTheoryExamMapper stuTheoryExamMapper;
@Autowired
private StuTrainingMapper stuTrainingMapper;
@Autowired
StuScoreService stuScoreService;
@AnonymousAccess
@PostMapping("/getExamInfo")
@ -85,20 +93,20 @@ public class TeaGradeManageController {
return null;
}
List<TeaExamManageCountDto> teaExamManageCountDtos = new ArrayList<>();
Map<String, StuUser> userMap = new HashMap<>();
Map<Integer, StuUser> userMap = new HashMap<>();
List<String> userIds = new ArrayList<>();
List<Integer> userIds = new ArrayList<>();
for (TeaExamManage teaExamManage : teaExamManages) {
String userId = teaExamManage.getUserId();
userIds.add(userId);
Integer zyUserId = Integer.parseInt(teaExamManage.getUserId()); //这里是智云 zyUserId
userIds.add(zyUserId);
}
//存储用户信息
StuUserExample example =new StuUserExample();
example.createCriteria().andSystemOnwerEqualTo(systemOwner).andUseridIn(userIds);
StuUserExample example = new StuUserExample();
example.createCriteria().andSystemOnwerEqualTo(systemOwner).andZyUseridIn(userIds);
List<StuUser> stuUsers = userMapper.selectByExample(example);
for (StuUser stuUser : stuUsers) {
userMap.put(stuUser.getUserid(), stuUser);
userMap.put(stuUser.getZyUserid(), stuUser);
}
for (TeaExamManage teaExamManage : teaExamManages) {
@ -132,7 +140,7 @@ public class TeaGradeManageController {
copyexamManageWithBLOBs.setExamTime(concatenatedTimeString); //考试时间
String userId = teaExamManage.getUserId();
StuUser stuUser = userMap.get(userId);
StuUser stuUser = userMap.get(Integer.parseInt(userId));
copyexamManageWithBLOBs.setName(stuUser.getName()); //发布人
teaExamManageCountDtos.add(copyexamManageWithBLOBs);
}
@ -363,8 +371,7 @@ public class TeaGradeManageController {
}
// 构建班级ID列表
List<String> classIds = stuUsers.stream()
.map(StuUser::getClassId)
.collect(Collectors.toList());
.map(StuUser::getClassId).distinct().collect(Collectors.toList());
// 批量查询学生分数
StuStudentExamExample studentExamExample = new StuStudentExamExample();
@ -397,7 +404,7 @@ public class TeaGradeManageController {
teaExamAndUserDto.setName(stuUser.getName());
teaExamAndUserDto.setStudentId(stuUser.getStudentId());
// 从映射关系中获取班级对象
if (classMap.get(stuUser.getClassId())==null){
if (classMap.get(stuUser.getClassId()) == null) {
continue;
}
StuClass classdata = classMap.get(stuUser.getClassId());
@ -574,7 +581,7 @@ public class TeaGradeManageController {
@ApiOperation("练习模式--成绩详情页面设置权重")
public void updateWeightByModule(@ApiParam("所有框必须传") @RequestBody SysWeight sysWeight) {
SysWeightExample sysWeightExample = new SysWeightExample();
sysWeightExample.createCriteria().andCourseIdEqualTo(sysWeight.getCourseId()).andSystemOwnerEqualTo(sysWeight.getSystemOwner());
sysWeightExample.createCriteria().andCourseIdEqualTo(sysWeight.getCourseId()).andSystemOwnerEqualTo(sysWeight.getSystemOwner()).andSchoolIdEqualTo(sysWeight.getSchoolId());
List<SysWeight> sysWeights = sysWeightMapper.selectByExample(sysWeightExample);
if (!sysWeights.isEmpty()) {//有 update
sysWeightMapper.updateByPrimaryKey(sysWeight);
@ -610,14 +617,7 @@ public class TeaGradeManageController {
public ResultEntity<SysWeight> getModuleByCourseId(@RequestParam String courseId,
@RequestParam String schoolId,
@RequestParam String systemOwner) {
SysWeightExample sysWeightExample = new SysWeightExample();
sysWeightExample.createCriteria().andSchoolIdEqualTo(schoolId).andCourseIdEqualTo(courseId).andSystemOwnerEqualTo(systemOwner);
List<SysWeight> sysWeights = sysWeightMapper.selectByExample(sysWeightExample);
if (sysWeights.isEmpty()) {
//todo 是否需要设置默认权重
return new ResultEntity<>(new SysWeight());
}
return new ResultEntity<>(sysWeights.get(0));
return new ResultEntity<SysWeight>(iTeaGradeManageService.getSysWeightResultEntity(courseId, schoolId, systemOwner));
}
@ -659,6 +659,67 @@ public class TeaGradeManageController {
return new ResultEntity<>(pageInfo);
}
//
// @AnonymousAccess
// @ApiOperation("老师端/练习模式得分详情展示")
// @PostMapping("getScoreInfo")
// public ResultEntity<List<StuTrainingDto>> getScoreInfo(@RequestParam String userId,
// @RequestParam String schoolId,
// @RequestParam String systemOwner) {
// List<StuTrainingDto> list = new ArrayList<>();
//
// StuTrainingExample stuTrainingExample = new StuTrainingExample();
// stuTrainingExample.createCriteria().andUserIdEqualTo(userId);
// List<StuTrainingWithBLOBs> stuTrainings = stuTrainingMapper.selectByExampleWithBLOBs(stuTrainingExample);
// //根据章节ID拿到课程ID 再去拿权重
// try {
// for (StuTrainingWithBLOBs stuTraining : stuTrainings) {
// StuTrainingDto stuTrainingDto = new StuTrainingDto();
// String chapterId = stuTraining.getChapterId();
// SysThreeCatalog sysCourseChapter = CourseAPI.selectChapterByChapterId(chapterId);
// stuTrainingDto.setTaskModule(sysCourseChapter.getThreeName());
// stuTrainingDto = stuScoreService.getScoreByChapterId(schoolId, systemOwner, stuTraining, stuTrainingDto, sysCourseChapter);
// list.add(stuTrainingDto);
// }
// } catch (IOException e) {
// return new ResultEntity<>(HttpStatus.BAD_REQUEST, "资源中心根据章节ID查询章节信息失败");
// }
// return new ResultEntity<>(list);
// }
@AnonymousAccess
@ApiOperation("老师端/练习模式得分详情展示")
@PostMapping("getScoreInfo")
public ResultEntity<List<StuTrainingDto>> getScoreInfo(@RequestParam String userId,
@RequestParam String schoolId,
@RequestParam String systemOwner) {
List<StuTrainingDto> list = new ArrayList<>();
StuTrainingExample stuTrainingExample = new StuTrainingExample();
stuTrainingExample.createCriteria().andUserIdEqualTo(userId);
List<StuTrainingWithBLOBs> stuTrainings = stuTrainingMapper.selectByExampleWithBLOBs(stuTrainingExample);
Map<String, SysThreeCatalog> chapterMap = new HashMap<>();
try {
for (StuTrainingWithBLOBs stuTraining : stuTrainings) {
String chapterId = stuTraining.getChapterId();
SysThreeCatalog sysCourseChapter = chapterMap.get(chapterId);
if (sysCourseChapter == null) {
sysCourseChapter = CourseAPI.selectChapterByChapterId(chapterId);
chapterMap.put(chapterId, sysCourseChapter);
}
StuTrainingDto stuTrainingDto = new StuTrainingDto();
stuTrainingDto.setTaskModule(sysCourseChapter.getThreeName());
list.add(stuScoreService.getScoreByChapterId(schoolId, systemOwner, stuTraining, stuTrainingDto, sysCourseChapter));
}
} catch (IOException e) {
return new ResultEntity<>(HttpStatus.BAD_REQUEST, "资源中心根据章节ID查询章节信息失败");
}
return new ResultEntity<>(list);
}
}

@ -1,9 +1,13 @@
package com.sztzjy.financial_bigdata.controller.tea;
import com.sztzjy.financial_bigdata.annotation.AnonymousAccess;
import com.sztzjy.financial_bigdata.entity.StuTrainingWithBLOBs;
import com.sztzjy.financial_bigdata.entity.SysWeight;
import com.sztzjy.financial_bigdata.entity.TeaResourceCenter;
import com.sztzjy.financial_bigdata.entity.resource_entity.SysResource;
import com.sztzjy.financial_bigdata.mapper.StuTrainingMapper;
import com.sztzjy.financial_bigdata.resourceCenterAPI.ResourceCenterApi;
import com.sztzjy.financial_bigdata.service.tea.ITeaGradeManageService;
import com.sztzjy.financial_bigdata.service.tea.ITeaResourceCenterService;
import com.sztzjy.financial_bigdata.util.ResultEntity;
import com.sztzjy.financial_bigdata.util.file.IFileUtil;
@ -14,12 +18,10 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
@ -34,6 +36,10 @@ public class TeaResourceCenterController {
ITeaResourceCenterService resourceCenterService;
@Value("${file.path}")
private String filePath;
@Autowired
private StuTrainingMapper stuTrainingMapper;
@Autowired
ITeaGradeManageService iTeaGradeManageService;
//根据课程id查看资源文件列表
@ -70,4 +76,35 @@ public class TeaResourceCenterController {
}
}
@AnonymousAccess
@ApiOperation("学习资源-算分")
@PostMapping("getResourceScore") //观看资源1分钟得60分,1分钟以下不得分多1分钟加10分。
public ResultEntity<BigDecimal> getScore(@ApiParam("数字 单位分钟") @RequestParam Integer minutes,
@RequestParam String courseId,
@RequestParam String schoolId,
@RequestParam String systemOwner,
@RequestParam String trainingId) {
StuTrainingWithBLOBs stuTrainingWithBLOBs = stuTrainingMapper.selectByPrimaryKey(trainingId);
if (stuTrainingWithBLOBs.getKnowledgeSummaryCompleteStatus() != null) {
//不为空直接返回
return new ResultEntity<>(stuTrainingWithBLOBs.getResourceLearningScore());
}
//为空设置
SysWeight sysWeight = iTeaGradeManageService.getSysWeightResultEntity(courseId, schoolId, systemOwner);
BigDecimal resourceLearningDefaultRule = sysWeight.getResourceLearningDefaultRule();
if (minutes < 1) {
stuTrainingWithBLOBs.setResourceLearningScore(BigDecimal.ZERO);
} else if (minutes == 1) {
stuTrainingWithBLOBs.setResourceLearningScore(resourceLearningDefaultRule); //老师只能修改这个分值
} else {
int extraMinutes = minutes - 1;
int totalScore = 60 + extraMinutes * 10;
resourceLearningDefaultRule = BigDecimal.valueOf(totalScore);
stuTrainingWithBLOBs.setResourceLearningScore(resourceLearningDefaultRule);
}
stuTrainingWithBLOBs.setResourceLearningCompleteStatus(minutes);
stuTrainingMapper.updateByPrimaryKey(stuTrainingWithBLOBs);
return new ResultEntity<>(resourceLearningDefaultRule);
}
}

@ -3,12 +3,15 @@ package com.sztzjy.financial_bigdata.entity;
import java.util.Date;
import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
/**
*
*
* @author xcj
* stu_userinfo
*/
@EqualsAndHashCode
public class StuUser {
@ApiModelProperty("用户ID")
private String userid;

@ -70,5 +70,6 @@ public class StuTrainingDto {
@ApiModelProperty("实验报告完成情况")
private String reportCompleteStatus;
@ApiModelProperty("模板名称")
private String taskModule;
}

@ -30,8 +30,12 @@ public class KnowledgeSummaryApi {
.registerTypeAdapter(Date.class, new DateTypeAdapter())
.create();
Type listType = new TypeToken<TestSysKnowledgeSummary>() {}.getType();
TestSysKnowledgeSummary knowledgeSummarie = gson.fromJson(object.get("respString").toString(), listType);
return knowledgeSummarie;
try {
TestSysKnowledgeSummary knowledgeSummarie = gson.fromJson(object.get("respString").toString(), listType);
return knowledgeSummarie;
}catch (Exception e){
return null;
}
}
}

@ -0,0 +1,15 @@
package com.sztzjy.financial_bigdata.service.stu;
import com.sztzjy.financial_bigdata.entity.StuTrainingWithBLOBs;
import com.sztzjy.financial_bigdata.entity.resource_entity.SysThreeCatalog;
import com.sztzjy.financial_bigdata.entity.stu_dto.StuTrainingDto;
import java.util.List;
/**
* @Author xcj
* @Date 2024/11/22
*/
public interface StuScoreService {
StuTrainingDto getScoreByChapterId(String schoolId, String systemOwner,StuTrainingWithBLOBs stuTrainingWithBLOBs, StuTrainingDto stuTrainingDto, SysThreeCatalog sysCourseChapter);
}

@ -56,7 +56,7 @@ public class ExerciseServiceImpl implements IExerciseService {
return dtos;
}else {
StuTrainingWithBLOBs bloBs = stuTrainingWithBLOBs.get(0);
if (bloBs==null) {
if (bloBs==null) { //todo 这里为什么要调查询全部的接口
List<SysObjectiveQuestions> objectiveQuestionList = ObjectiveApi.selectObjectQuestionListByChapterId(chapterId);
for (int i = 0; i < objectiveQuestionList.size(); i++) {
SysObjectiveQuestions objectiveQuestion = objectiveQuestionList.get(i);
@ -72,7 +72,7 @@ public class ExerciseServiceImpl implements IExerciseService {
}else {
if(StringUtils.isBlank(bloBs.getLearningEvalAnswer())){ //判断是否提交过 未提交
if(bloBs.getLearningEvalIdlist()==null){
List<SysObjectiveQuestions> objectiveQuestionList = ObjectiveApi.selectObjectQuestionListByChapterId(chapterId);
List<SysObjectiveQuestions> objectiveQuestionList = ObjectiveApi.selectRandomObjectiveByChapterId(chapterId);
for (int i = 0; i < objectiveQuestionList.size(); i++) {
SysObjectiveQuestions objectiveQuestion = objectiveQuestionList.get(i);
String objectiveId = objectiveQuestion.getObjectiveId();
@ -122,6 +122,8 @@ public class ExerciseServiceImpl implements IExerciseService {
// }
List<String> stuAnswerList = new ArrayList<>();
BigDecimal learning_eval_score= BigDecimal.valueOf(0);
//记录错题数
Integer errorCount= 0;
List<String> objectiveIds=new ArrayList<>();
for (int i = 0; i < objectiveQuestionDtoList.size(); i++) {
SysObjectiveQuestionDto sysObjectiveQuestionDto = objectiveQuestionDtoList.get(i);
@ -132,13 +134,15 @@ public class ExerciseServiceImpl implements IExerciseService {
stuAnswerList.add(stuAnswer);
if(answer.equals(stuAnswer)){
learning_eval_score= learning_eval_score.add(objectiveQuestion.getScore());
}else {
errorCount++;
}
objectiveIds.add(objectiveId);
}
StuTrainingWithBLOBs bloBs = stuTrainingWithBLOBs.get(0);
bloBs.setLearningEvalAnswer(String.valueOf(stuAnswerList));
bloBs.setLearningEvalScore(learning_eval_score);
bloBs.setLearningEvalCompleteStatus(1);
bloBs.setLearningEvalCompleteStatus(errorCount);
BigDecimal progress = bloBs.getProgress();
bloBs.setLearningEvalIdlist(String.valueOf(objectiveIds));
if(progress==null){

@ -0,0 +1,212 @@
package com.sztzjy.financial_bigdata.service.stu.impl;
import com.sztzjy.financial_bigdata.entity.StuTrainingWithBLOBs;
import com.sztzjy.financial_bigdata.entity.SysWeight;
import com.sztzjy.financial_bigdata.entity.SysWeightExample;
import com.sztzjy.financial_bigdata.entity.TrainingReport;
import com.sztzjy.financial_bigdata.entity.resource_entity.SysThreeCatalog;
import com.sztzjy.financial_bigdata.entity.stu_dto.StuTrainingDto;
import com.sztzjy.financial_bigdata.mapper.SysWeightMapper;
import com.sztzjy.financial_bigdata.mapper.TrainingReportMapper;
import com.sztzjy.financial_bigdata.service.stu.StuScoreService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.List;
/**
* @Author xcj
* @Date 2024/11/22
*/
@Service
public class StuScoreServiceImpl implements StuScoreService {
@Autowired
private SysWeightMapper sysWeightMapper;
@Autowired
TrainingReportMapper trainingReportMapper;
// @Override
// public StuTrainingDto getScoreByChapterId(String schoolId, String systemOwner, StuTrainingWithBLOBs stuTrainingWithBLOBs, StuTrainingDto stuTrainingDto, SysThreeCatalog sysCourseChapter) {
// SysWeightExample sysWeightExample = new SysWeightExample();
// sysWeightExample.createCriteria().andCourseIdEqualTo(sysCourseChapter.getTwoId()).andSchoolIdEqualTo(schoolId).andSystemOwnerEqualTo(systemOwner);
// List<SysWeight> sysWeights = sysWeightMapper.selectByExample(sysWeightExample);
// if (!sysWeights.isEmpty()) {
// SysWeight sysWeight = sysWeights.get(0);
// BeanUtils.copyProperties(sysWeight, stuTrainingDto); //五个权重
// } else {
// //设置默认权重
// stuTrainingDto.setKnowledgeSummaryDefaultRule(BigDecimal.valueOf(60)); //知识概要默认计分规则 阅读1分钟得60分,1分钟以下不得分多1分钟加10分。
// stuTrainingDto.setResourceLearningDefaultRule(BigDecimal.valueOf(60)); //资源学习默认计分规则 观看资源1分钟得60分,1分钟以下不得分多1分钟加10分。
// stuTrainingDto.setLearningEvalDefaultRule(BigDecimal.valueOf(10)); //学习测评默认计分规则 客观题10分每道
// stuTrainingDto.setExpTrainingDefautRule(BigDecimal.valueOf(2));//实训题,输错/选错次数扣2分最低0分
// stuTrainingDto.setKnowledgeSummaryWeight(BigDecimal.valueOf(5));
// stuTrainingDto.setResourceLearningWeight(BigDecimal.valueOf(5));
// stuTrainingDto.setLearningEvalWeight(BigDecimal.valueOf(20));
// stuTrainingDto.setExpTrainingWeight(BigDecimal.valueOf(60));
// stuTrainingDto.setReportWeight(BigDecimal.valueOf(10));
// }
// BeanUtils.copyProperties(stuTrainingWithBLOBs, stuTrainingDto); //四个完成情况和四个得分
// //知识概要得分
// Integer knowledgeSummaryCompleteStatus = 0;
// BigDecimal knowledgeSummaryScore = BigDecimal.ZERO;
// if (stuTrainingWithBLOBs.getKnowledgeSummaryCompleteStatus() != null && stuTrainingWithBLOBs.getKnowledgeSummaryCompleteStatus() != 0) {
// knowledgeSummaryCompleteStatus = stuTrainingWithBLOBs.getKnowledgeSummaryCompleteStatus();
// knowledgeSummaryScore = stuTrainingDto.getKnowledgeSummaryDefaultRule().add(BigDecimal.valueOf((knowledgeSummaryCompleteStatus - 1) * 10));
// if (knowledgeSummaryScore.compareTo(BigDecimal.valueOf(100)) > 0) {
// knowledgeSummaryScore = BigDecimal.valueOf(100);
// }
// knowledgeSummaryScore = knowledgeSummaryScore.multiply(stuTrainingDto.getKnowledgeSummaryWeight().divide(BigDecimal.valueOf(100), 2, BigDecimal.ROUND_HALF_UP));
// }
// stuTrainingDto.setKnowledgeSummaryScore(knowledgeSummaryScore);
// //资源学习得分
// Integer resourceLearningCompleteStatus = 0;
// BigDecimal resourceLearningScore = BigDecimal.ZERO;
// if (stuTrainingWithBLOBs.getResourceLearningCompleteStatus() != null && stuTrainingWithBLOBs.getResourceLearningCompleteStatus() != 0) {
// resourceLearningCompleteStatus = stuTrainingWithBLOBs.getResourceLearningCompleteStatus();
// resourceLearningScore = stuTrainingDto.getResourceLearningDefaultRule().add(BigDecimal.valueOf((resourceLearningCompleteStatus - 1) * 10));
// if (resourceLearningScore.compareTo(BigDecimal.valueOf(100)) > 0) {
// resourceLearningScore = BigDecimal.valueOf(100);
// }
// resourceLearningScore = resourceLearningScore.multiply(stuTrainingDto.getResourceLearningWeight().divide(BigDecimal.valueOf(100), 2, BigDecimal.ROUND_HALF_UP));
// }
// stuTrainingDto.setResourceLearningScore(resourceLearningScore);
//
// //学习评测得分
// Integer learningEvalCompleteStatus = 0;
// BigDecimal learningEvalScore = BigDecimal.ZERO;
// if (stuTrainingWithBLOBs.getLearningEvalCompleteStatus() != null) {
// learningEvalCompleteStatus = stuTrainingWithBLOBs.getLearningEvalCompleteStatus();
// learningEvalScore = BigDecimal.valueOf(100).subtract(stuTrainingDto.getLearningEvalDefaultRule().multiply(BigDecimal.valueOf(learningEvalCompleteStatus)));
// if (learningEvalScore.compareTo(BigDecimal.valueOf(0)) < 0) {
// learningEvalScore = BigDecimal.valueOf(0);
// }
// stuTrainingDto.setLearningEvalScore(learningEvalScore.multiply(stuTrainingDto.getLearningEvalWeight().divide(BigDecimal.valueOf(100), 2, BigDecimal.ROUND_HALF_UP)));
// } else {
// stuTrainingDto.setLearningEvalScore(learningEvalScore);
// }
//
// //实验实训分数计算
// Integer expTrainingCompleteStatus = 0;
// BigDecimal expTrainingScore = BigDecimal.ZERO;
// if (stuTrainingWithBLOBs.getExpTrainingCompleteStatus() != null) {
// expTrainingCompleteStatus = stuTrainingWithBLOBs.getExpTrainingCompleteStatus();
// expTrainingScore = BigDecimal.valueOf(100).subtract(stuTrainingDto.getExpTrainingDefautRule().multiply(BigDecimal.valueOf(expTrainingCompleteStatus)));
// if (expTrainingScore.compareTo(BigDecimal.valueOf(0)) < 0) {
// expTrainingScore = BigDecimal.valueOf(0);
// }
// stuTrainingDto.setCaseStuScore(expTrainingScore.multiply(stuTrainingDto.getExpTrainingWeight().divide(BigDecimal.valueOf(100), 2, BigDecimal.ROUND_HALF_UP)));
// } else {
// stuTrainingDto.setCaseStuScore(expTrainingScore);
// }
//
//
// TrainingReport trainingReport = trainingReportMapper.selectByPrimaryKey(stuTrainingWithBLOBs.getReportId());
// //设置报告相关数据
// if (trainingReport == null || trainingReport.getTeacherScore() == null) {
// stuTrainingDto.setReportCompleteStatus("未提交");
// stuTrainingDto.setReportScore(null);
// } else {
// stuTrainingDto.setReportCompleteStatus("已提交");
// stuTrainingDto.setReportScore(trainingReport.getTeacherScore());
// }
// return stuTrainingDto;
// }
@Override
public StuTrainingDto getScoreByChapterId(String schoolId, String systemOwner, StuTrainingWithBLOBs stuTrainingWithBLOBs, StuTrainingDto stuTrainingDto, SysThreeCatalog sysCourseChapter) {
SysWeightExample sysWeightExample = new SysWeightExample();
sysWeightExample.createCriteria().andCourseIdEqualTo(sysCourseChapter.getTwoId())
.andSchoolIdEqualTo(schoolId)
.andSystemOwnerEqualTo(systemOwner);
List<SysWeight> sysWeights = sysWeightMapper.selectByExample(sysWeightExample);
if (!sysWeights.isEmpty()) {
SysWeight sysWeight = sysWeights.get(0);
BeanUtils.copyProperties(sysWeight, stuTrainingDto); // 提取权重数据
} else {
setDefaultWeights(stuTrainingDto);
}
BeanUtils.copyProperties(stuTrainingWithBLOBs, stuTrainingDto); // 完成情况和得分
// 计算各模块得分
calculateModuleScores(stuTrainingWithBLOBs, stuTrainingDto);
// 设置报告相关数据
setReportData(stuTrainingDto, stuTrainingWithBLOBs.getReportId());
return stuTrainingDto;
}
private void setDefaultWeights(StuTrainingDto stuTrainingDto) {
stuTrainingDto.setKnowledgeSummaryDefaultRule(BigDecimal.valueOf(60));
stuTrainingDto.setResourceLearningDefaultRule(BigDecimal.valueOf(60));
stuTrainingDto.setLearningEvalDefaultRule(BigDecimal.valueOf(10));
stuTrainingDto.setExpTrainingDefautRule(BigDecimal.valueOf(2));
stuTrainingDto.setKnowledgeSummaryWeight(BigDecimal.valueOf(5));
stuTrainingDto.setResourceLearningWeight(BigDecimal.valueOf(5));
stuTrainingDto.setLearningEvalWeight(BigDecimal.valueOf(20));
stuTrainingDto.setExpTrainingWeight(BigDecimal.valueOf(60));
stuTrainingDto.setReportWeight(BigDecimal.valueOf(10));
}
private void calculateModuleScores(StuTrainingWithBLOBs stuTrainingWithBLOBs, StuTrainingDto stuTrainingDto) {
stuTrainingDto.setKnowledgeSummaryScore(calculateScore(
stuTrainingDto.getKnowledgeSummaryDefaultRule(),
stuTrainingDto.getKnowledgeSummaryWeight(),
stuTrainingWithBLOBs.getKnowledgeSummaryCompleteStatus()
));
stuTrainingDto.setResourceLearningScore(calculateScore(
stuTrainingDto.getResourceLearningDefaultRule(),
stuTrainingDto.getResourceLearningWeight(),
stuTrainingWithBLOBs.getResourceLearningCompleteStatus()
));
stuTrainingDto.setLearningEvalScore(calculateEvaluationScore(
stuTrainingDto.getLearningEvalDefaultRule(),
stuTrainingDto.getLearningEvalWeight(),
stuTrainingWithBLOBs.getLearningEvalCompleteStatus()
));
stuTrainingDto.setCaseStuScore(calculateEvaluationScore(
stuTrainingDto.getExpTrainingDefautRule(),
stuTrainingDto.getExpTrainingWeight(),
stuTrainingWithBLOBs.getExpTrainingCompleteStatus()
));
}
private BigDecimal calculateScore(BigDecimal defaultRule, BigDecimal weight, Integer completeStatus) {
if (completeStatus != null && completeStatus > 0) {
BigDecimal score = defaultRule.add(BigDecimal.valueOf((completeStatus - 1) * 10));
score = score.min(BigDecimal.valueOf(100)); // 确保分数不超过100
return score.multiply(weight.divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP));
}
return BigDecimal.ZERO;
}
private BigDecimal calculateEvaluationScore(BigDecimal defaultRule, BigDecimal weight, Integer completeStatus) {
if (completeStatus != null) {
BigDecimal score = BigDecimal.valueOf(100).subtract(defaultRule.multiply(BigDecimal.valueOf(completeStatus)));
return score.max(BigDecimal.ZERO).multiply(weight.divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP));
}
return BigDecimal.ZERO;
}
private void setReportData(StuTrainingDto stuTrainingDto, String reportId) {
TrainingReport trainingReport = trainingReportMapper.selectByPrimaryKey(reportId);
if (trainingReport == null || trainingReport.getTeacherScore() == null) {
stuTrainingDto.setReportCompleteStatus("未提交");
stuTrainingDto.setReportScore(null);
} else {
stuTrainingDto.setReportCompleteStatus("已提交");
stuTrainingDto.setReportScore(trainingReport.getTeacherScore());
}
}
}

@ -2,10 +2,12 @@ package com.sztzjy.financial_bigdata.service.tea;
import com.github.pagehelper.PageInfo;
import com.sztzjy.financial_bigdata.entity.StuTheoryRecord;
import com.sztzjy.financial_bigdata.entity.SysWeight;
import com.sztzjy.financial_bigdata.entity.stu_dto.StuUserDto;
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.util.ResultEntity;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@ -31,4 +33,6 @@ public interface ITeaGradeManageService {
PageInfo<StuTheoryRecord> getTheoryInfo(Integer index, Integer size, String schoolId, String classId, String keyWord,String systemOwner);
void exportTheoryExamInfo(HttpServletResponse response,String classId, String schoolId);
SysWeight getSysWeightResultEntity(String courseId, String schoolId, String systemOwner);
}

@ -287,9 +287,36 @@ public class TeaGradeManageServiceImpl implements ITeaGradeManageService {
}
}
@Override
public SysWeight getSysWeightResultEntity(String courseId, String schoolId, String systemOwner) {
SysWeightExample sysWeightExample = new SysWeightExample();
sysWeightExample.createCriteria().andSchoolIdEqualTo(schoolId).andCourseIdEqualTo(courseId).andSystemOwnerEqualTo(systemOwner);
List<SysWeight> sysWeights = sysWeightMapper.selectByExample(sysWeightExample);
if (sysWeights.isEmpty()) {
//设置默认权重
SysWeight sysWeight = new SysWeight();
sysWeight.setCourseId(courseId);
sysWeight.setWeightId(IdUtil.randomUUID());
sysWeight.setSchoolId(schoolId);
sysWeight.setSystemOwner(systemOwner);
sysWeight.setKnowledgeSummaryDefaultRule(BigDecimal.valueOf(60)); //知识概要默认计分规则 阅读1分钟得60分,1分钟以下不得分多1分钟加10分。
sysWeight.setResourceLearningDefaultRule(BigDecimal.valueOf(60)); //资源学习默认计分规则 观看资源1分钟得60分,1分钟以下不得分多1分钟加10分。
sysWeight.setLearningEvalDefaultRule(BigDecimal.valueOf(10)); //学习测评默认计分规则 客观题10分每道
sysWeight.setExpTrainingDefautRule(BigDecimal.valueOf(2));//实训题,输错/选错次数扣2分最低0分
sysWeight.setKnowledgeSummaryWeight(BigDecimal.valueOf(5));
sysWeight.setResourceLearningWeight(BigDecimal.valueOf(5));
sysWeight.setLearningEvalWeight(BigDecimal.valueOf(20));
sysWeight.setExpTrainingWeight(BigDecimal.valueOf(60));
sysWeight.setReportWeight(BigDecimal.valueOf(10));
sysWeightMapper.insert(sysWeight);
return sysWeight;
}
return sysWeights.get(0);
}
private List<TeaTrainingInfoDTO> getTeaTrainingInfoDTOS(String schoolId, String keyWord, String classId, String systemOwner) {
List<StuUser> stuUsers =userMapper.getByNameAndStudentID(schoolId,keyWord,classId,systemOwner);
List<StuUser> stuUsers = userMapper.getByNameAndStudentID(schoolId, keyWord, classId, systemOwner);
// 查询学生用户列表
if (stuUsers.isEmpty()) {
@ -299,7 +326,7 @@ public class TeaGradeManageServiceImpl implements ITeaGradeManageService {
// 批量获取班级信息
Set<String> classIds = stuUsers.stream().map(StuUser::getClassId).collect(Collectors.toSet());
StuClassExample example =new StuClassExample();
StuClassExample example = new StuClassExample();
List<String> IDlist = new ArrayList<>(classIds);
example.createCriteria().andClassIdIn(IDlist).andSystemOwnerEqualTo(systemOwner);

@ -485,7 +485,7 @@
system_onwer =#{systemOwner}
and role_id = 4
<if test="classId != null and classId != ''">
class_id = #{classId}
AND class_id = #{classId}
</if>
<if test="schoolId != null and schoolId != ''">
AND school_id = #{schoolId}

Loading…
Cancel
Save