SceneServiceImpl.java 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539
  1. package com.fdkankan.scene.service.impl;
  2. import cn.hutool.core.util.StrUtil;
  3. import com.alibaba.fastjson.JSONArray;
  4. import com.alibaba.fastjson.JSONObject;
  5. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  6. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  7. import com.fdkankan.model.constants.ConstantFilePath;
  8. import com.fdkankan.common.constant.ErrorCode;
  9. import com.fdkankan.common.exception.BusinessException;
  10. import com.fdkankan.web.response.ResultData;
  11. import com.fdkankan.model.utils.CreateObjUtil;
  12. import com.fdkankan.common.util.DateUtil;
  13. import com.fdkankan.common.util.FileUtils;
  14. import com.fdkankan.fyun.face.FYunFileServiceInterface;
  15. import com.fdkankan.rabbitmq.util.RabbitMqProducer;
  16. import com.fdkankan.redis.constant.RedisKey;
  17. import com.fdkankan.redis.constant.RedisLockKey;
  18. import com.fdkankan.redis.util.RedisLockUtil;
  19. import com.fdkankan.redis.util.RedisUtil;
  20. import com.fdkankan.scene.bean.RequestRebuildVedioScene;
  21. import com.fdkankan.scene.bean.RequestSceneCooperation;
  22. import com.fdkankan.scene.entity.Camera;
  23. import com.fdkankan.scene.entity.CameraDetail;
  24. import com.fdkankan.scene.entity.PicSceneProgress;
  25. import com.fdkankan.scene.entity.Scene;
  26. import com.fdkankan.scene.entity.SceneCooperation;
  27. import com.fdkankan.scene.entity.ScenePlus;
  28. import com.fdkankan.scene.entity.ScenePlusExt;
  29. import com.fdkankan.scene.entity.ScenePro;
  30. import com.fdkankan.scene.entity.SceneProEdit;
  31. import com.fdkankan.scene.entity.SceneResource;
  32. import com.fdkankan.scene.entity.User;
  33. import com.fdkankan.scene.entity.UserIncrement;
  34. import com.fdkankan.scene.entity.VideoSceneProgress;
  35. import com.fdkankan.scene.mapper.ISceneMapper;
  36. import com.fdkankan.scene.service.ICameraDetailService;
  37. import com.fdkankan.scene.service.ICameraService;
  38. import com.fdkankan.scene.service.IPicSceneProgressService;
  39. import com.fdkankan.scene.service.ISceneCooperationService;
  40. import com.fdkankan.scene.service.IScenePlusExtService;
  41. import com.fdkankan.scene.service.IScenePlusService;
  42. import com.fdkankan.scene.service.ISceneProEditService;
  43. import com.fdkankan.scene.service.ISceneProService;
  44. import com.fdkankan.scene.service.ISceneResourceService;
  45. import com.fdkankan.scene.service.ISceneService;
  46. import com.fdkankan.scene.service.IUserIncrementService;
  47. import com.fdkankan.scene.service.IUserService;
  48. import com.fdkankan.scene.service.IVideoSceneProgressService;
  49. import com.fdkankan.web.user.SSOUser;
  50. import java.io.File;
  51. import java.util.*;
  52. import lombok.extern.slf4j.Slf4j;
  53. import org.apache.commons.lang3.StringUtils;
  54. import org.springframework.beans.factory.annotation.Autowired;
  55. import org.springframework.beans.factory.annotation.Value;
  56. import org.springframework.stereotype.Service;
  57. import org.springframework.util.ObjectUtils;
  58. /**
  59. * <p>
  60. * TODO
  61. * </p>
  62. *
  63. * @author dengsixing
  64. * @since 2022/7/4
  65. **/
  66. @Slf4j
  67. @Service
  68. public class SceneServiceImpl extends ServiceImpl<ISceneMapper, Scene> implements ISceneService {
  69. @Autowired
  70. private ISceneProService sceneProService;
  71. @Autowired
  72. private ICameraService cameraService;
  73. @Autowired
  74. private IUserIncrementService userIncrementService;
  75. @Autowired
  76. private ICameraDetailService cameraDetailService;
  77. @Autowired
  78. private IUserService userService;
  79. @Autowired
  80. private ISceneCooperationService sceneCooperationService;
  81. @Autowired
  82. private ISceneResourceService sceneResourceService;
  83. @Autowired
  84. private ISceneProEditService sceneProEditService;
  85. @Autowired
  86. private RedisUtil redisUtil;
  87. @Autowired
  88. private RedisLockUtil redisLockUtil;
  89. @Autowired
  90. private IScenePlusService scenePlusService;
  91. @Autowired
  92. private IScenePlusExtService scenePlusExtService;
  93. @Autowired
  94. private FYunFileServiceInterface fYunFileService;
  95. @Autowired
  96. private IVideoSceneProgressService videoSceneProgressService;
  97. @Autowired
  98. private IPicSceneProgressService picSceneProgressService;
  99. @Autowired
  100. private RabbitMqProducer rabbitMqProducer;
  101. @Value("${queue.modeling.queue-video-a}")
  102. private String queueVideoA;
  103. @Value("${queue.modeling.queue-pic-a}")
  104. private String queuePicA;
  105. @Value("${expected-time}")
  106. private String expectedTime;
  107. @Value("${scene.expired.month:#{null}}")
  108. private Integer expiredMonth;
  109. @Override
  110. public ResultData isLogin(String num, SSOUser ssoUser) throws Exception {
  111. if(Objects.isNull(ssoUser)){
  112. throw new BusinessException(ErrorCode.FAILURE_CODE_3004);
  113. }
  114. // 解密获得username,用于和数据库进行对比
  115. String username = ssoUser.getUserName();
  116. ScenePro sceneProEntity = sceneProService.findBySceneNum(num);
  117. if(sceneProEntity == null){
  118. throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
  119. }
  120. if(sceneProEntity.getPayStatus() != 1){
  121. throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
  122. }
  123. if(sceneProEntity.getStatus() != 1 && sceneProEntity.getStatus() != -2){
  124. throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
  125. }
  126. JSONObject jsonObject = new JSONObject();
  127. //判断本地资源是否已本删除,如果已删除,前端根据字段值为true提示用户不能使用某些功能,需要重算
  128. Date algorithmTime = sceneProEntity.getCreateTime();
  129. jsonObject.put("sourceExpired", false);
  130. if (!ObjectUtils.isEmpty(expiredMonth) && com.fdkankan.common.util.DateUtil.delay(algorithmTime, expiredMonth, Calendar.MONTH).before(new Date())) {
  131. jsonObject.put("sourceExpired", true);
  132. }
  133. List<SceneResource> exclude = new ArrayList<>();
  134. SceneResource excludeEntity = new SceneResource();
  135. excludeEntity.setKeyWord("data");
  136. exclude.add(excludeEntity);
  137. Camera camera = cameraService.findByChildName(username);
  138. jsonObject.put("exclude", exclude);
  139. jsonObject.put("include", new ArrayList<>());
  140. jsonObject.put("company", null);
  141. ResultData result = ResultData.ok(jsonObject);
  142. //判断该场景是否属于增值权益
  143. boolean isIncrement = false;
  144. //获取该相机是否有权益
  145. boolean isExpired = false;
  146. Camera sceneCamera = cameraService.getById(sceneProEntity.getCameraId());
  147. if(sceneCamera != null){
  148. UserIncrement userIncrementEntity = userIncrementService.findByCameraId(sceneCamera.getId());
  149. if(userIncrementEntity != null){
  150. if( userIncrementEntity.getIsExpired().intValue() == 0){
  151. isIncrement = true;
  152. }
  153. if(userIncrementEntity.getIsExpired().intValue() == 1){
  154. isExpired = true;
  155. }
  156. }else{
  157. try {
  158. Date date = DateUtil.string2Date("2021-09-09 00:00:00",null);
  159. //非07批次的放开
  160. String pc = sceneCamera.getSnCode().substring(0,2);
  161. if(!pc.equals("07") ){
  162. if(sceneCamera.getCreateTime()!=null && date.after(sceneCamera.getCreateTime())){
  163. isIncrement = true;
  164. isExpired = false;
  165. }
  166. }
  167. }catch (Exception e){
  168. e.printStackTrace();
  169. }
  170. }
  171. }
  172. jsonObject.put("isExpired", isExpired );
  173. jsonObject.put("isIncrement", isIncrement);
  174. //判断过期时间
  175. Date date = DateUtil.string2Date(expectedTime,null);
  176. jsonObject.put("isTransition",DateUtil.isBeforeNow2(date));
  177. if(camera != null){
  178. if(!sceneProEntity.getCameraId().equals(camera.getId())){
  179. throw new BusinessException(ErrorCode.FAILURE_CODE_5014);
  180. }
  181. CameraDetail cameraDetailEntity = cameraDetailService.findByCameraId(camera.getId());
  182. if(cameraDetailEntity.getCompanyId() != null){
  183. if(cameraDetailEntity.getCompanyId().longValue() == 1 || cameraDetailEntity.getCompanyId().longValue() == 14){
  184. jsonObject.put("exclude", new ArrayList<>());
  185. jsonObject.put("company", cameraDetailEntity.getCompanyId().longValue());
  186. }
  187. }
  188. return result;
  189. }
  190. User user = userService.findByUserName(username);
  191. if("18750226207".equals(username)){
  192. log.info("18750226207该账号默认超级管理员,可以操作所有场景");
  193. }
  194. else if(user == null || sceneProEntity.getUserId() == null || user.getId().longValue() != sceneProEntity.getUserId().longValue()){
  195. log.info("user:" + user.getId() + ",scene:" + sceneProEntity.getUserId());
  196. List<SceneCooperation> list =
  197. sceneCooperationService.list(
  198. new LambdaQueryWrapper<SceneCooperation>()
  199. .eq(SceneCooperation::getSceneNum, num));
  200. if(list != null && list.size() > 0){
  201. if(list.get(0).getUserId().longValue() != user.getId().longValue()){
  202. throw new BusinessException(ErrorCode.FAILURE_CODE_5014);
  203. }
  204. }else {
  205. throw new BusinessException(ErrorCode.FAILURE_CODE_5014);
  206. }
  207. }
  208. if(sceneProEntity.getCameraId() != null){
  209. camera = cameraService.getById(sceneProEntity.getCameraId());
  210. if(camera != null){
  211. CameraDetail cameraDetail = cameraDetailService.findByCameraId(camera.getId());
  212. if(cameraDetail.getCompanyId() != null){
  213. if(cameraDetail.getCompanyId().longValue() == 1 || cameraDetail.getCompanyId().longValue() == 14){
  214. jsonObject.put("exclude", new ArrayList<>());
  215. jsonObject.put("company", cameraDetail.getCompanyId().longValue());
  216. }
  217. }
  218. }
  219. }
  220. //权限控制完后判断若是协作账号,获取协作权限
  221. SceneCooperation sceneCooperation = sceneCooperationService.getByNum(num);
  222. //若数据为空表示可操作全部资源
  223. if(sceneCooperation == null || sceneCooperation.getUserId().longValue() != ssoUser.getId().longValue()){
  224. return result;
  225. }
  226. if(sceneProEntity.getUserId()!= null && sceneCooperation.getUserId()!= null &&
  227. sceneProEntity.getUserId().equals(sceneCooperation.getUserId())){
  228. return result;
  229. }
  230. jsonObject.put("include", sceneResourceService.findByCooperationId(sceneCooperation.getId()));
  231. return result;
  232. }
  233. @Override
  234. public ResultData sceneResourceBySceneNum(RequestSceneCooperation cooperation, SSOUser ssoUser) throws Exception {
  235. if(StrUtil.isEmpty(cooperation.getSceneNum())){
  236. throw new BusinessException(ErrorCode.FAILURE_CODE_3001);
  237. }
  238. // 解密获得username,用于和数据库进行对比
  239. String username = ssoUser.getUserName();
  240. Camera cameraEntity = cameraService.findByChildName(username);
  241. if(cameraEntity != null){
  242. return ResultData.ok();
  243. }
  244. SceneCooperation sceneCooperation = sceneCooperationService.getByNum(cooperation.getSceneNum());
  245. //若数据为空表示可操作全部资源
  246. if(sceneCooperation == null || sceneCooperation.getUserId().longValue() != ssoUser.getId().longValue()){
  247. return ResultData.ok();
  248. }
  249. ScenePro scenePro = sceneProService.findBySceneNum(cooperation.getSceneNum());
  250. if(scenePro != null && scenePro.getUserId() == sceneCooperation.getUserId().longValue()){
  251. return ResultData.ok();
  252. }
  253. return ResultData.ok(sceneResourceService.findByCooperationId(sceneCooperation.getId()));
  254. }
  255. @Override
  256. public ResultData getVoiceSound(String sceneNum) throws Exception {
  257. if(StringUtils.isEmpty(sceneNum)){
  258. throw new BusinessException(ErrorCode.FAILURE_CODE_3001);
  259. }
  260. ScenePro sceneProEntity = sceneProService.findBySceneNum(sceneNum);
  261. if(sceneProEntity == null){
  262. throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
  263. }
  264. SceneProEdit editEntity = sceneProEditService.findBySceneProId(sceneProEntity.getId());
  265. return ResultData.ok(editEntity.getScreencapVoiceSoundsync());
  266. }
  267. @Override
  268. public ResultData updateViewCount(String sceneNum) {
  269. String key = RedisKey.SCENE_VISIT_CNT;
  270. if(!redisUtil.hHasKey(key, sceneNum)){
  271. String lockKey = String.format(RedisLockKey.LOCK_SCENE_VISIT_CNT, sceneNum);
  272. boolean lock = redisLockUtil.lock(lockKey, RedisKey.EXPIRE_TIME_10_MINUTE);
  273. if(!lock){
  274. return ResultData.ok();
  275. }
  276. try {
  277. String cnt = redisUtil.hget(key, sceneNum);
  278. if(StrUtil.isEmpty(cnt)){
  279. //标记是否找到了场景,如果找到就不往下找
  280. boolean getScene = false;
  281. Integer viewCount = null;
  282. ScenePlus scenePlus = scenePlusService.getByNum(sceneNum);
  283. if(Objects.nonNull(scenePlus)){
  284. ScenePlusExt scenePlusExt = scenePlusExtService.getByScenePlusId(scenePlus.getId());
  285. viewCount = scenePlusExt.getViewCount();
  286. getScene = true;
  287. }
  288. if(!getScene){
  289. ScenePro scenePro = sceneProService.findBySceneNum(sceneNum);
  290. if(Objects.nonNull(scenePro)){
  291. viewCount = scenePro.getViewCount();
  292. getScene = true;
  293. }
  294. }
  295. if(!getScene){
  296. Scene scene = this.findByNum(sceneNum);
  297. if(Objects.nonNull(scene)){
  298. viewCount = scene.getViewCount();
  299. getScene = true;
  300. }
  301. }
  302. if(!getScene){
  303. throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
  304. }
  305. redisUtil.hset(key, sceneNum, Objects.isNull(viewCount) ? "0" : String.valueOf(viewCount));
  306. }
  307. }finally {
  308. redisLockUtil.unlockLua(lockKey);
  309. }
  310. }
  311. redisUtil.hincr(key, sceneNum, 1);
  312. return ResultData.ok();
  313. }
  314. @Override
  315. public Scene findByNum(String num) {
  316. return this.getOne(new LambdaQueryWrapper<Scene>().eq(Scene::getNum, num));
  317. }
  318. @Override
  319. public ResultData rebuildVideoScene(RequestRebuildVedioScene requestRebuildVedioScene)
  320. throws Exception {
  321. if(StrUtil.isEmpty(requestRebuildVedioScene.getSceneNum()) || StrUtil.isEmpty(requestRebuildVedioScene.getPanoId())){
  322. throw new BusinessException(ErrorCode.FAILURE_CODE_3001);
  323. }
  324. String num = requestRebuildVedioScene.getSceneNum();
  325. ScenePro sceneProEntity = sceneProService.findBySceneNum(num);
  326. Scene scene = null;
  327. String path = "";
  328. if(sceneProEntity == null){
  329. scene = this.findByNum(requestRebuildVedioScene.getSceneNum());
  330. if(scene == null){
  331. throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
  332. }else {
  333. path = ConstantFilePath.BUILD_MODEL_PATH + scene.getDataSource().split("/")[scene.getDataSource().split("/").length - 2];
  334. }
  335. }else {
  336. path = sceneProEntity.getDataSource();
  337. }
  338. //先从备份文件下拉取
  339. fYunFileService.downloadFileByCommand(sceneProEntity.getDataSource() + "_rv" + File.separator + "videoback_temp",
  340. "video/video" +sceneProEntity.getNum() + File.separator + "back" + File.separator);
  341. String backpathtemp = sceneProEntity.getDataSource() + "_rv" + File.separator + "videoback_temp";
  342. File fileback = new File(backpathtemp);
  343. File[] filebackList = fileback.listFiles();
  344. if(filebackList.length<=0){
  345. String backpath = sceneProEntity.getDataSource() + "_rv" + File.separator + "videoback";
  346. log.info("------------------" + backpath);
  347. File file = new File(backpath);
  348. //验证video 文件夹下是否有备份
  349. fYunFileService.downloadFileByCommand(sceneProEntity.getDataSource() + "_rv" + File.separator + "videoback", "video/video" +sceneProEntity.getNum() + File.separator);
  350. String name = "";
  351. Map<String,String> map = new HashMap<String,String>();
  352. file = new File(backpath);
  353. File[] fileList = file.listFiles();
  354. if(fileList.length>0){
  355. for(File f:fileList){
  356. name = f.getName();
  357. log.info("file name :" + name);
  358. map.put(sceneProEntity.getDataSource() + "_rv" + File.separator + "videoback" + File.separator + name,
  359. "video/video" +sceneProEntity.getNum() + File.separator + "back" + File.separator + name);
  360. }
  361. }
  362. //上传
  363. log.info("上传内容 ===== + " + map);
  364. fYunFileService.uploadMulFiles(map);
  365. FileUtils.deleteDirectory(backpathtemp);
  366. }
  367. //更新旧记录
  368. videoSceneProgressService.updateProgressRec(requestRebuildVedioScene);
  369. //往文件中写入值
  370. JSONObject reObject = new JSONObject();
  371. JSONObject Object = new JSONObject();
  372. Object.put("name",requestRebuildVedioScene.getPanoId());
  373. Object.put("x",requestRebuildVedioScene.getX());
  374. Object.put("y",requestRebuildVedioScene.getY());
  375. Object.put("width",requestRebuildVedioScene.getW());
  376. Object.put("height",requestRebuildVedioScene.getH());
  377. JSONArray arrayRe = new JSONArray();
  378. arrayRe.add(Object);
  379. reObject.put("required_videos",arrayRe);
  380. JSONObject hdrObject = new JSONObject();
  381. if(StringUtils.isNotEmpty(sceneProEntity.getVideos())){
  382. JSONObject object = JSONObject.parseObject(sceneProEntity.getVideos());
  383. if(object.containsKey("data")){
  384. JSONArray array = new JSONArray();
  385. array = (JSONArray) object.get("data");
  386. arrayRe = new JSONArray();
  387. if(array.size()>0){
  388. for(int i = 0; i < array.size(); i++) {
  389. JSONObject obj = (JSONObject) array.get(i);
  390. Object = new JSONObject();
  391. Object.put("name",(String) obj.get("id"));
  392. Object.put("value",(String) obj.get("value"));
  393. Object.put("fov",(String) obj.get("blend_fov"));
  394. arrayRe.add(Object);
  395. }
  396. hdrObject.put("hdr_param",arrayRe);
  397. }
  398. }
  399. }else{
  400. hdrObject.put("hdr_param","{}");
  401. }
  402. //重新计算时需要删除文件夹,否知使用缓存
  403. log.info("开始清除result");
  404. FileUtils.delAllFile(path + File.separator + "results");
  405. log.info("清除result结束");
  406. String fileId = path.split("/")[path.split("/").length - 2];
  407. log.info("fileId:" + fileId);
  408. String parametr = "";
  409. parametr += sceneProEntity.getNum() + ":;" +
  410. requestRebuildVedioScene.getPanoId();
  411. long start = System.currentTimeMillis();
  412. VideoSceneProgress videoSceneProgressEntity = new VideoSceneProgress();
  413. videoSceneProgressEntity.setSceneCode(sceneProEntity.getNum());
  414. videoSceneProgressEntity.setVideoName(requestRebuildVedioScene.getPanoId());
  415. videoSceneProgressEntity.setDataSource(sceneProEntity.getDataSource());
  416. videoSceneProgressEntity.setRebuildResult(2);
  417. videoSceneProgressEntity.setDataSource(sceneProEntity.getDataSource());
  418. videoSceneProgressEntity.setRebuildQueueStartTime(new Date());
  419. videoSceneProgressEntity.setHdrParam(hdrObject.toJSONString());
  420. videoSceneProgressEntity.setRebuildParam(reObject.toJSONString());
  421. videoSceneProgressService.save(videoSceneProgressEntity);
  422. rabbitMqProducer.sendByWorkQueue(queueVideoA, parametr);
  423. return ResultData.ok("视频场景计算中");
  424. }
  425. @Override
  426. public ResultData rebuildPicScene(RequestRebuildVedioScene requestRebuildVedioScene) throws Exception {
  427. if(StrUtil.isEmpty(requestRebuildVedioScene.getSceneNum())){
  428. throw new BusinessException(ErrorCode.FAILURE_CODE_3001);
  429. }
  430. String num = requestRebuildVedioScene.getSceneNum();
  431. ScenePro sceneProEntity = sceneProService.findBySceneNum(num);
  432. String path = "";
  433. if(sceneProEntity == null){
  434. throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
  435. }
  436. path = sceneProEntity.getDataSource();
  437. PicSceneProgress picSceneProgress = picSceneProgressService.findrebuildVideoProgressDetail(num,null);
  438. if(!ObjectUtils.isEmpty(picSceneProgress) && (picSceneProgress.getRebuildResult() == 2 || picSceneProgress.getRebuildResult() == 3)){
  439. return ResultData.error(ErrorCode.FAILURE_CODE_5035);
  440. }
  441. //更新旧记录
  442. picSceneProgressService.updateProgressRec(requestRebuildVedioScene);
  443. //重新计算时需要删除文件夹,否知使用缓存
  444. log.info("开始清除result");
  445. FileUtils.delAllFile(path + File.separator + "results");
  446. log.info("清除result结束");
  447. String fileId = path.split("/")[path.split("/").length - 2];
  448. log.info("fileId:" + fileId);
  449. PicSceneProgress picSceneProgressEntity = new PicSceneProgress();
  450. picSceneProgressEntity.setSceneCode(sceneProEntity.getNum());
  451. picSceneProgressEntity.setVideoName(requestRebuildVedioScene.getPanoId());
  452. picSceneProgressEntity.setDataSource(sceneProEntity.getDataSource());
  453. picSceneProgressEntity.setRebuildResult(2);
  454. picSceneProgressEntity.setDataSource(sceneProEntity.getDataSource());
  455. picSceneProgressEntity.setRebuildQueueStartTime(new Date());
  456. picSceneProgressEntity.setRebuildParam(JSONObject.toJSONString(requestRebuildVedioScene));
  457. picSceneProgressService.save(picSceneProgressEntity);
  458. String parametr = picSceneProgressEntity.getId()+"";
  459. rabbitMqProducer.sendByWorkQueue(queuePicA, parametr);
  460. return ResultData.ok("图片场景计算中");
  461. }
  462. }