SceneMarkShapeController.java 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. package com.fdkankan.scene.controller;
  2. import cn.hutool.core.io.FileUtil;
  3. import cn.hutool.core.util.ObjectUtil;
  4. import com.fdkankan.common.constant.CommonOperStatus;
  5. import com.fdkankan.fyun.face.FYunFileServiceInterface;
  6. import com.fdkankan.model.constants.UploadFilePath;
  7. import com.fdkankan.rabbitmq.util.RabbitMqProducer;
  8. import com.fdkankan.scene.entity.SceneMarkShape;
  9. import com.fdkankan.scene.entity.ScenePlus;
  10. import com.fdkankan.scene.entity.ScenePlusExt;
  11. import com.fdkankan.scene.service.ISceneMarkShapeService;
  12. import com.fdkankan.scene.service.IScenePlusExtService;
  13. import com.fdkankan.scene.service.IScenePlusService;
  14. import com.fdkankan.scene.vo.FileParamVO;
  15. import com.fdkankan.scene.vo.SceneMarkShapeDetectParamVO;
  16. import com.fdkankan.scene.vo.SceneMarkShapeParamVO;
  17. import com.fdkankan.web.controller.BaseController;
  18. import com.fdkankan.web.response.Result;
  19. import com.fdkankan.web.response.ResultData;
  20. import org.springframework.beans.factory.annotation.Autowired;
  21. import org.springframework.beans.factory.annotation.Value;
  22. import org.springframework.validation.annotation.Validated;
  23. import org.springframework.web.bind.annotation.*;
  24. import org.springframework.web.multipart.MultipartFile;
  25. import javax.annotation.Resource;
  26. import java.io.IOException;
  27. import java.util.HashMap;
  28. import java.util.List;
  29. import java.util.Map;
  30. import java.util.Objects;
  31. import java.util.stream.Collectors;
  32. /**
  33. * 初始化接口
  34. *
  35. * @author fdkk
  36. */
  37. @RestController
  38. @RequestMapping("/service/scene/sceneMarkShape")
  39. public class SceneMarkShapeController extends BaseController
  40. {
  41. @Value("${queue.scene.yolov5-detect-queue}")
  42. private String yolov5DetectQueue;
  43. @Autowired
  44. private ISceneMarkShapeService sceneMarkShapeService;
  45. @Resource
  46. private FYunFileServiceInterface fYunFileService;
  47. @Autowired
  48. private IScenePlusService scenePlusService;
  49. @Autowired
  50. private IScenePlusExtService scenePlusExtService;
  51. @Value("${fyun.host}")
  52. private String ossUrlPrefix;
  53. @Autowired
  54. private RabbitMqProducer rabbitMqProducer;
  55. @Value("${main.url}")
  56. private String mainUrl;
  57. /**
  58. * 获取场景全景图路径连接
  59. */
  60. @PostMapping("/getPanorama")
  61. public ResultData getPanorama(@RequestBody @Validated SceneMarkShapeParamVO param) {
  62. ScenePlus scenePlus = scenePlusService.getScenePlusByNum(param.getNum());
  63. if(ObjectUtil.isNotNull(scenePlus)) {
  64. ScenePlusExt scenePlusExt = scenePlusExtService.getScenePlusExtByPlusId(scenePlus.getId());
  65. if (ObjectUtil.isNotNull(scenePlus)) {
  66. String publicUserPath = String.format(UploadFilePath.scene_result_data_path, param.getNum());
  67. List<String> panoramaList = fYunFileService.listRemoteFiles(scenePlusExt.getYunFileBucket(), publicUserPath + "caches/images/");
  68. List<String> panoramaListUrl = panoramaList.stream().filter(f -> FileUtil.extName(f).equals("jpg")).map(s -> ossUrlPrefix + s).collect(Collectors.toList());
  69. return ResultData.ok(panoramaListUrl);
  70. }
  71. }
  72. return ResultData.ok("场景数据不存在");
  73. }
  74. /**
  75. * 根据场景码和图片名称获取数据
  76. */
  77. @PostMapping("/getInfo")
  78. public ResultData getInfo(@RequestBody @Validated SceneMarkShapeParamVO param) {
  79. SceneMarkShape res= sceneMarkShapeService.findByNumAndImagePath(param.getNum(),param.getImagePath());
  80. return ResultData.ok(res);
  81. }
  82. /**
  83. * 将需要推理的场景推入到队列
  84. */
  85. @PostMapping("/detectScene")
  86. public ResultData detect(@RequestBody @Validated SceneMarkShapeDetectParamVO param) {
  87. param.setWebSite(mainUrl);
  88. rabbitMqProducer.sendByWorkQueue(yolov5DetectQueue, param);
  89. return ResultData.ok();
  90. }
  91. /**
  92. * 保存或者修改
  93. */
  94. @PostMapping("/saveOrEdit")
  95. public ResultData save(@RequestParam(value = "num") String num,@RequestParam("file") MultipartFile file) throws IOException {
  96. sceneMarkShapeService.saveFileToDB(file,num);
  97. return ResultData.ok();
  98. }
  99. /**
  100. * 保存或者修改JSON
  101. */
  102. @PostMapping("/saveOrEditJson")
  103. public ResultData saveOrEditJson(@RequestBody SceneMarkShape param) {
  104. SceneMarkShape shape = sceneMarkShapeService.findByNumAndImagePath(param.getNum(), param.getImagePath());
  105. if (ObjectUtil.isNotNull(shape)){
  106. param.setId(shape.getId());
  107. return ResultData.ok(sceneMarkShapeService.updateById(shape));
  108. }else {
  109. return ResultData.ok(sceneMarkShapeService.save(shape));
  110. }
  111. }
  112. }