diff --git a/ruoyi-ui/src/api/benyi/familyedu.js b/ruoyi-ui/src/api/benyi/familyedu.js index 8e0c8a7cc..3fc23f947 100644 --- a/ruoyi-ui/src/api/benyi/familyedu.js +++ b/ruoyi-ui/src/api/benyi/familyedu.js @@ -9,6 +9,14 @@ export function listFamilyedu(query) { }); } +// 查询流程下拉树结构 +export function treeselect() { + return request({ + url: '/benyi/familyedu/treeselect', + method: 'get' + }) +} + // 查询家庭教育详细 export function getFamilyedu(id) { return request({ diff --git a/ruoyi-ui/src/views/benyi/familyedu_study/index.vue b/ruoyi-ui/src/views/benyi/familyedu_study/index.vue new file mode 100644 index 000000000..f47c7d24e --- /dev/null +++ b/ruoyi-ui/src/views/benyi/familyedu_study/index.vue @@ -0,0 +1,184 @@ + + + + \ 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 5bc313a5f..350aeab99 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(ByFamilyedu byFamilyedu) { + + this.id = byFamilyedu.getId(); + this.label = byFamilyedu.getTitle(); + this.children = byFamilyedu.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList()); + } + //下拉树构造器 public TreeSelect(ByMath bymath) { diff --git a/ruoyi/src/main/java/com/ruoyi/project/benyi/controller/ByFamilyeduController.java b/ruoyi/src/main/java/com/ruoyi/project/benyi/controller/ByFamilyeduController.java index 004b475bb..90c584e1e 100644 --- a/ruoyi/src/main/java/com/ruoyi/project/benyi/controller/ByFamilyeduController.java +++ b/ruoyi/src/main/java/com/ruoyi/project/benyi/controller/ByFamilyeduController.java @@ -2,6 +2,7 @@ package com.ruoyi.project.benyi.controller; import java.util.List; +import com.ruoyi.project.benyi.domain.ByMicrocourse; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; @@ -44,6 +45,16 @@ public class ByFamilyeduController extends BaseController { return getDataTable(list); } + /** + * 查询微型课程列表 + */ + @Log(title = "家庭教育", businessType = BusinessType.QUERY) + @GetMapping("/treeselect") + public AjaxResult treeselect(ByFamilyedu byFamilyedu) { + List list = byFamilyeduService.selectByFamilyeduListTree(byFamilyedu); + return AjaxResult.success(byFamilyeduService.buildFamilyeduTreeSelect(list)); + } + /** * 导出家庭教育列表 */ diff --git a/ruoyi/src/main/java/com/ruoyi/project/benyi/domain/ByFamilyedu.java b/ruoyi/src/main/java/com/ruoyi/project/benyi/domain/ByFamilyedu.java index 8bf100b96..05bfa4237 100644 --- a/ruoyi/src/main/java/com/ruoyi/project/benyi/domain/ByFamilyedu.java +++ b/ruoyi/src/main/java/com/ruoyi/project/benyi/domain/ByFamilyedu.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_familyedu * @@ -43,6 +46,11 @@ public class ByFamilyedu extends BaseEntity { @Excel(name = "序号") private Long sort; + /** + * 树状子类 + */ + private List children = new ArrayList(); + public void setId(Long id) { this.id = id; } @@ -83,6 +91,14 @@ public class ByFamilyedu extends BaseEntity { return sort; } + 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) diff --git a/ruoyi/src/main/java/com/ruoyi/project/benyi/mapper/ByFamilyeduMapper.java b/ruoyi/src/main/java/com/ruoyi/project/benyi/mapper/ByFamilyeduMapper.java index 58a906c94..a2e1add42 100644 --- a/ruoyi/src/main/java/com/ruoyi/project/benyi/mapper/ByFamilyeduMapper.java +++ b/ruoyi/src/main/java/com/ruoyi/project/benyi/mapper/ByFamilyeduMapper.java @@ -3,6 +3,7 @@ package com.ruoyi.project.benyi.mapper; import java.util.List; import com.ruoyi.project.benyi.domain.ByFamilyedu; +import com.ruoyi.project.benyi.domain.ByMicrocourse; /** * 家庭教育Mapper接口 @@ -27,6 +28,14 @@ public interface ByFamilyeduMapper { */ public List selectByFamilyeduList(ByFamilyedu byFamilyedu); + /** + * 查询家庭教育列表 + * + * @param byFamilyedu 家庭教育 + * @return 家庭教育集合 + */ + public List selectByFamilyeduListTree(ByFamilyedu byFamilyedu); + /** * 新增家庭教育 * diff --git a/ruoyi/src/main/java/com/ruoyi/project/benyi/service/IByFamilyeduService.java b/ruoyi/src/main/java/com/ruoyi/project/benyi/service/IByFamilyeduService.java index f37b95d6f..34c0fef05 100644 --- a/ruoyi/src/main/java/com/ruoyi/project/benyi/service/IByFamilyeduService.java +++ b/ruoyi/src/main/java/com/ruoyi/project/benyi/service/IByFamilyeduService.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.ByFamilyedu; +import com.ruoyi.project.benyi.domain.ByMicrocourse; /** * 家庭教育Service接口 @@ -27,6 +29,31 @@ public interface IByFamilyeduService { */ public List selectByFamilyeduList(ByFamilyedu byFamilyedu); + /** + * 查询家庭教育列表 + * + * @param byFamilyedu 家庭教育 + * @return 家庭教育集合 + */ + public List selectByFamilyeduListTree(ByFamilyedu byFamilyedu); + + /** + * 构建前端所需要树结构 + * + * @param byFamilyedus 部门列表 + * @return 树结构列表 + */ + public List buildFamilyeduDetailTree(List byFamilyedus); + + /** + * 构建前端所需要下拉树结构 + * + * @param byFamilyedus 部门列表 + * @return 下拉树结构列表 + */ + public List buildFamilyeduTreeSelect(List byFamilyedus); + + /** * 新增家庭教育 * diff --git a/ruoyi/src/main/java/com/ruoyi/project/benyi/service/impl/ByFamilyeduServiceImpl.java b/ruoyi/src/main/java/com/ruoyi/project/benyi/service/impl/ByFamilyeduServiceImpl.java index 1deed19fe..32b695a86 100644 --- a/ruoyi/src/main/java/com/ruoyi/project/benyi/service/impl/ByFamilyeduServiceImpl.java +++ b/ruoyi/src/main/java/com/ruoyi/project/benyi/service/impl/ByFamilyeduServiceImpl.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.ByFamilyeduMapper; @@ -42,6 +48,101 @@ public class ByFamilyeduServiceImpl implements IByFamilyeduService { return byFamilyeduMapper.selectByFamilyeduList(byFamilyedu); } + /** + * 查询家庭教育列表 + * + * @param byFamilyedu 家庭教育 + * @return 家庭教育集合 + */ + @Override + public List selectByFamilyeduListTree(ByFamilyedu byFamilyedu){ + return byFamilyeduMapper.selectByFamilyeduList(byFamilyedu); + } + + /** + * 构建前端所需要树结构 + * + * @param byFamilyedus 家庭教育列表 + * @return 树结构列表 + */ + @Override + public List buildFamilyeduDetailTree(List byFamilyedus) { + //System.out.println("start---"); + List returnList = new ArrayList(); + List tempList = new ArrayList(); + for (ByFamilyedu item : byFamilyedus) { + tempList.add(item.getId()); + } + for (Iterator iterator = byFamilyedus.iterator(); iterator.hasNext(); ) { + ByFamilyedu item = (ByFamilyedu) iterator.next(); + //System.out.println("test==="+!tempList.contains(item.getParentId())); + // 如果是顶级节点, 遍历该父节点的所有子节点 + if (!tempList.contains(item.getParentid())) { + recursionFn(byFamilyedus, item); + returnList.add(item); + } + } + if (returnList.isEmpty()) { + returnList = byFamilyedus; + } + return returnList; + } + + /** + * 构建前端所需要下拉树结构 + * + * @param byFamilyedus 部门列表 + * @return 下拉树结构列表 + */ + @Override + public List buildFamilyeduTreeSelect(List byFamilyedus) { + List byFamilyeduTrees = buildFamilyeduDetailTree(byFamilyedus); + return byFamilyeduTrees.stream().map(TreeSelect::new).collect(Collectors.toList()); + } + + /** + * 递归列表 + */ + private void recursionFn(List list, ByFamilyedu t) { + // 得到子节点列表 + List childList = getChildList(list, t); + t.setChildren(childList); + for (ByFamilyedu tChild : childList) { + if (hasChild(list, tChild)) { + // 判断是否有子节点 + Iterator it = childList.iterator(); + while (it.hasNext()) { + ByFamilyedu n = (ByFamilyedu) it.next(); + recursionFn(list, n); + } + } + } + } + + /** + * 得到子节点列表 + */ + private List getChildList(List list, ByFamilyedu t) { + List tlist = new ArrayList(); + Iterator it = list.iterator(); + while (it.hasNext()) { + ByFamilyedu n = (ByFamilyedu) 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, ByFamilyedu t) { + return getChildList(list, t).size() > 0 ? true : false; + } + + /** * 新增家庭教育 *