Sfoglia il codice sorgente

场景计算拆分

dengsixing 3 anni fa
parent
commit
69ae9868e0

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

@@ -35,7 +35,7 @@
 		<dependency>
 		<dependency>
 			<groupId>com.fdkankan</groupId>
 			<groupId>com.fdkankan</groupId>
 			<artifactId>4dkankan-utils-mq</artifactId>
 			<artifactId>4dkankan-utils-mq</artifactId>
-			<version>2.0.0-SNAPSHOT</version>
+			<version>3.0.0-SNAPSHOT</version>
 		</dependency>
 		</dependency>
 
 
 		<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>
         <dependency>
             <groupId>com.fdkankan</groupId>
             <groupId>com.fdkankan</groupId>
             <artifactId>4dkankan-utils-mq</artifactId>
             <artifactId>4dkankan-utils-mq</artifactId>
-            <version>2.0.0-SNAPSHOT</version>
+            <version>3.0.0-SNAPSHOT</version>
         </dependency>
         </dependency>
         <dependency>
         <dependency>
             <groupId>com.fdkankan</groupId>
             <groupId>com.fdkankan</groupId>
@@ -80,6 +80,17 @@
             <version>1.7.2</version>
             <version>1.7.2</version>
         </dependency>
         </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>
     </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.SceneFileBuild;
 import com.fdkankan.scene.entity.ScenePro;
 import com.fdkankan.scene.entity.ScenePro;
 import com.fdkankan.scene.entity.SceneProExt;
 import com.fdkankan.scene.entity.SceneProExt;
+import com.fdkankan.scene.service.IBuildScenePreService;
 import com.fdkankan.scene.service.ISceneEditControlsService;
 import com.fdkankan.scene.service.ISceneEditControlsService;
 import com.fdkankan.scene.service.ISceneEditInfoService;
 import com.fdkankan.scene.service.ISceneEditInfoService;
 import com.fdkankan.scene.service.ISceneFileBuildService;
 import com.fdkankan.scene.service.ISceneFileBuildService;
 import com.fdkankan.scene.service.ISceneProExtService;
 import com.fdkankan.scene.service.ISceneProExtService;
 import com.fdkankan.scene.service.ISceneProService;
 import com.fdkankan.scene.service.ISceneProService;
 import com.fdkankan.scene.service.ISceneService;
 import com.fdkankan.scene.service.ISceneService;
+import com.fdkankan.scene.service.impl.BuildScenePreServiceImpl;
 import java.io.File;
 import java.io.File;
+import java.util.Map;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.rocketmq.spring.annotation.MessageModel;
 import org.apache.rocketmq.spring.annotation.MessageModel;
 import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
 import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
@@ -42,6 +45,7 @@ import org.springframework.stereotype.Component;
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.List;
 import java.util.Objects;
 import java.util.Objects;
