Kaynağa Gözat

管理后台v2.9.0

dengsixing 5 ay önce
ebeveyn
işleme
79cb2e1b3c

+ 3 - 0
src/main/java/com/fdkankan/contro/bean/SyncLaserResultBean.java

@@ -18,9 +18,12 @@ public class SyncLaserResultBean {
     private Integer sceneStatus;
     private Date createTime;
     private Integer shootCount;
+    private Integer slamCount;
     private Integer payStatus;
     private Integer mixture;
     private String version;
 
 
+
+
 }

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

@@ -12,10 +12,10 @@ import lombok.Setter;
 
 /**
  * <p>
- * 
+ *
  * </p>
  *
- * @author 
+ * @author
  * @since 2022-03-16
  */
 @Getter
@@ -140,7 +140,13 @@ public class ScenePlusExt implements Serializable {
      * 计算耗时
      */
     @TableField("compute_time")
-    private String computeTime;
+    private Long computeTime;
+
+    /**
+     * 计算耗时
+     */
+    @TableField("mesh_compute_time")
+    private Long meshComputeTime;
 
     /**
      * 点位视频
@@ -187,4 +193,10 @@ public class ScenePlusExt implements Serializable {
      */
     @TableField("is_obj")
     private int isObj;
+
+    /**
+     * 帧数
+     */
+    @TableField("slam_count")
+    private int slamCount;
 }

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

