Ver código fonte

Merge branch 'release-4.14.4' into project-jp

dengsixing 1 semana atrás
pai
commit
e5c232c304

+ 3 - 0
src/main/java/com/fdkankan/scene/bean/IconBean.java

@@ -1,5 +1,6 @@
 package com.fdkankan.scene.bean;
 
+import com.alibaba.fastjson.JSONObject;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
@@ -29,4 +30,6 @@ public class IconBean {
      */
     private int count;
 
+    private JSONObject style;
+
 }

+ 3 - 0
src/main/java/com/fdkankan/scene/entity/Surveillance.java

@@ -100,5 +100,8 @@ public class Surveillance implements Serializable {
     @TableLogic(value = "A", delval = "I")
     private String recStatus;
 
+    @TableField("file_size")
+    private Integer fileSize;
+
 
 }

+ 2 - 1
src/main/java/com/fdkankan/scene/service/impl/SceneCopyServiceImpl.java

@@ -7,6 +7,7 @@ import cn.hutool.extra.qrcode.QrCodeUtil;
 import cn.hutool.extra.qrcode.QrConfig;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.fdkankan.common.constant.SceneSource;
 import com.fdkankan.common.constant.SceneVersionType;
 import com.fdkankan.common.exception.BusinessException;
 import com.fdkankan.common.util.FileUtils;
@@ -133,7 +134,7 @@ public class SceneCopyServiceImpl implements ISceneCopyService {
                 });
             }
 
