From 47369fc80522c351f49b577251674e6f5de13fa2 Mon Sep 17 00:00:00 2001 From: sk1551 <15175617877@163.com> Date: Sat, 17 Oct 2020 18:58:24 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=84=E4=BC=B0=E5=86=85=E5=AE=B9=E9=83=A8?= =?UTF-8?q?=E5=88=86=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-ui/src/api/benyi/assessmentcontent.js | 67 +++++++------ .../views/benyi/assessmentcontent/index.vue | 63 ++++++++----- .../framework/web/domain/TreeSelect.java | 8 ++ .../ByAssessmentcontentController.java | 18 ++++ .../benyi/domain/ByAssessmentcontent.java | 45 +++++++-- .../service/IByAssessmentcontentService.java | 17 ++++ .../impl/ByAssessmentcontentServiceImpl.java | 93 +++++++++++++++++++ .../benyi/ByAssessmentcontentMapper.xml | 10 +- 8 files changed, 252 insertions(+), 69 deletions(-) diff --git a/ruoyi-ui/src/api/benyi/assessmentcontent.js b/ruoyi-ui/src/api/benyi/assessmentcontent.js index e0559c694..671f894d3 100644 --- a/ruoyi-ui/src/api/benyi/assessmentcontent.js +++ b/ruoyi-ui/src/api/benyi/assessmentcontent.js @@ -2,52 +2,61 @@ import request from '@/utils/request' // 查询评估内容列表 export function listAssessmentcontent(query) { - return request({ - url: '/benyi/assessmentcontent/list', - method: 'get', - params: query - }) + return request({ + url: '/benyi/assessmentcontent/list', + method: 'get', + params: query + }) } +// 查询部门下拉树结构 +export function treeselect() { + return request({ + url: '/benyi/assessmentcontent/treeselect', + method: 'get' + }) +} + + // 查询评估内容详细 export function getAssessmentcontent(id) { - return request({ - url: '/benyi/assessmentcontent/' + id, - method: 'get' - }) + return request({ + url: '/benyi/assessmentcontent/' + id, + method: 'get' + }) } // 新增评估内容 export function addAssessmentcontent(data) { - return request({ - url: '/benyi/assessmentcontent', - method: 'post', - data: data - }) + return request({ + url: '/benyi/assessmentcontent', + method: 'post', + data: data + }) } // 修改评估内容 export function updateAssessmentcontent(data) { - return request({ - url: '/benyi/assessmentcontent', - method: 'put', - data: data - }) + return request({ + url: '/benyi/assessmentcontent', + method: 'put', + data: data + }) } // 删除评估内容 export function delAssessmentcontent(id) { - return request({ - url: '/benyi/assessmentcontent/' + id, - method: 'delete' - }) + return request({ + url: '/benyi/assessmentcontent/' + id, + method: 'delete' + }) } // 导出评估内容 export function exportAssessmentcontent(query) { - return request({ - url: '/benyi/assessmentcontent/export', - method: 'get', - params: query - }) -} + return request({ + url: '/benyi/assessmentcontent/export', + method: 'get', + params: query + }) +} \ No newline at end of file diff --git a/ruoyi-ui/src/views/benyi/assessmentcontent/index.vue b/ruoyi-ui/src/views/benyi/assessmentcontent/index.vue index b9c54d82e..67c7a309d 100644 --- a/ruoyi-ui/src/views/benyi/assessmentcontent/index.vue +++ b/ruoyi-ui/src/views/benyi/assessmentcontent/index.vue @@ -54,8 +54,6 @@ @selection-change="handleSelectionChange" > - - @@ -90,15 +88,13 @@ - - - - + + @@ -114,7 +110,7 @@ - + { this.iselementOptions = response.data; }); - this.getPartntid(); }, methods: { // 性别字典翻译 @@ -224,13 +218,27 @@ export default { this.loading = false; }); }, - getPartntid() { + + /** 查询部门下拉树结构 */ + getTreeselect() { listAssessmentcontent(null).then(response => { - this.parentidOptions = response.rows; + this.parentidOptions = this.handleTree(response.rows, "id"); console.log(this.parentidOptions); }); }, + /** 转换部门数据结构 */ + normalizer(node) { + if (node.children && !node.children.length) { + delete node.children; + } + return { + id: node.id, + label: node.name, + children: node.children + }; + }, + // 取消按钮 cancel() { this.open = false; @@ -240,7 +248,7 @@ export default { reset() { this.form = { id: undefined, - parentid: undefined, + parentId: undefined, name: undefined, iselement: undefined, scope: undefined, @@ -265,14 +273,19 @@ export default { this.multiple = !selection.length; }, /** 新增按钮操作 */ - handleAdd() { + handleAdd(row) { this.reset(); + this.getTreeselect(); + if (row != undefined) { + this.form.parentId = row.id; + } this.open = true; this.title = "添加评估内容"; }, /** 修改按钮操作 */ handleUpdate(row) { this.reset(); + this.getTreeselect(); const id = row.id || this.ids; getAssessmentcontent(id).then(response => { this.form = response.data; 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 a9743f62a..3061da598 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,6 +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; @@ -37,6 +38,13 @@ public class TreeSelect implements Serializable this.children = dept.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList()); } + public TreeSelect(ByAssessmentcontent byAssessmentcontent) + { + this.id = byAssessmentcontent.getId(); + this.label = byAssessmentcontent.getName(); + this.children = byAssessmentcontent.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList()); + } + public TreeSelect(SysMenu menu) { this.id = menu.getMenuId(); diff --git a/ruoyi/src/main/java/com/ruoyi/project/benyi/controller/ByAssessmentcontentController.java b/ruoyi/src/main/java/com/ruoyi/project/benyi/controller/ByAssessmentcontentController.java index fc674f405..677575647 100644 --- a/ruoyi/src/main/java/com/ruoyi/project/benyi/controller/ByAssessmentcontentController.java +++ b/ruoyi/src/main/java/com/ruoyi/project/benyi/controller/ByAssessmentcontentController.java @@ -1,6 +1,10 @@ package com.ruoyi.project.benyi.controller; import java.util.List; + +import com.ruoyi.common.utils.ServletUtils; +import com.ruoyi.framework.security.LoginUser; +import com.ruoyi.framework.security.service.TokenService; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; @@ -32,6 +36,8 @@ public class ByAssessmentcontentController extends BaseController { @Autowired private IByAssessmentcontentService byAssessmentcontentService; + @Autowired + private TokenService tokenService; /** * 查询评估内容列表 @@ -68,6 +74,18 @@ public class ByAssessmentcontentController extends BaseController return AjaxResult.success(byAssessmentcontentService.selectByAssessmentcontentById(id)); } + + + /** + * 获取部门下拉树列表 + */ + @GetMapping("/treeselect") + public AjaxResult treeselect(ByAssessmentcontent byAssessmentcontent) { + List byAssessmentcontents = byAssessmentcontentService.selectByAssessmentcontentList(byAssessmentcontent); + return AjaxResult.success(byAssessmentcontentService.buildByAssessmentcontentTreeSelect(byAssessmentcontents)); + } + + /** * 新增评估内容 */ diff --git a/ruoyi/src/main/java/com/ruoyi/project/benyi/domain/ByAssessmentcontent.java b/ruoyi/src/main/java/com/ruoyi/project/benyi/domain/ByAssessmentcontent.java index 929f8659c..8ba49b17b 100644 --- a/ruoyi/src/main/java/com/ruoyi/project/benyi/domain/ByAssessmentcontent.java +++ b/ruoyi/src/main/java/com/ruoyi/project/benyi/domain/ByAssessmentcontent.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_assessmentcontent * @@ -23,7 +26,7 @@ public class ByAssessmentcontent extends BaseEntity { * 父id */ @Excel(name = "父id") - private Long parentid; + private Long parentId; /** * 名称 @@ -37,6 +40,28 @@ public class ByAssessmentcontent extends BaseEntity { @Excel(name = "是否元素") private String iselement; + public String getParentName() { + return parentName; + } + + public void setParentName(String parentName) { + this.parentName = parentName; + } + + public List getChildren() { + return children; + } + + public void setChildren(List children) { + this.children = children; + } + + /** 父部门名称 */ + private String parentName; + + /** 子部门 */ + private List children = new ArrayList(); + /** * 元素才有适用范围;应该以幼儿的岁数为准 */ @@ -51,14 +76,6 @@ public class ByAssessmentcontent extends BaseEntity { return id; } - public void setParentid(Long parentid) { - this.parentid = parentid; - } - - public Long getParentid() { - return parentid; - } - public void setName(String name) { this.name = name; } @@ -87,11 +104,19 @@ public class ByAssessmentcontent extends BaseEntity { public String toString() { return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) .append("id", getId()) - .append("parentid", getParentid()) + .append("parentId", getParentId()) .append("name", getName()) .append("iselement", getIselement()) .append("scope", getScope()) .append("createTime", getCreateTime()) .toString(); } + + public Long getParentId() { + return parentId; + } + + public void setParentId(Long parentId) { + this.parentId = parentId; + } } diff --git a/ruoyi/src/main/java/com/ruoyi/project/benyi/service/IByAssessmentcontentService.java b/ruoyi/src/main/java/com/ruoyi/project/benyi/service/IByAssessmentcontentService.java index f8701b3f3..639d01098 100644 --- a/ruoyi/src/main/java/com/ruoyi/project/benyi/service/IByAssessmentcontentService.java +++ b/ruoyi/src/main/java/com/ruoyi/project/benyi/service/IByAssessmentcontentService.java @@ -2,6 +2,7 @@ package com.ruoyi.project.benyi.service; import java.util.List; +import com.ruoyi.framework.web.domain.TreeSelect; import com.ruoyi.project.benyi.domain.ByAssessmentcontent; /** @@ -27,6 +28,22 @@ public interface IByAssessmentcontentService { */ public List selectByAssessmentcontentList(ByAssessmentcontent byAssessmentcontent); + /** + * 构建前端所需要树结构 + * + * @param byAssessmentcontents 部门列表 + * @return 树结构列表 + */ + List buildbyAssessmentcontentTree(List byAssessmentcontents); + + /** + * 构建前端所需要下拉树结构 + * + * @param byAssessmentcontents 部门列表 + * @return 下拉树结构列表 + */ + public List buildByAssessmentcontentTreeSelect(List byAssessmentcontents); + /** * 新增评估内容 * diff --git a/ruoyi/src/main/java/com/ruoyi/project/benyi/service/impl/ByAssessmentcontentServiceImpl.java b/ruoyi/src/main/java/com/ruoyi/project/benyi/service/impl/ByAssessmentcontentServiceImpl.java index 589981410..339681ae2 100644 --- a/ruoyi/src/main/java/com/ruoyi/project/benyi/service/impl/ByAssessmentcontentServiceImpl.java +++ b/ruoyi/src/main/java/com/ruoyi/project/benyi/service/impl/ByAssessmentcontentServiceImpl.java @@ -1,8 +1,13 @@ 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 org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ruoyi.project.benyi.mapper.ByAssessmentcontentMapper; @@ -42,6 +47,44 @@ public class ByAssessmentcontentServiceImpl implements IByAssessmentcontentServi return byAssessmentcontentMapper.selectByAssessmentcontentList(byAssessmentcontent); } + /** + * 构建前端所需要树结构 + * + * @param byAssessmentcontents 部门列表 + * @return 树结构列表 + */ + @Override + public List buildbyAssessmentcontentTree(List byAssessmentcontents) + { + List returnList = new ArrayList(); + List tempList = new ArrayList(); + for (ByAssessmentcontent byAssessmentcontent : byAssessmentcontents) + { + tempList.add(byAssessmentcontent.getId()); + } + for (Iterator iterator = byAssessmentcontents.iterator(); iterator.hasNext();) + { + ByAssessmentcontent byAssessmentcontent = (ByAssessmentcontent) iterator.next(); + // 如果是顶级节点, 遍历该父节点的所有子节点 + if (!tempList.contains(byAssessmentcontent.getParentId())) + { + recursionFn(byAssessmentcontents, byAssessmentcontent); + returnList.add(byAssessmentcontent); + } + } + if (returnList.isEmpty()) + { + returnList = byAssessmentcontents; + } + return returnList; + } + + @Override + public List buildByAssessmentcontentTreeSelect(List byAssessmentcontents) { + List byAssessmentcontentTrees = buildbyAssessmentcontentTree(byAssessmentcontents); + return byAssessmentcontentTrees.stream().map(TreeSelect::new).collect(Collectors.toList()); + } + /** * 新增评估内容 * @@ -86,4 +129,54 @@ public class ByAssessmentcontentServiceImpl implements IByAssessmentcontentServi public int deleteByAssessmentcontentById(Long id) { return byAssessmentcontentMapper.deleteByAssessmentcontentById(id); } + + /** + * 递归列表 + */ + private void recursionFn(List list, ByAssessmentcontent t) + { + // 得到子节点列表 + List childList = getChildList(list, t); + t.setChildren(childList); + for (ByAssessmentcontent tChild : childList) + { + if (hasChild(list, tChild)) + { + // 判断是否有子节点 + Iterator it = childList.iterator(); + while (it.hasNext()) + { + ByAssessmentcontent n = (ByAssessmentcontent) it.next(); + recursionFn(list, n); + } + } + } + } + + /** + * 得到子节点列表 + */ + private List getChildList(List list, ByAssessmentcontent t) + { + List tlist = new ArrayList(); + Iterator it = list.iterator(); + while (it.hasNext()) + { + ByAssessmentcontent n = (ByAssessmentcontent) it.next(); + if (StringUtils.isNotNull(n.getParentId()) && n.getParentId().longValue() == t.getId().longValue()) + { + tlist.add(n); + } + } + return tlist; + } + + /** + * 判断是否有子节点 + */ + private boolean hasChild(List list, ByAssessmentcontent t) + { + return getChildList(list, t).size() > 0 ? true : false; + } + } diff --git a/ruoyi/src/main/resources/mybatis/benyi/ByAssessmentcontentMapper.xml b/ruoyi/src/main/resources/mybatis/benyi/ByAssessmentcontentMapper.xml index 954e3bd4d..28d682b42 100644 --- a/ruoyi/src/main/resources/mybatis/benyi/ByAssessmentcontentMapper.xml +++ b/ruoyi/src/main/resources/mybatis/benyi/ByAssessmentcontentMapper.xml @@ -6,7 +6,7 @@ - + @@ -21,7 +21,7 @@ resultMap="ByAssessmentcontentResult"> - and parentId = #{parentid} + and parentId = #{parentId} and name like concat('%', #{name}, '%') and iselement = #{iselement} and scope = #{scope} @@ -36,14 +36,14 @@ insert into by_assessmentcontent - parentId, + parentId, name, iselement, scope, create_time, - #{parentid}, + #{parentId}, #{name}, #{iselement}, #{scope}, @@ -54,7 +54,7 @@ update by_assessmentcontent - parentId = #{parentid}, + parentId = #{parentId}, name = #{name}, iselement = #{iselement}, scope = #{scope},