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 1f2099db..ed230b62 100644 --- a/web/src/main/java/com/ibeetl/jlw/dao/ResourcesQuestionDao.java +++ b/web/src/main/java/com/ibeetl/jlw/dao/ResourcesQuestionDao.java @@ -53,4 +53,11 @@ public interface ResourcesQuestionDao extends BaseMapper{ List getGroupQuestionTypeCountAndSelectInfo(Long courseInfoId, Long questionSettingId); + /** + * 试题管理系统+院校 + * @param query + * @return + */ + PageQuery getTestItemManageSystemOAndUniversities(PageQuery query); + } \ No newline at end of file diff --git a/web/src/main/java/com/ibeetl/jlw/entity/ResourcesQuestion.java b/web/src/main/java/com/ibeetl/jlw/entity/ResourcesQuestion.java index a0aa1048..1f009b51 100644 --- a/web/src/main/java/com/ibeetl/jlw/entity/ResourcesQuestion.java +++ b/web/src/main/java/com/ibeetl/jlw/entity/ResourcesQuestion.java @@ -101,6 +101,14 @@ public class ResourcesQuestion extends BaseEntity{ private AddTypeEnum addType ; + //题库来源 + private String addTypeText; + + /** + * 试题来源 1 教师新增 2 系统新增 + */ + private String sourceType; + /** * 新增时间 */ @@ -308,6 +316,30 @@ public class ResourcesQuestion extends BaseEntity{ this.addType = addType; } + public String getAddTypeText() { + return addTypeText; + } + + public void setAddTypeText(String addTypeText) { + this.addTypeText = addTypeText; + } + + public Date getAddTime() { + return addTime; + } + + public void setAddTime(Date addTime) { + this.addTime = addTime; + } + + public String getSourceType() { + return sourceType; + } + + public void setSourceType(String sourceType) { + this.sourceType = sourceType; + } + /**题干, 图片转换成正则 *@return */ 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 86d45f61..57422a9c 100644 --- a/web/src/main/java/com/ibeetl/jlw/service/ResourcesQuestionService.java +++ b/web/src/main/java/com/ibeetl/jlw/service/ResourcesQuestionService.java @@ -121,6 +121,12 @@ public class ResourcesQuestionService extends CoreBaseService return ret; } + public PageQuery getTestItemManageSystemOAndUniversities(PageQuery query) { + PageQuery ret = resourcesQuestionDao.getTestItemManageSystemOAndUniversities(query); + queryListAfter(ret.getList()); + return ret; + } + public void deleteResourcesQuestion(String ids) { String courseInfoIds = ""; List list = getByIds(ids); diff --git a/web/src/main/java/com/ibeetl/jlw/web/ResourcesQuestionController.java b/web/src/main/java/com/ibeetl/jlw/web/ResourcesQuestionController.java index d16a3c3e..fba020c5 100644 --- a/web/src/main/java/com/ibeetl/jlw/web/ResourcesQuestionController.java +++ b/web/src/main/java/com/ibeetl/jlw/web/ResourcesQuestionController.java @@ -1,6 +1,7 @@ package com.ibeetl.jlw.web; import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.jlw.Interceptor.GetFile; import cn.jlw.Interceptor.RFile; @@ -22,6 +23,7 @@ import com.ibeetl.jlw.enums.MatchTypeEnum; import com.ibeetl.jlw.enums.QuestionBusinessTypeEnum; import com.ibeetl.jlw.service.CourseInfoService; import com.ibeetl.jlw.service.ResourcesQuestionService; +import com.ibeetl.jlw.service.TeacherOpenCourseMergeResourcesQuestionService; import com.ibeetl.jlw.service.UniversitiesCollegesJurisdictionCurriculumResourcesService; import com.ibeetl.jlw.web.query.CourseInfoQuery; import com.ibeetl.jlw.web.query.ResourcesQuestionQuery; @@ -61,20 +63,26 @@ import static com.ibeetl.admin.core.util.StreamUtils.listJoin; */ @Controller -public class ResourcesQuestionController{ +public class ResourcesQuestionController { private final Log log = LogFactory.getLog(this.getClass()); private static final String MODEL = "/jlw/resourcesQuestion"; private static final String API = "/api/resourcesQuestion"; - @Autowired private ResourcesQuestionService resourcesQuestionService; - + @Autowired + private ResourcesQuestionService resourcesQuestionService; + @Autowired FileService fileService; - @Autowired private CourseInfoService courseInfoService; - @Autowired private UniversitiesCollegesJurisdictionCurriculumResourcesService universitiesCollegesJurisdictionCurriculumResourcesService; + @Autowired + private CourseInfoService courseInfoService; + @Autowired + private UniversitiesCollegesJurisdictionCurriculumResourcesService universitiesCollegesJurisdictionCurriculumResourcesService; + + @Autowired + private TeacherOpenCourseMergeResourcesQuestionService teacherOpenCourseMergeResourcesQuestionService; /* 前端接口 */ @@ -86,7 +94,7 @@ public class ResourcesQuestionController{ @Function("resourcesQuestion.query") @ResponseBody public ModelAndView index() { - ModelAndView view = new ModelAndView("/jlw/resourcesQuestion/index.html") ; + ModelAndView view = new ModelAndView("/jlw/resourcesQuestion/index.html"); view.addObject("search", ResourcesQuestionQuery.class.getName()); return view; } @@ -106,18 +114,18 @@ public class ResourcesQuestionController{ @ResponseBody public ModelAndView add(Long resourcesQuestionId) { ModelAndView view = new ModelAndView("/jlw/resourcesQuestion/add.html"); - if(null != resourcesQuestionId){ + if (null != resourcesQuestionId) { ResourcesQuestion resourcesQuestion = resourcesQuestionService.queryById(resourcesQuestionId); view.addObject("resourcesQuestion", resourcesQuestion); CourseInfo courseInfo = courseInfoService.queryById(resourcesQuestion.getCourseInfoId()); - if(courseInfo != null && courseInfo.getCourseInfoParentId() != null){ //父节点不为空时 说明当前属于是子节点 否则是父节点 + if (courseInfo != null && courseInfo.getCourseInfoParentId() != null) { //父节点不为空时 说明当前属于是子节点 否则是父节点 view.addObject("courseInfoId", courseInfo.getCourseInfoParentId()); view.addObject("childNode", courseInfo.getCourseInfoId()); - }else { - view.addObject("courseInfoId", courseInfo != null?courseInfo.getCourseInfoId():null); + } else { + view.addObject("courseInfoId", courseInfo != null ? courseInfo.getCourseInfoId() : null); view.addObject("childNode", null); } - }else { + } else { view.addObject("resourcesQuestion", new ResourcesQuestion()); view.addObject("courseInfoId", null); view.addObject("childNode", null); @@ -138,7 +146,7 @@ public class ResourcesQuestionController{ @GetMapping(MODEL + "/questionBank.do") @Function("resourcesQuestion.query") @ResponseBody - public ModelAndView questionBank(Long courseInfoId,Long resourcesQuestionId,Integer type) { + public ModelAndView questionBank(Long courseInfoId, Long resourcesQuestionId, Integer type) { ModelAndView view = new ModelAndView("/jlw/previewPage/questionBank.html"); view.addObject("courseInfoId", courseInfoId); view.addObject("resourcesQuestionId", resourcesQuestionId); @@ -148,7 +156,7 @@ public class ResourcesQuestionController{ @PostMapping(API + "/list.do") @ResponseBody - public JsonResult listDo(ResourcesQuestionQuery condition, @SCoreUser CoreUser coreUser){ + public JsonResult listDo(ResourcesQuestionQuery condition, @SCoreUser CoreUser coreUser) { PageQuery page = condition.getPageQuery(); condition.setQuestionStatus(1); @@ -177,7 +185,7 @@ public class ResourcesQuestionController{ @PostMapping(MODEL + "/list.json") @Function("resourcesQuestion.query") @ResponseBody - public JsonResult list(ResourcesQuestionQuery condition, @SCoreUser CoreUser coreUser){ + public JsonResult list(ResourcesQuestionQuery condition, @SCoreUser CoreUser coreUser) { PageQuery page = condition.getPageQuery(); if (coreUser.isUniAdmin()) { @@ -194,17 +202,21 @@ public class ResourcesQuestionController{ // 如果为空字符串,那么代表这个学校,还没有授权的课程,所以是不会显示任何东西的。 condition.setCourseInfoIds(StrUtil.blankToDefault(ids, "未授权应用")); } - resourcesQuestionService.queryByCondition(page); + if (coreUser.isAdmin()) { + resourcesQuestionService.getTestItemManageSystemOAndUniversities(page); + } else { + resourcesQuestionService.queryByCondition(page); + } return JsonResult.success(page); } @PostMapping(MODEL + "/add.json") @Function("resourcesQuestion.add") @ResponseBody - public JsonResult add(@Validated(ValidateConfig.ADD.class)ResourcesQuestion resourcesQuestion, BindingResult result, @SCoreUser CoreUser coreUser){ - if(result.hasErrors()){ + public JsonResult add(@Validated(ValidateConfig.ADD.class) ResourcesQuestion resourcesQuestion, BindingResult result, @SCoreUser CoreUser coreUser) { + if (result.hasErrors()) { return JsonResult.failMessage(result); - }else{ + } else { Long courseInfoId = resourcesQuestion.getCourseInfoId(); Integer questionType = resourcesQuestion.getQuestionType(); BigDecimal questionScore = resourcesQuestion.getQuestionScore(); @@ -217,36 +229,35 @@ public class ResourcesQuestionController{ String questionOptionE = resourcesQuestion.getQuestionOptionE(); String questionAnswer = resourcesQuestion.getQuestionAnswer(); - questionAnswer = resourcesQuestionService.answerFormat(questionType,questionAnswer);//格式化 + questionAnswer = resourcesQuestionService.answerFormat(questionType, questionAnswer);//格式化 String m = ""; - if(StringUtils.isNotBlank(questionAnswer)){ - m = resourcesQuestionService.judge(questionType,questionOptionA,questionOptionB,questionOptionC,questionOptionD,questionOptionE,questionAnswer); + if (StringUtils.isNotBlank(questionAnswer)) { + m = resourcesQuestionService.judge(questionType, questionOptionA, questionOptionB, questionOptionC, questionOptionD, questionOptionE, questionAnswer); } - if(null == courseInfoId){ + if (null == courseInfoId) { return JsonResult.failMessage("添加失败,请选择相应的章节"); - }else if(null == questionType){ + } else if (null == questionType) { return JsonResult.failMessage("添加失败,请选择题型"); - }else if(null == questionScore){ + } else if (null == questionScore) { return JsonResult.failMessage("添加失败,请填写分值"); - }else if(StringUtils.isBlank(questionStem)){ + } else if (StringUtils.isBlank(questionStem)) { return JsonResult.failMessage("添加失败,请填写题干"); - }else if(StringUtils.isBlank(questionAnswer)){ + } else if (StringUtils.isBlank(questionAnswer)) { return JsonResult.failMessage("添加失败,请填写答案"); - }else if(StringUtils.isNotBlank(m)){ - return JsonResult.failMessage("添加失败,"+m); - }else { + } else if (StringUtils.isNotBlank(m)) { + return JsonResult.failMessage("添加失败," + m); + } else { ResourcesQuestion rq = new ResourcesQuestion(); rq.setQuestionStem(questionStem); - if(resourcesQuestionService.getValues(rq).size()>0){ + if (resourcesQuestionService.getValues(rq).size() > 0) { return JsonResult.failMessage("添加失败,题干重复"); } if (coreUser.isAdmin()) { resourcesQuestion.setAddType(AddTypeEnum.ADMIN_ADD); - } - else { + } else { resourcesQuestion.setAddType(AddTypeEnum.FACULTY_ADD); } resourcesQuestion.setOrgId(coreUser.getOrgId()); @@ -265,16 +276,25 @@ public class ResourcesQuestionController{ @PostMapping(MODEL + "/putOnShelves.json") @Function("resourcesQuestion.edit") @ResponseBody - public JsonResult putOnShelves(@Validated(ValidateConfig.UPDATE.class) ResourcesQuestion resourcesQuestion, BindingResult result) { - if(result.hasErrors()){ + public JsonResult putOnShelves(@Validated(ValidateConfig.UPDATE.class) ResourcesQuestion resourcesQuestion, BindingResult result) { + if (result.hasErrors()) { return JsonResult.failMessage(result); - }else { - boolean success = resourcesQuestionService.edit(resourcesQuestion); - if (success) { + } else { + if (ObjectUtil.equals(resourcesQuestion.getSourceType(), 1)) { + if (ObjectUtil.isEmpty(resourcesQuestion.getResourcesQuestionId())) { + return JsonResult.failMessage("更新失败"); + } + teacherOpenCourseMergeResourcesQuestionService.batchEditUpDownStatus(resourcesQuestion.getResourcesQuestionId().toString(), resourcesQuestion.getQuestionStatus()); return JsonResult.success(); } else { - return JsonResult.failMessage("更新失败"); + boolean success = resourcesQuestionService.edit(resourcesQuestion); + if (success) { + return JsonResult.success(); + } else { + return JsonResult.failMessage("更新失败"); + } } + } } @@ -282,10 +302,10 @@ public class ResourcesQuestionController{ @PostMapping(MODEL + "/edit.json") @Function("resourcesQuestion.edit") @ResponseBody - public JsonResult update(@Validated(ValidateConfig.UPDATE.class) ResourcesQuestion resourcesQuestion, BindingResult result, @SCoreUser CoreUser coreUser) { - if(result.hasErrors()){ + public JsonResult update(@Validated(ValidateConfig.UPDATE.class) ResourcesQuestion resourcesQuestion, BindingResult result, @SCoreUser CoreUser coreUser) { + if (result.hasErrors()) { return JsonResult.failMessage(result); - }else { + } else { // 验证是否有操作该数据的权限 validateRole(resourcesQuestion, coreUser); @@ -297,51 +317,51 @@ public class ResourcesQuestionController{ String questionOptionA = resourcesQuestionService.formatQuestion(resourcesQuestion.getQuestionOptionA()); resourcesQuestion.setQuestionOptionA(questionOptionA); - String questionOptionB = resourcesQuestionService.formatQuestion(resourcesQuestion.getQuestionOptionB()); + String questionOptionB = resourcesQuestionService.formatQuestion(resourcesQuestion.getQuestionOptionB()); resourcesQuestion.setQuestionOptionB(questionOptionB); - String questionOptionC = resourcesQuestionService.formatQuestion(resourcesQuestion.getQuestionOptionC()); + String questionOptionC = resourcesQuestionService.formatQuestion(resourcesQuestion.getQuestionOptionC()); resourcesQuestion.setQuestionOptionC(questionOptionC); - String questionOptionD = resourcesQuestionService.formatQuestion(resourcesQuestion.getQuestionOptionD()); + String questionOptionD = resourcesQuestionService.formatQuestion(resourcesQuestion.getQuestionOptionD()); resourcesQuestion.setQuestionOptionD(questionOptionD); - String questionOptionE = resourcesQuestionService.formatQuestion(resourcesQuestion.getQuestionOptionE()); + String questionOptionE = resourcesQuestionService.formatQuestion(resourcesQuestion.getQuestionOptionE()); resourcesQuestion.setQuestionOptionE(questionOptionE); String questionAnswer = resourcesQuestion.getQuestionAnswer(); - questionAnswer = resourcesQuestionService.answerFormat(questionType,questionAnswer);//格式化 + questionAnswer = resourcesQuestionService.answerFormat(questionType, questionAnswer);//格式化 String m = ""; - if(StringUtils.isNotBlank(questionAnswer)){ - m = resourcesQuestionService.judge(questionType,questionOptionA,questionOptionB,questionOptionC,questionOptionD,questionOptionE,questionAnswer); + if (StringUtils.isNotBlank(questionAnswer)) { + m = resourcesQuestionService.judge(questionType, questionOptionA, questionOptionB, questionOptionC, questionOptionD, questionOptionE, questionAnswer); } - if(null == courseInfoId){ + if (null == courseInfoId) { return JsonResult.failMessage("添加失败,请选择相应的章节"); - }else if(null == questionType){ + } else if (null == questionType) { return JsonResult.failMessage("添加失败,请选择题型"); - }else if(null == questionScore){ + } else if (null == questionScore) { return JsonResult.failMessage("添加失败,请填写分值"); - }else if(StringUtils.isBlank(questionStem)){ + } else if (StringUtils.isBlank(questionStem)) { return JsonResult.failMessage("添加失败,请填写题干"); - }else if(StringUtils.isBlank(questionAnswer)){ + } else if (StringUtils.isBlank(questionAnswer)) { return JsonResult.failMessage("添加失败,请填写答案"); - }else if(StringUtils.isNotBlank(m)){ - return JsonResult.failMessage("添加失败,"+m); - }else { + } else if (StringUtils.isNotBlank(m)) { + return JsonResult.failMessage("添加失败," + m); + } else { ResourcesQuestion rq = new ResourcesQuestion(); rq.setQuestionStem(questionStem); List resourcesQuestionList = resourcesQuestionService.getValues(rq); - if(resourcesQuestionList.size()>0){ - for(int i=0;i 0) { + for (int i = 0; i < resourcesQuestionList.size(); i++) { + if (resourcesQuestionList.get(i).getResourcesQuestionId().equals(resourcesQuestion.getResourcesQuestionId())) { resourcesQuestionList.remove(i); i--; } } - if(resourcesQuestionList.size()>0){ + if (resourcesQuestionList.size() > 0) { return JsonResult.failMessage("添加失败,题干重复"); } } @@ -362,12 +382,13 @@ public class ResourcesQuestionController{ /** * 验证是否有操作该数据的权限 + * * @param resourcesQuestion * @param coreUser */ private void validateRole(ResourcesQuestion resourcesQuestion, CoreUser coreUser) { // 如果不是超管的话 - if(!coreUser.isAdmin()) { + if (!coreUser.isAdmin()) { Assert.isTrue(null != resourcesQuestion.getOrgId() && coreUser.getOrgId().equals(resourcesQuestion.getOrgId()), "只能修改自己院校的数据!"); } } @@ -376,42 +397,42 @@ public class ResourcesQuestionController{ @GetMapping(MODEL + "/view.json") @Function("resourcesQuestion.query") @ResponseBody - public JsonResultqueryInfo(Long resourcesQuestionId) { - ResourcesQuestion resourcesQuestion = resourcesQuestionService.queryById( resourcesQuestionId); - return JsonResult.success(resourcesQuestion); + public JsonResult queryInfo(Long resourcesQuestionId) { + ResourcesQuestion resourcesQuestion = resourcesQuestionService.queryById(resourcesQuestionId); + return JsonResult.success(resourcesQuestion); } @GetMapping(MODEL + "/getValues.json") @ResponseBody - public JsonResult>getValues(ResourcesQuestionQuery param) { - Listlist = resourcesQuestionService.getValues(param); - return JsonResult.success(list); + public JsonResult> getValues(ResourcesQuestionQuery param) { + List list = resourcesQuestionService.getValues(param); + return JsonResult.success(list); } //批量换章节 @PostMapping(MODEL + "/changAll.json") @ResponseBody - public JsonResult changAll(Long oldCourseInfoId,Long newCourseInfoId) { + public JsonResult changAll(Long oldCourseInfoId, Long newCourseInfoId) { ResourcesQuestion resourcesQuestion = new ResourcesQuestion(); resourcesQuestion.setCourseInfoId(oldCourseInfoId); List resourcesQuestionList = resourcesQuestionService.getValues(resourcesQuestion); List updateResourcesQuestionList = new ArrayList<>(); - if(null != resourcesQuestionList && resourcesQuestionList.size()>0){ - for(int i=0;i 0) { + for (int i = 0; i < resourcesQuestionList.size(); i++) { ResourcesQuestion newResourcesQuestion = new ResourcesQuestion(); newResourcesQuestion.setResourcesQuestionId(resourcesQuestionList.get(i).getResourcesQuestionId()); newResourcesQuestion.setCourseInfoId(newCourseInfoId); updateResourcesQuestionList.add(newResourcesQuestion); } } - if(updateResourcesQuestionList.size()>0){ - resourcesQuestionService.changAll(updateResourcesQuestionList,oldCourseInfoId,newCourseInfoId); + if (updateResourcesQuestionList.size() > 0) { + resourcesQuestionService.changAll(updateResourcesQuestionList, oldCourseInfoId, newCourseInfoId); //移除缓存 courseInfoService.flushCache(oldCourseInfoId); courseInfoService.flushCache(newCourseInfoId); } - return JsonResult.success(); + return JsonResult.success(); } @@ -419,8 +440,8 @@ public class ResourcesQuestionController{ @Function("resourcesQuestion.delete") @ResponseBody public JsonResult delete(String ids, @SCoreUser CoreUser coreUser) { - Listlist = resourcesQuestionService.getByIds(ids); - for(int i=0;null != list && i list = resourcesQuestionService.getByIds(ids); + for (int i = 0; null != list && i < list.size(); i++) { // 验证是否有操作该数据的权限 validateRole(list.get(i), coreUser); //移除缓存 @@ -438,7 +459,7 @@ public class ResourcesQuestionController{ XSSFWorkbook workbook = null; InputStream is = null; try { - is = new FileInputStream(GetFile.p + File.separator +"filesystem"+ File.separator +"template"+ File.separator+ "题库导入模板.xlsx"); + is = new FileInputStream(GetFile.p + File.separator + "filesystem" + File.separator + "template" + File.separator + "题库导入模板.xlsx"); workbook = new XSSFWorkbook(is); @@ -551,7 +572,7 @@ public class ResourcesQuestionController{ //workbook将Excel写入到response的输出流中,供页面下载 workbook.write(response.getOutputStream()); - }catch (Exception e){ + } catch (Exception e) { e.printStackTrace(); } finally { try { @@ -569,6 +590,7 @@ public class ResourcesQuestionController{ /** * 设置有效性 + * * @param offset 主影响单元格所在列,即此单元格由哪个单元格影响联动 * @param sheet * @param rowNum 行数 @@ -586,7 +608,7 @@ public class ResourcesQuestionController{ // sheet.addValidationData(cacse); - XSSFDataValidationHelper dvHelper = new XSSFDataValidationHelper((XSSFSheet)sheet); + XSSFDataValidationHelper dvHelper = new XSSFDataValidationHelper((XSSFSheet) sheet); XSSFDataValidationConstraint dvConstraint = (XSSFDataValidationConstraint) dvHelper.createFormulaListConstraint("INDIRECT($" + offset + "$" + rowNum + ")"); int firstRow = rowNum - 1; int lastRow = rowNum - 1; @@ -599,12 +621,12 @@ public class ResourcesQuestionController{ } /** - * 计算formula - * @param offset 偏移量,如果给0,表示从A列开始,1,就是从B列 - * @param rowId 第几行 + * 计算formula + * + * @param offset 偏移量,如果给0,表示从A列开始,1,就是从B列 + * @param rowId 第几行 * @param colCount 一共多少列 * @return 如果给入参 1,1,10. 表示从B1-K1。最终返回 $B$1:$K$1 - * */ public static String getRange(int offset, int rowId, int colCount) { char start = (char) ('A' + offset); @@ -637,57 +659,57 @@ public class ResourcesQuestionController{ //导入模板信息 @PostMapping(MODEL + "/importTemplate.json") @ResponseBody - public JsonResult importTemplate(@RFile FileEntity fileEntity,@SCoreUser CoreUser coreUser) { - return resourcesQuestionService.importTemplate(fileEntity,coreUser); + public JsonResult importTemplate(@RFile FileEntity fileEntity, @SCoreUser CoreUser coreUser) { + return resourcesQuestionService.importTemplate(fileEntity, coreUser); } //查询客观题树结构 @GetMapping(MODEL + "/getTreeByCourseLabelTypes.json") @ResponseBody - public JsonResult>getTreeByCourseLabelTypes(String courseLabelTypes,Long competitionId,String ct1QuestionIds,Long examId,String et1QuestionIds) { - List courseInfoList= resourcesQuestionService.getTreeByCourseLabelTypes(courseLabelTypes); + public JsonResult> getTreeByCourseLabelTypes(String courseLabelTypes, Long competitionId, String ct1QuestionIds, Long examId, String et1QuestionIds) { + List courseInfoList = resourcesQuestionService.getTreeByCourseLabelTypes(courseLabelTypes); - MapcountMap = new HashMap<>(); + Map countMap = new HashMap<>(); String courseInfoIds = ""; String childrenCourseInfoIds = ""; - if(null != competitionId || null != examId){ - List courseInfos = resourcesQuestionService.getTreeByParam(courseLabelTypes,competitionId,ct1QuestionIds,examId,et1QuestionIds); - for(int i=0;null != courseInfos && i courseInfos = resourcesQuestionService.getTreeByParam(courseLabelTypes, competitionId, ct1QuestionIds, examId, et1QuestionIds); + for (int i = 0; null != courseInfos && i < courseInfos.size(); i++) { + courseInfoIds += courseInfos.get(i).getCourseInfoId() + ","; List childrenCourseInfos = courseInfos.get(i).takeChildren(); - for(int j=0;null != childrenCourseInfos && j childrenList= courseInfoList.get(i).takeChildren(); - for(int j=0;j childrenList = courseInfoList.get(i).takeChildren(); + for (int j = 0; j < childrenList.size(); j++) { Integer count = childrenList.get(j).takeChildren().size(); Integer usedCount = countMap.get(childrenList.get(j).getCourseInfoId()); totalCount += count; - childrenList.get(j).set("totalCount",count); - if(null != usedCount){ + childrenList.get(j).set("totalCount", count); + if (null != usedCount) { usedTotalCount += usedCount; - childrenList.get(j).set("usedCount",usedCount); - }else { - childrenList.get(j).set("usedCount",0); + childrenList.get(j).set("usedCount", usedCount); + } else { + childrenList.get(j).set("usedCount", 0); } } - courseInfoList.get(i).set("totalCount",totalCount); - courseInfoList.get(i).set("usedCount",usedTotalCount); + courseInfoList.get(i).set("totalCount", totalCount); + courseInfoList.get(i).set("usedCount", usedTotalCount); } - Mapmap = new HashMap<>(); - map.put("courseInfoIds",courseInfoIds); - map.put("childrenCourseInfoIds",childrenCourseInfoIds); - map.put("data",courseInfoList); + Map map = new HashMap<>(); + map.put("courseInfoIds", courseInfoIds); + map.put("childrenCourseInfoIds", childrenCourseInfoIds); + map.put("data", courseInfoList); return JsonResult.successMap(map); @@ -695,7 +717,8 @@ public class ResourcesQuestionController{ /** * 查询题目类型下的题目数量 - * @param courseInfoQuery 课程信息 + * + * @param courseInfoQuery 课程信息 * @return */ @PostMapping(MODEL + "/questionTypeGroupInfo.json") @@ -709,8 +732,8 @@ public class ResourcesQuestionController{ * 功能描述:
* word方式导入题目 * - * @param fileEntityList 文件列表 (前端传递name:file) - * @param coreUser 传入的用户,使用机构ID和用户ID + * @param fileEntityList 文件列表 (前端传递name:file) + * @param coreUser 传入的用户,使用机构ID和用户ID * @return {@link JsonResult} * @Author: lx * @Date: 2023/1/8 22:49 @@ -725,10 +748,10 @@ public class ResourcesQuestionController{ * 功能描述:
* word方式导入题目 * - * @param fileEntityList 文件列表 (前端传递name:file) - * @param businessType 来源 - * @param matchType 匹配类型 (非必传) - * @param coreUser 传入的用户,使用机构ID和用户ID + * @param fileEntityList 文件列表 (前端传递name:file) + * @param businessType 来源 + * @param matchType 匹配类型 (非必传) + * @param coreUser 传入的用户,使用机构ID和用户ID * @return {@link JsonResult} * @Author: lx * @Date: 2023/1/8 22:49 @@ -742,7 +765,8 @@ public class ResourcesQuestionController{ /** * 教师端-题目配置页-题目设置-获取题目类型 - * @param courseInfoQuery 题目信息 + * + * @param courseInfoQuery 题目信息 * @param coreUser * @return */ @@ -755,9 +779,10 @@ public class ResourcesQuestionController{ /** * 教师端-题目配置页-题目设置-获取题目类型 * 此接口只获取理论课程类的题目类型和数量 - * @param courseInfoQuery 课程信息查询 - * @param courseLabelTypePlural 课程分类标签 考证课程类 等等 - * @param seeAdminAndSelf 除了超管,其他身份需要传true + * + * @param courseInfoQuery 课程信息查询 + * @param courseLabelTypePlural 课程分类标签 考证课程类 等等 + * @param seeAdminAndSelf 除了超管,其他身份需要传true * @param coreUser * @return */ diff --git a/web/src/main/java/com/ibeetl/jlw/web/query/ResourcesQuestionQuery.java b/web/src/main/java/com/ibeetl/jlw/web/query/ResourcesQuestionQuery.java index 47aa2001..bbc9bffc 100644 --- a/web/src/main/java/com/ibeetl/jlw/web/query/ResourcesQuestionQuery.java +++ b/web/src/main/java/com/ibeetl/jlw/web/query/ResourcesQuestionQuery.java @@ -71,6 +71,10 @@ public class ResourcesQuestionQuery extends PageParam { private Long courseInfoId_0; private Long courseInfoId_1; + + //题库来源 + private String addTypeText; + /** * 新增时间 */ @@ -313,4 +317,12 @@ public class ResourcesQuestionQuery extends PageParam { public void setEndTime(Date endTime) { this.endTime = endTime; } + + public String getAddTypeText() { + return addTypeText; + } + + public void setAddTypeText(String addTypeText) { + this.addTypeText = addTypeText; + } } diff --git a/web/src/main/resources/sql/jlw/resourcesQuestion.md b/web/src/main/resources/sql/jlw/resourcesQuestion.md index f291443a..6e09dd6f 100644 --- a/web/src/main/resources/sql/jlw/resourcesQuestion.md +++ b/web/src/main/resources/sql/jlw/resourcesQuestion.md @@ -541,4 +541,98 @@ getGroupQuestionTypeCountAndSelectInfo 1,3,4 ORDER BY t.question_type ASC - ) z \ No newline at end of file + ) z + + +getTestItemManageSystemOAndUniversities +=== +* 试题管理系统+院校 + SELECT + @pageTag(){ + tt.* + @} + FROM + ( + ( + SELECT + a.add_time, + '超级管理员' AS add_type_text, + a.course_info_id, + aa.course_info_name AS course_info_name, + ab.course_info_id AS course_info_parent_id, + ab.course_info_name AS course_info_parent_name, + a.org_id, + ac.`NAME` AS org_id_text, + a.question_analysis, + a.question_answer, + a.question_option_a, + a.question_option_b, + a.question_option_c, + a.question_option_d, + a.question_option_e, + a.question_score, + a.question_status, + a.question_stem, + a.question_type, + a.resources_question_id, + a.user_id, + '2' AS source_type + FROM + resources_question a + LEFT JOIN course_info aa ON aa.course_info_id = a.course_info_id + LEFT JOIN course_info ab ON ab.course_info_id = aa.course_info_parent_id + LEFT JOIN core_org ac ON ac.ID = a.org_id + ) + +UNION ALL + +( +SELECT +b.add_time, +bc.`NAME` AS add_type_text, +b.teacher_open_course_merge_course_info_id AS course_info_id, +ba.course_info_name AS course_info_name, +bb.teacher_open_course_id AS course_info_parent_id, +bb.course_info_name AS course_info_parent_name, +b.org_id, +bc.`NAME` AS org_id_text, +b.question_analysis, +b.question_answer, +b.question_option_a, +b.question_option_b, +b.question_option_c, +b.question_option_d, +b.question_option_e, +b.question_score, +b.question_status, +b.question_stem, +b.question_type, +b.teacher_open_course_merge_resources_question_id AS resources_question_id, +b.user_id, +'1' AS source_type +FROM +teacher_open_course_merge_resources_question b +LEFT JOIN teacher_open_course_merge_course_info ba ON ba.teacher_open_course_merge_course_info_id = b.teacher_open_course_merge_course_info_id +LEFT JOIN teacher_open_course_merge_course_info bb ON bb.teacher_open_course_merge_course_info_id = ba.course_info_parent_id +LEFT JOIN core_org bc ON bc.ID = b.org_id +WHERE +b.question_status != 0 +) +) tt +WHERE +1 = 1 +@ // 课程ID +@if(!isEmpty(courseInfoId_0)){ +AND tt.course_info_parent_id = #courseInfoId_0# +@} +@ // 开课题目配置ID +@if(!isEmpty(courseInfoId_1)){ +AND tt.course_info_id = #courseInfoId_1# +@} +@if(!isEmpty(addTypeText)){ +and tt.add_type_text like #'%'+addTypeText+'%'# +@} +@if(!isEmpty(questionStem)){ +and tt.question_stem like #'%'+questionStem+'%'# +@} +order by tt.add_time desc \ No newline at end of file