Browse Source

场景计算拆分

dengsixing 3 years ago
parent
commit
69ae9868e0

+ 1 - 1
4dkankan-center-modeling/pom.xml

@@ -35,7 +35,7 @@
 		<dependency>
 			<groupId>com.fdkankan</groupId>
 			<artifactId>4dkankan-utils-mq</artifactId>
-			<version>2.0.0-SNAPSHOT</version>
+			<version>3.0.0-SNAPSHOT</version>
 		</dependency>
 
 		<dependency>

File diff suppressed because it is too large
+ 766 - 808
4dkankan-center-modeling/src/main/java/com/fdkankan/modeling/receiver/BuildSceneListener.java


File diff suppressed because it is too large
+ 794 - 794
4dkankan-center-modeling/src/main/java/com/fdkankan/modeling/receiver/BuildSceneMQListener.java


+ 12 - 1
4dkankan-center-scene/pom.xml

@@ -38,7 +38,7 @@
         <dependency>
             <groupId>com.fdkankan</groupId>
             <artifactId>4dkankan-utils-mq</artifactId>
-            <version>2.0.0-SNAPSHOT</version>
+            <version>3.0.0-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>com.fdkankan</groupId>
@@ -80,6 +80,17 @@
             <version>1.7.2</version>
         </dependency>
 
+        <dependency>
+            <artifactId>4dkankan-utils-app-push</artifactId>
+            <groupId>com.fdkankan</groupId>
+            <version>2.0.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>com.fdkankan</groupId>
+            <artifactId>4dkankan-utils-dingtalk</artifactId>
+            <version>2.0.0-SNAPSHOT</version>
+        </dependency>
+
 
     </dependencies>
 

+ 94 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/listener/BuildSceneFailDTMQListener.java

@@ -0,0 +1,94 @@
+package com.fdkankan.scene.listener;
+
+import com.alibaba.fastjson.JSONObject;
+import com.fdkankan.common.util.ComputerUtil;
+import com.fdkankan.fyun.oss.UploadToOssUtil;
+import com.fdkankan.mq.message.BuildSceneFailDTMqMessage;
+import com.fdkankan.mq.message.BuildSceneMqMessage;
+import com.fdkankan.mq.util.RocketMQProducer;
+import com.fdkankan.platform.api.feign.PlatformGoodsClient;
+import com.fdkankan.platform.api.feign.PlatformUserClient;
+import com.fdkankan.scene.service.IBuildScenePreService;
+import com.fdkankan.scene.service.ISceneEditControlsService;
+import com.fdkankan.scene.service.ISceneEditInfoService;
+import com.fdkankan.scene.service.ISceneFileBuildService;
+import com.fdkankan.scene.service.ISceneProExtService;
+import com.fdkankan.scene.service.ISceneProService;
+import com.fdkankan.scene.service.ISceneService;
+import com.fdkankan.scene.service.impl.BuildScenePreServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.rocketmq.spring.annotation.MessageModel;
+import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
+import org.apache.rocketmq.spring.core.RocketMQListener;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+
+/**
+ * <p>
+        场景计算前准备工作,如下载资源等
+ * </p>
+ * @author dengsixing
+ * @date 2022/2/23
+ **/
+@Slf4j
+@Component
+@RocketMQMessageListener(
+        consumerGroup = "${rocketmq.consumer.build-scene-dt-group-test}",
+        topic = "${rocketmq.build-scene-result.topicName.topic-modeling-a-dt-test}",
+        messageModel = MessageModel.CLUSTERING,//负载均衡模式
+        consumeThreadMax = 10
+)
+public class BuildSceneFailDTMQListener implements RocketMQListener<String> {
+
+
+    @Value("${main.url}")
+    private String mainUrl;
+
+    @Value("${scene.pro.url}")
+    private String sceneProUrl;
+
+    @Value("${scene.pro.new.url}")
+    private String sceneProNewUrl;
+
+    @Autowired
+    ISceneService sceneService;
+    @Autowired
+    ISceneFileBuildService sceneFileBuildService;
+    @Autowired
+    ISceneProService sceneProService;
+    @Autowired
+    ISceneProExtService sceneProExtService;
+    @Autowired
+    PlatformGoodsClient platformGoodsClient;
+    @Autowired
+    PlatformUserClient platformUserClient;
+    @Autowired
+    ISceneEditInfoService sceneEditInfoService;
+    @Autowired
+    ISceneEditControlsService sceneEditControlsService;
+    @Autowired
+    UploadToOssUtil uploadToOssUtil;
+    @Autowired
+    IBuildScenePreService buildScenePreService;
+    @Autowired
+    private RocketMQProducer producer;
+    @Value("${rocketmq.build-scene.topicName.topic-modeling-a}")
+    private String topicName;
+
+
+    @Override
+    public void onMessage(String message) {
+
+        BuildSceneFailDTMqMessage buildSceneMqMessage = JSONObject.parseObject(message, BuildSceneFailDTMqMessage.class);
+        log.info("开始处理消息,消费者组:{},主题名:{}, 消息内容:{}", "build-scene-dt-group", "topic-modeling-a-dt", message);
+        process(buildSceneMqMessage);
+    }
+
+    private void process(BuildSceneFailDTMqMessage message){
+        buildScenePreService.handFail(message.getReason(), message.getServerPath(), message.getNum(), message.getHostName(),
+            BuildScenePreServiceImpl.contentExt);
+    }
+
+}

+ 133 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/listener/BuildScenePreMQListener.java

