From 303058307780d49e2ae4c815669f34b866206d86 Mon Sep 17 00:00:00 2001 From: dcb <xgybdcb@163.com> Date: 星期四, 19 六月 2025 15:42:45 +0800 Subject: [PATCH] 根据位置查询,不提供时间则返回服务中所有符合条件的列表 --- src/main/java/com/se/nsl/controller/SimuController.java | 78 ++++++++++++++++++++++++++++++++++----- 1 files changed, 68 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/se/nsl/controller/SimuController.java b/src/main/java/com/se/nsl/controller/SimuController.java index 0aa1c78..c790ff9 100644 --- a/src/main/java/com/se/nsl/controller/SimuController.java +++ b/src/main/java/com/se/nsl/controller/SimuController.java @@ -5,12 +5,13 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.se.nsl.domain.po.Simu; import com.se.nsl.domain.po.SimuData; -import com.se.nsl.domain.vo.R; -import com.se.nsl.domain.vo.SimuResult; -import com.se.nsl.domain.vo.SimuVo; +import com.se.nsl.domain.vo.*; +import com.se.nsl.service.RealTimeSimulationService; import com.se.nsl.service.ResolveService; import com.se.nsl.service.SimuService; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.gdal.ogr.Geometry; @@ -19,6 +20,10 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import java.io.IOException; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.Arrays; import java.util.List; @Api(tags = "03锛嶆帹婕旀ā鎷�") @@ -32,6 +37,9 @@ @Resource ResolveService resolveService; + + @Resource + RealTimeSimulationService rts; /** * 鍒嗛〉鏌ヨ鎺ㄦ紨妯℃嫙 @@ -171,16 +179,66 @@ if (lat > 90 || lat < -90) { return clientError("绾害鑼冨洿搴旇鍦�-90鍒�90"); } - if (time == null) { - return clientError("鏃堕棿鎴充笉鑳戒负绌�"); - } if (serviceName == null || serviceName.trim().isEmpty()) { return clientError("鏈嶅姟鍚嶄笉鑳戒负绌�"); } - SimuResult result = simuService.queryByPosition(lon, lat, time, serviceName); - if (result == null) { - return notFound("鏈煡鎵惧埌鐩稿叧鏁版嵁"); + if (time != null) { + SimuResult result = simuService.queryByPosition(lon, lat, time, serviceName); + if (result == null) { + return notFound("鏈煡鎵惧埌鐩稿叧鏁版嵁"); + } + return success(result, 1); + } else { + List<SimuResult> simuResults = simuService.queryByPosition(lon, lat, serviceName); + if (simuResults.isEmpty()) { + return notFound("鏈煡鎵惧埌鐩稿叧鏁版嵁"); + } + return success(simuResults, simuResults.size()); } - return success(result); + } + + @ApiOperation(value = "realTime") + @ApiImplicitParams({ + @ApiImplicitParam(name = "date1", value = "5鍒嗛挓鍓嶇殑鏃堕棿锛屾牸寮忎负2025-05-31 14:15:20"), + @ApiImplicitParam(name = "rainfall1", value = "5鍒嗛挓鍓嶇殑闄嶉洦寮哄害"), + @ApiImplicitParam(name = "date2", value = "褰撳墠鏃堕棿锛屾牸寮忎负2025-05-31 14:20:20"), + @ApiImplicitParam(name = "rainfall2", value = "褰撳墠鐨勯檷闆ㄥ己搴�"), + @ApiImplicitParam(name = "serviceName", value = "鏈嶅姟鍚�") + }) + @GetMapping("/realTime") + public R<Object> realTimeSimulate(String date1, double rainfall1, + String date2, double rainfall2, String serviceName) { + RealTimeInput input = new RealTimeInput(); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + LocalDateTime t1 = LocalDateTime.parse(date1, formatter); + LocalDateTime t2 = LocalDateTime.parse(date2, formatter); + RealTimeInput.RealTimeData d1 = new RealTimeInput.RealTimeData(); + d1.setDateTime(t1); + d1.setIntensity(rainfall1); + RealTimeInput.RealTimeData d2 = new RealTimeInput.RealTimeData(); + d2.setDateTime(t2); + d2.setIntensity(rainfall2); + input.setData(Arrays.asList(d1, d2)); + input.setServiceName(serviceName); + + try { + String layerJsonName = resolveService.realTimeSimulate(input); + return success(layerJsonName); + } catch (IOException e) { + log.error("real-time simulate exception:", e); + return fail("瀹炴椂妯℃嫙寮傚父"); + } + } + + @ApiOperation(value = "realTime") + @PostMapping("/realTime2") + public R<Object> realTimeSimulate(@RequestBody RealTimeSimuParam param) { + try { + String layerJsonName = rts.realTimeSimulate(param); + return success(layerJsonName); + } catch (IOException e) { + log.error("real-time simulate exception:", e); + return fail("瀹炴椂妯℃嫙寮傚父"); + } } } -- Gitblit v1.9.3