Просмотр исходного кода

Merge branch 'feature-20231229-xwj' into test

xiewj 1 год назад
Родитель
Сommit
df6d162e32

+ 15 - 0
src/main/java/com/fdkankan/openApi/entity/laser/SceneEntity.java

@@ -69,4 +69,19 @@ public class SceneEntity extends LaserBaseEntity {
     private Integer offlineStatus;
     private Integer offlineVer;
     private String offlineUrl;
+
+    /*
+        判断是否为slam场景,深光和深时 以前的场景都是4" +
+            "typedef enum SceneLocation {\n" +
+            "    Scene_Location_Slam  = 0, //slam\n" +
+            "    Scene_Location_SFM 1 ,   //sfm\n" +
+            "    Scene_Location_SFMAI  2,     //SFM + AI\n" +
+            "    Scene_Location_MutiFloor 3 ,    //多楼层\n" +
+            "    Scene_Location_PointCloud 4,    //点云\n" +
+            "    Scene_Location_SLAMPoint 5,    //slam实时拍\n" +
+            "    Scene_Location_SLAMPointAndSFMAI  6   //slam实时拍+站点\n" +
+            "} SceneLocation;
+     */
+    private Integer location;
+
 }

+ 3 - 0
src/main/java/com/fdkankan/openApi/entity/system/SceneDataDownloadEntity.java

@@ -31,4 +31,7 @@ public class SceneDataDownloadEntity extends SystemBaseEntity {
     private Date ossDelete;
 
     private Long userId;
+
+    /** 场景版本号 */
+    private int sceneVer;
 }

+ 26 - 8
src/main/java/com/fdkankan/openApi/service/system/impl/SceneDataDownloadServiceImpl.java

@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.fyun.face.FYunFileServiceInterface;
 import com.fdkankan.openApi.bean.vo.SceneDataDownloadVO;
+import com.fdkankan.openApi.entity.laser.SceneEntity;
 import com.fdkankan.openApi.entity.system.SceneDataDownloadEntity;
 import com.fdkankan.openApi.mapper.system.SceneDataDownloadMapper;
 import com.fdkankan.openApi.service.laser.SceneService;
@@ -22,6 +23,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Locale;
 import java.util.Map;
 import java.util.stream.Collectors;
 
@@ -50,15 +52,30 @@ public class SceneDataDownloadServiceImpl extends ServiceImpl<SceneDataDownloadM
     @Transactional(rollbackFor = Exception.class)
     public ResultData sceneDownloadDepthMapAndPly(String sceneCode, Long userId) {
         List<SceneDataDownloadEntity> sceneDataDownloadEntityList = findByOssDeleteIsNullBySceneCode(sceneCode);
-        String xlsxUrl="sceneRawData/"+sceneCode+"/"+sceneCode+".xlsx";
-
+        SceneEntity sceneEntity = sceneService.findBySceneCode(sceneCode);
+        if (ObjectUtil.isNotNull(sceneEntity)&&sceneEntity.getLocation()==6){
+            throw new BusinessException(-1,"不支持slam场景原始数据下载");
+        }
         String e57Url=laserDefaultFolder + "/" + sceneCode + "/data/"+sceneCode+"_e57.zip";
         boolean e57Flag=false;
         if(fYunFileService.fileExist(laserBucket,e57Url)){
             e57Flag=true;
         }
-        boolean e57DBFlag = sceneDataDownloadEntityList.stream().anyMatch(a -> a.getFileName().contains("e57"));
-        if (CollectionUtil.isNotEmpty(sceneDataDownloadEntityList)&&e57Flag&&e57DBFlag){
+        boolean e57DBFlag=false;
+        boolean recountFlag=false;
+        for (SceneDataDownloadEntity sceneDataDownloadEntity : sceneDataDownloadEntityList) {
+            if (sceneDataDownloadEntity.getFileName().toLowerCase(Locale.ROOT).contains("e57")  && !e57DBFlag){
+                e57DBFlag=true;
+            }
+            if (sceneDataDownloadEntity.getSceneVer()<sceneEntity.getRecount() && !recountFlag){
+                recountFlag=true;
+            }
+            if (e57DBFlag&&recountFlag){
+                break; // 终止整个循环
+            }
+        }
+
+        if (CollectionUtil.isNotEmpty(sceneDataDownloadEntityList)&& e57Flag && e57DBFlag && !recountFlag ){
             log.info("场景存在库");
             List<SceneDataDownloadVO> sceneDataDownloadVOS = sceneDataDownloadEntityList.stream()
                     .map(sceneData -> new SceneDataDownloadVO(sceneData.getFileName(),laserOSSUrl+sceneData.getOssKey()))
@@ -93,7 +110,7 @@ public class SceneDataDownloadServiceImpl extends ServiceImpl<SceneDataDownloadM
                 copyFiles.add(copyUrl);
             }
             if ((has_png && has_cloud )|| (has_png && e57Flag)){
-                return  saveAndDownLoad(sceneCode, copyFiles,userId);
+                return  saveAndDownLoad(sceneCode, copyFiles,userId,sceneEntity.getRecount());
             }else if (!has_png  && !has_cloud ){
                 throw new BusinessException(-1,"数据不全,请重算后再尝试下载");
             }else if (has_png && (!has_cloud||!e57Flag  )){
@@ -104,12 +121,12 @@ public class SceneDataDownloadServiceImpl extends ServiceImpl<SceneDataDownloadM
         }
         return ResultData.ok();
     }
-    private ResultData saveAndDownLoad(String sceneCode,   List<String> data,Long userId) {
+    private ResultData saveAndDownLoad(String sceneCode,   List<String> data,Long userId,int ver) {
         List<SceneDataDownloadEntity> dataDownloadEntities=new ArrayList<>();
         for (String file : data) {
              String name = FileUtil.getName(file);
              //上传OSS并且入库
-            dataDownloadEntities.add(findAndSave(sceneCode, userId, file, name, 1));
+            dataDownloadEntities.add(findAndSave(sceneCode, userId, file, name, 1,ver));
         }
         List<SceneDataDownloadVO> sceneDataDownloadVOS = dataDownloadEntities.stream()
                 .map(sceneData -> new SceneDataDownloadVO(sceneData.getFileName(),laserOSSUrl+sceneData.getOssKey()))
@@ -117,7 +134,7 @@ public class SceneDataDownloadServiceImpl extends ServiceImpl<SceneDataDownloadM
         return ResultData.ok(sceneDataDownloadVOS);
     }
 
-    private SceneDataDownloadEntity findAndSave(String sceneCode, Long userId, String xlsxUrl,String fileName,int type) {
+    private SceneDataDownloadEntity findAndSave(String sceneCode, Long userId, String xlsxUrl,String fileName,int type,int ver) {
         SceneDataDownloadEntity sceneDataDownload = findBySceneCodeAndFileNameAndOssDeleteIsNull( sceneCode,fileName);
         if (ObjectUtil.isNull(sceneDataDownload)){
             sceneDataDownload=new SceneDataDownloadEntity();
@@ -126,6 +143,7 @@ public class SceneDataDownloadServiceImpl extends ServiceImpl<SceneDataDownloadM
             sceneDataDownload.setType(type);
             sceneDataDownload.setSceneCode(sceneCode);
             sceneDataDownload.setBucket(laserBucket);
+            sceneDataDownload.setSceneVer(ver);
             sceneDataDownload.setUserId(userId);
             save(sceneDataDownload);
             return sceneDataDownload;