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 |  673 +++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 623 insertions(+), 50 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 f05fe4c..7e99ab0 100644
--- a/src/main/java/com/moon/server/service/data/ShuJianService.java
+++ b/src/main/java/com/moon/server/service/data/ShuJianService.java
@@ -1,20 +1,33 @@
 package com.moon.server.service.data;
 
+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.CreateLayerEntity;
-import com.moon.server.entity.shujian.CreateServiceEntity;
-import com.moon.server.entity.shujian.DeleteEntity;
+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.*;
 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.util.List;
+import java.lang.reflect.Field;
+import java.util.*;
 
 /**
  * 鏁扮畝.鏈嶅姟
@@ -22,113 +35,673 @@
  */
 @Service
 public class ShuJianService {
+    @Value("${shujian.ak}")
+    String ak;
+
+    @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);
 
-    @Value("${shujian.ak}")
-    private String ak;
+    public final static List<String> TYPES = new ArrayList<>(Arrays.asList("DOM", "DEM"));
 
-    @Value("${shujian.url}")
-    private String sjUrl;
+    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 selectColorTables(Integer pageSize, Integer pageIndex, HttpServletRequest req, HttpServletResponse res) {
+    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 createShuJianLayer() {
-        CreateLayerEntity entity = new CreateLayerEntity(1, 3);
-        entity.setCreate_service(0);
+    public void selectSjLayers(Integer port, HttpServletRequest req, HttpServletResponse res) {
+        try {
+            String url = String.format(API_LAYER, null == port || 50001 == port ? sjUrl1 : sjUrl5, ak);
 
-        CreateLayerEntity.Layer layer = entity.getLayer();
-        layer.setName("");
-        layer.setProjection("ESRI:" + StaticData.I104903);
-        layer.setType(0);
-        layer.setEnhance_type(0);
-
-        String[] noData = new String[3];
-        noData[0] = "0";
-        noData[1] = "0";
-        noData[2] = "0";
-        layer.setNodata(noData);
-
-        CreateLayerEntity.ImagePathList imagePathList = entity.getImage_path_list().get(0);
-        imagePathList.setPath("");
-
-        List<CreateLayerEntity.ImageList> imageLists = entity.getImage_list();
-        CreateLayerEntity.ImageList imageList = imageLists.get(0);
-        imageList.setPath("");
+            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 createShuJianService() {
+    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);
+        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;
+        }
+
+        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);
+
+        insertMetaPub(pub, publishEntity.getId());
+        // layerService.insert(createLayerEntity(resEntity, StaticData.I3))
+
+        return layerResult.getMission_id();
+    }
+
+    /**
+     * 鍒涘缓鍥惧眰瀹炰綋绫�
+     */
+    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(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));
+
+        for (MetaEntity meta : metas) {
+            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());
+    }
+
+    /**
+     * 鑾峰彇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;
+        }
+
+        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 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 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;
     }
 
     /**
-     * 鍒犻櫎鏁扮畝鏈嶅姟
+     * 鍙戦�佸浘灞傚疄浣撶被
      */
-    public void deleteServe(PublishEntity entity) {
+    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", sjUrl5, ak);
+
+        ServiceResultEntity rs = postForRest(url, map, ServiceResultEntity.class);
+        boolean flag = null == rs || !StaticData.SUCCESS.equals(rs.getStatus()) || null == rs.getResult();
+
+        return flag ? null : rs.getResult();
+    }
+
+    /**
+     * 鍒涘缓鍙戝竷瀹炰綋绫�
+     */
+    public PublishEntity createPublishEntity(PubEntity pub, Integer layerId, Integer serviceId) {
+        PublishEntity entity = new PublishEntity();
+        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.setEpsg(pub.getEpsg());
+        entity.setCreateUser(pub.getUserId());
+        entity.setCtType(getColorTableType(pub));
+        entity.setCtJson(getColorTableJson(pub));
+        entity.setCreateUser(pub.getUserId());
+        entity.setGeom("null");
+
+        return entity;
+    }
+
+    /**
+     * 鍒涘缓璧勬簮瀹炰綋绫�
+     */
+    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 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();
     }
 
     /**
-     * 鍒犻櫎鏁扮畝鍥惧眰
+     * 璁剧疆鍙戝竷瀹炰綋绫�
      */
-    public void deleteLayer(Integer id) {
-        try {
-            DeleteEntity entity = new DeleteEntity();
-            entity.getId_list().add(id);
+    private void setPubEntity(PubEntity pub, PublishEntity entity) {
+        List<MetaEntity> metas = publishService.selectMetasByPubid(pub.getPubid());
 
-            //..
-        } catch (Exception ex) {
-            log.error(ex.getMessage(), ex);
+        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());
         }
     }
 
     /**
-     * 鍒犻櫎鏁扮畝鍥惧眰
+     * 鍒犻櫎鏁扮畝鏈嶅姟
      */
-    public void deleteService(Integer id) {
+    public Integer deletesSjServices(List<Integer> ids) {
+        String strs = StringHelper.join(ids, ",");
+        List<PublishEntity> list = publishService.selectByIds(strs);
+        if (null == list || list.isEmpty()) {
+            return 0;
+        }
+
+        for (PublishEntity entity : list) {
+            if (null != entity.getLayerid()) {
+                deleteLayer(entity.getLayerid());
+            }
+            if (null != entity.getServiceid()) {
+                deleteService(entity.getServiceid());
+            }
+        }
+        publishService.deletes(strs);
+
+        return list.size();
+    }
+
+    /**
+     * 鍒犻櫎鍥惧眰
+     */
+    public boolean deleteLayer(Integer id) {
         try {
             DeleteEntity entity = new DeleteEntity();
             entity.getId_list().add(id);
 
-            //..
+            Map<String, Object> map = getMapData(entity);
+            String url = String.format("%s/sj_raster/v6/api/layer?%s", sjUrl5, ak);
+
+            DeleteResultEntity rs = deleteForRest(url, map);
+
+            return null != rs && StaticData.SUCCESS.equals(rs.getStatus());
         } catch (Exception ex) {
             log.error(ex.getMessage(), ex);
+            return false;
         }
     }
+
+    /**
+     * 鍒犻櫎鏈嶅姟
+     */
+    public boolean deleteService(Integer id) {
+        try {
+            DeleteEntity entity = new DeleteEntity();
+            entity.getId_list().add(id);
+
+            Map<String, Object> map = getMapData(entity);
+            String url = String.format("%s/sj_raster/v6/api/service?%s", sjUrl5, ak);
+
+            DeleteResultEntity rs = deleteForRest(url, map);
+
+            return null != rs && StaticData.SUCCESS.equals(rs.getStatus());
+        } catch (Exception ex) {
+            log.error(ex.getMessage(), ex);
+            return false;
+        }
+    }
+
+    /**
+     * post璇锋眰锛圧est锛�
+     */
+    public <T> T postForRest(String url, Map<String, Object> map, Class<T> clazz) {
+        RestTemplate rest = RestHelper.getRestTemplate();
+
+        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();
+    }
+
+    /**
+     * 鑾峰彇Map鏁版嵁
+     */
+    public <T> Map<String, Object> getMapData(T t) {
+        Map<String, Object> map = new HashMap<>(1);
+
+        Field[] fields = t.getClass().getDeclaredFields();
+        for (Field field : fields) {
+            try {
+                if ("serialVersionUID".equals(field.getName())) {
+                    continue;
+                }
+
+                field.setAccessible(true);
+                Object obj = field.get(t);
+
+                map.put(field.getName(), obj);
+            } catch (Exception ex) {
+                //
+            }
+        }
+
+        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