Browse Source

深光slam增加点位统计

dsx 1 year ago
parent
commit
8238a5ecde

+ 22 - 1
src/main/java/com/fdkankan/contro/mq/service/impl/BuildSceneServiceImpl.java

@@ -319,7 +319,7 @@ public class BuildSceneServiceImpl implements IBuildSceneService {
 
             if (cameraType == 14) {
                 //计算成功  激光转台相机 同步 请求
-                fdkkLaserService.syncBuildResult(scenePlus.getNum(), scenePlusExt.getDataSource(),scenePlus.getCreateTime());
+                fdkkLaserService.syncBuildResult(scenePlus.getNum(), scenePlusExt.getDataSource(),scenePlus.getCreateTime(), scenePlusExt.getShootCount());
                 sceneEditControlsService.update(new LambdaUpdateWrapper<SceneEditControls>().set(SceneEditControls::getShowMap,0)
                         .eq(SceneEditControls::getEditInfoId,sceneEditInfo.getId()));
                 sceneEditControls.setShowMap(0);
@@ -847,9 +847,30 @@ public class BuildSceneServiceImpl implements IBuildSceneService {
         scenePlusExt.setSceneKind(sceneKind);
 //        scenePlusExt.setModelKind(modelKind);
 
+        //统计点位数量
+        scenePlusExt.setShootCount(this.getShootCount(scenePlusExt));
+
         scenePlusExtService.updateById(scenePlusExt);
     }
 
+    private Integer getShootCount(ScenePlusExt scenePlusExt){
+        String homePath = SceneUtil.getHomePath(scenePlusExt.getDataSource());
+        if(scenePlusExt.getLocation() == 5 || scenePlusExt.getLocation() == 6){
+            String slamDataStr = fYunFileService.getFileContent(homePath.concat("slam_data.json"));
+            JSONObject slamDataObj = JSON.parseObject(slamDataStr);
+            JSONArray viewsInfo = slamDataObj.getJSONArray("views_info");
+            if(CollUtil.isEmpty(viewsInfo)){
+                return 0;
+            }
+            return viewsInfo.stream().mapToInt(info -> {
+                return ((JSONArray) info).size();
+            }).sum();
+        }
+
+        JSONObject dataFdageObj = JSON.parseObject(fYunFileService.getFileContent(homePath.concat("data.fdage")));
+        return dataFdageObj.getJSONArray("points").size();
+    }
+
     private int getPayStatus(Long cameraId, Long space){
         //更新相机使用用量
         CameraDetail cameraDetail = cameraDetailService.updateCameraDetailByCameraIdAndSpace(cameraId, space);

+ 1 - 1
src/main/java/com/fdkankan/contro/mq/service/impl/BuildV3SceneServiceImpl.java

@@ -278,7 +278,7 @@ public class BuildV3SceneServiceImpl implements IBuildSceneService {
             sceneProEdit.setFloorPublishVer(ObjectUtils.isEmpty(sceneProEdit.getFloorPublishVer()) ? 0 : sceneProEdit.getFloorPublishVer() + 1);
             if (cameraType == 14) {
                 //计算成功  激光转台相机 同步 请求
-                fdkkLaserService.syncBuildResult(scenePro.getNum(), scenePro.getDataSource(),scenePro.getCreateTime());
+                fdkkLaserService.syncBuildResult(scenePro.getNum(), scenePro.getDataSource(),scenePro.getCreateTime(), null);
                 sceneProEdit.setMapVisi(0);
             }else if (new File(path + "/results/laserData/vision_edit.txt").exists()) {
                 fdkkLaserService.cloudPointBuild(sceneCode,path);

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

@@ -17,7 +17,7 @@ import java.util.Date;
  * @since 2022/1/14
  **/
 public interface IFdkkLaserService {
-    void syncBuildResult(String sceneNum, String dataSource, Date createTime);
+    void syncBuildResult(String sceneNum, String dataSource, Date createTime, Integer shootCount);
 
     void pushBuildStatusToLaserSystem(String projectNum, String laserObjFilePath, Integer buildObjStatus);
 

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

@@ -57,7 +57,7 @@ public class IFdkkLaserServiceImpl implements IFdkkLaserService {
     private FYunFileServiceInterface fYunFileService;
 
 
-    public void updateSceneStatus(String sceneCode, int sceneStatus, String path, Date createTime) {
+    public void updateSceneStatus(String sceneCode, int sceneStatus, String path, Date createTime, Integer shootCount) {
         Map<String, Object> params = new HashMap<>();
         params.put("sceneCode", sceneCode);
         params.put("status", sceneStatus);
@@ -66,10 +66,11 @@ public class IFdkkLaserServiceImpl implements IFdkkLaserService {
         if (!ObjectUtils.isEmpty(path)) {
             params.put("path", path);
         }
+        params.put("shootCount", shootCount);
         rabbitMqProducer.sendByWorkQueue(updateScene, params);
     }
 
-    public void syncBuildResult(String sceneNum, String dataSource,Date createTime) {
+    public void syncBuildResult(String sceneNum, String dataSource,Date createTime, Integer shootCount) {
         log.info("激光转台相机构建结果 同步 请求 ");
         try {
             String jgPath = dataSource;