zhouyuexiang 1 year ago
parent
commit
68a6331321

+ 74 - 0
tile-common/src/main/java/cn/com/taiji/common/model/Result.java

@@ -0,0 +1,74 @@
+package cn.com.taiji.common.model;
+
+import cn.com.taiji.common.enums.ErrorCodeEnum;
+import lombok.Data;
+
+/**
+ * @author zzyx 2024/2/4
+ */
+@Data
+public class Result<T> {
+    private T data;
+    private String msg;
+    private Integer code;
+
+    public int getCode() {
+        return code;
+    }
+
+    public void setCode(int code) {
+        this.code = code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+
+    public T getData() {
+        return data;
+    }
+
+    public void setData(T data) {
+        this.data = data;
+    }
+
+    public static <T> Result<T> ok() {
+        return ok(null);
+    }
+
+    public static <T> Result<T> ok(T data) {
+        return init(data, ErrorCodeEnum.SUCCESS);
+    }
+
+    public static <T> Result<T> error() {
+        return init(null, ErrorCodeEnum.INTERNAL_SERVER_ERROR);
+    }
+
+    public static <T> Result<T> error(int code, String message) {
+        return initByCodeAndMessage(code, message);
+    }
+
+    public static <T> Result<T> error(ErrorCodeEnum codeEnum) {
+        return init(null, codeEnum);
+    }
+
+    private static <T> Result<T> init(T data, ErrorCodeEnum codeEnum) {
+        Result<T> result = new Result<>();
+        result.setData(data);
+        result.setMsg(codeEnum.getMessage());
+        result.setCode(codeEnum.getCode());
+        return result;
+    }
+
+    private static <T> Result<T> initByCodeAndMessage(int code, String message) {
+        Result<T> result = new Result<>();
+        result.setData(null);
+        result.setCode(code);
+        result.setMsg(message);
+        return result;
+    }
+}

+ 17 - 0
tile-service/src/main/java/cn/com/taiji/tile/handler/MyExceptionHandler.java

@@ -0,0 +1,17 @@
+package cn.com.taiji.tile.handler;
+
+import cn.com.taiji.common.model.Result;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.RestControllerAdvice;
+
+/**
+ * @author zzyx 2024/2/4
+ */
+@RestControllerAdvice
+public class MyExceptionHandler {
+
+    @ExceptionHandler(value = Exception.class)
+    public Result<?> handleException(Exception exception){
+        return Result.error(500,exception.getMessage());
+    }
+}

+ 1 - 1
tile-service/src/main/java/cn/com/taiji/tile/service/impl/TileServiceImpl.java

@@ -250,7 +250,7 @@ public class TileServiceImpl implements ITileService {
             if (result.pageResult != null && result.pageResult.getRecordCount() > 0) {
                 List<Map<String, Object>> cqlDataList = (List<Map<String, Object>>) result.pageResult.getDatas();
                 //3根据空间地理数据生成图层二进制数据
-                List<Map<String, Object>> maps = ShapeUtils.detectClick(requestParam.getBbox(),requestParam.getGeoType(), cqlDataList, layerGroupDsView.getBoxColumn(), result.layerStyleViewList, requestParam.getX(), requestParam.getY());
+                List<Map<String, Object>> maps = ShapeUtils.detectClick(requestParam.getGeoType(),requestParam.getBbox(), cqlDataList, layerGroupDsView.getBoxColumn(), result.layerStyleViewList, requestParam.getX(), requestParam.getY());
                 features.addAll(maps);
             }
         });

+ 26 - 56
tile-web/src/main/java/cn/com/taiji/web/controller/TileWebController.java

@@ -1,7 +1,6 @@
 package cn.com.taiji.web.controller;
 
 
-
 import cn.com.taiji.common.domain.Result;
 import cn.com.taiji.common.model.LayerGroupDsView;
 import cn.com.taiji.common.model.LayerStyleView;
