Bladeren bron

压缩场景

wuweihao 3 jaren geleden
bovenliggende
commit
f46d412fa5

+ 8 - 0
720yun_local_manage/gis_common/src/main/java/com/gis/common/constant/CmdConstant.java

@@ -18,4 +18,12 @@ public class CmdConstant {
      * convert -resize 800x400 /root/user/owen_test/test.jpg /root/user/owen_test/aa.jpg
      * */
     public final static String CONVERT = "convert -resize @size @input @output";
+
+
+    /**
+     * 压缩目录
+     * @inDir 目录用空格隔开
+     * @output 指定目录
+     */
+    public final static String zip = "zip -r @output @inDir";
 }

+ 12 - 0
720yun_local_manage/gis_common/src/main/java/com/gis/common/util/StrUtils.java

@@ -1,10 +1,13 @@
 package com.gis.common.util;
 
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.StrUtil;
 import com.gis.common.base.exception.BaseRuntimeException;
 import com.gis.common.constant.MsgCode;
 import lombok.extern.slf4j.Slf4j;
 
+import java.time.LocalDateTime;
+
 /**
  * Created by owen on 2022/3/2 0002 9:12
  */
@@ -28,4 +31,13 @@ public class StrUtils {
         }
 
     }
+
+
+    public static String getTime(String prefix){
+        String time = DateUtil.format(LocalDateTime.now(), "yyyyMMdd_HHmmssSSS");
+        if (StrUtil.isNotBlank(prefix)){
+            time = prefix + time;
+        }
+        return time;
+    }
 }

+ 34 - 0
720yun_local_manage/gis_pano/src/main/java/com/gis/cms/controller/OpsController.java

@@ -0,0 +1,34 @@
+package com.gis.cms.controller;
+
+import com.gis.cms.entity.po.WorkEntity;
+import com.gis.cms.service.OpsService;
+import com.gis.common.base.entity.dto.PageDto;
+import com.gis.common.util.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * Created by owen on 2022/3/29 0029 10:19
+ */
+@Api(tags = "ops-项目运维-免token")
+@RestController
+@RequestMapping("/api/ops")
+public class OpsController {
+
+    @Autowired
+    OpsService entityService;
+
+    @ApiOperation(value = "下载-作品目录", notes = "支持批量导出, 多个作品id, 用逗号分隔")
+    @GetMapping("downloadWork/{ids}")
+    public Result<WorkEntity> downloadWork(@PathVariable String ids) {
+        return entityService.downloadWork(ids);
+    }
+
+    @ApiOperation(value = "下载-根据作品id下载全景图目录", notes = "根据作品id, 多个作品id, 用逗号分隔")
+    @GetMapping("downloadPano/{ids}")
+    public Result<WorkEntity> downloadPano(@PathVariable String ids) {
+        return entityService.downloadPano(ids);
+    }
+}

+ 17 - 0
720yun_local_manage/gis_pano/src/main/java/com/gis/cms/service/OpsService.java

@@ -0,0 +1,17 @@
+package com.gis.cms.service;
+
+
+import com.gis.cms.entity.po.WorkEntity;
+import com.gis.common.util.Result;
+
+
+/**
+ * Created by owen on 2020/3/11 0011 16:14
+ */
+public interface OpsService  {
+
+
+    Result<WorkEntity> downloadWork(String ids);
+
+    Result<WorkEntity> downloadPano(String ids);
+}

+ 104 - 0
720yun_local_manage/gis_pano/src/main/java/com/gis/cms/service/impl/OpsServiceImpl.java

@@ -0,0 +1,104 @@
+package com.gis.cms.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.gis.cms.entity.dto.FodderDto;
+import com.gis.cms.entity.po.FodderEntity;
+import com.gis.cms.entity.po.WorkEntity;
+import com.gis.cms.mapper.FodderMapper;
+import com.gis.cms.service.FodderService;
+import com.gis.cms.service.OpsService;
+import com.gis.cms.service.WorkService;
+import com.gis.common.base.entity.dto.PageDto;
+import com.gis.common.base.exception.BaseRuntimeException;
+import com.gis.common.base.service.impl.IBaseService;
+import com.gis.common.constant.CmdConstant;
+import com.gis.common.constant.ConfigConstant;
+import com.gis.common.constant.ErrorEnum;
+import com.gis.common.util.*;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.junit.Test;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Arrays;
+import java.util.List;
+
+
+/**
+ * Created by owen on 2020/3/11 0011 16:16
+ */
+@Slf4j
+@Service
+public class OpsServiceImpl  implements OpsService {
+
+
+    @Autowired
+    ConfigConstant configConstant;
+
+    @Autowired
+    WorkService workService;
+
+
+    @Override
+    public Result<WorkEntity> downloadWork(String ids) {
+        BaseRuntimeException.isBlank(ids, null, "输入参数为空");
+        // 替换空格
+        ids = ids.replaceAll(",", " ");
+        log.info("下载作品目录:{}", ids);
+        String zipName = StrUtils.getTime("work_");
+        zipName = "/download/" + zipName + ".zip";
+
+        String outPath = configConstant.serverBasePath + zipName;
+        log.info("zip保存路径:{}", outPath);
+        String cmd = CmdConstant.zip;
+        cmd = cmd.replaceAll("@outPath", outPath);
+        cmd = cmd.replaceAll("@inDir", ids);
+
+        CmdUtils.callShell(cmd);
+
+        return Result.success(zipName);
+    }
+
+    @Override
+    public Result<WorkEntity> downloadPano(String ids) {
+        BaseRuntimeException.isBlank(ids, null, "输入参数为空");
+        List<WorkEntity> list = workService.listByIds(Arrays.asList(ids));
+        log.info("作品数量: {}", list.size());
+        StringBuffer dir = new StringBuffer();
+        for (WorkEntity entity : list) {
+            String sceneCodes = entity.getSceneCodes();
+            if (StringUtils.isNotBlank(sceneCodes)){
+                dir.append(dir).append(",");
+            }
+        }
+        String dirCode = dir.toString();
+        // 替换空格
+        dirCode = dirCode.replaceAll(",", " ");
+        log.info("下载全景目录:{}", dirCode);
+        String zipName = StrUtils.getTime("pano_");
+        zipName = "/download/" + zipName + ".zip";
+
+        String outPath = configConstant.serverBasePath + zipName;
+        log.info("zip保存路径:{}", outPath);
+        String cmd = CmdConstant.zip;
+        cmd = cmd.replaceAll("@outPath", outPath);
+        cmd = cmd.replaceAll("@inDir", dirCode);
+
+        CmdUtils.callShell(cmd);
+
+
+        return Result.success(zipName);
+    }
+
+    @Test
+    public void test(){
+        String str = "1,2,3,";
+        System.out.println(StringUtils.substringBeforeLast(str, ","));
+
+    }
+}