diff --git a/ruoyi-ui/src/api/benyi/microcourse.js b/ruoyi-ui/src/api/benyi/microcourse.js index 44421114d..84816477f 100644 --- a/ruoyi-ui/src/api/benyi/microcourse.js +++ b/ruoyi-ui/src/api/benyi/microcourse.js @@ -9,6 +9,14 @@ export function listMicrocourse(query) { }) } +// 查询流程下拉树结构 +export function treeselect() { + return request({ + url: '/benyi/microcourse/treeselect', + method: 'get' + }) +} + // 查询微型课程详细 export function getMicrocourse(id) { return request({ diff --git a/ruoyi-ui/src/views/benyi/microcoursestudy/index.vue b/ruoyi-ui/src/views/benyi/microcoursestudy/index.vue new file mode 100644 index 000000000..66c3101be --- /dev/null +++ b/ruoyi-ui/src/views/benyi/microcoursestudy/index.vue @@ -0,0 +1,189 @@ + + + + \ No newline at end of file diff --git a/ruoyi/src/main/java/com/ruoyi/framework/web/domain/TreeSelect.java b/ruoyi/src/main/java/com/ruoyi/framework/web/domain/TreeSelect.java index 3061da598..5bc313a5f 100644 --- a/ruoyi/src/main/java/com/ruoyi/framework/web/domain/TreeSelect.java +++ b/ruoyi/src/main/java/com/ruoyi/framework/web/domain/TreeSelect.java @@ -4,10 +4,7 @@ import java.io.Serializable; import java.util.List; import java.util.stream.Collectors; import com.fasterxml.jackson.annotation.JsonInclude; -import com.ruoyi.project.benyi.domain.ByAssessmentcontent; -import com.ruoyi.project.benyi.domain.ByDayFlowDetail; -import com.ruoyi.project.benyi.domain.ByMath; -import com.ruoyi.project.benyi.domain.ByTheme; +import com.ruoyi.project.benyi.domain.*; import com.ruoyi.project.system.domain.SysDept; import com.ruoyi.project.system.domain.SysMenu; @@ -68,6 +65,14 @@ public class TreeSelect implements Serializable this.children = bytheme.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList()); } + //下拉树构造器 + public TreeSelect(ByMicrocourse byMicrocourse) { + + this.id = byMicrocourse.getId(); + this.label = byMicrocourse.getTitle(); + this.children = byMicrocourse.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList()); + } + //下拉树构造器 public TreeSelect(ByMath bymath) { diff --git a/ruoyi/src/main/java/com/ruoyi/project/benyi/controller/ByMicrocourseController.java b/ruoyi/src/main/java/com/ruoyi/project/benyi/controller/ByMicrocourseController.java index 9a1de0c04..81db4be5f 100644 --- a/ruoyi/src/main/java/com/ruoyi/project/benyi/controller/ByMicrocourseController.java +++ b/ruoyi/src/main/java/com/ruoyi/project/benyi/controller/ByMicrocourseController.java @@ -44,6 +44,16 @@ public class ByMicrocourseController extends BaseController { return getDataTable(list); } + /** + * 查询微型课程列表 + */ + @Log(title = "微型课程学习", businessType = BusinessType.QUERY) + @GetMapping("/treeselect") + public AjaxResult treeselect(ByMicrocourse byMicrocourse) { + List list = byMicrocourseService.selectByMicrocourseListTree(byMicrocourse); + return AjaxResult.success(byMicrocourseService.buildMicrocourseTreeSelect(list)); + } + /** * 导出微型课程列表 */ diff --git a/ruoyi/src/main/java/com/ruoyi/project/benyi/domain/ByMicrocourse.java b/ruoyi/src/main/java/com/ruoyi/project/benyi/domain/ByMicrocourse.java index 6a915c52a..6a86ea8c8 100644 --- a/ruoyi/src/main/java/com/ruoyi/project/benyi/domain/ByMicrocourse.java +++ b/ruoyi/src/main/java/com/ruoyi/project/benyi/domain/ByMicrocourse.java @@ -5,6 +5,9 @@ import org.apache.commons.lang3.builder.ToStringStyle; import com.ruoyi.framework.aspectj.lang.annotation.Excel; import com.ruoyi.framework.web.domain.BaseEntity; +import java.util.ArrayList; +import java.util.List; + /** * 微型课程对象 by_microcourse * @@ -55,6 +58,16 @@ public class ByMicrocourse extends BaseEntity { @Excel(name = "序号") private Long sort; + /** + * 树状父类ID + */ + private Long parentId; + + /** + * 树状子类 + */ + private List children = new ArrayList(); + public void setId(Long id) { this.id = id; } @@ -119,6 +132,22 @@ public class ByMicrocourse extends BaseEntity { return sort; } + public Long getParentId() { + return parentId; + } + + public void setParentId(Long parentId) { + this.parentId = parentId; + } + + public List getChildren() { + return children; + } + + public void setChildren(List children) { + this.children = children; + } + @Override public String toString() { return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) @@ -131,6 +160,7 @@ public class ByMicrocourse extends BaseEntity { .append("upanddown", getUpanddown()) .append("sort", getSort()) .append("createTime", getCreateTime()) + .append("parentid", getParentId()) .toString(); } } diff --git a/ruoyi/src/main/java/com/ruoyi/project/benyi/mapper/ByMicrocourseMapper.java b/ruoyi/src/main/java/com/ruoyi/project/benyi/mapper/ByMicrocourseMapper.java index b13acc160..f04f10bb6 100644 --- a/ruoyi/src/main/java/com/ruoyi/project/benyi/mapper/ByMicrocourseMapper.java +++ b/ruoyi/src/main/java/com/ruoyi/project/benyi/mapper/ByMicrocourseMapper.java @@ -27,6 +27,14 @@ public interface ByMicrocourseMapper { */ public List selectByMicrocourseList(ByMicrocourse byMicrocourse); + /** + * 查询微型课程列表 + * + * @param byMicrocourse 微型课程 + * @return 微型课程集合 + */ + public List selectByMicrocourseListTree(ByMicrocourse byMicrocourse); + /** * 新增微型课程 * diff --git a/ruoyi/src/main/java/com/ruoyi/project/benyi/service/IByMicrocourseService.java b/ruoyi/src/main/java/com/ruoyi/project/benyi/service/IByMicrocourseService.java index 445eecbfe..db82b932e 100644 --- a/ruoyi/src/main/java/com/ruoyi/project/benyi/service/IByMicrocourseService.java +++ b/ruoyi/src/main/java/com/ruoyi/project/benyi/service/IByMicrocourseService.java @@ -2,7 +2,9 @@ package com.ruoyi.project.benyi.service; import java.util.List; +import com.ruoyi.framework.web.domain.TreeSelect; import com.ruoyi.project.benyi.domain.ByMicrocourse; +import com.ruoyi.project.benyi.domain.ByTheme; /** * 微型课程Service接口 @@ -27,6 +29,30 @@ public interface IByMicrocourseService { */ public List selectByMicrocourseList(ByMicrocourse byMicrocourse); + /** + * 查询微型课程列表 + * + * @param byMicrocourse 微型课程 + * @return 微型课程集合 + */ + public List selectByMicrocourseListTree(ByMicrocourse byMicrocourse); + + /** + * 构建前端所需要树结构 + * + * @param byMicrocourses 部门列表 + * @return 树结构列表 + */ + public List buildMicrocourseDetailTree(List byMicrocourses); + + /** + * 构建前端所需要下拉树结构 + * + * @param byMicrocourses 部门列表 + * @return 下拉树结构列表 + */ + public List buildMicrocourseTreeSelect(List byMicrocourses); + /** * 新增微型课程 * diff --git a/ruoyi/src/main/java/com/ruoyi/project/benyi/service/impl/ByMicrocourseServiceImpl.java b/ruoyi/src/main/java/com/ruoyi/project/benyi/service/impl/ByMicrocourseServiceImpl.java index 331dcb55d..096f6f4fe 100644 --- a/ruoyi/src/main/java/com/ruoyi/project/benyi/service/impl/ByMicrocourseServiceImpl.java +++ b/ruoyi/src/main/java/com/ruoyi/project/benyi/service/impl/ByMicrocourseServiceImpl.java @@ -1,8 +1,14 @@ package com.ruoyi.project.benyi.service.impl; +import java.util.ArrayList; +import java.util.Iterator; import java.util.List; +import java.util.stream.Collectors; import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.framework.web.domain.TreeSelect; +import com.ruoyi.project.benyi.domain.ByTheme; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ruoyi.project.benyi.mapper.ByMicrocourseMapper; @@ -42,6 +48,100 @@ public class ByMicrocourseServiceImpl implements IByMicrocourseService { return byMicrocourseMapper.selectByMicrocourseList(byMicrocourse); } + /** + * 查询微型课程列表 + * + * @param byMicrocourse 微型课程 + * @return 微型课程集合 + */ + @Override + public List selectByMicrocourseListTree(ByMicrocourse byMicrocourse){ + return byMicrocourseMapper.selectByMicrocourseListTree(byMicrocourse); + } + + /** + * 构建前端所需要树结构 + * + * @param byMicrocourses 部门列表 + * @return 树结构列表 + */ + @Override + public List buildMicrocourseDetailTree(List byMicrocourses) { + //System.out.println("start---"); + List returnList = new ArrayList(); + List tempList = new ArrayList(); + for (ByMicrocourse item : byMicrocourses) { + tempList.add(item.getId()); + } + for (Iterator iterator = byMicrocourses.iterator(); iterator.hasNext(); ) { + ByMicrocourse item = (ByMicrocourse) iterator.next(); + //System.out.println("test==="+!tempList.contains(item.getParentId())); + // 如果是顶级节点, 遍历该父节点的所有子节点 + if (!tempList.contains(item.getParentId())) { + recursionFn(byMicrocourses, item); + returnList.add(item); + } + } + if (returnList.isEmpty()) { + returnList = byMicrocourses; + } + return returnList; + } + + /** + * 构建前端所需要下拉树结构 + * + * @param byMicrocourses 部门列表 + * @return 下拉树结构列表 + */ + @Override + public List buildMicrocourseTreeSelect(List byMicrocourses) { + List byMicrocourseTrees = buildMicrocourseDetailTree(byMicrocourses); + return byMicrocourseTrees.stream().map(TreeSelect::new).collect(Collectors.toList()); + } + + /** + * 递归列表 + */ + private void recursionFn(List list, ByMicrocourse t) { + // 得到子节点列表 + List childList = getChildList(list, t); + t.setChildren(childList); + for (ByMicrocourse tChild : childList) { + if (hasChild(list, tChild)) { + // 判断是否有子节点 + Iterator it = childList.iterator(); + while (it.hasNext()) { + ByMicrocourse n = (ByMicrocourse) it.next(); + recursionFn(list, n); + } + } + } + } + + /** + * 得到子节点列表 + */ + private List getChildList(List list, ByMicrocourse t) { + List tlist = new ArrayList(); + Iterator it = list.iterator(); + while (it.hasNext()) { + ByMicrocourse n = (ByMicrocourse) it.next(); + if (StringUtils.isNotNull(n.getParentId()) && n.getParentId().longValue() == t.getId().longValue()) { + //System.out.println("parentid="+n.getParentId().longValue()+"---"+t.getId().longValue()); + tlist.add(n); + } + } + return tlist; + } + + /** + * 判断是否有子节点 + */ + private boolean hasChild(List list, ByMicrocourse t) { + return getChildList(list, t).size() > 0 ? true : false; + } + /** * 新增微型课程 * diff --git a/ruoyi/src/main/resources/mybatis/benyi/ByMicrocourseMapper.xml b/ruoyi/src/main/resources/mybatis/benyi/ByMicrocourseMapper.xml index 98f264865..3c9603ba7 100644 --- a/ruoyi/src/main/resources/mybatis/benyi/ByMicrocourseMapper.xml +++ b/ruoyi/src/main/resources/mybatis/benyi/ByMicrocourseMapper.xml @@ -14,12 +14,27 @@ + select id, title, author, contents, type, scpoe, upanddown, sort, create_time from by_microcourse + + select dict_value+9999 id, 0 parent_id,dict_label title,dict_sort sort from sys_dict_data where dict_type='sys_yebjlx' and dict_label !='托班(2-3岁)' + union all + select id, scpoe+9999, title, sort from by_microcourse + + + +