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