package com.iden.bms.controller; import com.iden.bms.service.TraceService; import com.iden.common.annotation.Permission; import com.iden.common.exception.BDException; import com.iden.common.logaspect.LogAnnotation; import com.iden.common.logaspect.OperateType; import com.iden.common.util.Result; import com.iden.common.util.WebPageUtils; import com.iden.common.vo.CameraVideoVO; import com.iden.common.vo.TraceVO; import com.iden.common.vo.UserLoginedConvertVO; import io.swagger.annotations.*; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.List; import java.util.Map; /** * @Author: lilt * @Date: 2021/5/26 * @Desc: */ @RestController @Api(value = "TraceController", tags = { "轨迹管理" }) @Slf4j @RequestMapping("/bms/trace") @Permission public class TraceController { @Autowired private TraceService traceService; @ApiOperation(value = "图像上传") @ApiImplicitParams({ @ApiImplicitParam(name = "token", value = "放在请求头中的令牌", dataType = "String", paramType = "header", required = true) }) @CrossOrigin @PostMapping(value = "/uploadImage", headers="content-type=multipart/form-data",produces = "application/json;charset=UTF-8") @LogAnnotation( type = OperateType.UPLOAD, moduleName = "上传图像获取目标轨迹", description = "上传图像获取目标轨迹" ) public Result uploadImage(@ApiParam(value="图像",required=true) MultipartFile file, HttpServletRequest request, @RequestHeader(name = "token") String token) { try { String imageUrl = traceService.uploadImage(file); return Result.success("上传成功!",imageUrl); } catch (BDException e) { log.error("图像上传出现异常",e); return Result.error(e.getMessage()); } catch (Exception e) { log.error("轨迹管理: 图像上传出现异常",e); return Result.error("图像上传失败!"); } } @GetMapping("/listUploadImagesTrace") @ApiOperation(value = "使用上传图像获取目标轨迹列表(地图打点划线) ") @ApiImplicitParams(value = { @ApiImplicitParam(paramType = "query", name = "imageNames", value = "图像名称,多个用逗号分割,格式: 新名字__老名字,新名字__老名字,新名字__老名字"), @ApiImplicitParam(paramType = "query", name = "beginTime", value = "开始时间(yyyy-MM-dd HH:mm:ss)"), @ApiImplicitParam(paramType = "query", name = "endTime", value = "结束时间(yyyy-MM-dd HH:mm:ss)") }) public Result>> listUploadImagesTrace(HttpServletRequest request, @RequestHeader(value = "token") String token, @RequestParam(value = "imageNames", required = true) String imageNames, @RequestParam(value = "beginTime", required = false) String beginTime, @RequestParam(value = "endTime", required = false) String endTime){ try { UserLoginedConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request); Map> datas = this.traceService.listUploadImagesTrace(imageNames,beginTime,endTime,loginUser); return Result.success(datas); }catch (Exception e) { log.error("轨迹管理: 使用上传图像获取目标轨迹列表出现异常",e); return Result.error( "获取列表失败"); } } @GetMapping("/getCameraVideoList") @ApiOperation(value = "获取摄像机视频列表") @ApiImplicitParams(value = { @ApiImplicitParam(paramType = "query", name = "cameraId", value = "摄像机ID",required = true), @ApiImplicitParam(paramType = "query", name = "uid", value = "唯一生物学标识"), @ApiImplicitParam(paramType = "query", name = "beginTime", value = "开始时间(yyyy-MM-dd HH:mm:ss"), @ApiImplicitParam(paramType = "query", name = "endTime", value = "结束时间(yyyy-MM-dd HH:mm:ss)") }) public Result> getCameraVideoList(HttpServletRequest request, @RequestHeader("token") String token, @RequestParam(value = "cameraId", required = true) Long cameraId, @RequestParam(value = "uid", required = false) Long uid, @RequestParam(value = "beginTime", required = false) String beginTime, @RequestParam(value = "endTime", required = false) String endTime){ List datas = this.traceService.getCameraVideoList(cameraId,uid,beginTime,endTime); return Result.success("查询成功!",datas); } /** * 轨迹下载 * @param * @return */ @ApiOperation(value = "轨迹下载") @PostMapping({"/exportToExcel"}) @LogAnnotation( type = OperateType.EXPORT, moduleName = "轨迹下载", description = "轨迹下载" ) public void exportToExcel( HttpServletRequest request,@RequestHeader(name = "token", required = true) String token, HttpServletResponse response, @RequestBody Map> traceVOSMap) { try { UserLoginedConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request); this.traceService.exportToExcel(traceVOSMap,loginUser ,response); } catch (BDException e) { log.error("轨迹下载出现异常",e); } catch (Exception e) { log.error("轨迹管理: 轨迹下载出现异常",e); } } @GetMapping("/cutVideo") @ApiOperation(value = "剪辑视频 ") @ApiImplicitParams(value = { @ApiImplicitParam(paramType = "query", name = "videoId", value = "视频ID",required = true), @ApiImplicitParam(paramType = "query", name = "beginTime", value = "开始时间(HH:mm:ss)",required = true), @ApiImplicitParam(paramType = "query", name = "endTime", value = "结束时间(HH:mm:ss)",required = true) }) public Result cutVideo(HttpServletRequest request, @RequestHeader(value = "token") String token, @RequestParam(value = "videoId", required = true) Long videoId, @RequestParam(value = "beginTime", required = true) String beginTime, @RequestParam(value = "endTime", required = true) String endTime){ try { UserLoginedConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request); String datas = this.traceService.cutVideo(videoId,beginTime,endTime,loginUser); return Result.success("剪辑成功",datas); }catch (Exception e) { log.error("轨迹管理: 剪辑视频出现异常",e); return Result.error( "剪辑视频失败"); } } }