@@ -0,0 +1,133 @@
+package com.fdkankan.scene.listener;
+
+import com.alibaba.fastjson.JSONObject;
+import com.fdkankan.common.constant.BuildStatus;
+import com.fdkankan.common.constant.ConstantFilePath;
+import com.fdkankan.common.constant.ExpiredStatus;
+import com.fdkankan.common.constant.SceneFrom;
+import com.fdkankan.common.constant.SceneResolution;
+import com.fdkankan.common.constant.SceneSource;
+import com.fdkankan.common.constant.SceneStatus;
+import com.fdkankan.common.constant.ServerCode;
+import com.fdkankan.common.constant.UploadFilePath;
+import com.fdkankan.common.response.ResultData;
+import com.fdkankan.common.util.ComputerUtil;
+import com.fdkankan.common.util.MatrixToImageWriterUtil;
+import com.fdkankan.common.util.SceneUtil;
+import com.fdkankan.fyun.oss.UploadToOssUtil;
+import com.fdkankan.mq.message.BuildSceneMqMessage;
+import com.fdkankan.mq.message.BuildSceneResultMqMessage;
+import com.fdkankan.mq.util.RocketMQProducer;
+import com.fdkankan.platform.api.feign.PlatformGoodsClient;
+import com.fdkankan.platform.api.feign.PlatformUserClient;
+import com.fdkankan.platform.api.vo.CameraDetail;
+import com.fdkankan.platform.api.vo.UserIncrement;
+import com.fdkankan.scene.entity.SceneEditControls;
+import com.fdkankan.scene.entity.SceneEditInfo;
+import com.fdkankan.scene.entity.SceneFileBuild;
+import com.fdkankan.scene.entity.ScenePro;
+import com.fdkankan.scene.entity.SceneProExt;
+import com.fdkankan.scene.service.IBuildScenePreService;
+import com.fdkankan.scene.service.ISceneEditControlsService;
+import com.fdkankan.scene.service.ISceneEditInfoService;
+import com.fdkankan.scene.service.ISceneFileBuildService;
+import com.fdkankan.scene.service.ISceneProExtService;
+import com.fdkankan.scene.service.ISceneProService;
+import com.fdkankan.scene.service.ISceneService;
+import com.fdkankan.scene.service.impl.BuildScenePreServiceImpl;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.rocketmq.spring.annotation.MessageModel;
+import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
+import org.apache.rocketmq.spring.core.RocketMQListener;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+
+/**
+ * <p>
+        场景计算前准备工作,如下载资源等
+ * </p>
+ * @author dengsixing
+ * @date 2022/2/23
+ **/
+@Slf4j
+@Component
+@RocketMQMessageListener(
+        consumerGroup = "${rocketmq.consumer.build-scene-pre-group-test}",
+        topic = "${rocketmq.build-scene-result.topicName.topic-modeling-a-pre-test}",
+        messageModel = MessageModel.CLUSTERING,
+    //负载均衡模式
+        consumeThreadMax = 10
+)
+public class BuildScenePreMQListener implements RocketMQListener<String> {
+
+
+    @Value("${main.url}")
+    private String mainUrl;
+
+    @Value("${scene.pro.url}")
+    private String sceneProUrl;
+
+    @Value("${scene.pro.new.url}")
+    private String sceneProNewUrl;
+
+    @Autowired
+    ISceneService sceneService;
+    @Autowired
+    ISceneFileBuildService sceneFileBuildService;
+    @Autowired
+    ISceneProService sceneProService;
+    @Autowired
+    ISceneProExtService sceneProExtService;
+    @Autowired
+    PlatformGoodsClient platformGoodsClient;
+    @Autowired
+    PlatformUserClient platformUserClient;
+    @Autowired
+    ISceneEditInfoService sceneEditInfoService;
+    @Autowired
+    ISceneEditControlsService sceneEditControlsService;
+    @Autowired
+    UploadToOssUtil uploadToOssUtil;
+    @Autowired
+    IBuildScenePreService buildScenePreService;
+    @Autowired
+    private RocketMQProducer producer;
+    @Value("${rocketmq.build-scene.topicName.topic-modeling-a}")
+    private String topicName;
+
+
+    @Override
+    public void onMessage(String message) {
+
+        BuildSceneMqMessage buildSceneMqMessage = JSONObject.parseObject(message, BuildSceneMqMessage.class);
+        log.info("开始处理消息,消费者组:{},主题名:{}, 消息内容:{}", "build-scene-pre-group", "topic-modeling-a-pre", message);
+        process(buildSceneMqMessage);
+    }
+
+    private void process(BuildSceneMqMessage message){
+        try {
+            //根据相机类型,组装资源路径
+            String path = SceneUtil.getPath(message.getPath(), message.getCameraName(),
+                message.getFileId(), Integer.parseInt(message.getCameraType()), message.getUnicode());
+
+            //下载资源到本地
+            this.buildScenePreService.downLoadSource(message, path);
+
+            //发送mq,就进行计算
+            producer.syncSend(topicName, message);
+
+        }catch (Exception e){
+            log.error("场景计算前置处理出错", e);
+            //发送钉钉
+            String serverPath = message.getPath().substring(0,message.getPath().lastIndexOf("/")+1).concat(message.getPrefix());
+            buildScenePreService.handFail("前置处理失败", serverPath, message.getSceneNum(), BuildScenePreServiceImpl.hostName, null);
+        }
+    }
+
+}

+ 136 - 94
4dkankan-center-scene/src/main/java/com/fdkankan/scene/listener/BuildSceneResultMQListener.java

@@ -24,13 +24,16 @@ import com.fdkankan.scene.entity.SceneEditInfo;
 import com.fdkankan.scene.entity.SceneFileBuild;
 import com.fdkankan.scene.entity.ScenePro;
 import com.fdkankan.scene.entity.SceneProExt;
+import com.fdkankan.scene.service.IBuildScenePreService;
 import com.fdkankan.scene.service.ISceneEditControlsService;
 import com.fdkankan.scene.service.ISceneEditInfoService;
 import com.fdkankan.scene.service.ISceneFileBuildService;
 import com.fdkankan.scene.service.ISceneProExtService;
 import com.fdkankan.scene.service.ISceneProService;
 import com.fdkankan.scene.service.ISceneService;
+import com.fdkankan.scene.service.impl.BuildScenePreServiceImpl;
 import java.io.File;
+import java.util.Map;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.rocketmq.spring.annotation.MessageModel;
 import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
