package com.smartearth.poiexcel.service; import com.alibaba.fastjson.JSONObject; import com.smartearth.poiexcel.entity.DkEntity; import com.smartearth.poiexcel.utils.RestHelper; import com.smartearth.poiexcel.utils.StringHelper; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; /** * 地块服务类 * @author WWW * @date 2023-10-05 */ @Service @SuppressWarnings("ALL") public class DkService { @Value("${dk.host}") String host; private final static Log log = LogFactory.getLog(DkService.class); private final static String GET_INFO_URL = "%s/poisearch/guihuacon/getInfo?ydbm=%s"; private final static String GET_COORD_URL = "/geowinmap_xncs/ds?r=0.9158559377752831&serviceproviderid=map.vectorserviceprovider&serviceid=queryfeature&featcls=225范围分区规划.geojson&geom=true&requesttype=json"; /** * 根据编号更新 */ public boolean updateByBh(DkEntity dk) { try { String url = String.format(GET_INFO_URL, host, dk.getDikuaibianhao()); RestTemplate rest = RestHelper.getRestTemplate(); JSONObject obj = rest.getForObject(url, JSONObject.class); if (null == obj || !"200".equals(obj.get("code").toString()) || null == obj.getJSONObject("data")) { return false; } JSONObject data = obj.getJSONObject("data"); JSONObject cr = data.getJSONObject("churangxinxi"); JSONObject yd = data.getJSONObject("yongdishuju"); if (null == cr && null == yd) { return false; } if (null != cr) { dk.setYdbh(cr.getString("ydbh")); dk.setXmmc(cr.getString("xmmc")); dk.setYdlx(cr.getString("ydlx")); dk.setCyfx(cr.getString("cyfx")); dk.setYdmj(getDouble(cr, "ydmj")); dk.setXmdz(cr.getString("xmdz")); dk.setCrnx(getInteger(cr, "crnx")); dk.setCrnf(getInteger(cr, "crnf")); } if (null != yd) { dk.setYdbh(yd.getString("ydbh")); dk.setXmmc(yd.getString("xmmc")); dk.setYdlx(yd.getString("ydlx")); dk.setYdmj(getDouble(yd, "ydmj")); dk.setXmdz(yd.getString("xmdz")); dk.setRjl(getDouble(yd, "rjl")); dk.setYdlxmc(yd.getString("ydlxmc")); dk.setCyfx(yd.getString("cyfx")); dk.setJzxg(getDouble(yd, "jzxg")); } return true; } catch (Exception ex) { log.error(ex.getMessage(), ex); return false; } } private Integer getInteger(JSONObject obj, String key) { try { return obj.getInteger(key); } catch (Exception ex) { return null; } } private Double getDouble(JSONObject obj, String key) { try { return obj.getDouble(key); } catch (Exception ex) { return null; } } /** * 根据坐标更新 */ public boolean updateByCoord(DkEntity dk) { try { String url = host + GET_COORD_URL + "&lng=" + dk.getLng() + "&lat=" + dk.getLat(); RestTemplate rest = RestHelper.getRestTemplate(); String str = rest.getForObject(url, String.class); if (StringHelper.isEmpty(str)) { return false; } JSONObject obj = JSONObject.parseObject(str); if (null == obj) { return false; } dk.setArea(getDouble(obj, "area")); dk.setNo(obj.getString("NO")); dk.setJzgd(getDouble(obj, "建筑高度(")); dk.setPT2(obj.getString("PT2")); dk.setGhrjl(getDouble(obj, "规划容积率")); dk.setQymc(obj.getString("QYMC")); dk.setZt(getInteger(obj, "ZT")); dk.setYdxz(obj.getString("用地性质")); dk.setType(obj.getString("TYPE")); dk.setJzgh(getDouble(obj, "规划建筑规")); dk.setLtype(obj.getString("lType")); dk.setPoint_area(obj.getString("geometry")); return true; } catch (Exception ex) { log.error(ex.getMessage(), ex); return false; } } }