|
@@ -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;
|