@@ -42,6 +45,7 @@ import org.springframework.stereotype.Component;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
+import org.springframework.transaction.annotation.Transactional;
 
 
 /**
@@ -54,8 +58,8 @@ import java.util.Objects;
 @Slf4j
 @Component
 @RocketMQMessageListener(
-        consumerGroup = "${rocketmq.consumer.build-scene-result-group}",
-        topic = "${rocketmq.build-scene-result.topicName.topic-modeling-a}",
+        consumerGroup = "${rocketmq.consumer.build-scene-result-group-test}",
+        topic = "${rocketmq.build-scene-result.topicName.topic-modeling-a-test}",
         messageModel = MessageModel.CLUSTERING//负载均衡模式
 )
 public class BuildSceneResultMQListener implements RocketMQListener<String> {
@@ -93,6 +97,8 @@ public class BuildSceneResultMQListener implements RocketMQListener<String> {
     ISceneEditControlsService sceneEditControlsService;
     @Autowired
     UploadToOssUtil uploadToOssUtil;
+    @Autowired
+    IBuildScenePreService buildScenePreService;
 
 
     @Override
@@ -103,17 +109,22 @@ public class BuildSceneResultMQListener implements RocketMQListener<String> {
         process(resultMqMessage);
     }
 
-    private void process(BuildSceneResultMqMessage message){
+    @Transactional
+    public void process(BuildSceneResultMqMessage message){
+        Integer cameraType = Integer.parseInt(message.getCameraType());
+        String sceneCode = message.getSceneCode();
+        String fileId = message.getFileId();
+        Integer payStatus = message.getPayStatus();
+        String videosJson = message.getVideosJson();
+        Long computeTime = message.getComputeTime();
+        Boolean buildSuccess = message.getBuildSuccess();
+
+        Map<String, String> uploadFiles = message.getUploadFiles();
+        String path = message.getPath();
+        Integer pushChannel = message.getPushChannel();
+        String pushToken = message.getPushToken();
+        String prefix = message.getPrefix();
         try {
-            int cameraType = Integer.parseInt(message.getCameraType());
-            String sceneCode = message.getSceneCode();
-            String fileId = message.getFileId();
-            Long space = message.getSpace();
-            Integer payStatus = message.getPayStatus();
-            String videosJson = message.getVideosJson();
-            Long computeTime = message.getComputeTime();
-            Boolean buildSuccess = message.getBuildSuccess();
-            Integer sceneStatus = message.getSceneStatus();
             if(!buildSuccess){//建模失败,修改状态为失败状态
                 log.error("建模失败,修改状态为失败状态");
                 sceneService.updateStatus(sceneCode, SceneStatus.FAILD.code());
@@ -128,96 +139,127 @@ public class BuildSceneResultMQListener implements RocketMQListener<String> {
 
             //建模成功
             log.info("cameraType:{}",cameraType);
+
+            long space = buildScenePreService.calUseSpace(uploadFiles);
+
             if(cameraType < 3){
                 sceneService.updateTime(sceneCode, space, payStatus);
-            }else{
-                sceneProService.updateTime(sceneCode, space, payStatus, videosJson, computeTime);
-                SceneFileBuild sceneFileBuild = sceneFileBuildService.findByFileId(fileId);
-                if(sceneFileBuild != null){
-                    sceneFileBuild.setBuildStatus(BuildStatus.success.code());
-                    sceneFileBuildService.updateById(sceneFileBuild);
-                }
-                //更改相机容量
-                ScenePro scenePro = sceneProService.findBySceneNum(sceneCode);
-                if(Objects.nonNull(scenePro)){
-                    SceneProExt sceneProExt = sceneProExtService.findBySceneProId(scenePro.getId());
-                    ResultData<CameraDetail> resultData = platformGoodsClient.updateCameraDetailByCameraIdAndSpace(scenePro.getCameraId(), sceneProExt.getSpace());
-                    if(resultData.getCode() != ServerCode.SUCCESS.code()){
-                        log.error("调用platform服务updateCameraDetailByCameraIdAndSpace失败,参数{},{}" ,scenePro.getCameraId(), sceneProExt.getSpace());
-                        return ;
-                    }
-                    CameraDetail cameraDetail = JSONObject.parseObject(JSONObject.toJSONString(resultData.getData()), CameraDetail.class);
-
-                    ResultData<UserIncrement> resultData1 = platformUserClient.getUserIncrementByCameraId(scenePro.getCameraId());
-                    if(resultData1.getCode() != ServerCode.SUCCESS.code()){
-                        log.error("调用platform服务getUserIncrementByCameraId失败,参数{}" ,scenePro.getCameraId());
-                        return;
-                    }
-                    if( resultData1.getData() == null || resultData1.getData().getIsExpired() == ExpiredStatus.Expired.code()) {
-                        // 新上传的场景,如果总容量小于使用容量,则该大场景保留在临时存储空间30天
-                        if (cameraDetail.getTotalSpace().compareTo(cameraDetail.getUsedSpace()) == -1){
-                            List<Long> ids = new ArrayList<>();
-                            ids.add(scenePro.getId());
-                            sceneProService.tempScenes(ids);
-                        }
-                    }
-
-                    SceneSource sceneSource = SceneSource.get(sceneProExt.getSceneSource());
-                    switch (sceneSource){
-                        case BM:
-                            sceneProExt.setSceneResolution(SceneResolution.TILES_2K.code());
-                            sceneProExt.setSceneFrom(SceneFrom.PRO.code());
-                            break;
-                        case SM:
-                            sceneProExt.setSceneResolution(SceneResolution.TILES_1K.code());
-                            sceneProExt.setSceneFrom(SceneFrom.LITE.code());
-                            break;
-                        case ZT:
-                            sceneProExt.setSceneResolution(SceneResolution.TILES_4K.code());
-                            sceneProExt.setSceneFrom(SceneFrom.MINION.code());
-                            break;
-                        case JG:
-                            sceneProExt.setSceneResolution(SceneResolution.TILES_4K.code());
-                            sceneProExt.setSceneFrom(SceneFrom.LASER.code());
-                            break;
-                    }
-                    sceneProExtService.updateById(sceneProExt);
-
-                    SceneEditInfo sceneEditInfo = sceneEditInfoService.getBySceneProId(scenePro.getId());
-                    SceneEditControls sceneEditControls = null;
-                    if(sceneEditInfo == null){
-                        sceneEditInfo = new SceneEditInfo();
-                        sceneEditInfo.setSceneProId(scenePro.getId());
-                        sceneEditInfo.setDescription(scenePro.getSceneDec());
-                        sceneEditInfo.setTitle(scenePro.getSceneName());
-                        sceneEditInfoService.save(sceneEditInfo);
-                    }else{
-                        sceneEditControls = sceneEditControlsService.getBySceneEditId(sceneEditInfo.getId());
-                    }
-                    if(sceneEditControls == null){
-                        sceneEditControls = new SceneEditControls();
-                        sceneEditControls.setEditInfoId(sceneEditInfo.getId());
-                        sceneEditControlsService.save(sceneEditControls);
-                    }
-                }
+                uploadToOssUtil.uploadMulFiles(uploadFiles);
+                return;
+            }
+
+            //写入数据库
+            ScenePro scenePro = this.updateDb(sceneCode, space, payStatus, videosJson, computeTime, fileId);
+            SceneProExt sceneProExt = sceneProExtService.findBySceneProId(scenePro.getId());
+
+            String sceneUrl = mainUrl + "/" + sceneProNewUrl;
+            String outPathZh = ConstantFilePath.BASE_PATH + File.separator + "sceneQRcode/"+sceneCode+".png";
+            String outPathEn = ConstantFilePath.BASE_PATH + File.separator + "sceneQRcode/"+sceneCode+"_en.png";
+            //生成新的分享的二维码-中文版本
+            MatrixToImageWriterUtil.createQRCode(sceneUrl + sceneCode, outPathZh,null);
+            //生成新的分享的二维码-英文版本
+            MatrixToImageWriterUtil.createQRCode(sceneUrl + sceneCode + "&lang=en", outPathEn, null);
+            //上传二维码
+            uploadToOssUtil.upload(outPathZh, String.format(UploadFilePath.DOWNLOADS_QRCODE, sceneCode) + sceneCode + ".png");
+            uploadToOssUtil.upload(outPathEn, String.format(UploadFilePath.DOWNLOADS_QRCODE, sceneCode) + sceneCode + "_en.png");
+
+            //上传计算结果中的caches/images和caches/videos
+            buildScenePreService.uploadCaches(sceneCode, uploadFiles, path);
+
+
+            //上传文件
+            uploadToOssUtil.uploadMulFiles(uploadFiles);
+
+            //拷贝部分文件到编辑目录,用于用户编辑
+            buildScenePreService.copyToEditDir(sceneCode);
 
-                String sceneUrl = mainUrl + "/" + sceneProNewUrl;
-                String outPathZh = ConstantFilePath.BASE_PATH + File.separator + "sceneQRcode/"+sceneCode+".png";
-                String outPathEn = ConstantFilePath.BASE_PATH + File.separator + "sceneQRcode/"+sceneCode+"_en.png";
-                //生成新的分享的二维码-中文版本
-                MatrixToImageWriterUtil.createQRCode(sceneUrl + sceneCode, outPathZh,null);
-                //生成新的分享的二维码-英文版本
-                MatrixToImageWriterUtil.createQRCode(sceneUrl + sceneCode + "&lang=en", outPathEn, null);
-                //上传二维码
-                uploadToOssUtil.upload(outPathZh, String.format(UploadFilePath.DOWNLOADS_QRCODE, sceneCode) + sceneCode + ".png");
-                uploadToOssUtil.upload(outPathEn, String.format(UploadFilePath.DOWNLOADS_QRCODE, sceneCode) + sceneCode + "_en.png");
+            //计算成功,发短信
+            buildScenePreService.sendSms(pushChannel,pushToken, cameraType, scenePro.getSceneName(), scenePro.getWebSite());
 
+            //上传日志文件
+            buildScenePreService.uploadLogFile(sceneCode, sceneProExt.getDataSource());
+
+        }catch (Exception e){
+            log.error("场景计算后置处理出错:{}",e);
+            //发送钉钉
+            String serverPath = message.getPath().substring(0,message.getPath().lastIndexOf("/")+1).concat(prefix);
+            buildScenePreService.handFail("后置处理失败", serverPath, sceneCode, BuildScenePreServiceImpl.hostName, BuildScenePreServiceImpl.contentExt);
+        }
+    }
+
+    private ScenePro updateDb(String sceneCode, Long space, Integer payStatus, String videosJson, Long computeTime, String fileId) throws Exception{
+        ScenePro scenePro = sceneProService.findBySceneNum(sceneCode);
+
+        sceneProService.updateTime(sceneCode, space, payStatus, videosJson, computeTime);
+        SceneFileBuild sceneFileBuild = sceneFileBuildService.findByFileId(fileId);
+        if(sceneFileBuild != null){
+            sceneFileBuild.setBuildStatus(BuildStatus.success.code());
+            sceneFileBuildService.updateById(sceneFileBuild);
+        }
+
+        if(Objects.nonNull(scenePro)){
+            SceneProExt sceneProExt = sceneProExtService.findBySceneProId(scenePro.getId());
+            ResultData<CameraDetail> resultData = platformGoodsClient.updateCameraDetailByCameraIdAndSpace(scenePro.getCameraId(), sceneProExt.getSpace());
+            if(resultData.getCode() != ServerCode.SUCCESS.code()){
+                log.error("调用platform服务updateCameraDetailByCameraIdAndSpace失败,参数{},{}" ,scenePro.getCameraId(), sceneProExt.getSpace());
+                throw new Exception(ServerCode.FEIGN_REQUEST_FAILD.message());
+            }
+            CameraDetail cameraDetail = JSONObject.parseObject(JSONObject.toJSONString(resultData.getData()), CameraDetail.class);
+
+            ResultData<UserIncrement> resultData1 = platformUserClient.getUserIncrementByCameraId(scenePro.getCameraId());
+            if(resultData1.getCode() != ServerCode.SUCCESS.code()){
+                log.error("调用platform服务getUserIncrementByCameraId失败,参数{}" ,scenePro.getCameraId());
+                throw new Exception(ServerCode.FEIGN_REQUEST_FAILD.message());
+            }
+            if( resultData1.getData() == null || resultData1.getData().getIsExpired() == ExpiredStatus.Expired.code()) {
+                // 新上传的场景,如果总容量小于使用容量,则该大场景保留在临时存储空间30天
+                if (cameraDetail.getTotalSpace().compareTo(cameraDetail.getUsedSpace()) == -1){
+                    List<Long> ids = new ArrayList<>();
+                    ids.add(scenePro.getId());
+                    sceneProService.tempScenes(ids);
+                }
             }
 
+            SceneSource sceneSource = SceneSource.get(sceneProExt.getSceneSource());
+            switch (sceneSource){
+                case BM:
+                    sceneProExt.setSceneResolution(SceneResolution.TILES_2K.code());
+                    sceneProExt.setSceneFrom(SceneFrom.PRO.code());
+                    break;
+                case SM:
+                    sceneProExt.setSceneResolution(SceneResolution.TILES_1K.code());
+                    sceneProExt.setSceneFrom(SceneFrom.LITE.code());
+                    break;
+                case ZT:
+                    sceneProExt.setSceneResolution(SceneResolution.TILES_4K.code());
+                    sceneProExt.setSceneFrom(SceneFrom.MINION.code());
+                    break;
+                case JG:
+                    sceneProExt.setSceneResolution(SceneResolution.TILES_4K.code());
+                    sceneProExt.setSceneFrom(SceneFrom.LASER.code());
+                    break;
+            }
+            sceneProExtService.updateById(sceneProExt);
 
-        }catch ( Exception e){
-            log.error("处理计算结果消息出错:{}",e);
+            SceneEditInfo sceneEditInfo = sceneEditInfoService.getBySceneProId(scenePro.getId());
+            SceneEditControls sceneEditControls = null;
+            if(sceneEditInfo == null){
+                sceneEditInfo = new SceneEditInfo();
+                sceneEditInfo.setSceneProId(scenePro.getId());
+                sceneEditInfo.setDescription(scenePro.getSceneDec());
+                sceneEditInfo.setTitle(scenePro.getSceneName());
+                sceneEditInfoService.save(sceneEditInfo);
+            }else{
+                sceneEditControls = sceneEditControlsService.getBySceneEditId(sceneEditInfo.getId());
+            }
+            if(sceneEditControls == null){
+                sceneEditControls = new SceneEditControls();
+                sceneEditControls.setEditInfoId(sceneEditInfo.getId());
+                sceneEditControlsService.save(sceneEditControls);
+            }
         }
+
+        return scenePro;
     }
 
 }

+ 0 - 18
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/IBuildScenePreProService.java

@@ -1,18 +0,0 @@
-package com.fdkankan.scene.service;
-
-import com.alibaba.fastjson.JSONObject;
-import java.util.Map;
-
-/**
- * <p>
- * TODO
- * </p>
- *
- * @author dengsixing
- * @since 2022/3/1
- **/
-public interface IBuildScenePreProService {
-
-    Map<String, String> getTypeString(String cameraType, String algorithm, String resolution, JSONObject dataJson);
-
-}

