diff --git a/ruoyi-ui/src/api/benyi/admissioncourse.js b/ruoyi-ui/src/api/benyi/admissioncourse.js index 79fa113ef..472bd1c1c 100644 --- a/ruoyi-ui/src/api/benyi/admissioncourse.js +++ b/ruoyi-ui/src/api/benyi/admissioncourse.js @@ -9,6 +9,14 @@ export function listAdmissioncourse(query) { }); } +// 查询流程下拉树结构 +export function treeselect() { + return request({ + url: '/benyi/admissioncourse/treeselect', + method: 'get' + }) +} + // 查询入学准备课程详细 export function getAdmissioncourse(id) { return request({ diff --git a/ruoyi-ui/src/views/benyi/admissioncourse_study/index.vue b/ruoyi-ui/src/views/benyi/admissioncourse_study/index.vue new file mode 100644 index 000000000..ab70496c3 --- /dev/null +++ b/ruoyi-ui/src/views/benyi/admissioncourse_study/index.vue @@ -0,0 +1,170 @@ + + + + \ 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 350aeab99..c6c2376e0 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 @@ -73,6 +73,14 @@ public class TreeSelect implements Serializable this.children = byMicrocourse.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList()); } + //下拉树构造器 + public TreeSelect(ByAdmissioncourse byAdmissioncourse) { + + this.id = byAdmissioncourse.getId(); + this.label = byAdmissioncourse.getTitlename(); + this.children = byAdmissioncourse.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList()); + } + //下拉树构造器 public TreeSelect(ByFamilyedu byFamilyedu) { diff --git a/ruoyi/src/main/java/com/ruoyi/project/benyi/controller/ByAdmissioncourseController.java b/ruoyi/src/main/java/com/ruoyi/project/benyi/controller/ByAdmissioncourseController.java index 7c8cc7e0e..566f19caf 100644 --- a/ruoyi/src/main/java/com/ruoyi/project/benyi/controller/ByAdmissioncourseController.java +++ b/ruoyi/src/main/java/com/ruoyi/project/benyi/controller/ByAdmissioncourseController.java @@ -44,6 +44,16 @@ public class ByAdmissioncourseController extends BaseController { return getDataTable(list); } + /** + * 查询入学准备课程列表 + */ + @Log(title = "入学准备课程学习", businessType = BusinessType.QUERY) + @GetMapping("/treeselect") + public AjaxResult treeselect(ByAdmissioncourse byAdmissioncourse) { + List list = byAdmissioncourseService.selectByAdmissioncourseListTree(byAdmissioncourse); + return AjaxResult.success(byAdmissioncourseService.buildByAdmissioncourseTreeSelect(list)); + } + /** * 导出入学准备课程列表 */ diff --git a/ruoyi/src/main/java/com/ruoyi/project/benyi/domain/ByAdmissioncourse.java b/ruoyi/src/main/java/com/ruoyi/project/benyi/domain/ByAdmissioncourse.java index 66b89b239..0a6f3ecaa 100644 --- a/ruoyi/src/main/java/com/ruoyi/project/benyi/domain/ByAdmissioncourse.java +++ b/ruoyi/src/main/java/com/ruoyi/project/benyi/domain/ByAdmissioncourse.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_admissioncourse * @@ -43,6 +46,19 @@ public class ByAdmissioncourse extends BaseEntity { @Excel(name = "序号") private Long sort; + public List getChildren() { + return children; + } + + public void setChildren(List children) { + this.children = children; + } + + /** + * 树状子类 + */ + private List children = new ArrayList(); + public void setId(Long id) { this.id = id; } diff --git a/ruoyi/src/main/java/com/ruoyi/project/benyi/mapper/ByAdmissioncourseMapper.java b/ruoyi/src/main/java/com/ruoyi/project/benyi/mapper/ByAdmissioncourseMapper.java index c2c5b6d9e..833bbd7d8 100644 --- a/ruoyi/src/main/java/com/ruoyi/project/benyi/mapper/ByAdmissioncourseMapper.java +++ b/ruoyi/src/main/java/com/ruoyi/project/benyi/mapper/ByAdmissioncourseMapper.java @@ -27,6 +27,14 @@ public interface ByAdmissioncourseMapper { */ public List selectByAdmissioncourseList(ByAdmissioncourse byAdmissioncourse); + /** + * 查询入学准备课程列表 + * + * @param byAdmissioncourse 入学准备课程 + * @return 入学准备课程程集合 + */ + public List selectByAdmissioncourseListTree(ByAdmissioncourse byAdmissioncourse); + /** * 新增入学准备课程 * diff --git a/ruoyi/src/main/java/com/ruoyi/project/benyi/service/IByAdmissioncourseService.java b/ruoyi/src/main/java/com/ruoyi/project/benyi/service/IByAdmissioncourseService.java index e3fb00f79..ed5c8c840 100644 --- a/ruoyi/src/main/java/com/ruoyi/project/benyi/service/IByAdmissioncourseService.java +++ b/ruoyi/src/main/java/com/ruoyi/project/benyi/service/IByAdmissioncourseService.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.ByAdmissioncourse; +import com.ruoyi.project.benyi.domain.ByMicrocourse; /** * 入学准备课程Service接口 @@ -27,6 +29,30 @@ public interface IByAdmissioncourseService { */ public List selectByAdmissioncourseList(ByAdmissioncourse byAdmissioncourse); + /** + * 查询入学准备课程列表 + * + * @param byAdmissioncourse 入学准备课程 + * @return 入学准备课程程集合 + */ + public List selectByAdmissioncourseListTree(ByAdmissioncourse byAdmissioncourse); + + /** + * 构建前端所需要树结构 + * + * @param byAdmissioncourses 部门列表 + * @return 树结构列表 + */ + public List buildByAdmissioncourseDetailTree(List byAdmissioncourses); + + /** + * 构建前端所需要下拉树结构 + * + * @param byAdmissioncourses 部门列表 + * @return 下拉树结构列表 + */ + public List buildByAdmissioncourseTreeSelect(List byAdmissioncourses); + /** * 新增入学准备课程 * diff --git a/ruoyi/src/main/java/com/ruoyi/project/benyi/service/impl/ByAdmissioncourseServiceImpl.java b/ruoyi/src/main/java/com/ruoyi/project/benyi/service/impl/ByAdmissioncourseServiceImpl.java index 0598673c0..198530ea9 100644 --- a/ruoyi/src/main/java/com/ruoyi/project/benyi/service/impl/ByAdmissioncourseServiceImpl.java +++ b/ruoyi/src/main/java/com/ruoyi/project/benyi/service/impl/ByAdmissioncourseServiceImpl.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.ByMicrocourse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ruoyi.project.benyi.mapper.ByAdmissioncourseMapper; @@ -42,6 +48,100 @@ public class ByAdmissioncourseServiceImpl implements IByAdmissioncourseService { return byAdmissioncourseMapper.selectByAdmissioncourseList(byAdmissioncourse); } + /** + * 查询入学准备课程列表 + * + * @param byAdmissioncourse 入学准备课程 + * @return 入学准备课程程集合 + */ + public List selectByAdmissioncourseListTree(ByAdmissioncourse byAdmissioncourse){ + return byAdmissioncourseMapper.selectByAdmissioncourseListTree(byAdmissioncourse); + } + + /** + * 构建前端所需要树结构 + * + * @param byAdmissioncourses 部门列表 + * @return 树结构列表 + */ + @Override + public List buildByAdmissioncourseDetailTree(List byAdmissioncourses) { + //System.out.println("start---"); + List returnList = new ArrayList(); + List tempList = new ArrayList(); + for (ByAdmissioncourse item : byAdmissioncourses) { + tempList.add(item.getId()); + } + for (Iterator iterator = byAdmissioncourses.iterator(); iterator.hasNext(); ) { + ByAdmissioncourse item = (ByAdmissioncourse) iterator.next(); + //System.out.println("test==="+!tempList.contains(item.getParentId())); + // 如果是顶级节点, 遍历该父节点的所有子节点 + if (!tempList.contains(item.getParentId())) { + recursionFn(byAdmissioncourses, item); + returnList.add(item); + } + } + if (returnList.isEmpty()) { + returnList = byAdmissioncourses; + } + return returnList; + } + + /** + * 构建前端所需要下拉树结构 + * + * @param byAdmissioncourses 部门列表 + * @return 下拉树结构列表 + */ + @Override + public List buildByAdmissioncourseTreeSelect(List byAdmissioncourses) { + List byAdmissioncourseTrees = buildByAdmissioncourseDetailTree(byAdmissioncourses); + return byAdmissioncourseTrees.stream().map(TreeSelect::new).collect(Collectors.toList()); + } + + /** + * 递归列表 + */ + private void recursionFn(List list, ByAdmissioncourse t) { + // 得到子节点列表 + List childList = getChildList(list, t); + t.setChildren(childList); + for (ByAdmissioncourse tChild : childList) { + if (hasChild(list, tChild)) { + // 判断是否有子节点 + Iterator it = childList.iterator(); + while (it.hasNext()) { + ByAdmissioncourse n = (ByAdmissioncourse) it.next(); + recursionFn(list, n); + } + } + } + } + + /** + * 得到子节点列表 + */ + private List getChildList(List list, ByAdmissioncourse t) { + List tlist = new ArrayList(); + Iterator it = list.iterator(); + while (it.hasNext()) { + ByAdmissioncourse n = (ByAdmissioncourse) 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, ByAdmissioncourse t) { + return getChildList(list, t).size() > 0 ? true : false; + } + + /** * 新增入学准备课程 * diff --git a/ruoyi/src/main/resources/mybatis/benyi/ByAdmissioncourseMapper.xml b/ruoyi/src/main/resources/mybatis/benyi/ByAdmissioncourseMapper.xml index e873753d9..37a6652df 100644 --- a/ruoyi/src/main/resources/mybatis/benyi/ByAdmissioncourseMapper.xml +++ b/ruoyi/src/main/resources/mybatis/benyi/ByAdmissioncourseMapper.xml @@ -27,6 +27,14 @@ + +