package com.ruoyi.media.controller; import java.util.List; import java.util.Map; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.device.camera.domain.CameraCmd; import com.ruoyi.device.camera.service.ICameraSdkService; import com.ruoyi.media.service.IMediaService; import com.ruoyi.media.service.impl.MediaServiceImpl; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.media.domain.Vtdu; import com.ruoyi.media.service.IVtduService; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.core.page.TableDataInfo; /** * 流媒体管理Controller * * @author ard * @date 2023-08-29 */ @RestController @RequestMapping("/vtdu/media") public class VtduController extends BaseController { @Autowired private IVtduService vtduService; @Resource private IMediaService mediaService; @Resource private ICameraSdkService cameraSdkService; /** * 查询流媒体管理列表 */ @PreAuthorize("@ss.hasPermi('vtdu:media:list')") @GetMapping("/list") public TableDataInfo list(Vtdu vtdu) { startPage(); List list = vtduService.selectVtduList(vtdu); return getDataTable(list); } /** * 导出流媒体管理列表 */ @PreAuthorize("@ss.hasPermi('vtdu:media:export')") @Log(title = "流媒体管理", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, Vtdu vtdu) { List list = vtduService.selectVtduList(vtdu); ExcelUtil util = new ExcelUtil(Vtdu.class); util.exportExcel(response, list, "流媒体管理数据"); } /** * 获取流媒体管理详细信息 */ @PreAuthorize("@ss.hasPermi('vtdu:media:query')") @GetMapping(value = "/{name}") public AjaxResult getInfo(@PathVariable("name") String name) { Vtdu vtdu = vtduService.selectVtduByName(name); if (vtdu != null) { String cameraId = name.split("_")[0]; Integer chanNo = Integer.valueOf(name.split("_")[1]); CameraCmd cmd = new CameraCmd(cameraId, chanNo); Map videoCompressionCfg = cameraSdkService.getVideoCompressionCfg(cmd); String videoEncType = (String) videoCompressionCfg.get("videoEncType"); if (videoEncType != null) { if (!videoEncType.equals("标准h264")) { vtdu.setIsCode("1"); } else { vtdu.setIsCode("0"); } } else { vtdu.setIsCode("0"); } //流媒体不存在新增,存在更新 if (!mediaService.checkNameExist(name)) { mediaService.addPath(name, vtdu.getRtspSource(), vtdu.getMode(), vtdu.getIsCode()); } else { vtduService.updateVtdu(vtdu); } } return success(vtdu); } /** * 新增流媒体管理 */ @PreAuthorize("@ss.hasPermi('vtdu:media:add')") @Log(title = "流媒体管理", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody Vtdu vtdu) { if (StringUtils.isEmpty(vtdu.getName())) { return AjaxResult.error("通道名称不能为空"); } if (StringUtils.isEmpty(vtdu.getRtspSource())) { return AjaxResult.error("rtsp地址不能为空"); } return toAjax(vtduService.insertVtdu(vtdu)); } /** * 修改流媒体管理 */ @PreAuthorize("@ss.hasPermi('vtdu:media:edit')") @Log(title = "流媒体管理", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody Vtdu vtdu) { return toAjax(vtduService.updateVtdu(vtdu)); } /** * 删除流媒体管理 */ @PreAuthorize("@ss.hasPermi('vtdu:media:remove')") @Log(title = "流媒体管理", businessType = BusinessType.DELETE) @DeleteMapping("/{names}") public AjaxResult remove(@PathVariable String[] names) { return toAjax(vtduService.deleteVtduByNames(names)); } }