+ 40 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/IBuildScenePreService.java

@@ -0,0 +1,40 @@
+package com.fdkankan.scene.service;
+
+import com.alibaba.fastjson.JSONObject;
+import com.fdkankan.mq.message.BuildSceneMqMessage;
+import java.io.IOException;
+import java.util.Map;
+
+/**
+ * <p>
+ * TODO
+ * </p>
+ *
+ * @author dengsixing
+ * @since 2022/3/1
+ **/
+public interface IBuildScenePreService {
+
+    Map<String, String> getTypeString(String cameraType, String algorithm, String resolution, JSONObject dataJson);
+
+    String getPath(BuildSceneMqMessage buildSceneMqMessage) throws Exception;
+
+    void downLoadSource(BuildSceneMqMessage buildSceneMqMessage, String path) throws Exception;
+
+    void uploadFileMapHandler(String num, int cameraType, Map<String, String> map);
+
+    void uploadCaches(String num, Map<String,String> map, String path);
+
+    void copyToEditDir(String num) throws IOException;
+
+    void sendSms(Integer pushChannel, String pushToken, int cameraType, String sceneName, String webSite);
+
+    void handFail(String reason, String serverPath, String num, String hostName, String contentExt);
+
+    Long calUseSpace(Map<String, String> uploadFile);
+
+    void uploadLogFile(String num, String dataSource);
+
+
+
+}

