From c05d148bb0942e7424f8f72d377cc366a33a9e01 Mon Sep 17 00:00:00 2001 From: zhanghua <314079846@qq.com> Date: 星期二, 26 十一月 2024 12:25:55 +0800 Subject: [PATCH] 流程类型tree接口 --- business/src/main/java/com/ycl/domain/entity/FlowableType.java | 6 +++ business/src/main/java/com/ycl/service/FlowableTypeService.java | 2 + business/src/main/java/com/ycl/service/impl/FlowableTypeServiceImpl.java | 69 ++++++++++++++++++++++++++++++++-- business/src/main/java/com/ycl/controller/FlowableTypeController.java | 6 ++ 4 files changed, 77 insertions(+), 6 deletions(-) diff --git a/business/src/main/java/com/ycl/controller/FlowableTypeController.java b/business/src/main/java/com/ycl/controller/FlowableTypeController.java index 4512a0d..e7f1588 100644 --- a/business/src/main/java/com/ycl/controller/FlowableTypeController.java +++ b/business/src/main/java/com/ycl/controller/FlowableTypeController.java @@ -75,5 +75,9 @@ List<FlowableType> list = flowableTypeService.selectTypeList(flowableType); return Result.ok().data(list); } - + @GetMapping("/tree_select") + public AjaxResult treeSelect(FlowableType flowableType) { + List<FlowableType> list = flowableTypeService.selectTypeList(flowableType); + return success(flowableTypeService.buildTreeSelect(list)); + } } diff --git a/business/src/main/java/com/ycl/domain/entity/FlowableType.java b/business/src/main/java/com/ycl/domain/entity/FlowableType.java index e5f4cae..553b018 100644 --- a/business/src/main/java/com/ycl/domain/entity/FlowableType.java +++ b/business/src/main/java/com/ycl/domain/entity/FlowableType.java @@ -3,12 +3,15 @@ import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; import com.ycl.common.core.domain.BaseEntity; +import com.ycl.common.core.domain.entity.SysMenu; import com.ycl.system.domain.base.AbsEntity; import lombok.Data; import java.io.Serializable; import java.time.LocalDateTime; +import java.util.ArrayList; import java.util.Date; +import java.util.List; /** * 娴佺▼鍒嗙被 @@ -63,4 +66,7 @@ /** 澶囨敞 */ @TableField(value = "remark") private String remark; + + @TableField(exist = false) + private List<FlowableType> children = new ArrayList<FlowableType>(); } diff --git a/business/src/main/java/com/ycl/service/FlowableTypeService.java b/business/src/main/java/com/ycl/service/FlowableTypeService.java index 41f3f0f..0a8e314 100644 --- a/business/src/main/java/com/ycl/service/FlowableTypeService.java +++ b/business/src/main/java/com/ycl/service/FlowableTypeService.java @@ -10,4 +10,6 @@ List<FlowableType> selectTypeList(FlowableType flowableType); + + List<FlowableType> buildTreeSelect(List<FlowableType> list); } diff --git a/business/src/main/java/com/ycl/service/impl/FlowableTypeServiceImpl.java b/business/src/main/java/com/ycl/service/impl/FlowableTypeServiceImpl.java index 1996b65..63aaca0 100644 --- a/business/src/main/java/com/ycl/service/impl/FlowableTypeServiceImpl.java +++ b/business/src/main/java/com/ycl/service/impl/FlowableTypeServiceImpl.java @@ -1,17 +1,14 @@ package com.ycl.service.impl; -import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.ycl.common.base.Result; import com.ycl.domain.entity.FlowableType; -import com.ycl.framework.utils.PageUtil; import com.ycl.mapper.FlowableTypeMapper; import com.ycl.service.FlowableTypeService; import lombok.RequiredArgsConstructor; -import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; -import org.springframework.util.Assert; +import java.util.ArrayList; +import java.util.Iterator; import java.util.List; import java.util.stream.Collectors; @@ -24,4 +21,66 @@ public List<FlowableType> selectTypeList(FlowableType flowableType) { return baseMapper.selectTypeList(flowableType); } + + @Override + public List<FlowableType> buildTreeSelect(List<FlowableType> list) { + List<FlowableType> returnList = new ArrayList<FlowableType>(); + List<Integer> tempList = list.stream().map(FlowableType::getId).collect(Collectors.toList()); + for (Iterator<FlowableType> iterator = list.iterator(); iterator.hasNext();) + { + FlowableType type = (FlowableType) iterator.next(); + // 濡傛灉鏄《绾ц妭鐐�, 閬嶅巻璇ョ埗鑺傜偣鐨勬墍鏈夊瓙鑺傜偣 + if (!tempList.contains(type.getParentId())) + { + recursionFn(list, type); + returnList.add(type); + } + } + if (returnList.isEmpty()) + { + returnList = list; + } + return returnList; + } + + private void recursionFn(List<FlowableType> list, FlowableType t) + { + // 寰楀埌瀛愯妭鐐瑰垪琛� + List<FlowableType> childList = getChildList(list, t); + t.setChildren(childList); + for (FlowableType tChild : childList) + { + if (hasChild(list, tChild)) + { + recursionFn(list, tChild); + } + } + } + + /** + * 寰楀埌瀛愯妭鐐瑰垪琛� + */ + private List<FlowableType> getChildList(List<FlowableType> list, FlowableType t) + { + List<FlowableType> tlist = new ArrayList<FlowableType>(); + Iterator<FlowableType> it = list.iterator(); + while (it.hasNext()) + { + FlowableType n = (FlowableType) it.next(); + if (n.getParentId().longValue() == t.getId().longValue()) + { + tlist.add(n); + } + } + return tlist; + } + + /** + * 鍒ゆ柇鏄惁鏈夊瓙鑺傜偣 + */ + private boolean hasChild(List<FlowableType> list, FlowableType t) + { + return getChildList(list, t).size() > 0; + } + } -- Gitblit v1.8.0