Przeglądaj źródła

更换新包, 没有更新到生产环境

wuweihao 19 godzin temu
rodzic
commit
9d8587c068

+ 7 - 1
README.md

@@ -2,6 +2,11 @@
 
 大场景java后端代码
 
+# dev
+http://127.0.0.1:8105/doc.html#/home
+admin 4Dage168@2026
+可以用devPro连接生产数据库测试
+
 #数据处理逻辑
     1. 前端上传相应文件(大场景由前端提供所有文件,而军史馆的vision.modeldata、xxx.dam需要java调用算法生成)
             1.1 vision.modeldata、
@@ -46,8 +51,9 @@
             添加免token认证,需要在数据库tb_clent添加code,用于验证
     
    
+# pro
+http://space3d.4dage.com:8105/doc.html#/home
 
-        
 # 更新日志
   2020-10-14:更新data2.js.hots.url, https://www.4dmodel.com/SuperTwo/hot_online1/index.html#/
   2021-09-21: 更新安全jar包, fastjson, shiro 

+ 74 - 0
gis_application/src/main/resources/application-devPro.properties

@@ -0,0 +1,74 @@
+#DB
+spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
+spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
+spring.datasource.druid.url=jdbc:mysql://47.112.166.173:3306/cms_big_scene?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8
+spring.datasource.druid.username=root
+spring.datasource.druid.password=4dkankan4dage
+
+
+# \uFFFD\uFFFD\u02BC\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD
+spring.datasource.druid.initial-size=5
+# \uFFFD\uFFFD\u0421\uFFFD\uFFFD\uFFFD\u04F3\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD
+spring.datasource.druid.min-idle=10
+# \uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u04F3\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD
+spring.datasource.druid.max-active=20
+# \uFFFD\uFFFD\uFFFD\u00FB\uFFFD\u0221\uFFFD\uFFFD\uFFFD\u04F5\u0234\uFFFD\uFFFD\uFFFD\u02B1\uFFFD\uFFFD\u02B1\uFFFD\uFFFD
+spring.datasource.druid.max-wait=60000
+# \uFFFD\uFFFD\uFFFD\u00FC\uFFFD\uFFFD\uFFFD\uFFFD\u00F2\u017D\uFFFD\uFFFD\uFFFD\u04BB\uFFFD\u03BC\uFFFD\u28EC\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u04AA\uFFFD\u0631\u0575\u013F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u04E3\uFFFD\uFFFD\uFFFD\u03BB\uFFFD\u01FA\uFFFD\uFFFD\uFFFD
+spring.datasource.druid.time-between-eviction-runs-millis=60000
+# \uFFFD\uFFFD\uFFFD\uFFFD\u04BB\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u06B3\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0421\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u02B1\uFFFD\u48EC\uFFFD\uFFFD\u03BB\uFFFD\u01FA\uFFFD\uFFFD\uFFFD
+spring.datasource.druid.min-evictable-idle-time-millis=30000
+# \uFFFD\uFFFD\uFFFD\uFFFD\u04BB\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u06B3\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u02B1\uFFFD\u48EC\uFFFD\uFFFD\u03BB\uFFFD\u01FA\uFFFD\uFFFD\uFFFD
+spring.datasource.druid.max-evictable-idle-time-millis=90000
+# \uFFFD\uFFFD\uFFFD\u00FC\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u01F7\uFFFD\uFFFD\uFFFD\u0427
+spring.datasource.druid.validation-query=SELECT 1 FROM DUAL
+spring.datasource.druid.test-while-idle=true
+spring.datasource.druid.test-on-borrow=false
+spring.datasource.druid.test-on-return=false
+spring.datasource.druid.web-stat-filter.enabled=true
+spring.datasource.druid.stat-view-servlet.enabled=true
+
+
+# Redis\uFFFD\uFFFD\uFFFD\u077F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u012C\uFFFD\uFFFD\u03AA0\uFFFD\uFFFD
+spring.redis.database=0
+spring.redis.host=127.0.0.1
+spring.redis.port=6379
+spring.redis.password=
+# \uFFFD\uFFFD\uFFFD\u04F3\uFFFD\u02B1\u02B1\uFFFD\uFFFD \uFFFD\uFFFD\u03BB ms\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uB8E9
+spring.redis.timeout=3000ms
+# \uFFFD\uFFFD\uFFFD\u04F3\uFFFD\uFFFD\u0435\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u04E3\uFFFD\u012C\uFFFD\uFFFD\u05B5\u04B2\uFFFD\uFFFD8\uFFFD\uFFFD
+spring.redis.jedis.pool.max-idle=8
+#\uFFFD\uFFFD\uFFFD\u04F3\uFFFD\uFFFD\u0435\uFFFD\uFFFD\uFFFD\u0421\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u04E3\uFFFD\u012C\uFFFD\uFFFD\u05B5\u04B2\uFFFD\uFFFD0\uFFFD\uFFFD
+spring.redis.jedis.pool.min-idle=0
+# \uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u05B5\u03AA-1\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u02BE\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u01A3\uFFFD\uFFFD\uFFFD\uFFFDpool\uFFFD\u047E\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFDmaxActive\uFFFD\uFFFDjedis\u02B5\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u02B1pool\uFFFD\uFFFD\u05F4\u032C\u03AAexhausted(\uFFFD\u013E\uFFFD)\uFFFD\uFFFD
+spring.redis.jedis.pool.max-active=8
+# \uFFFD\u0234\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u04F5\uFFFD\uFFFD\uFFFD\uFFFD\u02B1\uFFFD\u48EC\uFFFD\uFFFD\u03BB\uFFFD\uFFFD\uFFFD\uB8EC\u012C\uFFFD\uFFFD\u05B5\u03AA-1\uFFFD\uFFFD\uFFFD\uFFFD\u02BE\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u02B1\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0234\uFFFD\u02B1\uFFFD\u48EC\uFFFD\uFFFD\u05B1\uFFFD\uFFFD\uFFFD\u05F3\uFFFDJedisConnectionException
+spring.redis.jedis.pool.max-wait=-1ms
+
+
+#log
+logging.path=E:/javaProject/cms_big_scene_log
+logging.config=classpath:logback-spring.xml
+logging.level.com.gis=debug
+
+# \uFFFD\uFFFD\uFFFD\u0631\uFFFD\uFFFD\uFFFD\u00B7\uFFFD\uFFFD
+file.path=F:\\test\\ngin\\big_scene\\
+#server.domain =http://192.168.0.135/
+server.domain =http://www.4dmodel.com/
+
+# \uFFFD\uFFFD\u0163 oss info
+oss.file.path=data/
+oss.domain=https://super.4dage.com/
+
+# swagger2 \uFFFD\uFFFD\uFFFD\uFFFD\u022B\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u02BD\u03AAutf-8
+swagger.package=com.gis
+swagger.title=${project.sc}-dev
+swagger.description=${swagger.title}
+swagger.version=1.0
+
+
+#swagger login
+#knife4j.basic.enable=true
+#knife4j.basic.username=owen
+#knife4j.basic.password=owen
+