+import org.springframework.transaction.annotation.Transactional;
 
 
 
 
 /**
 /**
@@ -54,8 +58,8 @@ import java.util.Objects;
 @Slf4j
 @Slf4j
 @Component
 @Component
 @RocketMQMessageListener(
 @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//负载均衡模式
         messageModel = MessageModel.CLUSTERING//负载均衡模式
 )
 )
 public class BuildSceneResultMQListener implements RocketMQListener<String> {
 public class BuildSceneResultMQListener implements RocketMQListener<String> {
@@ -93,6 +97,8 @@ public class BuildSceneResultMQListener implements RocketMQListener<String> {
     ISceneEditControlsService sceneEditControlsService;
     ISceneEditControlsService sceneEditControlsService;
     @Autowired
     @Autowired
     UploadToOssUtil uploadToOssUtil;
     UploadToOssUtil uploadToOssUtil;
+    @Autowired
+    IBuildScenePreService buildScenePreService;
 
 
 
 
     @Override
     @Override
@@ -103,17 +109,22 @@ public class BuildSceneResultMQListener implements RocketMQListener<String> {
         process(resultMqMessage);
         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 {
         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){//建模失败,修改状态为失败状态
             if(!buildSuccess){//建模失败,修改状态为失败状态
                 log.error("建模失败,修改状态为失败状态");
                 log.error("建模失败,修改状态为失败状态");
                 sceneService.updateStatus(sceneCode, SceneStatus.FAILD.code());
                 sceneService.updateStatus(sceneCode, SceneStatus.FAILD.code());
@@ -128,96 +139,127 @@ public class BuildSceneResultMQListener implements RocketMQListener<String> {
 
 
             //建模成功
             //建模成功
             log.info("cameraType:{}",cameraType);
             log.info("cameraType:{}",cameraType);
+
+            long space = buildScenePreService.calUseSpace(uploadFiles);
+
             if(cameraType < 3){
             if(cameraType < 3){
                 sceneService.updateTime(sceneCode, space, payStatus);
                 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}")
     @Value("${rocketmq.build-scene.topicName.topic-modeling-a}")
     private String topicModelingA;
     private String topicModelingA;
+    @Value("${rocketmq.build-scene.topicName.topic-modeling-a-pre-test}")
+    private String topicModelingAPre;
 
 
     @Value("${rocketmq.build-scene.topicName.topic-laser-a}")
     @Value("${rocketmq.build-scene.topicName.topic-laser-a}")
     private String topicLaserA;
     private String topicLaserA;
@@ -1124,7 +1126,9 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
         if(jsonObject.getJSONObject("cam").getIntValue("type") == 10){
         if(jsonObject.getJSONObject("cam").getIntValue("type") == 10){
             mqProducer.sendOneWay(topicLaserA, scene.getMqMsg());
             mqProducer.sendOneWay(topicLaserA, scene.getMqMsg());
         }else  if(scene != null){
         }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);
                 throw new BusinessException(ErrorCode.FAILURE_CODE_3015);
             }
             }
             ScenePO scenePO = this.createScene(sceneNum, camera.getId(), camera.getChildName(), buildScene.getPhoneId(),
             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.getFileName(), buildScene.getThumb(), "0", cameraDetail.getUserId(), user.getUserName(),
                     buildScene.getAlgorithm(), buildScene.getShootCount(), buildScene.getSceneName(),
                     buildScene.getAlgorithm(), buildScene.getShootCount(), buildScene.getSceneName(),
                     buildScene.getSceneDec(), buildScene.getSceneType(), buildScene.getGps(), 0, mainUrl + sceneUrl, ecsType);
                     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,
     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 imgsName, String pic, String isModel, Long userId, String userName,
                                       String algorithm, Integer sceneShootCount, String sceneName,
                                       String algorithm, Integer sceneShootCount, String sceneName,
                                       String sceneDec, Integer sceneType, String gps,
                                       String sceneDec, Integer sceneType, String gps,
@@ -1515,24 +1519,29 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
             scene.setThumb(ConstantUrl.DEFAULT_SCENE_PIC);
             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);
             scene.setUserId(userId);
         }
         }
         else
         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)
         if(sceneShootCount == null)
         {
         {
@@ -2128,14 +2137,13 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
             String unicode = jsonObject.getString("creator") + "_" + jsonObject.getString("uuidtime");
             String unicode = jsonObject.getString("creator") + "_" + jsonObject.getString("uuidtime");
             scenePO = this.createScene(sceneCode, camera.getId(),
             scenePO = this.createScene(sceneCode, camera.getId(),
                     cameraName, jsonObject.getString("creator"),
                     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",
                     fileId, "http://creator.4dkankan.com/" + unicode + File.separator, "zip.Zip",
                     jsonObject.getString("scenePic"), "0", userId, userName,
                     jsonObject.getString("scenePic"), "0", userId, userName,
                     jsonObject.getString("location") != null && "1".equals(jsonObject.getString("location")) ? "sfm" : "slam",
                     jsonObject.getString("location") != null && "1".equals(jsonObject.getString("location")) ? "sfm" : "slam",
                     jsonObject.getJSONArray("imgs").size(), jsonObject.getString("name"), jsonObject.getString("info"),
                     jsonObject.getJSONArray("imgs").size(), jsonObject.getString("name"), jsonObject.getString("info"),
                     jsonObject.getInteger("scenetype"), jsonObject.getString("gps"),
                     jsonObject.getInteger("scenetype"), jsonObject.getString("gps"),
                     1, mainUrl + sceneUrl, ecsType);
                     1, mainUrl + sceneUrl, ecsType);
-
         } else {
         } else {
             String cameraName = jsonObject.getJSONObject("cam").getString("uuid");
             String cameraName = jsonObject.getJSONObject("cam").getString("uuid");
             String userName = null;
             String userName = null;
@@ -2170,24 +2178,20 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
                 cameraType = 14L;
                 cameraType = 14L;
             }
             }
 
 
-
             if(sceneProExt.getSceneSource().intValue() == 4){
             if(sceneProExt.getSceneSource().intValue() == 4){
                 fdkkLaserService.updateSceneStatus(sceneCode,0);
                 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{
             }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(
                 BuildSceneMqMessage buildSceneMqMessage =this.getBuildSceneMqMessage(
                     sceneCode, cameraName, unicode, cameraType, fileId,
                     sceneCode, cameraName, unicode, cameraType, fileId,
                     sceneProExt.getDataSource().replace(ConstantFilePath.BUILD_MODEL_PATH, "")
                     sceneProExt.getDataSource().replace(ConstantFilePath.BUILD_MODEL_PATH, "")
@@ -2199,7 +2203,8 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
                     scenePro.getWebSite(), scenePro.getCreateTime(), scenePro.getUserId(),
                     scenePro.getWebSite(), scenePro.getCreateTime(), scenePro.getUserId(),
                     sceneProExt.getDataSource(), scenePro.getSceneStatus(), scenePro.getPayStatus(), scenePro.getThumb());
                     sceneProExt.getDataSource(), scenePro.getSceneStatus(), scenePro.getPayStatus(), scenePro.getThumb());
 
 
-                mqProducer.syncSend(topicModelingA, buildSceneMqMessage);
+//                mqProducer.syncSend(topicModelingA, buildSceneMqMessage);
+                mqProducer.syncSend(topicModelingAPre, buildSceneMqMessage);
             }
             }
             sceneProService.updateStatus(sceneCode,0);
             sceneProService.updateStatus(sceneCode,0);
             // 更新imageVersion
             // 更新imageVersion
@@ -2209,54 +2214,6 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
         return ResultData.ok();
         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 {
     public ResultData rebuildVideoScene(RebuildVedioSceneParamVO param) throws Exception {
 
 
         if(StringUtils.isEmpty(param.getNum()) || StringUtils.isEmpty(param.getPanoId())){
         if(StringUtils.isEmpty(param.getNum()) || StringUtils.isEmpty(param.getPanoId())){

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

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