+ 0 - 25
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/BuildScenePreProServiceImpl.java

@@ -1,25 +0,0 @@
-package com.fdkankan.scene.service.impl;
-
-import com.alibaba.fastjson.JSONObject;
-import com.fdkankan.scene.service.IBuildScenePreProService;
-import java.util.Map;
-import org.springframework.stereotype.Service;
-
-/**
- * <p>
- * TODO
- * </p>
- *
- * @author dengsixing
- * @since 2022/3/1
- **/
-@Service
-public class BuildScenePreProServiceImpl implements IBuildScenePreProService {
-
-
-    @Override
-    public Map<String, String> getTypeString(String cameraType, String algorithm, String resolution,
-        JSONObject dataJson) {
-        return null;
-    }
-}

+ 328 - 0
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/BuildScenePreServiceImpl.java

@@ -0,0 +1,328 @@
+package com.fdkankan.scene.service.impl;
+
+import static com.fdkankan.push.PushMessageConfig.ANDROID_KEY;
+import static com.fdkankan.push.PushMessageConfig.ANDROID_KEY_Z;
+import static com.fdkankan.push.PushMessageConfig.ANDROID_SECRET;
+import static com.fdkankan.push.PushMessageConfig.ANDROID_SECRET_Z;
+import static com.fdkankan.push.PushMessageConfig.IOS_KEY;
+import static com.fdkankan.push.PushMessageConfig.IOS_KEY_Z;
+import static com.fdkankan.push.PushMessageConfig.IOS_SECRET;
+import static com.fdkankan.push.PushMessageConfig.IOS_SECRET_Z;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.fdkankan.common.constant.ConstantFilePath;
+import com.fdkankan.common.constant.UploadFilePath;
+import com.fdkankan.common.util.CreateObjUtil;
+import com.fdkankan.common.util.FileUtil;
+import com.fdkankan.common.util.FileUtils;
+import com.fdkankan.dingtalk.DingTalkSendUtils;
+import com.fdkankan.fyun.constant.StorageType;
+import com.fdkankan.fyun.oss.UploadToOssUtil;
+import com.fdkankan.mq.message.BuildSceneMqMessage;
+import com.fdkankan.push.PushMessageConfig;
+import com.fdkankan.push.PushMsgUtil;
+import com.fdkankan.scene.service.IBuildScenePreService;
+import com.taobao.api.ApiException;
+import java.io.File;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.security.InvalidKeyException;
+import java.security.NoSuchAlgorithmException;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Objects;
+import java.util.concurrent.CompletableFuture;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * TODO
+ * </p>
+ *
+ * @author dengsixing
+ * @since 2022/3/1
+ **/
+@Slf4j
+@Service
+public class BuildScenePreServiceImpl implements IBuildScenePreService {
+
+    @Autowired
+    UploadToOssUtil uploadToOssUtil;
+    @Value("${upload.type}")
+    private String ossType;
+    @Autowired
+    private DingTalkSendUtils dingTalkSendUtils;
+    @Value("${environment:dev}")
+    private String environment;
+
+    public static String hostName;
+
+    public static final String DINGTALK_MSG_PATTERN = "**环境**: %s\n\n" +
+        "**服务器名称**: %s\n\n" +
+        "**失败原因**: %s\n\n" +
+        "**num**: %s\n\n" +
+        "**server-path**: %s\n\n";
+//        "**algorithm-log**: [https://4dkk.4dage.com/build_log/%s/console.log](https://4dkk.4dage.com/build_log/%s/console.log)";
+
+    public static final String contentExt = "**algorithm-log**: [https://4dkk.4dage.com/build_log/%s/console.log](https://4dkk.4dage.com/build_log/%s/console.log)";
+
+    @Value("${hostName.filePath:/opt/hosts/hosts.txt}")
+    public void setHostName(String filePath){
+        try {
+            this.hostName = FileUtils.readFile(filePath);
+            log.error("从文件({})中获取服务器名称:{}", filePath,hostName);
+        } catch (Exception e) {
+            log.error("从文件中获取服务器名称失败,文件路径{}", filePath);
+            e.printStackTrace();
+        }
+    }
+
+
+    @Override
+    public Map<String, String> getTypeString(String cameraType, String algorithm, String resolution,
+        JSONObject dataJson) {
+        return null;
+    }
+
+    @Override
+    public String getPath(BuildSceneMqMessage buildSceneMqMessage) throws Exception{
+        String path = buildSceneMqMessage.getPath();
+        String cameraName = buildSceneMqMessage.getCameraName();
+        String fileId = buildSceneMqMessage.getFileId();
+        int cameraType = Integer.parseInt(buildSceneMqMessage.getCameraType());
+        String unicode = buildSceneMqMessage.getUnicode();
+        if(cameraType < 3){
+            return path;
+        }
+        String localPath = cameraName.replace("4DKKPRO_", "")
+            .replace("-fdage", "").toLowerCase() +
+            File.separator + fileId + File.separator + unicode;
+
+        if(cameraType == 5 || cameraType == 6){
+            path = ConstantFilePath.BUILD_MODEL_PATH + unicode;
+        }else if(cameraType == 14) {
+            path = ConstantFilePath.BUILD_MODEL_LASER_PATH + localPath;
+        } else{
+            path = ConstantFilePath.BUILD_MODEL_PATH + localPath;
+        }
+        return path;
+    }
+
+    @Override
+    public void downLoadSource(BuildSceneMqMessage buildSceneMqMessage,String path) throws Exception{
+        String cameraName = buildSceneMqMessage.getCameraName();
+        String fileId = buildSceneMqMessage.getFileId();
+        String unicode = buildSceneMqMessage.getUnicode();
+        int cameraType = Integer.parseInt(buildSceneMqMessage.getCameraType());
+        String prefix = buildSceneMqMessage.getPrefix();
+        String imgsName = buildSceneMqMessage.getImgsName();
+        if(cameraType < 3){
+            for(int i = 0;i<5;++i){
+                try{
+                    FileUtils.downLoadFromUrl(prefix+imgsName+"?m="+new Date().getTime(), imgsName,
+                        path + File.separator + "capture");
+                    FileUtils.decompress(path + File.separator + "capture" +File.separator+imgsName,
+                        path + File.separator + "capture") ;
+                    break;
+                }catch(Exception e){
+                    log.error(String.format("第%d次下载并解压资源失败", i+1),  e);
+                    if(i<4)
+                    {
+                        FileUtils.deleteFile(path + File.separator + "capture" +File.separator+imgsName);
+                        FileUtils.delFolder(path + File.separator + "capture" +File.separator+"images");
+                    }
+                    Thread.sleep(10000);
+                }
+            }
+            FileUtils.deleteFile(path + File.separator + "capture" +File.separator+"zip.Zip");
+        }else{
+            String ossPath = ConstantFilePath.OSS_PREFIX + cameraName.replace("4DKKPRO_", "")
+                .replace("-fdage", "").toLowerCase() + File.separator + fileId + File.separator
+                + unicode + File.separator;
+            if(cameraType == 5 || cameraType == 6){
+                path = ConstantFilePath.BUILD_MODEL_PATH + unicode;
+                //下载zip包
+                FileUtils.downLoadFromUrl(prefix + "/" + imgsName + "?m=" + System.currentTimeMillis(), imgsName, path + File.separator + "capture");
+                //解压
+                FileUtils.decompress(path + File.separator + "capture" + File.separator + imgsName,
+                    path + File.separator + "capture") ;
+                //删除压缩包
+                FileUtil.delFile(path + File.separator + "capture" + File.separator + imgsName);
+            }else if(cameraType == 14) {
+                CreateObjUtil.ossUtilCp(ossPath,path + File.separator + "capture");
+            } else{
+                CreateObjUtil.ossUtilCp(ossPath,path + File.separator + "capture");
+            }
+        }
+    }
+
+    @Override
+    public void uploadFileMapHandler(String num, int cameraType, Map<String, String> map) {
+
+        String dataPath = String.format("data/data%s/", num);
+        String imagePath = String.format("images/images%s/", num);
+        String videoPath = String.format("video/video%s/", num);
+
+        String dataViewPath = String.format(UploadFilePath.DATA_VIEW_PATH, num);
+        String imgViewPath = String.format(UploadFilePath.IMG_VIEW_PATH, num);
+        String videosViewPath = String.format(UploadFilePath.VIDEOS_VIEW_PATH, num);
+
+        map.entrySet().parallelStream().forEach(entry -> {
+
+            String key = entry.getKey();
+            String value = entry.getValue();
+            if(value.contains(dataPath)){
+                map.put(key, value.replace(dataPath, dataViewPath));
+            }
+            if(value.contains(imagePath)){
+                map.put(key, value.replace(imagePath, imgViewPath));
+            }
+            if(value.contains(videoPath)){
+                map.put(key, value.replace(videoPath, videosViewPath));
+            }
+        });
+    }
+
+    @Override
+    public void uploadCaches(String num, Map<String,String> map, String path){
+
+        String sceneNumPAth = String.format("scene/%s", num);
+
+        List<String> imagesList = FileUtil.getFileList(path + "/caches/images");
+        log.info("caches/images_path:{}", path + "/caches/images");
+        if(CollUtil.isNotEmpty(imagesList)){
+            log.info("上传的caches/images文件列表:{}", imagesList.toString());
+            imagesList.stream().forEach(str -> map.put(str, str.replace(path, sceneNumPAth)));
+        }
+
+        List<String> videosList = FileUtil.getFileList(path + "/caches/videos");
+        if(CollUtil.isNotEmpty(videosList)){
+            log.info("上传的caches/videos文件列表:{}", videosList.toString());
+            videosList.stream().forEach(str -> map.put(str, str.replace(path, sceneNumPAth)));
+        }
+    }
+
+    @Override
+    public void copyToEditDir(String num) throws IOException {
+
+        String editImagesPath = String.format(UploadFilePath.IMG_EDIT_PATH, num);
+        String viewImagesPath = String.format(UploadFilePath.IMG_VIEW_PATH, num);
+
+        String editDataPath = String.format(UploadFilePath.DATA_EDIT_PATH, num);
+        String viewDataPath = String.format(UploadFilePath.DATA_VIEW_PATH, num);
+
+        Map<String, String> map = new HashMap<>();
+        map.put(editImagesPath + "vision.modeldata", viewImagesPath + "vision.modeldata");
+        map.put(editImagesPath + "vision2.modeldata", viewImagesPath + "vision2.modeldata");
+        map.put(editDataPath + "floorplan_cad.json", viewDataPath + "floorplan_cad.json");
+
+        for (Entry<String, String> entry : map.entrySet()) {
+            uploadToOssUtil.copyFiles(entry.getValue(), entry.getKey());
+        }
+    }
+
+    @Override
+    public void sendSms(Integer pushChannel, String pushToken, int cameraType, String sceneName, String webSite){
+        log.info("推送消息,渠道是 {}, 手机token是 {}", pushChannel, pushToken);
+        if(Objects.isNull(pushChannel) && StrUtil.isBlank(pushToken))
+            return;
+
+        try{
+            if(StorageType.AWS.code().equals(ossType)){
+                PushMsgUtil.googlePushMsg(ConstantFilePath.BASE_PATH + "/refreshToken.json", pushToken,
+                    sceneName + "计算完成", "您上传的" + sceneName + "计算完成,点击查看", webSite);
+                return;
+            }
+
+            PushMessageConfig demo = null;
+            if(pushChannel == 0){
+                if(cameraType == 10 || cameraType == 13){
+                    //ios
+                    log.info("IOS_KEY:{}, IOS_SECRET:{}", IOS_KEY_Z, IOS_SECRET_Z);
+                    demo = new PushMessageConfig(IOS_KEY_Z, IOS_SECRET_Z);
+                    demo.sendIOSUnicast(pushToken,  "四维看看Minion",
+                        sceneName + "计算完成", "您上传的" + sceneName + "计算完成,点击查看", webSite);
+                }else {
+                    //ios
+                    log.info("IOS_KEY:{}, IOS_SECRET:{}", IOS_KEY, IOS_SECRET);
+                    demo = new PushMessageConfig(IOS_KEY, IOS_SECRET);
+                    demo.sendIOSUnicast(pushToken, "四维看看Pro",
+                        sceneName + "计算完成", "您上传的" + sceneName + "计算完成,点击查看", webSite);
+                }
+            }else {
+                if(cameraType == 10 || cameraType == 13){
+                    //ios
+                    //安卓
+                    log.info("ANDROID_KEY:{}, ANDROID_SECRET:{}", ANDROID_KEY_Z, ANDROID_SECRET_Z);
+                    demo = new PushMessageConfig(ANDROID_KEY_Z, ANDROID_SECRET_Z);
+                    demo.sendAndroidUnicast2(pushToken, "四维看看Minion",
+                        sceneName + "计算完成", "您上传的" + sceneName + "计算完成,点击查看", webSite);
+                }else {
+                    //安卓
+                    log.info("ANDROID_KEY:{}, ANDROID_SECRET:{}", ANDROID_KEY, ANDROID_SECRET);
+                    demo = new PushMessageConfig(ANDROID_KEY, ANDROID_SECRET);
+                    demo.sendAndroidUnicast(pushToken, "四维看看Pro",
+                        sceneName + "计算完成", "您上传的" + sceneName + "计算完成,点击查看", webSite);
+                }
+            }
+            log.info("消息推送结束!");
+        }catch (Exception e){
+            log.error("推送消息失败:", e);
+        }
+    }
+
+    @Override
+    public void handFail(String reason, String serverPath, String num, String hostName, String contentExt) {
+        CompletableFuture.runAsync(() -> {
+            try {
+                String contentFormat = StrUtil.isBlank(contentExt) ? this.DINGTALK_MSG_PATTERN : this.DINGTALK_MSG_PATTERN +  contentExt;
+                String content = String.format(contentFormat, this.environment, hostName, reason, num, serverPath, num, num);
+                log.error("发送钉钉消息,content:{}", content);
+                dingTalkSendUtils.sendActioncardMsgToDingRobot(content,"场景计算失败");
+            } catch (ApiException | UnsupportedEncodingException | NoSuchAlgorithmException | InvalidKeyException apiException) {
+                log.error("发送钉钉消息失败", apiException);
+            }
+        });
+    }
+
+    @Override
+    public Long calUseSpace(Map<String, String> uploadFile) {
+        File spaceFile = null;
+        long space = 0L;
+        for (String key : uploadFile.keySet()) {
+            spaceFile = new File(key);
+            if(spaceFile.exists()){
+                space += spaceFile.length();
+            }
+        }
+        return space;
+    }
+
+    @Override
+    public void uploadLogFile(String num, String dataSource) {
+        String dataPath = String.format(UploadFilePath.DATA_VIEW_PATH, num);
+
+        //todo 待删除old_path
+        uploadToOssUtil.upload(ConstantFilePath.SCENE_PATH+"data/data"+num+File.separator+"status.json",
+            "data/data"+num+File.separator+"status.json");
+
+        uploadToOssUtil.upload(ConstantFilePath.SCENE_PATH+"data/data"+num+File.separator+"status.json",
+            dataPath+"status.json");
+
+        //上送日志  //todo 待删除old_path
+        uploadToOssUtil.upload(dataSource+File.separator+"console.log",
+            "build_log/"+num+File.separator+"console.log");
+
+        //上送日志
+        uploadToOssUtil.upload(dataSource+File.separator+"console.log",
+            dataPath+"console.log");
+    }
+}

