diff --git a/doc/sql/mysql/tianze-pro-update.sql b/doc/sql/mysql/tianze-pro-update.sql index f139221c..d578e514 100644 --- a/doc/sql/mysql/tianze-pro-update.sql +++ b/doc/sql/mysql/tianze-pro-update.sql @@ -397,7 +397,7 @@ CREATE TABLE `general_resources_question_snapshot` ( `general_resources_question_snapshot_id` bigint(20) NOT NULL COMMENT '通用题目快照ID', `general_question_setting_id` bigint(20) NOT NULL COMMENT '通用题目配置ID', `business_course_info_id` bigint(20) DEFAULT NULL COMMENT '业务课程ID', - `business_course_info_type` bigint(20) DEFAULT NULL COMMENT '业务课程类型', + `business_course_info_type` varchar(30) DEFAULT NULL COMMENT '业务课程类型(枚举 BusinessCourseInfoEnum)', `question_type` int(2) DEFAULT NULL COMMENT '题型(1单选 2多选 3判断 4填空 5分析)', `question_score` decimal(3,1) DEFAULT NULL COMMENT '分值', `question_stem` varchar(3000) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '题干', diff --git a/web/src/main/java/com/ibeetl/jlw/dao/GeneralQuestionSettingDao.java b/web/src/main/java/com/ibeetl/jlw/dao/GeneralQuestionSettingDao.java index 5f410870..58c10a6b 100644 --- a/web/src/main/java/com/ibeetl/jlw/dao/GeneralQuestionSettingDao.java +++ b/web/src/main/java/com/ibeetl/jlw/dao/GeneralQuestionSettingDao.java @@ -21,7 +21,7 @@ public interface GeneralQuestionSettingDao extends BaseMapper queryByCondition(PageQuery query); PageQuery queryByConditionQuery(PageQuery query); @Update - void deleteGeneralQuestionSettingByIds(String ids); + void logicDeleteGeneralQuestionLogBySettingIds(String ids); @Update void deleteByIds(String ids); @Update diff --git a/web/src/main/java/com/ibeetl/jlw/dao/GeneralResourcesQuestionSnapshotDao.java b/web/src/main/java/com/ibeetl/jlw/dao/GeneralResourcesQuestionSnapshotDao.java index fd64cc35..7ba9f34d 100644 --- a/web/src/main/java/com/ibeetl/jlw/dao/GeneralResourcesQuestionSnapshotDao.java +++ b/web/src/main/java/com/ibeetl/jlw/dao/GeneralResourcesQuestionSnapshotDao.java @@ -1,6 +1,7 @@ package com.ibeetl.jlw.dao; import com.ibeetl.jlw.entity.GeneralResourcesQuestionSnapshot; +import com.ibeetl.jlw.entity.dto.QuestionSettingDTO; import com.ibeetl.jlw.web.query.GeneralResourcesQuestionSnapshotQuery; import org.beetl.sql.core.engine.PageQuery; import org.beetl.sql.mapper.BaseMapper; @@ -23,9 +24,19 @@ public interface GeneralResourcesQuestionSnapshotDao extends BaseMapper getByIds(String ids); List getValuesByQuery(GeneralResourcesQuestionSnapshotQuery generalResourcesQuestionSnapshotQuery); List getValuesByQueryNotWithPermission(GeneralResourcesQuestionSnapshotQuery generalResourcesQuestionSnapshotQuery); List>getExcelValues(GeneralResourcesQuestionSnapshotQuery generalResourcesQuestionSnapshotQuery); + + /** + * 根据配置随机出题。这里直接设置题目的分值。 + * @param questionSettingOption + * @return + */ + List getQuestionBySettingOptionDTO(QuestionSettingDTO questionSettingOption); + } diff --git a/web/src/main/java/com/ibeetl/jlw/dao/ResourcesQuestionDao.java b/web/src/main/java/com/ibeetl/jlw/dao/ResourcesQuestionDao.java index e9f8d202..654a54e8 100644 --- a/web/src/main/java/com/ibeetl/jlw/dao/ResourcesQuestionDao.java +++ b/web/src/main/java/com/ibeetl/jlw/dao/ResourcesQuestionDao.java @@ -26,4 +26,5 @@ public interface ResourcesQuestionDao extends BaseMapper{ List getByIds (String resourcesQuestionIds); List getValuesByQuery (ResourcesQuestionQuery resourcesQuestionQuery); List getValuesToCourseInfo(CourseInfoQuery courseInfoQuery); + List getValuesByQueryNotWithPermission(ResourcesQuestionQuery resourcesQuestionQuery); } \ No newline at end of file diff --git a/web/src/main/java/com/ibeetl/jlw/dao/TeacherOpenCourseMergeResourcesQuestionDao.java b/web/src/main/java/com/ibeetl/jlw/dao/TeacherOpenCourseMergeResourcesQuestionDao.java index 87801c6c..27d0b283 100644 --- a/web/src/main/java/com/ibeetl/jlw/dao/TeacherOpenCourseMergeResourcesQuestionDao.java +++ b/web/src/main/java/com/ibeetl/jlw/dao/TeacherOpenCourseMergeResourcesQuestionDao.java @@ -1,7 +1,7 @@ package com.ibeetl.jlw.dao; import com.ibeetl.jlw.entity.TeacherOpenCourseMergeResourcesQuestion; -import com.ibeetl.jlw.entity.dto.TeacherOpenCourseQuestionSettingDTO; +import com.ibeetl.jlw.entity.dto.QuestionSettingDTO; import com.ibeetl.jlw.entity.vo.TeacherOpenCourseQuestionSettingVO; import com.ibeetl.jlw.web.query.TeacherOpenCourseMergeResourcesQuestionQuery; import org.beetl.sql.core.engine.PageQuery; @@ -39,14 +39,14 @@ public interface TeacherOpenCourseMergeResourcesQuestionDao extends BaseMapper getRandomMergeResourcesQuestionList(TeacherOpenCourseQuestionSettingDTO questionSettingDTO); + List getRandomMergeResourcesQuestionList(QuestionSettingDTO questionSettingDTO); /** * 根据开课ID获取下面的题目类型和类型下的总题数 * @param questionSettingDTO * @return */ - List getRandomMergeResourcesQuestionListBySystem(TeacherOpenCourseQuestionSettingDTO questionSettingDTO); + List getRandomMergeResourcesQuestionListBySystem(QuestionSettingDTO questionSettingDTO); /** * 根据开课ID获取下面的题目类型和类型下的总题数 diff --git a/web/src/main/java/com/ibeetl/jlw/entity/GeneralResourcesQuestionSnapshot.java b/web/src/main/java/com/ibeetl/jlw/entity/GeneralResourcesQuestionSnapshot.java index aa3cadbe..fe19f00d 100644 --- a/web/src/main/java/com/ibeetl/jlw/entity/GeneralResourcesQuestionSnapshot.java +++ b/web/src/main/java/com/ibeetl/jlw/entity/GeneralResourcesQuestionSnapshot.java @@ -3,6 +3,7 @@ package com.ibeetl.jlw.entity; import com.ibeetl.admin.core.annotation.Dict; import com.ibeetl.admin.core.entity.BaseEntity; import com.ibeetl.admin.core.util.ValidateConfig; +import com.ibeetl.jlw.enums.BusinessCourseInfoEnum; import lombok.*; import lombok.experimental.Accessors; import org.beetl.sql.annotation.entity.AssignID; @@ -39,7 +40,7 @@ public class GeneralResourcesQuestionSnapshot extends BaseEntity{ //业务课程类型 - private Long businessCourseInfoType ; + private BusinessCourseInfoEnum businessCourseInfoType ; //题型(1单选 2多选 3判断 4填空 5分析) diff --git a/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseQuestionSetting.java b/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseQuestionSetting.java index 802a5645..378c8c47 100644 --- a/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseQuestionSetting.java +++ b/web/src/main/java/com/ibeetl/jlw/entity/TeacherOpenCourseQuestionSetting.java @@ -6,7 +6,7 @@ import com.ibeetl.admin.core.annotation.Dict; import com.ibeetl.admin.core.annotation.DictEnum; import com.ibeetl.admin.core.entity.BaseEntity; import com.ibeetl.admin.core.util.ValidateConfig; -import com.ibeetl.jlw.entity.dto.TeacherOpenCourseQuestionSettingDTO; +import com.ibeetl.jlw.entity.dto.QuestionSettingDTO; import com.ibeetl.jlw.enums.GlobalPushStatusEnum; import com.ibeetl.jlw.enums.ResourcesQuestionSnapshotFromTypeEnum; import lombok.Data; @@ -204,7 +204,7 @@ public class TeacherOpenCourseQuestionSetting extends BaseEntity { ) @UpdateIgnore @InsertIgnore - private List questionSettingOptions; + private List questionSettingOptions; /** * 其他表的字段,回显用 diff --git a/web/src/main/java/com/ibeetl/jlw/entity/dto/TeacherOpenCourseQuestionSettingDTO.java b/web/src/main/java/com/ibeetl/jlw/entity/dto/QuestionSettingDTO.java similarity index 97% rename from web/src/main/java/com/ibeetl/jlw/entity/dto/TeacherOpenCourseQuestionSettingDTO.java rename to web/src/main/java/com/ibeetl/jlw/entity/dto/QuestionSettingDTO.java index 4c65099f..24798a30 100644 --- a/web/src/main/java/com/ibeetl/jlw/entity/dto/TeacherOpenCourseQuestionSettingDTO.java +++ b/web/src/main/java/com/ibeetl/jlw/entity/dto/QuestionSettingDTO.java @@ -25,7 +25,7 @@ import java.math.BigDecimal; @NoArgsConstructor @Accessors(chain = true) @JsonIgnoreProperties(ignoreUnknown = true) -public class TeacherOpenCourseQuestionSettingDTO { +public class QuestionSettingDTO { /** * 题型 diff --git a/web/src/main/java/com/ibeetl/jlw/enums/BusinessCourseInfoEnum.java b/web/src/main/java/com/ibeetl/jlw/enums/BusinessCourseInfoEnum.java new file mode 100644 index 00000000..b0ceaae8 --- /dev/null +++ b/web/src/main/java/com/ibeetl/jlw/enums/BusinessCourseInfoEnum.java @@ -0,0 +1,22 @@ +package com.ibeetl.jlw.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import org.beetl.sql.annotation.entity.EnumMapping; + +/** + * 题目业务类型 + * @author lx + */ + +@Getter +@AllArgsConstructor +@EnumMapping("name") +public enum BusinessCourseInfoEnum { + + SYSTEM_QUESTION("系统题库"), + OPEN_COURSE_QUESTION( "开课题库"); + + private String text; + +} \ No newline at end of file diff --git a/web/src/main/java/com/ibeetl/jlw/service/GeneralQuestionLogService.java b/web/src/main/java/com/ibeetl/jlw/service/GeneralQuestionLogService.java index 93728507..20d4e1ef 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/GeneralQuestionLogService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/GeneralQuestionLogService.java @@ -28,6 +28,7 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.beetl.sql.core.SqlId; import org.beetl.sql.core.engine.PageQuery; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; @@ -58,7 +59,8 @@ public class GeneralQuestionLogService extends CoreBaseServicequeryByCondition(PageQuery query){ PageQuery ret = generalQuestionLogDao.queryByCondition(query); @@ -464,6 +466,8 @@ public class GeneralQuestionLogService extends CoreBaseService logList = generalQuestionLogDao.getValuesByQuery(questionLogQuery); - Assert.notEmpty(logList, "未查询到题目!"); + Assert.notEmpty(logList, "未查询到题目信息!"); // 处理答案和分数 logList.forEach(questionLog -> { // 学生提交的答案 diff --git a/web/src/main/java/com/ibeetl/jlw/service/GeneralQuestionSettingService.java b/web/src/main/java/com/ibeetl/jlw/service/GeneralQuestionSettingService.java index 4f6f8e71..ceb3ceb6 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/GeneralQuestionSettingService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/GeneralQuestionSettingService.java @@ -14,6 +14,7 @@ import com.ibeetl.admin.core.web.JsonResult; import com.ibeetl.admin.core.web.JsonReturnCode; import com.ibeetl.jlw.dao.GeneralQuestionLogDao; import com.ibeetl.jlw.dao.GeneralQuestionSettingDao; +import com.ibeetl.jlw.dao.GeneralResourcesQuestionSnapshotDao; import com.ibeetl.jlw.entity.*; import com.ibeetl.jlw.enums.GlobalPushStatusEnum; import com.ibeetl.jlw.enums.ResourcesQuestionSnapshotFromTypeEnum; @@ -54,9 +55,11 @@ import static com.ibeetl.jlw.enums.ResourcesQuestionSnapshotFromTypeEnum.HOMEWOR public class GeneralQuestionSettingService extends CoreBaseService{ @Autowired private GeneralQuestionSettingDao generalQuestionSettingDao; + @Autowired private GeneralResourcesQuestionSnapshotDao generalResourcesQuestionSnapshotDao; @Autowired private GeneralQuestionLogDao generalQuestionLogDao; @Autowired private GeneralQuestionLogService generalQuestionLogService; @Autowired private GeneralResourcesQuestionSnapshotService generalResourcesQuestionSnapshotService; + @Autowired private ResourcesQuestionService resourcesQuestionService; public PageQueryqueryByCondition(PageQuery query){ PageQuery ret = generalQuestionSettingDao.queryByCondition(query); @@ -81,9 +84,16 @@ public class GeneralQuestionSettingService extends CoreBaseService + * 任务一;添加题目配置主表 + * 任务二:添加题目快照表 + * + * @param settingQuery + * @return + */ +// public void addSettingBySystemCourse(@Validated(ValidateConfig.ADD.class) GeneralQuestionSettingQuery settingQuery, Map courseInfoIdPair ) { +// +// if (null == settingQuery.getGeneralQuestionSettingStatus()) { +// settingQuery.setGeneralQuestionSettingStatus(1); +// } +// if (null == settingQuery.getGeneralQuestionSettingPushStatus()) { +// settingQuery.setGeneralQuestionSettingPushStatus(UN_PUSH); +// } +// +// // 添加到作业主表中 +// add(settingQuery); +// +// // 插入快照 +// final Long teacherOpenCourseQuestionSettingId = settingQuery.getGeneralQuestionSettingId(); +// List questionSettingOptions = settingQuery.getQuestionSettingOptions(); +// +// List list = generalResourcesQuestionSnapshotService +// .getQuestionBySettingOptionDTOList(questionSettingOptions, courseInfoIdPair); +// +// list.forEach(item -> { +// item.setGeneralQuestionSettingId(teacherOpenCourseQuestionSettingId); +// item.setBusinessCourseInfoId(settingQuery.getBussinessId()); +// item.setBusinessCourseInfoType(SYSTEM_QUESTION); +// }); +// +// // 传入的开课题目IDS +// String resourcesQuestionIdPlural = settingQuery.getResourcesQuestionIdPlural(); +// // 题目类型区分 +// Collection settingDTOList = null; +// +// if(ObjectUtil.isNotEmpty(resourcesQuestionIdPlural)) { +// TeacherOpenCourseMergeResourcesQuestionQuery questionQuery = new TeacherOpenCourseMergeResourcesQuestionQuery(); +// questionQuery.setQuestionStatus(1); +// questionQuery.setTeacherOpenCourseMergeResourcesQuestionIdPlural(resourcesQuestionIdPlural); +// List list = +// resourcesQuestionService.getValuesByQueryNotWithPermission(questionQuery); +// +// // 无差别题目IDS转换成类型区分的集合 +// Map map = +// teacherOpenCourseMergeResourcesQuestionService.buildSettingDtoListByNoDiffQuestionList(list); +// +// // 设置分值 +// settingQuery.getQuestionSettingOptions().forEach(item -> { +// QuestionSettingDTO settingDTO = map.get(item.getQuestionType()); +// if(ObjectUtil.isAllNotEmpty(settingDTO, item.getSingleScore())) { +// settingDTO.setSingleScore(item.getSingleScore()); +// } +// }); +// +// if (ObjectUtil.isNotEmpty(map)) { settingDTOList = map.values(); } +// } else { +// settingDTOList = settingQuery.getQuestionSettingOptions(); +// } +// +// generalResourcesQuestionSnapshotDao.insertBatch(list); +// } } diff --git a/web/src/main/java/com/ibeetl/jlw/service/GeneralResourcesQuestionSnapshotService.java b/web/src/main/java/com/ibeetl/jlw/service/GeneralResourcesQuestionSnapshotService.java index 7276801f..9a9c1976 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/GeneralResourcesQuestionSnapshotService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/GeneralResourcesQuestionSnapshotService.java @@ -1,5 +1,7 @@ package com.ibeetl.jlw.service; +import cn.hutool.core.util.EnumUtil; +import cn.hutool.core.util.ObjectUtil; import cn.jlw.util.ToolUtils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; @@ -11,6 +13,8 @@ import com.ibeetl.admin.core.web.JsonReturnCode; import com.ibeetl.jlw.dao.GeneralResourcesQuestionSnapshotDao; import com.ibeetl.jlw.entity.FileEntity; import com.ibeetl.jlw.entity.GeneralResourcesQuestionSnapshot; +import com.ibeetl.jlw.entity.dto.QuestionSettingDTO; +import com.ibeetl.jlw.enums.BusinessCourseInfoEnum; import com.ibeetl.jlw.web.query.GeneralResourcesQuestionSnapshotQuery; import org.apache.commons.lang3.StringUtils; import org.apache.poi.hssf.usermodel.HSSFWorkbook; @@ -18,6 +22,7 @@ import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.assertj.core.util.Lists; import org.beetl.sql.core.SqlId; import org.beetl.sql.core.engine.PageQuery; import org.springframework.beans.factory.annotation.Autowired; @@ -25,6 +30,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; +import javax.annotation.Nullable; import java.io.*; import java.math.BigDecimal; import java.util.*; @@ -73,6 +79,14 @@ public class GeneralResourcesQuestionSnapshotService extends CoreBaseService insertList, Map courseInfoIdPair) { + if (ObjectUtil.isAllNotEmpty(insertList, courseInfoIdPair)) { + insertList.forEach(item -> { + Long courseMergeCourseInfoId = item.getBusinessCourseInfoId(); + item.setBusinessCourseInfoId(courseInfoIdPair.getOrDefault(courseMergeCourseInfoId, courseMergeCourseInfoId)); + }); + } + } + + /** + * 从开课题库中获取题目。可以单独设置类型下的分数 + * + * @param questionSettingOptions 根据题型动态分配题目 + * @param courseInfoIdPair 新旧课程ID片段 + */ + public List getQuestionBySettingOptionDTOList(@Nullable Collection questionSettingOptions, Map courseInfoIdPair) { + // 题目设置,来动态获取题目 + if(ObjectUtil.isNotEmpty(questionSettingOptions)) { + List result = new ArrayList<>(); + + for (QuestionSettingDTO questionSettingOption : questionSettingOptions) { + // 数据库动态设置分数,并获取题目列表 + List insertList = + generalResourcesQuestionSnapshotDao.getQuestionBySettingOptionDTO(questionSettingOption); + if (ObjectUtil.isNotEmpty(insertList)) { + setNewCourseInfoId(insertList, courseInfoIdPair); + result.addAll(insertList); + } + } + + return result; + } + + return Lists.emptyList(); + } } diff --git a/web/src/main/java/com/ibeetl/jlw/service/ResourcesQuestionService.java b/web/src/main/java/com/ibeetl/jlw/service/ResourcesQuestionService.java index 3fd3460d..c0378bf8 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/ResourcesQuestionService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/ResourcesQuestionService.java @@ -16,7 +16,7 @@ import com.ibeetl.jlw.entity.CourseInfo; import com.ibeetl.jlw.entity.FileEntity; import com.ibeetl.jlw.entity.ResourcesQuestion; import com.ibeetl.jlw.entity.UniversitiesCollegesJurisdictionExperimentalSystem; -import com.ibeetl.jlw.entity.dto.TeacherOpenCourseQuestionSettingDTO; +import com.ibeetl.jlw.entity.dto.QuestionSettingDTO; import com.ibeetl.jlw.enums.ResourcesQuestionTypeEnum; import com.ibeetl.jlw.web.query.CourseInfoQuery; import com.ibeetl.jlw.web.query.ResourcesQuestionQuery; @@ -150,6 +150,9 @@ public class ResourcesQuestionService extends CoreBaseService public List getValuesByQuery (ResourcesQuestionQuery resourcesQuestionQuery){ return resourcesQuestionDao.getValuesByQuery(resourcesQuestionQuery); } + public List getValuesByQueryNotWithPermission (ResourcesQuestionQuery resourcesQuestionQuery){ + return resourcesQuestionDao.getValuesByQueryNotWithPermission(resourcesQuestionQuery); + } public List getValues (Object paras){ return sqlManager.select(SqlId.of("jlw.resourcesQuestion.getResourcesQuestionValues"),ResourcesQuestion.class,paras); @@ -675,7 +678,7 @@ public class ResourcesQuestionService extends CoreBaseService * @param noDiffResourcesQuestionIdPlural 题目ID来自ResourcesQuestion表。 * @return */ - public Map buildSettingDtoListByNoDiffQuestionIds( + public Map buildSettingDtoListByNoDiffQuestionIds( @NotEmpty(message = "系统题目ID不能为空!") String noDiffResourcesQuestionIdPlural) { // 只查询正常状态的题目列表 @@ -694,7 +697,7 @@ public class ResourcesQuestionService extends CoreBaseService * @param resourcesQuestionList * @return */ - public Map buildSettingDtoListByNoDiffQuestionList( + public Map buildSettingDtoListByNoDiffQuestionList( List resourcesQuestionList) { return buildSettingDtoListByNoDiffQuestionList(resourcesQuestionList, ResourcesQuestion::getResourcesQuestionId); } @@ -706,7 +709,7 @@ public class ResourcesQuestionService extends CoreBaseService * @param resourcesQuestionList * @return */ - public Map buildSettingDtoListByNoDiffQuestionList( + public Map buildSettingDtoListByNoDiffQuestionList( List resourcesQuestionList, Function function) { if (ObjectUtil.isEmpty(resourcesQuestionList)) { @@ -714,40 +717,40 @@ public class ResourcesQuestionService extends CoreBaseService } // 先构建初始的属性 - Function buildFunc = - item -> TeacherOpenCourseQuestionSettingDTO.builder() + Function buildFunc = + item -> QuestionSettingDTO.builder() .questionType(EnumUtil.likeValueOf(ResourcesQuestionTypeEnum.class, item.getQuestionType())) .resourcesQuestionIdPlural(function.apply(item).toString()) .singleScore(item.getQuestionScore()) .build(); // 根据类型分组 - Map> groupMap = - resourcesQuestionList.stream().map(buildFunc).collect(groupingBy(TeacherOpenCourseQuestionSettingDTO::getQuestionType)); + Map> groupMap = + resourcesQuestionList.stream().map(buildFunc).collect(groupingBy(QuestionSettingDTO::getQuestionType)); - Map result = new ConcurrentHashMap<>(5); + Map result = new ConcurrentHashMap<>(5); // 分组后的数据,再处理 groupMap.forEach((key, value) -> { // resourcesQuestionIdPlural 上面暂存的是单个题目ID,这里将所有的题目ID处理成逗号隔开的字符 String questionIds = value.stream() - .map(TeacherOpenCourseQuestionSettingDTO::getResourcesQuestionIdPlural).collect(joining(",")); + .map(QuestionSettingDTO::getResourcesQuestionIdPlural).collect(joining(",")); // 查询到的题目的数量 Integer selectCount = ObjectUtil.defaultIfNull(value, Lists.emptyList()).size(); // 设置其他属性,如果集合长度不为空的话 if (selectCount > 0) { - TeacherOpenCourseQuestionSettingDTO teacherOpenCourseQuestionSettingDTO = value.get(0); + QuestionSettingDTO questionSettingDTO = value.get(0); // 该类型下,单个题目的分数 - BigDecimal singleScore = teacherOpenCourseQuestionSettingDTO.getSingleScore(); - teacherOpenCourseQuestionSettingDTO.setResourcesQuestionIdPlural(questionIds) + BigDecimal singleScore = questionSettingDTO.getSingleScore(); + questionSettingDTO.setResourcesQuestionIdPlural(questionIds) .setSingleTypeTotalScore(NumberUtil.mul(singleScore, selectCount)) .setSelectCount(selectCount); // 放入结果集中 - result.put(key, teacherOpenCourseQuestionSettingDTO); + result.put(key, questionSettingDTO); } }); return result; diff --git a/web/src/main/java/com/ibeetl/jlw/service/ResourcesQuestionSnapshotService.java b/web/src/main/java/com/ibeetl/jlw/service/ResourcesQuestionSnapshotService.java index 85ff9c80..4a31dc7f 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/ResourcesQuestionSnapshotService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/ResourcesQuestionSnapshotService.java @@ -14,7 +14,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.entity.dto.QuestionSettingDTO; import com.ibeetl.jlw.entity.vo.TeacherOpenCourseQuestionTestDetailVO; import com.ibeetl.jlw.entity.vo.TeacherOpenCourseQuestionTestSimpleInfoVO; import com.ibeetl.jlw.web.query.ResourcesQuestionSnapshotQuery; @@ -199,7 +199,7 @@ public class ResourcesQuestionSnapshotService extends CoreBaseService questionSettingOptions, Map courseInfoIdPair) { + @Nullable Collection questionSettingOptions, Map courseInfoIdPair) { // 题目设置,来动态获取题目 if(ObjectUtil.isNotEmpty(questionSettingOptions)) { // 在插入之前,先清空列表。这种情况下,支持题目配置还在,重置题目列表的操作。 @@ -222,7 +222,7 @@ public class ResourcesQuestionSnapshotService extends CoreBaseService questionSettingOptions, Map courseInfoIdPair) { + @Nullable Collection questionSettingOptions, Map courseInfoIdPair) { // 在插入之前,先清空列表。这种情况下,支持题目配置还在,重置题目列表的操作。 deleteByTeacherOpenCourseQuestionSettingIds(teacherOpenCourseQuestionSettingId.toString()); @@ -249,7 +249,7 @@ public class ResourcesQuestionSnapshotService extends CoreBaseService getByOpenCourseResourcesQuestion(@NotNull(message = "开课题目配置ID不能为空!") final Long teacherOpenCourseQuestionSettingId, - @Nullable Collection questionSettingOptions, Map courseInfoIdPair) { + @Nullable Collection questionSettingOptions, Map courseInfoIdPair) { // 题目设置,来动态获取题目 if(ObjectUtil.isNotEmpty(questionSettingOptions)) { // 数据库动态设置分数,并获取题目列表 @@ -270,7 +270,7 @@ public class ResourcesQuestionSnapshotService extends CoreBaseService getBySystemResourcesQuestion(@NotNull(message = "开课题目配置ID不能为空!") final Long teacherOpenCourseQuestionSettingId, - @Nullable Collection questionSettingOptions, Map courseInfoIdPair) { + @Nullable Collection questionSettingOptions, Map courseInfoIdPair) { // 题目设置,来动态获取题目 if(ObjectUtil.isNotEmpty(questionSettingOptions)) { // 数据库动态设置分数,并获取题目列表 @@ -284,6 +284,8 @@ public class ResourcesQuestionSnapshotService extends CoreBaseService insertList, @NotNull Map courseInfoIdPair) { - insertList.forEach(item -> { - Long courseMergeCourseInfoId = item.getTeacherOpenCourseMergeCourseInfoId(); - item.setTeacherOpenCourseMergeCourseInfoId(courseInfoIdPair.getOrDefault(courseMergeCourseInfoId, courseMergeCourseInfoId)); - }); + if (ObjectUtil.isAllNotEmpty(insertList, courseInfoIdPair)) { + insertList.forEach(item -> { + Long courseMergeCourseInfoId = item.getTeacherOpenCourseMergeCourseInfoId(); + item.setTeacherOpenCourseMergeCourseInfoId(courseInfoIdPair.getOrDefault(courseMergeCourseInfoId, courseMergeCourseInfoId)); + }); + } } /** @@ -389,11 +393,11 @@ public class ResourcesQuestionSnapshotService extends CoreBaseService getOpenResourcesQuestionSnapListBySettingOptions ( @NotNull(message = "开课题目配置ID不能为空!") final Long teacherOpenCourseQuestionSettingId, - @NotBlank(message = "题目设置不能为空!") Collection questionSettingOptions, Map courseInfoIdPair) { + @NotBlank(message = "题目设置不能为空!") Collection questionSettingOptions, Map courseInfoIdPair) { List result = new ArrayList<>(); - for (TeacherOpenCourseQuestionSettingDTO questionSettingOption : questionSettingOptions) { + for (QuestionSettingDTO questionSettingOption : questionSettingOptions) { // 根据配置随机出题。这里直接设置题目的分值。 List randomMergeResourcesQuestionList = teacherOpenCourseMergeResourcesQuestionDao.getRandomMergeResourcesQuestionList(questionSettingOption); @@ -417,11 +421,11 @@ public class ResourcesQuestionSnapshotService extends CoreBaseService getMergeResourcesQuestionSnapListByQuestionSettingOptionsBySystem ( @NotNull(message = "开课题目配置ID不能为空!") final Long teacherOpenCourseQuestionSettingId, - @NotBlank(message = "题目设置不能为空!") Collection questionSettingOptions, Map courseInfoIdPair) { + @NotBlank(message = "题目设置不能为空!") Collection questionSettingOptions, Map courseInfoIdPair) { List result = new ArrayList<>(); - for (TeacherOpenCourseQuestionSettingDTO questionSettingOption : questionSettingOptions) { + for (QuestionSettingDTO questionSettingOption : questionSettingOptions) { // 根据配置随机出题。这里直接设置题目的分值。 List randomMergeResourcesQuestionList = teacherOpenCourseMergeResourcesQuestionDao.getRandomMergeResourcesQuestionListBySystem(questionSettingOption); diff --git a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeCourseInfoService.java b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeCourseInfoService.java index ca00c427..5717ee3b 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeCourseInfoService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeCourseInfoService.java @@ -23,7 +23,7 @@ import com.ibeetl.admin.core.web.JsonResult; import com.ibeetl.admin.core.web.JsonReturnCode; import com.ibeetl.jlw.dao.TeacherOpenCourseMergeCourseInfoDao; import com.ibeetl.jlw.entity.*; -import com.ibeetl.jlw.entity.dto.TeacherOpenCourseQuestionSettingDTO; +import com.ibeetl.jlw.entity.dto.QuestionSettingDTO; import com.ibeetl.jlw.web.query.TeacherOpenCourseMergeCourseInfoQuery; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; @@ -170,7 +170,7 @@ public class TeacherOpenCourseMergeCourseInfoService extends CoreBaseService questionSettingOptions, Map courseInfoIdPair) { + @Nullable List questionSettingOptions, Map courseInfoIdPair) { // 添加开课课程表 JsonResult jsonResult = add(teacherOpenCourseMergeCourseInfoQuery); diff --git a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeResourcesQuestionService.java b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeResourcesQuestionService.java index 89e7a600..9e439718 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeResourcesQuestionService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseMergeResourcesQuestionService.java @@ -20,7 +20,7 @@ import com.ibeetl.jlw.entity.CourseInfo; import com.ibeetl.jlw.entity.FileEntity; import com.ibeetl.jlw.entity.ResourcesQuestion; import com.ibeetl.jlw.entity.TeacherOpenCourseMergeResourcesQuestion; -import com.ibeetl.jlw.entity.dto.TeacherOpenCourseQuestionSettingDTO; +import com.ibeetl.jlw.entity.dto.QuestionSettingDTO; import com.ibeetl.jlw.entity.vo.TeacherOpenCourseQuestionSettingVO; import com.ibeetl.jlw.enums.ResourcesQuestionTypeEnum; import com.ibeetl.jlw.web.query.ResourcesQuestionQuery; @@ -532,7 +532,7 @@ public class TeacherOpenCourseMergeResourcesQuestionService extends CoreBaseServ * @param resourcesQuestionList * @return */ - public Map buildSettingDtoListByNoDiffQuestionList( + public Map buildSettingDtoListByNoDiffQuestionList( List resourcesQuestionList) { return buildSettingDtoListByNoDiffQuestionList(resourcesQuestionList, TeacherOpenCourseMergeResourcesQuestion::getTeacherOpenCourseMergeResourcesQuestionId); } @@ -544,7 +544,7 @@ public class TeacherOpenCourseMergeResourcesQuestionService extends CoreBaseServ * @param resourcesQuestionList * @return */ - public Map buildSettingDtoListByNoDiffQuestionList( + public Map buildSettingDtoListByNoDiffQuestionList( List resourcesQuestionList, Function function) { if (ObjectUtil.isEmpty(resourcesQuestionList)) { @@ -552,40 +552,40 @@ public class TeacherOpenCourseMergeResourcesQuestionService extends CoreBaseServ } // 先构建初始的属性 - Function buildFunc = - item -> TeacherOpenCourseQuestionSettingDTO.builder() + Function buildFunc = + item -> QuestionSettingDTO.builder() .questionType(EnumUtil.likeValueOf(ResourcesQuestionTypeEnum.class, item.getQuestionType())) .resourcesQuestionIdPlural(function.apply(item).toString()) .singleScore(item.getQuestionScore()) .build(); // 根据类型分组 - Map> groupMap = - resourcesQuestionList.stream().map(buildFunc).collect(groupingBy(TeacherOpenCourseQuestionSettingDTO::getQuestionType)); + Map> groupMap = + resourcesQuestionList.stream().map(buildFunc).collect(groupingBy(QuestionSettingDTO::getQuestionType)); - Map result = new ConcurrentHashMap<>(5); + Map result = new ConcurrentHashMap<>(5); // 分组后的数据,再处理 groupMap.forEach((key, value) -> { // resourcesQuestionIdPlural 上面暂存的是单个题目ID,这里将所有的题目ID处理成逗号隔开的字符 String questionIds = value.stream() - .map(TeacherOpenCourseQuestionSettingDTO::getResourcesQuestionIdPlural).collect(joining(",")); + .map(QuestionSettingDTO::getResourcesQuestionIdPlural).collect(joining(",")); // 查询到的题目的数量 Integer selectCount = ObjectUtil.defaultIfNull(value, Collections.emptyList()).size(); // 设置其他属性,如果集合长度不为空的话 if (selectCount > 0) { - TeacherOpenCourseQuestionSettingDTO teacherOpenCourseQuestionSettingDTO = value.get(0); + QuestionSettingDTO questionSettingDTO = value.get(0); // 该类型下,单个题目的分数 - BigDecimal singleScore = teacherOpenCourseQuestionSettingDTO.getSingleScore(); - teacherOpenCourseQuestionSettingDTO.setResourcesQuestionIdPlural(questionIds) + BigDecimal singleScore = questionSettingDTO.getSingleScore(); + questionSettingDTO.setResourcesQuestionIdPlural(questionIds) .setSingleTypeTotalScore(NumberUtil.mul(singleScore, selectCount)) .setSelectCount(selectCount); // 放入结果集中 - result.put(key, teacherOpenCourseQuestionSettingDTO); + result.put(key, questionSettingDTO); } }); return result; diff --git a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseQuestionLogService.java b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseQuestionLogService.java index 3851d4bb..48f2b79c 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseQuestionLogService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseQuestionLogService.java @@ -278,6 +278,8 @@ public class TeacherOpenCourseQuestionLogService extends CoreBaseService logList = teacherOpenCourseQuestionLogDao.getValuesByQuery(questionLogQuery); - Assert.notEmpty(logList, "未查询到题目!"); + Assert.notEmpty(logList, "未查询到题目信息!"); // 处理答案和分数 logList.forEach(questionLog -> { // 学生提交的答案 diff --git a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseQuestionSettingService.java b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseQuestionSettingService.java index 2347b809..c454b2c7 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseQuestionSettingService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/TeacherOpenCourseQuestionSettingService.java @@ -19,7 +19,7 @@ import com.ibeetl.jlw.dao.StudentDao; import com.ibeetl.jlw.dao.TeacherOpenCourseQuestionLogDao; import com.ibeetl.jlw.dao.TeacherOpenCourseQuestionSettingDao; import com.ibeetl.jlw.entity.*; -import com.ibeetl.jlw.entity.dto.TeacherOpenCourseQuestionSettingDTO; +import com.ibeetl.jlw.entity.dto.QuestionSettingDTO; import com.ibeetl.jlw.enums.CopyFromEnum; import com.ibeetl.jlw.enums.GlobalPushStatusEnum; import com.ibeetl.jlw.enums.ResourcesQuestionSnapshotFromTypeEnum; @@ -100,7 +100,7 @@ public class TeacherOpenCourseQuestionSettingService extends CoreBaseService oneList = getValuesByQuery(settingQuery); + + // 考虑到编辑的时候,要排除自身 + if (ObjectUtil.isNotEmpty(query.getTeacherOpenCourseQuestionSettingId())) { + oneList.removeIf(s -> s.getTeacherOpenCourseQuestionSettingId().equals(query.getTeacherOpenCourseQuestionSettingId())); + } + + if(ObjectUtil.isNotEmpty(oneList)) { + throw new PlatformException("当前开课下的题目配置名称重复,请重新设置!"); + } + } + } + public String updateGivenByIds(TeacherOpenCourseQuestionSettingQuery teacherOpenCourseQuestionSettingQuery){ String msg = ""; if(StringUtils.isNotBlank(teacherOpenCourseQuestionSettingQuery.get_given())){ @@ -244,13 +272,13 @@ public class TeacherOpenCourseQuestionSettingService extends CoreBaseService questionSettingOptions, CopyFromEnum copyFrom, Map courseInfoIdPair) { + @Nullable Collection questionSettingOptions, CopyFromEnum copyFrom, Map courseInfoIdPair) { Long teacherOpenCourseId = teacherOpenCourseMergeCourseInfoQuery.getTeacherOpenCourseId(); TeacherOpenCourseQuestionSettingQuery settingQuery = new TeacherOpenCourseQuestionSettingQuery(); // 设置章节练习的默认配置,并设置开课ID - settingQuery.setCourseTestDefault().setTeacherOpenCourseId(teacherOpenCourseId); + settingQuery.setChapterExerciseDefault().setTeacherOpenCourseId(teacherOpenCourseId); settingQuery.setTeacherOpenCourseQuestionSettingName(teacherOpenCourseMergeCourseInfoQuery.getCourseInfoName()); settingQuery.setQuestionSettingOptions(new ArrayList<>(questionSettingOptions)); @@ -283,7 +311,7 @@ public class TeacherOpenCourseQuestionSettingService extends CoreBaseService settingDTOList = null; + Collection settingDTOList = null; if(ObjectUtil.isNotEmpty(resourcesQuestionIdPlural)) { TeacherOpenCourseMergeResourcesQuestionQuery questionQuery = new TeacherOpenCourseMergeResourcesQuestionQuery(); @@ -306,12 +334,12 @@ public class TeacherOpenCourseQuestionSettingService extends CoreBaseService map = + Map map = teacherOpenCourseMergeResourcesQuestionService.buildSettingDtoListByNoDiffQuestionList(list); // 设置分值 settingQuery.getQuestionSettingOptions().forEach(item -> { - TeacherOpenCourseQuestionSettingDTO settingDTO = map.get(item.getQuestionType()); + QuestionSettingDTO settingDTO = map.get(item.getQuestionType()); if(ObjectUtil.isAllNotEmpty(settingDTO, item.getSingleScore())) { settingDTO.setSingleScore(item.getSingleScore()); } @@ -350,7 +378,7 @@ public class TeacherOpenCourseQuestionSettingService extends CoreBaseService questionSettingOptions = settingQuery.getQuestionSettingOptions(); + List questionSettingOptions = settingQuery.getQuestionSettingOptions(); resourcesQuestionSnapshotService.insertBatchBySystemResourcesQuestion(teacherOpenCourseQuestionSettingId, questionSettingOptions, courseInfoIdPair); } @@ -366,7 +394,7 @@ public class TeacherOpenCourseQuestionSettingService extends CoreBaseService> courseInfoIdWithQuestionSettingOptions, + @Nullable Map> courseInfoIdWithQuestionSettingOptions, @NotNull Map courseInfoIdPair) { addSettingByOpenCourse(teacherOpenCourseId, courseInfoIdWithQuestionSettingOptions, Integer.valueOf(2), TeacherOpenCourseMergeCourseInfo::getCourseInfoType, courseInfoIdPair); } @@ -387,11 +415,11 @@ public class TeacherOpenCourseQuestionSettingService extends CoreBaseService> courseInfoIdWithQuestionSettingOptions, + @Nullable Map> courseInfoIdWithQuestionSettingOptions, @NotNull Object eq, @NotNull Func1 func1, @NotNull Map courseInfoIdPair) { TeacherOpenCourseQuestionSettingQuery settingQuery = new TeacherOpenCourseQuestionSettingQuery(); // 设置章节练习的默认配置,并设置开课ID - settingQuery.setCourseTestDefault().setTeacherOpenCourseId(teacherOpenCourseId); + settingQuery.setChapterExerciseDefault().setTeacherOpenCourseId(teacherOpenCourseId); courseInfoIdWithQuestionSettingOptions.forEach((courseInfo, settingDtoList) -> { // 判断,添加交给外部来控制 @@ -417,7 +445,7 @@ public class TeacherOpenCourseQuestionSettingService extends CoreBaseService> courseInfoIdWithQuestionSettingOptions, + @Nullable Map> courseInfoIdWithQuestionSettingOptions, @NotNull Map courseInfoIdPair) { addSettingBySystemCourse(teacherOpenCourseId, courseInfoIdWithQuestionSettingOptions, Integer.valueOf(2), CourseInfo::getCourseInfoType, courseInfoIdPair); } @@ -437,11 +465,11 @@ public class TeacherOpenCourseQuestionSettingService extends CoreBaseService> courseInfoIdWithQuestionSettingOptions, + @Nullable Map> courseInfoIdWithQuestionSettingOptions, @NotNull Object eq, @NotNull Func1 func1, @NotNull Map courseInfoIdPair) { TeacherOpenCourseQuestionSettingQuery settingQuery = new TeacherOpenCourseQuestionSettingQuery(); // 设置章节练习的默认配置,并设置开课ID - settingQuery.setCourseTestDefault().setTeacherOpenCourseId(teacherOpenCourseId); + settingQuery.setChapterExerciseDefault().setTeacherOpenCourseId(teacherOpenCourseId); courseInfoIdWithQuestionSettingOptions.forEach((courseInfo, settingDtoList) -> { // 判断,添加交给外部来控制 @@ -530,8 +558,8 @@ public class TeacherOpenCourseQuestionSettingService extends CoreBaseService map = resourcesQuestionService.buildSettingDtoListByNoDiffQuestionList(questionList); - Map> courseInfoIdWithQuestionSettingOptions = new HashMap<>(1); + Map map = resourcesQuestionService.buildSettingDtoListByNoDiffQuestionList(questionList); + Map> courseInfoIdWithQuestionSettingOptions = new HashMap<>(1); courseInfoIdWithQuestionSettingOptions.put(courseInfo, map.values()); addSettingBySystemCourse(teacherOpenCourseId, courseInfoIdWithQuestionSettingOptions, courseInfoIdPair); } @@ -577,7 +605,7 @@ public class TeacherOpenCourseQuestionSettingService extends CoreBaseService(1)); - return JsonResult.success(); - } +// @PostMapping(API + "/addQuestionByType.do") +// public JsonResult addQuestionByType(@RequestBody TeacherOpenCourseQuestionSettingQuery generalQuestionSettingQuery, +// BindingResult result, @SCoreUser CoreUser coreUser) { +// if (result.hasErrors()) { +// return JsonResult.failMessage(result); +// } +// Assert.notNull(coreUser, "请登录后再操作"); +// generalQuestionSettingQuery.setUserId(coreUser.getId()); +// generalQuestionSettingQuery.setOrgId(coreUser.getOrgId()); +// generalQuestionSettingService.addSettingByOpenCourse(generalQuestionSettingQuery, new HashMap<>(1)); +// return JsonResult.success(); +// } /** * 学生端-教师端-根据题目配置信息,获取相关的题目 @@ -150,11 +151,10 @@ public class GeneralQuestionSettingController{ */ @PostMapping(API + "/logicDelete.do") public JsonResult logicDeleteDo(String ids) { - generalQuestionSettingService.logicDeleteTeacherOpenCourseQuestionSetting(ids); + generalQuestionSettingService.logicDeleteGeneralQuestionLogBySettingIds(ids); return JsonResult.success(); } - /* 后台页面 */ @GetMapping(MODEL + "/index.do") @@ -268,7 +268,7 @@ public class GeneralQuestionSettingController{ @Function("generalQuestionSetting.delete") @ResponseBody public JsonResult delete(String ids) { - generalQuestionSettingService.deleteGeneralQuestionSetting(ids); + generalQuestionSettingService.deleteSettingAndSnapByIds(ids); return JsonResult.success(); } diff --git a/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseQuestionSettingController.java b/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseQuestionSettingController.java index 8bcd87b6..de4fda8c 100644 --- a/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseQuestionSettingController.java +++ b/web/src/main/java/com/ibeetl/jlw/web/TeacherOpenCourseQuestionSettingController.java @@ -141,7 +141,7 @@ public class TeacherOpenCourseQuestionSettingController{ */ @PostMapping(API + "/delete.do") public JsonResult deleteDo(String ids) { - teacherOpenCourseQuestionSettingService.deleteWithQuestionSnapByIds(ids); + teacherOpenCourseQuestionSettingService.deleteSettingAndSnapByIds(ids); return JsonResult.success(); } @@ -274,7 +274,7 @@ public class TeacherOpenCourseQuestionSettingController{ @Function("teacherOpenCourseQuestionSetting.delete") @ResponseBody public JsonResult delete(String ids) { - teacherOpenCourseQuestionSettingService.deleteWithQuestionSnapByIds(ids); + teacherOpenCourseQuestionSettingService.deleteSettingAndSnapByIds(ids); return JsonResult.success(); } diff --git a/web/src/main/java/com/ibeetl/jlw/web/query/GeneralQuestionSettingQuery.java b/web/src/main/java/com/ibeetl/jlw/web/query/GeneralQuestionSettingQuery.java index d46058a9..e5b9f8f6 100644 --- a/web/src/main/java/com/ibeetl/jlw/web/query/GeneralQuestionSettingQuery.java +++ b/web/src/main/java/com/ibeetl/jlw/web/query/GeneralQuestionSettingQuery.java @@ -1,9 +1,12 @@ package com.ibeetl.jlw.web.query; +import cn.hutool.core.date.DateField; import cn.jlw.validate.ValidateConfig; import com.ibeetl.admin.core.annotation.Query; import com.ibeetl.admin.core.web.query.PageParam; import com.ibeetl.jlw.entity.GeneralQuestionSetting; +import com.ibeetl.jlw.entity.TeacherOpenCourseMergeResourcesQuestion; +import com.ibeetl.jlw.entity.dto.QuestionSettingDTO; import com.ibeetl.jlw.enums.GlobalPushStatusEnum; import com.ibeetl.jlw.enums.ResourcesQuestionSnapshotFromTypeEnum; import lombok.*; @@ -11,6 +14,11 @@ import lombok.experimental.Accessors; import javax.validation.constraints.NotNull; import java.util.Date; +import java.util.List; + +import static cn.hutool.core.date.DateUtil.offset; +import static com.ibeetl.jlw.enums.GlobalPushStatusEnum.UN_PUSH; +import static com.ibeetl.jlw.enums.ResourcesQuestionSnapshotFromTypeEnum.CHAPTER_EXERCISE; /** *通用题目配置查询 @@ -64,6 +72,19 @@ public class GeneralQuestionSettingQuery extends PageParam { @Query(name = "用户ID", display = false) private Long userId; + /** + * 根据题目类型动态配置题目。 + * + */ + private List questionSettingOptions; + + /** + * 上传的题目ID,逗号隔开 + * 对应{@link TeacherOpenCourseMergeResourcesQuestion#getTeacherOpenCourseMergeCourseInfoId()} 集合 + * + */ + private String resourcesQuestionIdPlural; + private String generalQuestionSettingIdPlural; private String bussinessIdPlural; private String generalQuestionSettingStatusPlural; @@ -98,4 +119,49 @@ public class GeneralQuestionSettingQuery extends PageParam { pojo.setUserId(this.getUserId()); return pojo; } + + /** + * 考试的默认配置 + * @param setting + */ + public static void setDefault(GeneralQuestionSettingQuery setting) { + setting.setGeneralQuestionSettingStatus(1); + setting.setGeneralQuestionSettingAddTime(new Date()); + setting.setGeneralQuestionSettingOptionNoOrder(1); + setting.setGeneralQuestionSettingQuestionNoOrder(1); + setting.setGeneralQuestionSettingEndShowTrueFalse(1); + setting.setGeneralQuestionSettingEndShowQa(1); + setting.setGeneralQuestionSettingDoCount(20); + setting.setGeneralQuestionSettingSchoolClassIds("ALL"); + } + + /** + * 章节练习的默认配置 + * @param setting + */ + public static void setChapterExerciseDefault(GeneralQuestionSettingQuery setting) { + setting.setGeneralQuestionSettingStatus(1); + setting.setGeneralQuestionSettingAddTime(new Date()); + setting.setGeneralQuestionSettingOptionNoOrder(1); + setting.setGeneralQuestionSettingQuestionNoOrder(1); + setting.setGeneralQuestionSettingEndShowTrueFalse(1); + setting.setGeneralQuestionSettingEndShowQa(1); + setting.setGeneralQuestionSettingDoCount(1000); + setting.setGeneralQuestionSettingType(CHAPTER_EXERCISE); + setting.setGeneralQuestionSettingSchoolClassIds("ALL"); + setting.setGeneralQuestionSettingPushStatus(UN_PUSH); + setting.setGeneralQuestionStartTime(new Date()); + // 结束时间设置为20年后 + setting.setGeneralQuestionEndTime(offset(new Date(), DateField.YEAR, 20)); + } + + public GeneralQuestionSettingQuery setChapterExerciseDefault() { + setChapterExerciseDefault(this); + return this; + } + + public GeneralQuestionSettingQuery setDefault() { + setDefault(this); + return this; + } } diff --git a/web/src/main/java/com/ibeetl/jlw/web/query/GeneralResourcesQuestionSnapshotQuery.java b/web/src/main/java/com/ibeetl/jlw/web/query/GeneralResourcesQuestionSnapshotQuery.java index 24a7b751..8832e150 100644 --- a/web/src/main/java/com/ibeetl/jlw/web/query/GeneralResourcesQuestionSnapshotQuery.java +++ b/web/src/main/java/com/ibeetl/jlw/web/query/GeneralResourcesQuestionSnapshotQuery.java @@ -4,6 +4,7 @@ import cn.jlw.validate.ValidateConfig; import com.ibeetl.admin.core.annotation.Query; import com.ibeetl.admin.core.web.query.PageParam; import com.ibeetl.jlw.entity.GeneralResourcesQuestionSnapshot; +import com.ibeetl.jlw.enums.BusinessCourseInfoEnum; import lombok.*; import lombok.experimental.Accessors; @@ -28,7 +29,7 @@ public class GeneralResourcesQuestionSnapshotQuery extends PageParam { @Query(name = "业务课程ID", display = false) private Long businessCourseInfoId; @Query(name = "业务课程类型", display = false) - private Long businessCourseInfoType; + private BusinessCourseInfoEnum businessCourseInfoType; @Query(name = "题型(1单选 2多选 3判断 4填空 5分析)", display = false) private Integer questionType; @Query(name = "分值", display = false) diff --git a/web/src/main/java/com/ibeetl/jlw/web/query/TeacherOpenCourseQuestionSettingQuery.java b/web/src/main/java/com/ibeetl/jlw/web/query/TeacherOpenCourseQuestionSettingQuery.java index 581f3a70..c6e38c3a 100644 --- a/web/src/main/java/com/ibeetl/jlw/web/query/TeacherOpenCourseQuestionSettingQuery.java +++ b/web/src/main/java/com/ibeetl/jlw/web/query/TeacherOpenCourseQuestionSettingQuery.java @@ -6,7 +6,7 @@ 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.entity.dto.QuestionSettingDTO; import com.ibeetl.jlw.enums.GlobalPushStatusEnum; import com.ibeetl.jlw.enums.ResourcesQuestionSnapshotFromTypeEnum; import lombok.Data; @@ -78,7 +78,7 @@ public class TeacherOpenCourseQuestionSettingQuery extends PageParam { * 根据题目类型动态配置题目。 * */ - private List questionSettingOptions; + private List questionSettingOptions; /** * 上传的题目ID,逗号隔开 @@ -140,7 +140,7 @@ public class TeacherOpenCourseQuestionSettingQuery extends PageParam { * 章节练习的默认配置 * @param setting */ - public static void setCourseTestDefault(TeacherOpenCourseQuestionSettingQuery setting) { + public static void setChapterExerciseDefault(TeacherOpenCourseQuestionSettingQuery setting) { setting.setTeacherOpenCourseQuestionSettingStatus(1); setting.setTeacherOpenCourseQuestionSettingAddTime(new Date()); setting.setTeacherOpenCourseQuestionSettingOptionNoOrder(1); @@ -156,8 +156,8 @@ public class TeacherOpenCourseQuestionSettingQuery extends PageParam { setting.setTeacherOpenCourseQuestionEndTime(offset(new Date(), DateField.YEAR, 20)); } - public TeacherOpenCourseQuestionSettingQuery setCourseTestDefault() { - setCourseTestDefault(this); + public TeacherOpenCourseQuestionSettingQuery setChapterExerciseDefault() { + setChapterExerciseDefault(this); return this; } diff --git a/web/src/main/resources/sql/jlw/generalQuestionSetting.md b/web/src/main/resources/sql/jlw/generalQuestionSetting.md index a2eae3bc..b6317989 100644 --- a/web/src/main/resources/sql/jlw/generalQuestionSetting.md +++ b/web/src/main/resources/sql/jlw/generalQuestionSetting.md @@ -180,9 +180,7 @@ queryByConditionQuery @} - - -deleteGeneralQuestionSettingByIds +logicDeleteGeneralQuestionLogBySettingIds === * 批量删除(假删除) diff --git a/web/src/main/resources/sql/jlw/generalResourcesQuestionSnapshot.md b/web/src/main/resources/sql/jlw/generalResourcesQuestionSnapshot.md index 86396677..ed785a42 100644 --- a/web/src/main/resources/sql/jlw/generalResourcesQuestionSnapshot.md +++ b/web/src/main/resources/sql/jlw/generalResourcesQuestionSnapshot.md @@ -177,6 +177,13 @@ deleteGeneralResourcesQuestionSnapshotByIds delete from general_resources_question_snapshot where find_in_set(general_resources_question_snapshot_id,#ids#) +deleteByTeacherOpenCourseQuestionSettingIds +=== + +* 批量删除(通过题目配置IDs) + + delete from general_resources_question_snapshot where find_in_set(general_question_setting_id,#settingIds#) + getByIds @@ -727,3 +734,46 @@ getExcelValues ) )t +getQuestionBySettingOptionDTO +=== +* 根据题目设置随机出题(从系统的题库获取) + + select + @if(!isEmpty(singleScore)){ + '' as general_resources_question_snapshot_id, + '' as general_question_setting_id, + '' as business_course_info_type, + t.course_info_id as business_course_info_id, + t.question_type, + t.question_stem, + t.question_option_a, + t.question_option_b, + t.question_option_c, + t.question_option_d, + t.question_option_e, + t.question_answer, + #singleScore# as question_score, + t.question_analysis, + t.question_status, + t.user_id, + t.org_id + @} else { + t.*, + t.course_info_id as business_course_info_id + @} + from resources_question t + where 1=1 + and t.question_status = 1 + @// 题目ID优先级高 + @if(!isEmpty(resourcesQuestionIdPlural)) { + and find_in_set(t.resources_question_id, #resourcesQuestionIdPlural#) + @} else { + @// 随机抽题,根据题目配置动态抽取题目。会存在题库抽不够数的情况。 + @if(!isEmpty(questionType)){ + and find_in_set(t.question_type, #questionType#) + @} + @if(!isEmpty(selectCount)){ + ORDER BY RAND() + limit #selectCount# + @} + @} \ No newline at end of file