From 796b44ea813a1133beae4f3a67f1c0263510c0c7 Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期日, 17 十一月 2024 09:45:07 +0800 Subject: [PATCH] 1 --- src/main/java/com/moon/server/service/data/ShuJianService.java | 557 ++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 489 insertions(+), 68 deletions(-) diff --git a/src/main/java/com/moon/server/service/data/ShuJianService.java b/src/main/java/com/moon/server/service/data/ShuJianService.java index 891c410..7e99ab0 100644 --- a/src/main/java/com/moon/server/service/data/ShuJianService.java +++ b/src/main/java/com/moon/server/service/data/ShuJianService.java @@ -3,26 +3,31 @@ import com.alibaba.fastjson.JSON; import com.moon.server.entity.all.StaticData; import com.moon.server.entity.ctrl.PubEntity; +import com.moon.server.entity.data.MetaEntity; +import com.moon.server.entity.data.MetaPubEntity; import com.moon.server.entity.data.PublishEntity; import com.moon.server.entity.shujian.*; +import com.moon.server.entity.sys.LayerEntity; +import com.moon.server.entity.sys.ResEntity; import com.moon.server.helper.HttpHelper; import com.moon.server.helper.RestHelper; import com.moon.server.helper.StringHelper; +import com.moon.server.helper.WebHelper; +import com.moon.server.service.sys.LayerService; +import com.moon.server.service.sys.ResService; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.annotation.Value; -import org.springframework.http.HttpMethod; -import org.springframework.http.ResponseEntity; +import org.springframework.http.*; import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.client.RestTemplate; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.lang.reflect.Field; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /** * 鏁扮畝.鏈嶅姟 @@ -30,118 +35,257 @@ */ @Service public class ShuJianService { - private final static Log log = LogFactory.getLog(ShuJianService.class); - @Value("${shujian.ak}") - private String ak; + String ak; - @Value("${shujian.url}") - private String sjUrl; + @Value("${shujian.url1}") + String sjUrl1; + + @Value("${shujian.url5}") + String sjUrl5; + + @Value("${shujian.path}") + String sjPath; + + @Value("${shujian.domName}") + String domName; + + @Value("${shujian.demName}") + String demName; + + @Resource + ResService resService; + + @Resource + MetaService metaService; @Resource PublishService publishService; + + @Resource + LayerService layerService; + + private final static Log log = LogFactory.getLog(ShuJianService.class); + + public final static List<String> TYPES = new ArrayList<>(Arrays.asList("DOM", "DEM")); + + private final static String DOM_FORMAT = "%s/sj_raster/v6/wmts/service/system/%d/%s"; + + private final static String DEM_FORMAT = "%s/sj_raster/v6/terrain_mesh/service/system/%d/%s"; + + private final static String API_LAYER = "%s/sj_raster/v6/api/layer?%s&sort=name%%20asc"; + + private final static String MISSION_STATUS = "%s/sj_raster/v6/api/mission/%d?op=get_status&%s"; + + private final static String COLOR_TABLE = "%s/sj_raster/v6/api/color_table?%s&page_count=%d&page_num=%d&key="; + + private final static String IMAGE_INFO = "%s/sj_raster/v6/api/image?%s&key=&page_num=1&page_count=1000&layer_id=%d"; /** * 鍒嗛〉鏌ヨ鏁扮畝鐨勯鑹茶〃 */ public void selectSjColorTables(Integer pageSize, Integer pageIndex, HttpServletRequest req, HttpServletResponse res) { try { - String url = String.format("%s/sj_raster/v6/api/color_table?%s&page_count=%d&page_num=%d&key=", sjUrl, ak, pageSize, pageIndex); + String url = String.format(COLOR_TABLE, sjUrl5, ak, pageSize, pageIndex); HttpHelper httpHelper = new HttpHelper(); httpHelper.service(req, res, null, url); } catch (Exception ex) { log.error(ex.getMessage(), ex); + WebHelper.writeJson2Page(res,ex.getMessage()); + } + } + + /** + * 鏌ヨ鏁扮畝鍥惧眰 + */ + public void selectSjLayers(Integer port, HttpServletRequest req, HttpServletResponse res) { + try { + String url = String.format(API_LAYER, null == port || 50001 == port ? sjUrl1 : sjUrl5, ak); + + HttpHelper httpHelper = new HttpHelper(); + httpHelper.service(req, res, null, url); + } catch (Exception ex) { + log.error(ex.getMessage(), ex); + WebHelper.writeJson2Page(res,ex.getMessage()); + } + } + + /** + * 鏌ヨ鏁扮畝浠诲姟鐘舵�� + */ + public void selectSjMissionStatus(Integer id, HttpServletRequest req, HttpServletResponse res) { + try { + String url = String.format(MISSION_STATUS, sjUrl5, id, ak); + + HttpHelper httpHelper = new HttpHelper(); + httpHelper.service(req, res, null, url); + } catch (Exception ex) { + log.error(ex.getMessage(), ex); + WebHelper.writeJson2Page(res,ex.getMessage()); } } /** * 鎻掑叆鏁扮畝鏈嶅姟 */ - public Integer insertSjService(PubEntity pubEntity, HttpServletRequest req, HttpServletResponse res) { - CreateLayerEntity layerEntity = createLayerEntity(pubEntity); - Integer layerId = postLayerEntity(layerEntity); - if (null == layerId) { + public Integer insertSjService(PubEntity pub) { + CreateLayerEntity layerEntity = createLayerEntity(pub); + LayerResultEntity.Result layerResult = postLayerEntity(layerEntity); + if (null == layerResult) { return 0; } - CreateServiceEntity serviceEntity = createServiceEntity(pubEntity); + CreateServiceEntity serviceEntity = createServiceEntity(pub, layerResult.getLayer_id()); Integer serviceId = postServiceEntity(serviceEntity); if (null == serviceId) { return 0; } - PublishEntity publishEntity = createPublishEntity(pubEntity, layerId, serviceId); + PublishEntity publishEntity = createPublishEntity(pub, layerResult.getLayer_id(), serviceId); + int rows = publishService.insert(publishEntity); + if (0 == rows) { + return 0; + } - return publishService.insert(publishEntity); + ResEntity resEntity = createResEntity(publishEntity); + resService.insert(resEntity); + + insertMetaPub(pub, publishEntity.getId()); + // layerService.insert(createLayerEntity(resEntity, StaticData.I3)) + + return layerResult.getMission_id(); } /** * 鍒涘缓鍥惧眰瀹炰綋绫� */ - public CreateLayerEntity createLayerEntity(PubEntity pubEntity) { - CreateLayerEntity entity = new CreateLayerEntity(1, 3); + public CreateLayerEntity createLayerEntity(PubEntity pub) { + String ids = StringHelper.join(pub.getIds(), ","); + List<MetaEntity> metas = metaService.selectByIds(ids); + + CreateLayerEntity entity = new CreateLayerEntity(); entity.setCreate_service(0); CreateLayerEntity.Layer layer = entity.getLayer(); - layer.setName(""); - layer.setProjection("ESRI:" + StaticData.I104903); - layer.setType(0); - layer.setEnhance_type(0); + layer.setName(pub.getName() + "_" + pub.getTime()); + layer.setProjection(getEpsg(pub)); + layer.setType(getPublishType(pub)); + layer.setEnhance_type(pub.getEnhanceType()); + layer.setEnhance_factor(pub.getEnhanceFactor()); + layer.setNodata(getNoData(pub, metas)); + layer.setConfig(getColorTableConfig(entity, pub)); - String[] noData = new String[3]; - noData[0] = "0"; - noData[1] = "0"; - noData[2] = "0"; - layer.setNodata(noData); + for (MetaEntity meta : metas) { + String[] strs = meta.getPath().split(StaticData.BACKSLASH); - CreateLayerEntity.ImagePathList imagePathList = entity.getImage_path_list().get(0); - imagePathList.setPath(""); + CreateLayerEntity.ImagePathList imagePathList = entity.new ImagePathList(); + imagePathList.setPath(sjPath + strs[0]); + imagePathList.getFilter().add(strs[1]); - List<CreateLayerEntity.ImageList> imageLists = entity.getImage_list(); - CreateLayerEntity.ImageList imageList = imageLists.get(0); - imageList.setPath(""); + entity.getImage_path_list().add(imagePathList); + } return entity; } /** - * 鍙戦�佸浘灞傚疄浣撶被 + * 鑾峰彇鍙戝竷绫诲瀷 */ - public Integer postLayerEntity(CreateLayerEntity layerEntity) { - Map<String, Object> map = getMapData(layerEntity); - String url = String.format("%s/sj_raster/sj_raster/v6/api/layer?%s", sjUrl, ak); + private int getPublishType(PubEntity pub) { + if (null != pub.getColorTable() || null != pub.getGradientColorTable()) { + return StaticData.I2; + } - String str = RestHelper.postForRest(url, map); - if (StringHelper.isEmpty(str)) { + return TYPES.indexOf(pub.getType()); + } + + /** + * 鑾峰彇EPSG缂栫爜 + */ + public String getEpsg(PubEntity pub) { + if (StaticData.I104903 == pub.getEpsg()) { + return "ESRI:" + pub.getEpsg(); + } + + return "EPSG:" + pub.getEpsg(); + } + + /** + * 鑾峰彇 nodata + */ + private List<Integer> getNoData(PubEntity pub, List<MetaEntity> metas) { + int bands = 1; + for (MetaEntity meta : metas) { + if (StringHelper.isEmpty(meta.getBands())) { + continue; + } + try { + int b = Integer.parseInt(meta.getBands()); + if (b > bands) { + bands = b; + } + } catch (Exception e) { + // + } + } + + List<Integer> list = new ArrayList<>(); + for (int i = 0; i < bands; i++) { + list.add(pub.getNodata()); + } + + return list; + } + + /** + * 鑾峰彇棰滆壊琛ㄧ殑閰嶇疆 + */ + private CreateLayerEntity.Config getColorTableConfig(CreateLayerEntity entity, PubEntity pub) { + if (null == pub.getColorTable() && null == pub.getGradientColorTable()) { return null; } - LayerResultEntity rs = JSON.parseObject(str, LayerResultEntity.class); - boolean flag = null == rs || !StaticData.SUCCESS.equals(rs.getStatus()) || null == rs.getResult().getLayer_id(); + Integer type = null != pub.getColorTable() ? 0 : 1; + List<?> levels = null != pub.getColorTable() ? pub.getColorTable() : pub.getGradientColorTable(); - return flag ? null : rs.getResult().getLayer_id(); + return entity.new Config(pub.getColorTableId(), type, levels); + } + + /** + * 鍙戦�佸浘灞傚疄浣撶被 + */ + public LayerResultEntity.Result postLayerEntity(CreateLayerEntity layerEntity) { + Map<String, Object> map = getMapData(layerEntity); + String url = String.format("%s/sj_raster/v6/api/layer?op=create_ex&%s", sjUrl5, ak); + + LayerResultEntity rs = postForRest(url, map, LayerResultEntity.class); + boolean flag = null == rs || !StaticData.SUCCESS.equals(rs.getStatus()); + + return flag ? null : rs.getResult(); } /** * 鍒涘缓鏈嶅姟瀹炰綋绫� */ - public CreateServiceEntity createServiceEntity(PubEntity pubEntity) { + public CreateServiceEntity createServiceEntity(PubEntity pub, Integer layerId) { CreateServiceEntity entity = new CreateServiceEntity(); List<Integer> layerList = entity.getLayer_list(); + layerList.add(layerId); CreateServiceEntity.Services services = entity.getService(); - services.setName(""); - services.setAccess_name(StringHelper.getGuid()); + services.setName(pub.getName() + "_" + pub.getTime()); + services.setAccess_name(pub.getUuid()); services.setPub_status(1); services.setRect_minx(-180.0); services.setRect_miny(-90.0); services.setRect_maxx(180.0); services.setRect_maxy(90.0); - services.setProjection("ESRI:" + StaticData.I104903); + services.setProjection(getEpsg(pub)); services.setSat_id(-1); services.setSensor_id(-1); services.setImage_type(-1); + services.setConfig(null); return entity; } @@ -151,14 +295,9 @@ */ public Integer postServiceEntity(CreateServiceEntity serviceEntity) { Map<String, Object> map = getMapData(serviceEntity); - String url = String.format("%s/sj_raster/v6/api/service?op=create_ex&%s", sjUrl, ak); + String url = String.format("%s/sj_raster/v6/api/service?op=create_ex&%s", sjUrl5, ak); - String str = RestHelper.postForRest(url, map); - if (StringHelper.isEmpty(str)) { - return null; - } - - ServiceResultEntity rs = JSON.parseObject(str, ServiceResultEntity.class); + ServiceResultEntity rs = postForRest(url, map, ServiceResultEntity.class); boolean flag = null == rs || !StaticData.SUCCESS.equals(rs.getStatus()) || null == rs.getResult(); return flag ? null : rs.getResult(); @@ -169,23 +308,214 @@ */ public PublishEntity createPublishEntity(PubEntity pub, Integer layerId, Integer serviceId) { PublishEntity entity = new PublishEntity(); - entity.setType(pub.getType()); + entity.setLayerid(layerId); + entity.setServiceid(serviceId); + entity.setEventid(pub.getUuid()); entity.setName(pub.getName()); + entity.setUrl(String.format(TYPES.get(0).equals(pub.getType()) ? DOM_FORMAT : DEM_FORMAT, sjUrl5, serviceId, StaticData.I0)); + entity.setPath(null); + entity.setType(pub.getType()); + entity.setStatus(3); + entity.setDirid(pub.getDircode()); + entity.setDepid(pub.getDepcode()); + entity.setEnhanceType(pub.getEnhanceType()); entity.setMin(pub.getMin()); entity.setMax(pub.getMax()); - entity.setBak((StaticData.I104903 == pub.getEpsgCode() ? "ESRI:" : "EPSG:") + pub.getEpsgCode()); + entity.setEpsg(pub.getEpsg()); entity.setCreateUser(pub.getUserId()); + entity.setCtType(getColorTableType(pub)); + entity.setCtJson(getColorTableJson(pub)); + entity.setCreateUser(pub.getUserId()); + entity.setGeom("null"); return entity; } /** - * 鎻掑叆鏁扮畝鏈嶅姟 + * 鍒涘缓璧勬簮瀹炰綋绫� */ - public Integer updateSjService(PubEntity pubEntity, HttpServletRequest req, HttpServletResponse res) { - // + private ResEntity createResEntity(PublishEntity pub) { + ResEntity entity = new ResEntity(); + entity.setCnName(pub.getName()); + // 鐘舵�侊細0-绂佺敤锛�1-鍚敤鍘熷鍦板潃锛�2-鍚敤浠g悊鍦板潃 + entity.setStatus(2); + // 鏈嶅姟绫诲埆锛�0-鍏朵粬锛�1-GisServer锛�2-GeoServer锛�3-鏁扮畝 + entity.setCategory(3); + // 鏈嶅姟绫诲瀷锛�0-URL锛�1-TMS锛�2-WMTS锛�3-WMS锛�4-WFS锛�5-Tileset + entity.setType(StaticData.DOM.equals(pub.getType()) ? 2 : 0); + // 鏁版嵁绫诲瀷锛�0-URL锛�1-DOM锛�2-DEM + entity.setData(StaticData.DOM.equals(pub.getType()) ? 1 : 2); + entity.setUrl(pub.getUrl()); + entity.setArgs(ak); + entity.setDescr("绯荤粺鑷姩鍒涘缓"); + entity.setDepid(pub.getDepid()); + entity.setDirid(pub.getDirid()); + entity.setCreateUser(pub.getCreateUser()); + entity.setPubid(pub.getId()); - return 1; + return entity; + } + + /** + * 鍒涘缓鍥惧眰 + */ + private LayerEntity createLayerEntity(ResEntity resEntity, Integer category) { + Integer pid = layerService.selectIdByName(StaticData.I1 == resEntity.getData() ? domName : demName); + Integer orderNum = layerService.selectMaxOrderNumByPid(pid); + LayerEntity layer = layerService.selectById(pid); + + LayerEntity entity = new LayerEntity(); + entity.setPid(pid); + entity.setCnName(resEntity.getCnName()); + entity.setEnName(resEntity.getEnName()); + entity.setUrl(resEntity.getProxy()); + // 鏄惁涓哄浘灞傦細0-鍥惧眰缁�,1-鍥惧眰 + entity.setIsLayer(1); + entity.setLevel(null == layer ? 1 : layer.getLevel() + 1); + entity.setOrderNum(orderNum); + // 鐘舵�侊細0-鍋滄锛�1-鍚敤 + entity.setStatus(1); + entity.setCreateUser(resEntity.getCreateUser()); + entity.setResid(resEntity.getId()); + // 绫诲埆锛�0-URL锛�1-TMS锛�2-WMTS锛�3-WMS锛�4-WFS锛�5-Tileset + entity.setType(StaticData.I1 == resEntity.getData() ? 2 : 0); + // 鏁版嵁绫诲瀷锛�0-URL锛�1-DOM锛�2-DEM + entity.setData(resEntity.getData()); + // 鏈嶅姟绫诲埆锛�0-鍏朵粬锛�1-GisServer锛�2-GeoServer锛�3-鏁扮畝 + entity.setCategory(category); + // 鏄�/鍚﹂粯璁ゆ樉绀� + entity.setIsShow(0); + + return entity; + } + + /** + * 鑾峰彇棰滆壊琛ㄧ被鍨� + */ + private String getColorTableType(PubEntity pub) { + if (null == pub.getColorTable() && null == pub.getGradientColorTable()) { + return null; + } + if (null != pub.getGradientColorTable()) { + return "娓愬彉棰滆壊琛�"; + } + + return "鏅�氶鑹茶〃"; + } + + /** + * 鑾峰彇棰滆壊琛ㄧ殑JSON瀛楃涓� + */ + public String getColorTableJson(PubEntity pub) { + if (null == pub.getColorTable() && null == pub.getGradientColorTable()) { + return null; + } + + if (null != pub.getGradientColorTable()) { + return JSON.toJSONString(pub.getGradientColorTable()); + } + + return JSON.toJSONString(pub.getColorTable()); + } + + /** + * 鎻掑叆鍏冩暟鎹彂甯冪被 + */ + private int insertMetaPub(PubEntity pub, Integer pubid) { + int count = 0; + for (Integer metaid : pub.getIds()) { + MetaPubEntity mp = new MetaPubEntity(); + mp.setMetaid(metaid); + mp.setPubid(pubid); + mp.setCreateUser(pub.getUserId()); + + count += publishService.insertMetaPub(mp); + } + + return count; + } + + /** + * 鏇存柊鏁扮畝鏈嶅姟 + */ + public Integer updateSjService(PubEntity pub) { + PublishEntity entity = publishService.selectById(pub.getPubid()); + if (null == entity) { + return 0; + } + if (null != entity.getLayerid()) { + deleteLayer(entity.getLayerid()); + } + if (null != entity.getServiceid()) { + deleteService(entity.getServiceid()); + } + setPubEntity(pub, entity); + + CreateLayerEntity layerEntity = createLayerEntity(pub); + LayerResultEntity.Result layerResult = postLayerEntity(layerEntity); + if (null == layerResult) { + return 0; + } + + CreateServiceEntity serviceEntity = createServiceEntity(pub, layerResult.getLayer_id()); + Integer serviceId = postServiceEntity(serviceEntity); + if (null == serviceId) { + return 0; + } + + entity.setLayerid(layerResult.getLayer_id()); + entity.setServiceid(serviceId); + entity.setEventid(pub.getUuid()); + entity.setUpdateUser(pub.getUserId()); + entity.setUrl(String.format(TYPES.get(0).equals(pub.getType()) ? DOM_FORMAT : DEM_FORMAT, sjUrl5, serviceId, StaticData.I0)); + if (StringHelper.isEmpty(entity.getGeom())) { + entity.setGeom(StaticData.NULL); + } + + int rows = publishService.update(entity); + if (0 == rows) { + return 0; + } + + ResEntity resEntity = resService.selectByPubid(entity.getId()); + if (null == resEntity) { + resEntity = createResEntity(entity); + resService.insert(resEntity); + } else { + resEntity.setUpdateUser(pub.getUserId()); + resEntity.setCnName(entity.getName()); + resEntity.setUrl(entity.getUrl()); + resService.update(resEntity); + } + + LayerEntity lyrEntity = layerService.selectByResId(resEntity.getId()); + if (null != lyrEntity) { + lyrEntity.setCnName(resEntity.getCnName()); + lyrEntity.setUpdateUser(pub.getUserId()); + layerService.update(lyrEntity); + } + + return layerResult.getMission_id(); + } + + /** + * 璁剧疆鍙戝竷瀹炰綋绫� + */ + private void setPubEntity(PubEntity pub, PublishEntity entity) { + List<MetaEntity> metas = publishService.selectMetasByPubid(pub.getPubid()); + + List<Integer> ids = new ArrayList<>(); + for (MetaEntity meta : metas) { + ids.add(meta.getId()); + } + pub.setIds(ids); + + if (StringHelper.isEmpty(pub.getName())) { + pub.setName(entity.getName()); + } + if (null == pub.getEpsg() || 0 == pub.getEpsg()) { + pub.setEpsg(entity.getEpsg()); + } } /** @@ -193,7 +523,6 @@ */ public Integer deletesSjServices(List<Integer> ids) { String strs = StringHelper.join(ids, ","); - List<PublishEntity> list = publishService.selectByIds(strs); if (null == list || list.isEmpty()) { return 0; @@ -207,8 +536,9 @@ deleteService(entity.getServiceid()); } } + publishService.deletes(strs); - return publishService.deletes(strs); + return list.size(); } /** @@ -220,9 +550,9 @@ entity.getId_list().add(id); Map<String, Object> map = getMapData(entity); - String url = String.format("%s/sj_raster/sj_raster/v6/api/layer?%s", sjUrl, ak); + String url = String.format("%s/sj_raster/v6/api/layer?%s", sjUrl5, ak); - DeleteResultEntity rs = deleteObject(url, map); + DeleteResultEntity rs = deleteForRest(url, map); return null != rs && StaticData.SUCCESS.equals(rs.getStatus()); } catch (Exception ex) { @@ -240,9 +570,9 @@ entity.getId_list().add(id); Map<String, Object> map = getMapData(entity); - String url = String.format("%s/sj_raster/sj_raster/v6/api/service?%s", sjUrl, ak); + String url = String.format("%s/sj_raster/v6/api/service?%s", sjUrl5, ak); - DeleteResultEntity rs = deleteObject(url, map); + DeleteResultEntity rs = deleteForRest(url, map); return null != rs && StaticData.SUCCESS.equals(rs.getStatus()); } catch (Exception ex) { @@ -251,10 +581,26 @@ } } - public DeleteResultEntity deleteObject(String url, Map<String, Object> map) { + /** + * post璇锋眰锛圧est锛� + */ + public <T> T postForRest(String url, Map<String, Object> map, Class<T> clazz) { RestTemplate rest = RestHelper.getRestTemplate(); - ResponseEntity<DeleteResultEntity> rs = rest.exchange(url, HttpMethod.DELETE, null, DeleteResultEntity.class, map); + return rest.postForObject(url, map, clazz); + } + + /** + * delete璇锋眰锛圧est锛� + */ + public DeleteResultEntity deleteForRest(String url, Map<String, Object> map) { + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + + HttpEntity<?> entity = new HttpEntity<>(map, headers); + + RestTemplate rest = RestHelper.getRestTemplate(); + ResponseEntity<DeleteResultEntity> rs = rest.exchange(url, HttpMethod.DELETE, entity, DeleteResultEntity.class); return rs.getBody(); } @@ -283,4 +629,79 @@ return map; } + + /** + * 鑾峰彇浠诲姟鐘舵�� + */ + public List<TaskResultEntity.Result> getTaskStatus(List<Integer> list) { + String url = String.format("%s/sj_raster/v6/api/mission?op=bulk_get_mission_status&%s", sjUrl5, ak); + Map<String, Object> map = new HashMap<>(1); + map.put("cmd_list", list); + + TaskResultEntity rs = postForRest(url, map, TaskResultEntity.class); + boolean flag = null == rs || !StaticData.SUCCESS.equals(rs.getStatus()); + + return flag ? null : rs.getResult(); + } + + /** + * 鏇存柊鏁扮畝鍥惧眰鐨勬媺浼告柟寮� + */ + public Integer updateSjLayerStretch(PubEntity entity) { + PublishEntity pub = publishService.selectByLayerId(entity.getLayerId()); + if (null == pub || null == pub.getLayerid()) { + return 0; + } + + ImageResultEntity ir = selectImageInfo(pub.getLayerid()); + if (null == ir || null == ir.getResult() || null == ir.getResult().getItem_list()) { + return 0; + } + + List<ImageResultEntity.Image> itemList = ir.getResult().getItem_list(); + for (ImageResultEntity.Image image : itemList) { + Integer imgId = updateImageLayerStretch(image.getData_id(), entity); + } + + pub.setUpdateUser(entity.getUserId()); + if (null == pub.getGeom()) { + pub.setGeom("null"); + } + + return publishService.update(pub); + } + + /** + * 鏍规嵁鍥惧眰ID鏌ヨ褰卞儚淇℃伅 + */ + public ImageResultEntity selectImageInfo(Integer layerId) { + try { + String url = String.format(IMAGE_INFO, sjUrl5, ak, layerId); + + RestTemplate rest = RestHelper.getRestTemplate(); + ResponseEntity<ImageResultEntity> resp = rest.getForEntity(url, ImageResultEntity.class); + + return resp.getBody(); + } catch (Exception ex) { + log.error(ex.getMessage(), ex); + return null; + } + } + + /** + * 鏇存柊褰卞儚鍥惧眰鐨勬媺浼告柟寮� + */ + private Integer updateImageLayerStretch(Integer imageLayerId, PubEntity entity) { + String url = String.format("%s/sj_raster/v6/api/image/%d?op=update&%s", sjUrl5, imageLayerId, ak); + + Map<String, Object> map = new HashMap<>(3); + map.put("tile_rgb", entity.getTile_rgb()); + map.put("enhance_type", entity.getEnhanceType()); + map.put("enhance_factor", entity.getEnhanceFactor()); + + ServiceResultEntity rs = postForRest(url, map, ServiceResultEntity.class); + boolean flag = null == rs || !StaticData.SUCCESS.equals(rs.getStatus()); + + return flag ? null : rs.getResult(); + } } -- Gitblit v1.9.3