|
@@ -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);
|
|
|
-
|
|
|
-
|
|
|
}
|
|
|
}
|