123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- package com.fdkankan.download.service.impl;
- import cn.hutool.core.collection.CollUtil;
- import cn.hutool.core.io.FileUtil;
- import cn.hutool.core.util.StrUtil;
- import cn.hutool.core.util.ZipUtil;
- import com.alibaba.fastjson.JSON;
- import com.alibaba.fastjson.JSONObject;
- import com.fdkankan.common.util.CmdUtils;
- import com.fdkankan.common.util.FileUtils;
- import com.fdkankan.download.constant.ScrbCanstant;
- import com.fdkankan.download.constant.UserEditDataType;
- import com.fdkankan.download.entity.*;
- import com.fdkankan.download.factory.UserEditData.UserEditDataHandler;
- import com.fdkankan.download.factory.UserEditData.UserEditDataHandlerFactory;
- import com.fdkankan.download.service.*;
- import com.fdkankan.fyun.face.FYunFileServiceInterface;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import javax.annotation.Resource;
- import java.io.File;
- import java.util.*;
- @Slf4j
- @Service
- public class ScrbServiceImpl implements IScrbService {
- @Resource
- private FYunFileServiceInterface fYunFileService;
- @Autowired
- private IScenePlusService scenePlusService;
- @Autowired
- private IScenePlusExtService scenePlusExtService;
- @Autowired
- private ISceneEditInfoService sceneEditInfoService;
- @Autowired
- private ISceneEditInfoExtService sceneEditInfoExtService;
- @Autowired
- private ISceneEditControlsService sceneEditControlsService;
- @Override
- public void syncScene(JSONObject param) throws Exception {
- String num = param.getString("num");
- String basePath = "/mnt/scrb/";
- String zipPath = basePath + num + ".zip";
- String scenePath = basePath + "num/";
- //下载zip包、解压
- String key = param.getString("key");
- fYunFileService.downloadFile(key, zipPath);
- ZipUtil.unzip(zipPath, basePath);
- //切图
- String tilesPath = scenePath + "scene_view_data/" + num + "/images/tiles/";
- String skyboxPath = tilesPath + "4k";
- CmdUtils.callLine(ScrbCanstant.CmdCanstant.cut_image + skyboxPath + " " + tilesPath);
- //删除4k图
- FileUtil.del(skyboxPath);
- //上传文件
- List<File> files = FileUtil.loopFiles(scenePath + "scene_view_data/");
- files.stream().forEach(file -> {
- fYunFileService.uploadFile(file.getAbsolutePath(), file.getAbsolutePath().replace(scenePath, ""));
- });
- files = FileUtil.loopFiles(scenePath + "scene_result_data/");
- files.stream().forEach(file -> {
- fYunFileService.uploadFile(file.getAbsolutePath(), file.getAbsolutePath().replace(scenePath, ""));
- });
- //插入数据库,如果是重推,不需要执行这部
- ScenePlus scenePlus = scenePlusService.getByNum(num);
- if(Objects.isNull(scenePlus)){
- String scenePlusStr = FileUtil.readUtf8String(scenePath + "scenePlus.txt");
- scenePlus = JSON.parseObject(scenePlusStr, ScenePlus.class);
- scenePlus.setId(null);
- scenePlusService.save(scenePlus);
- String scenePlusExtStr = FileUtil.readUtf8String(scenePath + "scenePlusExt.txt");
- ScenePlusExt scenePlusExt = JSON.parseObject(scenePlusExtStr, ScenePlusExt.class);
- scenePlusExt.setId(null);
- scenePlusExt.setPlusId(scenePlus.getId());
- scenePlusExtService.save(scenePlusExt);
- String sceneEditInfoStr = FileUtil.readUtf8String(scenePath + "sceneEditInfo.txt");
- SceneEditInfo sceneEditInfo = JSON.parseObject(sceneEditInfoStr, SceneEditInfo.class);
- sceneEditInfo.setId(null);
- sceneEditInfo.setScenePlusId(scenePlus.getId());
- sceneEditInfoService.save(sceneEditInfo);
- String sceneEditInfoExtStr = FileUtil.readUtf8String(scenePath + "sceneEditInfoExt.txt");
- SceneEditInfoExt sceneEditInfoExt = JSON.parseObject(sceneEditInfoExtStr, SceneEditInfoExt.class);
- sceneEditInfoExt.setId(null);
- sceneEditInfoExt.setScenePlusId(scenePlus.getId());
- sceneEditInfoExt.setEditInfoId(sceneEditInfo.getId());
- sceneEditInfoExtService.save(sceneEditInfoExt);
- String sceneEditControlsStr = FileUtil.readUtf8String(scenePath + "sceneEditControls.txt");
- SceneEditControls sceneEditControls = JSON.parseObject(sceneEditControlsStr, SceneEditControls.class);
- sceneEditControls.setId(null);
- sceneEditControls.setEditInfoId(sceneEditInfo.getId());
- sceneEditControlsService.save(sceneEditControls);
- }
- //清除用户编辑业务数据
- Set<String> bizs = new HashSet<>();
- bizs.add(UserEditDataType.BOX_MODEL.message());
- bizs.add(UserEditDataType.FLOORPLAN.message());
- bizs.add(UserEditDataType.FILTERS.message());
- this.initUserEditData(num, bizs, null);
- }
- @Override
- public void initUserEditData(String num, Set<String> bizs, Map<String, Map<String ,Object>> params) throws Exception {
- if(StrUtil.isEmpty(num) || CollUtil.isEmpty(bizs)){
- return;
- }
- for (String biz : bizs) {
- UserEditDataHandler handler = UserEditDataHandlerFactory.getHandler(biz);
- handler.init(num, CollUtil.isEmpty(params) ? null : params.get(biz));
- }
- }
- }
|