123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- package com.fdkankan.scene.controller;
- import cn.hutool.core.io.FileUtil;
- import cn.hutool.core.util.ObjectUtil;
- 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.SceneMarkShapeDetectParamVO;
- import com.fdkankan.scene.vo.SceneMarkShapeParamVO;
- import com.fdkankan.scene.vo.SceneMarkShapeReDetectParamVO;
- import com.fdkankan.web.controller.BaseController;
- import com.fdkankan.web.response.ResultData;
- import lombok.extern.slf4j.Slf4j;
- 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.*;
- import java.util.stream.Collectors;
- /**
- * 初始化接口
- *
- * @author fdkk
- */
- @RestController
- @RequestMapping("/service/scene/sceneMarkShape")
- @Slf4j
- public class SceneMarkShapeController extends BaseController
- {
- @Value("${queue.scene.yolov5-detect-queue:#{null}}")
- 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("/trainScene")
- public ResultData trainScene(@RequestBody @Validated SceneMarkShapeReDetectParamVO param) {
- sceneMarkShapeService.trainScene(param);
- return ResultData.ok();
- }
- /**
- * 将需要重新推理的场景推入到队列
- */
- @PostMapping("/editReDetectStatus")
- public ResultData editReDetectStatus(@RequestBody @Validated SceneMarkShapeParamVO param) {
- sceneMarkShapeService.editTrainStatus(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());
- param.setUpdateTime(new Date());
- return ResultData.ok(sceneMarkShapeService.updateById(param));
- }else {
- param.setCreateTime(new Date());
- return ResultData.ok(sceneMarkShapeService.save(param));
- }
- }
- /**
- * 保存或者修改JSON
- */
- @PostMapping("/editLabel")
- public ResultData editLabel(@RequestParam(value = "num") String num,@RequestParam(value = "imgPath") String imgPath,@RequestParam("file") MultipartFile file) throws IOException {
- log.info("进入editLabel---num{},imgPath{}",num,imgPath);
- return sceneMarkShapeService.editLabelByFile(num, imgPath, file);
- }
- /**
- * 保存或者修改JSON
- */
- @PostMapping("/testquery")
- public ResultData testquery() {
- Map<String, List<SceneMarkShape>> res=new HashMap<>();
- res.put("findByReTrainStatus",sceneMarkShapeService.findByReTrainStatus(1));
- res.put("findByToTrainStatus",sceneMarkShapeService.findByToTrainStatus(0));
- return ResultData.ok(res);
- }
- }
|