dengsixing 1 年間 前
コミット
17fa3138cc

+ 38 - 9
src/main/java/com/fdkankan/modeling/receiver/RabbitMqListener.java

@@ -1,5 +1,6 @@
 package com.fdkankan.modeling.receiver;
 
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.fdkankan.common.constant.CommonOperStatus;
@@ -131,7 +132,13 @@ public class RabbitMqListener {
         buildLog.setMessageId(messageId);
         buildLog.setContent(msg);
 
-        this.process(buildSceneMessage,buildLog);
+        Map<String, Object> ext = buildSceneMessage.getExt();
+        if(CollUtil.isNotEmpty(ext) && Objects.nonNull(ext.get("bizType")) && "e57".equals(ext.get("bizType"))){
+            this.process4E57(buildSceneMessage,buildLog);
+        }else{
+            this.process(buildSceneMessage,buildLog);
+        }
+
         log.info("场景计算结束,队列名:{},id:{}", queueNameService.getQueueName(), messageId);
 
         //计算完毕,将当前系统构建状态改为false
@@ -270,6 +277,33 @@ public class RabbitMqListener {
         return ModelingBuildStatus.SUCCESS;
     }
 
+    private ModelingBuildStatus buildScene4E57(BuildSceneCallMessage message, BuildSceneResultBean buildSceneResult) throws Exception{
+        //如果mq生产者在消息体中设置了结算结果mq队列名,就发到这个队列,否则就发送到默认队列
+        String path = message.getPath();
+        String num = message.getSceneNum();
+        //不同的相机不同的方法
+        String cameraType = message.getCameraType();
+        buildSceneResult.setCameraType(cameraType);
+        buildSceneResult.setNum(num);
+        buildSceneResult.setPath(path);
+
+        String splitType = "SPLIT_V27";
+        String skyboxType = "";
+
+        ComputerUtil.createProjectAndDataFile(path,num, splitType, skyboxType,null,null);
+        //计算模型并返回需要上传oss的文件集合
+        ComputerUtil.computer(num, path, "V3");
+
+        // 检测计算结果文件是否有生成
+        String resultsPath = path + File.separator + "results" + File.separator;
+        boolean success = ComputerUtil.checkComputeCompleted(resultsPath + "upload.json", 5, 300L);
+        if (!success) {
+            log.error("未检测到计算结果文件:upload.json");
+            return ModelingBuildStatus.FAILED;
+        }
+        return ModelingBuildStatus.SUCCESS;
+    }
+
     private void afterBuild(BuildSceneCallMessage message, BuildSceneResultBean buildSceneResult, BuildLog buildLog){
         ModelingBuildStatus buildStatus = null;
         try {
@@ -371,14 +405,11 @@ public class RabbitMqListener {
         //发送记录计算状态为计算中
         this.sendCallBuildProcessLog(message, ModelingBuildStatus.CALCULATING);
 
-        final BuildSceneResultBean buildSceneResult = new BuildSceneResultBean();
-        String resultQueueName = StrUtil.isNotBlank(message.getResultReceiverMqName()) ?
-                message.getResultReceiverMqName() : queueModelingPost;
-        buildSceneResult.setResultQueueName(resultQueueName);
+        BuildSceneResultBean buildSceneResult = new BuildSceneResultBean();
+        buildSceneResult.setResultQueueName(message.getResultReceiverMqName());
         ModelingBuildStatus status = null;
         Future<ModelingBuildStatus> future = null;
         try {
-            Map<String,Object> buildContext = new HashMap<>();
             // 初始化日志参数
             buildLog.setHostName(SysConstants.hostName);
             buildLog.setQueueName(queueNameService.getQueueName());
@@ -392,7 +423,7 @@ public class RabbitMqListener {
 
             future = SysConstants.executorService.submit(() -> {
                 try {
-                    return buildScene(buildContext,message, buildSceneResult,buildLog);
+                    return buildScene4E57(message, buildSceneResult);
                 } catch (Exception e) {
                     log.error("服务实例:{} 构建异常:", SysConstants.hostName, e);
                     e.printStackTrace();
@@ -435,7 +466,5 @@ public class RabbitMqListener {
         buildSceneResult.setDuration(buildLog.getDuration());
         this.sendCallResult(message, buildSceneResult);
         this.sendCallBuildProcessLog(message, buildStatus);
-
-
     }
 }