From 0e1cb7f1ce40fd37ce4d8766db287f6f6718e629 Mon Sep 17 00:00:00 2001 From: cwchen <1048842385@qq.com> Date: Thu, 8 Aug 2024 17:44:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=BD=E5=B7=A5=E7=AE=A1=E6=8E=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/constant/BusinessConstants.java | 1 + .../common/core/utils/BuildTreeUtil.java | 50 +++++++++++++++++++ .../common/entity/bracelet/BuildTreeUtil.java | 40 --------------- .../common/entity/bracelet/vo/BallTreeVo.java | 5 +- .../service/impl/ConsControlServiceImpl.java | 17 +++++-- .../mapper/bracelet/ConsControlMapper.xml | 2 +- 6 files changed, 68 insertions(+), 47 deletions(-) create mode 100644 bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/BuildTreeUtil.java delete mode 100644 bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/bracelet/BuildTreeUtil.java diff --git a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/constant/BusinessConstants.java b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/constant/BusinessConstants.java index c9088f6..c823314 100644 --- a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/constant/BusinessConstants.java +++ b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/constant/BusinessConstants.java @@ -12,6 +12,7 @@ public class BusinessConstants { public static final int TYPE = 1; public static final int TYPE2 = 2; public static final int TYPE3 = 0; + public static final Long PARENT_ID = 0l; /** 资源类型 1-人员*/ public static final String RESOURCE_TYPE_USER = "1"; diff --git a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/BuildTreeUtil.java b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/BuildTreeUtil.java new file mode 100644 index 0000000..ef3dbb9 --- /dev/null +++ b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/BuildTreeUtil.java @@ -0,0 +1,50 @@ +package com.bonus.common.core.utils; + +import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; + +/** + * @className:BuildTreeUtil + * @author:cwchen + * @date:2024-08-08-16:15 + * @version:1.0 + * @description:构建树 + */ +public class BuildTreeUtil { + + public static JSONArray listInfoToTree(JSONArray arr, String id, String pid, String child) { + JSONArray ret = new JSONArray(); + // 将数据直接构建成为hash + JSONObject hash = new JSONObject(); + // 节点大小 + int size = arr.size(); + // 将数组转为Object的形式,key为数组中的id,并组装为map + for (int i = 0; i < size; i++) { + JSONObject json = (JSONObject) arr.get(i); + hash.put(json.getString(id), json); + } + // 遍历结果集 + for (int j = 0; j < size; j++) { + // 单条记录 + JSONObject nodeVal = (JSONObject) arr.get(j); + // 在hash中取出key为单条记录中pid的值 + JSONObject hashParent = (JSONObject) hash.get(nodeVal.get(pid).toString()); + // 如果记录的pid存在,则说明它有父节点,将她添加到孩子节点的集合中(这里与刚才所说的所有parentId为空的节点填充一个projectid并不冲突,因为当填入projectId的时候,hashParent是get不到值的) + if (hashParent != null) { + // 构造child属性 + if (hashParent.get(child) != null) { + JSONArray chArr = (JSONArray) hashParent.get(child); + chArr.add(nodeVal); + hashParent.put(child, chArr); + } else { + JSONArray chArr = new JSONArray(); + chArr.add(nodeVal); + hashParent.put(child, chArr); + } + } else { + ret.add(nodeVal); + } + } + return ret; + } +} diff --git a/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/bracelet/BuildTreeUtil.java b/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/bracelet/BuildTreeUtil.java deleted file mode 100644 index 9c4e67e..0000000 --- a/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/bracelet/BuildTreeUtil.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.bonus.common.entity.bracelet; - -import com.bonus.common.entity.bracelet.vo.BallTreeVo; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * @className:BuildTreeUtil - * @author:cwchen - * @date:2024-08-08-16:15 - * @version:1.0 - * @description:构建树 - */ -public class BuildTreeUtil { - - public static List ballListToChildren(List list) { - Map map = new HashMap<>(); - List result = new ArrayList<>(); - // 第一次遍历,将所有节点存储到map中 - for (BallTreeVo node : list) { - map.put(node.getId() + "", node); - } - // 第二次遍历,构建Children关系 - for (BallTreeVo node : list) { - BallTreeVo parent = map.get(node.getParentId()); - if (parent != null) { - if (parent.getChildren() == null) { - parent.setChildren(new ArrayList<>()); - } - parent.getChildren().add(node); - } else { - result.add(node); - } - } - return result; - } -} diff --git a/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/bracelet/vo/BallTreeVo.java b/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/bracelet/vo/BallTreeVo.java index dab3e8d..3754448 100644 --- a/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/bracelet/vo/BallTreeVo.java +++ b/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/bracelet/vo/BallTreeVo.java @@ -3,6 +3,7 @@ package com.bonus.common.entity.bracelet.vo; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; +import java.util.ArrayList; import java.util.List; /** @@ -23,8 +24,8 @@ public class BallTreeVo { private String devCode; /**设备下标*/ private String devIndex; - + /**父ID*/ private Long parentId; - private List children; + private List children = new ArrayList<>(); } diff --git a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/impl/ConsControlServiceImpl.java b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/impl/ConsControlServiceImpl.java index 4f2a26e..76fdd8a 100644 --- a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/impl/ConsControlServiceImpl.java +++ b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/impl/ConsControlServiceImpl.java @@ -1,12 +1,15 @@ package com.bonus.bracelet.service.impl; +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONArray; import com.bonus.bracelet.mapper.ConsControlMapper; import com.bonus.bracelet.service.IConsControlService; +import com.bonus.common.core.constant.BusinessConstants; import com.bonus.common.core.utils.StringUtils; import com.bonus.common.core.utils.encryption.Sm4Utils; import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.common.entity.bracelet.BraceletParamsDto; -import com.bonus.common.entity.bracelet.BuildTreeUtil; +import com.bonus.common.core.utils.BuildTreeUtil; import com.bonus.common.entity.bracelet.vo.BallTreeVo; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -14,6 +17,7 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; +import java.util.Objects; /** * @className:ConsControlServiceImpl @@ -31,20 +35,25 @@ public class ConsControlServiceImpl implements IConsControlService { @Override public AjaxResult getBallDeviceLists(BraceletParamsDto dto) { + JSONArray resultTree = new JSONArray(); try { List list = new ArrayList<>(); list = mapper.getBallDeviceLists(dto); for (BallTreeVo vo : list) { + //过滤工程数据 + if (Objects.equals(vo.getParentId(), BusinessConstants.PARENT_ID)) { + continue; + } String[] valArr = vo.getLabel().split("-"); if (StringUtils.isNotEmpty(valArr[1])) { vo.setLabel(valArr[0] + "-" + Sm4Utils.decode(valArr[1])); } } - List handleList = BuildTreeUtil.ballListToChildren(list); - return AjaxResult.success(handleList); + //构建球机树 + resultTree = BuildTreeUtil.listInfoToTree(JSONArray.parseArray(JSON.toJSONString(list)), "id", "parentId", "children"); } catch (Exception e) { log.error(e.toString(), e); } - return AjaxResult.success(); + return AjaxResult.success(resultTree); } } diff --git a/bonus-modules/bonus-bracelet/src/main/resources/mapper/bracelet/ConsControlMapper.xml b/bonus-modules/bonus-bracelet/src/main/resources/mapper/bracelet/ConsControlMapper.xml index 7cf72c8..e34c779 100644 --- a/bonus-modules/bonus-bracelet/src/main/resources/mapper/bracelet/ConsControlMapper.xml +++ b/bonus-modules/bonus-bracelet/src/main/resources/mapper/bracelet/ConsControlMapper.xml @@ -20,7 +20,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" tdu.id, CONCAT(tpe.name,'-',tpe.phone) AS label, td.dev_code AS devCode, - td.dev_index AS devIndex, + IFNULL(td.dev_index,0) AS devIndex, tdu.pro_id AS parentId, tp.depart_id AS departId FROM tb_dev_use tdu