+ 38 - 81
4dkankan-center-scene/src/main/java/com/fdkankan/scene/service/impl/SceneFileBuildServiceImpl.java

@@ -91,6 +91,8 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
 
     @Value("${rocketmq.build-scene.topicName.topic-modeling-a}")
     private String topicModelingA;
+    @Value("${rocketmq.build-scene.topicName.topic-modeling-a-pre-test}")
+    private String topicModelingAPre;
 
     @Value("${rocketmq.build-scene.topicName.topic-laser-a}")
     private String topicLaserA;
@@ -1124,7 +1126,9 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
         if(jsonObject.getJSONObject("cam").getIntValue("type") == 10){
             mqProducer.sendOneWay(topicLaserA, scene.getMqMsg());
         }else  if(scene != null){
-            mqProducer.sendInOrder(topicModelingA, scene.getId()+"", scene.getMqMsg());
+//            mqProducer.sendInOrder(topicModelingA, scene.getId()+"", scene.getMqMsg());
+            mqProducer.syncSend(topicModelingAPre, scene.getMqMsg());
+
         }
     }
 
@@ -1172,7 +1176,7 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
                 throw new BusinessException(ErrorCode.FAILURE_CODE_3015);
             }
             ScenePO scenePO = this.createScene(sceneNum, camera.getId(), camera.getChildName(), buildScene.getPhoneId(),
-                    buildScene.getSceneKey(), buildScene.getUnicode(), cameraDetail.getGoodsId(), "0", buildScene.getPrefix(),
+                    buildScene.getSceneKey(), buildScene.getUnicode(), cameraDetail.getCameraType(), "0", buildScene.getPrefix(),
                     buildScene.getFileName(), buildScene.getThumb(), "0", cameraDetail.getUserId(), user.getUserName(),
                     buildScene.getAlgorithm(), buildScene.getShootCount(), buildScene.getSceneName(),
                     buildScene.getSceneDec(), buildScene.getSceneType(), buildScene.getGps(), 0, mainUrl + sceneUrl, ecsType);
