From 8b7258c9427882bb1798f1502eaa35184c6e374e Mon Sep 17 00:00:00 2001
From: linwe <872216996@qq.com>
Date: Fri, 09 Aug 2024 14:29:18 +0800
Subject: [PATCH] 短信指定楼栋发送
---
src/main/java/org/springblade/modules/label/service/impl/LabelServiceImpl.java | 124 ++++++++++++++++++++++++++++++++++++++++-
1 files changed, 121 insertions(+), 3 deletions(-)
diff --git a/src/main/java/org/springblade/modules/label/service/impl/LabelServiceImpl.java b/src/main/java/org/springblade/modules/label/service/impl/LabelServiceImpl.java
index 404ffb2..10c8dc4 100644
--- a/src/main/java/org/springblade/modules/label/service/impl/LabelServiceImpl.java
+++ b/src/main/java/org/springblade/modules/label/service/impl/LabelServiceImpl.java
@@ -16,14 +16,22 @@
*/
package org.springblade.modules.label.service.impl;
+import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import io.swagger.models.auth.In;
+import org.springblade.common.node.TreeIntegerNode;
+import org.springblade.common.utils.NodeTreeUtil;
import org.springblade.modules.label.entity.LabelEntity;
-import org.springblade.modules.label.vo.LabelVO;
import org.springblade.modules.label.mapper.LabelMapper;
import org.springblade.modules.label.service.ILabelService;
-import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.modules.label.vo.LabelVO;
import org.springframework.stereotype.Service;
-import com.baomidou.mybatisplus.core.metadata.IPage;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
/**
* 标签管理 服务实现类
@@ -39,5 +47,115 @@
return page.setRecords(baseMapper.selectLabelPage(page, label));
}
+ /**
+ * 标签查询,按父id查询下级
+ *
+ * @param label
+ * @return
+ */
+// @Override
+// public Object getLabelList(LabelVO label) {
+// Map<Integer, TreeIntegerNode> labelList = baseMapper.getLabelList(label);
+// List<Integer> list = new ArrayList<>();
+// // 遍历
+// labelList.forEach((id, treeNode) -> {
+// if (treeNode.getHasChildren()) {
+// list.add(id);
+// }
+// });
+// if (list.size() > 0) {
+// // 查询子集
+// Map<Integer, TreeIntegerNode> childrenLabelList = baseMapper.getChildrenLabelList(list);
+// List<Integer> list2 = new ArrayList<>();
+// for (TreeIntegerNode value : childrenLabelList.values()) {
+// if(value.getHasChildren()){
+// list2.add(value.getId());
+// }
+// }
+// Map<Integer, TreeIntegerNode> childrenLabelList2 = baseMapper.getChildrenLabelList(list2);
+// // 合并集合
+// labelList.putAll(childrenLabelList);
+// labelList.putAll(childrenLabelList2);
+// }
+// // 处理并返回
+// return NodeTreeUtil.getNodeTree(labelList);
+// }
+ @Override
+ public Object getLabelList(LabelVO label) {
+ // 使用Optional避免空指针异常
+ Optional<Map<Integer, TreeIntegerNode>> labelListOptional = Optional.ofNullable(baseMapper.getLabelList(label));
+
+ if (!labelListOptional.isPresent()) {
+ return null; // 返回空Map代替null
+ }
+
+ Map<Integer, TreeIntegerNode> labelList = labelListOptional.get();
+ List<Integer> list = new ArrayList<>();
+
+ // 遍历,筛选有子节点的标签
+ labelList.forEach((id, treeNode) -> {
+ if (treeNode.getHasChildren()) {
+ list.add(id);
+ }
+ });
+
+ if (!list.isEmpty()) {
+ // 使用批量查询以提高性能
+ Map<Integer, TreeIntegerNode> childrenLabelList = baseMapper.getChildrenLabelList(list);
+
+ List<Integer> list2 = new ArrayList<>();
+ // 筛选出有子节点的标签
+ childrenLabelList.values().forEach(value -> {
+ if(value.getHasChildren()){
+ list2.add(value.getId());
+ }
+ });
+
+ // 避免重复查询,直接合并结果
+ labelList.putAll(childrenLabelList);
+
+ if (!list2.isEmpty()) {
+ // 如果有第二层子节点,进行查询并合并
+ Map<Integer, TreeIntegerNode> childrenLabelList2 = baseMapper.getChildrenLabelList(list2);
+ labelList.putAll(childrenLabelList2);
+ }
+ }
+
+ // 处理并返回标签树
+ return NodeTreeUtil.getNodeTree(labelList); // 假设NodeTreeUtil.getNodeTree已做空值检查
+ }
+
+ @Override
+ public List<TreeIntegerNode> tree(LabelVO label) {
+ Map<Integer, TreeIntegerNode> labelTreeList = baseMapper.getLabelTreeList(label);
+ List<TreeIntegerNode> nodeTree = NodeTreeUtil.getNodeTree(labelTreeList);
+ nodeTree.forEach(node -> recursion(node));
+ return nodeTree;
+ }
+
+ private void recursion(TreeIntegerNode node) {
+ if (node.getChildren() != null && node.getChildren().size() > 0) {
+// BigDecimal bigDecimal = BigDecimal.valueOf(0);
+// node.setCount(node.getChildren().stream().map(item -> {
+// bigDecimal.add(BigDecimal.valueOf(item.getCount()));
+// }));
+ node.getChildren().forEach(node2 -> recursion(node2));
+ } else {
+ node.setChildren(null);
+ }
+ }
+
+ /**
+ * 查询人员标签(不包含人这一级)
+ * @param label
+ * @return
+ */
+ @Override
+ public List<TreeIntegerNode> getPersonLabelList(LabelVO label) {
+ Map<Integer, TreeIntegerNode> labelTreeList = baseMapper.getPersonLabelList(label);
+ List<TreeIntegerNode> nodeTree = NodeTreeUtil.getNodeTree(labelTreeList);
+ nodeTree.forEach(node -> recursion(node));
+ return nodeTree;
+ }
}
--
Gitblit v1.9.3