From fc709526959224daf845018c5d891a7e99f280f4 Mon Sep 17 00:00:00 2001 From: guoshengxiong <1923636941@qq.com> Date: Sat, 8 Nov 2025 09:15:53 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E4=BC=81=E4=B8=9A=E7=9A=84?= =?UTF-8?q?=E6=A0=91=E5=BD=A2=E9=A1=B9=E7=9B=AE=E5=92=8C=E7=9B=91=E6=8E=A7?= =?UTF-8?q?=E5=88=86=E7=BB=84=E5=92=8C=E7=9B=91=E6=8E=A7=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=80=BB=E6=95=B0=E5=92=8C=E5=9C=A8=E7=BA=BF?= =?UTF-8?q?=E8=A7=86=E9=A2=91=E7=9B=91=E6=8E=A7=E6=95=B0=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/vo/TreeProjectVideoListVo.java | 10 +++++ .../service/impl/ProjectServiceImpl.java | 38 ++++++++++++++++++- 2 files changed, 47 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/zhgd/xmgl/modules/project/entity/vo/TreeProjectVideoListVo.java b/src/main/java/com/zhgd/xmgl/modules/project/entity/vo/TreeProjectVideoListVo.java index acbbf21dc..66eb16c0a 100644 --- a/src/main/java/com/zhgd/xmgl/modules/project/entity/vo/TreeProjectVideoListVo.java +++ b/src/main/java/com/zhgd/xmgl/modules/project/entity/vo/TreeProjectVideoListVo.java @@ -37,6 +37,16 @@ public class TreeProjectVideoListVo { private VideoItem videoItem; private ProjectVideoConfig projectVideoConfig; private List children; + /** + *监控总数 + */ + @ApiModelProperty("监控总数") + private Integer totalNum; + /** + *监控在线总数 + */ + @ApiModelProperty("监控在线总数") + private Integer onlineNum; /** * 监控类型枚举 */ diff --git a/src/main/java/com/zhgd/xmgl/modules/project/service/impl/ProjectServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/project/service/impl/ProjectServiceImpl.java index b311f0730..0905a89d2 100644 --- a/src/main/java/com/zhgd/xmgl/modules/project/service/impl/ProjectServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/project/service/impl/ProjectServiceImpl.java @@ -108,7 +108,6 @@ import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.text.SimpleDateFormat; import java.util.*; -import java.util.concurrent.CompletableFuture; import java.util.function.Function; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -531,9 +530,46 @@ public class ProjectServiceImpl extends ServiceImpl impl String name = MapUtils.getString(map, "name"); List rtVoList = BeanUtil.copyToList(TreeUtils.listToTree(JSONArray.parseArray(JSON.toJSONString(voList)), "id", "parentId", "children", "name", name), TreeProjectVideoListVo.class); rtVoList = rtVoList.stream().filter(v -> Objects.equals(v.getType(), TreeProjectVideoListVo.MonitorType.PROJECT.getCode())).collect(Collectors.toList()); + for (TreeProjectVideoListVo vo : rtVoList) { + getAndSetTotalAndOnlineNum(vo); + } return rtVoList; } + /** + * 递归统计总数和在线视频监控数量 + * + * @param vo + * @return 包含totalNum和onlineNum的Map + */ + public static Map getAndSetTotalAndOnlineNum(TreeProjectVideoListVo vo) { + Map result = new HashMap<>(); + int totalNum = 0; + int onlineNum = 0; + if (Objects.equals(vo.getType(), TreeProjectVideoListVo.MonitorType.VIDEO.getCode())) { + totalNum = 1; + if (Objects.equals(vo.getVideoItem().getDeviceState(), 1)) { + onlineNum = 1; + } + } + // 递归处理子节点 + List children = vo.getChildren(); + if (CollUtil.isNotEmpty(children)) { + for (int i = 0; i < children.size(); i++) { + TreeProjectVideoListVo child = children.get(i); + Map childStats = getAndSetTotalAndOnlineNum(child); + // 累加子节点的统计结果 + totalNum += childStats.getOrDefault("totalNum", 0); + onlineNum += childStats.getOrDefault("onlineNum", 0); + } + } + result.put("totalNum", totalNum); + result.put("onlineNum", onlineNum); + vo.setTotalNum(totalNum); + vo.setOnlineNum(onlineNum); + return result; + } + @Override public void saveZwProject(ZwProjectDataVo zwProjectDataVo) { Project project = new Project();