修改bug

This commit is contained in:
yangjun 2026-04-23 15:47:38 +08:00
parent 10383e2315
commit 64d5b54ed0
4 changed files with 128 additions and 21 deletions

View File

@ -12,6 +12,8 @@ import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable; import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/** /**
* @Description: 护理单元 * @Description: 护理单元
@ -145,5 +147,23 @@ public class NuBaseInfo implements Serializable {
private String maintainStatus;//设备状态 private String maintainStatus;//设备状态
@TableField(exist = false) @TableField(exist = false)
private String deviceType;//设备类型 private String deviceType;//设备类型
@TableField(exist = false)
private String parentId;//上级id
@TableField(exist = false)
private List<NuBaseInfo> 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);
}
} }

View File

@ -17,4 +17,6 @@ public interface NuBaseInfoMapper extends BaseMapper<NuBaseInfo> {
NuBaseInfo queryByElderIdNum(@Param("idCard") String idCard); NuBaseInfo queryByElderIdNum(@Param("idCard") String idCard);
List<NuBaseInfo> selectWlsbList(); List<NuBaseInfo> selectWlsbList();
List<NuBaseInfo> selectJcgnList();
} }

View File

@ -11,12 +11,13 @@
</select> </select>
<select id="selectWlsbList" resultType="com.nu.modules.baseinfo.entity.NuBaseInfo"> <select id="selectWlsbList" resultType="com.nu.modules.baseinfo.entity.NuBaseInfo">
select sn as device_sn,device_name,'1' as device_type,nu_id,maintain_status from nu_iot_tplink_camera select nu_id as device_sn,device_name, device_type,nu_id,device_status as maintain_status from nu_iot_device_preview
union all where nu_id is not null and device_status is not null and device_status != '损坏'
select cid as device_sn,cid as device_name,'2' as device_type,nu_id,maintain_status from nu_iot_tq_electricity_meter </select>
union all
select cid as device_sn,cid as device_name,'3' as device_type,nu_id,maintain_status from nu_iot_tq_water_meter
union all <select id="selectJcgnList" resultType="com.nu.modules.baseinfo.entity.NuBaseInfo">
select sn as device_sn,device_name,'4' as device_type,nu_id,maintain_status from nu_iot_yiweilian_humid_device SELECT a.permission_id as id,b.name as nu_name,a.role_id as nu_id,b.parent_id from nu_app_nuid_permission a
inner join nu_app_permission b on a.permission_id = b.id
</select> </select>
</mapper> </mapper>

View File

@ -18,8 +18,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
/** /**
* @Description: 护理单元 * @Description: 护理单元
@ -41,7 +43,7 @@ public class NuBaseInfoServiceImpl extends ServiceImpl<NuBaseInfoMapper, NuBaseI
QueryWrapper<NuBaseInfo> qw = new QueryWrapper<>(); QueryWrapper<NuBaseInfo> qw = new QueryWrapper<>();
qw.eq("nu_id", nuId); qw.eq("nu_id", nuId);
qw.eq("area_flag",areaType);//区域属性 // qw.eq("area_flag",areaType);//区域属性
qw.eq("del_flag", "0"); qw.eq("del_flag", "0");
NuBaseInfo nuBaseInfo = baseMapper.selectOne(qw); NuBaseInfo nuBaseInfo = baseMapper.selectOne(qw);
if (nuBaseInfo == null) { if (nuBaseInfo == null) {
@ -82,44 +84,61 @@ public class NuBaseInfoServiceImpl extends ServiceImpl<NuBaseInfoMapper, NuBaseI
@Override @Override
@DS("#orgCode") @DS("#orgCode")
public List<Map<String, Object>> getNuListByOrgCode(String orgCode) { public List<Map<String, Object>> getNuListByOrgCode(String orgCode) {
//护理单元
List<NuBaseInfo> list = baseMapper.selectList(new QueryWrapper<>()); List<NuBaseInfo> list = baseMapper.selectList(new QueryWrapper<>());
List<Map<String, Object>> mapList = new ArrayList<>(); List<Map<String, Object>> mapList = new ArrayList<>();
//设备信息
List<NuBaseInfo> wlsbList = baseMapper.selectWlsbList(); List<NuBaseInfo> wlsbList = baseMapper.selectWlsbList();
//基础功能
List<NuBaseInfo> jcgnList = baseMapper.selectJcgnList();
List<NuBaseInfo> mergedTrees = buildTree(jcgnList);
for (NuBaseInfo info : list) { for (NuBaseInfo info : list) {
String sxtStr = "";//摄像头集合 String sxtStr = "";//摄像头集合
String dbStr = "";//电表集合 String dbStr = "";//电表集合
String sbStr = "";//水表集合 String sbStr = "";//水表集合
String wsdjStr = "";//温湿度计集合 String wsdjStr = "";//温湿度计集合
List<NuBaseInfo> children = new ArrayList<>();
if(wlsbList == null){ if(wlsbList == null){
continue; continue;
} }
for (NuBaseInfo wlsb : wlsbList) { for (NuBaseInfo wlsb : wlsbList) {
if (info.getNuId().equals(wlsb.getNuId())) { if (info.getNuId().equals(wlsb.getNuId())) {
if ("1".equals(wlsb.getDeviceType())) { if ("SURVEILLANCECAMERA".equals(wlsb.getDeviceType())) {
sxtStr = sxtStr + wlsb.getDeviceSn() + ","; sxtStr = sxtStr + wlsb.getNuId() + ",";
} else if ("2".equals(wlsb.getDeviceType())) { } else if ("db".equals(wlsb.getDeviceType())) {
dbStr = dbStr + wlsb.getDeviceSn() + ","; dbStr = dbStr + wlsb.getNuId() + ",";
} else if ("3".equals(wlsb.getDeviceType())) { } else if ("sb".equals(wlsb.getDeviceType())) {
sbStr = sbStr + wlsb.getDeviceSn() + ","; sbStr = sbStr + wlsb.getNuId() + ",";
} else if ("4".equals(wlsb.getDeviceType())) { } else if ("wsdj".equals(wlsb.getDeviceType())) {
wsdjStr = wsdjStr + wlsb.getDeviceSn() + ","; wsdjStr = wsdjStr + wlsb.getNuId() + ",";
} }
} }
} }
if (sxtStr.length() > 0) sxtStr = sxtStr.substring(0, sxtStr.length() - 1); if (sxtStr.length() > 0) sxtStr = sxtStr.split(",").length +"";
if (dbStr.length() > 0) dbStr = dbStr.substring(0, dbStr.length() - 1); if (dbStr.length() > 0) dbStr = dbStr.split(",").length +"";
if (sbStr.length() > 0) sbStr = sbStr.substring(0, sbStr.length() - 1); if (sbStr.length() > 0) sbStr = sbStr.split(",").length +"";
if (wsdjStr.length() > 0) wsdjStr = wsdjStr.substring(0, wsdjStr.length() - 1); if (wsdjStr.length() > 0) wsdjStr = wsdjStr.split(",").length +"";
for (NuBaseInfo mergedTree : mergedTrees) {
if (info.getNuId().equals(mergedTree.getNuId())) {
children.add(mergedTree);
}
}
Map<String, Object> map = Map.of( Map<String, Object> map = Map.of(
"nuId", info.getNuId(), "nuId", info.getNuId(),
"nuName", info.getNuName(),
"status", info.getStatus(), "status", info.getStatus(),
"sxtList", sxtStr, "sxtList", sxtStr,
"dbList", dbStr, "dbList", dbStr,
"sbList", sbStr, "sbList", sbStr,
"wsdjList", wsdjStr "wsdjList", wsdjStr,
"children",children
); );
mapList.add(map); mapList.add(map);
} }
return mapList; return mapList;
@ -130,4 +149,69 @@ public class NuBaseInfoServiceImpl extends ServiceImpl<NuBaseInfoMapper, NuBaseI
public IPage<NuBaseInfo> getList(String sysOrgCode,Page<NuBaseInfo> page, QueryWrapper<NuBaseInfo> queryWrapper) { public IPage<NuBaseInfo> getList(String sysOrgCode,Page<NuBaseInfo> page, QueryWrapper<NuBaseInfo> queryWrapper) {
return baseMapper.selectPage(page, queryWrapper); return baseMapper.selectPage(page, queryWrapper);
} }
/**
* 构建分类树
* @param nodes 原始节点列表
* @return 根节点列表
*/
public List<NuBaseInfo> buildTree(List<NuBaseInfo> nodes) {
// nuId 分组
Map<String, List<NuBaseInfo>> groupByNuId = nodes.stream()
.collect(Collectors.groupingBy(NuBaseInfo::getNuId));
List<NuBaseInfo> allRootNodes = new ArrayList<>();
// 对每个 nuId 分组单独构建树
for (Map.Entry<String, List<NuBaseInfo>> entry : groupByNuId.entrySet()) {
String nuId = entry.getKey();
List<NuBaseInfo> sameNuIdNodes = entry.getValue();
List<NuBaseInfo> rootNodes = buildSingleTree(sameNuIdNodes, nuId);
allRootNodes.addAll(rootNodes);
}
return allRootNodes;
}
/**
* 构建单个 nuId 的分类树
*/
private List<NuBaseInfo> buildSingleTree(List<NuBaseInfo> nodes, String nuId) {
List<NuBaseInfo> rootNodes = new ArrayList<>();
Map<String, NuBaseInfo> 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;
}
} }