lyhzzz 6 kuukautta sitten
vanhempi
commit
5affb403c9

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 117 - 0
doc/t_scene.sql


+ 3 - 9
src/main/java/com/fdkankan/fusion/common/util/OBJToGLBUtil.java

@@ -5,12 +5,8 @@ import cn.hutool.core.io.file.FileReader;
 import com.alibaba.fastjson.JSONObject;
 import com.fdkankan.fusion.common.FilePath;
 import com.fdkankan.fusion.common.ResultCode;
-import com.fdkankan.fusion.config.CacheUtil;
 import com.fdkankan.fusion.exception.BusinessException;
 import lombok.extern.slf4j.Slf4j;
-import okhttp3.Cache;
-import org.apache.commons.lang3.StringUtils;
-import org.omg.CosNaming.NamingContextExtPackage.StringNameHelper;
 
 import java.io.*;
 import java.nio.charset.StandardCharsets;
@@ -20,7 +16,6 @@ import java.util.LinkedHashSet;
 @Slf4j
 public class OBJToGLBUtil {
 
-    public static String obj2glbCmd = CacheUtil.installPath +File.separator +"CGAII" +File.separator + "obj2gltf.exe -i %s -o %s";
 
     public static String objToGlb(String objPath, String glbPath)  {
         log.info("obj转换glb开始,{}",objPath);
@@ -28,7 +23,7 @@ public class OBJToGLBUtil {
             throw new BusinessException(-1,"obj文件错误");
         }
         log.info("obj转换glb开始");
-        String command = String.format(obj2glbCmd,objPath,glbPath);
+        String command = String.format(ShellCmd.obj2glb_cmd,objPath,glbPath);
         log.info("执行obj转换glb命令路径-{}", command);
         ShellUtil.execCmd(command);
         log.info("obj转换glb完毕:" + command);
@@ -37,7 +32,7 @@ public class OBJToGLBUtil {
     public static void objToGlb2(String objPath,String glbPath)  {
         log.info("obj转换glb开始,{}",objPath);
         log.info("obj转换glb开始");
-        String command = String.format(obj2glbCmd,objPath,glbPath);
+        String command = String.format(ShellCmd.obj2glb_cmd,objPath,glbPath);
         log.info("执行obj转换glb命令路径-{}", command);
         ShellUtil.execCmd(command);
         log.info("obj转换glb完毕:" + command);
@@ -182,13 +177,12 @@ public class OBJToGLBUtil {
         return imgName;
     }
 
-    public final static String LAS_TO_BIN = CacheUtil.installPath + File.separator+"CGAII"+File.separator +"PotreeConverter.bat %s %s ''";
 
     public static File lasOrPlyToBin(File srcFile){
         if(!srcFile.exists()){
             srcFile.mkdirs();
         }
-        String cmd = String.format(LAS_TO_BIN,srcFile.getPath(),srcFile.getParentFile().getPath());
+        String cmd = String.format(ShellCmd.LAS_TO_BIN,srcFile.getPath(),srcFile.getParentFile().getPath());
         ShellUtil.execCmd(cmd);
         log.info("lasOrPlyToBin---------cmd-over");
         String cloudJs = srcFile.getParentFile().getPath() +"/webcloud/"+ "cloud.js";

+ 17 - 1
src/main/java/com/fdkankan/fusion/common/util/SceneTypeUtil.java

@@ -1,6 +1,7 @@
 package com.fdkankan.fusion.common.util;
 
 import java.util.Arrays;
+import java.util.List;
 
 public class SceneTypeUtil {
 
@@ -18,6 +19,9 @@ public class SceneTypeUtil {
     }
 
     public static Boolean isLaser(Integer type){
+        if(type == null){
+            return false;
+        }
         switch (type){
             case 0: return false;
             case 1: return false;
@@ -41,10 +45,22 @@ public class SceneTypeUtil {
         }
     }
 
-    public static Object getSceneSourceList(Integer isObj) {
+    public static List<Integer> getSceneSourceList(Integer isObj) {
         if(isObj == 0){
             return Arrays.asList(4,5);
         }
         return Arrays.asList(1,3,4,5);
     }
+
+    public static Boolean isLaserBySceneSource(Integer sceneSource) {
+        if(sceneSource == null){
+            return false;
+        }
+        switch (sceneSource){
+            case 4: return true;
+            case 5: return true;
+            case 6: return false;
+            default:return false;
+        }
+    }
 }

+ 10 - 1
src/main/java/com/fdkankan/fusion/common/util/ShellCmd.java

@@ -14,6 +14,15 @@ public class ShellCmd {
 	public static final String FYUN_UPLOAD = "bash /opt/ossutil/fyun-upload.sh %s %s /%s %s %s";
 	public static final String FYUN_DOWN = "bash /opt/ossutil/fyun-download.sh %s /%s %s %s %s";
 
-	public static final String osgbTob3dmCmd = CacheUtil.installPath + File.separator+"CGAII" +File.separator +"3dtile"+File.separator  + "3dtile.exe -f osgb -i " +
+	public static String base_cmd = CacheUtil.installPath + File.separator +"CGAII" +File.separator ;
+
+	//7za.exe  x -y  xxx.zip
+	public static String unzip_cmd = base_cmd + "7za.exe  x -y %s -o%s" ;
+
+	public static String obj2glb_cmd =base_cmd + "obj2gltf.exe -i %s -o %s";
+
+	public  static String LAS_TO_BIN = base_cmd +"PotreeConverter.bat %s %s ''";
+
+	public static  String osgbTob3dmCmd = base_cmd +"3dtile"+File.separator  + "3dtile.exe -f osgb -i " +
 			"%s -o %s";
 }

+ 10 - 4
src/main/java/com/fdkankan/fusion/common/util/ShellUtil.java

@@ -3,12 +3,10 @@ package com.fdkankan.fusion.common.util;
 import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.io.file.FileReader;
 import com.alibaba.fastjson.JSONObject;
-import com.fdkankan.fusion.config.CacheUtil;
 import lombok.extern.slf4j.Slf4j;
 
 import java.io.*;
-import java.net.URL;
-import java.nio.charset.StandardCharsets;
+import java.util.regex.Matcher;
 
 @Slf4j
 public class ShellUtil {
@@ -108,11 +106,19 @@ public class ShellUtil {
         }
     }
 
+
     public static void unZip(String zipPath, String dataPath) {
         log.info("解压zip开始");
-        String command = "unzip -O GBK/GB18030CP936 " + zipPath + " -d " + dataPath;
+        if(zipPath.contains("/")){
+            zipPath = zipPath.replaceAll("/",Matcher.quoteReplacement(File.separator));
+        }
+        if(dataPath.contains("/")){
+            dataPath = dataPath.replaceAll("/", Matcher.quoteReplacement(File.separator));
+        }
+        String command = String.format(ShellCmd.unzip_cmd,zipPath,dataPath);
         execCmd(command);
         log.info("解压zip完毕:" + command);
+
     }
 
     public static void zip(String zipPath, String dataPath) {

+ 3 - 0
src/main/java/com/fdkankan/fusion/config/CacheUtil.java

@@ -2,9 +2,12 @@ package com.fdkankan.fusion.config;
 
 import org.springframework.beans.factory.annotation.Value;
 
+import java.io.File;
+
 public class CacheUtil {
     public static String uploadType;
 
     public static String basePath;
     public static String installPath;
+
 }

+ 1 - 1
src/main/java/com/fdkankan/fusion/controller/NoLoginController.java

@@ -55,7 +55,7 @@ public class NoLoginController {
             lineCaptcha.setGenerator(mathGenerator);
             //id = request.getSession().getId();
             id = lineCaptcha.getCode();
-            redisUtil.set(String.format(RedisKeyUtil.loginAuthCode,id),lineCaptcha.getCode(),60*5);
+           // redisUtil.set(String.format(RedisKeyUtil.loginAuthCode,id),lineCaptcha.getCode(),60*5);
             lineCaptcha.write(response.getOutputStream());
             response.getOutputStream().close();
         } catch (Exception e){

+ 3 - 4
src/main/java/com/fdkankan/fusion/controller/UploadController.java

@@ -39,10 +39,9 @@ public class UploadController {
      * 文件上传
      */
     @RequestMapping(value = "/fileNew", method = RequestMethod.POST)
-    public ResultData uploadNew(
-            @RequestParam(value = "dictId",required = false) Integer dictId,
-            @RequestParam(value = "filePath",required = false) String filePath) {
+    public ResultData uploadNew(@RequestParam(required = false) MultipartFile file,
+            @RequestParam(value = "dictId",required = false) Integer dictId) {
 
-        return commonUploadService.uploadFileNew(dictId,filePath);
+        return commonUploadService.uploadFileNew(dictId,file);
     }
 }

+ 67 - 13
src/main/java/com/fdkankan/fusion/down/CaseDownService.java

@@ -231,7 +231,7 @@ public class CaseDownService {
             }
             if(sceneData.getType() != 3){
                 //下载场景离线包
-                downSwkk(caseId,sceneData.getNum(),sceneData.getType());
+                downSwkk(caseId,sceneData.getNum(),sceneData.getType(),caseOffPath);
             }
             if(sceneData.getType() == 2 || sceneData.getType() == 5){
                 FdkkResponse sceneInfo = laserService.getSceneInfo(sceneData.getNum());
@@ -369,24 +369,79 @@ public class CaseDownService {
    @Autowired
     LocalToOssUtil localToOssUtil;
 
-   public void downSwkk(Integer caseId,String num,Integer type){
+   public void downSwkk(Integer caseId,String num,Integer type,String offPath){
 
-       String swkkPath = FilePath.OFFLINE_PACKAGE_PATH+caseId + "/www/swkk/"+num;
-       String swssPath = FilePath.OFFLINE_PACKAGE_PATH+caseId + "/www/swss/"+num;
+       String swkkPath = offPath+ "/www/swkk/"+num;
+       String swssPath = offPath + "/www/swss/"+num;
 
-       Integer isObj = 0;
+       Boolean isLaser = true;
        if(type == 4 || type == 6){
-           isObj =1;
+           isLaser = false;
        }
-       try {
-           FdkkResponse fdkkResponse = laserService.sceneLocInfo(num);
-
+            Boolean wita = true;
+           Long startTime = new Date().getTime();
+           Long wiatTime = 10000L;
+
+           while (wita){
+               Long nowTime = new Date().getTime();
+               if(nowTime - startTime < wiatTime){
+                   continue;
+               }
+               startTime = nowTime;
+               try {
+                   FdkkResponse fdkkResponse = laserService.sceneLocInfo(num);
+                   if(fdkkResponse.getCode() != 200){
+                       break;
+                   }
+                   JSONObject jsonObject = (JSONObject) fdkkResponse.getData();
+                   Integer sceneId = jsonObject.getInteger("id");
+                   Boolean meshStatus = jsonObject.getBoolean("meshRebuildOffline");
+                   Boolean laserStatus = jsonObject.getBoolean("rebuildOffline");
+                   String meshOfflineFolder = jsonObject.getString("meshOfflineFolder");
+                   String laserOfflineFolder = jsonObject.getString("offlineFolder");
+                   //1 生成成功 ,0:正在生成 1,初次生成  2,下载失败
+                   Integer laserOffStatus = jsonObject.getInteger("buildOfflineStatus");
+                   //1 生成成功,0:正在生成 1,初次生成  2,下载失败
+                   Integer meshBuildOfflineStatus = jsonObject.getInteger("meshBuildOfflineStatus");
+
+                   wita = downSceneOffline(sceneId, isLaser,
+                           isLaser ? swssPath : swkkPath,
+                           isLaser ? laserStatus : meshStatus,
+                           isLaser ? laserOfflineFolder : meshOfflineFolder,
+                           isLaser ? laserOffStatus : meshBuildOfflineStatus
+                   );
+
+               }catch (Exception e){
+                   log.info("下载场景离线包失败:{}",num,e);
+                   break;
+               }
+           }
 
-       }catch (Exception e){
-           log.info("下载场景离线包失败:{}",num,e);
-       }
 
    }
+
+    /**
+     * @param buildOfflineStatus   //1 生成成功,0:正在生成 1,初次生成  2,下载失败
+     */
+    private Boolean downSceneOffline(Integer sceneId, Boolean isLaser, String offPath, Boolean rebuildOffline, String offlineFolder, Integer buildOfflineStatus) {
+        if(rebuildOffline && buildOfflineStatus !=0){
+            laserService.rebuildOffline(offPath,isLaser,sceneId);
+            return true;
+        }
+        if(buildOfflineStatus == 2){
+            return false;
+        }
+        if(!rebuildOffline && buildOfflineStatus == 1){
+            if(!new File(offlineFolder).exists()){
+                laserService.rebuildOffline(offPath,isLaser,sceneId);
+                return true;
+            }
+            FileUtil.copyContent(new File(offlineFolder),new File(offPath),true);
+            return false;
+        }
+        return true;
+    }
+
     @Value("${upload.query-path}")
     private String queryPath;
    public void downZip(Integer type ,String uri,String kkzipPath,String kknumPath,String sszipPath,String ssNumPath){
@@ -459,5 +514,4 @@ public class CaseDownService {
     }
 
 
-
 }

+ 13 - 0
src/main/java/com/fdkankan/fusion/httpClient/LaserService.java

@@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fdkankan.fusion.httpClient.client.LaserClient;
 import com.fdkankan.fusion.httpClient.request.SSDownSceneParam;
+import com.fdkankan.fusion.httpClient.request.SSDownSceneParamLocal;
 import com.fdkankan.fusion.httpClient.response.FdkkResponse;
 import com.fdkankan.fusion.httpClient.response.SSDownSceneVo;
 import com.fdkankan.redis.util.RedisUtil;
@@ -92,4 +93,16 @@ public class LaserService {
         }
         return  null;
     }
+
+    public void rebuildOffline(String buildPath,Boolean isLaser,Integer id) {
+        try {
+            SSDownSceneParamLocal param = new SSDownSceneParamLocal();
+            param.setId(id);
+            param.setResultPath(buildPath);
+            param.setOfflineType(isLaser ? 1 :2);
+            laserClient.downOfflineSceneNew(param);
+        }catch (Exception e){
+            log.info("获取激光场景信息失败rebuildOffline-error:{},{},{}",buildPath,isLaser,id,e);
+        }
+    }
 }

+ 2 - 1
src/main/java/com/fdkankan/fusion/httpClient/client/LaserClient.java

@@ -4,6 +4,7 @@ import com.dtflys.forest.annotation.*;
 import com.fdkankan.fusion.httpClient.address.LaserAddressSource;
 import com.fdkankan.fusion.httpClient.request.LaserSceneParam;
 import com.fdkankan.fusion.httpClient.request.SSDownSceneParam;
+import com.fdkankan.fusion.httpClient.request.SSDownSceneParamLocal;
 import com.fdkankan.fusion.httpClient.response.FdkkResponse;
 import com.fdkankan.fusion.request.ScenePram;
 
@@ -61,5 +62,5 @@ public interface LaserClient {
      * 下载深时场景
      */
     @Post(value = "/laser/loc/downOfflineScene")
-    FdkkResponse downOfflineSceneNew(@JSONBody SSDownSceneParam param) ;
+    FdkkResponse downOfflineSceneNew(@JSONBody SSDownSceneParamLocal param) ;
 }

+ 1 - 0
src/main/java/com/fdkankan/fusion/response/SceneVo.java

@@ -38,6 +38,7 @@ public class SceneVo extends Model {
     private Integer location;
 
     private Boolean inFusion = false;
+    private Boolean inCase = false;
 
     /**
      * 模型方向(只有激光场景才有)

+ 5 - 0
src/main/java/com/fdkankan/fusion/service/ICaseNumService.java

@@ -1,5 +1,6 @@
 package com.fdkankan.fusion.service;
 
+import com.fdkankan.fusion.entity.CaseEntity;
 import com.fdkankan.fusion.entity.CaseNumEntity;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.fdkankan.fusion.request.SceneNumParam;
@@ -33,4 +34,8 @@ public interface ICaseNumService extends IService<CaseNumEntity> {
     void addModeByCaseId(Integer caseId, Integer modelId);
 
     void deleteByModel(Integer modelId);
+
+    HashMap<String, CaseEntity> getMapByNumList(List<String> numList);
+
+    List<CaseNumEntity> getByNumList(List<String> numList);
 }

+ 1 - 1
src/main/java/com/fdkankan/fusion/service/ICommonUploadService.java

@@ -16,7 +16,7 @@ import org.springframework.web.multipart.MultipartFile;
  */
 public interface ICommonUploadService extends IService<CommonUpload> {
 
-    ResultData uploadFileNew( Integer dictId,String FilePath);
+    ResultData uploadFileNew( Integer dictId,MultipartFile file);
 
     CommonUpload add(String replace, String url, String s, String uuid, FileTypeEnum fileTypeEnum,String resultFormat, String replace1, Integer status, String unzipPath, Integer dictId);
 

+ 31 - 0
src/main/java/com/fdkankan/fusion/service/impl/CaseNumServiceImpl.java

@@ -8,6 +8,7 @@ import com.fdkankan.fusion.common.FilePath;
 import com.fdkankan.fusion.common.ResultCode;
 import com.fdkankan.fusion.common.ResultData;
 import com.fdkankan.fusion.common.util.*;
+import com.fdkankan.fusion.entity.CaseEntity;
 import com.fdkankan.fusion.entity.CaseNumEntity;
 import com.fdkankan.fusion.entity.FusionNum;
 import com.fdkankan.fusion.entity.Model;
@@ -335,4 +336,34 @@ public class CaseNumServiceImpl extends ServiceImpl<ICaseNumMapper, CaseNumEntit
         modelService.removeById(modelId);
 
     }
+    @Override
+    public List<CaseNumEntity> getByNumList(List<String> numList) {
+        LambdaQueryWrapper<CaseNumEntity> wrapper = new LambdaQueryWrapper<>();
+        wrapper.in(CaseNumEntity::getNum,numList);
+        return this.list(wrapper);
+    }
+    @Autowired
+    ICaseService caseService;
+    @Override
+    public HashMap<String, CaseEntity> getMapByNumList(List<String> numList) {
+        HashMap<String, CaseEntity> map = new HashMap<>();
+        if(numList == null || numList.isEmpty()){
+            return map;
+        }
+        List<CaseNumEntity> list = this.getByNumList(numList);
+        Set<Integer> setIds = list.stream().map(CaseNumEntity::getCaseId).collect(Collectors.toSet());
+        HashMap<Integer,CaseEntity> caseMap = new HashMap<>();
+        if(!setIds.isEmpty()){
+            List<CaseEntity> cases = caseService.listByIds(setIds);
+            if(!cases.isEmpty()){
+                cases.forEach(e -> caseMap.put(e.getCaseId(),e));
+            }
+        }
+        for (CaseNumEntity caseNum : list) {
+            if(caseMap.get(caseNum.getCaseId()) != null){
+                map.put(caseNum.getNum()+caseNum.getNumType() ,caseMap.get(caseNum.getCaseId()));
+            }
+        }
+        return map;
+    }
 }

+ 24 - 16
src/main/java/com/fdkankan/fusion/service/impl/CommonUploadServiceImpl.java

@@ -58,27 +58,27 @@ public class CommonUploadServiceImpl extends ServiceImpl<ICommonUploadMapper, Co
     
 
     @Override
-    public ResultData uploadFileNew( Integer dictId,String filePath) {
-        if( StringUtils.isBlank(filePath) ){
-            throw new BusinessException(ResultCode.UPLOAD_ERROR);
-        }
-        File file = new File(filePath);
-        if(!file.exists() ){
+    public ResultData uploadFileNew( Integer dictId,MultipartFile file) {
+        if( file.isEmpty() ){
             throw new BusinessException(ResultCode.UPLOAD_ERROR);
         }
+        File  tempFile = null;
+
         try {
-            if(file.isDirectory()){
-                return uploadModelZip(file.getName(),file,dictId);
-            }
             String uuid = UUID.randomUUID().toString().replace("-","");
-            String name = file.getName();
+            String name = file.getOriginalFilename();
             String extName = name.substring(name.lastIndexOf(".")).toLowerCase();
             String ossPath = String.format(OssPath.MANAGE_FILE_PATH, uuid + extName);
 
-            //file.transferTo(tempFile);
-
-
-            localToOssUtil.uploadOss(file.getPath(), ossPath);
+            tempFile = new File(OssPath.localPath + ossPath);
+            if(!tempFile.getParentFile().exists()){
+                tempFile.getParentFile().mkdirs();
+            }
+            file.transferTo(tempFile);
+            if(extName.equals(".zip")){
+                return uploadModelZip(name.replace(extName, ""),tempFile,dictId);
+            }
+            //localToOssUtil.uploadOss(tempFile.getPath(), ossPath);
             String url = this.ossUrlPrefix + ossPath;
 
             FileTypeEnum fileTypeEnum = FileTypeEnum.getByType(extName.replace(".", ""));
@@ -86,7 +86,7 @@ public class CommonUploadServiceImpl extends ServiceImpl<ICommonUploadMapper, Co
                 throw new BusinessException(ResultCode.FILE_TYPE_ERROR2);
             }
             String format = extName.replace(".", "");
-            CommonUpload commonUpload = commonUploadService.add(name.replace(extName, ""), url, String.valueOf(file.length()), uuid, fileTypeEnum, format,format,1,null,dictId);
+            CommonUpload commonUpload = commonUploadService.add(name.replace(extName, ""), url, String.valueOf(file.getSize()), uuid, fileTypeEnum, format,format,1,null,dictId);
             return ResultData.ok(commonUpload);
         }catch ( BusinessException e){
             log.info("upload-file-error:{}",e);
@@ -98,10 +98,18 @@ public class CommonUploadServiceImpl extends ServiceImpl<ICommonUploadMapper, Co
     }
 
     private ResultData uploadModelZip(String oldName,File file,Integer dictId) {
+
         String ossZipPath = String.format(OssPath.MANAGE_MODEL_FILE_PATH, UUID.randomUUID().toString().replace("-", ""));
         String unzipPath = CacheUtil.basePath + ossZipPath;
+        ShellUtil.unZip(file.getPath(),unzipPath);
+        try {
+            Thread.sleep(1000L);
+            FileUtil.del(file.getPath());
+        }catch (Exception e){
+            log.info("删除文件失败:{}",e);
+        }
 
-        FileUtil.copyContent(file,new File(unzipPath),true);
+        //FileUtil.copyContent(file,new File(unzipPath),true);
         File unZipFile = new File(unzipPath);
 
         if(!unZipFile.exists() || !unZipFile.isDirectory() ){

+ 14 - 5
src/main/java/com/fdkankan/fusion/service/impl/SceneCommonService.java

@@ -22,6 +22,8 @@ import com.fdkankan.fusion.response.SceneVo;
 import com.fdkankan.fusion.service.*;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.ibatis.annotations.Case;
+import org.aspectj.weaver.ast.And;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -89,9 +91,9 @@ public class SceneCommonService implements ISceneCommonService {
             wrapper.in(Scene::getSceneSource,SceneTypeUtil.getSceneSourceList(0));
         }
         if(param.getIsObj() != null && param.getIsObj() == 1){  //mesh场景
-            wrapper.notIn(Scene::getBuildObjStatus,0)
+            wrapper.and((wq)-> wq.notIn(Scene::getBuildObjStatus,0)
                     .or()
-                    .notIn(Scene::getSceneSource,SceneTypeUtil.getSceneSourceList(0));
+                    .notIn(Scene::getSceneSource,SceneTypeUtil.getSceneSourceList(0)));
         }
         if(param.getNumList() != null && !param.getNumList().isEmpty()){
             wrapper.in(Scene::getSceneCode,param.getNumList());
@@ -99,8 +101,11 @@ public class SceneCommonService implements ISceneCommonService {
         if(param.getStatus() != null){
             wrapper.eq(Scene::getStatus,param.getStatus());
         }
-
         Page<Scene> page = sceneService.page(new Page<>(param.getPageNum(), param.getPageSize()), wrapper);
+        List<String> numList = page.getRecords().parallelStream().map(Scene::getSceneCode).collect(Collectors.toList());
+
+        HashMap<String, CaseEntity> mapByNumList = caseNumService.getMapByNumList(numList);
+
         List<SceneVo> sceneVoList = new ArrayList<>();
         for (Scene scene : page.getRecords()) {
             SceneVo vo = new SceneVo();
@@ -116,15 +121,19 @@ public class SceneCommonService implements ISceneCommonService {
             vo.setThumb(scene.getInitPic());
             vo.setTitle(scene.getTitle());
             vo.setViewCount(scene.getViewCount());
-            vo.setIsLaser(SceneTypeUtil.isLaser(param.getType()));
-
             vo.setType(setSceneType(scene.getSceneSource(),param.getIsObj()));
+            vo.setIsLaser(SceneTypeUtil.isLaser(vo.getType()));
             vo.setPhone(scene.getUserName());
             vo.setBind(true);
             vo.setLocation(scene.getLocation());
             vo.setInFusion(false);
             //vo.setOrientation();
             //vo.setRtkLocation();
+
+            if(mapByNumList.get(vo.getNum() + vo.getType())!=null){
+                vo.setInCase(true);
+            }
+
             sceneVoList.add(vo);
         }