diff --git a/src/main/java/com/cuit/solarenergy/controller/DataController.java b/src/main/java/com/cuit/solarenergy/controller/DataController.java index 4f19db1..9d6711b 100644 --- a/src/main/java/com/cuit/solarenergy/controller/DataController.java +++ b/src/main/java/com/cuit/solarenergy/controller/DataController.java @@ -2,6 +2,8 @@ package com.cuit.solarenergy.controller; import com.cuit.solarenergy.base.annotation.AopLog; import com.cuit.solarenergy.base.annotation.AuthToken; +import com.cuit.solarenergy.entity.MonitorRet; +import com.cuit.solarenergy.entity.TGeoserverinfo; import com.cuit.solarenergy.entity.vo.ret.RetResponse; import com.cuit.solarenergy.entity.vo.ret.RetResult; import com.cuit.solarenergy.exception.ParamsException; @@ -49,13 +51,145 @@ public class DataController { @ApiResponse(code = 500, message = "服务器内部错误"), @ApiResponse(code = 900, message = "失败") }) - public RetResult> getRefionInfo() { + public RetResult> getRefionInfo(String region) { try { log.info("区域查询"); - List regionInfo = dataImportService.getRefionInfo(); + List regionInfo = dataImportService.getRefionInfo(region); return RetResponse.makeOKRsp(regionInfo); }catch (ParamsException e){ return RetResponse.makeErrRsp("查询错误!"+e.getMessage()); } } + @AopLog + @AuthToken + @ApiOperation("2、根据区域查询tif文件") + @PreAuthorize("hasAuthority('minio:upload')") + @RequestMapping(value = "/dataimport/getTifByRegion", 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> getTifByRegion(String region) { + try { + log.info("Tif查询"); + List regionInfo = dataImportService.getTifByRegion(region); + return RetResponse.makeOKRsp(regionInfo); + }catch (ParamsException e){ + return RetResponse.makeErrRsp("查询tif文件失败!"+e.getMessage()); + } + } + @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()); + } + } + @AopLog + @AuthToken + @ApiOperation("4、图层查询tif文件") + @PreAuthorize("hasAuthority('minio:upload')") + @RequestMapping(value = "/dataimport/getTifByLayer", 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> getTifByLayer(String Layer) { + try { + log.info("图层查询Tif文件"); + List layerTif = dataImportService.getTifByLayer(Layer); + return RetResponse.makeOKRsp(layerTif); + }catch (ParamsException e){ + return RetResponse.makeErrRsp("查询tif文件失败!"+e.getMessage()); + } + } + @AopLog + @AuthToken + @ApiOperation("5、查询要素详情") + @PreAuthorize("hasAuthority('minio:upload')") + @RequestMapping(value = "/dataimport/getElementInfo", 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> getElementInfo() { + try { + log.info("查询要素详情"); + List element = dataImportService.getElementInfo(); + return RetResponse.makeOKRsp(element); + }catch (ParamsException e){ + return RetResponse.makeErrRsp("查询要素失败!"+e.getMessage()); + } + } + @AopLog + @AuthToken + @ApiOperation("6、根据要素详情查询具体值") + @PreAuthorize("hasAuthority('minio:upload')") + @RequestMapping(value = "/dataimport/getValueByElement", 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> getValueByElement(String Element) { + try { + log.info("根据要素详情查询具体值"); + List value = dataImportService.getValueByElement(Element); + return RetResponse.makeOKRsp(value); + }catch (ParamsException e){ + return RetResponse.makeErrRsp("查询数据失败!"+e.getMessage()); + } + } + @AopLog + @AuthToken + @ApiOperation("7、监测排序") + @PreAuthorize("hasAuthority('minio:upload')") + @RequestMapping(value = "/dataimport/getMonitorInfo", 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> getMonitorInfo() { + try { + log.info("根据要素详情查询具体值"); + List monitor = dataImportService.getMonitorInfo(); + return RetResponse.makeOKRsp(monitor); + }catch (ParamsException e){ + return RetResponse.makeErrRsp("查询监测点详情失败!"+e.getMessage()); + } + } } diff --git a/src/main/java/com/cuit/solarenergy/entity/MonitorRet.java b/src/main/java/com/cuit/solarenergy/entity/MonitorRet.java new file mode 100644 index 0000000..3191c95 --- /dev/null +++ b/src/main/java/com/cuit/solarenergy/entity/MonitorRet.java @@ -0,0 +1,24 @@ +package com.cuit.solarenergy.entity; + +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class MonitorRet { + @ApiModelProperty(value = "监测点名称") + private String monitorPointName; + @ApiModelProperty(value = "监测点经度") + private double monitorPointLng; + @ApiModelProperty(value = "监测点纬度") + private double monitorPointLat; + @ApiModelProperty(value = "监测值") + private String monitorValue; + + +} diff --git a/src/main/java/com/cuit/solarenergy/entity/TGeoserverinfo.java b/src/main/java/com/cuit/solarenergy/entity/TGeoserverinfo.java new file mode 100644 index 0000000..67a00a9 --- /dev/null +++ b/src/main/java/com/cuit/solarenergy/entity/TGeoserverinfo.java @@ -0,0 +1,118 @@ +package com.cuit.solarenergy.entity; + +import java.io.Serializable; +import java.time.LocalDateTime; +import lombok.Data; + +/** + * + * @TableName t_geoserverinfo + */ +@Data +public class TGeoserverinfo implements Serializable { + /** + * 序列号,通过序列取 + */ + private Long id; + + /** + * GeoServer服务工作区(访问地址) + */ + private String geoserverworkspaces; + + /** + * GeoServer服务图层名 + */ + private String geoserverlayers; + + /** + * GeoServer服务样式名 + */ + private String geoserverstyles; + + /** + * 坐标 + */ + private String srs; + + /** + * 边框 + */ + private String bbox; + + /** + * 经纬度边框 + */ + private String latlonbbox; + + /** + * 地址(自动生成) + */ + private String url; + + /** + * 数据生成时间(自动生成) + */ + private LocalDateTime createdate; + + private static final long serialVersionUID = 1L; + + @Override + public boolean equals(Object that) { + if (this == that) { + return true; + } + if (that == null) { + return false; + } + if (getClass() != that.getClass()) { + return false; + } + TGeoserverinfo other = (TGeoserverinfo) that; + return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId())) + && (this.getGeoserverworkspaces() == null ? other.getGeoserverworkspaces() == null : this.getGeoserverworkspaces().equals(other.getGeoserverworkspaces())) + && (this.getGeoserverlayers() == null ? other.getGeoserverlayers() == null : this.getGeoserverlayers().equals(other.getGeoserverlayers())) + && (this.getGeoserverstyles() == null ? other.getGeoserverstyles() == null : this.getGeoserverstyles().equals(other.getGeoserverstyles())) + && (this.getSrs() == null ? other.getSrs() == null : this.getSrs().equals(other.getSrs())) + && (this.getBbox() == null ? other.getBbox() == null : this.getBbox().equals(other.getBbox())) + && (this.getLatlonbbox() == null ? other.getLatlonbbox() == null : this.getLatlonbbox().equals(other.getLatlonbbox())) + && (this.getUrl() == null ? other.getUrl() == null : this.getUrl().equals(other.getUrl())) + && (this.getCreatedate() == null ? other.getCreatedate() == null : this.getCreatedate().equals(other.getCreatedate())); + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((getId() == null) ? 0 : getId().hashCode()); + result = prime * result + ((getGeoserverworkspaces() == null) ? 0 : getGeoserverworkspaces().hashCode()); + result = prime * result + ((getGeoserverlayers() == null) ? 0 : getGeoserverlayers().hashCode()); + result = prime * result + ((getGeoserverstyles() == null) ? 0 : getGeoserverstyles().hashCode()); + result = prime * result + ((getSrs() == null) ? 0 : getSrs().hashCode()); + result = prime * result + ((getBbox() == null) ? 0 : getBbox().hashCode()); + result = prime * result + ((getLatlonbbox() == null) ? 0 : getLatlonbbox().hashCode()); + result = prime * result + ((getUrl() == null) ? 0 : getUrl().hashCode()); + result = prime * result + ((getCreatedate() == null) ? 0 : getCreatedate().hashCode()); + return result; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append(getClass().getSimpleName()); + sb.append(" ["); + sb.append("Hash = ").append(hashCode()); + sb.append(", id=").append(id); + sb.append(", geoserverworkspaces=").append(geoserverworkspaces); + sb.append(", geoserverlayers=").append(geoserverlayers); + sb.append(", geoserverstyles=").append(geoserverstyles); + sb.append(", srs=").append(srs); + sb.append(", bbox=").append(bbox); + sb.append(", latlonbbox=").append(latlonbbox); + sb.append(", url=").append(url); + sb.append(", createdate=").append(createdate); + sb.append(", serialVersionUID=").append(serialVersionUID); + sb.append("]"); + return sb.toString(); + } +} \ No newline at end of file diff --git a/src/main/java/com/cuit/solarenergy/mapper/TGeoserverinfoMapper.java b/src/main/java/com/cuit/solarenergy/mapper/TGeoserverinfoMapper.java new file mode 100644 index 0000000..b977266 --- /dev/null +++ b/src/main/java/com/cuit/solarenergy/mapper/TGeoserverinfoMapper.java @@ -0,0 +1,28 @@ +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 java.util.List; + +/** +* @author Administrator +* @description 针对表【t_geoserverinfo】的数据库操作Mapper +* @createDate 2024-11-27 09:34:41 +* @Entity com.cuit.solarenergy.entity.TGeoserverinfo +*/ +@Mapper +public interface TGeoserverinfoMapper extends BaseMapper { + + /** + * 根据区域查询信息 + * @param region + * @return + */ + List getRefionInfo(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 af8b83d..258fd50 100644 --- a/src/main/java/com/cuit/solarenergy/service/DataImportService.java +++ b/src/main/java/com/cuit/solarenergy/service/DataImportService.java @@ -1,6 +1,8 @@ package com.cuit.solarenergy.service; +import com.cuit.solarenergy.entity.MonitorRet; +import com.cuit.solarenergy.entity.TGeoserverinfo; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; @@ -63,7 +65,49 @@ public interface DataImportService { /** * 获取区域信息 + * + * @return + */ + List getRefionInfo(String region); + + /** + * 根据区域查询tif文件 + * @param region + * @return + */ + List getTifByRegion(String region); + + /** + * 获取图层信息 * @return */ - List getRefionInfo(); + List getLayer(); + + /** + * 根据图层查询tif文件 + * @param layer + * @return + */ + List getTifByLayer(String layer); + + /** + * 获取要素信息 + * @return + */ + List getElementInfo(); + + /** + * 根据要素详情查询具体值 + * @param element + * @return + */ + List getValueByElement(String element); + + /** + * 监测排序 + * + * @return + */ + List getMonitorInfo(); + } diff --git a/src/main/java/com/cuit/solarenergy/service/TGeoserverinfoService.java b/src/main/java/com/cuit/solarenergy/service/TGeoserverinfoService.java new file mode 100644 index 0000000..8ee3e2a --- /dev/null +++ b/src/main/java/com/cuit/solarenergy/service/TGeoserverinfoService.java @@ -0,0 +1,13 @@ +package com.cuit.solarenergy.service; + +import com.cuit.solarenergy.entity.TGeoserverinfo; +import com.baomidou.mybatisplus.extension.service.IService; + +/** +* @author Administrator +* @description 针对表【t_geoserverinfo】的数据库操作Service +* @createDate 2024-11-27 09:34:41 +*/ +public interface TGeoserverinfoService extends IService { + +} 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 14d0886..cf430df 100644 --- a/src/main/java/com/cuit/solarenergy/service/impl/DataImportServiceImpl.java +++ b/src/main/java/com/cuit/solarenergy/service/impl/DataImportServiceImpl.java @@ -6,9 +6,12 @@ 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.cuit.solarenergy.exception.ParamsException; +import com.cuit.solarenergy.mapper.TGeoserverinfoMapper; import com.cuit.solarenergy.mapper.TSamplingDataDetailsMapper; import com.cuit.solarenergy.mapper.TSiteBaseInfoMapper; import com.cuit.solarenergy.model.poi.listener.ExcelUtil; @@ -41,6 +44,9 @@ import java.util.*; @Slf4j public class DataImportServiceImpl implements DataImportService { + @Autowired + private TGeoserverinfoMapper tGeoserverinfoMapper; + @Autowired private TSiteBaseInfoMapper tSiteBaseInfoMapper; @@ -50,6 +56,9 @@ public class DataImportServiceImpl implements DataImportService { @Autowired private TifDataDealService tifDataDealService; + @Autowired + private GeoServerPubServiceImpl geoServerPubService; + @Override public List upLoadProjectLedgerBySingleFile(MultipartFile file) throws IOException { return null; @@ -362,21 +371,176 @@ public class DataImportServiceImpl implements DataImportService { } @Override - public List getRefionInfo() { + public List getRefionInfo(String region) { try { - List regionInfo = new ArrayList<>(); - regionInfo.add("南充"); - regionInfo.add("巴中"); - regionInfo.add("广元"); - regionInfo.add("达州"); - regionInfo.add("广安"); - return regionInfo; - }catch (ParamsException e){ - return null; + List regionInfo = tGeoserverinfoMapper.getRefionInfo(region); + if (regionInfo != null) { + for (TGeoserverinfo info : regionInfo) { + info.setUrl(geoServerPubService.getMapBox3857RasterWmsUrl(info.getId())); + } + } + return regionInfo; + } catch (ParamsException e) { + // 这里可以记录日志或者处理异常 + throw new RuntimeException("Failed to get region info", e); } } + @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; + } + return tifUrls; + } + + @Override + public List getLayer() { + try{ + List layer = new ArrayList<>(); + layer.add("城市三维模型"); + layer.add("居民点"); + return layer; + }catch (ParamsException e){ + return null; + } + } + + @Override + public List getTifByLayer(String layer) { + List tifUrls; + try { + tifUrls = new ArrayList<>(); + switch (layer) { + case "城市三维模型": + tifUrls.add("http://111.42.18.66:8089/api/c3dserver/"); + break; + case "居民点": + tifUrls.add("http://111.42.18.66:8089/api/c3dserver/"); + break; + default: + // 如果输入的城市名称不在已知列表中,可以返回一个空列表或者null + tifUrls = null; + break; + } + } catch (ParamsException e) { + return null; + } + return tifUrls; + } + + @Override + public List getElementInfo() { + try { + List elementInfo = new ArrayList<>(); + elementInfo.add("辐射最大值"); + elementInfo.add("辐射最小值"); + elementInfo.add("紫外线最大值"); + elementInfo.add("紫外线最小值"); + elementInfo.add("日辐射量"); + return elementInfo; + }catch (ParamsException e){ + return null; + } + } + + @Override + public List getValueByElement(String element) { + List retValue; + try { + retValue = new ArrayList<>(); + switch (element) { + case "辐射最大值": + retValue.add(10); + break; + case "辐射最小值": + retValue.add(1); + break; + case "紫外线最大值": + retValue.add(20); + break; + case "紫外线最小值": + retValue.add(2); + break; + case "日辐射量": + retValue.add(5); + break; + default: + retValue = null; + break; + } + } catch (ParamsException e) { + return null; + } + return retValue; + } + + @Override + public List getMonitorInfo() { + List monitorInfoList = new ArrayList<>(); + try { + Map monitorMap = new HashMap<>(); + monitorMap.put("监测点1", "50"); + monitorMap.put("监测点2", "45"); + monitorMap.put("监测点3", "40"); + monitorMap.put("监测点4", "35"); + monitorMap.put("监测点5", "30"); + monitorMap.put("监测点6", "25"); + monitorMap.put("监测点7", "20"); + monitorMap.put("监测点8", "15"); + monitorMap.put("监测点9", "10"); + monitorMap.put("监测点10", "5"); + + monitorInfoList.add(new MonitorRet("监测点1", 104.06, 30.67,"50")); // 成都 + monitorInfoList.add(new MonitorRet("监测点2", 104.76, 31.46,"45")); // 绵阳 + monitorInfoList.add(new MonitorRet("监测点3", 105.06, 30.87,"40")); // 德阳 + monitorInfoList.add(new MonitorRet("监测点4", 105.36, 30.57,"35")); // 广元 + monitorInfoList.add(new MonitorRet("监测点5", 106.06, 29.37,"30")); // 遂宁 + monitorInfoList.add(new MonitorRet("监测点6", 106.76, 29.07,"25")); // 内江 + monitorInfoList.add(new MonitorRet("监测点7", 107.06, 28.77,"20")); // 乐山 + monitorInfoList.add(new MonitorRet("监测点8", 107.36, 28.47,"15")); // 眉山 + monitorInfoList.add(new MonitorRet("监测点9", 107.66, 28.17,"10")); // 宜宾 + monitorInfoList.add(new MonitorRet("监测点10", 107.96, 27.87,"5")); // 泸州 + + // 使用Collections.sort和自定义的Comparator进行排序 + Collections.sort(monitorInfoList, new Comparator() { + @Override + public int compare(MonitorRet o1, MonitorRet o2) { + // 提取值并转换为整数 + int value1 = Integer.parseInt(o1.getMonitorValue()); + int value2 = Integer.parseInt(o2.getMonitorValue()); + // 降序排序 + return Integer.compare(value2, value1); + } + }); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + return monitorInfoList; + } + + /** * 读取Excel文件 * diff --git a/src/main/java/com/cuit/solarenergy/service/impl/TGeoserverinfoServiceImpl.java b/src/main/java/com/cuit/solarenergy/service/impl/TGeoserverinfoServiceImpl.java new file mode 100644 index 0000000..4ad8dd6 --- /dev/null +++ b/src/main/java/com/cuit/solarenergy/service/impl/TGeoserverinfoServiceImpl.java @@ -0,0 +1,22 @@ +package com.cuit.solarenergy.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.cuit.solarenergy.entity.TGeoserverinfo; +import com.cuit.solarenergy.service.TGeoserverinfoService; +import com.cuit.solarenergy.mapper.TGeoserverinfoMapper; +import org.springframework.stereotype.Service; + +/** +* @author Administrator +* @description 针对表【t_geoserverinfo】的数据库操作Service实现 +* @createDate 2024-11-27 09:34:41 +*/ +@Service +public class TGeoserverinfoServiceImpl extends ServiceImpl + implements TGeoserverinfoService{ + +} + + + + diff --git a/src/main/resources/mapper/TGeoserverinfoMapper.xml b/src/main/resources/mapper/TGeoserverinfoMapper.xml new file mode 100644 index 0000000..3524721 --- /dev/null +++ b/src/main/resources/mapper/TGeoserverinfoMapper.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + ID,GeoServerWorkspaces,GeoServerLayers, + GeoServerStyles,Srs,bbox, + latlonbbox,url,createdate + + +