+ 1 - 1
gis_application/src/main/resources/application.properties

@@ -1,6 +1,6 @@
 server.port=8105
 
-spring.profiles.active=pro
+spring.profiles.active=devPro
 
 # \uFFFD\uFFFD\uFFFD\u02BE\uFFFD\u032C\uFFFD\uFFFD\u0534\uFFFD\uFFFD\uFFFD\uFFFD
 spring.resources.static-locations=classpath:templates/,classpath:static/,classpath:web/

+ 32 - 4
gis_common/pom.xml

@@ -144,17 +144,40 @@
 
 
         <!-- 针对proto包 转换格式用-->
+<!--        <dependency>-->
+<!--            <groupId>com.google.protobuf</groupId>-->
+<!--            <artifactId>protobuf-java</artifactId>-->
+<!--            <version>3.2.0</version>-->
+<!--        </dependency>-->
+
+<!--        <dependency>-->
+<!--            <groupId>com.googlecode.protobuf-java-format</groupId>-->
+<!--            <artifactId>protobuf-java-format</artifactId>-->
+<!--            <version>1.4</version>-->
+<!--        </dependency>-->
+
+
+<!--        2026-04-10新包-->
         <dependency>
             <groupId>com.google.protobuf</groupId>
             <artifactId>protobuf-java</artifactId>
