|
@@ -2,6 +2,7 @@ package com.fdkankan.scene.service.impl;
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
+import cn.hutool.core.io.FileUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
@@ -9,13 +10,11 @@ import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
-import com.fdkankan.common.constant.CommonStatus;
|
|
|
-import com.fdkankan.common.constant.ErrorCode;
|
|
|
-import com.fdkankan.common.constant.SceneInfoReqType;
|
|
|
-import com.fdkankan.common.constant.UploadFilePath;
|
|
|
+import com.fdkankan.common.constant.*;
|
|
|
import com.fdkankan.common.exception.BusinessException;
|
|
|
import com.fdkankan.redis.constant.RedisKey;
|
|
|
import com.fdkankan.redis.util.RedisClient;
|
|
|
+import com.fdkankan.scene.bean.ResultData;
|
|
|
import com.fdkankan.scene.bean.TagBean;
|
|
|
import com.fdkankan.scene.entity.*;
|
|
|
import com.fdkankan.scene.mapper.SceneEditInfoMapper;
|
|
@@ -26,6 +25,8 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
+import java.io.IOException;
|
|
|
+import java.nio.charset.StandardCharsets;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
@@ -52,8 +53,8 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<SceneEditInfoMapper, S
|
|
|
private SceneEditControlsService sceneEditControlsService;
|
|
|
// @Autowired
|
|
|
// private ISceneProService sceneProService;
|
|
|
-// @Resource
|
|
|
-// private FYunFileServiceInterface fYunFileService;
|
|
|
+ @Resource
|
|
|
+ private FYunFileService fYunFileService;
|
|
|
@Resource
|
|
|
private RedisClient redisClient;
|
|
|
// @Autowired
|
|
@@ -88,7 +89,6 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<SceneEditInfoMapper, S
|
|
|
// private ISceneDrawService sceneDrawService;
|
|
|
// @Autowired
|
|
|
// private ISceneDynamicPanelService sceneDynamicPanelService;
|
|
|
-
|
|
|
@Transactional
|
|
|
@Override
|
|
|
public SceneEditInfoVO saveScene(SceneEditInfoParamVO param) {
|
|
@@ -311,20 +311,21 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<SceneEditInfoMapper, S
|
|
|
// List<SurveillanceVO> surveillanceList = surveillanceService.listSurveillance(num);
|
|
|
// fYunFileService.uploadFile(bucket, JSON.toJSONString(surveillanceList).getBytes(StandardCharsets.UTF_8), surveillanceJsonPath);
|
|
|
// }
|
|
|
-//
|
|
|
-// private void publicFilterData(String num, int filters, String bucket) throws IOException {
|
|
|
-//
|
|
|
-// String userEditPath = String.format(UploadFilePath.USER_EDIT_PATH, num);
|
|
|
-// if(filters == CommonStatus.NO.code()){
|
|
|
-// fYunFileService.deleteFile(bucket, userEditPath + "filter.json");
|
|
|
-// return;
|
|
|
-// }
|
|
|
-// String key = String.format(RedisKey.SCENE_filter_DATA, num);
|
|
|
-// List<String> list = redisUtil.lGet(key, 0, -1);
|
|
|
-// JSONArray jsonArray = new JSONArray();
|
|
|
-// list.stream().forEach(str->jsonArray.add(JSON.parseObject(str)));
|
|
|
-// fYunFileService.uploadFile(bucket, JSON.toJSONBytes(jsonArray), userEditPath + "filter.json");
|
|
|
-// }
|
|
|
+
|
|
|
+ private void publicFilterData(String num, int filters) throws IOException {
|
|
|
+
|
|
|
+ String userEditPath = String.format(UploadFilePath.USER_VIEW_PATH, num);
|
|
|
+ String fileKey = userEditPath + "filter.json";
|
|
|
+ if(filters == CommonStatus.NO.code()){
|
|
|
+ sceneFileMappingService.delByNumAndKey(num, fileKey);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ String key = String.format(RedisKey.SCENE_filter_DATA, num);
|
|
|
+ List<String> list = redisClient.lGet(key, 0, -1);
|
|
|
+ JSONArray jsonArray = new JSONArray();
|
|
|
+ list.stream().forEach(str->jsonArray.add(JSON.parseObject(str)));
|
|
|
+ fYunFileService.uploadFile(num, JSON.toJSONBytes(jsonArray), userEditPath + "filter.json");
|
|
|
+ }
|
|
|
//
|
|
|
// public void publicLinkSceneData(String num, String bucket) throws IOException {
|
|
|
//
|
|
@@ -467,6 +468,9 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<SceneEditInfoMapper, S
|
|
|
}
|
|
|
sceneInfoVO.setMapping(keyMap);
|
|
|
|
|
|
+ //马赛克列表
|
|
|
+ sceneInfoVO.setMosaicList(this.getMosaicList(num));
|
|
|
+
|
|
|
return sceneInfoVO;
|
|
|
}
|
|
|
|
|
@@ -585,79 +589,70 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<SceneEditInfoMapper, S
|
|
|
//
|
|
|
// return sceneInfoVO;
|
|
|
// }
|
|
|
-//
|
|
|
-// @Override
|
|
|
-// public ResultData saveCad(BaseDataParamVO param) throws Exception {
|
|
|
-//
|
|
|
-// String num = param.getNum();
|
|
|
-// ScenePlus scenePlus = scenePlusService.getScenePlusByNum(num);
|
|
|
-// if(Objects.isNull(scenePlus))
|
|
|
-// throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
|
|
|
-// ScenePlusExt scenePlusExt = scenePlusExtService.getScenePlusExtByPlusId(scenePlus.getId());
|
|
|
-//
|
|
|
-// String bucket = scenePlusExt.getYunFileBucket();
|
|
|
-// String editUserPath = String.format(UploadFilePath.USER_EDIT_PATH, num);
|
|
|
-// String localDataPath = String.format(ConstantFilePath.SCENE_USER_PATH_V4, num);
|
|
|
-//
|
|
|
-// JSONObject fileInfoJson = JSON.parseObject(param.getData());
|
|
|
-// Float angel = null;
|
|
|
-// Float compass = null;
|
|
|
-// String floorJsonData = fileInfoJson.getString("floorJsonData");
|
|
|
-// if(StrUtil.isNotBlank(floorJsonData)){
|
|
|
-// JSONObject jsonObject = JSON.parseObject(floorJsonData);
|
|
|
-// angel = jsonObject.getFloat("angle");
|
|
|
-// compass = jsonObject.getFloat("compass");
|
|
|
-// }
|
|
|
-//
|
|
|
-// //处理户型图数据
|
|
|
-// //上传floorplan_user.json文件
|
|
|
-// FileUtils.writeFile(localDataPath + "floorplan_user.json", floorJsonData);
|
|
|
-// fYunFileService.uploadFile(bucket, localDataPath + "floorplan_user.json", editUserPath + "floorplan.json");
|
|
|
-//
|
|
|
-// //写入数据库
|
|
|
-// Byte floorPlanUser = null;
|
|
|
-// if(StrUtil.isNotEmpty(floorJsonData)){
|
|
|
-// JSONObject houseTypeJson = CreateHouseJsonUtil
|
|
|
-// .createHouseTypeJsonByUser(localDataPath + "floorplan_user.json");
|
|
|
-// if(Objects.nonNull(houseTypeJson)) {
|
|
|
-// fYunFileService.uploadFile(bucket, houseTypeJson.toJSONString().getBytes(), editUserPath + "houseType.json");
|
|
|
-// }
|
|
|
-//
|
|
|
-// floorPlanUser = CommonStatus.YES.code();
|
|
|
-// }
|
|
|
-// SceneEditInfo sceneEditInfoDb = this.getByScenePlusId(scenePlus.getId());
|
|
|
-// if(Objects.nonNull(sceneEditInfoDb)){
|
|
|
-// LambdaUpdateWrapper<SceneEditInfo> updateWrapper = new LambdaUpdateWrapper<SceneEditInfo>()
|
|
|
-// .setSql("version=version+" + 1)
|
|
|
-// .eq(SceneEditInfo::getId, sceneEditInfoDb.getId());
|
|
|
-// if(floorPlanUser != null){
|
|
|
-// updateWrapper.set(SceneEditInfo::getFloorPlanUser, floorPlanUser);
|
|
|
-// }
|
|
|
-// this.update(updateWrapper);
|
|
|
-// }else{
|
|
|
-// sceneEditInfoDb = new SceneEditInfo();
|
|
|
-// sceneEditInfoDb.setScenePlusId(scenePlus.getId());
|
|
|
-// sceneEditInfoDb.setFloorPlanUser(floorPlanUser);
|
|
|
-// this.save(sceneEditInfoDb);
|
|
|
-// }
|
|
|
-//
|
|
|
-// SceneEditInfoExt sceneEditInfoExt = sceneEditInfoExtService.getByEditInfoId(sceneEditInfoDb.getId());
|
|
|
-// if(Objects.isNull(sceneEditInfoExt)){
|
|
|
-// sceneEditInfoExt = new SceneEditInfoExt();
|
|
|
-// sceneEditInfoExt.setEditInfoId(sceneEditInfoDb.getId());
|
|
|
-// }
|
|
|
-// if(Objects.nonNull(angel)){
|
|
|
-// sceneEditInfoExt.setFloorPlanAngle(angel);
|
|
|
-// }
|
|
|
-// if(Objects.nonNull(compass)){
|
|
|
-// sceneEditInfoExt.setFloorPlanCompass(compass);
|
|
|
-// }
|
|
|
-// sceneEditInfoExtService.saveOrUpdate(sceneEditInfoExt);
|
|
|
-//
|
|
|
-//
|
|
|
-// return ResultData.ok();
|
|
|
-//
|
|
|
-// }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ResultData saveCad(BaseDataParamVO param) throws Exception {
|
|
|
+
|
|
|
+ String num = param.getNum();
|
|
|
+ Scene scenePlus = sceneService.getByNum(num);
|
|
|
+ if(Objects.isNull(scenePlus))
|
|
|
+ throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
|
|
|
+
|
|
|
+ String editUserPath = String.format(UploadFilePath.USER_VIEW_PATH, num);
|
|
|
+ String localDataPath = String.format(ConstantFilePath.SCENE_USER_PATH_V4, num);
|
|
|
+
|
|
|
+ JSONObject fileInfoJson = JSON.parseObject(param.getData());
|
|
|
+ Float angel = null;
|
|
|
+ Float compass = null;
|
|
|
+ String floorJsonData = fileInfoJson.getString("floorJsonData");
|
|
|
+ if(StrUtil.isNotBlank(floorJsonData)){
|
|
|
+ JSONObject jsonObject = JSON.parseObject(floorJsonData);
|
|
|
+ angel = jsonObject.getFloat("angle");
|
|
|
+ compass = jsonObject.getFloat("compass");
|
|
|
+ }
|
|
|
+
|
|
|
+ //处理户型图数据
|
|
|
+ //上传floorplan_user.json文件
|
|
|
+ fYunFileService.uploadFile(num, floorJsonData.getBytes(StandardCharsets.UTF_8), editUserPath + "floorplan.json");
|
|
|
+
|
|
|
+ //写入数据库
|
|
|
+ Integer floorPlanUser = null;
|
|
|
+ if(StrUtil.isNotEmpty(floorJsonData)){
|
|
|
+ floorPlanUser = CommonStatus.YES.code();
|
|
|
+ }
|
|
|
+ SceneEditInfo sceneEditInfoDb = this.getByScenePlusId(scenePlus.getId());
|
|
|
+ if(Objects.nonNull(sceneEditInfoDb)){
|
|
|
+ LambdaUpdateWrapper<SceneEditInfo> updateWrapper = new LambdaUpdateWrapper<SceneEditInfo>()
|
|
|
+ .setSql("version=version+" + 1)
|
|
|
+ .eq(SceneEditInfo::getId, sceneEditInfoDb.getId());
|
|
|
+ if(floorPlanUser != null){
|
|
|
+ updateWrapper.set(SceneEditInfo::getFloorPlanUser, floorPlanUser);
|
|
|
+ }
|
|
|
+ this.update(updateWrapper);
|
|
|
+ }else{
|
|
|
+ sceneEditInfoDb = new SceneEditInfo();
|
|
|
+ sceneEditInfoDb.setScenePlusId(scenePlus.getId());
|
|
|
+ sceneEditInfoDb.setFloorPlanUser(floorPlanUser);
|
|
|
+ this.save(sceneEditInfoDb);
|
|
|
+ }
|
|
|
+
|
|
|
+ SceneEditInfoExt sceneEditInfoExt = sceneEditInfoExtService.getByEditInfoId(sceneEditInfoDb.getId());
|
|
|
+ if(Objects.isNull(sceneEditInfoExt)){
|
|
|
+ sceneEditInfoExt = new SceneEditInfoExt();
|
|
|
+ sceneEditInfoExt.setEditInfoId(sceneEditInfoDb.getId());
|
|
|
+ }
|
|
|
+ if(Objects.nonNull(angel)){
|
|
|
+ sceneEditInfoExt.setFloorPlanAngle(angel);
|
|
|
+ }
|
|
|
+ if(Objects.nonNull(compass)){
|
|
|
+ sceneEditInfoExt.setFloorPlanCompass(compass);
|
|
|
+ }
|
|
|
+ sceneEditInfoExtService.saveOrUpdate(sceneEditInfoExt);
|
|
|
+
|
|
|
+
|
|
|
+ return ResultData.ok();
|
|
|
+
|
|
|
+ }
|
|
|
//
|
|
|
// @Override
|
|
|
// public ResultData uploadDxf(MultipartFile file, String num) throws Exception {
|
|
@@ -724,67 +719,43 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<SceneEditInfoMapper, S
|
|
|
//
|
|
|
// return ResultData.ok(url);
|
|
|
// }
|
|
|
-//
|
|
|
-// @Override
|
|
|
-// public ResultData resetCad(String num) throws IOException {
|
|
|
-//
|
|
|
-// ScenePlus scenePlus = scenePlusService.getScenePlusByNum(num);
|
|
|
-// if(Objects.isNull(scenePlus))
|
|
|
-// throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
|
|
|
-// ScenePlusExt scenePlusExt = scenePlusExtService
|
|
|
-// .getScenePlusExtByPlusId(scenePlus.getId());
|
|
|
-// String bucket = scenePlusExt.getYunFileBucket();
|
|
|
-// String path = scenePlusExt.getDataSource();
|
|
|
-//
|
|
|
-// //户型图上传 恢复默认并发布同时点击刷新查看页面,平面图会变形,所以这里先注释掉 bug-36281 2023-05-04
|
|
|
-//// String ossResultPath = String.format(UploadFilePath.scene_result_data_path, num);
|
|
|
-//// String floorplanCadPath = ossResultPath + "floorplan_cad/";
|
|
|
-//// fYunFileService.copyFileBetweenBucket(bucket, floorplanCadPath, bucket, String.format(UploadFilePath.USER_EDIT_PATH, num));
|
|
|
-//
|
|
|
-//// String userEditPath = UploadFilePath.USER_EDIT_PATH + "floor-cad-%s.%s";
|
|
|
-//// String floorCadPath = path + "/results/floorplan_cad";
|
|
|
-//// List<String> floorCadList = FileUtils.getFileList(floorCadPath);
|
|
|
-//// if(CollUtil.isNotEmpty(floorCadList)){
|
|
|
-//// floorCadList.stream().forEach(str->{
|
|
|
-//// String substring = str.substring(str.lastIndexOf(File.separator) + 1);
|
|
|
-//// String[] arr = substring.split("floor");
|
|
|
-//// String[] arr2 = arr[1].split("\\.");
|
|
|
-//// fYunFileService.uploadFile(bucket, str, String.format(userEditPath, num, arr2[0], arr2[1]));
|
|
|
-//// });
|
|
|
-//// }
|
|
|
-//
|
|
|
-// //根据floorplan_cad.json生成houseType.json
|
|
|
-// this.uploadHouseTypeJson(num, bucket);
|
|
|
-//
|
|
|
-// SceneEditInfo sceneEditInfoDb = this.getByScenePlusId(scenePlus.getId());
|
|
|
-// SceneEditInfoExt sceneEditInfoExt = null;
|
|
|
-// if(Objects.nonNull(sceneEditInfoDb)){
|
|
|
-// LambdaUpdateWrapper<SceneEditInfo> updateWrapper = new LambdaUpdateWrapper<SceneEditInfo>()
|
|
|
-// .setSql("version=version+" + 1)
|
|
|
-// .set(SceneEditInfo::getFloorPlanUser, CommonStatus.NO.code())
|
|
|
-// .eq(SceneEditInfo::getId, sceneEditInfoDb.getId());
|
|
|
-// this.update(updateWrapper);
|
|
|
-//
|
|
|
-// sceneEditInfoExt = sceneEditInfoExtService.getByEditInfoId(sceneEditInfoDb.getId());
|
|
|
-// }else{
|
|
|
-// sceneEditInfoDb = new SceneEditInfo();
|
|
|
-// sceneEditInfoDb.setScenePlusId(scenePlus.getId());
|
|
|
-// sceneEditInfoDb.setFloorPlanUser(CommonStatus.NO.code());
|
|
|
-// this.save(sceneEditInfoDb);
|
|
|
-// }
|
|
|
-// if(Objects.isNull(sceneEditInfoExt)){
|
|
|
-// sceneEditInfoExt = new SceneEditInfoExt();
|
|
|
-// sceneEditInfoDb.setScenePlusId(scenePlus.getId());
|
|
|
-// sceneEditInfoExt.setEditInfoId(sceneEditInfoDb.getId());
|
|
|
-// }
|
|
|
-// sceneEditInfoExt.setFloorPlanAngle(0f);
|
|
|
-// sceneEditInfoExt.setFloorPlanCompass(0f);
|
|
|
-// sceneEditInfoExtService.saveOrUpdate(sceneEditInfoExt);
|
|
|
-//
|
|
|
-// return ResultData.ok();
|
|
|
-//
|
|
|
-// }
|
|
|
-//
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ResultData resetCad(String num) throws IOException {
|
|
|
+
|
|
|
+ Scene scenePlus = sceneService.getByNum(num);
|
|
|
+ if(Objects.isNull(scenePlus))
|
|
|
+ throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
|
|
|
+
|
|
|
+ SceneEditInfo sceneEditInfoDb = this.getByScenePlusId(scenePlus.getId());
|
|
|
+ SceneEditInfoExt sceneEditInfoExt = null;
|
|
|
+ if(Objects.nonNull(sceneEditInfoDb)){
|
|
|
+ LambdaUpdateWrapper<SceneEditInfo> updateWrapper = new LambdaUpdateWrapper<SceneEditInfo>()
|
|
|
+ .setSql("version=version+" + 1)
|
|
|
+ .set(SceneEditInfo::getFloorPlanUser, CommonStatus.NO.code())
|
|
|
+ .eq(SceneEditInfo::getId, sceneEditInfoDb.getId());
|
|
|
+ this.update(updateWrapper);
|
|
|
+
|
|
|
+ sceneEditInfoExt = sceneEditInfoExtService.getByEditInfoId(sceneEditInfoDb.getId());
|
|
|
+ }else{
|
|
|
+ sceneEditInfoDb = new SceneEditInfo();
|
|
|
+ sceneEditInfoDb.setScenePlusId(scenePlus.getId());
|
|
|
+ sceneEditInfoDb.setFloorPlanUser(CommonStatus.NO.code());
|
|
|
+ this.save(sceneEditInfoDb);
|
|
|
+ }
|
|
|
+ if(Objects.isNull(sceneEditInfoExt)){
|
|
|
+ sceneEditInfoExt = new SceneEditInfoExt();
|
|
|
+ sceneEditInfoDb.setScenePlusId(scenePlus.getId());
|
|
|
+ sceneEditInfoExt.setEditInfoId(sceneEditInfoDb.getId());
|
|
|
+ }
|
|
|
+ sceneEditInfoExt.setFloorPlanAngle(0f);
|
|
|
+ sceneEditInfoExt.setFloorPlanCompass(0f);
|
|
|
+ sceneEditInfoExtService.saveOrUpdate(sceneEditInfoExt);
|
|
|
+
|
|
|
+ return ResultData.ok();
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
// private void uploadHouseTypeJson(String num, String bucket) throws IOException {
|
|
|
//
|
|
|
// JSONObject result = new JSONObject();
|
|
@@ -894,47 +865,45 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<SceneEditInfoMapper, S
|
|
|
// return result;
|
|
|
//
|
|
|
// }
|
|
|
-//
|
|
|
-// @Override
|
|
|
-// public ResultData renameCad(RenameCadParamVO param) throws IOException {
|
|
|
-//
|
|
|
-// ScenePlus scenePlus = scenePlusService.getScenePlusByNum(param.getNum());
|
|
|
-// if(Objects.isNull(scenePlus)){
|
|
|
-// throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
|
|
|
-// }
|
|
|
-// ScenePlusExt scenePlusExt = scenePlusExtService.getScenePlusExtByPlusId(scenePlus.getId());
|
|
|
-// String bucket = scenePlusExt.getYunFileBucket();
|
|
|
-//
|
|
|
-// String key = String.format(UploadFilePath.USER_EDIT_PATH, param.getNum()) + "floorplan.json";
|
|
|
-// String floorplanJson = fYunFileService.getFileContent(bucket, key);
|
|
|
-// if(StrUtil.isEmpty(floorplanJson)){
|
|
|
-// return ResultData.ok();
|
|
|
-// }
|
|
|
-// Map<Integer, String> renameMap = new HashMap<>();
|
|
|
-// param.getFloors().stream().forEach(floor->{
|
|
|
-// renameMap.put(floor.getSubgroup(), floor.getName());
|
|
|
-// });
|
|
|
-// JSONObject jsonObject = JSON.parseObject(floorplanJson);
|
|
|
-// if(Objects.isNull(jsonObject)){
|
|
|
-// return ResultData.ok();
|
|
|
-// }
|
|
|
-// JSONArray floorArr = jsonObject.getJSONArray("floors");
|
|
|
-// if(CollUtil.isEmpty(floorArr)){
|
|
|
-// return ResultData.ok();
|
|
|
-// }
|
|
|
-// for (Object o : floorArr) {
|
|
|
-// JSONObject item = (JSONObject)o;
|
|
|
-// int subgroup = item.getIntValue("subgroup");
|
|
|
-// String name = renameMap.get(subgroup);
|
|
|
-// if(StrUtil.isEmpty(name)){
|
|
|
-// continue;
|
|
|
-// }
|
|
|
-// item.put("name", name);
|
|
|
-// }
|
|
|
-// fYunFileService.uploadFile(bucket, jsonObject.toJSONString().getBytes(), key);
|
|
|
-// return ResultData.ok();
|
|
|
-// }
|
|
|
-//
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ResultData renameCad(RenameCadParamVO param) throws IOException {
|
|
|
+
|
|
|
+ Scene scenePlus = sceneService.getByNum(param.getNum());
|
|
|
+ if(Objects.isNull(scenePlus)){
|
|
|
+ throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
|
|
|
+ }
|
|
|
+
|
|
|
+ String key = String.format(UploadFilePath.USER_VIEW_PATH, param.getNum()) + "floorplan.json";
|
|
|
+ String floorplanJson = fYunFileService.getFileContent(key);
|
|
|
+ if(StrUtil.isEmpty(floorplanJson)){
|
|
|
+ return ResultData.ok();
|
|
|
+ }
|
|
|
+ Map<Integer, String> renameMap = new HashMap<>();
|
|
|
+ param.getFloors().stream().forEach(floor->{
|
|
|
+ renameMap.put(floor.getSubgroup(), floor.getName());
|
|
|
+ });
|
|
|
+ JSONObject jsonObject = JSON.parseObject(floorplanJson);
|
|
|
+ if(Objects.isNull(jsonObject)){
|
|
|
+ return ResultData.ok();
|
|
|
+ }
|
|
|
+ JSONArray floorArr = jsonObject.getJSONArray("floors");
|
|
|
+ if(CollUtil.isEmpty(floorArr)){
|
|
|
+ return ResultData.ok();
|
|
|
+ }
|
|
|
+ for (Object o : floorArr) {
|
|
|
+ JSONObject item = (JSONObject)o;
|
|
|
+ int subgroup = item.getIntValue("subgroup");
|
|
|
+ String name = renameMap.get(subgroup);
|
|
|
+ if(StrUtil.isEmpty(name)){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ item.put("name", name);
|
|
|
+ }
|
|
|
+ fYunFileService.uploadFile(param.getNum(), jsonObject.toJSONString().getBytes(), key);
|
|
|
+ return ResultData.ok();
|
|
|
+ }
|
|
|
+
|
|
|
// private JSONObject updateFloorName(String sourceFloors, String targeFloors){
|
|
|
// JSONArray sourceFloorsJson = JSON.parseArray(sourceFloors);
|
|
|
// JSONObject targeFloorsJson = JSONObject.parseObject(targeFloors);
|
|
@@ -1831,58 +1800,58 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<SceneEditInfoMapper, S
|
|
|
//
|
|
|
// return ResultData.ok();
|
|
|
// }
|
|
|
-//
|
|
|
-// @Override
|
|
|
-// public ResultData addMosaics(BaseDataParamVO param) throws Exception {
|
|
|
-//
|
|
|
-// ScenePlus scenePlus = scenePlusService.getScenePlusByNum(param.getNum());
|
|
|
-// if(Objects.isNull(scenePlus)){
|
|
|
-// throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
|
|
|
-// }
|
|
|
-// SceneEditInfo sceneEditInfo = this.getByScenePlusId(scenePlus.getId());
|
|
|
-//
|
|
|
-// //如果redis数据丢失,从本地文件中同步马赛克数据到redis
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ResultData addMosaics(BaseDataParamVO param) throws Exception {
|
|
|
+
|
|
|
+ Scene scenePlus = sceneService.getByNum(param.getNum());
|
|
|
+ if(Objects.isNull(scenePlus)){
|
|
|
+ throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
|
|
|
+ }
|
|
|
+ SceneEditInfo sceneEditInfo = this.getByScenePlusId(scenePlus.getId());
|
|
|
+
|
|
|
+ //如果redis数据丢失,从本地文件中同步马赛克数据到redis
|
|
|
// this.syncMosaicFromFileToRedis(param.getNum());
|
|
|
-//
|
|
|
-// Map<String, String> map = new HashMap<>();
|
|
|
-// JSONArray jsonArray = JSON.parseArray(param.getData());
|
|
|
-// for (Object o : jsonArray) {
|
|
|
-// JSONObject mosaic = (JSONObject) o;
|
|
|
-// String panoId = mosaic.getString("panoId");
|
|
|
-// if(StrUtil.isEmpty(panoId)){
|
|
|
-// throw new BusinessException(ErrorCode.FAILURE_CODE_5012);
|
|
|
-// }
|
|
|
-// map.put(panoId, JSON.toJSONString(mosaic));
|
|
|
-// }
|
|
|
-// String key = String.format(RedisKey.SCENE_MOSAIC_DATA, param.getNum());
|
|
|
-// redisUtil.hmset(key, map);
|
|
|
-//
|
|
|
-// //写入本地文件,作为备份
|
|
|
+
|
|
|
+ Map<String, String> map = new HashMap<>();
|
|
|
+ JSONArray jsonArray = JSON.parseArray(param.getData());
|
|
|
+ for (Object o : jsonArray) {
|
|
|
+ JSONObject mosaic = (JSONObject) o;
|
|
|
+ String panoId = mosaic.getString("panoId");
|
|
|
+ if(StrUtil.isEmpty(panoId)){
|
|
|
+ throw new BusinessException(ErrorCode.FAILURE_CODE_5012);
|
|
|
+ }
|
|
|
+ map.put(panoId, JSON.toJSONString(mosaic));
|
|
|
+ }
|
|
|
+ String key = String.format(RedisKey.SCENE_MOSAIC_DATA, param.getNum());
|
|
|
+ redisClient.hmset(key, map);
|
|
|
+
|
|
|
+ //写入本地文件,作为备份
|
|
|
// this.writeMosaic(param.getNum());
|
|
|
-//
|
|
|
-// //更新数据库
|
|
|
-// this.updateMosaicFlag(param.getNum());
|
|
|
-//
|
|
|
-// //更新版本号
|
|
|
-// this.upgradeVersionById(sceneEditInfo.getId());
|
|
|
-//
|
|
|
-// return ResultData.ok();
|
|
|
-// }
|
|
|
-//
|
|
|
-// private void updateMosaicFlag(String num){
|
|
|
-// ScenePlus scenePlus = scenePlusService.getScenePlusByNum(num);
|
|
|
-// SceneEditInfoExt sceneEditInfoExt = sceneEditInfoExtService.getByScenePlusId(scenePlus.getId());
|
|
|
-//
|
|
|
-// String key = String.format(RedisKey.SCENE_MOSAIC_DATA, num);
|
|
|
-// boolean flag = redisUtil.hasKey(key);
|
|
|
-// if(flag){
|
|
|
-// sceneEditInfoExt.setMosaic(Integer.valueOf(CommonStatus.YES.code()));
|
|
|
-// }else{
|
|
|
-// sceneEditInfoExt.setMosaic(Integer.valueOf(CommonStatus.NO.code()));
|
|
|
-// }
|
|
|
-// sceneEditInfoExtService.updateById(sceneEditInfoExt);
|
|
|
-// }
|
|
|
-//
|
|
|
+
|
|
|
+ //更新数据库
|
|
|
+ this.updateMosaicFlag(param.getNum());
|
|
|
+
|
|
|
+ //更新版本号
|
|
|
+ this.upgradeVersionById(sceneEditInfo.getId());
|
|
|
+
|
|
|
+ return ResultData.ok();
|
|
|
+ }
|
|
|
+
|
|
|
+ private void updateMosaicFlag(String num){
|
|
|
+ Scene scenePlus = sceneService.getByNum(num);
|
|
|
+ SceneEditInfoExt sceneEditInfoExt = sceneEditInfoExtService.getByScenePlusId(scenePlus.getId());
|
|
|
+
|
|
|
+ String key = String.format(RedisKey.SCENE_MOSAIC_DATA, num);
|
|
|
+ Map<String, String> hmget = redisClient.hmget(key);
|
|
|
+ if(CollUtil.isNotEmpty(hmget)){
|
|
|
+ sceneEditInfoExt.setMosaic(CommonStatus.YES.code());
|
|
|
+ }else{
|
|
|
+ sceneEditInfoExt.setMosaic(CommonStatus.NO.code());
|
|
|
+ }
|
|
|
+ sceneEditInfoExtService.updateById(sceneEditInfoExt);
|
|
|
+ }
|
|
|
+
|
|
|
// /**
|
|
|
// * <p>
|
|
|
// 保证马赛克数据安全性,当redis宕机导致热点数据丢失时,可以从文件中读取,恢复到redis
|
|
@@ -2681,121 +2650,119 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<SceneEditInfoMapper, S
|
|
|
//
|
|
|
// return result;
|
|
|
// }
|
|
|
-//
|
|
|
-// @Override
|
|
|
-// public ResultData deleteMosaics(DeleteMosaicParamVO param) throws Exception {
|
|
|
-//
|
|
|
-// ScenePlus scenePlus = scenePlusService.getScenePlusByNum(param.getNum());
|
|
|
-// if(Objects.isNull(scenePlus)){
|
|
|
-// throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
|
|
|
-// }
|
|
|
-// SceneEditInfo sceneEditInfo = this.getByScenePlusId(scenePlus.getId());
|
|
|
-//
|
|
|
-// //如果redis数据丢失,从本地文件中同步马赛克数据到redis
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ResultData deleteMosaics(DeleteMosaicParamVO param) throws Exception {
|
|
|
+
|
|
|
+ Scene scenePlus = sceneService.getByNum(param.getNum());
|
|
|
+ if(Objects.isNull(scenePlus)){
|
|
|
+ throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
|
|
|
+ }
|
|
|
+ SceneEditInfo sceneEditInfo = this.getByScenePlusId(scenePlus.getId());
|
|
|
+
|
|
|
+ //如果redis数据丢失,从本地文件中同步马赛克数据到redis
|
|
|
// this.syncMosaicFromFileToRedis(param.getNum());
|
|
|
-//
|
|
|
-// String key = String.format(RedisKey.SCENE_MOSAIC_DATA, param.getNum());
|
|
|
-// redisUtil.hdel(key, param.getPanoIdList().toArray());
|
|
|
-//
|
|
|
-// //写入本地文件,作为备份
|
|
|
+
|
|
|
+ String key = String.format(RedisKey.SCENE_MOSAIC_DATA, param.getNum());
|
|
|
+ redisClient.hdel(key, param.getPanoIdList());
|
|
|
+
|
|
|
+ //写入本地文件,作为备份
|
|
|
// this.writeMosaic(param.getNum());
|
|
|
-//
|
|
|
-// //更新数据库
|
|
|
-// this.updateMosaicFlag(param.getNum());
|
|
|
-//
|
|
|
-// //更新版本号
|
|
|
-// this.upgradeVersionById(sceneEditInfo.getId());
|
|
|
-//
|
|
|
-// return ResultData.ok();
|
|
|
-// }
|
|
|
-//
|
|
|
+
|
|
|
+ //更新数据库
|
|
|
+ this.updateMosaicFlag(param.getNum());
|
|
|
+
|
|
|
+ //更新版本号
|
|
|
+ this.upgradeVersionById(sceneEditInfo.getId());
|
|
|
+
|
|
|
+ return ResultData.ok();
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public List<JSONObject> getMosaicList(String num) throws Exception {
|
|
|
|
|
|
-// String key = String.format(RedisKey.SCENE_MOSAIC_DATA, num);
|
|
|
-// Map<String, String> map = redisUtil.hmget(key);
|
|
|
-// if(CollUtil.isEmpty(map)){
|
|
|
-// ResultData.ok(new String[0]);
|
|
|
-// }
|
|
|
-// return map.values().stream()
|
|
|
-// .map(mosaic-> JSON.parseObject(mosaic))
|
|
|
-// .collect(Collectors.toList());
|
|
|
- return null;
|
|
|
+ String key = String.format(RedisKey.SCENE_MOSAIC_DATA, num);
|
|
|
+ Map<String, String> map = redisClient.hmget(key);
|
|
|
+ if(CollUtil.isEmpty(map)){
|
|
|
+ ResultData.ok(new String[0]);
|
|
|
+ }
|
|
|
+ return map.values().stream()
|
|
|
+ .map(mosaic-> JSON.parseObject(mosaic))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ResultData addWaterMark(BaseFileParamVO param) throws Exception {
|
|
|
+ Scene scenePlus = sceneService.getByNum(param.getNum());
|
|
|
+ if(Objects.isNull(scenePlus)){
|
|
|
+ throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
|
|
|
+ }
|
|
|
+ SceneEditInfoExt sceneEditInfoExt = sceneEditInfoExtService
|
|
|
+ .getByScenePlusId(scenePlus.getId());
|
|
|
+ sceneEditInfoExt.setWaterMark(param.getFileName());
|
|
|
+ sceneEditInfoExtService.updateById(sceneEditInfoExt);
|
|
|
+ return ResultData.ok();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ResultData deleteWaterMark(BaseFileParamVO param) throws Exception {
|
|
|
+ Scene scenePlus = sceneService.getByNum(param.getNum());
|
|
|
+ if(Objects.isNull(scenePlus)){
|
|
|
+ throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
|
|
|
+ }
|
|
|
+
|
|
|
+ String key = String.format(UploadFilePath.USER_VIEW_PATH, param.getNum()) + param.getFileName();
|
|
|
+ sceneFileMappingService.delByNumAndKey(param.getNum(), key);
|
|
|
|
|
|
+ SceneEditInfoExt sceneEditInfoExt = sceneEditInfoExtService.getByScenePlusId(scenePlus.getId());
|
|
|
+ sceneEditInfoExt.setWaterMark("");
|
|
|
+ sceneEditInfoExtService.updateById(sceneEditInfoExt);
|
|
|
+
|
|
|
+ return ResultData.ok();
|
|
|
}
|
|
|
|
|
|
-// @Override
|
|
|
-// public ResultData addWaterMark(BaseFileParamVO param) throws Exception {
|
|
|
-// ScenePlus scenePlus = scenePlusService.getScenePlusByNum(param.getNum());
|
|
|
-// if(Objects.isNull(scenePlus)){
|
|
|
-// throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
|
|
|
-// }
|
|
|
-// SceneEditInfoExt sceneEditInfoExt = sceneEditInfoExtService
|
|
|
-// .getByScenePlusId(scenePlus.getId());
|
|
|
-// sceneEditInfoExt.setWaterMark(param.getFileName());
|
|
|
-// sceneEditInfoExtService.updateById(sceneEditInfoExt);
|
|
|
-// return ResultData.ok();
|
|
|
-// }
|
|
|
-//
|
|
|
-// @Override
|
|
|
-// public ResultData deleteWaterMark(BaseFileParamVO param) throws Exception {
|
|
|
-// ScenePlus scenePlus = scenePlusService.getScenePlusByNum(param.getNum());
|
|
|
-// if(Objects.isNull(scenePlus)){
|
|
|
-// throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
|
|
|
-// }
|
|
|
-// sceneUploadService.delete(
|
|
|
-// DeleteFileParamVO.builder()
|
|
|
-// .num(param.getNum())
|
|
|
-// .fileNames(Lists.newArrayList(param.getFileName()))
|
|
|
-// .bizType(FileBizType.WATERMARK.code()).build());
|
|
|
-//
|
|
|
-// SceneEditInfoExt sceneEditInfoExt = sceneEditInfoExtService.getByScenePlusId(scenePlus.getId());
|
|
|
-// sceneEditInfoExt.setWaterMark("");
|
|
|
-// sceneEditInfoExtService.updateById(sceneEditInfoExt);
|
|
|
-//
|
|
|
-// return ResultData.ok();
|
|
|
-// }
|
|
|
-//
|
|
|
-// @Override
|
|
|
-// public ResultData saveFilter(SaveFiltersParamVO param) throws Exception {
|
|
|
-//
|
|
|
-// ScenePlus scenePlus = scenePlusService.getScenePlusByNum(param.getNum());
|
|
|
-// if(Objects.isNull(scenePlus)){
|
|
|
-// throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
|
|
|
-// }
|
|
|
-//
|
|
|
-// String key = String.format(RedisKey.SCENE_filter_DATA, param.getNum());
|
|
|
-// redisUtil.del(key);//前端将全量数据传过来,所以这里先清空历史数据,然后保存前端数据即可
|
|
|
-// JSONArray filterArr = JSON.parseArray(param.getData());
|
|
|
-// int filters = CommonStatus.YES.code();
|
|
|
-// //如果页面选择恢复默认,filters字段值为否
|
|
|
-// if(Objects.nonNull(param.getReset()) && param.getReset() == CommonStatus.YES.code().intValue()){
|
|
|
-// filters = CommonStatus.NO.code();
|
|
|
-// }else{
|
|
|
-// if(CollUtil.isNotEmpty(filterArr)){
|
|
|
-// List<String> filterList = filterArr.stream().map(item->JSON.toJSONString(item)).collect(Collectors.toList());
|
|
|
-// redisUtil.lRightPushAll(key, filterList);
|
|
|
-// }else{
|
|
|
-// filters = CommonStatus.NO.code();
|
|
|
-// }
|
|
|
-// }
|
|
|
-//
|
|
|
-// //写本地文件,作为备份
|
|
|
+ @Override
|
|
|
+ public ResultData saveFilter(SaveFiltersParamVO param) throws Exception {
|
|
|
+
|
|
|
+ Scene scenePlus = sceneService.getByNum(param.getNum());
|
|
|
+ if(Objects.isNull(scenePlus)){
|
|
|
+ throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
|
|
|
+ }
|
|
|
+
|
|
|
+ String key = String.format(RedisKey.SCENE_filter_DATA, param.getNum());
|
|
|
+ redisClient.del(key);//前端将全量数据传过来,所以这里先清空历史数据,然后保存前端数据即可
|
|
|
+ JSONArray filterArr = JSON.parseArray(param.getData());
|
|
|
+ int filters = CommonStatus.YES.code();
|
|
|
+ //如果页面选择恢复默认,filters字段值为否
|
|
|
+ if(Objects.nonNull(param.getReset()) && param.getReset() == CommonStatus.YES.code().intValue()){
|
|
|
+ filters = CommonStatus.NO.code();
|
|
|
+ }else{
|
|
|
+ if(CollUtil.isNotEmpty(filterArr)){
|
|
|
+ List<String> filterList = filterArr.stream().map(item->JSON.toJSONString(item)).collect(Collectors.toList());
|
|
|
+ redisClient.lRightPushAll(key, filterList);
|
|
|
+ }else{
|
|
|
+ filters = CommonStatus.NO.code();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //写本地文件,作为备份
|
|
|
// this.writeFilter(param.getNum());
|
|
|
-//
|
|
|
-//
|
|
|
-// //更新数据库
|
|
|
-// SceneEditInfoExt sceneEditInfoExt = sceneEditInfoExtService.getByScenePlusId(scenePlus.getId());
|
|
|
-// sceneEditInfoExt.setFilters(filters);
|
|
|
-// sceneEditInfoExtService.updateById(sceneEditInfoExt);
|
|
|
-//
|
|
|
-// //更新版本号
|
|
|
-// this.upgradeVersionById(sceneEditInfoExt.getEditInfoId());
|
|
|
-//
|
|
|
-// return ResultData.ok();
|
|
|
-//
|
|
|
-// }
|
|
|
-//
|
|
|
+
|
|
|
+
|
|
|
+ //更新数据库
|
|
|
+ SceneEditInfoExt sceneEditInfoExt = sceneEditInfoExtService.getByScenePlusId(scenePlus.getId());
|
|
|
+ sceneEditInfoExt.setFilters(filters);
|
|
|
+ sceneEditInfoExtService.updateById(sceneEditInfoExt);
|
|
|
+
|
|
|
+ //更新版本号
|
|
|
+ this.upgradeVersionById(sceneEditInfoExt.getEditInfoId());
|
|
|
+
|
|
|
+ this.publicFilterData(param.getNum(), filters);
|
|
|
+
|
|
|
+ return ResultData.ok();
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
// private void writeFilter(String num) throws Exception{
|
|
|
//
|
|
|
// String filterPath = String.format(ConstantFilePath.SCENE_USER_PATH_V4, num) + "filter.json";
|
|
@@ -2852,18 +2819,18 @@ public class SceneEditInfoServiceImpl extends ServiceImpl<SceneEditInfoMapper, S
|
|
|
// redisLockUtil.unlockLua(lockKey, lockVal);
|
|
|
// }
|
|
|
// }
|
|
|
-//
|
|
|
-// @Override
|
|
|
-// public ResultData listFilter(BaseSceneParamVO param) throws Exception {
|
|
|
-//
|
|
|
-// //同步数据
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ResultData listFilter(BaseSceneParamVO param) throws Exception {
|
|
|
+
|
|
|
+ //同步数据
|
|
|
// this.syncFiltersFromFileToRedis(param.getNum());
|
|
|
-//
|
|
|
-// //查询redis
|
|
|
-// String key = String.format(RedisKey.SCENE_filter_DATA, param.getNum());
|
|
|
-// List<String> list = redisUtil.lGet(key, 0, -1);
|
|
|
-// List<JSONObject> collect =
|
|
|
-// list.stream().map(str -> JSON.parseObject(str)).collect(Collectors.toList());
|
|
|
-// return ResultData.ok(collect);
|
|
|
-// }
|
|
|
+
|
|
|
+ //查询redis
|
|
|
+ String key = String.format(RedisKey.SCENE_filter_DATA, param.getNum());
|
|
|
+ List<String> list = redisClient.lGet(key, 0, -1);
|
|
|
+ List<JSONObject> collect =
|
|
|
+ list.stream().map(str -> JSON.parseObject(str)).collect(Collectors.toList());
|
|
|
+ return ResultData.ok(collect);
|
|
|
+ }
|
|
|
}
|