@@ -1464,7 +1468,7 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
     }
 
     public ScenePO createScene(String projectNum, Long cameraId, String cameraName, String phoneId, String scenepsd,
-                                      String unicode, Long cameraType, String fileId, String prefix,
+                                      String unicode, Integer cameraType, String fileId, String prefix,
                                       String imgsName, String pic, String isModel, Long userId, String userName,
                                       String algorithm, Integer sceneShootCount, String sceneName,
                                       String sceneDec, Integer sceneType, String gps,
@@ -1515,24 +1519,29 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
             scene.setThumb(ConstantUrl.DEFAULT_SCENE_PIC);
         }
 
-        String parametr = "";
-        parametr+=unicode+":;"+path+":;"+prefix+":;"+imgsName+":;"+projectNum+":;"+isModel;
-        if(userName!=null&&!userName.trim().equals(""))
+        BuildSceneMqMessage buildSceneMqMessage = new BuildSceneMqMessage();
+        buildSceneMqMessage.setUnicode(unicode);
+        buildSceneMqMessage.setPath(path);
+        buildSceneMqMessage.setPrefix(prefix);
+        buildSceneMqMessage.setImgsName(imgsName);
+        buildSceneMqMessage.setSceneNum(projectNum);
+        buildSceneMqMessage.setIsModel(isModel);
+        buildSceneMqMessage.setCameraType(String.valueOf(cameraType));
+        buildSceneMqMessage.setAlgorithm(algorithm);
+        buildSceneMqMessage.setFileId(fileId);
+        buildSceneMqMessage.setCameraName(cameraName);
+
+        if(StrUtil.isNotBlank(userName))
         {
-            parametr+=":;"+userName;
+            buildSceneMqMessage.setUserName(userName);
             scene.setUserId(userId);
         }
         else
         {
-            parametr+=":;noMan";
+            buildSceneMqMessage.setUserName("noMan");
         }
