package cn.com.goldenwater.dcproj.service.impl.homepage; import cn.com.goldenwater.dcproj.service.OneMapService; import cn.com.goldenwater.dcproj.utils.MapUtil; import cn.com.goldenwater.webService.onemap.WSWebServiceImplService; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.apache.commons.lang.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @author xuw */ @Service @Transactional public class OneMapServiceImpl implements OneMapService { @Override public List> getHypoByAd(String adCode, String keyWords, String pageIndex, String pageSize) { return getSlgcByAd("P202", adCode, keyWords, pageIndex, pageSize); } @Override public List> getGateByAd(String adCode, String keyWords, String pageIndex, String pageSize) { return getSlgcByAd("P203", adCode, keyWords, pageIndex, pageSize); } @Override public List> getPumpByAd(String adCode, String keyWords, String pageIndex, String pageSize) { return getSlgcByAd("P205", adCode, keyWords, pageIndex, pageSize); } @Override public List> getDikeByAd(String adCode, String keyWords, String pageIndex, String pageSize) { return getSlgcByAd("P207", adCode, keyWords, pageIndex, pageSize); } @Override public List> getHypoByCoord(double pointX, double pointY, double radius) { return getSlgcByCoord("P202", pointX, pointY, radius); } @Override public List> getGateByCoord(double pointX, double pointY, double radius) { return getSlgcByCoord("P203", pointX, pointY, radius); } @Override public List> getPumpByCoord(double pointX, double pointY, double radius) { return getSlgcByCoord("P205", pointX, pointY, radius); } @Override public List> getDikeByCoord(double pointX, double pointY, double radius) { return getSlgcByCoord("P207", pointX, pointY, radius); } @Override public List> getSlgcByAd(String type, String adCode, String keyWords, String pageIndex, String pageSize) { List> list; JSONObject json = new JSONObject(); List middleTypeList = new ArrayList<>(); if (StringUtils.isNotBlank(type)) { if (type.indexOf(";") > 0) { String[] types = type.split(";"); for (String t : types ) { middleTypeList.add(t); } } else { middleTypeList.add(type); } } json.put("middleTypeList", middleTypeList); json.put("userId", ""); Map queryStatisticData = new HashMap<>(4); if (!"".equals(adCode)) { String adLevel = "1"; if (adCode.endsWith("0000000000")) { adCode = adCode.substring(0, 2); adLevel = "1"; } else if (adCode.endsWith("00000000")) { adCode = adCode.substring(0, 4); adLevel = "2"; } else if (adCode.endsWith("000000")) { adCode = adCode.substring(0, 6); adLevel = "3"; } else if (adCode.endsWith("000")) { adCode = adCode.substring(0, 9); adLevel = "4"; } else { adLevel = "5"; } queryStatisticData.put("areaCode", adCode); queryStatisticData.put("areaLevel", adLevel); } queryStatisticData.put("queryType", "2"); queryStatisticData.put("areaType", "1"); json.put("queryStatisticData", queryStatisticData); if (StringUtils.isNotBlank(pageIndex)) { json.put("pageIndex", Integer.parseInt(pageIndex)); } else { json.put("pageIndex", 1); } if (StringUtils.isNotBlank(pageSize)) { json.put("pageSize", Integer.parseInt(pageSize)); } else { json.put("pageSize", 1000); } json.put("sortField", null); if (StringUtils.isNotBlank(keyWords)) { json.put("keyWords", keyWords); } else { json.put("keyWords", ""); } json.put("objectCode", ""); json.put("targetId", "lucene.Lucene0010SearchLogic"); json.put("keyId", ""); json.put("queryType", "1"); list = getSlgc(json.toString()); return list; } @Override public List> getSlgcByCoord(String type, double pointX, double pointY, double radius) { List> list; JSONObject json = new JSONObject(); List middleTypeList = new ArrayList<>(); if (StringUtils.isNotBlank(type)) { if (type.indexOf(";") > 0) { String[] types = type.split(";"); for (String t : types ) { middleTypeList.add(t); } } else { middleTypeList.add(type); } } json.put("middleTypeList", middleTypeList); json.put("userId", ""); MapUtil util = new MapUtil(); Map map = util.gcj02towgs84(pointX, pointY); double x = map.get("lon"); double y = map.get("lat"); double plus = 9.5 / 1000 * radius; String mapBounds = (x - plus) + "," + (y - plus) + "," + (x + plus) + "," + (y + plus); json.put("mapBounds", mapBounds); List> pointsArray = new ArrayList<>(); Map point = new HashMap<>(3); point.put("x", (x - plus)); point.put("y", (y - plus)); point.put("tag", null); pointsArray.add(point); point = new HashMap<>(3); point.put("x", (x - plus)); point.put("y", (y + plus)); point.put("tag", null); pointsArray.add(point); point = new HashMap<>(3); point.put("x", (x + plus)); point.put("y", (y - plus)); point.put("tag", null); pointsArray.add(point); point = new HashMap<>(3); point.put("x", (x + plus)); point.put("y", (y + plus)); point.put("tag", null); pointsArray.add(point); json.put("pointsArray", pointsArray); json.put("pageIndex", 1); json.put("pageSize", 1000); json.put("sortField", null); json.put("keyWords", ""); json.put("objectCode", ""); json.put("targetId", "lucene.Lucene0010SearchLogic"); json.put("keyId", ""); json.put("scale", "7"); json.put("spatialQueryType", "0"); json.put("queryShowItemsOnly", "0"); json.put("queryType", "2"); list = getSlgc(json.toString()); return list; } public List> getSlgc(String jsonStr) { List> list = new ArrayList<>(); long l = System.currentTimeMillis(); System.out.println("请求串:" + jsonStr); WSWebServiceImplService ws = new WSWebServiceImplService(); String result = ws.getWSWebServiceImplPort().execute(jsonStr); System.out.println("返回值:" + result); long l2 = System.currentTimeMillis(); System.out.println("请求时间:" + (l2 - l) / 1000.0 + "s"); JSONObject json = JSONObject.fromObject(result); if (json.get("resultDetailList") != null) { JSONArray array = json.getJSONArray("resultDetailList"); for (int i = 0; i < array.size(); i++) { JSONObject obj = array.getJSONObject(i); String CENTER_X = obj.containsKey("CENTER_X") ? obj.getString("CENTER_X") : ""; String CENTER_Y = obj.containsKey("CENTER_Y") ? obj.getString("CENTER_Y") : ""; String MIDDLE_TYPE = obj.containsKey("MIDDLE_TYPE") ? obj.getString("MIDDLE_TYPE") : ""; String OBJ_ADDRESS = obj.containsKey("OBJ_ADDRESS") ? obj.getString("OBJ_ADDRESS") : ""; String OBJ_CODE = obj.containsKey("OBJ_CODE") ? obj.getString("OBJ_CODE") : ""; String OBJ_NAME = obj.containsKey("OBJ_NAME") ? obj.getString("OBJ_NAME") : ""; String RESULT_INDEX = obj.containsKey("RESULT_INDEX") ? obj.getString("RESULT_INDEX") : ""; String SUB_TYPE = obj.containsKey("SUB_TYPE") ? obj.getString("SUB_TYPE") : ""; String SUB_TYPE_NAME = obj.containsKey("SUB_TYPE_NAME") ? obj.getString("SUB_TYPE_NAME") : ""; Map map = new HashMap<>(); map.put("objCode", OBJ_CODE); map.put("objName", OBJ_NAME); map.put("subType", SUB_TYPE); map.put("subTypeName", SUB_TYPE_NAME); map.put("objAddress", OBJ_ADDRESS); map.put("middleType", MIDDLE_TYPE); map.put("resultIndex", RESULT_INDEX); MapUtil util = new MapUtil(); if (!"".equals(CENTER_X) && !"".equals(CENTER_Y)) { double x = Double.parseDouble(CENTER_X); double y = Double.parseDouble(CENTER_Y); Map xyMap = util.wgs84togcj02(x, y); map.put("centerX", xyMap.get("lon")); map.put("centerY", xyMap.get("lat")); list.add(map); } } } long l3 = System.currentTimeMillis(); System.out.println("数据处理时间:" + (l3 - l2) / 1000.0 + "s"); return list; } @Override public List> getSlgcByCode(String type, String objCode) { List> list; JSONObject json = new JSONObject(); List middleTypeList = new ArrayList<>(); if (StringUtils.isNotBlank(type)) { middleTypeList.add(type); } json.put("middleTypeList", middleTypeList); json.put("fitchResultType", null); json.put("queryShowItemsOnly", null); json.put("keyWords", null); json.put("sumConditions", null); json.put("queryAreaData", null); json.put("sessionId", "a9c4bdbf-7cc8-4fe1-a444-7880d5e1ecca"); json.put("queryType", null); json.put("scale", null); json.put("lucenelevel", null); json.put("userId", ""); json.put("objectCodeList", null); json.put("targetId", "lucene.Lucene0010SurveySearchLogic"); json.put("spatialQueryType", null); json.put("keyId", "demoMapPanMapClearMapAreaMapDistanceMapQueryresourceLayerControlDocumentQuerySystemhelpDocumentBaseDataQueryMapAssistControlMapSearchServiceCatalogMapLegendMapFullExtentMapFullScreenguideHelpDocumetnThemeAnalysisDissertation"); json.put("sortField", null); json.put("spatialId", null); json.put("isAsc", null); json.put("pageIndex", 0); json.put("objectCode", objCode); json.put("fetchStatistic", null); json.put("pageSize", 30); json.put("mapBounds", null); json.put("mapBoundsList", null); json.put("queryStatisticData", null); json.put("pointsArray", null); json.put("conditonList", null); list = getSlgcDetail(json.toString()); return list; } public List> getSlgcDetail(String jsonStr) { List> list = new ArrayList<>(); long l = System.currentTimeMillis(); System.out.println("请求串:" + jsonStr); WSWebServiceImplService ws = new WSWebServiceImplService(); String result = ws.getWSWebServiceImplPort().execute(jsonStr); System.out.println("返回值:" + result); long l2 = System.currentTimeMillis(); System.out.println("请求时间:" + (l2 - l) / 1000.0 + "s"); JSONObject json = JSONObject.fromObject(result); if (json.get("surveyData") != null) { JSONArray surveyData = json.getJSONArray("surveyData"); if (surveyData.size() > 0) { JSONObject survey = surveyData.getJSONObject(0); if (survey.get("resultInfoDetailList") != null) { JSONArray array = survey.getJSONArray("resultInfoDetailList"); list = array; } } } long l3 = System.currentTimeMillis(); System.out.println("数据处理时间:" + (l3 - l2) / 1000.0 + "s"); return list; } }