题目配置增强

beetlsql3-dev
Mlxa0324 2 years ago
parent db55252982
commit 813954bf02

@ -1,6 +1,7 @@
package com.ibeetl.jlw.dao;
import com.ibeetl.jlw.entity.TeacherOpenCourseMergeResourcesQuestion;
import com.ibeetl.jlw.entity.dto.TeacherOpenCourseQuestionSettingDTO;
import com.ibeetl.jlw.web.query.TeacherOpenCourseMergeResourcesQuestionQuery;
import org.beetl.sql.core.engine.PageQuery;
import org.beetl.sql.mapper.BaseMapper;
@ -28,4 +29,10 @@ public interface TeacherOpenCourseMergeResourcesQuestionDao extends BaseMapper<T
List<TeacherOpenCourseMergeResourcesQuestion> getValuesByQuery(TeacherOpenCourseMergeResourcesQuestionQuery teacherOpenCourseMergeResourcesQuestionQuery);
List<TeacherOpenCourseMergeResourcesQuestion> getValuesByQueryNotWithPermission(TeacherOpenCourseMergeResourcesQuestionQuery teacherOpenCourseMergeResourcesQuestionQuery);
List<Map<String,Object>>getExcelValues(TeacherOpenCourseMergeResourcesQuestionQuery teacherOpenCourseMergeResourcesQuestionQuery);
/**
* 线
* @return
*/
List<TeacherOpenCourseMergeResourcesQuestion> getRandomMergeResourcesQuestionList(TeacherOpenCourseQuestionSettingDTO questionSettingDTO);
}

@ -0,0 +1,43 @@
package com.ibeetl.jlw.entity.dto;
import com.ibeetl.jlw.enums.ResourcesQuestionTypeEnum;
import lombok.Data;
import java.math.BigDecimal;
/**
*
*
* @author mlx
*/
@Data
public class TeacherOpenCourseQuestionSettingDTO {
/**
*
*/
private ResourcesQuestionTypeEnum typeEnum;
/**
*
*/
private Integer totalCount;
/**
*
*/
private Integer selectCount;
/**
*
*/
private BigDecimal singleScore;
/**
*
*/
private BigDecimal singleTypeTotalScore;
}

@ -0,0 +1,16 @@
package com.ibeetl.jlw.entity.dto;
import com.ibeetl.admin.core.entity.CoreUser;
import com.ibeetl.jlw.entity.UniversitiesColleges;
import lombok.Data;
/**
* -
*/
@Data
public class UniversitiesCollegesInfoDTO {
private UniversitiesColleges universitiesColleges;
private CoreUser coreUser;
// private teachercourseInfoCount;
}

@ -0,0 +1,27 @@
package com.ibeetl.jlw.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
import org.beetl.sql.annotation.entity.EnumMapping;
import org.beetl.sql.annotation.entity.EnumValue;
/**
*
*
* @author mlx
*/
@Getter
@EnumMapping("name")
@AllArgsConstructor
public enum ResourcesQuestionTypeEnum {
SINGLE_QUESTION(1, "单选题"),
MULTIPLE_QUESTION(2, "多选题"),
JUDGMENT_QUESTION(3, "判断题"),
FILL_QUESTION(4, "填空题"),
ANALYSIS_QUESTION(5, "分析题");
@EnumValue
private Integer code;
private String text;
}

