ScrbServiceImpl.java 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. package com.fdkankan.download.service.impl;
  2. import cn.hutool.core.collection.CollUtil;
  3. import cn.hutool.core.io.FileUtil;
  4. import cn.hutool.core.util.StrUtil;
  5. import cn.hutool.core.util.ZipUtil;
  6. import com.alibaba.fastjson.JSON;
  7. import com.alibaba.fastjson.JSONObject;
  8. import com.fdkankan.common.util.CmdUtils;
  9. import com.fdkankan.common.util.FileUtils;
  10. import com.fdkankan.download.constant.ScrbCanstant;
  11. import com.fdkankan.download.constant.UserEditDataType;
  12. import com.fdkankan.download.entity.*;
  13. import com.fdkankan.download.factory.UserEditData.UserEditDataHandler;
  14. import com.fdkankan.download.factory.UserEditData.UserEditDataHandlerFactory;
  15. import com.fdkankan.download.service.*;
  16. import com.fdkankan.fyun.face.FYunFileServiceInterface;
  17. import lombok.extern.slf4j.Slf4j;
  18. import org.springframework.beans.factory.annotation.Autowired;
  19. import org.springframework.stereotype.Service;
  20. import javax.annotation.Resource;
  21. import java.io.File;
  22. import java.util.*;
  23. @Slf4j
  24. @Service
  25. public class ScrbServiceImpl implements IScrbService {
  26. @Resource
  27. private FYunFileServiceInterface fYunFileService;
  28. @Autowired
  29. private IScenePlusService scenePlusService;
  30. @Autowired
  31. private IScenePlusExtService scenePlusExtService;
  32. @Autowired
  33. private ISceneEditInfoService sceneEditInfoService;
  34. @Autowired
  35. private ISceneEditInfoExtService sceneEditInfoExtService;
  36. @Autowired
  37. private ISceneEditControlsService sceneEditControlsService;
  38. @Override
  39. public void syncScene(JSONObject param) throws Exception {
  40. String num = param.getString("num");
  41. String basePath = "/mnt/scrb/";
  42. String zipPath = basePath + num + ".zip";
  43. String scenePath = basePath + "num/";
  44. //下载zip包、解压
  45. String key = param.getString("key");
  46. fYunFileService.downloadFile(key, zipPath);
  47. ZipUtil.unzip(zipPath, basePath);
  48. //切图
  49. String tilesPath = scenePath + "scene_view_data/" + num + "/images/tiles/";
  50. String skyboxPath = tilesPath + "4k";
  51. CmdUtils.callLine(ScrbCanstant.CmdCanstant.cut_image + skyboxPath + " " + tilesPath);
  52. //删除4k图
  53. FileUtil.del(skyboxPath);
  54. //上传文件
  55. List<File> files = FileUtil.loopFiles(scenePath + "scene_view_data/");
  56. files.stream().forEach(file -> {
  57. fYunFileService.uploadFile(file.getAbsolutePath(), file.getAbsolutePath().replace(scenePath, ""));
  58. });
  59. files = FileUtil.loopFiles(scenePath + "scene_result_data/");
  60. files.stream().forEach(file -> {
  61. fYunFileService.uploadFile(file.getAbsolutePath(), file.getAbsolutePath().replace(scenePath, ""));
  62. });
  63. //插入数据库,如果是重推,不需要执行这部
  64. ScenePlus scenePlus = scenePlusService.getByNum(num);
  65. if(Objects.isNull(scenePlus)){
  66. String scenePlusStr = FileUtil.readUtf8String(scenePath + "scenePlus.txt");
  67. scenePlus = JSON.parseObject(scenePlusStr, ScenePlus.class);
  68. scenePlus.setId(null);
  69. scenePlusService.save(scenePlus);
  70. String scenePlusExtStr = FileUtil.readUtf8String(scenePath + "scenePlusExt.txt");
  71. ScenePlusExt scenePlusExt = JSON.parseObject(scenePlusExtStr, ScenePlusExt.class);
  72. scenePlusExt.setId(null);
  73. scenePlusExt.setPlusId(scenePlus.getId());
  74. scenePlusExtService.save(scenePlusExt);
  75. String sceneEditInfoStr = FileUtil.readUtf8String(scenePath + "sceneEditInfo.txt");
  76. SceneEditInfo sceneEditInfo = JSON.parseObject(sceneEditInfoStr, SceneEditInfo.class);
  77. sceneEditInfo.setId(null);
  78. sceneEditInfo.setScenePlusId(scenePlus.getId());
  79. sceneEditInfoService.save(sceneEditInfo);
  80. String sceneEditInfoExtStr = FileUtil.readUtf8String(scenePath + "sceneEditInfoExt.txt");
  81. SceneEditInfoExt sceneEditInfoExt = JSON.parseObject(sceneEditInfoExtStr, SceneEditInfoExt.class);
  82. sceneEditInfoExt.setId(null);
  83. sceneEditInfoExt.setScenePlusId(scenePlus.getId());
  84. sceneEditInfoExt.setEditInfoId(sceneEditInfo.getId());
  85. sceneEditInfoExtService.save(sceneEditInfoExt);
  86. String sceneEditControlsStr = FileUtil.readUtf8String(scenePath + "sceneEditControls.txt");
  87. SceneEditControls sceneEditControls = JSON.parseObject(sceneEditControlsStr, SceneEditControls.class);
  88. sceneEditControls.setId(null);
  89. sceneEditControls.setEditInfoId(sceneEditInfo.getId());
  90. sceneEditControlsService.save(sceneEditControls);
  91. }
  92. //清除用户编辑业务数据
  93. Set<String> bizs = new HashSet<>();
  94. bizs.add(UserEditDataType.BOX_MODEL.message());
  95. bizs.add(UserEditDataType.FLOORPLAN.message());
  96. bizs.add(UserEditDataType.FILTERS.message());
  97. this.initUserEditData(num, bizs, null);
  98. }
  99. @Override
  100. public void initUserEditData(String num, Set<String> bizs, Map<String, Map<String ,Object>> params) throws Exception {
  101. if(StrUtil.isEmpty(num) || CollUtil.isEmpty(bizs)){
  102. return;
  103. }
  104. for (String biz : bizs) {
  105. UserEditDataHandler handler = UserEditDataHandlerFactory.getHandler(biz);
  106. handler.init(num, CollUtil.isEmpty(params) ? null : params.get(biz));
  107. }
  108. }
  109. }