beetlsql3-dev
yaodan 2 years ago
parent 50e2321dd8
commit 09c4f8bbc7

@ -3,6 +3,7 @@ package com.ibeetl.jlw.service;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.Console;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.jlw.util.ToolUtils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
@ -38,6 +39,7 @@ import org.springframework.validation.annotation.Validated;
import java.io.*;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
import static com.ibeetl.admin.core.util.ExcelUtil.getCellFormatValue;
@ -51,10 +53,15 @@ import static com.ibeetl.admin.core.util.ExcelUtil.getCellFormatValue;
@Validated
public class StudentHandsOnTaskStepService extends CoreBaseService<StudentHandsOnTaskStep> {
@Autowired private StudentHandsOnTaskStepDao studentHandsOnTaskStepDao;
@Autowired private StudentService studentService;
@Autowired private TeacherOpenCourseHandsOnSimulationTasksDao tasksService;
@Autowired private TeacherOpenCourseHandsOnSimulationTasksAssessmentService assessmentService;
@Autowired
private StudentHandsOnTaskStepDao studentHandsOnTaskStepDao;
@Autowired
private StudentService studentService;
@Autowired
private TeacherOpenCourseHandsOnSimulationTasksDao tasksService;
@Autowired
private TeacherOpenCourseHandsOnSimulationTasksAssessmentService assessmentService;
public PageQuery<StudentHandsOnTaskStep> queryByCondition(PageQuery query) {
PageQuery ret = studentHandsOnTaskStepDao.queryByCondition(query);
queryListAfter(ret.getList());
@ -94,7 +101,8 @@ public class StudentHandsOnTaskStepService extends CoreBaseService<StudentHandsO
} catch (Exception e) {
try {
studentHandsOnTaskStepList.add(JSONObject.parseObject(studentHandsOnTaskStepQuery.getStudentHandsOnTaskStepJsonStr(), StudentHandsOnTaskStep.class));
} catch (Exception e1) {}
} catch (Exception e1) {
}
}
ToolUtils.deleteNullList(studentHandsOnTaskStepList);
if (null != studentHandsOnTaskStepList && studentHandsOnTaskStepList.size() > 0) {
@ -131,7 +139,8 @@ public class StudentHandsOnTaskStepService extends CoreBaseService<StudentHandsO
String stem = studentHandsOnTaskStep.getStem();
if (StringUtils.isNotEmpty(stem)) {
try {
List<Map<String, Object>> maps = JSONArray.parseObject(stem, new TypeReference<List<Map<String,Object>>>(){});
List<Map<String, Object>> maps = JSONArray.parseObject(stem, new TypeReference<List<Map<String, Object>>>() {
});
if (CollectionUtil.isNotEmpty(maps)) {
double schedules = 0;
for (Map<String, Object> map : maps) {
@ -144,13 +153,29 @@ public class StudentHandsOnTaskStepService extends CoreBaseService<StudentHandsO
TeacherOpenCourseHandsOnSimulationTasks single = tasksService.createLambdaQuery()
.andEq(TeacherOpenCourseHandsOnSimulationTasks::getTaskId, studentHandsOnTaskStep.getHandsOnTaskId()).single();
if (single != null) {
if (NumberUtil.compare(schedules, maps.size()) >= 0) {
String taskScore = single.getTaskScore();
int i = NumberUtil.parseInt(taskScore);
studentHandsOnTaskStep.setTheoryScore(BigDecimal.valueOf(i));
Long taskId = single.getTaskId();
TeacherOpenCourseHandsOnSimulationTasksAssessment teacherOpenCourseHandsOnSimulationTasksAssessment = new TeacherOpenCourseHandsOnSimulationTasksAssessment();
teacherOpenCourseHandsOnSimulationTasksAssessment.setHandsOnTaskId(taskId);
//实训任务的评估项
List<TeacherOpenCourseHandsOnSimulationTasksAssessment> values = assessmentService.getValues(teacherOpenCourseHandsOnSimulationTasksAssessment);
Map<Long, List<Map<String, Object>>> handsOnSimulationTasksAssessmentId = maps.stream().collect(Collectors.groupingBy(e -> Long.parseLong(ObjectUtil.defaultIfNull(e.get("handsOnSimulationTasksAssessmentId"), "0").toString())));
BigDecimal initScore = BigDecimal.ZERO;
if (values != null && values.size() > 0) {
//String taskScore = single.getTaskScore();
// int i = NumberUtil.parseInt(taskScore);
// studentHandsOnTaskStep.setTheoryScore(BigDecimal.valueOf(i));
for (TeacherOpenCourseHandsOnSimulationTasksAssessment value : values) {
}
} else {
//为空就是没有评估项这里先做0分处理
studentHandsOnTaskStep.setTheoryScore(BigDecimal.ZERO);
}
} else {
studentHandsOnTaskStep.setTheoryScore(BigDecimal.ZERO);
}
@ -312,52 +337,40 @@ public class StudentHandsOnTaskStepService extends CoreBaseService<StudentHandsO
if (StringUtils.isBlank(teacherOpenCourseId)) {
errMsg.add(new String[]{"第" + ToolUtils.numberToLetter(map.get(columns[0]) + 1) + "列,第" + (i + 1) + "行课程开课为空"});
continue;
}else
if(StringUtils.isBlank(handsOnId)){
} else if (StringUtils.isBlank(handsOnId)) {
errMsg.add(new String[]{"第" + ToolUtils.numberToLetter(map.get(columns[1]) + 1) + "列,第" + (i + 1) + "行课程实操为空"});
continue;
}else
if(StringUtils.isBlank(handsOnTaskId)){
} else if (StringUtils.isBlank(handsOnTaskId)) {
errMsg.add(new String[]{"第" + ToolUtils.numberToLetter(map.get(columns[2]) + 1) + "列,第" + (i + 1) + "行课程实操任务为空"});
continue;
}else
if(StringUtils.isBlank(stem)){
} else if (StringUtils.isBlank(stem)) {
errMsg.add(new String[]{"第" + ToolUtils.numberToLetter(map.get(columns[3]) + 1) + "列,第" + (i + 1) + "行题干为空"});
continue;
}else
if(StringUtils.isBlank(questionType)){
} else if (StringUtils.isBlank(questionType)) {
errMsg.add(new String[]{"第" + ToolUtils.numberToLetter(map.get(columns[4]) + 1) + "列,第" + (i + 1) + "行题型为空"});
continue;
}else
if(StringUtils.isBlank(myOptions)){
} else if (StringUtils.isBlank(myOptions)) {
errMsg.add(new String[]{"第" + ToolUtils.numberToLetter(map.get(columns[5]) + 1) + "列,第" + (i + 1) + "行我的选项为空"});
continue;
}else
if(StringUtils.isBlank(rightKey)){
} else if (StringUtils.isBlank(rightKey)) {
errMsg.add(new String[]{"第" + ToolUtils.numberToLetter(map.get(columns[6]) + 1) + "列,第" + (i + 1) + "行正确答案为空"});
continue;
}else
if(StringUtils.isBlank(theoryStatus)){
} else if (StringUtils.isBlank(theoryStatus)) {
errMsg.add(new String[]{"第" + ToolUtils.numberToLetter(map.get(columns[7]) + 1) + "列,第" + (i + 1) + "行状态为空"});
continue;
}else
if(StringUtils.isBlank(theoryScore)){
} else if (StringUtils.isBlank(theoryScore)) {
errMsg.add(new String[]{"第" + ToolUtils.numberToLetter(map.get(columns[8]) + 1) + "列,第" + (i + 1) + "行得分为空"});
continue;
}else
if(StringUtils.isBlank(createTime)){
} else if (StringUtils.isBlank(createTime)) {
errMsg.add(new String[]{"第" + ToolUtils.numberToLetter(map.get(columns[9]) + 1) + "列,第" + (i + 1) + "行创建时间为空"});
continue;
}else
if(StringUtils.isBlank(teacherId)){
} else if (StringUtils.isBlank(teacherId)) {
errMsg.add(new String[]{"第" + ToolUtils.numberToLetter(map.get(columns[10]) + 1) + "列,第" + (i + 1) + "行教师为空"});
continue;
}else
if(StringUtils.isBlank(studentId)){
} else if (StringUtils.isBlank(studentId)) {
errMsg.add(new String[]{"第" + ToolUtils.numberToLetter(map.get(columns[11]) + 1) + "列,第" + (i + 1) + "行学生为空"});
continue;
}else
{
} else {
//TODO 保存
StudentHandsOnTaskStep studentHandsOnTaskStep = new StudentHandsOnTaskStep();
studentHandsOnTaskStep.setTeacherOpenCourseId(Long.parseLong(teacherOpenCourseId));
@ -426,6 +439,7 @@ public class StudentHandsOnTaskStepService extends CoreBaseService<StudentHandsO
map.put("rightAnswer", assessment.getHandsOnSimulationTasksAssessmentAnswer());
map.put("studentAnswer", "");
map.put("score", assessment.getHandsOnSimulationTasksAssessmentScore());
map.put("handsOnSimulationTasksAssessmentId", assessment.getHandsOnSimulationTasksAssessmentId());
list.add(map);
}
studentHandsOnTaskStep.setStem(JSONArray.toJSONString(list));
@ -434,7 +448,8 @@ public class StudentHandsOnTaskStepService extends CoreBaseService<StudentHandsO
} else {
String videoFile = studentHandsOnTaskStep.getStem();
if (StringUtils.isNotEmpty(videoFile)) {
studentHandsOnTaskStep.setStems(JSONArray.parseObject(videoFile, new TypeReference<List<Map<String,Object>>>(){}));
studentHandsOnTaskStep.setStems(JSONArray.parseObject(videoFile, new TypeReference<List<Map<String, Object>>>() {
}));
}
}

@ -1,9 +1,11 @@
package com.ibeetl.jlw.service;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.TypeReference;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.jlw.util.ToolUtils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
@ -15,17 +17,16 @@ import com.ibeetl.admin.core.web.JsonResult;
import com.ibeetl.admin.core.web.JsonReturnCode;
import com.ibeetl.jlw.dao.StudentHandsOnTaskTheoryDao;
import com.ibeetl.jlw.dao.TeacherOpenCourseHandsOnSimulationTasksDao;
import com.ibeetl.jlw.dao.TeacherOpenCourseMergeResourcesQuestionDao;
import com.ibeetl.jlw.entity.*;
import com.ibeetl.jlw.entity.dto.FillAndAnalysisScoreDTO;
import com.ibeetl.jlw.entity.vo.TeacherOpenCourseMergeResourcesQuestionVO;
import com.ibeetl.jlw.enums.HandsOnTaskEnum;
import com.ibeetl.jlw.service.handson.HandsOnTaskQueue;
import com.ibeetl.jlw.service.handson.Record;
import com.ibeetl.jlw.web.query.StudentHandsOnTaskTheoryQuery;
import com.ibeetl.jlw.web.query.TeacherOpenCourseHandsOnSimulationTasksQuery;
import com.ibeetl.jlw.web.query.TeacherOpenCourseMergeResourcesQuestionQuery;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Row;
@ -64,6 +65,9 @@ public class StudentHandsOnTaskTheoryService extends CoreBaseService<StudentHand
//存储学生临时答题
public static ConcurrentHashMap<String, Map<String, Object>> questions = new ConcurrentHashMap<>();
@Autowired
private HandsOnAchievementService handsOnAchievementService;
public PageQuery<StudentHandsOnTaskTheory>queryByCondition(PageQuery query){
PageQuery ret = studentHandsOnTaskTheoryDao.queryByCondition(query);
queryListAfter(ret.getList());
@ -547,6 +551,25 @@ public class StudentHandsOnTaskTheoryService extends CoreBaseService<StudentHand
taskTheory.setOrgId(resourcesQuestion.getTeacherOpenCourseMergeResourcesQuestionId());
taskTheoryList.add(taskTheory);
}
//更新成绩
if (CollUtil.isNotEmpty(taskTheoryList)){
BigDecimal totalScore = new BigDecimal(0);
for (StudentHandsOnTaskTheory studentHandsOnTaskTheory : taskTheoryList) {
BigDecimal theoryScore = studentHandsOnTaskTheory.getTheoryScore();
totalScore = totalScore.add(ObjectUtil.defaultIfNull(theoryScore, BigDecimal.ZERO));
}
HandsOnAchievement build = HandsOnAchievement.builder()
.handOnId(tasks.getHandsOnId())
.studentId(student.getStudentId())
.classId(student.getClassId())
.theoryScore(totalScore.toPlainString())
.orgId(student.getOrgId())
.userId(student.getUserId()).build();
handsOnAchievementService.setHandsOnAchievement(build, HandsOnTaskEnum.TASK_THEORY);
}
this.insertBatch(taskTheoryList);
questions.remove(s);
return JsonResult.success("提交成功");

@ -262,11 +262,11 @@ public class TeacherOpenCourseHandsOnService extends CoreBaseService<TeacherOpen
}
for (TeacherOpenCourseHandsOnList teacherOpenCourseHandsOnList : teacherOpenCourseHandsOnLists) {
List<HandsOnAchievement> collect = achievementList.stream().filter(v -> v.getHandOnId().equals(teacherOpenCourseHandsOnList.getHandsOnId())).collect(Collectors.toList());
Double videoScore = collect.stream().map(HandsOnAchievement::getVideoScore).collect(Collectors.averagingDouble(Double::parseDouble));
Double pptAvgScore = collect.stream().map(HandsOnAchievement::getPptScore).collect(Collectors.averagingDouble(Double::parseDouble));
Double theoryAvgScore = collect.stream().map(HandsOnAchievement::getTheoryScore).collect(Collectors.averagingDouble(Double::parseDouble));
Double stepAvgScore = collect.stream().map(HandsOnAchievement::getPracticalTrainingScore).collect(Collectors.averagingDouble(Double::parseDouble));
Double reportAvgScore = collect.stream().map(HandsOnAchievement::getReportWritingScore).collect(Collectors.averagingDouble(Double::parseDouble));
Double videoScore = collect.stream().map(e->ObjectUtil.defaultIfNull(e.getVideoScore(),"0")).collect(Collectors.averagingDouble(Double::parseDouble));
Double pptAvgScore = collect.stream().map(e->ObjectUtil.defaultIfNull(e.getPptScore(),"0")).collect(Collectors.averagingDouble(Double::parseDouble));
Double theoryAvgScore = collect.stream().map(e->ObjectUtil.defaultIfNull(e.getTheoryScore(),"0")).collect(Collectors.averagingDouble(Double::parseDouble));
Double stepAvgScore = collect.stream().map(e->ObjectUtil.defaultIfNull(e.getPracticalTrainingScore(),"0")).collect(Collectors.averagingDouble(Double::parseDouble));
Double reportAvgScore = collect.stream().map(e->ObjectUtil.defaultIfNull(e.getReportWritingScore(),"0")).collect(Collectors.averagingDouble(Double::parseDouble));
teacherOpenCourseHandsOnList.setVideoAvgScore(videoScore);
teacherOpenCourseHandsOnList.setPptAvgScore(pptAvgScore);
teacherOpenCourseHandsOnList.setTheoryAvgScore(theoryAvgScore);
@ -334,17 +334,17 @@ public class TeacherOpenCourseHandsOnService extends CoreBaseService<TeacherOpen
PageQuery<TeacherOpenCourseHandsOnList> teacherOpenCourseHandsOns = teacherOpenCourseHandsOnDao.getHandsOnList(param.getPageQuery());
List<TeacherOpenCourseHandsOnList> teacherOpenCourseHandsOnLists = teacherOpenCourseHandsOns.getList();
List<Long> handIds = teacherOpenCourseHandsOnLists.stream().map(v -> v.getHandsOnId()).collect(Collectors.toList());
List<Long> handIds = teacherOpenCourseHandsOnLists.stream().map(TeacherOpenCourseHandsOnList::getHandsOnId).collect(Collectors.toList());
List<HandsOnAchievement> achievementList = new ArrayList<>();
if (CollectionUtils.isNotEmpty(handIds)) {
achievementList = handsOnAchievementService.getListByhandIdsAndClassId(handIds, param.getClassId());
}
TeacherOpenCourseHandsOnList teacherOpenCourseHandsOnList = new TeacherOpenCourseHandsOnList();
Double videoScore = achievementList.stream().map(HandsOnAchievement::getVideoScore).collect(Collectors.averagingDouble(Double::parseDouble));
Double pptAvgScore = achievementList.stream().map(HandsOnAchievement::getPptScore).collect(Collectors.averagingDouble(Double::parseDouble));
Double theoryAvgScore = achievementList.stream().map(HandsOnAchievement::getTheoryScore).collect(Collectors.averagingDouble(Double::parseDouble));
Double stepAvgScore = achievementList.stream().map(HandsOnAchievement::getPracticalTrainingScore).collect(Collectors.averagingDouble(Double::parseDouble));
Double reportAvgScore = achievementList.stream().map(HandsOnAchievement::getReportWritingScore).collect(Collectors.averagingDouble(Double::parseDouble));
Double videoScore = achievementList.stream().map(e->ObjectUtil.defaultIfNull(e.getVideoScore(),"0")).collect(Collectors.averagingDouble(Double::parseDouble));
Double pptAvgScore = achievementList.stream().map(e->ObjectUtil.defaultIfNull(e.getPptScore(),"0")).collect(Collectors.averagingDouble(Double::parseDouble));
Double theoryAvgScore = achievementList.stream().map(e->ObjectUtil.defaultIfNull(e.getTheoryScore(),"0")).collect(Collectors.averagingDouble(Double::parseDouble));
Double stepAvgScore = achievementList.stream().map(e->ObjectUtil.defaultIfNull(e.getPracticalTrainingScore(),"0")).collect(Collectors.averagingDouble(Double::parseDouble));
Double reportAvgScore = achievementList.stream().map(e->ObjectUtil.defaultIfNull(e.getReportWritingScore(),"0")).collect(Collectors.averagingDouble(Double::parseDouble));
teacherOpenCourseHandsOnList.setVideoAvgScore(videoScore);
teacherOpenCourseHandsOnList.setPptAvgScore(pptAvgScore);
teacherOpenCourseHandsOnList.setTheoryAvgScore(theoryAvgScore);

Loading…
Cancel
Save