lyhzzz před 7 měsíci
rodič
revize
008f8ebe8e

+ 7 - 0
pom.xml

@@ -39,6 +39,13 @@
         </dependency>
 
         <dependency>
+            <groupId>com.fdkankan</groupId>
+            <artifactId>4dkankan-utils-geo-query</artifactId>
+            <version>3.0.0-SNAPSHOT</version>
+        </dependency>
+
+
+        <dependency>
             <groupId>mysql</groupId>
             <artifactId>mysql-connector-java</artifactId>
             <version>8.0.25</version>

+ 3 - 0
src/main/java/com/fdkankan/fusion/common/util/OBJToGLBUtil.java

@@ -5,8 +5,11 @@ import com.alibaba.fastjson.JSONObject;
 import com.fdkankan.fusion.common.FilePath;
 import com.fdkankan.fusion.common.ResultCode;
 import com.fdkankan.fusion.exception.BusinessException;
+import com.fdkankan.geo.GeoQueryUtil;
+import com.fdkankan.geo.GeoTransformUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
+import org.locationtech.proj4j.ProjCoordinate;
 import org.omg.CosNaming.NamingContextExtPackage.StringNameHelper;
 
 import java.io.*;

+ 105 - 0
src/main/java/com/fdkankan/fusion/common/util/ReadXmlUtil.java

@@ -0,0 +1,105 @@
+package com.fdkankan.fusion.common.util;
+
+import com.fdkankan.geo.GeoTransformUtil;
+import org.locationtech.proj4j.ProjCoordinate;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import java.io.File;
+import java.util.HashMap;
+import java.util.Map;
+
+public class ReadXmlUtil {
+
+    public static Logger logger = LoggerFactory.getLogger(ReadXmlUtil.class);
+
+    /**
+     * <?xml version="1.0" encoding="utf-8"?>
+     * <ModelMetadata version="1">
+     * 	<SRS>EPSG:32649</SRS>
+     * 	<SRSOrigin>767052,2475786,0</SRSOrigin>
+     * </ModelMetadata>
+     */
+
+    public static HashMap<String,String> getMapByXml(String path) {
+        try {
+            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+            DocumentBuilder documentBuilder = factory.newDocumentBuilder();
+            Document document = documentBuilder.parse(new File(path));
+            Element root = document.getDocumentElement();
+            NodeList childNodes = root.getChildNodes();
+
+            HashMap<String,String> map = new HashMap<>();
+            for (int temp = 0; temp < childNodes.getLength(); temp++) {
+                org.w3c.dom.Node node = childNodes.item(temp);
+                if (node.getNodeType() == org.w3c.dom.Node.ELEMENT_NODE) {
+                    Element eElement = (Element) node;
+                    // 获取元素中的文本内容
+                    map.put(node.getNodeName(),eElement.getTextContent());
+                }
+            }
+            return map;
+        }catch (Exception e){
+            logger.info("getMapByXml-error",e);
+        }
+      return null;
+
+    }
+
+    public static  HashMap<String, String> getLatMap(File file){
+        try {
+            File xmlPath = getXmlPath(file);
+            if(xmlPath == null){
+                return null;
+            }
+            HashMap<String, String> resultMap = new HashMap<>();
+            HashMap<String, String> mapByXml = getMapByXml(xmlPath.getPath());
+            if(mapByXml != null && !mapByXml.isEmpty()){
+                String srs = mapByXml.get("SRS");
+                String sourceCrs = srs.replace("EPSG:","");
+                String srsOrigin = mapByXml.get("SRSOrigin");
+                String[] split = srsOrigin.split(",");
+                Double x = Double.valueOf(split[0]);
+                Double y = Double.valueOf(split[1]);
+                Double z = Double.valueOf(split[2]);
+
+                ProjCoordinate coordinate1 = new ProjCoordinate(x,y,z);
+                Double[] wgs84 = GeoTransformUtil.getWgs84(coordinate1, sourceCrs);
+                resultMap.put("wgs84",wgs84[0]+","+wgs84[1]+","+wgs84[2]);
+                ProjCoordinate coordinate2 = new ProjCoordinate(wgs84[0],wgs84[1],wgs84[2]);
+                Double[] gcj02 = GeoTransformUtil.wgs84ToGcj02(coordinate2);
+                resultMap.put("gcj02",+gcj02[0]+","+gcj02[1]+","+gcj02[2]);
+            }
+            return resultMap;
+        }catch (Exception e){
+            logger.info("getLatMap-error",e);
+        }
+        return null;
+    }
+
+    public static File getXmlPath(File localFile) {
+        try {
+            if(localFile == null || localFile.isFile()){
+                return null;
+            }
+            File[] files = localFile.listFiles();
+            if(files == null || files.length == 0){
+                return null;
+            }
+            for (File file : files) {
+                if(file.getName().contains(".xml")){
+                    return file;
+                }
+            }
+        }catch (Exception e){
+            logger.info("getXmlPath-error",e);
+        }
+
+        return null;
+    }
+}

