ScenePlusServiceImpl.java 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. package com.fdkankan.manage_jp.service.impl;
  2. import cn.hutool.core.io.FileUtil;
  3. import cn.hutool.core.thread.ThreadUtil;
  4. import cn.hutool.core.util.StrUtil;
  5. import cn.hutool.json.JSONUtil;
  6. import com.alibaba.fastjson.JSONObject;
  7. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  8. import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
  9. import com.fdkankan.common.constant.SceneVersionType;
  10. import com.fdkankan.common.util.FileUtils;
  11. import com.fdkankan.fyun.face.FYunFileServiceInterface;
  12. import com.fdkankan.manage_jp.common.OssPath;
  13. import com.fdkankan.manage_jp.common.ResultCode;
  14. import com.fdkankan.manage_jp.entity.*;
  15. import com.fdkankan.manage_jp.exception.BusinessException;
  16. import com.fdkankan.manage_jp.httpClient.service.LaserService;
  17. import com.fdkankan.manage_jp.mapper.IScenePlusMapper;
  18. import com.fdkankan.manage_jp.service.*;
  19. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  20. import com.fdkankan.manage_jp.util.SceneResourcePath;
  21. import lombok.extern.slf4j.Slf4j;
  22. import org.apache.commons.lang3.StringUtils;
  23. import org.bytedeco.javacpp.presets.opencv_core;
  24. import org.springframework.beans.factory.annotation.Autowired;
  25. import org.springframework.scheduling.annotation.Async;
  26. import org.springframework.stereotype.Service;
  27. import java.io.File;
  28. import java.util.List;
  29. import java.util.Objects;
  30. import java.util.concurrent.CompletableFuture;
  31. import java.util.concurrent.ExecutorService;
  32. /**
  33. * <p>
  34. * 场景主表 服务实现类
  35. * </p>
  36. *
  37. * @author
  38. * @since 2022-12-30
  39. */
  40. @Service
  41. @Slf4j
  42. public class ScenePlusServiceImpl extends ServiceImpl<IScenePlusMapper, ScenePlus> implements IScenePlusService {
  43. @Autowired
  44. IScene3dNumService scene3dNumService;
  45. @Autowired
  46. IScenePlusExtService scenePlusExtService;
  47. @Autowired
  48. ISceneEditInfoService sceneEditInfoService;
  49. @Autowired
  50. ISceneEditInfoExtService sceneEditInfoExtService;
  51. @Autowired
  52. ISceneEditControlsService sceneEditControlsService;
  53. @Autowired
  54. FYunFileServiceInterface fYunFileServiceInterface;
  55. @Autowired
  56. SceneCommonService sceneCommonService;
  57. @Autowired
  58. ISurveillanceService surveillanceService;
  59. @Autowired
  60. LaserService laserService;
  61. @Autowired
  62. ISceneProService sceneProService;
  63. @Override
  64. public ScenePlus getByNum(String sceneNum) {
  65. LambdaQueryWrapper<ScenePlus> wrapper = new LambdaQueryWrapper<>();
  66. wrapper.eq(ScenePlus::getNum,sceneNum);
  67. List<ScenePlus> list = this.list(wrapper);
  68. if(list!=null && list.size() >0){
  69. return list.get(0);
  70. }
  71. return null;
  72. }
  73. @Override
  74. public void unbind(Long cameraId,Long userId) {
  75. LambdaUpdateWrapper<ScenePlus> wrapper = new LambdaUpdateWrapper<>();
  76. wrapper.eq(ScenePlus::getCameraId,cameraId);
  77. wrapper.set(ScenePlus::getUserId,userId);
  78. this.update(wrapper);
  79. }
  80. @Override
  81. public ScenePlus copyScene(ScenePlus scenePlus) {
  82. if(scenePlus.getSceneStatus() !=-2){
  83. throw new BusinessException(ResultCode.SCENE_ERROR);
  84. }
  85. String oldNum = scenePlus.getNum();
  86. String newNum = sceneCommonService.getNewNum(oldNum);
  87. Long plusId = scenePlus.getId();
  88. String oldSceneName = scenePlus.getTitle();
  89. ScenePlusExt plusExt = scenePlusExtService.getByPlusId(plusId);
  90. if(plusExt == null){
  91. throw new BusinessException(ResultCode.NOT_RECORD);
  92. }
  93. scenePlus.setNum(newNum);
  94. scenePlus.setTitle(scenePlus.getTitle() +"(copy)");
  95. scenePlus.setSceneStatus(0);
  96. scenePlus.setId(null);
  97. this.save(scenePlus);
  98. try {
  99. sceneCommonService.v4Async(plusExt,oldNum,newNum,scenePlus,plusId,oldSceneName);
  100. }catch (Exception e){
  101. log.error("复制场景失败-sceneNum:{},error:{}",oldNum,e);
  102. scenePlus.setSceneStatus(-1);
  103. this.updateById(scenePlus);
  104. throw new BusinessException(ResultCode.SCENE_DATA_ERROR);
  105. }
  106. return scenePlus;
  107. }
  108. @Override
  109. public void updatePayStatus(String num,String version,Integer sceneSource,Integer payStatus,CameraDetail cameraDetail) {
  110. if(version.equals("v3")){
  111. LambdaUpdateWrapper<ScenePro> wrapper2 = new LambdaUpdateWrapper<>();
  112. wrapper2.set(ScenePro::getPayStatus,payStatus);
  113. wrapper2.eq(ScenePro::getNum,num);
  114. if(cameraDetail != null){
  115. wrapper2.set(ScenePro::getCameraId,cameraDetail.getCameraId());
  116. }
  117. if(cameraDetail != null){
  118. wrapper2.set(ScenePro::getUserId,cameraDetail.getUserId());
  119. }
  120. sceneProService.update(wrapper2);
  121. updateOssPayStatus(String.format(OssPath.v3_statusPath,num),payStatus);
  122. }else if(version.equals("v4")){
  123. LambdaUpdateWrapper<ScenePlus> wrapper = new LambdaUpdateWrapper<>();
  124. wrapper.set(ScenePlus::getPayStatus,payStatus);
  125. wrapper.eq(ScenePlus::getNum,num);
  126. if(cameraDetail != null){
  127. wrapper.set(ScenePlus::getCameraId,cameraDetail.getCameraId());
  128. }
  129. if(cameraDetail != null){
  130. wrapper.set(ScenePlus::getUserId,cameraDetail.getUserId());
  131. }
  132. this.update(wrapper);
  133. updateOssPayStatus(String.format(OssPath.v4_statusPath,num),payStatus);
  134. }
  135. if(sceneSource == 4 || sceneSource == 5){
  136. laserService.updateStatus(num,payStatus==1?2:3,cameraDetail);
  137. }
  138. }
  139. /**
  140. * 修改oss status.json中 payStatus
  141. */
  142. public void updateOssPayStatus(String path,Integer payStatus) {
  143. try {
  144. if(!fYunFileServiceInterface.fileExist(path)){
  145. return;
  146. }
  147. String data = fYunFileServiceInterface.getFileContent(path);
  148. if(StringUtils.isBlank(data)){
  149. return;
  150. }
  151. JSONObject jsonObject = JSONObject.parseObject(data);
  152. jsonObject.put("payStatus",payStatus);
  153. String json = JSONUtil.toJsonStr(jsonObject);
  154. FileUtils.writeFile(OssPath.localStatusPath ,json);
  155. log.info("updateOssStatus--localPath:{},ossPath:{},payStatus:{}",OssPath.localStatusPath,path,payStatus);
  156. fYunFileServiceInterface.uploadFile(OssPath.localStatusPath,path);
  157. }catch (Exception e){
  158. e.printStackTrace();
  159. }finally {
  160. FileUtil.del(OssPath.localStatusPath);
  161. }
  162. }
  163. }