@@ -285,7 +285,7 @@ public class BuildIntermitSceneServiceImpl implements IBuildSceneService {
     private void updateDbPlus(int sceneSource,Long space,String videosJson, Long computeTime,boolean isObj,ScenePlusExt scenePlusExt){
 
         scenePlusExt.setSpace(space);
-        scenePlusExt.setComputeTime(computeTime.toString());
+        scenePlusExt.setComputeTime(computeTime);
         scenePlusExt.setAlgorithmTime(new Date());
         scenePlusExt.setVideos(videosJson);
         scenePlusExt.setIsObj(isObj ? 1 : 0);

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

@@ -481,7 +481,7 @@ public class BuildLiguangServiceImpl implements IBuildSceneService {
     private void updateDbPlus(int sceneSource,Long space,String videosJson, Long computeTime,boolean isObj,ScenePlusExt scenePlusExt){
 
         scenePlusExt.setSpace(space);
-        scenePlusExt.setComputeTime(computeTime.toString());
+        scenePlusExt.setComputeTime(computeTime);
         scenePlusExt.setAlgorithmTime(new Date());
         scenePlusExt.setVideos(videosJson);
         scenePlusExt.setIsObj(isObj ? 1 : 0);

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

@@ -285,6 +285,7 @@ public class BuildObjServiceImpl implements IBuildSceneService {
                 //计算容量
                 Long space = commonService.getSpace(projectNum);
                 scenePlusExt.setSpace(space);
+                scenePlusExt.setMeshComputeTime(message.getComputeTime());
 
                 Object[] editInfoArr = commonService.updateEditInfo(scenePlus);
                 SceneEditInfo sceneEditInfo = (SceneEditInfo)editInfoArr[0];

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

@@ -325,7 +325,7 @@ public class BuildReverseE57SceneServiceImpl implements IBuildSceneService {
     private void updateDbPlus(int sceneSource,Long space,String videosJson, Long computeTime,Integer isObj,ScenePlusExt scenePlusExt){
 
         scenePlusExt.setSpace(space);
-        scenePlusExt.setComputeTime(computeTime.toString());
+        scenePlusExt.setComputeTime(computeTime);
         scenePlusExt.setAlgorithmTime(new Date());
         scenePlusExt.setVideos(videosJson);
         scenePlusExt.setIsObj(isObj);

+ 12 - 8
src/main/java/com/fdkankan/contro/mq/service/impl/BuildSceneServiceImpl.java

@@ -323,7 +323,7 @@ public class BuildSceneServiceImpl implements IBuildSceneService {
             Long space = commonService.getSpace(sceneCode);
 
             //写入数据库
-            this.updateDbPlus(scenePlus.getSceneSource(), space, videosJson.toJSONString(), message.getComputeTime(),isObj,scenePlusExt);
+            this.updateDbPlus(scenePlus, scenePlusExt, space, videosJson.toJSONString(), message.getComputeTime(),isObj);
 
             Object[] editInfoArr = commonService.updateEditInfo(scenePlus);
             SceneEditInfo sceneEditInfo = (SceneEditInfo)editInfoArr[0];
@@ -343,6 +343,7 @@ public class BuildSceneServiceImpl implements IBuildSceneService {
                         .sceneStatus(2)
                         .createTime(scenePlus.getCreateTime())
                         .shootCount(scenePlusExt.getShootCount())
+                        .slamCount(scenePlusExt.getSlamCount())
                         .payStatus(scenePlus.getPayStatus())
                         .mixture(scenePlusExt.getMixture())
                         .version(SceneVersionType.V4.code()).build());
@@ -561,10 +562,10 @@ public class BuildSceneServiceImpl implements IBuildSceneService {
         }
     }
 
-    private void updateDbPlus(int sceneSource,Long space,String videosJson, Long computeTime,boolean isObj,ScenePlusExt scenePlusExt){
+    private void updateDbPlus(ScenePlus scenePlus,ScenePlusExt scenePlusExt, Long space,String videosJson, Long computeTime,boolean isObj){
 
         scenePlusExt.setSpace(space);
-        scenePlusExt.setComputeTime(computeTime.toString());
+        scenePlusExt.setComputeTime(computeTime);
         scenePlusExt.setAlgorithmTime(new Date());
         scenePlusExt.setVideos(videosJson);
         scenePlusExt.setIsObj(isObj ? 1 : 0);
@@ -573,7 +574,7 @@ public class BuildSceneServiceImpl implements IBuildSceneService {
             scenePlusExt.setSceneScheme(3);
         }
 
-        switch (SceneSource.get(sceneSource)){
+        switch (SceneSource.get(scenePlus.getSceneSource())){
             case BM:
                 scenePlusExt.setSceneResolution(SceneResolution.two_K.code());
                 scenePlusExt.setSceneFrom(SceneFrom.PRO.code());
@@ -601,10 +602,13 @@ public class BuildSceneServiceImpl implements IBuildSceneService {
 //        scenePlusExt.setModelKind(modelKind);
 
         //统计点位数量
-        Map<String, Integer> result = this.getShootCount(scenePlusExt);
-        Integer shootCount = result.get("shootCount");
-        Integer mixture = result.get("mixture");
-        scenePlusExt.setShootCount(shootCount);
+        scenePlusExt.setShootCount(commonService.getShootCount(scenePlus.getNum()));
+        scenePlusExt.setSlamCount(commonService.getSlamCount(scenePlus.getNum()));
+        int mixture = CommonStatus.NO.code();
+        //如果点位数量和帧数都不为空,就是混合模式
+        if(Objects.nonNull(scenePlusExt.getShootCount()) && Objects.nonNull(scenePlusExt.getSlamCount())){
+            mixture = CommonStatus.YES.code();
+        }
         scenePlusExt.setMixture(mixture);
 
         scenePlusExtService.updateById(scenePlusExt);

+ 4 - 0
src/main/java/com/fdkankan/contro/service/ICommonService.java

@@ -61,4 +61,8 @@ public interface ICommonService {
 
     boolean checkIsSpVr(JSONObject dataFdageJson, CameraDetail cameraDetail);
 
+    Integer getShootCount(String num);
+
+    Integer getSlamCount(String num);
+
 }

+ 46 - 0
src/main/java/com/fdkankan/contro/service/impl/CommonServiceImpl.java

@@ -29,6 +29,7 @@ import com.fdkankan.model.constants.ConstantFilePath;
 import com.fdkankan.model.constants.UploadFilePath;
 import com.fdkankan.model.utils.CreateObjUtil;
 import com.fdkankan.model.utils.FloorPlanUserUtil;
+import com.fdkankan.model.utils.SceneUtil;
 import com.fdkankan.rabbitmq.bean.BuildSceneCallMessage;
 import com.fdkankan.rabbitmq.util.RabbitMqProducer;
 import com.fdkankan.redis.constant.RedisKey;
@@ -119,6 +120,8 @@ public class CommonServiceImpl implements ICommonService {
     private RabbitMqProducer rabbitMqProducer;
     @Autowired
     private ISceneInfoSyncMqConfigService sceneInfoSyncMqConfigService;
+    @Resource
+    private FYunFileServiceInterface fYunFileService;
 
     @Override
     public void uploadBuildResultData(String num, String dataSource, String version) {
@@ -805,4 +808,47 @@ public class CommonServiceImpl implements ICommonService {
         }
         return false;
     }
+
+    @Override
+    public Integer getShootCount(String num) {
+
+        ScenePlus scenePlus = scenePlusService.getScenePlusByNum(num);
+        ScenePlusExt scenePlusExt = scenePlusExtService.getScenePlusExtByPlusId(scenePlus.getId());
+
+        Integer shootCount = null;
+        String homePath = SceneUtil.getHomePath(scenePlusExt.getDataSource());
+        JSONObject dataFdageObj = JSON.parseObject(fYunFileService.getFileContent(homePath.concat("data.fdage")));
+        if(Objects.nonNull(dataFdageObj)){
+            JSONArray points = dataFdageObj.getJSONArray("points");
+            if(CollUtil.isNotEmpty(points)){
+                shootCount = points.size();
+            }
+        }
+
+        return shootCount;
+    }
+
+    @Override
+    public Integer getSlamCount(String num) {
+
+        ScenePlus scenePlus = scenePlusService.getScenePlusByNum(num);
+        ScenePlusExt scenePlusExt = scenePlusExtService.getScenePlusExtByPlusId(scenePlus.getId());
+
+        Integer slamCount = null;
+        String homePath = SceneUtil.getHomePath(scenePlusExt.getDataSource());
+        if(Objects.nonNull(scenePlusExt.getLocation()) && scenePlusExt.getLocation() == 6){
+            String slamDataStr = fYunFileService.getFileContent(homePath.concat("slam_data.json"));
+            JSONObject slamDataObj = JSON.parseObject(slamDataStr);
+            if(Objects.nonNull(slamDataObj)){
+                JSONArray viewsInfo = slamDataObj.getJSONArray("views_info");
+                if(CollUtil.isNotEmpty(viewsInfo)){
+                    slamCount = viewsInfo.stream().mapToInt(info -> {
+                        return  ((JSONObject) info).getJSONArray("list_pose").size();
+                    }).sum();
+                }
+            }
+        }
+
+        return slamCount;
+    }
 }

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

@@ -72,10 +72,12 @@ public class IFdkkLaserServiceImpl implements IFdkkLaserService {
             Integer sceneStatus = laserResultBean.getSceneStatus();
             Date createTime = laserResultBean.getCreateTime();
             Integer shootCount = laserResultBean.getShootCount();
+            Integer slamCount = laserResultBean.getSlamCount();
             Integer payStatus = laserResultBean.getPayStatus();
             Boolean mixture = laserResultBean.getMixture() == CommonStatus.NO.code().intValue() ? false : true;
             String version = SceneVersionType.V4.code();
 
+
             String jgPath = dataSource;
             //创建目录
             if (dataSource.lastIndexOf("/") != -1) {
@@ -115,6 +117,7 @@ public class IFdkkLaserServiceImpl implements IFdkkLaserService {
             params.put("algorithmTime", DateUtil.date2String(Calendar.getInstance().getTime(), null));
             params.put("path", jgPath + File.separator + "laserData");
             params.put("shootCount", shootCount);
+            params.put("slamCount", slamCount);
             params.put("payStatus", payStatus);
             params.put("mixture", mixture);
             rabbitMqProducer.sendByWorkQueue(updateScene, params);

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

@@ -253,7 +253,7 @@ public class InnerServiceImpl implements IInnerService {
     private void updateDbPlus(int sceneSource,Long space,String videosJson, Long computeTime,boolean isObj,ScenePlusExt scenePlusExt){
 
         scenePlusExt.setSpace(space);
-        scenePlusExt.setComputeTime(computeTime.toString());
+        scenePlusExt.setComputeTime(computeTime);
         scenePlusExt.setAlgorithmTime(new Date());
         scenePlusExt.setVideos(videosJson);
         scenePlusExt.setIsObj(isObj ? 1 : 0);