123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- package com.fdkankan.scene.controller;
- import cn.hutool.core.io.FileUtil;
- import cn.hutool.core.util.ObjectUtil;
- import com.fdkankan.common.constant.CommonOperStatus;
- import com.fdkankan.fyun.face.FYunFileServiceInterface;
- import com.fdkankan.model.constants.UploadFilePath;
- import com.fdkankan.rabbitmq.util.RabbitMqProducer;
- import com.fdkankan.scene.entity.SceneMarkShape;
- import com.fdkankan.scene.entity.ScenePlus;
- import com.fdkankan.scene.entity.ScenePlusExt;
- import com.fdkankan.scene.service.ISceneMarkShapeService;
- import com.fdkankan.scene.service.IScenePlusExtService;
- import com.fdkankan.scene.service.IScenePlusService;
- import com.fdkankan.scene.vo.FileParamVO;
- import com.fdkankan.scene.vo.SceneMarkShapeDetectParamVO;
- import com.fdkankan.scene.vo.SceneMarkShapeParamVO;
- import com.fdkankan.web.controller.BaseController;
- import com.fdkankan.web.response.Result;
- import com.fdkankan.web.response.ResultData;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.validation.annotation.Validated;
- import org.springframework.web.bind.annotation.*;
- import org.springframework.web.multipart.MultipartFile;
- import javax.annotation.Resource;
- import java.io.IOException;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import java.util.Objects;
- import java.util.stream.Collectors;
- /**
- * 初始化接口
- *
- * @author fdkk
- */
- @RestController
- @RequestMapping("/service/scene/sceneMarkShape")
- public class SceneMarkShapeController extends BaseController
- {
- @Value("${queue.scene.yolov5-detect-queue}")
- private String yolov5DetectQueue;
- @Autowired
- private ISceneMarkShapeService sceneMarkShapeService;
- @Resource
- private FYunFileServiceInterface fYunFileService;
- @Autowired
- private IScenePlusService scenePlusService;
- @Autowired
- private IScenePlusExtService scenePlusExtService;
- @Value("${fyun.host}")
- private String ossUrlPrefix;
- @Autowired
- private RabbitMqProducer rabbitMqProducer;
- @Value("${main.url}")
- private String mainUrl;
- /**
- * 获取场景全景图路径连接
- */
- @PostMapping("/getPanorama")
- public ResultData getPanorama(@RequestBody @Validated SceneMarkShapeParamVO param) {
- ScenePlus scenePlus = scenePlusService.getScenePlusByNum(param.getNum());
- if(ObjectUtil.isNotNull(scenePlus)) {
- ScenePlusExt scenePlusExt = scenePlusExtService.getScenePlusExtByPlusId(scenePlus.getId());
- if (ObjectUtil.isNotNull(scenePlus)) {
- String publicUserPath = String.format(UploadFilePath.scene_result_data_path, param.getNum());
- List<String> panoramaList = fYunFileService.listRemoteFiles(scenePlusExt.getYunFileBucket(), publicUserPath + "caches/images/");
- List<String> panoramaListUrl = panoramaList.stream().filter(f -> FileUtil.extName(f).equals("jpg")).map(s -> ossUrlPrefix + s).collect(Collectors.toList());
- return ResultData.ok(panoramaListUrl);
- }
- }
- return ResultData.ok("场景数据不存在");
- }
- /**
- * 根据场景码和图片名称获取数据
- */
- @PostMapping("/getInfo")
- public ResultData getInfo(@RequestBody @Validated SceneMarkShapeParamVO param) {
- SceneMarkShape res= sceneMarkShapeService.findByNumAndImagePath(param.getNum(),param.getImagePath());
- return ResultData.ok(res);
- }
- /**
- * 将需要推理的场景推入到队列
- */
- @PostMapping("/detectScene")
- public ResultData detect(@RequestBody @Validated SceneMarkShapeDetectParamVO param) {
- param.setWebSite(mainUrl);
- rabbitMqProducer.sendByWorkQueue(yolov5DetectQueue, param);
- return ResultData.ok();
- }
- /**
- * 保存或者修改
- */
- @PostMapping("/saveOrEdit")
- public ResultData save(@RequestParam(value = "num") String num,@RequestParam("file") MultipartFile file) throws IOException {
- sceneMarkShapeService.saveFileToDB(file,num);
- return ResultData.ok();
- }
- /**
- * 保存或者修改JSON
- */
- @PostMapping("/saveOrEditJson")
- public ResultData saveOrEditJson(@RequestBody SceneMarkShape param) {
- SceneMarkShape shape = sceneMarkShapeService.findByNumAndImagePath(param.getNum(), param.getImagePath());
- if (ObjectUtil.isNotNull(shape)){
- param.setId(shape.getId());
- return ResultData.ok(sceneMarkShapeService.updateById(shape));
- }else {
- return ResultData.ok(sceneMarkShapeService.save(shape));
- }
- }
- }
|