-            if(scenePlus.getSceneSource() == 4 || scenePlus.getSceneSource() == 5){  //深时复制
+            if(scenePlus.getSceneSource() == SceneSource.JG.code() || scenePlus.getSceneSource() == SceneSource.SG.code() || scenePlus.getSceneSource() == SceneSource.SX.code()){  //深时复制
                 laserService.copy(oldNum,newNum,newDataSource,true);
             }else {
                 laserService.cloudPointBuild(oldNum,newNum);

+ 30 - 8
src/main/java/com/fdkankan/scene/service/impl/SceneEditInfoExtServiceImpl.java

@@ -20,6 +20,7 @@ import com.fdkankan.redis.constant.RedisKey;
 import com.fdkankan.redis.constant.RedisLockKey;
 import com.fdkankan.redis.util.RedisLockUtil;
 import com.fdkankan.redis.util.RedisUtil;
+import com.fdkankan.scene.bean.IconBean;
 import com.fdkankan.scene.bean.TagBean;
 import com.fdkankan.scene.entity.SceneEditInfo;
 import com.fdkankan.scene.entity.SceneEditInfoExt;
@@ -29,6 +30,7 @@ import com.fdkankan.scene.mapper.ISceneEditInfoExtMapper;
 import com.fdkankan.scene.service.*;
 import com.fdkankan.scene.vo.*;
 import com.fdkankan.web.response.ResultData;
+import com.google.common.collect.Lists;
 import org.aspectj.apache.bcel.generic.RET;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -225,22 +227,42 @@ public class SceneEditInfoExtServiceImpl extends ServiceImpl<ISceneEditInfoExtMa
         key = String.format(RedisKey.SCENE_BILLBOARDS_STYLES, param.getNum());
         List<String> sytlelist = redisUtil.hgetValues(key);
         if(CollUtil.isNotEmpty(sytlelist)){
-            List<TagBean> stileSortList = sytlelist.stream().map(str -> {
+            styles = sytlelist.stream().map(str -> {
                 JSONObject jsonObject = JSON.parseObject(str);
-                TagBean tagBean = new TagBean();
-                tagBean.setCreateTime(jsonObject.getLong("createTime"));
                 jsonObject.remove("createTime");
-                tagBean.setTag(jsonObject);
-                return tagBean;
+                return jsonObject;
             }).collect(Collectors.toList());
-            stileSortList.sort(Comparator.comparingLong(TagBean::getCreateTime).reversed());
-            styles = stileSortList.stream().map(item -> item.getTag()).collect(Collectors.toList());
         }
-        result.put("styles", styles);
+        result.put("styles", this.sortIcons(tags, styles));
 
         return result;
     }
 
+    private List<JSONObject> sortIcons(List<JSONObject> tags, List<JSONObject> styles){
+
+        //统计使用频次
+        List<IconBean> iconBeans = Lists.newArrayList();
+        for (JSONObject style : styles) {
+            int count = 0;
+            for (JSONObject tag : tags) {
+                String iconUrl = tag.getString("icon");
+                if(StrUtil.isEmpty(iconUrl) || !iconUrl.equals(style.getString("url"))){
+                    continue;
+                }
+                ++count;
+            }
+            iconBeans.add(IconBean.builder().style(style).count(count).build());
+        }
+
+        //排序
+        List<JSONObject> iconList = iconBeans.stream().sorted(Comparator.comparing(IconBean::getCount).reversed())
+                .map(item -> {
+                    return item.getStyle();
+                }).collect(Collectors.toList());
+
+        return iconList;
+    }
+
     private void deleteBillboards(String num, List<String> deleteSidList, String bucket) throws Exception {
         if(CollUtil.isEmpty(deleteSidList)){
             return;

+ 31 - 2
src/main/java/com/fdkankan/scene/service/impl/SceneProServiceImpl.java

@@ -979,6 +979,9 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
                 for (Object lod : lods) {
                     JSONObject lodObj = (JSONObject) lod;
                     String objPath = lodObj.getString("objPath");
+                    if(objPath.contains("lod_") && !objPath.contains("lod_0")){
+                        continue;
+                    }
                     if(StrUtil.isEmpty(objPath) || !FileUtil.exist(path + objPath)){
                         throw new BusinessException(ErrorCode.FAILURE_CODE_5070);
                     }
@@ -1287,11 +1290,37 @@ public class SceneProServiceImpl extends ServiceImpl<ISceneProMapper, ScenePro>
 
         //下载mesh到本地
         String meshOssPath = String.format(UploadFilePath.DATA_VIEW_PATH, num) + "mesh/";
-        String meshLocalPath = String.format(ConstantFilePath.SCENE_DATA_PATH_V4, num) + "mesh";
+        String meshLocalPath = String.format(ConstantFilePath.SCENE_DATA_PATH_V4, num) + "mesh/";
         String zipName = num + "_mesh.zip";
         String zipFilePath = String.format(ConstantFilePath.SCENE_DATA_PATH_V4, num) + zipName;
+        List<String> keys = fYunFileService.listRemoteFiles(bucket, meshOssPath);
         //下载
-        fYunFileService.downloadFileByCommand(bucket, meshLocalPath, meshOssPath);
+        keys.stream().filter(v->{
+            if((v.contains("lod_") && !v.contains("lod_0")) || v.endsWith("/")){
+                return false;
+            }
+            return true;
+        }).forEach(v->{
+            fYunFileService.downloadFile(bucket, v, v.replace(meshOssPath, meshLocalPath));
+        });
+        String meshJsonPath = meshLocalPath + "mesh.json";
+        if(FileUtil.exist(meshJsonPath)){
+            JSONObject meshJson = JSON.parseObject(FileUtil.readUtf8String(meshJsonPath));
+            JSONArray floors = meshJson.getJSONArray("floors");
+            for (Object floor : floors) {
+                JSONObject floorObj = (JSONObject)floor;
+                JSONArray lods = floorObj.getJSONArray("lods");
+                for (int i = 0; i < lods.size(); i++) {
+                    JSONObject lodObj = (JSONObject) lods.get(i);
+                    String objPath = lodObj.getString("objPath");
+                    if(!objPath.contains("lod_0")){
+                        lods.remove(i);
+                    }
+                }
+            }
+            FileUtil.writeUtf8String(meshJson.toJSONString(), meshJsonPath);
+        }
+//        fYunFileService.downloadFileByCommand(bucket, meshLocalPath, meshOssPath);
         //打包
         ZipUtil.zip(meshLocalPath,zipFilePath);
         //上传压缩包

+ 1 - 0
src/main/java/com/fdkankan/scene/service/impl/SurveillanceServiceImpl.java

@@ -92,6 +92,7 @@ public class SurveillanceServiceImpl extends ServiceImpl<ISurveillanceMapper, Su
         surveillance.setUrlType(param.getUrlType());
         surveillance.setFileName(param.getFileName());
         surveillance.setPoster(param.getPoster());
+        surveillance.setFileSize(param.getFileSize());
         this.saveOrUpdate(surveillance);
 
         sceneEditInfoExt.setSurveillances(CommonStatus.YES.code().intValue());

+ 2 - 0
src/main/java/com/fdkankan/scene/vo/SurveillanceParamVO.java

@@ -50,4 +50,6 @@ public class SurveillanceParamVO {
 
     private String rtspUrl;
 
+    private Integer fileSize;
+
 }

+ 2 - 0
src/main/java/com/fdkankan/scene/vo/SurveillanceVO.java

@@ -46,4 +46,6 @@ public class SurveillanceVO implements Serializable {
 
     private String panoId;
 
+    private Integer fileSize;
+
 }