@ -1,6 +1,7 @@
package com.ibeetl.jlw.service;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.jlw.util.ToolUtils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
@ -12,6 +13,7 @@ import com.ibeetl.jlw.dao.ResourcesQuestionSnapshotDao;
import com.ibeetl.jlw.dao.StudentDao;
import com.ibeetl.jlw.dao.TeacherOpenCourseMergeResourcesQuestionDao;
import com.ibeetl.jlw.entity.*;
import com.ibeetl.jlw.entity.dto.TeacherOpenCourseQuestionSettingDTO;
import com.ibeetl.jlw.web.query.ResourcesQuestionSnapshotQuery;
import org.apache.commons.lang3.StringUtils;
import org.beetl.sql.core.SQLReady;
@ -26,11 +28,8 @@ import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import static com.ibeetl.admin.core.util.user.CacheUserUtil.getUserId;
@ -165,23 +164,85 @@ public class ResourcesQuestionSnapshotService extends CoreBaseService<ResourcesQ
* ID
*
* @param teacherOpenCourseQuestionSettingId ID
* @param questionIds ID
* @param questionSettingOptions
* @param questionIdPlural ID
*/
public void insertBatchByQuestionIds(@NotNull(message = "开课题目配置ID不能为空") final Long teacherOpenCourseQuestionSettingId,
@NotEmpty(message = "题目ID不能为空") String... questionIds) {
List<TeacherOpenCourseQuestionSettingDTO> questionSettingOptions,
String questionIdPlural) {
// 处理题目ID
String questionIdPlural = Arrays.stream(questionIds)
.distinct().flatMap(item -> Stream.of(item.split(",")))
.collect(Collectors.joining(","));
// 在插入之前,先清空列表。这种情况下,支持题目配置还在,重置题目列表的操作。
ResourcesQuestionSnapshot deleteCondition = new ResourcesQuestionSnapshot();
deleteCondition.setTeacherOpenCourseQuestionSettingId(teacherOpenCourseQuestionSettingId);
deleteCondition.setQuestionStatus(1);
deleteByCondition(deleteCondition);
List<ResourcesQuestionSnapshot> insertList = new ArrayList<>();
// 题目设置,来动态获取题目
if(ObjectUtil.isNotEmpty(questionSettingOptions)) {
insertList = getResourcesQuestionSnapshotListByQuestionSettingOptions(teacherOpenCourseQuestionSettingId, questionSettingOptions);
}
// 根据题目ID集合获取题目
if(ObjectUtil.isNotEmpty(questionIdPlural)) {
insertList = getResourcesQuestionSnapshotListByQuestionIds(teacherOpenCourseQuestionSettingId, questionIdPlural);
}
resourcesQuestionSnapshotDao.insertBatch(insertList);
}
/**
* ID
* ID
*
* @param teacherOpenCourseQuestionSettingId
* @param questionIdPlural
* @return
*/
public List<ResourcesQuestionSnapshot> getResourcesQuestionSnapshotListByQuestionIds(
@NotNull(message = "开课题目配置ID不能为空") final Long teacherOpenCourseQuestionSettingId,
@NotBlank(message = "题目ID列表不能为空") String questionIdPlural) {
// 批量插入快照表
List<TeacherOpenCourseMergeResourcesQuestion> byIds = teacherOpenCourseMergeResourcesQuestionDao.getByIds(questionIdPlural);
List<ResourcesQuestionSnapshot> snapshotList = BeanUtil.copyToList(byIds, ResourcesQuestionSnapshot.class);
snapshotList.forEach(snapshot -> {
snapshot.setTeacherOpenCourseQuestionSettingId(teacherOpenCourseQuestionSettingId);
});
resourcesQuestionSnapshotDao.insertBatch(snapshotList);
return snapshotList;
}
/**
*
* ID
*
* @param teacherOpenCourseQuestionSettingId
* @param questionSettingOptions
* @return
*/
public List<ResourcesQuestionSnapshot> getResourcesQuestionSnapshotListByQuestionSettingOptions(
@NotNull(message = "开课题目配置ID不能为空") final Long teacherOpenCourseQuestionSettingId,
@NotBlank(message = "题目设置不能为空!") List<TeacherOpenCourseQuestionSettingDTO> questionSettingOptions) {
List<ResourcesQuestionSnapshot> result = new ArrayList<>();
for (TeacherOpenCourseQuestionSettingDTO questionSettingOption : questionSettingOptions) {
// 根据配置随机出题
List<TeacherOpenCourseMergeResourcesQuestion> randomMergeResourcesQuestionList =
teacherOpenCourseMergeResourcesQuestionDao.getRandomMergeResourcesQuestionList(questionSettingOption);
// Copy到新对象中
List<ResourcesQuestionSnapshot> snapshotList = BeanUtil.copyToList(randomMergeResourcesQuestionList, ResourcesQuestionSnapshot.class);
snapshotList.forEach(snapshot -> {
snapshot.setTeacherOpenCourseQuestionSettingId(teacherOpenCourseQuestionSettingId);
});
// 放入最终的集合中
result.addAll(snapshotList);
}
return result;
}
/**

@ -280,7 +280,7 @@ public class TeacherOpenCourseQuestionLogService extends CoreBaseService<Teacher
});
// 学生做的题目的答案与日志关联
updateBatch(logList);
updateBatchTemplate(logList);
// 批量插入错题集,方法内部自带判断
teacherOpenCourseQuestionLogWrongService.insertBatchByQuestionLogList(logList);

@ -160,7 +160,9 @@ public class TeacherOpenCourseQuestionSettingService extends CoreBaseService<Tea
// 插入快照
resourcesQuestionSnapshotService.insertBatchByQuestionIds(
settingQuery.getTeacherOpenCourseQuestionSettingId(), settingQuery.getResourcesQuestionIdPlural());
settingQuery.getTeacherOpenCourseQuestionSettingId(),
settingQuery.getQuestionSettingOptions(),
settingQuery.getResourcesQuestionIdPlural());
}
}

@ -5,13 +5,14 @@ import com.ibeetl.admin.core.annotation.Query;
import com.ibeetl.admin.core.web.query.PageParam;
import com.ibeetl.jlw.entity.TeacherOpenCourseMergeResourcesQuestion;
import com.ibeetl.jlw.entity.TeacherOpenCourseQuestionSetting;
import com.ibeetl.jlw.entity.dto.TeacherOpenCourseQuestionSettingDTO;
import com.ibeetl.jlw.enums.ResourcesQuestionSnapshotFromTypeEnum;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.List;
/**
*
@ -65,11 +66,18 @@ public class TeacherOpenCourseQuestionSettingQuery extends PageParam {
@Query(name = "用户ID", display = false)
private Long userId;
/**
*
* ID {@link #resourcesQuestionIdPlural}
*
*/
private List<TeacherOpenCourseQuestionSettingDTO> questionSettingOptions;
/**
* ID,
* {@link TeacherOpenCourseMergeResourcesQuestion#getTeacherOpenCourseMergeCourseInfoId()}
*
*/
@NotBlank(message = "题目ID集合不能为空", groups = ValidateConfig.ADD.class)
private String resourcesQuestionIdPlural;
private String teacherOpenCourseQuestionSettingIdPlural;

@ -697,3 +697,18 @@ getExcelValues
)
)t
getRandomMergeResourcesQuestionList
===
* 根据题目设置随机出题
select t.* from teacher_open_course_merge_resources_question t
where 1=1
and t.question_status = 1
@if(!isEmpty(typeEnum)){
and find_in_set(t.question_type, #typeEnum#)
@}
@if(!isEmpty(selectCount)){
ORDER BY RAND()
limit #selectCount#
@}
Loading…
Cancel
Save