From dc0601492c12ea8009ab0e47ff25ec0e78f60903 Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期六, 02 十一月 2024 08:29:14 +0800
Subject: [PATCH] 添加查询建筑物涉水深度接口

---
 src/main/java/com/se/simu/service/WaterService.java |   42 ++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 42 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/se/simu/service/WaterService.java b/src/main/java/com/se/simu/service/WaterService.java
index 7d6061a..871df44 100644
--- a/src/main/java/com/se/simu/service/WaterService.java
+++ b/src/main/java/com/se/simu/service/WaterService.java
@@ -1,11 +1,13 @@
 package com.se.simu.service;
 
+import cn.hutool.core.io.FileUtil;
 import cn.hutool.json.JSONUtil;
 import com.se.simu.config.PropertiesConfig;
 import com.se.simu.domain.po.DataPo;
 import com.se.simu.domain.po.SimuPo;
 import com.se.simu.domain.vo.*;
 import com.se.simu.helper.GdalHelper;
+import com.se.simu.helper.StringHelper;
 import lombok.extern.slf4j.Slf4j;
 import org.gdal.gdal.Dataset;
 import org.gdal.gdal.gdal;
@@ -13,6 +15,7 @@
 import org.gdal.osr.SpatialReference;
 import org.gdal.osr.osr;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
 import java.io.File;
@@ -20,6 +23,7 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 鍐呮稘鏈嶅姟绫�
@@ -171,4 +175,42 @@
     public static boolean isValid(double val) {
         return !Double.isNaN(val) && val > Integer.MIN_VALUE;
     }
+
+    public List<BuildingDepthVo> getBuildingDepthBySeid(String serviceName, String seid) {
+        List<BuildingDepthVo> list = readBuildingJson(serviceName);
+        if (CollectionUtils.isEmpty(list)) return null;
+
+        return list.parallelStream()
+                .filter(b -> seid.equals(b.getSeid()))
+                .sorted((a, b) -> a.getTimestamp().compareTo(b.getTimestamp()))
+                .collect(Collectors.toList());
+    }
+
+    public List<BuildingDepthVo> getBuildingDepthByTime(String serviceName, Long timestamp) {
+        List<BuildingDepthVo> list = readBuildingJson(serviceName);
+        if (CollectionUtils.isEmpty(list)) {
+            return null;
+        }
+
+        return list.parallelStream().filter(b -> timestamp.equals(b.getTimestamp())).collect(Collectors.toList());
+    }
+
+    private List<BuildingDepthVo> readBuildingJson(String serviceName) {
+        String filePath = config.getOutPath() + File.separator + serviceName + File.separator + "building.json";
+        String json = getText(filePath);
+        if (StringHelper.isEmpty(json)) {
+            return null;
+        }
+
+        return JSONUtil.toList(json, BuildingDepthVo.class);
+    }
+
+    private String getText(String filePath) {
+        File file = new File(filePath);
+        if (!file.exists()) {
+            return null;
+        }
+
+        return FileUtil.readUtf8String(file);
+    }
 }

--
Gitblit v1.9.3