-            <version>3.2.0</version>
+            <version>3.19.6</version>
         </dependency>
+
+        <!-- 替换你旧的 format,换成官方 util(解决乱码必备) -->
         <dependency>
-            <groupId>com.googlecode.protobuf-java-format</groupId>
-            <artifactId>protobuf-java-format</artifactId>
-            <version>1.4</version>
+            <groupId>com.google.protobuf</groupId>
+            <artifactId>protobuf-java-util</artifactId>
+            <version>3.19.6</version>
         </dependency>
 
+
+
+
+
+
+
+
         <dependency>
             <groupId>org.codehaus.jackson</groupId>
             <artifactId>jackson-mapper-asl</artifactId>
@@ -202,6 +225,11 @@
             <version>3.14.2</version>
             <scope>compile</scope>
         </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
+
 
 
     </dependencies>

+ 12 - 62
gis_common/src/main/java/com/gis/common/proto/util/ConvertUtils.java

@@ -1,14 +1,18 @@
 package com.gis.common.proto.util;
 
 import com.gis.common.proto.Visionmodeldata;
-import com.gis.common.proto.format.JsonFormat;
-import lombok.extern.log4j.Log4j2;
+//import com.gis.common.proto.format.JsonFormat;
+import com.google.protobuf.InvalidProtocolBufferException;
+import com.google.protobuf.util.JsonFormat;
+import lombok.extern.slf4j.Slf4j;
 
 import java.io.*;
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
-@Log4j2
+@Slf4j
 public class ConvertUtils {
 
     public static void convertVisionModelDataToTxt(String srcPath, String desPath) throws Exception {
@@ -21,7 +25,8 @@ public class ConvertUtils {
 
             Visionmodeldata.NavigationInfo data_NavigationInfo = Visionmodeldata.NavigationInfo.parseFrom(fis);
 
-            String jsonFormat1 = JsonFormat.printToString(data_NavigationInfo);
+            // 包直接引入的不合适
+            String jsonFormat1 = com.gis.common.proto.format.JsonFormat.printToString(data_NavigationInfo);
             ByteArrayInputStream stream = new ByteArrayInputStream(jsonFormat1.getBytes());
             bos = new BufferedOutputStream(new FileOutputStream(desPath));//设置输出路径
             bis = new BufferedInputStream(stream);
@@ -46,13 +51,14 @@ public class ConvertUtils {
         }
     }
 
+
     public static void convertTxtToVisionModelData(String srcPath, String desPath) throws Exception {
         BufferedOutputStream bos = null;
         BufferedInputStream bis = null;
         try {
             Visionmodeldata.NavigationInfo.Builder builder = Visionmodeldata.NavigationInfo.newBuilder();
             String jsonFormat = readTxtFileToJson(srcPath);
-            JsonFormat.merge(jsonFormat, builder);
+            com.gis.common.proto.format.JsonFormat.merge(jsonFormat, builder);
             byte[] buf = builder.build().toByteArray();
 
             //把序列化后的数据写入本地磁盘
@@ -159,61 +165,5 @@ public class ConvertUtils {
         }
     }
 
-//    public static void convertTxtToVisionmodeldata(String srcpath,String despath)throws Exception
-//    {
-//        try
-//        {
-//            Visionmodeldata.NavigationInfo.Builder builder = Visionmodeldata.NavigationInfo.newBuilder();
-//            String jsonFormat = readTxtFileToJson(srcpath);
-//            JsonFormat.merge(jsonFormat, builder);
-//            byte[] buf= builder.build().toByteArray();
-//
-//            //把序列化后的数据写入本地磁盘
-//            ByteArrayInputStream stream = new ByteArrayInputStream(buf);
-//            BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(despath));//设置输出路径
-//            BufferedInputStream bis = new BufferedInputStream(stream);
-//            int b = -1;
-//            while ((b = bis.read()) != -1) {
-//                bos.write(b);
-//            }
-//            bis.close();
-//            bos.close();
-//        }
-//        catch(Exception e)
-//        {
-//            StringWriter trace=new StringWriter();
-//            e.printStackTrace(new PrintWriter(trace));
-//            log.error(trace.toString());
-//        }
-//    }
-
-//    public static void convertVisionmodeldataToTxt(String srcpath,String despath)throws Exception
-//    {
-//        try
-//        {
-//            File file = new File(srcpath);
-//            FileInputStream fis=new FileInputStream(file);
-//
-//            Visionmodeldata.NavigationInfo data_NavigationInfo = Visionmodeldata.NavigationInfo.parseFrom(fis);
-//
-//            //PrintStream out = new PrintStream(despath);
-//            String jsonFormat1 = JsonFormat.printToString(data_NavigationInfo);
-//            ByteArrayInputStream stream = new ByteArrayInputStream(jsonFormat1.getBytes());
-//            BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(despath));//设置输出路径
-//            BufferedInputStream bis = new BufferedInputStream(stream);
-//            int b = -1;
-//            while ((b = bis.read()) != -1) {
-//                bos.write(b);
-//            }
-//            //out.close();
-//            bis.close();
-//            bos.close();
-//        }
-//        catch(Exception e)
-//        {
-//            StringWriter trace=new StringWriter();
-//            e.printStackTrace(new PrintWriter(trace));
-//            log.error(trace.toString());
-//        }
-//    }
+
 }

+ 46 - 4
gis_service/src/main/java/com/gis/service/impl/SceneServiceImpl.java

@@ -5,6 +5,7 @@ import cn.hutool.core.io.FileUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.JSONReader;
 import com.alibaba.fastjson.serializer.SerializerFeature;
 import com.gis.common.exception.BaseRuntimeException;
 import com.gis.common.proto.util.ConvertUtils;
@@ -101,8 +102,8 @@ public class SceneServiceImpl extends IBaseServiceImpl<SceneEntity, Long> implem
 
         // 3. 编辑新数据到vision.json
         JSONArray inputDates = JSONObject.parseArray(param.getData());
-
-        JSONObject visionJson = JSONObject.parseObject(FileUtil.readUtf8String(visionJsonPath));
+        String visonContent = FileUtil.readUtf8String(visionJsonPath);
+        JSONObject visionJson = JSONObject.parseObject(visonContent);
         JSONArray sweepLocations = visionJson.getJSONArray("sweepLocations");
 
         int a = 0;
@@ -118,9 +119,9 @@ public class SceneServiceImpl extends IBaseServiceImpl<SceneEntity, Long> implem
                 String uuid = pano.getString("uuid");
                 String s = StringUtils.replaceAll(uuid, "-", "");
                 if (s.equals(panoID)) {
-                    log.info("uuid: {}, panoID: {}", uuid, panoID);
+//                    log.info("uuid: {}, panoID: {}", uuid, panoID);
                     pano.put("visibles", visibles3);
-                    log.info("visibles: {},visibles3:{}", pano.get("visibles"), visibles3);
+//                    log.info("visibles: {},visibles3:{}", pano.get("visibles"), visibles3);
                 }
             }
         }
@@ -655,6 +656,47 @@ public class SceneServiceImpl extends IBaseServiceImpl<SceneEntity, Long> implem
         FileUtil.writeFromStream(new FileInputStream(file), "F:\\test\\bigScene\\vision.modeldata123");
     }
 
+    /*
+         * 对整个 JSON 字符串中的所有控制字符进行转义
+     */
+    public static String escapeAllControlChars(String json) {
+        if (json == null) return null;
+
+        StringBuilder result = new StringBuilder();
+        boolean inString = false;
+        boolean escape = false;
+
+        for (int i = 0; i < json.length(); i++) {
+            char c = json.charAt(i);
+
+            if (escape) {
+                result.append(c);
+                escape = false;
+                continue;
+            }
+
+            if (c == '\\') {
+                result.append(c);
+                escape = true;
+                continue;
+            }
+
+            if (c == '"') {
+                inString = !inString;
+                result.append(c);
+                continue;
+            }
+
+            // 在字符串值内部,转义控制字符
+            if (inString && c < 0x20) {
+                result.append(String.format("\\u%04x", (int) c));
+            } else {
+                result.append(c);
+            }
+        }
+
+        return result.toString();
+    }
 //
 //    /**
 //     * visionModelData 转 VisionJson