diff --git a/src/main/java/com/cuit/solarenergy/config/LayerDispConfig.java b/src/main/java/com/cuit/solarenergy/config/LayerDispConfig.java new file mode 100644 index 0000000..a115d19 --- /dev/null +++ b/src/main/java/com/cuit/solarenergy/config/LayerDispConfig.java @@ -0,0 +1,21 @@ +package com.cuit.solarenergy.config; + + +import com.cuit.solarenergy.entity.BaseMapVoRet; +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * 网页地图显示列表 + * @author cuitg -- ZengwuWang + * @date 2024年07月14日 13:29 + */ +@Component +@Data +@ConfigurationProperties(prefix="layers") +public class LayerDispConfig { + private List basemap; +} diff --git a/src/main/java/com/cuit/solarenergy/controller/DataController.java b/src/main/java/com/cuit/solarenergy/controller/DataController.java index 9d6711b..d80abb7 100644 --- a/src/main/java/com/cuit/solarenergy/controller/DataController.java +++ b/src/main/java/com/cuit/solarenergy/controller/DataController.java @@ -2,6 +2,7 @@ package com.cuit.solarenergy.controller; import com.cuit.solarenergy.base.annotation.AopLog; import com.cuit.solarenergy.base.annotation.AuthToken; +import com.cuit.solarenergy.entity.BaseMapVoRet; import com.cuit.solarenergy.entity.MonitorRet; import com.cuit.solarenergy.entity.TGeoserverinfo; import com.cuit.solarenergy.entity.vo.ret.RetResponse; @@ -9,6 +10,7 @@ import com.cuit.solarenergy.entity.vo.ret.RetResult; import com.cuit.solarenergy.exception.ParamsException; import com.cuit.solarenergy.service.DataImportService; import com.cuit.solarenergy.utils.ErrorMessage; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.github.xiaoymin.knife4j.annotations.ApiSupport; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -51,10 +53,10 @@ public class DataController { @ApiResponse(code = 500, message = "服务器内部错误"), @ApiResponse(code = 900, message = "失败") }) - public RetResult> getRefionInfo(String region) { + public RetResult> getRefionInfo() { try { log.info("区域查询"); - List regionInfo = dataImportService.getRefionInfo(region); + List regionInfo = dataImportService.getRefionInfo(); return RetResponse.makeOKRsp(regionInfo); }catch (ParamsException e){ return RetResponse.makeErrRsp("查询错误!"+e.getMessage()); @@ -73,20 +75,43 @@ public class DataController { @ApiResponse(code = 500, message = "服务器内部错误"), @ApiResponse(code = 900, message = "失败") }) - public RetResult> getTifByRegion(String region) { + public RetResult> getTifByRegion(String region) { try { log.info("Tif查询"); - List regionInfo = dataImportService.getTifByRegion(region); + List regionInfo = dataImportService.getTifByRegion(region); return RetResponse.makeOKRsp(regionInfo); }catch (ParamsException e){ return RetResponse.makeErrRsp("查询tif文件失败!"+e.getMessage()); } } - @AopLog +// @AopLog +// @AuthToken +// @ApiOperation("3、图层查询") +// @PreAuthorize("hasAuthority('minio:upload')") +// @RequestMapping(value = "/dataimport/getLayer", method = {RequestMethod.GET}) +// @ApiResponses({ +// @ApiResponse(code = 200, message = "成功"), +// @ApiResponse(code = 401, message = "访问未经授权"), +// @ApiResponse(code = 403, message = "访问被禁止的"), +// @ApiResponse(code = 404, message = "未找到访问接口"), +// @ApiResponse(code = 500, message = "服务器内部错误"), +// @ApiResponse(code = 900, message = "失败") +// }) +// public RetResult> getLayer() { +// try { +// log.info("图层查询"); +// List layer = dataImportService.getLayer(); +// return RetResponse.makeOKRsp(layer); +// }catch (ParamsException e){ +// return RetResponse.makeErrRsp("查询tif文件失败!"+e.getMessage()); +// } +// } @AuthToken - @ApiOperation("3、图层查询") - @PreAuthorize("hasAuthority('minio:upload')") - @RequestMapping(value = "/dataimport/getLayer", method = {RequestMethod.GET}) + @AopLog + @ApiOperationSupport(order = 8) +// @PreAuthorize("hasAuthority('common:getBaseMapLayes')") + @ApiOperation("8、查询取底图图层列表名称及地址") + @RequestMapping(value = "/common/getBaseMapLayes", method = {RequestMethod.GET}) @ApiResponses({ @ApiResponse(code = 200, message = "成功"), @ApiResponse(code = 401, message = "访问未经授权"), @@ -95,13 +120,14 @@ public class DataController { @ApiResponse(code = 500, message = "服务器内部错误"), @ApiResponse(code = 900, message = "失败") }) - public RetResult> getLayer() { + public RetResult> getBaseMapLayes() { + List baseMapVoRets = null; try { - log.info("图层查询"); - List layer = dataImportService.getLayer(); - return RetResponse.makeOKRsp(layer); - }catch (ParamsException e){ - return RetResponse.makeErrRsp("查询tif文件失败!"+e.getMessage()); + baseMapVoRets = dataImportService.getBaseMapList(); + return RetResponse.makeOKRsp(baseMapVoRets); + } catch (Exception e) { + e.printStackTrace(); + return RetResponse.makeRsp(500, "服务器错误..."); } } @AopLog @@ -191,5 +217,27 @@ public class DataController { }catch (ParamsException e){ return RetResponse.makeErrRsp("查询监测点详情失败!"+e.getMessage()); } + } + @AopLog + @AuthToken + @ApiOperation("9、获取数据时间") + @PreAuthorize("hasAuthority('minio:upload')") + @RequestMapping(value = "/dataimport/getCurrentTime", method = {RequestMethod.GET}) + @ApiResponses({ + @ApiResponse(code = 200, message = "成功"), + @ApiResponse(code = 401, message = "访问未经授权"), + @ApiResponse(code = 403, message = "访问被禁止的"), + @ApiResponse(code = 404, message = "未找到访问接口"), + @ApiResponse(code = 500, message = "服务器内部错误"), + @ApiResponse(code = 900, message = "失败") + }) + public RetResult> getCurrentTime() { + try { + log.info("获取当前时间"); + List currentTime = dataImportService.getCurrentTime(); + return RetResponse.makeOKRsp(currentTime); + }catch (ParamsException e){ + return RetResponse.makeErrRsp("获取当前时间失败!"+e.getMessage()); + } } } diff --git a/src/main/java/com/cuit/solarenergy/entity/BaseMapVoRet.java b/src/main/java/com/cuit/solarenergy/entity/BaseMapVoRet.java new file mode 100644 index 0000000..276d401 --- /dev/null +++ b/src/main/java/com/cuit/solarenergy/entity/BaseMapVoRet.java @@ -0,0 +1,23 @@ +package com.cuit.solarenergy.entity; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@ApiModel(description = "地图底图返回类") +public class BaseMapVoRet { + @ApiModelProperty("地图名称") + private String name; + @ApiModelProperty("访问地址") + private String url; + @ApiModelProperty(value ="缺省开关", example = "on,off") + + private String defaultonoff; +} \ No newline at end of file diff --git a/src/main/java/com/cuit/solarenergy/entity/TGeoserverinfo.java b/src/main/java/com/cuit/solarenergy/entity/TGeoserverinfo.java index 67a00a9..13c5b78 100644 --- a/src/main/java/com/cuit/solarenergy/entity/TGeoserverinfo.java +++ b/src/main/java/com/cuit/solarenergy/entity/TGeoserverinfo.java @@ -55,6 +55,8 @@ public class TGeoserverinfo implements Serializable { */ private LocalDateTime createdate; + private String regionname; + private static final long serialVersionUID = 1L; @Override diff --git a/src/main/java/com/cuit/solarenergy/mapper/TGeoserverinfoMapper.java b/src/main/java/com/cuit/solarenergy/mapper/TGeoserverinfoMapper.java index b977266..0a7655c 100644 --- a/src/main/java/com/cuit/solarenergy/mapper/TGeoserverinfoMapper.java +++ b/src/main/java/com/cuit/solarenergy/mapper/TGeoserverinfoMapper.java @@ -3,6 +3,8 @@ package com.cuit.solarenergy.mapper; import com.cuit.solarenergy.entity.TGeoserverinfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.springframework.web.bind.annotation.RequestParam; import java.util.List; @@ -17,10 +19,17 @@ public interface TGeoserverinfoMapper extends BaseMapper { /** * 根据区域查询信息 + * + * @return + */ + List getRefionInfo(); + + /** + * 根据区域查询tif文件 * @param region * @return */ - List getRefionInfo(String region); + List getTifByRegion(@Param("region") String region); } diff --git a/src/main/java/com/cuit/solarenergy/service/DataImportService.java b/src/main/java/com/cuit/solarenergy/service/DataImportService.java index 258fd50..40e871f 100644 --- a/src/main/java/com/cuit/solarenergy/service/DataImportService.java +++ b/src/main/java/com/cuit/solarenergy/service/DataImportService.java @@ -1,6 +1,7 @@ package com.cuit.solarenergy.service; +import com.cuit.solarenergy.entity.BaseMapVoRet; import com.cuit.solarenergy.entity.MonitorRet; import com.cuit.solarenergy.entity.TGeoserverinfo; import org.springframework.stereotype.Service; @@ -68,14 +69,15 @@ public interface DataImportService { * * @return */ - List getRefionInfo(String region); + List getRefionInfo(); /** * 根据区域查询tif文件 + * * @param region * @return */ - List getTifByRegion(String region); + List getTifByRegion(String region); /** * 获取图层信息 @@ -110,4 +112,15 @@ public interface DataImportService { */ List getMonitorInfo(); + /** + * 获取当前时间 + * @return + */ + List getCurrentTime(); + + /** + * 获取取底图图层列表名称及地址 + * @return + */ + List getBaseMapList(); } diff --git a/src/main/java/com/cuit/solarenergy/service/impl/DataImportServiceImpl.java b/src/main/java/com/cuit/solarenergy/service/impl/DataImportServiceImpl.java index cf430df..e0326a5 100644 --- a/src/main/java/com/cuit/solarenergy/service/impl/DataImportServiceImpl.java +++ b/src/main/java/com/cuit/solarenergy/service/impl/DataImportServiceImpl.java @@ -6,10 +6,13 @@ import com.alibaba.excel.enums.CellExtraTypeEnum; import com.alibaba.excel.exception.ExcelAnalysisException; import com.alibaba.excel.read.metadata.ReadSheet; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.cuit.solarenergy.entity.MonitorRet; -import com.cuit.solarenergy.entity.TGeoserverinfo; -import com.cuit.solarenergy.entity.TSamplingDataDetails; -import com.cuit.solarenergy.entity.TSiteBaseInfo; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.beust.jcommander.internal.Nullable; +import com.cuit.mete.geoserver.GeoServerConfig; +import com.cuit.solarenergy.config.LayerDispConfig; +import com.cuit.solarenergy.config.MyGeoServerConfig; +import com.cuit.solarenergy.entity.*; import com.cuit.solarenergy.exception.ParamsException; import com.cuit.solarenergy.mapper.TGeoserverinfoMapper; import com.cuit.solarenergy.mapper.TSamplingDataDetailsMapper; @@ -32,6 +35,8 @@ import java.io.File; import java.io.IOException; import java.io.InputStream; import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.*; /** @@ -58,6 +63,12 @@ public class DataImportServiceImpl implements DataImportService { @Autowired private GeoServerPubServiceImpl geoServerPubService; + @Autowired + LayerDispConfig layerDispConfig; + @Autowired + MyGeoServerConfig mygeoServerConfig; + + @Override public List upLoadProjectLedgerBySingleFile(MultipartFile file) throws IOException { @@ -371,9 +382,9 @@ public class DataImportServiceImpl implements DataImportService { } @Override - public List getRefionInfo(String region) { + public List getRefionInfo() { try { - List regionInfo = tGeoserverinfoMapper.getRefionInfo(region); + List regionInfo = tGeoserverinfoMapper.getRefionInfo(); if (regionInfo != null) { for (TGeoserverinfo info : regionInfo) { info.setUrl(geoServerPubService.getMapBox3857RasterWmsUrl(info.getId())); @@ -388,30 +399,19 @@ public class DataImportServiceImpl implements DataImportService { @Override - public List getTifByRegion(String region) { - List tifUrls = new ArrayList<>(); - switch (region) { - case "南充": - tifUrls.add("url_to_beijing_tif"); - break; - case "巴中": - tifUrls.add("url_to_shanghai_tif"); - break; - case "广元": - tifUrls.add("url_to_guangzhou_tif"); - break; - case "广安": - tifUrls.add("url_to_guangzhou_tif"); - break; - case "达州": - tifUrls.add("url_to_guangzhou_tif"); - break; - default: - // 如果输入的城市名称不在已知列表中,可以返回一个空列表或者null - tifUrls = null; - break; + public List getTifByRegion(String region) { + try{ + List tifByRegion = tGeoserverinfoMapper.getTifByRegion(region); + if (tifByRegion != null) { + for (TGeoserverinfo info : tifByRegion) { + info.setUrl(geoServerPubService.getMapBox3857RasterWmsUrl(info.getId())); + } } - return tifUrls; + return tifByRegion; + }catch (ParamsException e){ + throw new RuntimeException("Failed to get region info", e); + } + } @Override @@ -540,6 +540,78 @@ public class DataImportServiceImpl implements DataImportService { return monitorInfoList; } + @Override + public List getCurrentTime() { + // 获取当前时间 + LocalDateTime now = LocalDateTime.now(); + // 定义时间格式 + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + // 格式化当前时间为字符串 + String formattedTime = now.format(formatter); + // 返回包含当前时间字符串的列表 + return Arrays.asList(formattedTime); + } + + @Override + public List getBaseMapList() { + List baseMapVoRetList = new ArrayList<>(); + //配置文件中定义的 + List basemapConfigList = layerDispConfig.getBasemap(); + if (!CollectionUtils.isEmpty(basemapConfigList)) { + baseMapVoRetList.addAll(basemapConfigList); + } + + List geoBasedatageoserverinfos = tGeoserverinfoMapper.selectList(null); + if (!CollectionUtils.isEmpty(geoBasedatageoserverinfos)) { + for (int i = 0; i < geoBasedatageoserverinfos.size(); i++) { + TGeoserverinfo geoBasedatageoserverinfo = geoBasedatageoserverinfos.get(i); + BaseMapVoRet baseMapVoRet = new BaseMapVoRet(); + baseMapVoRet.setName(geoBasedatageoserverinfo.getGeoserverlayers()); + //http://121.37.165.19:8082/geoserver/cztl/wms?service=WMS&version=1.1.0&request=GetMap&layers=cztl:SAT_RTD_JS_00_CPC_20230405_202304250000&bbox=494883.5,3398883.5,496536.5,3400386.5&width=768&height=698&srs=EPSG:32647&styles=cztl:style_cpc&format=application/openlayers + //取3857坐标系地址 + String url = getURL(geoBasedatageoserverinfo); + baseMapVoRet.setUrl(url); + baseMapVoRet.setDefaultonoff("off"); + baseMapVoRetList.add(baseMapVoRet); + } + } + return baseMapVoRetList; + } + + private String getURL(TGeoserverinfo geoBasedatageoserverinfo) { + String url = ""; + String geoServerURL = ""; + geoServerURL = mygeoServerConfig.getGeoserverapiurl(); + String workspaces = ""; + if (!StringUtils.isEmpty(geoBasedatageoserverinfo.getGeoserverworkspaces())) { + workspaces = geoBasedatageoserverinfo.getGeoserverworkspaces(); + } else { + workspaces = geoBasedatageoserverinfo.getGeoserverworkspaces(); + } + String layer = ""; + if (!StringUtils.isEmpty(geoBasedatageoserverinfo.getGeoserverlayers())) { + layer = geoBasedatageoserverinfo.getGeoserverlayers(); + } + String styles = ""; + if (!StringUtils.isEmpty(geoBasedatageoserverinfo.getGeoserverstyles())) { + styles = geoBasedatageoserverinfo.getGeoserverstyles(); + } + String srs = "EPSG:3857"; + + if (StringUtils.isEmpty(geoServerURL) || StringUtils.isEmpty(layer) || StringUtils.isEmpty(workspaces)) { + return null; + } + if (geoServerURL.endsWith("/")) { + geoServerURL = geoServerURL.substring(0, geoServerURL.length() - 1); + } + url = geoServerURL + "/" + workspaces + "/wms?service=WMS&version=1.1.0&request=GetMap&layers=" + workspaces + ":" + layer + "&width=768&height=698&srs=" + srs; + if (!StringUtils.isEmpty(styles)) { + url += "&styles=" + workspaces + ":" + styles; + } + url += "&FORMAT=image/png&TRANSPARENT=true"; + return url; + } + /** * 读取Excel文件 diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 926529a..240ed16 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -84,7 +84,17 @@ mygeoserverconfig: # logback.xml早于application.yml加载,logback-spring.xml晚于application.yml加载, 如果logback配置需要使用application.yml中的属性,需要命名为logback-spring.xml # 2. logback使用application.yml中的属性 # 使用springProperty才可使用application.yml中的值 可以设置默认值 - +#叠加地图,地址可以是反向代理后的地址 +layers: + basemap: + - name: 倾斜模型 + url: https://gis.mdjcsdsj.com//gisserver/c3dserver/aimin/tileset.json + #http://111.42.18.66:8089/api/c3dserver/ + defaultonoff: true #true/flase + - name: 三维地形 + url: mapbox://mapbox.mapbox-terrain-dem-v1 + #http://111.42.18.66:8089/api/c3dserver/ + defaultonoff: true #true/flase ditu: diff --git a/src/main/resources/mapper/TGeoserverinfoMapper.xml b/src/main/resources/mapper/TGeoserverinfoMapper.xml index 3524721..72ebf88 100644 --- a/src/main/resources/mapper/TGeoserverinfoMapper.xml +++ b/src/main/resources/mapper/TGeoserverinfoMapper.xml @@ -14,21 +14,28 @@ + ID,GeoServerWorkspaces,GeoServerLayers, GeoServerStyles,Srs,bbox, - latlonbbox,url,createdate + latlonbbox,url,createdate,regionname +