From 64d5b54ed002ecd3b3ad838302f0af3da921abf0 Mon Sep 17 00:00:00 2001 From: yangjun <1173114630@qq.com> Date: Thu, 23 Apr 2026 15:47:38 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/baseinfo/entity/NuBaseInfo.java | 20 ++++ .../baseinfo/mapper/NuBaseInfoMapper.java | 2 + .../baseinfo/mapper/xml/NuBaseInfoMapper.xml | 15 +-- .../service/impl/NuBaseInfoServiceImpl.java | 112 +++++++++++++++--- 4 files changed, 128 insertions(+), 21 deletions(-) diff --git a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/baseinfo/entity/NuBaseInfo.java b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/baseinfo/entity/NuBaseInfo.java index e5f170d..eafa5f0 100644 --- a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/baseinfo/entity/NuBaseInfo.java +++ b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/baseinfo/entity/NuBaseInfo.java @@ -12,6 +12,8 @@ import org.jeecgframework.poi.excel.annotation.Excel; import org.springframework.format.annotation.DateTimeFormat; import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; /** * @Description: 护理单元 @@ -145,5 +147,23 @@ public class NuBaseInfo implements Serializable { private String maintainStatus;//设备状态 @TableField(exist = false) private String deviceType;//设备类型 + @TableField(exist = false) + private String parentId;//上级id + + @TableField(exist = false) + private List children = new ArrayList<>(); + + // 构造方法 + public NuBaseInfo(String id, String nuName, String nuId, String parentId) { + this.id = id; + this.nuName = nuName; + this.nuId = nuId; + this.parentId = parentId; + } + + // 添加子节点 + public void addChild(NuBaseInfo child) { + children.add(child); + } } diff --git a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/baseinfo/mapper/NuBaseInfoMapper.java b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/baseinfo/mapper/NuBaseInfoMapper.java index 659ad84..fd890f7 100644 --- a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/baseinfo/mapper/NuBaseInfoMapper.java +++ b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/baseinfo/mapper/NuBaseInfoMapper.java @@ -17,4 +17,6 @@ public interface NuBaseInfoMapper extends BaseMapper { NuBaseInfo queryByElderIdNum(@Param("idCard") String idCard); List selectWlsbList(); + + List selectJcgnList(); } diff --git a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/baseinfo/mapper/xml/NuBaseInfoMapper.xml b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/baseinfo/mapper/xml/NuBaseInfoMapper.xml index b968c2c..829de5d 100644 --- a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/baseinfo/mapper/xml/NuBaseInfoMapper.xml +++ b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/baseinfo/mapper/xml/NuBaseInfoMapper.xml @@ -11,12 +11,13 @@ + + + diff --git a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/baseinfo/service/impl/NuBaseInfoServiceImpl.java b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/baseinfo/service/impl/NuBaseInfoServiceImpl.java index fa6ae64..14ea542 100644 --- a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/baseinfo/service/impl/NuBaseInfoServiceImpl.java +++ b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/baseinfo/service/impl/NuBaseInfoServiceImpl.java @@ -18,8 +18,10 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * @Description: 护理单元 @@ -41,7 +43,7 @@ public class NuBaseInfoServiceImpl extends ServiceImpl qw = new QueryWrapper<>(); qw.eq("nu_id", nuId); - qw.eq("area_flag",areaType);//区域属性 +// qw.eq("area_flag",areaType);//区域属性 qw.eq("del_flag", "0"); NuBaseInfo nuBaseInfo = baseMapper.selectOne(qw); if (nuBaseInfo == null) { @@ -82,44 +84,61 @@ public class NuBaseInfoServiceImpl extends ServiceImpl> getNuListByOrgCode(String orgCode) { + //护理单元 List list = baseMapper.selectList(new QueryWrapper<>()); List> mapList = new ArrayList<>(); + //设备信息 List wlsbList = baseMapper.selectWlsbList(); + //基础功能 + List jcgnList = baseMapper.selectJcgnList(); + List mergedTrees = buildTree(jcgnList); + for (NuBaseInfo info : list) { String sxtStr = "";//摄像头集合 String dbStr = "";//电表集合 String sbStr = "";//水表集合 String wsdjStr = "";//温湿度计集合 + List children = new ArrayList<>(); if(wlsbList == null){ continue; } for (NuBaseInfo wlsb : wlsbList) { if (info.getNuId().equals(wlsb.getNuId())) { - if ("1".equals(wlsb.getDeviceType())) { - sxtStr = sxtStr + wlsb.getDeviceSn() + ","; - } else if ("2".equals(wlsb.getDeviceType())) { - dbStr = dbStr + wlsb.getDeviceSn() + ","; - } else if ("3".equals(wlsb.getDeviceType())) { - sbStr = sbStr + wlsb.getDeviceSn() + ","; - } else if ("4".equals(wlsb.getDeviceType())) { - wsdjStr = wsdjStr + wlsb.getDeviceSn() + ","; + if ("SURVEILLANCECAMERA".equals(wlsb.getDeviceType())) { + sxtStr = sxtStr + wlsb.getNuId() + ","; + } else if ("db".equals(wlsb.getDeviceType())) { + dbStr = dbStr + wlsb.getNuId() + ","; + } else if ("sb".equals(wlsb.getDeviceType())) { + sbStr = sbStr + wlsb.getNuId() + ","; + } else if ("wsdj".equals(wlsb.getDeviceType())) { + wsdjStr = wsdjStr + wlsb.getNuId() + ","; } } } - if (sxtStr.length() > 0) sxtStr = sxtStr.substring(0, sxtStr.length() - 1); - if (dbStr.length() > 0) dbStr = dbStr.substring(0, dbStr.length() - 1); - if (sbStr.length() > 0) sbStr = sbStr.substring(0, sbStr.length() - 1); - if (wsdjStr.length() > 0) wsdjStr = wsdjStr.substring(0, wsdjStr.length() - 1); + if (sxtStr.length() > 0) sxtStr = sxtStr.split(",").length +""; + if (dbStr.length() > 0) dbStr = dbStr.split(",").length +""; + if (sbStr.length() > 0) sbStr = sbStr.split(",").length +""; + if (wsdjStr.length() > 0) wsdjStr = wsdjStr.split(",").length +""; + + for (NuBaseInfo mergedTree : mergedTrees) { + if (info.getNuId().equals(mergedTree.getNuId())) { + children.add(mergedTree); + } + } Map map = Map.of( "nuId", info.getNuId(), + "nuName", info.getNuName(), "status", info.getStatus(), "sxtList", sxtStr, "dbList", dbStr, "sbList", sbStr, - "wsdjList", wsdjStr + "wsdjList", wsdjStr, + "children",children ); mapList.add(map); + + } return mapList; @@ -130,4 +149,69 @@ public class NuBaseInfoServiceImpl extends ServiceImpl getList(String sysOrgCode,Page page, QueryWrapper queryWrapper) { return baseMapper.selectPage(page, queryWrapper); } + + /** + * 构建分类树 + * @param nodes 原始节点列表 + * @return 根节点列表 + */ + public List buildTree(List nodes) { + // 按 nuId 分组 + Map> groupByNuId = nodes.stream() + .collect(Collectors.groupingBy(NuBaseInfo::getNuId)); + + List allRootNodes = new ArrayList<>(); + + // 对每个 nuId 分组单独构建树 + for (Map.Entry> entry : groupByNuId.entrySet()) { + String nuId = entry.getKey(); + List sameNuIdNodes = entry.getValue(); + + List rootNodes = buildSingleTree(sameNuIdNodes, nuId); + allRootNodes.addAll(rootNodes); + } + + return allRootNodes; + } + + /** + * 构建单个 nuId 的分类树 + */ + private List buildSingleTree(List nodes, String nuId) { + List rootNodes = new ArrayList<>(); + Map nodeMap = new HashMap<>(); + + // 第一步:将所有节点存入map + for (NuBaseInfo node : nodes) { + nodeMap.put(node.getId(), node); + } + + // 第二步:建立父子关系 + for (NuBaseInfo node : nodes) { + String parentId = node.getParentId(); + + if (parentId == null || parentId.isEmpty() || parentId.equals("0")) { + // 根节点 + rootNodes.add(node); + } else { + // 查找父节点 + NuBaseInfo parent = nodeMap.get(parentId); + if (parent != null) { + // 父节点存在,添加到父节点的children + if (parent.getChildren() == null) { + parent.setChildren(new ArrayList<>()); + } + parent.getChildren().add(node); + } else { + // 父节点不存在,作为根节点处理 + rootNodes.add(node); + } + } + } + + return rootNodes; + } + + + }