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 | 93 ++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 89 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/se/nsl/controller/SimuController.java b/src/main/java/com/se/nsl/controller/SimuController.java index 0028a67..c790ff9 100644 --- a/src/main/java/com/se/nsl/controller/SimuController.java +++ b/src/main/java/com/se/nsl/controller/SimuController.java @@ -1,14 +1,17 @@ package com.se.nsl.controller; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; 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.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; @@ -17,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锛嶆帹婕旀ā鎷�") @@ -30,6 +37,9 @@ @Resource ResolveService resolveService; + + @Resource + RealTimeSimulationService rts; /** * 鍒嗛〉鏌ヨ鎺ㄦ紨妯℃嫙 @@ -94,12 +104,15 @@ return fail("geom瀵硅薄涓嶆槸澶氳竟褰�"); int rows = simuService.insert(simu); + System.out.println(String.format("id:%s", simu.getId())); + if (rows > 0 && (null == data.getRainfalls() || data.getRainfalls().size() < 2)) { resolveService.createRainfall(simu); simuService.updateById(simu); } - - return success(rows); + JSONObject json = new JSONObject(); + json.put("id", simu.getId()); + return success(json); } catch (Exception ex) { return fail(ex, null); } @@ -156,4 +169,76 @@ return fail(ex, null); } } + + @ApiOperation(value = "position") + @GetMapping("/position") + public R<Object> queryByPosition(double lon, double lat, Long time, String serviceName) { + if (lon > 180 || lon < -180) { + return clientError("缁忓害鑼冨洿搴旇鍦�-180鍒�180"); + } + if (lat > 90 || lat < -90) { + return clientError("绾害鑼冨洿搴旇鍦�-90鍒�90"); + } + if (serviceName == null || serviceName.trim().isEmpty()) { + return clientError("鏈嶅姟鍚嶄笉鑳戒负绌�"); + } + 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()); + } + } + + @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