+ 1 - 1
src/main/java/com/fdkankan/fusion/config/SaTokenConfigure.java

@@ -64,8 +64,8 @@ public class SaTokenConfigure {
                         String clientIP = ServletUtil.getClientIP(SpringMVCUtil.getRequest());
                         SaRouter.match("/**", "/case/addScene", r -> checkSign(sign,clientIP));
                     }else {
-                        SaRouter.match("/**", "/fdLogin", r ->checkLogin() );
                         SaRouter.match("/**", "/case/addScene", r ->checkCaseAuth(caseId,pageType));
+                        SaRouter.match("/**", "/fdLogin", r ->checkLogin() );
                     }
 
 

+ 3 - 0
src/main/java/com/fdkankan/fusion/controller/ModelController.java

@@ -77,6 +77,9 @@ public class ModelController extends BaseController{
         model.setModelSize(FileWriterUtil.setFileSize(Long.valueOf(commonUpload.getFileSize())));
         model.setModelDateType(commonUpload.getFileFormat());
         model.setModelType(commonUpload.getResultFileFormat());
+        model.setWgs84(commonUpload.getWgs84());
+        model.setGcj02(commonUpload.getGcj02());
+
         JSONArray jsonArray = new JSONArray();
         jsonArray.add(commonUpload.getFileUrl());
         model.setModelGlbUrl(jsonArray.toJSONString());

+ 4 - 2
src/main/java/com/fdkankan/fusion/entity/CaseInquestInfo.java

@@ -1,5 +1,6 @@
 package com.fdkankan.fusion.entity;
 
+import com.alibaba.excel.annotation.format.DateTimeFormat;
 import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
@@ -9,6 +10,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import java.io.Serializable;
 import java.util.Date;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fdkankan.fusion.typehandle.JsonArrayTypeHandler;
 import lombok.Getter;
 import lombok.Setter;
@@ -38,13 +40,13 @@ public class CaseInquestInfo implements Serializable {
      * 指挥中心电话时间
      */
     @TableField("command_time")
-    private Date commandTime;
+    private String commandTime;
 
     /**
      * 接警时间
      */
     @TableField("alarm_time")
-    private Date alarmTime;
+    private String alarmTime;
 
     /**
      * 接警人

+ 4 - 0
src/main/java/com/fdkankan/fusion/entity/CommonUpload.java

@@ -62,5 +62,9 @@ public class CommonUpload implements Serializable {
     @TableField("unzip_path")
     private String unzipPath;
 
+    @TableField("wgs84")
+    private String wgs84;
 
+    @TableField("gcj02")
+    private String gcj02;
 }

+ 6 - 0
src/main/java/com/fdkankan/fusion/entity/Model.java

@@ -95,4 +95,10 @@ public class Model implements Serializable {
 
     @TableField("render_type")
     private String renderType;
+
+    @TableField("wgs84")
+    private String wgs84;
+
+    @TableField("gcj02")
+    private String gcj02;
 }

+ 1 - 1
src/main/java/com/fdkankan/fusion/httpClient/FdService.java

@@ -181,7 +181,7 @@ public class FdService {
                 JSONObject data = jsonObject.getJSONObject("data");
                 viewAuth = data.getBoolean("viewAuth");
                 editAuth = data.getBoolean("editAuth");
-                redisUtil.set(format,data.toJSONString(),60);
+                redisUtil.set(format,data.toJSONString(),2 * 60 * 60);
             }catch (Exception e){
                 log.info("checkCaseAuth-error:",e);
             }

+ 14 - 5
src/main/java/com/fdkankan/fusion/mq/consumer/OsgbToB3dmConsumer.java

@@ -3,22 +3,25 @@ package com.fdkankan.fusion.mq.consumer;
 import cn.hutool.core.io.FileUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.fdkankan.fusion.common.FilePath;
-import com.fdkankan.fusion.common.util.FileWriterUtil;
-import com.fdkankan.fusion.common.util.OBJToGLBUtil;
-import com.fdkankan.fusion.common.util.ShellUtil;
-import com.fdkankan.fusion.common.util.UploadToOssUtil;
+import com.fdkankan.fusion.common.util.*;
 import com.fdkankan.fusion.exception.BusinessException;
 import com.fdkankan.fusion.service.ICommonUploadService;
+import com.fdkankan.geo.GeoTransformUtil;
 import com.fdkankan.redis.util.RedisUtil;
 import com.rabbitmq.client.Channel;
 import lombok.extern.slf4j.Slf4j;
+import org.locationtech.proj4j.ProjCoordinate;
 import org.springframework.amqp.core.Message;
 import org.springframework.amqp.rabbit.annotation.Queue;
 import org.springframework.amqp.rabbit.annotation.RabbitListener;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
 
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
 import java.io.File;
 import java.nio.charset.StandardCharsets;
 import java.util.HashMap;
@@ -56,6 +59,7 @@ public class OsgbToB3dmConsumer {
             }
             ///mnt/manage/media-library/result/ea041f3237df46568f4e83e723e743d4
             String sourcePath = file.getParentFile().getPath() +"/"+UUID.randomUUID().toString().replace("-","");
+
             OBJToGLBUtil.OsgbToB3dm(localPath,sourcePath);
             String b3dmJsonPath =  FileWriterUtil.checkB3dmTileset(new File(sourcePath));
             if(b3dmJsonPath == null){
@@ -65,7 +69,12 @@ public class OsgbToB3dmConsumer {
             String ossPath = sourcePath.replace("/mnt/","");
             ShellUtil.yunUpload(sourcePath,ossPath);
             String url = ossUrlPrefix + b3dmJsonPath.replace("/mnt/","");
-            commonUploadService.updateByPath(localPath,url);
+            HashMap<String,String> resultMap = ReadXmlUtil.getLatMap(file);
+            if(resultMap != null && !resultMap.isEmpty()){
+                commonUploadService.updateByPath(localPath,url,resultMap.get("wgs84"),resultMap.get("gcj02"));
+            }else {
+                commonUploadService.updateByPath(localPath,url);
+            }
             FileUtil.del(localPath);
             FileUtil.del(sourcePath);
         }catch (Exception e){

+ 1 - 0
src/main/java/com/fdkankan/fusion/request/AddByMediaLibraryParam.java

@@ -15,6 +15,7 @@ public class AddByMediaLibraryParam {
 
     private Integer imgType ;
     private String content;
+    private String filesTitle;
 
     private List<Integer> uploadIds;
 

+ 1 - 0
src/main/java/com/fdkankan/fusion/service/ICommonUploadService.java

@@ -18,4 +18,5 @@ public interface ICommonUploadService extends IService<CommonUpload> {
     List<CommonUpload> getByStatus(Integer status);
 
     void updateByPath(String msg, String url);
+    void updateByPath(String msg, String url,String wgs84 ,String gcj02);
 }

+ 0 - 2
src/main/java/com/fdkankan/fusion/service/impl/CaseFilesServiceImpl.java

@@ -43,8 +43,6 @@ public class CaseFilesServiceImpl extends ServiceImpl<ICaseFilesMapper, CaseFile
         if(caseFilesTypeId!=null){
             wrapper.eq(CaseFiles::getFilesTypeId,caseFilesTypeId);
         }
-        wrapper.orderByAsc(CaseFiles::getFilesTypeId);
-        wrapper.orderByDesc(CaseFiles::getCreateTime);
         return this.list(wrapper);
     }
 

+ 1 - 1
src/main/java/com/fdkankan/fusion/service/impl/CaseImgServiceImpl.java

@@ -66,7 +66,7 @@ public class CaseImgServiceImpl extends ServiceImpl<ICaseImgMapper, CaseImg> imp
     private String queryPath;
     @Override
     public CaseImg ffmpegImage(MultipartFile[] files, Integer caseId) {
-        if(files.length <=0 || caseId == null){
+        if(files == null || files.length <=0 || caseId == null){
             throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
         }
         String filePath = FilePath.FFMPEG_IMG_PATH +"/"+ caseId+"/";

+ 21 - 8
src/main/java/com/fdkankan/fusion/service/impl/CaseNumServiceImpl.java

@@ -85,8 +85,21 @@ public class CaseNumServiceImpl extends ServiceImpl<ICaseNumMapper, CaseNumEntit
 
         List<CaseNumEntity> newCaseNums = new ArrayList<>();
         List<Model> modelList = new ArrayList<>();
-        for (SceneNumParam param : sceneNumParam) {
-            List<String> numList = param.getNumList();
+
+        HashMap<Integer,HashSet<String>> map = new HashMap<>();
+        for (SceneNumParam numParam : sceneNumParam) {
+            if(map.get(numParam.getType()) == null){
+                HashSet<String> set = new HashSet<>(numParam.getNumList());
+                map.put(numParam.getType(),set);
+            }else {
+                map.get(numParam.getType()).addAll(numParam.getNumList());
+            }
+        }
+
+
+        for (Integer type : map.keySet()) {
+            HashSet<String> nulList = map.get(type);
+            List<String> numList = new ArrayList<>(nulList);
             HashSet<String> setNum = new HashSet<>(numList);
             for (String num : setNum) {
                 if(!addNumList.contains(num)){
@@ -94,21 +107,21 @@ public class CaseNumServiceImpl extends ServiceImpl<ICaseNumMapper, CaseNumEntit
                 }
                 CaseNumEntity caseNumEntity = new CaseNumEntity();
                 caseNumEntity.setCaseId(caseId);
-                caseNumEntity.setNumType(param.getType());
+                caseNumEntity.setNumType(type);
                 caseNumEntity.setNum(num);
                 newCaseNums.add(caseNumEntity);
-                if(param.getType() == 3){                   //用户上传三维模型跳过
+                if(type == 3){                   //用户上传三维模型跳过
                     continue;
                 }
-                Model model = modelService.getIsNullNewByNum(num,param.getType());
+                Model model = modelService.getIsNullNewByNum(num,type);
                 if(model.getModelId() != null && StringUtils.isNotBlank(model.getModelGlbUrl()) && StringUtils.isNotBlank(model.getModelSize())){
                     continue;
                 }
                 model.setModelDateType("obj");
-                model.setType(param.getType());
+                model.setType(type);
                 model.setModelType("pointcloud");    //深时点云类型
                 model.setCreateStatus(1);
-                if(param.getType() == 0 || param.getType() == 1 || param.getType() == 4 || param.getType() == 6 || param.getType() == 7){           //看看,看见
+                if(type == 0 || type == 1 || type == 4 || type == 6 || type == 7){           //看看,看见
                     String mesh3DtilesPath  = String.format(FilePath.OBJ_OSS_PATH,num) + "/images/3dtiles/tileset.json";
                     String sizePath = String.format(FilePath.OBJ_OSS_PATH,num) + "/images/3dtiles";
                     if(uploadToOssUtil.existKey(mesh3DtilesPath)){
@@ -118,7 +131,7 @@ public class CaseNumServiceImpl extends ServiceImpl<ICaseNumMapper, CaseNumEntit
                         model.setModelSize(FileWriterUtil.setFileSize(uploadToOssUtil.getSize( sizePath)));
                     }else {
                         model.setModelObjUrl(String.format(FilePath.OBJ_LOCAL_PATH,environment ,num) +"/mesh.obj");
-                        model.setModelGlbUrl(getGlbUrl(param.getType(),num,model));
+                        model.setModelGlbUrl(getGlbUrl(type,num,model));
                         model.setModelType("glb");
                     }
 

+ 10 - 0
src/main/java/com/fdkankan/fusion/service/impl/CommonUploadServiceImpl.java

@@ -39,4 +39,14 @@ public class CommonUploadServiceImpl extends ServiceImpl<ICommonUploadMapper, Co
         wrapper.set(CommonUpload::getFileUrl,url);
         this.update(wrapper);
     }
+    @Override
+    public void updateByPath(String msg, String url,String wgs84 ,String gcj02) {
+        LambdaUpdateWrapper<CommonUpload> wrapper = new LambdaUpdateWrapper<>();
+        wrapper.eq(CommonUpload::getUnzipPath,msg);
+        wrapper.set(CommonUpload::getStatus,1);
+        wrapper.set(CommonUpload::getFileUrl,url);
+        wrapper.set(CommonUpload::getWgs84,wgs84);
+        wrapper.set(CommonUpload::getGcj02,gcj02);
+        this.update(wrapper);
+    }
 }

+ 5 - 1
src/main/resources/bootstrap.yml

@@ -5,4 +5,8 @@ logging:
   config: classpath:logback-spring.xml
 mybatis-plus:
   configuration:
-    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #开启sql日志
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #开启sql日志
+
+geoquery:
+  dataFilePath: /mnt/geoFile/GeoJSON.json
+  saveWkbsFilePath:  /mnt/geoFile/GeoJSON.wkbs