@@ -48,75 +47,47 @@ public class TileWebController {
 
     @RequestMapping(value = {"/queryTile"}, method = {RequestMethod.GET, RequestMethod.POST})
     public void queryTile(HttpServletRequest request, HttpServletResponse response) {
-
-
         GeoRequestParam geoRequestParam = JSONObject.parseObject(JSONObject.toJSONString(getParameterMap(request)), GeoRequestParam.class);
-
         List<String> layerGroupList = new ArrayList<String>();
-
-        //图层组
-        String layers = geoRequestParam.getLayers();
-        if(layers !=null && !"".equals(layers)){
-
-            layerGroupList.add(layers);
+        if (StringUtils.isBlank(geoRequestParam.getLayers())) {
+            throw new RuntimeException("请选择图层");
         }
-        //图层
-        String typeName = geoRequestParam.getTypename();
-
-        if(typeName !=null && !"".equals(typeName)){
-
-            String[] typeNames = typeName.split(",");
-
-            layerGroupList.addAll(Arrays.asList(typeNames));
-
-        }
-
-        if(layerGroupList.size() >0){
-
-            try{
-
-                List<LayerGroupDsView> layerGroupDsViewList = geoDataSourceService.layerCodeGeoDataSource(layerGroupList);
-
-                if(layerGroupDsViewList !=null && layerGroupDsViewList.size()>0){
+        try {
+            List<LayerGroupDsView> layerGroupDsViewList = geoDataSourceService.layerCodeGeoDataSource(geoRequestParam.getLayers(),geoRequestParam.getTypename());
 
-                    List<String> layerCodeList = new ArrayList<String>();
+            if (layerGroupDsViewList != null && layerGroupDsViewList.size() > 0) {
 
-                    for(LayerGroupDsView layerGroupDsView:layerGroupDsViewList){
+                List<String> layerCodeList = new ArrayList<String>();
 
-                        layerCodeList.add(layerGroupDsView.getLayerCode());
-                    }
+                for (LayerGroupDsView layerGroupDsView : layerGroupDsViewList) {
 
-                    Map<String,List<LayerStyleView>> dataMaps = geoDataSourceService.layerCodeShapeStyle(layerCodeList);
-
-                    if(StringUtils.equals(geoRequestParam.getRequest(),"GetMap")) {
-                        byte[] ret = tileService.tileData(geoRequestParam, layerGroupDsViewList, dataMaps);
-                        responseWrite(response, "image/png", ret);
-                    }else if(StringUtils.equals(geoRequestParam.getRequest(),"GetFeatureInfo")) {
-                        FeatureInfo featureInfo = tileService.getFeatureInfo(geoRequestParam, layerGroupDsViewList, dataMaps);
-                        responseWriteJson(response, featureInfo);
-                    } else if(StringUtils.equals(geoRequestParam.getRequest(),"GetFeature")){
-                        FeatureInfo feature = tileService.getFeature(geoRequestParam, layerGroupDsViewList, dataMaps);
-                        responseWriteJson(response, feature);
-                    }
-                }else{
-                    log.info("根据图层代码:" + StringUtils.join(layerGroupList,",") + "获取图层对应的数据源为空或者为null");
+                    layerCodeList.add(layerGroupDsView.getLayerCode());
                 }
 
-            }catch (Exception exception){
-
-                exception.printStackTrace();
-
-                log.error("根据图层代码:" + geoRequestParam.getLayers() +"获取数据源信息失败!"+exception);
+                Map<String, List<LayerStyleView>> dataMaps = geoDataSourceService.layerCodeShapeStyle(layerCodeList);
+
+                if (StringUtils.equals(geoRequestParam.getRequest(), "GetMap")) {
+                    byte[] ret = tileService.tileData(geoRequestParam, layerGroupDsViewList, dataMaps);
+                    responseWrite(response, "image/png", ret);
+                } else if (StringUtils.equals(geoRequestParam.getRequest(), "GetFeatureInfo")) {
+                    FeatureInfo featureInfo = tileService.getFeatureInfo(geoRequestParam, layerGroupDsViewList, dataMaps);
+                    responseWriteJson(response, featureInfo);
+                } else if (StringUtils.equals(geoRequestParam.getRequest(), "GetFeature")) {
+                    FeatureInfo feature = tileService.getFeature(geoRequestParam, layerGroupDsViewList, dataMaps);
+                    responseWriteJson(response, feature);
+                }
+            } else {
+                log.info("根据图层代码:" + StringUtils.join(layerGroupList, ",") + "获取图层对应的数据源为空或者为null");
             }
 
+        } catch (Exception exception) {
 
+            exception.printStackTrace();
 
-        }else{
-
-            log.info("图层组layers参数为空或者图层typeName参数为空");
+            log.error("根据图层代码:" + geoRequestParam.getLayers() + "获取数据源信息失败!" + exception);
+            throw new RuntimeException("根据图层代码:" + geoRequestParam.getLayers() + "获取数据源信息失败!");
         }
 
-
     }
 
     private static void responseWriteJson(HttpServletResponse response, Object featureInfo) throws IOException {
@@ -186,5 +157,4 @@ public class TileWebController {
     }
 
 
-
 }

+ 1 - 1
tile-web/src/main/java/cn/com/taiji/web/service/IGeoDataSourceService.java

@@ -15,7 +15,7 @@ public interface IGeoDataSourceService {
      * 获取图层代码对应的数据源信息
      * @return
      */
-    List<LayerGroupDsView> layerCodeGeoDataSource(List<String> layerCodeList) throws Exception;
+    List<LayerGroupDsView> layerCodeGeoDataSource(String layer,String typeName) throws Exception;
 
     /**
      * 获取图层代码对应的样式信息

+ 12 - 6
tile-web/src/main/java/cn/com/taiji/web/service/impl/GeoDataSourceServiceImpl.java

@@ -35,7 +35,7 @@ public class GeoDataSourceServiceImpl implements IGeoDataSourceService {
 
 
     @Override
-    public List<LayerGroupDsView> layerCodeGeoDataSource(List<String> layerCodeList) throws Exception{
+    public List<LayerGroupDsView> layerCodeGeoDataSource(String layer, String typeName) throws Exception{
 
 
         List<LayerGroupDsView> layerGroupDsViewList = new ArrayList<LayerGroupDsView>();
@@ -52,12 +52,18 @@ public class GeoDataSourceServiceImpl implements IGeoDataSourceService {
         dsParams.put(JDBCDataStoreFactory.DATABASE.key, geoConfig.getDsBase());
         dsParams.put(JDBCDataStoreFactory.PORT.key, geoConfig.getDsPort());
         dsParams.put("tableName", "layer_group_ds_view");
-
-
-        String layerCodeCql = "(group_code IN ("+StringUtils.convertListToString(layerCodeList)+") or layer_code in ("+StringUtils.convertListToString(layerCodeList)+"))";
-
+        StringBuilder sql = new StringBuilder("(");
+        String layerCondition = String.format("(group_code = ('%s') or layer_code = ('%s'))", layer, layer);
+        sql.append(layerCondition);
+
+        if (org.apache.commons.lang3.StringUtils.isNotBlank(typeName)) {
+            String[] types = typeName.split(",");
+            String typesCondition = "and layer_code IN (" + StringUtils.convertListToString(Arrays.asList(types)) + ")";
+            sql.append(typesCondition);
+        }
+        sql.append(")");
         Map<String, Object> mapParams = new HashMap<String, Object>();
-        mapParams.put("cql", layerCodeCql);
+        mapParams.put("cql", sql);
 
         Map<String, Object> sortMaps = new HashMap<String, Object>();
         sortMaps.put("sort","asc");