diff --git a/web/src/main/java/com/ibeetl/jlw/dao/GeneralQuestionLogDao.java b/web/src/main/java/com/ibeetl/jlw/dao/GeneralQuestionLogDao.java index 32425a07..cb59c447 100644 --- a/web/src/main/java/com/ibeetl/jlw/dao/GeneralQuestionLogDao.java +++ b/web/src/main/java/com/ibeetl/jlw/dao/GeneralQuestionLogDao.java @@ -157,5 +157,7 @@ public interface GeneralQuestionLogDao extends BaseMapper { */ long getNotSubmitQuestionLogsCount(Long studentId, Long questionSettingId); + Boolean existGeneralQuestionSettingId(Long generalQuestionSettingId); + } 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 c0698c84..ee097bcf 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/GeneralQuestionLogService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/GeneralQuestionLogService.java @@ -1386,4 +1386,8 @@ public class GeneralQuestionLogService extends CoreBaseService{ - - @Autowired private GeneralQuestionSettingDao generalQuestionSettingDao; - @Autowired private GeneralResourcesQuestionSnapshotDao generalResourcesQuestionSnapshotDao; - @Autowired private GeneralQuestionLogDao generalQuestionLogDao; - @Autowired private QuestionLogSummaryDao questionLogSummaryDao; - @Autowired private GeneralQuestionLogService generalQuestionLogService; - @Autowired @Lazy +public class GeneralQuestionSettingService extends CoreBaseService { + + @Autowired + private GeneralQuestionSettingDao generalQuestionSettingDao; + @Autowired + private GeneralResourcesQuestionSnapshotDao generalResourcesQuestionSnapshotDao; + @Autowired + private GeneralQuestionLogDao generalQuestionLogDao; + @Autowired + private QuestionLogSummaryDao questionLogSummaryDao; + @Autowired + private GeneralQuestionLogService generalQuestionLogService; + @Autowired + @Lazy private GeneralResourcesQuestionSnapshotService generalResourcesQuestionSnapshotService; - @Autowired private ResourcesQuestionService resourcesQuestionService; - @Autowired private GeneralQuestionSettingRedisDelayQueueImpl generalQuestionSettingRedisDelayQueue; - @Autowired private CourseInfoDao courseInfoDao; - - public PageQueryqueryByCondition(PageQuery query){ - PageQuery ret = generalQuestionSettingDao.queryByCondition(query); + @Autowired + private ResourcesQuestionService resourcesQuestionService; + @Autowired + private GeneralQuestionSettingRedisDelayQueueImpl generalQuestionSettingRedisDelayQueue; + @Autowired + private CourseInfoDao courseInfoDao; + + public PageQuery queryByCondition(PageQuery query) { + PageQuery ret = generalQuestionSettingDao.queryByCondition(query); queryListAfter(ret.getList()); return ret; } - public PageQueryqueryByConditionQuery(PageQuery query){ - PageQuery ret = generalQuestionSettingDao.queryByConditionQuery(query); + public PageQuery queryByConditionQuery(PageQuery query) { + PageQuery ret = generalQuestionSettingDao.queryByConditionQuery(query); queryListAfter(ret.getList()); return ret; } - public void deleteByList(List list){ + public void deleteByList(List list) { String ids = ""; ToolUtils.deleteNullList(list); - for(int i=0;null != list && i generalQuestionSettingList = new ArrayList<>(); try { @@ -121,11 +132,12 @@ public class GeneralQuestionSettingService extends CoreBaseService0){ - for(int i=0;i 0) { + for (int i = 0; i < generalQuestionSettingList.size(); i++) { GeneralQuestionSetting generalQuestionSetting = generalQuestionSettingList.get(i); generalQuestionSetting.setUserId(generalQuestionSettingQuery.getUserId()); generalQuestionSetting.setOrgId(generalQuestionSettingQuery.getOrgId()); @@ -135,7 +147,7 @@ public class GeneralQuestionSettingService extends CoreBaseService settingDTOList = generalQuestionSettingQuery.getQuestionSettingOptions(); + + // 用于指定课程中拉取题目。暂时查询中不会用到 + final String sourceCourseInfoIds = generalQuestionSettingQuery.getSourceCourseInfoIds(); + + // 批量添加课程ID + settingDTOList.forEach(item -> item.setSourceCourseInfoIds(sourceCourseInfoIds)); + + // 如果指定的题目IDs不为空的话,则需要对这些题目进行题目类型分组。 + if (ObjectUtil.isNotEmpty(resourcesQuestionIdPlural)) { + + // 指定课程 + String joinFindCourseInfoIds = null; + if (StrUtil.isNotBlank(sourceCourseInfoIds)) { + String sourceCourseInfoIdsNew = ArrayUtil.join(sourceCourseInfoIds.split(","), "|", "_", "_"); + List findCourseInfoIds = courseInfoDao.createLambdaQuery().andLike(CourseInfo::getCourseInfoFullId, sourceCourseInfoIdsNew) + .andEq(CourseInfo::getCourseInfoStatus, 1) + .select(String.class, "course_info_id"); + + joinFindCourseInfoIds = ArrayUtil.join(findCourseInfoIds, ","); + } + + ResourcesQuestionQuery questionQuery = new ResourcesQuestionQuery(); + questionQuery.setQuestionStatus(1); + // 这里可能为空,就不做判断了。 + questionQuery.setCourseInfoIds(joinFindCourseInfoIds); + questionQuery.setResourcesQuestionIds(resourcesQuestionIdPlural); + List questionList = resourcesQuestionService.getValuesByQueryNotWithPermission(questionQuery); + + // 无差别题目IDS转换成类型区分的集合 + Map map = + resourcesQuestionService.buildSettingDtoListByNoDiffQuestionList(questionList); + + // 设置分值 + generalQuestionSettingQuery.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(); + } + } + + List list = + generalResourcesQuestionSnapshotService.getQuestionBySettingOptionDTOList(settingDTOList, Collections.emptyMap()); + + if (ObjectUtil.isNotEmpty(list)) { + list.forEach(item -> { + item.setGeneralQuestionSettingId(teacherOpenCourseQuestionSettingId); + item.setBusinessCourseInfoId(generalQuestionSettingQuery.getBusinessId()); + item.setBusinessCourseInfoType(QuestionBusinessTypeEnum.FROM_SYSTEM); + }); + + // 更新ID + setNewCourseInfoId(list, Collections.emptyMap()); + generalResourcesQuestionSnapshotDao.insertBatch(list); + } else { + throw new PlatformException("题目配置信息有误,未获取到的题目!"); + } + }else { + throw new PlatformException("题目配置信息有误,未获取到的题目!"); + } + + return JsonResult.success(); } - public String updateGivenByIds(GeneralQuestionSettingQuery generalQuestionSettingQuery){ + public String updateGivenByIds(GeneralQuestionSettingQuery generalQuestionSettingQuery) { String msg = ""; - if(StringUtils.isNotBlank(generalQuestionSettingQuery.get_given())){ + if (StringUtils.isNotBlank(generalQuestionSettingQuery.get_given())) { boolean flag = generalQuestionSettingDao.updateGivenByIds(generalQuestionSettingQuery) > 0; - if(!flag){ + if (!flag) { msg = "更新指定参数失败"; } - }else{ + } else { msg = "指定参数为空"; } return msg; } - public List getValues (Object paras){ + public List getValues(Object paras) { return sqlManager.select(SqlId.of("jlw.generalQuestionSetting.getGeneralQuestionSettingValues"), GeneralQuestionSetting.class, paras); } - public List getValuesByQuery (GeneralQuestionSettingQuery generalQuestionSettingQuery){ + public List getValuesByQuery(GeneralQuestionSettingQuery generalQuestionSettingQuery) { return generalQuestionSettingDao.getValuesByQuery(generalQuestionSettingQuery); } - public List getValuesByQueryNotWithPermission (GeneralQuestionSettingQuery generalQuestionSettingQuery){ + public List getValuesByQueryNotWithPermission(GeneralQuestionSettingQuery generalQuestionSettingQuery) { return generalQuestionSettingDao.getValuesByQueryNotWithPermission(generalQuestionSettingQuery); } /** * 通过IDs查询正常状态的题目配置列表 - * @param ids 题目配置IDs + * + * @param ids 题目配置IDs * @return */ - public List getByIds (String ids){ + public List getByIds(String ids) { GeneralQuestionSettingQuery query = new GeneralQuestionSettingQuery(); query.setGeneralQuestionSettingStatus(1); query.setGeneralQuestionSettingIdPlural(ids); @@ -194,10 +291,11 @@ public class GeneralQuestionSettingService extends CoreBaseService getByBusinessIds (String businessIds){ + public List getByBusinessIds(String businessIds) { GeneralQuestionSettingQuery query = new GeneralQuestionSettingQuery(); query.setGeneralQuestionSettingStatus(1); query.setBusinessIdPlural(businessIds); @@ -205,45 +303,45 @@ public class GeneralQuestionSettingService extends CoreBaseService list = generalQuestionSettingDao.getValuesByQuery(generalQuestionSettingQuery); - if(null != list && list.size()>0){ + if (null != list && list.size() > 0) { return list.get(0); - }else{ + } else { return null; } } - public GeneralQuestionSetting getInfo (GeneralQuestionSettingQuery generalQuestionSettingQuery){ + public GeneralQuestionSetting getInfo(GeneralQuestionSettingQuery generalQuestionSettingQuery) { List list = generalQuestionSettingDao.getValuesByQuery(generalQuestionSettingQuery); - if(null != list && list.size()>0){ + if (null != list && list.size() > 0) { return list.get(0); - }else{ + } else { return null; } } - public JsonResult importTemplate(List fileEntityList,Listlist,CoreUser coreUser){ - ListerrMsg = new ArrayList<>(); - String msg =""; + public JsonResult importTemplate(List fileEntityList, List list, CoreUser coreUser) { + List errMsg = new ArrayList<>(); + String msg = ""; int count = 0; Date date = new Date(); - for(int item=0;null != fileEntityList && item map = new HashMap<>();//获取需要的表头的列 + Map map = new HashMap<>();//获取需要的表头的列 //从第一列找到需要的表头 - for (int i=0; i0?JsonReturnCode.SUCCESS.getCode():JsonReturnCode.FAIL.getCode()); + jsonResult.setCode(count > 0 ? JsonReturnCode.SUCCESS.getCode() : JsonReturnCode.FAIL.getCode()); jsonResult.setData(errMsg); - jsonResult.setMsg((count>0?"导入成功,共导入"+count+"条":"导入失败")+(StringUtils.isNotBlank(msg)?"
"+msg:"")); + jsonResult.setMsg((count > 0 ? "导入成功,共导入" + count + "条" : "导入失败") + (StringUtils.isNotBlank(msg) ? "
" + msg : "")); return jsonResult; } - public List> getExcelValues (GeneralQuestionSettingQuery generalQuestionSettingQuery){ + public List> getExcelValues(GeneralQuestionSettingQuery generalQuestionSettingQuery) { return generalQuestionSettingDao.getExcelValues(generalQuestionSettingQuery); } @@ -461,6 +542,7 @@ public class GeneralQuestionSettingService extends CoreBaseService questionDetail(@NotNull(message = "题目配置ID不能为空!") final Long generalQuestionSettingId, - @NotNull(message = "类型不能为空!") ResourcesQuestionSnapshotFromTypeEnum fromTypeEnum, CoreUser coreUser) { + @NotNull(message = "类型不能为空!") ResourcesQuestionSnapshotFromTypeEnum fromTypeEnum, CoreUser coreUser) { // 获取学生ID final Student student = getStudent(); @@ -555,7 +638,7 @@ public class GeneralQuestionSettingService extends CoreBaseService { // 1单选 2多选进行打乱,其他的不变 if (value.getQuestionType() <= 2) { - shuffleQuestion(value, "questionStem","questionOption", + shuffleQuestion(value, "questionStem", "questionOption", "questionAnswer", "questionType"); } }); @@ -606,11 +689,11 @@ public class GeneralQuestionSettingService extends CoreBaseService courseInfoIdPair ) { + public void addSettingBySystemCourse(@Validated(ValidateConfig.ADD.class) GeneralQuestionSettingQuery settingQuery, Map courseInfoIdPair) { // 添加到作业主表中 add(settingQuery); @@ -630,7 +713,7 @@ public class GeneralQuestionSettingService extends CoreBaseService item.setSourceCourseInfoIds(sourceCourseInfoIds)); // 如果指定的题目IDs不为空的话,则需要对这些题目进行题目类型分组。 - if(ObjectUtil.isNotEmpty(resourcesQuestionIdPlural)) { + if (ObjectUtil.isNotEmpty(resourcesQuestionIdPlural)) { // 指定课程 String joinFindCourseInfoIds = null; @@ -667,7 +750,7 @@ public class GeneralQuestionSettingService extends CoreBaseService list = + List list = generalResourcesQuestionSnapshotService.getQuestionBySettingOptionDTOList(settingDTOList, Collections.emptyMap()); if (ObjectUtil.isNotEmpty(list)) { @@ -680,8 +763,7 @@ public class GeneralQuestionSettingService extends CoreBaseService * 错题练习,错题库根据试卷来 * - * @param questionSettingIds 题目配置IDs(试卷ID) - * @param tuckOrError 练习的类型 - * @param student 学生 + * @param questionSettingIds 题目配置IDs(试卷ID) + * @param tuckOrError 练习的类型 + * @param student 学生 * @return {@link JsonResult} * @Author: 87966 * @Date: 2022/12/1 9:27 */ public List questionDetailTest(@NotNull(message = "题目配置ID不能为空!") String questionSettingIds, - @NotNull(message = "练习类型不能为空!") TuckOrErrorEnum tuckOrError, @NotNull(message = "该接口只能学生访问") Student student) { + @NotNull(message = "练习类型不能为空!") TuckOrErrorEnum tuckOrError, @NotNull(message = "该接口只能学生访问") Student student) { final Long studentId = student.getStudentId(); GeneralQuestionLogQuery logQuery = new GeneralQuestionLogQuery(); @@ -788,7 +870,7 @@ public class GeneralQuestionSettingService extends CoreBaseService list) { @@ -832,6 +915,7 @@ public class GeneralQuestionSettingService extends CoreBaseService CourseInfoQuery paras = new CourseInfoQuery(); paras.setCourseInfoType(1); paras.setCourseLabelId(once.getCourseLabelId()); - paras.setCourseInfoStatus(1); + paras.setCourseInfoStatus(2); paras.setCourseInfoName(courseInfoName); paras.setOrgId(coreUser.getOrgId()); paras.setUserId(coreUser.getId()); @@ -579,10 +579,10 @@ public class ResourcesQuestionService extends CoreBaseService chapterCache.put(courseInfoName, collect); } courseInfo = courseInfoCache.get(courseInfoName); - if (Objects.equals(courseInfo.getCourseInfoStatus(),2)){ - errMsg.add(new String[]{"第" + ToolUtils.numberToLetter(map.get(columns[0]) + 1) + "列,第" + (i + 1) + "行课程处于禁止状态,禁止导入"}); - continue; - } + //if (Objects.equals(courseInfo.getCourseInfoStatus(),2)){ + // errMsg.add(new String[]{"第" + ToolUtils.numberToLetter(map.get(columns[0]) + 1) + "列,第" + (i + 1) + "行课程处于禁止状态,禁止导入"}); + // continue; + //} } //查章节 diff --git a/web/src/main/java/com/ibeetl/jlw/web/GeneralQuestionSettingController.java b/web/src/main/java/com/ibeetl/jlw/web/GeneralQuestionSettingController.java index ef052ae2..287834b9 100644 --- a/web/src/main/java/com/ibeetl/jlw/web/GeneralQuestionSettingController.java +++ b/web/src/main/java/com/ibeetl/jlw/web/GeneralQuestionSettingController.java @@ -301,19 +301,14 @@ public class GeneralQuestionSettingController{ @PostMapping(MODEL + "/edit.json") @Function("generalQuestionSetting.edit") - public JsonResult update(@Validated(ValidateConfig.UPDATE.class) @RequestBody GeneralQuestionSettingQuery generalQuestionSettingQuery, BindingResult result) { + public JsonResult update(@Validated(ValidateConfig.UPDATE.class) @RequestBody GeneralQuestionSettingQuery generalQuestionSettingQuery, BindingResult result) { if(result.hasErrors()){ return JsonResult.failMessage(result); }else { Assert.notNull(getUser(), "请登录后再操作"); generalQuestionSettingQuery.setUserId(null); generalQuestionSettingQuery.setOrgId(null); - String msg = generalQuestionSettingService.edit(generalQuestionSettingQuery); - if (StringUtils.isBlank(msg)) { - return JsonResult.success(); - } else { - return JsonResult.failMessage("更新失败,"+msg); - } + return generalQuestionSettingService.edit(generalQuestionSettingQuery); } } diff --git a/web/src/main/resources/sql/jlw/generalQuestionLog.md b/web/src/main/resources/sql/jlw/generalQuestionLog.md index 0a175873..ccfdedc3 100644 --- a/web/src/main/resources/sql/jlw/generalQuestionLog.md +++ b/web/src/main/resources/sql/jlw/generalQuestionLog.md @@ -1300,4 +1300,9 @@ getNotSubmitQuestionLogsCount AND FIND_IN_SET( t.general_question_log_id, ta.question_log_ids ) ) AND t.student_id = #studentId# - AND t.general_question_setting_id = #questionSettingId# \ No newline at end of file + AND t.general_question_setting_id = #questionSettingId# + +existGeneralQuestionSettingId +=== +* 判断这个配置是否已经产生考生记录 + select IF(count(*)>0,1,0) from general_question_log where general_question_setting_id = #generalQuestionSettingId#