Jelajahi Sumber

Merge branch 'test' into project-jmga-test

# Conflicts:
#	src/main/java/com/fdkankan/contro/mq/service/impl/BuildSceneServiceImpl.java
#	src/main/java/com/fdkankan/contro/mq/service/impl/BuildV3SceneServiceImpl.java
#	src/main/java/com/fdkankan/contro/service/impl/CommonServiceImpl.java
#	src/main/java/com/fdkankan/contro/service/impl/Scene3dNumServiceImpl.java
#	src/main/java/com/fdkankan/contro/service/impl/SceneFileBuildServiceImpl.java
dsx 1 tahun lalu
induk
melakukan
76a4b6350e

+ 66 - 0
src/main/java/com/fdkankan/contro/entity/CameraType.java

@@ -0,0 +1,66 @@
+package com.fdkankan.contro.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-11
+ */
+@Getter
+@Setter
+@TableName("t_camera_type")
+public class CameraType implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 相机类型表
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 0 旧双目相机,1思维看看pro八目相机(看看),2看看lite,5指房宝,9双目转台(看见),10激光转台(深时),11激光转台(深光)
+     */
+    @TableField("camera_type")
+    private Integer cameraType;
+
+    /**
+     * 场景码前缀
+     */
+    @TableField("scene_prefix")
+    private String scenePrefix;
+
+    /**
+     * 相机WiFiname前缀
+     */
+    @TableField("wifi_name_prefix")
+    private String wifiNamePrefix;
+
+    @TableField("rec_status")
+    @TableLogic(value = "A", delval = "I")
+    private String recStatus;
+
+    @TableField("remark")
+    private String remark;
+
+    @TableField("create_time")
+    private Date createTime;
+
+    @TableField("update_time")
+    private Date updateTime;
+
+
+}

+ 3 - 0
src/main/java/com/fdkankan/contro/entity/ScenePlusExt.java

