|
@@ -40,10 +40,7 @@ import org.springframework.util.ObjectUtils;
|
|
|
|
|
|
import java.io.File;
|
|
|
import java.nio.charset.StandardCharsets;
|
|
|
-import java.util.Date;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.Objects;
|
|
|
+import java.util.*;
|
|
|
import java.util.concurrent.Future;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
import java.util.concurrent.TimeoutException;
|
|
@@ -163,22 +160,26 @@ public class RabbitMqListener {
|
|
|
message.getResultReceiverMqName() : queueModelingPost;
|
|
|
buildSceneResult.setResultQueueName(resultQueueName);
|
|
|
ModelingBuildStatus status = null;
|
|
|
- Future<ModelingBuildStatus> future = null;
|
|
|
+ Integer errorType = null;
|
|
|
+ Future<Map<String, Object>> future = null;
|
|
|
try {
|
|
|
Map<String,Object> buildContext = new HashMap<>();
|
|
|
//计算前准备
|
|
|
preBuild(buildContext,message, buildLog);
|
|
|
future = SysConstants.executorService.submit(() -> {
|
|
|
try {
|
|
|
- return buildScene(buildContext,message, buildSceneResult,buildLog);
|
|
|
+ return buildScene(message, buildSceneResult,buildLog);
|
|
|
} catch (Exception e) {
|
|
|
log.error("服务实例:{} 构建异常:", SysConstants.hostName, e);
|
|
|
- e.printStackTrace();
|
|
|
- return ModelingBuildStatus.FAILED;
|
|
|
+ Map<String, Object> result = new HashMap<>();
|
|
|
+ result.put("status", ModelingBuildStatus.FAILED);
|
|
|
+ result.put("errorType", 1);
|
|
|
+ return result;
|
|
|
}
|
|
|
});
|
|
|
- status = future.get(SysConstants.modelTimeOut, TimeUnit.HOURS);
|
|
|
-
|
|
|
+ Map<String, Object> result = future.get(SysConstants.modelTimeOut, TimeUnit.HOURS);
|
|
|
+ status = (ModelingBuildStatus) result.get("status");
|
|
|
+ errorType = (Integer) result.get("errorType");
|
|
|
//结束计时
|
|
|
watch.stop();
|
|
|
buildLog.setDuration(watch.getTime(TimeUnit.SECONDS));
|
|
@@ -205,12 +206,16 @@ public class RabbitMqListener {
|
|
|
buildLog.setStatus(status.code());
|
|
|
buildSceneResult.setCameraType(message.getCameraType());
|
|
|
buildSceneResult.setBuildStatus(status);
|
|
|
+ buildSceneResult.setErrorType(errorType);
|
|
|
//计算后处理
|
|
|
afterBuild(message, buildSceneResult, buildLog);
|
|
|
|
|
|
}
|
|
|
|
|
|
- private ModelingBuildStatus buildScene(Map<String,Object> buildContext,BuildSceneCallMessage message, BuildSceneResultBean buildSceneResult,BuildLog logRecord) throws Exception{
|
|
|
+ private Map<String, Object> buildScene(BuildSceneCallMessage message, BuildSceneResultBean buildSceneResult,BuildLog logRecord) throws Exception{
|
|
|
+
|
|
|
+ Map<String, Object> result = new HashMap<>();
|
|
|
+
|
|
|
//如果mq生产者在消息体中设置了结算结果mq队列名,就发到这个队列,否则就发送到默认队列
|
|
|
String path = message.getPath();
|
|
|
String num = message.getSceneNum();
|
|
@@ -256,10 +261,13 @@ public class RabbitMqListener {
|
|
|
String resultsPath = path + File.separator + "results" + File.separator;
|
|
|
if (!new File(resultsPath + "upload.json").exists()) {
|
|
|
log.error("未检测到计算结果文件:upload.json");
|
|
|
- return ModelingBuildStatus.FAILED;
|
|
|
+ result.put("status", ModelingBuildStatus.FAILED);
|
|
|
+ result.put("errorType", 2);
|
|
|
+ return result;
|
|
|
}
|
|
|
|
|
|
- return ModelingBuildStatus.SUCCESS;
|
|
|
+ result.put("status", ModelingBuildStatus.SUCCESS);
|
|
|
+ return result;
|
|
|
}
|
|
|
|
|
|
Map<String, String> dataMap = buildService.getTypeString(cameraType, algorithm, resolution,dataJson);
|
|
@@ -275,10 +283,30 @@ public class RabbitMqListener {
|
|
|
String resultsPath = path + File.separator + "results" + File.separator;
|
|
|
if (!new File(resultsPath + "upload.json").exists()) {
|
|
|
log.error("未检测到计算结果文件:upload.json");
|
|
|
- return ModelingBuildStatus.FAILED;
|
|
|
+ result.put("status", ModelingBuildStatus.FAILED);
|
|
|
+ result.put("errorType", 2);
|
|
|
+ return result;
|
|
|
}
|
|
|
- log.info("八目上完oss结束修改数据:"+num);
|
|
|
- return ModelingBuildStatus.SUCCESS;
|
|
|
+
|
|
|
+ Object linkPanTargetListObj = message.getExt().get("linkPanTargetList");
|
|
|
+ if(Objects.nonNull(linkPanTargetListObj)){
|
|
|
+ List<String> linkPanTargetList = (List<String>) linkPanTargetListObj;
|
|
|
+ for (String target : linkPanTargetList) {
|
|
|
+ CreateObjUtil.build3dModel(target,null);
|
|
|
+
|
|
|
+ // 检测计算结果文件是否有生成
|
|
|
+ String linkPanoResultsPath = target + File.separator + "results" + File.separator;
|
|
|
+ if (!new File(linkPanoResultsPath + "upload.json").exists()) {
|
|
|
+ log.error("未检测到场景关联计算结果文件:upload.json");
|
|
|
+ result.put("status", ModelingBuildStatus.FAILED);
|
|
|
+ result.put("errorType", 3);
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ result.put("status", ModelingBuildStatus.SUCCESS);
|
|
|
+ return result;
|
|
|
}
|
|
|
|
|
|
private ModelingBuildStatus buildScene4E57(BuildSceneCallMessage message, BuildSceneResultBean buildSceneResult) throws Exception{
|
|
@@ -397,6 +425,7 @@ public class RabbitMqListener {
|
|
|
.path(buildSceneResult.getPath())
|
|
|
.hostName(SysConstants.hostName)
|
|
|
.ext(message.getExt())
|
|
|
+ .errorType(buildSceneResult.getErrorType())
|
|
|
.build();
|
|
|
buildResult.setBuildContext(message.getBuildContext());
|
|
|
rabbitMqProducer.sendByWorkQueue(buildSceneResult.getResultQueueName(),buildResult);
|