浏览代码

修改计算逻辑

tianboguang 3 年之前
父节点
当前提交
61bfd85b95

+ 11 - 33
4dkankan-common-utils/src/main/java/com/fdkankan/common/util/ComputerUtil.java

@@ -61,7 +61,6 @@ public class ComputerUtil {
         }
         JSONObject fileJson = null;
         String fileName = "";
-        String meshfix = "";  //双模型时候会有改文件路径
         for(int i = 0, len = array.size(); i < len; i++){
             fileJson = array.getJSONObject(i);
             fileName = fileJson.getString("file");
@@ -76,13 +75,9 @@ public class ComputerUtil {
             }
 
             //tex文件夹
-            if(fileJson.getIntValue("clazz") == 2 && !fileJson.containsKey("pack-file")){
-                if(fileName.contains("meshfix.txt")){
-                    meshfix = fileName;
-                }else {
-                    map.put(path + File.separator + "results" +File.separator+ fileName,
-                            "images/images"+projectNum+"/"+ ConstantFileName.modelUUID+"_50k_texture_jpg_high1/"+fileName.replace("tex/", ""));
-                }
+            if(fileJson.getIntValue("clazz") == 2 ){
+                map.put(path + File.separator + "results" +File.separator+ fileName,
+                        "images/images"+projectNum+"/"+ ConstantFileName.modelUUID+"_50k_texture_jpg_high1/"+fileName.replace("tex/", ""));
                 continue;
             }
 
@@ -137,8 +132,7 @@ public class ComputerUtil {
             }
 
             //video视频文件或封面图
-            if(fileJson.getIntValue("clazz") == 11 || fileJson.getIntValue("cl" +
-                    "azz") == 12){
+            if(fileJson.getIntValue("clazz") == 11 || fileJson.getIntValue("clazz") == 12){
                 map.put(path + File.separator + "results" + File.separator+ fileName,"video/video"+
                         projectNum+ File.separator + fileName.replace("videos/", ""));
 
@@ -166,42 +160,27 @@ public class ComputerUtil {
         CreateObjUtil.convertTxtToDam( path + File.separator + "results" + File.separator+"tex"+File.separator+"modeldata.txt", path + File.separator + "results" +File.separator+ ConstantFileName.modelUUID+"_50k.dam");
         CreateObjUtil.convertDamToLzma(path + File.separator + "results");
         CreateObjUtil.convertTxtToDam( path + File.separator + "results" +File.separator+"tex"+File.separator+"modeldata.txt", path + File.separator + "results" + File.separator+ConstantFileName.modelUUID+"_50k.dam");
-        //有meshfix,表示双模型
-        if(!"".equals(meshfix)){
-            CreateObjUtil.convertTxtToDam( path + File.separator + "results" + File.separator+meshfix, path + File.separator + "results" +File.separator+ ConstantFileName.modelUUID+"_50k2.dam");
-            CreateObjUtil.convertDamToLzma2(path + File.separator + "results");
-            CreateObjUtil.convertTxtToDam( path + File.separator + "results" +File.separator+meshfix, path + File.separator + "results" + File.separator+ConstantFileName.modelUUID+"_50k2.dam");
-            map.put(path + File.separator + "results" +File.separator+ConstantFileName.modelUUID+"_50k2.dam.lzma",
-                    "images/images"+projectNum+"/"+ConstantFileName.modelUUID+"_50k2.dam.lzma");
-            map.put(path + File.separator + "results" +File.separator+ConstantFileName.modelUUID+"_50k2.dam",
-                    "images/images"+projectNum+"/"+ConstantFileName.modelUUID+"_50k2.dam");
-        }
+
         //8目相机有两个vision.txt因此第二个叫vision2.txt
         CreateObjUtil.convertTxtToVisionmodeldata(path + File.separator + "results" +File.separator+"vision.txt",path + File.separator + "results" +File.separator+"vision.modeldata");
         if(vision2){
             CreateObjUtil.convertTxtToVisionmodeldata(path + File.separator + "results" +File.separator+"vision2.txt",path + File.separator + "results" +File.separator+"vision2.modeldata");
-            map.put(path + File.separator + "results" +File.separator+"vision2.modeldata",
-                    "images/images"+projectNum+"/"+"vision2.modeldata");
+            map.put(path + File.separator + "results" +File.separator+"vision2.modeldata","images/images"+projectNum+"/"+"vision2.modeldata");
         }else {
             CreateObjUtil.convertTxtToVisionmodeldataCommon(path + File.separator + "results" +File.separator+"vision.txt",path + File.separator + "results" +File.separator+"vision.modeldata");
         }
         log.info("数据转换完成:"+projectNum);
 
         File file = new File(path + File.separator + "results" +File.separator+ConstantFileName.modelUUID+"_50k.dam.lzma");
-        while(!file.exists())
-        {
+        while(!file.exists()){
             Thread.sleep(60000);
         }
 
-        map.put(path + File.separator + "results" +File.separator+"vision.modeldata",
-                "images/images"+projectNum+"/"+"vision.modeldata");
-        map.put(path + File.separator + "results" +File.separator+ConstantFileName.modelUUID+"_50k.dam.lzma",
-                "images/images"+projectNum+"/"+ConstantFileName.modelUUID+"_50k.dam.lzma");
-        map.put(path + File.separator + "results" +File.separator+ConstantFileName.modelUUID+"_50k.dam",
-                "images/images"+projectNum+"/"+ConstantFileName.modelUUID+"_50k.dam");
+        map.put(path + File.separator + "results" + File.separator + "vision.modeldata", "images/images" + projectNum + "/" + "vision.modeldata");
+        map.put(path + File.separator + "results" + File.separator + ConstantFileName.modelUUID + "_50k.dam.lzma", "images/images" + projectNum + "/" + ConstantFileName.modelUUID + "_50k.dam.lzma");
+        map.put(path + File.separator + "results" + File.separator + ConstantFileName.modelUUID + "_50k.dam", "images/images" + projectNum + "/" + ConstantFileName.modelUUID + "_50k.dam");
         file = new File(ConstantFilePath.SCENE_PATH+"data"+File.separator+"data"+projectNum);
-        if(!file.exists())
-        {
+        if(!file.exists()){
             file.mkdir();
         }
         FileUtils.copyFile(path + File.separator + "results" +File.separator+"floor.json", ConstantFilePath.SCENE_PATH+"data"+File.separator+"data"+projectNum+File.separator+"floor.json", true);
@@ -210,7 +189,6 @@ public class ComputerUtil {
         log.info("floor.json路径:"+ path + File.separator + "results" +File.separator+"floor.json");
         map.put(path + File.separator + "results" +File.separator+"floor.json","data/data"+projectNum+"/floor.json");
         map.put(path + File.separator + "results" +File.separator+"floorplan.json","data/data"+projectNum+"/floor.json");
-//        map.put(path + File.separator + "results" +File.separator+"floorplan_cad.json","data/data"+projectNum+"/house_floor.json");
         map.put(path + File.separator + "results" +File.separator+"floorplan_cad.json","data/data"+projectNum+"/floorplan_cad.json");
         log.info("准备上传文件到oss:"+projectNum);
         return map;

+ 26 - 32
4dkankan-common-utils/src/main/java/com/fdkankan/common/util/CreateObjUtil.java

@@ -1,7 +1,7 @@
 package com.fdkankan.common.util;
 
-import cn.hutool.core.exceptions.ExceptionUtil;
-import cn.hutool.core.io.FileTypeUtil;
+import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.util.ZipUtil;
 import com.fdkankan.common.constant.ConstantFileName;
 import com.fdkankan.common.constant.ConstantFilePath;
 import com.fdkankan.common.proto.BigSceneProto;
@@ -9,18 +9,7 @@ import com.fdkankan.common.proto.Common;
 import com.fdkankan.common.proto.Visionmodeldata;
 import com.fdkankan.common.proto.format.JsonFormat;
 import com.google.protobuf.TextFormat;
-import java.util.Arrays;
-import java.util.Base64;
-import java.util.List;
-import java.util.concurrent.Callable;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
 import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.springframework.util.StopWatch;
 
 import java.io.*;
@@ -267,25 +256,30 @@ public class CreateObjUtil {
 		}
 
 	}
-	
-	public static void convertTxtToDam(String srcpath,String despath)throws Exception
-	{
-			BigSceneProto.binary_mesh.Builder builder= BigSceneProto.binary_mesh.newBuilder();
-			InputStream inputStream = new FileInputStream(srcpath);
-			InputStreamReader reader = new InputStreamReader(inputStream, "ASCII");
-			TextFormat.merge(reader, 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();
+
+	public static void convertTxtToDam(String srcpath, String despath) throws Exception {
+		BigSceneProto.binary_mesh.Builder builder = BigSceneProto.binary_mesh.newBuilder();
+		InputStream inputStream = new FileInputStream(srcpath);
+		InputStreamReader reader = new InputStreamReader(inputStream, "ASCII");
+		TextFormat.merge(reader, 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();
+
+		// gzip压缩
+		FileUtil.writeBytes(ZipUtil.gzip(new File(despath)),despath + ".gzip");
+
+		// 重命名
+		FileUtil.rename(new File(despath + ".gzip"), despath, true);
 	}
 	
 	public static void convertVisionmodeldataToTxt(String srcpath,String despath)throws Exception

+ 39 - 10
4dkankan-utils-fyun/src/main/java/com/fdkankan/fyun/oss/UploadToOssUtil.java

@@ -1,12 +1,14 @@
 package com.fdkankan.fyun.oss;
 
 import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.collection.ListUtil;
 import cn.hutool.core.io.FileUtil;
-import cn.hutool.core.util.StrUtil;
-import com.alibaba.fastjson.JSON;
-import com.aliyun.oss.OSS;
 import com.aliyun.oss.OSSClient;
+import com.aliyun.oss.model.DeleteObjectsRequest;
+import com.aliyun.oss.model.DeleteObjectsResult;
+import com.aliyun.oss.model.ListObjectsRequest;
+import com.aliyun.oss.model.ObjectListing;
+import com.aliyun.oss.model.ObjectMetadata;
+import com.aliyun.oss.model.PutObjectResult;
 import com.aliyun.oss.model.*;
 import com.amazonaws.HttpMethod;
 import com.amazonaws.auth.AWSStaticCredentialsProvider;
@@ -19,22 +21,18 @@ import com.amazonaws.services.s3.model.DeleteObjectsRequest.KeyVersion;
 import com.amazonaws.services.s3.model.GeneratePresignedUrlRequest;
 import com.amazonaws.services.s3.model.GetObjectRequest;
 import com.amazonaws.services.s3.model.PutObjectRequest;
-import com.amazonaws.services.s3.model.S3Object;
-import com.amazonaws.services.s3.model.S3ObjectInputStream;
-import com.amazonaws.services.s3.model.S3ObjectSummary;
+import com.amazonaws.services.s3.model.*;
 import com.fdkankan.common.util.CreateObjUtil;
 import com.fdkankan.fyun.constant.StorageType;
 import com.qiniu.common.Zone;
 import com.qiniu.storage.Configuration;
 import com.qiniu.storage.UploadManager;
-import java.net.URLDecoder;
-import java.util.function.Consumer;
-import java.util.stream.Collectors;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.fileupload.FileItem;
 import org.apache.commons.fileupload.FileItemFactory;
 import org.apache.commons.fileupload.disk.DiskFileItemFactory;
 import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
@@ -45,10 +43,12 @@ import java.io.*;
 import java.net.FileNameMap;
 import java.net.URL;
 import java.net.URLConnection;
+import java.net.URLDecoder;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 @Slf4j
 @Component
@@ -128,6 +128,22 @@ public class UploadToOssUtil {
 		}
 	}
 
+	public void uploadFileWithHeaders(String filePath, String key1,Map<String,String> headers) {
+		log.info("开始上传文件 源路径:{},目标路径:{},type:{}" , filePath,key1,type);
+		StorageType storageType = StorageType.get(type);
+		switch (storageType){
+			case OSS:
+				uploadOssWithHeaders(filePath,key1,headers);
+				break;
+			case AWS:
+				uploadAwsWithHeaders(filePath,key1,headers);
+				break;
+			case LOCAL:
+				uploadLocal(filePath,key1);
+				break;
+		}
+	}
+
 	/**
 	 * 通过脚本上传
 	 * @param filePath
@@ -355,6 +371,10 @@ public class UploadToOssUtil {
 
 
 	public void uploadOss(String filePath, String key1){
+		uploadOssWithHeaders(filePath,key1,null);
+	}
+
+	public void uploadOssWithHeaders(String filePath, String key1,Map<String,String> headers){
 		OSSClient ossClient = new OSSClient(point, key, secrey);
 		try {
 			File file = new File(filePath);
@@ -366,6 +386,11 @@ public class UploadToOssUtil {
 			if(filePath.contains(".jpg")){
 				metadata.setContentType("image/jpeg");
 			}
+			if(ObjectUtils.isNotEmpty(headers)){
+				for (Map.Entry<String, String> header : headers.entrySet()) {
+					metadata.setHeader(header.getKey(),header.getValue());
+				}
+			}
 			ossClient.putObject(bucket, key1, new File(filePath), metadata);
 
 		} catch (Exception e) {
@@ -376,6 +401,10 @@ public class UploadToOssUtil {
 	}
 
 	public void uploadAws(String filePath, String key1){
+		uploadAwsWithHeaders(filePath,key1,null);
+	}
+
+	public void uploadAwsWithHeaders(String filePath, String key1,Map<String,String> headers){
 		try{
 			uploadS3File(filePath, key1);
 		}catch (Exception e){