@@ -145,6 +145,9 @@ public class ScenePlusExt implements Serializable {
     @TableField("yun_file_bucket")
     private String yunFileBucket;
 
+    @TableField("location")
+    private Integer location;
+
     /**
      * 创建时间
      */

+ 2 - 1
src/main/java/com/fdkankan/contro/enums/CameraTypeEnum.java

@@ -9,7 +9,8 @@ public enum CameraTypeEnum {
     FDKK_LITE(2,"KK-","4DKKLITE_","四维看看lite"),
     ZHIHOUSE_REDHOUSE(5,"KK-","4DKKLITE_","指房宝小红屋相机"),
     DOUBLE_EYE_TURN(9,"KJ-","4DKKLITE_","双目转台"),
-    LASER_TURN(10,"SS-","4DKKLA_","激光转台");
+    LASER_TURN(10,"SS-","4DKKLA_","激光转台"),
+    LASER_SG(11,"SG-","4DSG_","深光");
 
 
     private int type;

+ 18 - 0
src/main/java/com/fdkankan/contro/mapper/ICameraTypeMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.contro.mapper;
+
+import com.fdkankan.contro.entity.CameraType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-11
+ */
+@Mapper
+public interface ICameraTypeMapper extends BaseMapper<CameraType> {
+
+}

+ 60 - 0
src/main/java/com/fdkankan/contro/mq/listener/UpdateSceneStatusListener.java

@@ -0,0 +1,60 @@
+package com.fdkankan.contro.mq.listener;
+
+import cn.hutool.core.io.FileUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.fdkankan.common.util.FileUtils;
+import com.fdkankan.fyun.face.FYunFileServiceInterface;
+import com.fdkankan.model.constants.ConstantFilePath;
+import com.fdkankan.model.constants.UploadFilePath;
+import com.rabbitmq.client.Channel;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.amqp.core.Message;
+import org.springframework.amqp.rabbit.annotation.Queue;
+import org.springframework.amqp.rabbit.annotation.RabbitListener;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.io.File;
+import java.nio.charset.StandardCharsets;
+import java.util.HashMap;
+
+@Slf4j
+@Component
+public class UpdateSceneStatusListener {
+
+    @Autowired
+    private FYunFileServiceInterface fYunFileService;
+
+    /**
+     * 更新场景status.json状态
+     * @param channel
+     * @param message
+     * @throws Exception
+     */
+    @RabbitListener(
+            queuesToDeclare = @Queue("${queue.scene.update-scene-status}")
+    )
+    public void buildScenePreHandler(Channel channel, Message message) throws Exception {
+        String msg = new String(message.getBody(), StandardCharsets.UTF_8);
+        log.info("开始更新场景的的status.json状态,content:{}", msg);
+        HashMap<String, Object> map = JSON.parseObject(msg, HashMap.class);
+        String num = (String) map.get("num");
+        Integer status = (Integer)map.get("status");
+        String statusJsonPath = String.format(UploadFilePath.DATA_VIEW_PATH, num).concat("status.json");
+        try {
+
+            String fileContent = fYunFileService.getFileContent(statusJsonPath);
+            JSONObject jsonObject = JSON.parseObject(fileContent);
+            jsonObject.put("status", status);
+            FileUtil.writeUtf8String(jsonObject.toJSONString(),ConstantFilePath.SCENE_PATH + "data/data" + num + File.separator + "status.json");
+            fYunFileService.uploadFile(ConstantFilePath.SCENE_PATH + "data/data" + num + File.separator + "status.json", statusJsonPath);
+        }catch (Exception e){
+            log.error("更新场景的的status.json状态, content:{}", msg, e);
+        }finally {
+            channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
+        }
+        log.info("结束更新场景的的status.json状态,content:{}", msg);
+    }
+
+}

+ 2 - 0
src/main/java/com/fdkankan/contro/mq/service/impl/BuildObjServiceImpl.java

@@ -29,6 +29,7 @@ import com.fdkankan.redis.util.RedisUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.cloud.context.config.annotation.RefreshScope;
 import org.springframework.stereotype.Service;
 import org.springframework.util.ObjectUtils;
 
@@ -46,6 +47,7 @@ import java.util.Objects;
  **/
 @Slf4j
 @Service
+@RefreshScope
 public class BuildObjServiceImpl implements IBuildSceneService {
 
     @Value("${queue.modeling.modeling-call}")

+ 18 - 3
src/main/java/com/fdkankan/contro/mq/service/impl/BuildSceneServiceImpl.java

@@ -63,6 +63,7 @@ import java.util.stream.Collectors;
 @RefreshScope
 @Slf4j
 @Service
+@RefreshScope
 public class BuildSceneServiceImpl implements IBuildSceneService {
 
     @Value("${queue.modeling.modeling-call}")
@@ -155,6 +156,10 @@ public class BuildSceneServiceImpl implements IBuildSceneService {
             if(new File(message.getPath() + File.separator + "results").exists()){
                 FileUtils.deleteDirectory(message.getPath() + File.separator + "results");
             }
+            //由于刘强说caches会影响计算结果,所以这里删除caches
+            if(new File(message.getPath() + File.separator + "caches").exists()){
+                FileUtils.deleteDirectory(message.getPath() + File.separator + "caches");
+            }
 
             //删除project.json文件
             FileUtil.del(message.getPath().concat(File.separator).concat("project.json"));
@@ -640,10 +645,16 @@ public class BuildSceneServiceImpl implements IBuildSceneService {
     private void uploadStatusJson(ScenePlus scenePlus, ScenePlusExt scenePlusExt){
         String num = scenePlus.getNum();
         String dataViewPath = String.format(UploadFilePath.DATA_VIEW_PATH, num);
+
+        Integer status = 1;
+        if(scenePlus.getSceneSource() == 4 || scenePlus.getSceneSource() == 5){//如果是激光场景,需要激光系统那边完全处理好之后再发mq通知更新状态
+            status = 0;
+        }
+
         // 上传status JSON.
         JSONObject statusJson = new JSONObject();
         //临时将-2改成1,app还没完全更新
-        statusJson.put("status", 1);
+        statusJson.put("status", status);
         statusJson.put("webSite", scenePlusExt.getWebSite());
         statusJson.put("sceneNum", num);
         statusJson.put("thumb", scenePlusExt.getThumb());
@@ -672,7 +683,7 @@ public class BuildSceneServiceImpl implements IBuildSceneService {
         QrConfig qrConfig = QrConfig.create();
         qrConfig.setWidth(1024);
         qrConfig.setHeight(1024);
-        if(!ObjectUtils.isEmpty(localLogoPath)){
+        if(StrUtil.isNotEmpty(localLogoPath)){
             qrConfig.setImg(localLogoPath);
         }
         QrCodeUtil.generate(scenePlusExt.getWebSite(), qrConfig, FileUtil.file(outPathZh));
@@ -688,7 +699,7 @@ public class BuildSceneServiceImpl implements IBuildSceneService {
 
     private void pushMsgToApp(Integer pushChannel, String pushToken, int cameraType, String sceneName, String webSite){
         log.info("推送消息,渠道是 {}, 手机token是 {}", pushChannel, pushToken);
-        if(Objects.isNull(pushChannel) && StrUtil.isBlank(pushToken)){
+        if(Objects.isNull(pushChannel) || StrUtil.isBlank(pushToken)){
             return;
         }
 
@@ -865,6 +876,10 @@ public class BuildSceneServiceImpl implements IBuildSceneService {
                 scenePlusExt.setSceneResolution(SceneResolution.four_K.code());
                 scenePlusExt.setSceneFrom(SceneFrom.LASER.code());
                 break;
+            case SG:
+                scenePlusExt.setSceneResolution(SceneResolution.four_K.code());
+                scenePlusExt.setSceneFrom(SceneFrom.LASER.code());
+                break;
         }
 
         String sceneKind = scenePlusExt.getSceneScheme() == 3 ? SceneKind.FACE.code():SceneKind.TILES.code();

+ 18 - 0
src/main/java/com/fdkankan/contro/service/ICameraTypeService.java

@@ -0,0 +1,18 @@
+package com.fdkankan.contro.service;
+
+import com.fdkankan.contro.entity.CameraType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-11
+ */
+public interface ICameraTypeService extends IService<CameraType> {
+
+    CameraType getByCamType(int camType);
+
+}

+ 2 - 1
src/main/java/com/fdkankan/contro/service/IFdkkLaserService.java

@@ -1,5 +1,6 @@
 package com.fdkankan.contro.service;
 
+import com.alibaba.fastjson.JSONObject;
 import com.fdkankan.contro.entity.Camera;
 import com.fdkankan.contro.entity.ScenePlus;
 import com.fdkankan.contro.entity.ScenePlusExt;
@@ -19,7 +20,7 @@ public interface IFdkkLaserService {
 
     void pushBuildStatusToLaserSystem(String projectNum, String laserObjFilePath, Integer buildObjStatus);
 
-    void saveScene(ScenePlus scenePlus, String scenePassword, Camera cameraEntity, String userName, boolean b);
+    void saveScene(ScenePlus scenePlus, JSONObject jsonObject, Camera cameraEntity, String userName, boolean b);
 
     void saveScene(ScenePro scenePro, String scenePassword, Camera cameraEntity, String phone, boolean rebuild);
 

+ 24 - 0
src/main/java/com/fdkankan/contro/service/impl/CameraTypeServiceImpl.java

@@ -0,0 +1,24 @@
+package com.fdkankan.contro.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.fdkankan.contro.entity.CameraType;
+import com.fdkankan.contro.mapper.ICameraTypeMapper;
+import com.fdkankan.contro.service.ICameraTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2023-04-11
+ */
+@Service
+public class CameraTypeServiceImpl extends ServiceImpl<ICameraTypeMapper, CameraType> implements ICameraTypeService {
+    @Override
+    public CameraType getByCamType(int camType) {
+        return this.getOne(new LambdaQueryWrapper<CameraType>().eq(CameraType::getCameraType, camType));
+    }
+}

+ 23 - 15
src/main/java/com/fdkankan/contro/service/impl/CommonServiceImpl.java

@@ -2,6 +2,8 @@ package com.fdkankan.contro.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.io.FileUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.fdkankan.common.util.FileUtils;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -29,6 +31,12 @@ import org.springframework.cloud.context.config.annotation.RefreshScope;
 import org.springframework.stereotype.Service;
 
 import java.io.File;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+import java.util.Objects;
 import java.util.*;
 
 @Slf4j
@@ -177,17 +185,6 @@ public class CommonServiceImpl implements ICommonService {
     }
 
     @Override
-    public void initUserEditData(String num, Set<String> bizs, Map<String, Map<String ,Object>> params) {
-        if(StrUtil.isEmpty(num) || CollUtil.isEmpty(bizs)){
-            return;
-        }
-        for (String biz : bizs) {
-            UserEditDataHandler handler = UserEditDataHandlerFactory.getHandler(biz);
-            handler.init(num, CollUtil.isEmpty(params) ? null : params.get(biz));
-        }
-    }
-
-    @Override
     public void uploadFloorplanJson(String num, String dataSource) throws Exception{
         String floorPlanCardFilePath = dataSource + File.separator + "results/floorplan_cad.json";
         if (!new File(floorPlanCardFilePath).exists()) {
@@ -196,11 +193,22 @@ public class CommonServiceImpl implements ICommonService {
         }
         JSONObject json = FloorPlanUserUtil.createFloorPlanUserJson(floorPlanCardFilePath);
         if(Objects.isNull(json)){
-            log.error("生成floorplan.json失败,cadPath:", floorPlanCardFilePath);
-            throw new Exception("生成floorplan.json失败,cadPath:" + floorPlanCardFilePath);
+            log.warn("生成floorplan.json失败,cadPath:{}", floorPlanCardFilePath);
+            return;
+        }
+        String floorplanJsonPath = String.format(UploadFilePath.DATA_VIEW_PATH, num) + "floorplan.json";
+        fYunFileService.uploadFile(json.toJSONString().getBytes(), floorplanJsonPath);
+    }
+
+    @Override
+    public void initUserEditData(String num, Set<String> bizs, Map<String, Map<String ,Object>> params) {
+        if(StrUtil.isEmpty(num) || CollUtil.isEmpty(bizs)){
+            return;
+        }
+        for (String biz : bizs) {
+            UserEditDataHandler handler = UserEditDataHandlerFactory.getHandler(biz);
+            handler.init(num, CollUtil.isEmpty(params) ? null : params.get(biz));
         }
-        String hourseTypeJsonPath = String.format(UploadFilePath.DATA_VIEW_PATH, num) + "floorplan.json";
-        fYunFileService.uploadFile(json.toJSONString().getBytes(), hourseTypeJsonPath);
     }
 
     @Override

+ 10 - 2
src/main/java/com/fdkankan/contro/service/impl/IFdkkLaserServiceImpl.java

@@ -5,6 +5,7 @@ import com.fdkankan.common.util.DateUtil;
 import com.fdkankan.common.util.FileUtils;
 import com.fdkankan.contro.entity.Camera;
 import com.fdkankan.contro.entity.ScenePlus;
+import com.fdkankan.contro.entity.ScenePlusExt;
 import com.fdkankan.contro.entity.ScenePro;
 import com.fdkankan.contro.service.IFdkkLaserService;
 import com.fdkankan.contro.service.IScenePlusService;
@@ -22,6 +23,7 @@ import java.io.IOException;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Objects;
 
 @Service
 @Slf4j
@@ -112,7 +114,7 @@ public class IFdkkLaserServiceImpl implements IFdkkLaserService {
     }
 
 
-    public void saveScene(ScenePlus scenePlus, String scenePassword, Camera cameraEntity, String phone, boolean rebuild) {
+    public void saveScene(ScenePlus scenePlus, JSONObject fdageJson, Camera cameraEntity, String phone, boolean rebuild) {
         Map<String, Object> params = new HashMap<>();
         params.put("childName", cameraEntity.getChildName());
         params.put("createTime", DateUtil.date2String(scenePlus.getCreateTime(), null));
@@ -121,13 +123,19 @@ public class IFdkkLaserServiceImpl implements IFdkkLaserService {
         params.put("snCode", cameraEntity.getSnCode());
         params.put("status", scenePlus.getSceneStatus());
         if (!rebuild) {
-            params.put("password", scenePassword);
+            if(Objects.nonNull(fdageJson)){
+                params.put("password", fdageJson.getString("pwd"));
+            }
         } else {
             params.put("status", 4);
         }
         params.put("version",getSceneVersion(scenePlus.getNum()));
         params.put("title", scenePlus.getTitle());
         params.put("userId", scenePlus.getUserId());
+        params.put("sceneSource", scenePlus.getSceneSource());
+        if(Objects.nonNull(fdageJson)){
+            params.put("location", fdageJson.getInteger("location"));
+        }
         rabbitMqProducer.sendByWorkQueue(updateScene, params);
     }
 

+ 11 - 3
src/main/java/com/fdkankan/contro/service/impl/Scene3dNumServiceImpl.java

@@ -5,9 +5,11 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fdkankan.common.constant.CommonStatus;
 import com.fdkankan.common.util.RandomUtil;
+import com.fdkankan.contro.entity.CameraType;
 import com.fdkankan.contro.entity.Scene3dNum;
 import com.fdkankan.contro.enums.CameraTypeEnum;
 import com.fdkankan.contro.mapper.IScene3dNumMapper;
+import com.fdkankan.contro.service.ICameraTypeService;
 import com.fdkankan.contro.service.IScene3dNumService;
 import com.fdkankan.redis.constant.RedisKey;
 import com.fdkankan.redis.constant.RedisLockKey;
@@ -61,6 +63,8 @@ public class Scene3dNumServiceImpl extends ServiceImpl<IScene3dNumMapper, Scene3
 
 //    @Autowired
 //    private DingTalkSendUtils dingTalkSendUtils;
+    @Autowired
+    private ICameraTypeService cameraTypeService;
 
     @Override
     public String generateSceneNum(Integer cameraType) throws Exception {
@@ -117,11 +121,15 @@ public class Scene3dNumServiceImpl extends ServiceImpl<IScene3dNumMapper, Scene3
         }
     }
 
-    private  static  String addPrefix( String num,Integer cameraType){
-        if(cameraType == null){
+    private  String addPrefix(String num,Integer camType){
+        if(camType == null){
+            return num;
+        }
+        CameraType cameraType = cameraTypeService.getByCamType(camType);
+        if(Objects.isNull(cameraType)){
             return num;
         }
-        return CameraTypeEnum.getSceneNumPrefixByType(cameraType) + num;
+        return cameraType.getScenePrefix() + num;
     }
 
     @Override

+ 38 - 25
src/main/java/com/fdkankan/contro/service/impl/SceneFileBuildServiceImpl.java

@@ -24,6 +24,7 @@ import com.fdkankan.contro.common.Result;
 import com.fdkankan.contro.constant.RedisConstants;
 import com.fdkankan.contro.entity.*;
 import com.fdkankan.contro.httpclient.MyClient;
+import com.fdkankan.contro.enums.CameraTypeEnum;
 import com.fdkankan.contro.mapper.ISceneFileBuildMapper;
 import com.fdkankan.contro.service.*;
 import com.fdkankan.contro.vo.ResponseSceneFile;
@@ -477,7 +478,7 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
                 scenePlusVO.getWebSite(),scenePlusVO.getThumb(),PayStatus.NOT_PAY.code(),
                 String.format(UploadFilePath.DATA_VIEW_PATH, sceneNum));
 
-        BuildSceneCallMessage mqMessage = getBuildSceneMqMessage(sceneNum, cameraType, algorithm, jsonObject.getInteger("resolution"), buildType,
+        BuildSceneCallMessage mqMessage = getBuildSceneMqMessage(sceneNum, cameraType, algorithm, jsonObject, buildType,
                 scenePlusVO.getDataSource());
 
         if (cameraDetail.getCompanyId() != null) {
@@ -559,7 +560,7 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
                 scenePlusVO.getWebSite(),scenePlusVO.getThumb(),PayStatus.NOT_PAY.code(),
                 String.format(ConstantFilePath.DATA_PATH_FORMAT, sceneNum));
 
-        BuildSceneCallMessage mqMessage = getBuildSceneMqMessage(sceneNum, cameraType, algorithm, jsonObject.getInteger("resolution"), buildType,
+        BuildSceneCallMessage mqMessage = getBuildSceneMqMessage(sceneNum, cameraType, algorithm, jsonObject, buildType,
                 scenePlusVO.getDataSource());
         if (cameraDetail.getCompanyId() != null) {
             Company company = companyService.getById(cameraDetail.getCompanyId());
@@ -677,7 +678,7 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
 
         // 判断是否是V3的场景
         ScenePro scenePro = sceneProService.getOne(
-            new LambdaQueryWrapper<ScenePro>().like(ScenePro::getDataSource, fileId));
+            new LambdaQueryWrapper<ScenePro>().like(ScenePro::getDataSource, "/".concat(fileId).concat("/")));
 
         boolean callV3 = callV3(scenePro, preParams, fdageJson, "api/scene/file/uploadSuccessBuild");
         if(callV3) return ResultData.ok();
@@ -818,15 +819,17 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
         //13表示转台
         Long cameraType = 13L;
 
-        //激光转台 八目相机占用 10 和 11
-        if(fdageJson.getJSONObject("cam").getIntValue("type") == 10){
+        //激光相机10 13
+        int camType = fdageJson.getJSONObject("cam").getIntValue("type");
+        log.info("camType:{}", camType);
+        if(laserCamTypeList.contains(camType)){
             //激光转台
             cameraType = 14L;
         }
 
         // 判断是否是V3的场景
         ScenePro scenePro = sceneProService.getOne(
-            new LambdaQueryWrapper<ScenePro>().like(ScenePro::getDataSource, fileId));
+            new LambdaQueryWrapper<ScenePro>().like(ScenePro::getDataSource, "/".concat(fileId).concat("/")));
 
         boolean callV3 = callV3(scenePro, preParams, fdageJson, "api/scene/file/turntableUploadSuccess");
         if (callV3) return ResultData.ok();
@@ -856,8 +859,8 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
             }
             //判断 是否为激光相机
             Camera camera = cameraService.getByChildName(mac);
-            if(!ObjectUtils.isEmpty(scenePlus)){
-                fdkkLaserService.saveScene(scenePlus,fdageJson.getString("pwd"),camera,userName,false);
+            if(Objects.nonNull(scenePlus)){
+                fdkkLaserService.saveScene(scenePlus,fdageJson,camera,userName,false);
             }else{
                 fdkkLaserService.saveScene(scenePro,fdageJson.getString("pwd"),camera,userName,false);
             }
@@ -879,19 +882,29 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
         scenePlus.setCameraId(cameraId);
         scenePlus.setPhoneId(phoneId);
         scenePlus.setNum(projectNum);
-        scenePlus.setSceneSource(1);
+        scenePlus.setSceneSource(SceneSource.BM.code());
         scenePlusExt.setDataSource(dataSource);
+        scenePlusExt.setLocation(location);
 
         if(resolution == null || resolution.intValue() == 0){
             scenePlusExt.setSceneScheme(cameraType.intValue());
         }else {
-            scenePlusExt.setSceneScheme(4);
+            scenePlusExt.setSceneScheme(SceneScheme.BM.code());
         }
 
         //转台相机用4k图
-        if(cameraType.longValue() == 13 ){
-            scenePlus.setSceneSource(3);
-            scenePlusExt.setSceneScheme(10);
+        if(cameraType.longValue() == 13){
+            scenePlus.setSceneSource(SceneSource.ZT.code());
+            scenePlusExt.setSceneScheme(SceneScheme.FOUR_K.code());
+        }
+
+        //激光相机
+        if(cameraType.longValue() == 14){
+            scenePlus.setSceneSource(SceneSource.JG.code());
+            scenePlusExt.setSceneScheme(SceneScheme.FOUR_K.code());
+            if(camType == CameraTypeEnum.LASER_SG.getType()){
+                scenePlus.setSceneSource(SceneSource.SG.code());
+            }
         }
 
         if(ModelKind.THREE_D_TILE.code().equals(modelKind)
@@ -1173,17 +1186,19 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
     }
 
     public BuildSceneCallMessage getBuildSceneMqMessage(String projectNum,
-                                                        Long cameraType, String algorithm, Integer resolution,
+                                                        Long cameraType, String algorithm, JSONObject fdageJson,
                                                         String buildType, String dataSource) {
         BuildSceneCallMessage mqMsg = new BuildSceneCallMessage();
         mqMsg.setSceneNum(projectNum);
         mqMsg.setCameraType(String.valueOf(cameraType));
         mqMsg.setAlgorithm(algorithm);
-        mqMsg.setResolution(String.valueOf(resolution));
+        mqMsg.setResolution(String.valueOf(fdageJson.getInteger("resolution")));
         mqMsg.setBuildType(buildType);
         mqMsg.setPath(dataSource);
         mqMsg.setCreateTime(DateUtil.format(Calendar.getInstance().getTime(), DateExtUtil.dateStyle));
-        mqMsg.setExt(new HashMap<>());
+        Map<String, Object> ext = new HashMap<>();
+        ext.put("location", fdageJson.getInteger("location"));
+        mqMsg.setExt(ext);
         return mqMsg;
     }
 
@@ -1276,11 +1291,11 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
         if(sceneSource == 3){
             cameraType = 13L;
         }
-        if(sceneSource == 4){
+        if(sceneSource == 4 || sceneSource == 5){
             cameraType = 14L;
         }
         BuildSceneCallMessage message = null;
-        if(sceneSource == 4){
+        if(cameraType == 14){
             String userName = null;
             Long sceneUserId = scenePlus.getUserId();
             if (!ObjectUtils.isEmpty(sceneUserId)) {
@@ -1290,14 +1305,12 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
             Camera cameraEntity = cameraService.getById(scenePlus.getCameraId());
             fdkkLaserService.saveScene(scenePlus,null,cameraEntity,userName,true);
             message = this.getBuildSceneMqMessage(
-                    num, cameraType,
-                    fdageData.getString("location") != null && "1".equals(fdageData.getString("location")) ? "sfm" : "slam",
-                    fdageData.getInteger("resolution"), buildType, path);
+                    num, cameraType, fdageData.getString("location") != null && "1".equals(fdageData.getString("location")) ? "sfm" : "slam",
+                    fdageData, buildType, path);
         }else{
             message = this.getBuildSceneMqMessage(
                     num, cameraType, fdageData.getString("location") != null && "1".equals(fdageData.getString("location")) ? "sfm" : "slam",
-                    fdageData.getInteger("resolution"), buildType,
-                    path);
+                    fdageData, buildType, path);
         }
         if(deleteExtras){
             message.getExt().put("deleteExtras",deleteExtras);
@@ -1462,7 +1475,7 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
             fYunFileService.copyFileBetweenBucket(sourceBucet,fYunPath,fYunFileConfig.getBucket(),fYunPath);
         }
         // 下载data.fdage
-        JSONObject fdageData = JSONObject.parseObject(fYunFileService.getFileContent(fYunPath + "/data.fdage"));
+        JSONObject fdageData = JSONObject.parseObject(fYunFileService.getFileContent(sourceBucet, fYunPath + "/data.fdage"));
         if(ObjectUtils.isEmpty(fdageData)){
             throw new BusinessException(ErrorCode.SYSTEM_ERROR.code(),"4dage 文件不存在");
         }
@@ -1642,7 +1655,7 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
 
         BuildSceneCallMessage buildSceneMqMessage = this.getBuildSceneMqMessage(
                 sceneNum, cameraType, jsonObject.getString("location") != null && "1".equals(jsonObject.getString("location")) ? "sfm" : "slam",
-                jsonObject.getInteger("resolution"), buildType, dataSource);
+                jsonObject, buildType, dataSource);
         rabbitMqProducer.sendByWorkQueue(queueV3ModelingPre, buildSceneMqMessage);
 
     }

+ 5 - 0
src/main/resources/mapper/contro/CameraTypeMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fdkankan.contro.mapper.ICameraTypeMapper">
+
+</mapper>