From ec78dbddbf0159a0d5f285b87977a32ea765fda0 Mon Sep 17 00:00:00 2001
From: ke <893754509@qq.com>
Date: Fri, 26 Jul 2024 15:13:27 +0800
Subject: [PATCH] 全景图和白蚁报警:7-26 15
---
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/skPanorama/controller/SkPanoramaController.java | 152 ++++++++++++++++++++++++++++++++++++++------------
1 files changed, 115 insertions(+), 37 deletions(-)
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/skPanorama/controller/SkPanoramaController.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/skPanorama/controller/SkPanoramaController.java
index 8733293..0555c7b 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/skPanorama/controller/SkPanoramaController.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/skPanorama/controller/SkPanoramaController.java
@@ -22,6 +22,7 @@
import cn.gistack.resource.entity.QieTuEntity;
import cn.gistack.resource.feign.IOssClient;
import cn.gistack.sm.skPanorama.entity.ParamEntity;
+import cn.gistack.sm.skPanorama.entity.SkPicCountEntity;
import cn.gistack.sm.skPanorama.utils.Img4JavaUtil;
import cn.gistack.sm.skPanorama.utils.PanoramaUtilDict;
import cn.gistack.sm.skPanoramaState.entity.SkPanoramaStateEntity;
@@ -45,6 +46,8 @@
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.StringUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.core.metadata.IPage;
import cn.gistack.sm.skPanorama.entity.SkPanoramaEntity;
@@ -85,6 +88,7 @@
/**
* 对象存储构建类
*/
+ @Autowired
private final IOssClient iOssClient;
@@ -114,10 +118,26 @@
*/
@GetMapping("/page")
@ApiOperation(value = "分页", notes = "传入skPanorama")
- public R<IPage<SkPanoramaVO>> page(SkPanoramaVO skPanorama, Query query) {
- IPage<SkPanoramaVO> pages = skPanoramaService.selectSkPanoramaPage(Condition.getPage(query), skPanorama);
+ public R<IPage<SkPicCountEntity>> page(SkPicCountEntity skPanorama, Query query) {
+ Integer current = query.getCurrent();
+ Integer size = query.getSize();
+ IPage<SkPicCountEntity> page = Condition.getPage(query);
+
+// System.err.println("current:"+current);
+// System.err.println("size:"+size);
+ Integer startIndex = (current -1) * size;
+ Integer endIndex = current * size;
+
+ IPage<SkPicCountEntity> pages = skPanoramaService.selectPageR( page,startIndex, endIndex, skPanorama);
return R.data(pages);
}
+
+// @GetMapping("/page")
+// @ApiOperation(value = "分页", notes = "传入skPanorama")
+// public R<IPage<SkPanoramaVO>> page2(SkPanoramaVO skPanorama, Query query) {
+// IPage<SkPanoramaVO> pages = skPanoramaService.selectSkPanoramaPage(Condition.getPage(query), skPanorama);
+// return R.data(pages);
+// }
/**
* 水库全景图 新增
@@ -141,23 +161,7 @@
List<SkPanoramaStateEntity> updateList = new ArrayList<>();
List<SkPanoramaStateEntity> addList = new ArrayList<>();
if (stateLsit != null && stateLsit.size()>0) {
-// for (SkPanoramaStateEntity item :stateLsit) {
-// Long id = item.getId();
-// if (id != null) {
-// // 更新
-// updateList.add(item);
-// } else {
-// // 新增
-// addList.add(item);
-// }
-// }
-// boolean b = true;
-// if (addList != null) {
-// b = skPanoramaStateService.saveBatch(addList);
-// }
-// if (updateList != null) {
-// b = skPanoramaStateService.saveOrUpdateBatch(updateList);
-// }
+
boolean b =skPanoramaStateService.saveOrUpdateBatch(stateLsit);
return R.status(b);
@@ -268,13 +272,43 @@
}
*/
+ /**
+ * 批量切图
+ * @param ids
+ * @return
+ * @throws IOException
+ * @throws InterruptedException
+ * @throws IM4JavaException
+ * @throws IllegalAccessException
+ */
+ @PostMapping("/cutPicBatch")
+ public R cutPicBatch(@RequestParam String ids) throws IOException, InterruptedException, IM4JavaException, IllegalAccessException {
+ List<Long> idlist = Func.toLongList(ids);
+ if (idlist!= null && idlist.size()>0) {
+ for (Long id : idlist ) {
+ SkPanoramaEntity entity = skPanoramaService.getById(id);
+ Integer status = entity.getStatus();
+ String resGuname = entity.getResGuname();
+ String name = entity.getName();
+ if (PanoramaUtilDict.panorama_status_3 == status) continue;
+ R r = cutPicture2(entity);
+ boolean success = r.isSuccess();
+ if (!success) {
+ return R.fail(resGuname+"-"+name+" 切图失败!");
+ }
+
+ }
+ }
+ return R.status(true);
+ }
+
private static final String linShiBaseUrl = "/data/panorama/qietu/";
@GetMapping("/cutPicture2")
public R cutPicture2(SkPanoramaEntity skPanorama)
throws IOException, InterruptedException, IM4JavaException, IllegalAccessException {
- SkPanoramaEntity entity = skPanoramaService.getOne(Condition.getQueryWrapper(skPanorama));
+ SkPanoramaEntity entity = skPanoramaService.getById(skPanorama.getId());
String picUrl = entity.getPicUrl();
String picName = entity.getPicName();
String resGuid = entity.getResGuid();
@@ -283,7 +317,7 @@
String dirPath = linShiBaseUrl + resGuid + "/"; //临时文件夹路径
String lingshiPic = linShiBaseUrl + resGuid + "/" + picName; //临时文件
- File lingshiqjfile = getquanjingFile(dirPath,lingshiPic,entity);
+ File lingshiqjfile = getquanjingFile(dirPath,lingshiPic,entity.getId());
/**
* 这里开始切图
@@ -329,8 +363,6 @@
/************************************切图结束********************************************/
// 上传切片全景图
- System.err.println("切图的路径数量"+qietuHashMap.size());
- System.err.println("水库编码"+resGuid);
QieTuEntity qieTuEntity = new QieTuEntity();
qieTuEntity.setQietuHashMap(qietuHashMap);
@@ -350,17 +382,19 @@
entity.setUrlhead(urlHead);
entity.setQierow(row);
entity.setQiecol(col);
- entity.setPicwidth(width);
- entity.setPicheight(height);
+// entity.setPicwidth(width);
+// entity.setPicheight(height);
entity.setStatus(PanoramaUtilDict.panorama_status_3);
- skPanoramaService.updateById(entity);
+ boolean b = skPanoramaService.updateById(entity);
- return R.status(true);
+ return R.status(b);
}
- private File getquanjingFile (String dirPath ,String linshiUrl , SkPanoramaEntity skPanorama) throws IOException {
- SkPanoramaEntity entity = skPanoramaService.getOne(Condition.getQueryWrapper(skPanorama));
+ private File getquanjingFile (String dirPath ,String linshiUrl , Long id) throws IOException {
+
+// SkPanoramaEntity entity = skPanoramaService.getOne(Condition.getQueryWrapper(skPanorama));
+ SkPanoramaEntity entity = skPanoramaService.getById(id);
String picUrl = entity.getPicUrl();
String picName = entity.getPicName();
String resGuid = entity.getResGuid();
@@ -368,7 +402,7 @@
File dir = new File(dirPath);
if (dir.isDirectory()) {
// 清除该目录下的文件及子目录文件而不删除该目录文件夹。该目录不存在会报错
- FileUtils.cleanDirectory(dir);
+// FileUtils.cleanDirectory(dir);
} else {
dir.mkdirs();
}
@@ -397,18 +431,27 @@
private static final String linShiformateBaseUrl = "/data/panorama/formate/";
@PostMapping("/formatePic")
public R formatePic(@RequestParam String ids) throws IOException, InterruptedException, IM4JavaException {
+ System.err.println(ids);
+
List<Long> idlist = Func.toLongList(ids);
+
ArrayList<SkPanoramaEntity> panoramalist = new ArrayList<SkPanoramaEntity>();
+ // 已上传的全景图已符合比例,仅用改变数据状态
+ ArrayList<SkPanoramaEntity> justUpdateStatusList = new ArrayList<SkPanoramaEntity>();
+
ArrayList<FormateTuEntity> list = new ArrayList<FormateTuEntity>();
+
+
if (idlist!= null && idlist.size()>0) {
for (Long id : idlist ) {
FormateTuEntity formateTuEntity = new FormateTuEntity();
- SkPanoramaEntity skPanorama = new SkPanoramaEntity();
- skPanorama.setId(id);
- SkPanoramaEntity entity = skPanoramaService.getOne(Condition.getQueryWrapper(skPanorama));
+
+ SkPanoramaEntity entity = skPanoramaService.getById(id);
+ Integer status = entity.getStatus();
+ if (PanoramaUtilDict.panorama_status_2 == status) continue;
String picUrl = entity.getPicUrl();
String picName = entity.getPicName();
String resGuid = entity.getResGuid();
@@ -420,13 +463,14 @@
String lingshigeshibilipath = linShiformateBaseUrl + resGuid + "/geshibili/" ;
String lingshigeshibiliPic = lingshigeshibilipath + picName; //格式化后的临时文件
- File lingshiqjfile = getquanjingFile(dirPath,lingshiPic,entity);
+ File lingshiqjfile = getquanjingFile(dirPath,lingshiPic,id);
// 创建文件夹
File lingshigeshibilidir = new File(lingshigeshibilipath);
if (lingshigeshibilidir.isDirectory()) {
// 清除该目录下的文件及子目录文件而不删除该目录文件夹。该目录不存在会报错
- FileUtils.cleanDirectory(lingshigeshibilidir);
+// FileUtils.cleanDirectory(lingshigeshibilidir);
+ // 批量操作不能清空文件夹下的全部文件
} else {
lingshigeshibilidir.mkdirs();
}
@@ -436,9 +480,27 @@
HashMap<String, Integer> imgInfoRT = Img4JavaUtil.getImgInfoRT(lingshiqjfile);
Integer width = imgInfoRT.get("width");
Integer height = imgInfoRT.get("height");
+ System.err.println(id);
+ System.err.println("图片分辨率:"+ width +" * " + height);
if (width == height * 2) {
+ System.err.println("符合标准");
// 已经符合格式化标准
+ SkPanoramaEntity upEntity = new SkPanoramaEntity();
+ upEntity.setId(id);
+ upEntity.setPicheight(height);
+ upEntity.setPicwidth(width);
+ upEntity.setStatus(PanoramaUtilDict.panorama_status_2);
+ justUpdateStatusList.add(upEntity);
+ // 完成格式化后删除原始临时图片
+ Path qietuPath = Paths.get(lingshiPic);
+ File yuanspic = qietuPath.toFile();
+ if (yuanspic.exists()) {
+ // 删除指定文件,不存在报异常
+ FileUtils.forceDelete(yuanspic);
+ }
+// boolean b = skPanoramaService.updateById(upEntity);
+// return R.status( b);
} else {
Integer newWidth = height * 2;
// 图片格式化
@@ -491,9 +553,25 @@
}
}
- boolean b = skPanoramaService.updateBatchById(panoramalist);
- return R.status(true);
+ System.err.println("panoramalist:"+panoramalist.size());
+ boolean b = false;
+ if (panoramalist != null && panoramalist.size()>0) {
+ b = skPanoramaService.updateBatchById(panoramalist);
+ } else {
+ b = true;
+ }
+ System.err.println("justUpdateStatusList:"+justUpdateStatusList.size());
+ boolean formatB = false;
+ // 已上传的全景图已符合比例,仅用改变数据状态
+ if (justUpdateStatusList != null && justUpdateStatusList.size()>0) {
+ formatB = skPanoramaService.updateBatchById(justUpdateStatusList);
+ } else {
+ formatB = true;
+ }
+
+
+ return R.status((formatB && b));
}
--
Gitblit v1.9.3