Pārlūkot izejas kodu

将vision.txt文件复制一份到result目录下

houweiyu 5 gadi atpakaļ
vecāks
revīzija
a3c346a2a3

+ 82 - 0
fdkanfang-common/src/main/java/com/fdkanfang/common/util/FileUtils.java

@@ -88,6 +88,21 @@ public class FileUtils {
     }
 
     /**
+     * 创建文件夹,如果存在,则先删除,再创建
+     * destDirName:文件夹名称
+     */
+    public static void createDirIfExistThenDel(String destDirName) {
+        File dir = new File(destDirName);
+        // 创建目录
+        if (dir.exists() && dir.isDirectory()) {
+            //存在,则先删除,再创建
+            deleteDirectory(destDirName);
+        }
+        createDir(destDirName);
+
+    }
+
+    /**
      * 大文件读写
      *
      * 1.先将文件中的内容读入到缓冲输入流中
@@ -293,6 +308,73 @@ public class FileUtils {
 
 
     /**
+     * 根据路径删除指定的目录,无论存在与否
+     *
+     * @param sPath 要删除的目录path
+     * @return 删除成功返回 true,否则返回 false。
+     */
+    public static boolean deleteFolder(String sPath) {
+        boolean flag = false;
+        File file = new File(sPath);
+        // 判断目录或文件是否存在
+        if (!file.exists()) {  // 不存在返回 false
+            return flag;
+        } else {
+            // 判断是否为文件
+            if (file.isFile()) {  // 为文件时调用删除文件方法
+                return deleteFile(sPath);
+            } else {  // 为目录时调用删除目录方法
+                return deleteDirectory(sPath);
+            }
+        }
+    }
+
+    /**
+     * 删除目录以及目录下的文件
+     *
+     * @param sPath 被删除目录的路径
+     * @return 目录删除成功返回true,否则返回false
+     */
+    public static boolean deleteDirectory(String sPath) {
+        //如果sPath不以文件分隔符结尾,自动添加文件分隔符
+        if (!sPath.endsWith(File.separator)) {
+            sPath = sPath + File.separator;
+        }
+        File dirFile = new File(sPath);
+        //如果dir对应的文件不存在,或者不是一个目录,则退出
+        if (!dirFile.exists() || !dirFile.isDirectory()) {
+            return false;
+        }
+        boolean flag = true;
+        //删除文件夹下的所有文件(包括子目录)
+        File[] files = dirFile.listFiles();
+        for (int i = 0; i < files.length; i++) {
+            //删除子文件
+            if (files[i].isFile()) {
+                flag = deleteFile(files[i].getAbsolutePath());
+                if (!flag) {
+                    break;
+                }
+            } //删除子目录
+            else {
+                flag = deleteDirectory(files[i].getAbsolutePath());
+                if (!flag) {
+                    break;
+                }
+            }
+        }
+        if (!flag) {
+            return false;
+        }
+        //删除当前目录
+        if (dirFile.delete()) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    /**
      * 删除文件夹或删除文件
      * @param folderPath 文件夹完整绝对路径
      */

+ 11 - 5
fdkanfang-web/src/main/java/com/fdkanfang/web/backend/HouseController.java

@@ -625,9 +625,11 @@ public class HouseController extends BaseController {
 
         log.warn("savePath: {}", savePath);
         String sourcePath = savePath + "/extras/";
+        String resultSourcePath = savePath + "/results/";
         try {
 
             FileUtils.createDir(sourcePath);
+            FileUtils.createDirIfExistThenDel(resultSourcePath);
           /**
                  * 以下字段为给算法部传递的参数(data.json),用于生成模型和
                  * 照片,提供前端使用,完整的参数如下:
@@ -681,8 +683,9 @@ public class HouseController extends BaseController {
             // json写入服务器
             FileUtils.fileWriter(floorPlan, sourcePath + "floorplan.json");
             FileUtils.fileWriter(vision, sourcePath + "vision.txt");
+            FileUtils.fileWriter(vision, resultSourcePath + "vision.txt");
             log.info("floorplan.json生成完成");
-            log.info("vision.txt生成完成");
+            log.info("/extras/vision.txt,/results/vision.txt生成完成");
             // 复制垂直校验图片到指定目录
             String verticalImagePath = OUTPATH + sceneCode+"/output_img";
             String panoImagePath = sourcePath + "images/";
@@ -741,16 +744,18 @@ public class HouseController extends BaseController {
             log.info("更新SceneProEditEntity数据完成");
 
             //发消息到mq
-            Map<String, Object> mqMap = formatMqReq(house , sceneProEntity , savePath);
-            rabbitTemplate.convertAndSend(RabbitConfig.PANO_EXCHANGE, RabbitConfig.PANO_QUEUE_ROUTING, mqMap);
-            log.info("入队成功");
+            Map<String, Object> mqMap = formatMqReq(house , sceneProEntity , savePath , RabbitConfig.PANO_CALLBACK_QUEUE);
+            String mqMapStr = JSON.toJSONString(mqMap);
+            log.info("发送mq消息给四维看看建模:{}", mqMapStr);
+            rabbitTemplate.convertAndSend(RabbitConfig.PANO_EXCHANGE, RabbitConfig.PANO_QUEUE_ROUTING, mqMapStr);
+            log.info("Mq入队成功");
 
         }
 
         return new R(MsgCode.SUCCESS_CODE, house);
     }
 
-    private Map<String, Object> formatMqReq(HouseEntity house , SceneProEntity sceneProEntity , String path){
+    private Map<String, Object> formatMqReq(HouseEntity house , SceneProEntity sceneProEntity , String path, String callbackQueue){
         Map<String ,Object> result = new HashMap<>();
         if(null == house){
             return result;
@@ -760,6 +765,7 @@ public class HouseController extends BaseController {
         result.put("sceneScheme" , sceneProEntity.getSceneScheme());
         result.put("userId" , house.getUserId());
         result.put("dataSource" , path);
+        result.put("callbackQueue" , callbackQueue);
         return  result;
     }