ScenePlusServiceImpl.java 8.3 KB

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