-        parametr+=":;"+cameraType;
-        parametr+=":;"+algorithm;
-        parametr += ":;" + fileId;
-        parametr += ":;" + cameraName;
-        parametr += ":;1";
-        log.info("大场景添加到队列:"+parametr);
-        mqProducer.syncSend(topicModelingA, parametr);
+//        mqProducer.syncSend(topicModelingA, buildSceneMqMessage);
+        mqProducer.syncSend(topicModelingAPre, buildSceneMqMessage);
 
         if(sceneShootCount == null)
         {
@@ -2128,14 +2137,13 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
             String unicode = jsonObject.getString("creator") + "_" + jsonObject.getString("uuidtime");
             scenePO = this.createScene(sceneCode, camera.getId(),
                     cameraName, jsonObject.getString("creator"),
-                    jsonObject.getString("pwd"), unicode, detail.getGoodsId(),
+                    jsonObject.getString("pwd"), unicode, detail.getCameraType(),
                     fileId, "http://creator.4dkankan.com/" + unicode + File.separator, "zip.Zip",
                     jsonObject.getString("scenePic"), "0", userId, userName,
                     jsonObject.getString("location") != null && "1".equals(jsonObject.getString("location")) ? "sfm" : "slam",
                     jsonObject.getJSONArray("imgs").size(), jsonObject.getString("name"), jsonObject.getString("info"),
                     jsonObject.getInteger("scenetype"), jsonObject.getString("gps"),
                     1, mainUrl + sceneUrl, ecsType);
-
         } else {
             String cameraName = jsonObject.getJSONObject("cam").getString("uuid");
             String userName = null;
@@ -2170,24 +2178,20 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
                 cameraType = 14L;
             }
 
-
             if(sceneProExt.getSceneSource().intValue() == 4){
                 fdkkLaserService.updateSceneStatus(sceneCode,0);
-                String mqMsg = ComputerUtil.getMQMsg(sceneCode,cameraName,unicode,cameraType,fileId,
-                        sceneProExt.getDataSource().replace(ConstantFilePath.BUILD_MODEL_PATH, "")
-                                .replace(ConstantFilePath.BUILD_MODEL_LASER_PATH,"")+ File.separator,
-                        "zip.Zip", "0",userName,
-                        jsonObject.getString("location") != null && "1".equals(jsonObject.getString("location")) ? "sfm" : "slam",
-                        jsonObject.getInteger("resolution"),buildType,ConstantFilePath.BUILD_MODEL_LASER_PATH + unicode);
-                mqProducer.syncSend(topicLaserA, mqMsg.concat(":;1"));
+                BuildSceneMqMessage buildSceneMqMessage =this.getBuildSceneMqMessage(
+                    sceneCode, cameraName, unicode, cameraType, fileId,
+                    sceneProExt.getDataSource().replace(ConstantFilePath.BUILD_MODEL_PATH, "")
+                        .replace(ConstantFilePath.BUILD_MODEL_LASER_PATH,"")+ File.separator,
+                    "zip.Zip", "0",
+                    userName, jsonObject.getString("location") != null && "1".equals(jsonObject.getString("location")) ? "sfm" : "slam",
+                    jsonObject.getInteger("resolution"), buildType,
+                    ConstantFilePath.BUILD_MODEL_LASER_PATH + unicode, scenePro.getId(), scenePro.getSceneName(),
+                    scenePro.getWebSite(), scenePro.getCreateTime(), scenePro.getUserId(),
+                    sceneProExt.getDataSource(), scenePro.getSceneStatus(), scenePro.getPayStatus(), scenePro.getThumb());
+                mqProducer.syncSend(topicLaserA, buildSceneMqMessage);
             }else{
-//                String mqMsg = ComputerUtil.getMQMsg(sceneCode,cameraName,unicode,cameraType,fileId,
-//                        sceneProExt.getDataSource().replace(ConstantFilePath.BUILD_MODEL_PATH, "")
-//                                .replace(ConstantFilePath.BUILD_MODEL_LASER_PATH,"")+ File.separator,
-//                        "zip.Zip", "0",userName,
-//                        jsonObject.getString("location") != null && "1".equals(jsonObject.getString("location")) ? "sfm" : "slam",
-//                        jsonObject.getInteger("resolution"),buildType,ConstantFilePath.BUILD_MODEL_PATH + unicode);
-
                 BuildSceneMqMessage buildSceneMqMessage =this.getBuildSceneMqMessage(
                     sceneCode, cameraName, unicode, cameraType, fileId,
                     sceneProExt.getDataSource().replace(ConstantFilePath.BUILD_MODEL_PATH, "")
@@ -2199,7 +2203,8 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
                     scenePro.getWebSite(), scenePro.getCreateTime(), scenePro.getUserId(),
                     sceneProExt.getDataSource(), scenePro.getSceneStatus(), scenePro.getPayStatus(), scenePro.getThumb());
 
-                mqProducer.syncSend(topicModelingA, buildSceneMqMessage);
+//                mqProducer.syncSend(topicModelingA, buildSceneMqMessage);
+                mqProducer.syncSend(topicModelingAPre, buildSceneMqMessage);
             }
             sceneProService.updateStatus(sceneCode,0);
             // 更新imageVersion
@@ -2209,54 +2214,6 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
         return ResultData.ok();
     }
 
-//    public static String getMQMsg(String projectNum, String cameraName, String unicode, Long cameraType, String fileId,
-//        String prefix, String imgsName, String isModel,String userName,
-//        String algorithm, Integer resolution, String buildType, String path) {
-//
-//        BuildSceneMqMessage mq = new BuildSceneMqMessage();
-//        mq.setSceneNum(projectNum);
-//        mq.setCameraName(cameraName);
-//        mq.setUnicode(unicode);
-//        mq.setCameraType(String.valueOf(cameraType));
-//        mq.setFileId(fileId);
-//        mq.setPrefix(prefix);
-//        mq.setImgsName(imgsName);
-//        mq.setIsModel(isModel);
-//        mq.setUserName(userName);
-//        mq.setAlgorithm(algorithm);
-//        mq.setResolution(resolution);
-//        mq.setBuildType(buildType);
-//        mq.setPath(path);
-//
-//
-//
-//
-//
-//        String parametr = "";
-//        parametr+= unicode +":;"+ path +":;"+ prefix +":;"+ imgsName +":;"+ projectNum +":;"+ isModel;
-//        if(userName !=null&&!userName.trim().equals("")){
-//            parametr+=":;"+ userName;
-//        }else{
-//            parametr+=":;noMan";
-//        }
-//        parametr+=":;"+ cameraType;
-//        parametr+=":;"+ algorithm;
-//        parametr += ":;" + fileId;
-//        parametr += ":;" + cameraName;
-//        if(resolution == null){
-//            parametr += ":;0";
-//        }else {
-//            parametr += ":;" + resolution.intValue();
-//        }
-//
-//        if(buildType != null){
-//            parametr += ":;" + buildType;
-//        }
-//
-//        log.info("pro大场景添加到队列:"+parametr);
-//        return parametr;
-//    }
-
     public ResultData rebuildVideoScene(RebuildVedioSceneParamVO param) throws Exception {
 
         if(StringUtils.isEmpty(param.getNum()) || StringUtils.isEmpty(param.getPanoId())){

+ 1 - 1
4dkankan-common/pom.xml

@@ -29,7 +29,7 @@
         <dependency>
             <groupId>com.fdkankan</groupId>
             <artifactId>4dkankan-common-utils</artifactId>
-            <version>2.0.0-SNAPSHOT</version>
+            <version>3.0.0-SNAPSHOT</version>
         </dependency>
 
         <dependency>