IFdkkLaserServiceImpl.java 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. package com.fdkankan.contro.service.impl;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.fdkankan.common.util.DateUtil;
  4. import com.fdkankan.common.util.FileUtils;
  5. import com.fdkankan.contro.entity.Camera;
  6. import com.fdkankan.contro.entity.ScenePlus;
  7. import com.fdkankan.contro.entity.ScenePro;
  8. import com.fdkankan.contro.service.IFdkkLaserService;
  9. import com.fdkankan.contro.service.IScenePlusService;
  10. import com.fdkankan.contro.service.ISceneProService;
  11. import com.fdkankan.rabbitmq.util.RabbitMqProducer;
  12. import lombok.extern.slf4j.Slf4j;
  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import org.springframework.beans.factory.annotation.Value;
  15. import org.springframework.stereotype.Service;
  16. import org.springframework.util.ObjectUtils;
  17. import java.io.File;
  18. import java.util.Arrays;
  19. import java.util.Date;
  20. import java.util.HashMap;
  21. import java.util.Map;
  22. @Service
  23. @Slf4j
  24. public class IFdkkLaserServiceImpl implements IFdkkLaserService {
  25. @Autowired
  26. private ISceneProService sceneProService;
  27. @Autowired
  28. private IScenePlusService scenePlusService;
  29. @Autowired
  30. private RabbitMqProducer rabbitMqProducer;
  31. @Value("${queue.application.laser.update-scene}")
  32. private String updateScene;
  33. @Value("${queue.application.laser.update-build-status}")
  34. private String updateBuildStatus;
  35. @Value("${queue.application.laser.cloud-point-build}")
  36. private String cloudPointBuild;
  37. public void updateSceneStatus(String sceneCode, int sceneStatus, String path, Date createTime) {
  38. Map<String, Object> params = new HashMap<>();
  39. params.put("sceneCode", sceneCode);
  40. params.put("status", sceneStatus);
  41. params.put("version",getSceneVersion(sceneCode));
  42. params.put("createTime", DateUtil.date2String(createTime, null));
  43. if (!ObjectUtils.isEmpty(path)) {
  44. params.put("path", path);
  45. }
  46. rabbitMqProducer.sendByWorkQueue(updateScene, params);
  47. }
  48. public void syncBuildResult(String sceneNum, String dataSource,Date createTime) {
  49. log.info("激光转台相机构建结果 同步 请求 ");
  50. try {
  51. String jgPath = dataSource;
  52. //创建目录
  53. if (dataSource.lastIndexOf("/") != -1) {
  54. jgPath = jgPath + "_laserData";
  55. } else {
  56. jgPath = jgPath.substring(0, jgPath.length() - 1) + "_laserData";
  57. }
  58. FileUtils.createDir(jgPath + "/extras");
  59. log.info("生成 激光相机目录 " + jgPath);
  60. //生成data.json
  61. JSONObject jgDataJson = new JSONObject();
  62. jgDataJson.put("split_type", "SPLIT_V15");
  63. jgDataJson.put("skybox_type", "SKYBOX_V5");
  64. jgDataJson.put("extras", null);
  65. FileUtils.writeFile(jgPath + File.separator + "data.json", jgDataJson.toString());
  66. // result/mesh/mesh.obj --> jgPath/laserData/laser.obj
  67. log.info("开始拷贝obj文件");
  68. FileUtils.copyDirectiory(dataSource + "/results/mesh", jgPath + "/laserData/mesh");
  69. FileUtils.copyDirectiory(dataSource + "/results/laserData/cover", jgPath + "/extras");
  70. FileUtils.copyFile(dataSource + "/results/laserData", jgPath, true);
  71. updateSceneStatus(sceneNum, 2, jgPath + File.separator + "laserData",createTime);
  72. } catch (Exception e) {
  73. log.error("激光转台相机同步失败", e);
  74. }
  75. }
  76. @Override
  77. public void pushBuildStatusToLaserSystem(String projectNum, String laserObjFilePath) {
  78. Map<String, String> params = new HashMap<>();
  79. params.put("sceneCode", projectNum);
  80. params.put("objPath", laserObjFilePath);
  81. rabbitMqProducer.sendByWorkQueue(updateBuildStatus, params);
  82. }
  83. public void saveScene(ScenePlus scenePlus, String scenePassword, Camera cameraEntity, String phone, boolean rebuild) {
  84. Map<String, Object> params = new HashMap<>();
  85. params.put("childName", cameraEntity.getChildName());
  86. params.put("createTime", DateUtil.date2String(scenePlus.getCreateTime(), null));
  87. params.put("phone", phone);
  88. params.put("sceneCode", scenePlus.getNum());
  89. params.put("snCode", cameraEntity.getSnCode());
  90. params.put("status", scenePlus.getSceneStatus());
  91. if (!rebuild) {
  92. params.put("password", scenePassword);
  93. } else {
  94. params.put("status", 4);
  95. }
  96. params.put("version",getSceneVersion(scenePlus.getNum()));
  97. params.put("title", scenePlus.getTitle());
  98. params.put("userId", scenePlus.getUserId());
  99. rabbitMqProducer.sendByWorkQueue(updateScene, params);
  100. }
  101. public void saveScene(ScenePro scenePro, String scenePassword, Camera cameraEntity, String phone, boolean rebuild) {
  102. Map<String, Object> params = new HashMap<>();
  103. params.put("childName", cameraEntity.getChildName());
  104. if(ObjectUtils.isEmpty(scenePro.getCreateTime())){
  105. scenePro.setCreateTime(new Date());
  106. }
  107. params.put("createTime", DateUtil.date2String(scenePro.getCreateTime(), null));
  108. params.put("phone", phone);
  109. params.put("sceneCode", scenePro.getNum());
  110. params.put("snCode", cameraEntity.getSnCode());
  111. params.put("status", scenePro.getStatus());
  112. if (!rebuild) {
  113. params.put("password", scenePassword);
  114. } else {
  115. params.put("status", 4);
  116. }
  117. params.put("version",getSceneVersion(scenePro.getNum()));
  118. params.put("title", scenePro.getSceneName());
  119. params.put("userId", scenePro.getUserId());
  120. rabbitMqProducer.sendByWorkQueue(updateScene, params);
  121. }
  122. private String getSceneVersion(String num) {
  123. String version = "V3";
  124. ScenePro scenepro = sceneProService.getByNum(num);
  125. if (scenepro == null || scenepro.getIsUpgrade() == 1) {
  126. ScenePlus plus = scenePlusService.getScenePlusByNum(num);
  127. if (plus != null) {
  128. version = "V4";
  129. }
  130. }
  131. return version;
  132. }
  133. @Override
  134. public void cloudPointBuild(String sceneCode, String visionEditFilePath) {
  135. Map<String, Object> params = new HashMap<>();
  136. params.put("sceneNum", sceneCode);
  137. params.put("filePaths", Arrays.asList(visionEditFilePath));
  138. params.put("businessType", 0);
  139. rabbitMqProducer.sendByWorkQueue(cloudPointBuild, params);
  140. }
  141. }