| | |
| | | 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.PathHelper; |
| | | 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; |
| | |
| | | @Value("${shujian.ak}") |
| | | String ak; |
| | | |
| | | @Value("${shujian.url}") |
| | | String sjUrl; |
| | | @Value("${shujian.url1}") |
| | | String sjUrl1; |
| | | |
| | | @Resource |
| | | PathHelper pathHelper; |
| | | @Value("${shujian.url5}") |
| | | String sjUrl5; |
| | | |
| | | @Value("${shujian.path}") |
| | | String sjPath; |
| | | |
| | | @Value("${shujian.domName}") |
| | | String domName; |
| | | |
| | | @Value("${shujian.demName}") |
| | | String demName; |
| | | |
| | | @Resource |
| | | ResService resService; |
| | |
| | | @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 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(COLOR_TABLE, 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 pub) { |
| | | CreateLayerEntity layerEntity = createLayerEntity(pub); |
| | | Integer layerId = postLayerEntity(layerEntity); |
| | | if (null == layerId) { |
| | | LayerResultEntity.Result layerResult = postLayerEntity(layerEntity); |
| | | if (null == layerResult) { |
| | | return 0; |
| | | } |
| | | |
| | | CreateServiceEntity serviceEntity = createServiceEntity(pub, layerId); |
| | | CreateServiceEntity serviceEntity = createServiceEntity(pub, layerResult.getLayer_id()); |
| | | Integer serviceId = postServiceEntity(serviceEntity); |
| | | if (null == serviceId) { |
| | | return 0; |
| | | } |
| | | |
| | | PublishEntity publishEntity = createPublishEntity(pub, layerId, serviceId); |
| | | PublishEntity publishEntity = createPublishEntity(pub, layerResult.getLayer_id(), serviceId); |
| | | int rows = publishService.insert(publishEntity); |
| | | if (0 == rows) { |
| | | return 0; |
| | |
| | | ResEntity resEntity = createResEntity(publishEntity); |
| | | resService.insert(resEntity); |
| | | |
| | | return insertMetaPub(pub, publishEntity.getId()); |
| | | insertMetaPub(pub, publishEntity.getId()); |
| | | // layerService.insert(createLayerEntity(resEntity, StaticData.I3)) |
| | | |
| | | return layerResult.getMission_id(); |
| | | } |
| | | |
| | | /** |
| | |
| | | entity.setCreate_service(0); |
| | | |
| | | CreateLayerEntity.Layer layer = entity.getLayer(); |
| | | layer.setName(pub.getName()); |
| | | layer.setName(pub.getName() + "_" + pub.getTime()); |
| | | layer.setProjection(getEpsg(pub)); |
| | | layer.setType(TYPES.indexOf(pub.getType())); |
| | | layer.setType(getPublishType(pub)); |
| | | layer.setEnhance_type(pub.getEnhanceType()); |
| | | layer.setEnhance_factor(pub.getEnhanceFactor()); |
| | | layer.setNodata(getNoData(pub, metas)); |
| | | layer.setConfig(getColorTableConfig(entity, pub)); |
| | | |
| | | CreateLayerEntity.ImagePathList imagePathList = entity.new ImagePathList(); |
| | | imagePathList.setPath(pathHelper.getConfig().getUploadPath()); |
| | | entity.getImage_path_list().add(imagePathList); |
| | | |
| | | List<CreateLayerEntity.ImageList> imageLists = entity.getImage_list(); |
| | | for (MetaEntity meta : metas) { |
| | | CreateLayerEntity.ImageList imageList = entity.new ImageList(); |
| | | imageList.setPath(meta.getPath()); |
| | | imageLists.add(imageList); |
| | | String[] strs = meta.getPath().split(StaticData.BACKSLASH); |
| | | |
| | | CreateLayerEntity.ImagePathList imagePathList = entity.new ImagePathList(); |
| | | imagePathList.setPath(sjPath + strs[0]); |
| | | imagePathList.getFilter().add(strs[1]); |
| | | |
| | | entity.getImage_path_list().add(imagePathList); |
| | | } |
| | | |
| | | return entity; |
| | | } |
| | | |
| | | /** |
| | | * 获取发布类型 |
| | | */ |
| | | private int getPublishType(PubEntity pub) { |
| | | if (null != pub.getColorTable() || null != pub.getGradientColorTable()) { |
| | | return StaticData.I2; |
| | | } |
| | | |
| | | return TYPES.indexOf(pub.getType()); |
| | | } |
| | | |
| | | /** |
| | |
| | | /** |
| | | * 获取 nodata |
| | | */ |
| | | private List<String> getNoData(PubEntity pub, List<MetaEntity> metas) { |
| | | private List<Integer> getNoData(PubEntity pub, List<MetaEntity> metas) { |
| | | int bands = 1; |
| | | for (MetaEntity meta : metas) { |
| | | if (StringHelper.isEmpty(meta.getBands())) { |
| | |
| | | } |
| | | } |
| | | |
| | | List<String> list = new ArrayList<>(); |
| | | List<Integer> list = new ArrayList<>(); |
| | | for (int i = 0; i < bands; i++) { |
| | | list.add(String.valueOf(pub.getNodata())); |
| | | list.add(pub.getNodata()); |
| | | } |
| | | |
| | | return list; |
| | | } |
| | | |
| | | /** |
| | | * 获取颜色表的配置 |
| | | */ |
| | | private CreateLayerEntity.Config getColorTableConfig(CreateLayerEntity entity, PubEntity pub) { |
| | | if (null == pub.getColorTable() && null == pub.getGradientColorTable()) { |
| | | return null; |
| | | } |
| | | |
| | | Integer type = null != pub.getColorTable() ? 0 : 1; |
| | | List<?> levels = null != pub.getColorTable() ? pub.getColorTable() : pub.getGradientColorTable(); |
| | | |
| | | return entity.new Config(pub.getColorTableId(), type, levels); |
| | | } |
| | | |
| | | /** |
| | | * 发送图层实体类 |
| | | */ |
| | | public Integer postLayerEntity(CreateLayerEntity layerEntity) { |
| | | 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", sjUrl, ak); |
| | | 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()) || null == rs.getResult().getLayer_id(); |
| | | boolean flag = null == rs || !StaticData.SUCCESS.equals(rs.getStatus()); |
| | | |
| | | return flag ? null : rs.getResult().getLayer_id(); |
| | | return flag ? null : rs.getResult(); |
| | | } |
| | | |
| | | /** |
| | |
| | | layerList.add(layerId); |
| | | |
| | | CreateServiceEntity.Services services = entity.getService(); |
| | | services.setName(pub.getName()); |
| | | services.setName(pub.getName() + "_" + pub.getTime()); |
| | | services.setAccess_name(pub.getUuid()); |
| | | services.setPub_status(1); |
| | | services.setRect_minx(-180.0); |
| | |
| | | */ |
| | | 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); |
| | | |
| | | ServiceResultEntity rs = postForRest(url, map, ServiceResultEntity.class); |
| | | boolean flag = null == rs || !StaticData.SUCCESS.equals(rs.getStatus()) || null == rs.getResult(); |
| | |
| | | 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, sjUrl, serviceId, StaticData.I0)); |
| | | 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.getDirid()); |
| | | entity.setCreateUser(pub.getCreateUser()); |
| | | entity.setPubid(pub.getId()); |
| | | |
| | | 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; |
| | | } |
| | |
| | | } |
| | | |
| | | /** |
| | | * 插入数简服务 |
| | | * 更新数简服务 |
| | | */ |
| | | public Integer updateSjService(PubEntity pub) { |
| | | PublishEntity entity = publishService.selectById(pub.getPubid()); |
| | |
| | | setPubEntity(pub, entity); |
| | | |
| | | CreateLayerEntity layerEntity = createLayerEntity(pub); |
| | | Integer layerId = postLayerEntity(layerEntity); |
| | | if (null == layerId) { |
| | | LayerResultEntity.Result layerResult = postLayerEntity(layerEntity); |
| | | if (null == layerResult) { |
| | | return 0; |
| | | } |
| | | |
| | | CreateServiceEntity serviceEntity = createServiceEntity(pub, layerId); |
| | | CreateServiceEntity serviceEntity = createServiceEntity(pub, layerResult.getLayer_id()); |
| | | Integer serviceId = postServiceEntity(serviceEntity); |
| | | if (null == serviceId) { |
| | | return 0; |
| | | } |
| | | |
| | | entity.setLayerid(layerId); |
| | | 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); |
| | | } |
| | |
| | | ResEntity resEntity = resService.selectByPubid(entity.getId()); |
| | | if (null == resEntity) { |
| | | resEntity = createResEntity(entity); |
| | | return resService.insert(resEntity); |
| | | resService.insert(resEntity); |
| | | } else { |
| | | resEntity.setUpdateUser(pub.getUserId()); |
| | | resEntity.setCnName(entity.getName()); |
| | | resEntity.setUrl(entity.getUrl()); |
| | | return resService.update(resEntity); |
| | | 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(); |
| | | } |
| | | |
| | | /** |
| | |
| | | if (null == pub.getEpsg() || 0 == pub.getEpsg()) { |
| | | pub.setEpsg(entity.getEpsg()); |
| | | } |
| | | |
| | | } |
| | | |
| | | /** |
| | |
| | | deleteService(entity.getServiceid()); |
| | | } |
| | | } |
| | | publishService.deletes(strs); |
| | | |
| | | return publishService.deletes(strs); |
| | | return list.size(); |
| | | } |
| | | |
| | | /** |
| | |
| | | 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 = deleteForRest(url, map); |
| | | |
| | |
| | | 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 = deleteForRest(url, map); |
| | | |
| | |
| | | * delete请求(Rest) |
| | | */ |
| | | 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, null, DeleteResultEntity.class, map); |
| | | ResponseEntity<DeleteResultEntity> rs = rest.exchange(url, HttpMethod.DELETE, entity, DeleteResultEntity.class); |
| | | |
| | | return rs.getBody(); |
| | | } |
| | |
| | | |
| | | 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(); |
| | | } |
| | | } |