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;
|
}
|
}
|
}
|