From 08369aff3d2ed50b09fce06720400f3749ce4294 Mon Sep 17 00:00:00 2001 From: wxz Date: Tue, 25 Apr 2023 15:39:11 +0800 Subject: [PATCH] =?UTF-8?q?1.=E6=96=87=E7=AB=A0=E6=A0=8F=E7=9B=AE=EF=BC=8C?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0tree=E6=8E=A5=E5=8F=A3=202.=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E9=80=9A=E8=BF=87=E7=88=B6id=E6=9F=A5=E8=AF=A2=E5=AD=90?= =?UTF-8?q?=E6=A0=8F=E7=9B=AE=E5=88=97=E8=A1=A8=E7=9A=84=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/CategoryDictController.java | 83 +++++++++++++++++++ .../epmet/service/CategoryDictService.java | 2 + .../service/impl/CategoryDictServiceImpl.java | 13 ++- 3 files changed, 97 insertions(+), 1 deletion(-) diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/CategoryDictController.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/CategoryDictController.java index 40d67f975f..fae386fced 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/CategoryDictController.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/controller/CategoryDictController.java @@ -10,12 +10,20 @@ import com.epmet.commons.tools.validator.group.UpdateGroup; import com.epmet.commons.tools.validator.group.DefaultGroup; import com.epmet.dto.CategoryDictDTO; import com.epmet.service.CategoryDictService; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; /** @@ -31,12 +39,87 @@ public class CategoryDictController { @Autowired private CategoryDictService categoryDictService; + @Data + @NoArgsConstructor + public static class TreeNode { + + private String pid; + private String id; + private String categoryName; + + private List children = new ArrayList<>(); + + public TreeNode(String pid, String id, String categoryName) { + this.pid = pid; + this.id = id; + this.categoryName = categoryName; + } + } + + @GetMapping("tree") + public Result> tree() { + List treeNodes = buildTree(categoryDictService.list(1, 100)); + return new Result().ok(treeNodes); + } + + /** + * 树形结构输出 + */ @RequestMapping("list") public Result> list(@RequestParam Integer pageNo, @RequestParam Integer pageSize){ List list = categoryDictService.list(pageNo, pageSize); return new Result>().ok(list); } + /** + * @description: 根据父级栏目id查询子栏目列表 + * @param parentCategoryId: 父级栏目id + * @return + * @author: WangXianZhang + * @date: 2023/4/25 3:33 PM + */ + @GetMapping("subCategories") + public Result> listSubCategories(@RequestParam("parentCategoryId") String parentCategoryId) { + List list = categoryDictService.listSubCategories(parentCategoryId); + return new Result>().ok(list); + } + + /** + * @description: 构建树状结构 + * @param list: + * @return + * @author: WangXianZhang + * @date: 2023/4/25 3:38 PM + */ + private List buildTree(List list) { + + //总共2级,直接构建就行了。 + List pNodes = new ArrayList<>(); + List sNodes = new ArrayList<>(); + + // 过滤出一级和二级节点 + for (CategoryDictDTO ele : list) { + if (StringUtils.isBlank(ele.getPid()) || "0".equals(ele.getPid())) { + // 是一级节点 + pNodes.add(new TreeNode(ele.getPid(), ele.getId(), ele.getCategoryName())); + } else { + // 二级节点 + sNodes.add(new TreeNode(ele.getPid(), ele.getId(), ele.getCategoryName())); + } + } + + // 追加二级节点 + for (TreeNode sNode : sNodes) { + for (TreeNode pNode : pNodes) { + if (pNode.getId().equals(sNode.getPid())) { + pNode.getChildren().add(sNode); + } + } + } + + return pNodes; + } + @RequestMapping(value = "{id}",method = {RequestMethod.POST,RequestMethod.GET}) public Result get(@PathVariable("id") String id){ CategoryDictDTO data = categoryDictService.get(id); diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/CategoryDictService.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/CategoryDictService.java index b070fd1c34..40fb125ae6 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/CategoryDictService.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/CategoryDictService.java @@ -85,4 +85,6 @@ public interface CategoryDictService extends BaseService { * @date: 2023/4/11 7:06 PM */ List list(Integer pageNo, Integer pageSize); + + List listSubCategories(String parentCategoryId); } \ No newline at end of file diff --git a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/CategoryDictServiceImpl.java b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/CategoryDictServiceImpl.java index e48f6fd893..66ec701d54 100644 --- a/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/CategoryDictServiceImpl.java +++ b/epmet-module/gov-voice/gov-voice-server/src/main/java/com/epmet/service/impl/CategoryDictServiceImpl.java @@ -143,7 +143,18 @@ public class CategoryDictServiceImpl extends BaseServiceImpl list(Integer pageNo, Integer pageSize) { - List list = baseDao.selectList(null); + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(CategoryDictEntity::getCustomerId, EpmetRequestHolder.getLoginUserCustomerId()); + List list = baseDao.selectList(query); + return ConvertUtils.sourceToTarget(list, CategoryDictDTO.class); + } + + @Override + public List listSubCategories(String parentCategoryId) { + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(CategoryDictEntity::getCustomerId, EpmetRequestHolder.getLoginUserCustomerId()); + query.eq(CategoryDictEntity::getPid, parentCategoryId); + List list = baseDao.selectList(query); return ConvertUtils.sourceToTarget(list, CategoryDictDTO.class); } } \ No newline at end of file