SceneUpgradeToV4Service.java 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. package com.fdkankan.scene.service.impl;
  2. import cn.hutool.core.util.StrUtil;
  3. import com.alibaba.fastjson.JSON;
  4. import com.fdkankan.model.constants.ConstantFilePath;
  5. import com.fdkankan.web.response.ResultData;
  6. import com.fdkankan.fyun.face.FYunFileServiceInterface;
  7. import com.fdkankan.redis.constant.RedisKey;
  8. import com.fdkankan.redis.util.RedisUtil;
  9. import com.fdkankan.scene.bean.SceneUpgradeProgressBean;
  10. import com.fdkankan.scene.entity.ScenePlus;
  11. import com.fdkankan.scene.entity.ScenePlusExt;
  12. import com.fdkankan.scene.entity.SceneRepairLog;
  13. import com.fdkankan.scene.service.IScenePlusExtService;
  14. import com.fdkankan.scene.service.IScenePlusService;
  15. import com.fdkankan.scene.service.ISceneProService;
  16. import com.fdkankan.scene.service.ISceneRepairLogService;
  17. import com.fdkankan.scene.service.ISceneUpgradeToV4Service;
  18. import com.fdkankan.scene.vo.SceneInfoVO;
  19. import java.util.Calendar;
  20. import java.util.Objects;
  21. import lombok.extern.slf4j.Slf4j;
  22. import org.springframework.beans.factory.annotation.Autowired;
  23. import org.springframework.stereotype.Service;
  24. /**
  25. * <p>
  26. * TODO
  27. * </p>
  28. *
  29. * @author dengsixing
  30. * @since 2022/4/21
  31. **/
  32. @Slf4j
  33. @Service
  34. public class SceneUpgradeToV4Service implements ISceneUpgradeToV4Service {
  35. @Autowired
  36. private ISceneRepairLogService sceneRepairLogService;
  37. @Autowired
  38. private RedisUtil redisUtil;
  39. @Autowired
  40. private ISceneProService sceneProService;
  41. @Autowired
  42. private IScenePlusService scenePlusService;
  43. @Autowired
  44. private IScenePlusExtService scenePlusExtService;
  45. @Autowired
  46. private FYunFileServiceInterface fYunFileService;
  47. private void upgradeLog(SceneRepairLog sceneRepairLog, String num, int status, String reason){
  48. //写入升级日志
  49. if(Objects.isNull(sceneRepairLog)){
  50. sceneRepairLog = new SceneRepairLog();
  51. sceneRepairLog.setNum(num);
  52. }
  53. sceneRepairLog.setState(status);
  54. sceneRepairLog.setReason(reason);
  55. sceneRepairLog.setCreateTime(Calendar.getInstance().getTime());
  56. sceneRepairLogService.saveOrUpdate(sceneRepairLog);
  57. }
  58. @Override
  59. public ResultData getUpgradeToV4Progress(String num) {
  60. String key = String.format(RedisKey.scene_upgrade_progress_num, num);
  61. String progress = redisUtil.get(key);
  62. SceneUpgradeProgressBean progressBean = null;
  63. if(StrUtil.isNotEmpty(progress)){
  64. progressBean = JSON.parseObject(progress, SceneUpgradeProgressBean.class);
  65. }else{
  66. progressBean = SceneUpgradeProgressBean.builder().num(num).status(0).progress(0).build();
  67. }
  68. return ResultData.ok(progressBean);
  69. }
  70. @Override
  71. public ResultData getSceneViewInfo(String num) {
  72. ScenePlus scenePlus = scenePlusService.getScenePlusByNum(num);
  73. ScenePlusExt scenePlusExt = scenePlusExtService.getScenePlusExtByPlusId(scenePlus.getId());
  74. String bucket = scenePlusExt.getYunFileBucket();
  75. String key = String.format(RedisKey.SCENE_JSON, num);
  76. String sceneJson = redisUtil.get(key);
  77. SceneInfoVO sceneInfoVO = null;
  78. //先查询redis
  79. if(StrUtil.isNotEmpty(sceneJson)) {
  80. sceneInfoVO = JSON.parseObject(sceneJson, SceneInfoVO.class);
  81. sceneInfoVO.setScenePassword(null);
  82. if(Objects.isNull(sceneInfoVO.getFloorPlanAngle())){
  83. sceneInfoVO.setFloorPlanAngle(0f);
  84. }
  85. if(Objects.isNull(sceneInfoVO.getFloorPlanCompass())){
  86. sceneInfoVO.setFloorPlanCompass(0f);
  87. }
  88. return ResultData.ok(sceneInfoVO);
  89. }
  90. //如果redis没找到,从scene.json中获取
  91. String objectName = String.format(ConstantFilePath.SCENE_VIEW_DATA_DATA_SCENEJSON, num);
  92. String objectContent = fYunFileService.getFileContent(bucket, objectName);
  93. if(StrUtil.isEmpty(objectContent))
  94. return ResultData.ok();
  95. sceneInfoVO = JSON.parseObject(objectContent, SceneInfoVO.class);
  96. sceneInfoVO.setScenePassword(null);
  97. if(Objects.isNull(sceneInfoVO.getFloorPlanAngle())){
  98. sceneInfoVO.setFloorPlanAngle(0f);
  99. }
  100. if(Objects.isNull(sceneInfoVO.getFloorPlanCompass())){
  101. sceneInfoVO.setFloorPlanCompass(0f);
  102. }
  103. return ResultData.ok(sceneInfoVO);
  104. }
  105. }