From d54b83fcc1b4ef97a483e4af96bdbe350756a0b1 Mon Sep 17 00:00:00 2001 From: blankk <2649084208@qq.com> Date: Mon, 26 Sep 2022 15:21:28 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/CameraBrandController.java | 105 ++++++++++++++++++ .../com/ruoyi/code/camera/domain/Camera.java | 6 + .../ruoyi/code/camera/domain/CameraBrand.java | 39 +++++++ .../code/camera/mapper/CameraBrandMapper.java | 18 +++ .../camera/scheduled/RtspScreenshotTask.java | 60 ++++++++++ .../camera/service/ICameraBrandService.java | 21 ++++ .../service/impl/CameraBrandServiceImpl.java | 33 ++++++ 7 files changed, 282 insertions(+) create mode 100644 ruoyi-code/src/main/java/com/ruoyi/code/camera/controller/CameraBrandController.java create mode 100644 ruoyi-code/src/main/java/com/ruoyi/code/camera/domain/CameraBrand.java create mode 100644 ruoyi-code/src/main/java/com/ruoyi/code/camera/mapper/CameraBrandMapper.java create mode 100644 ruoyi-code/src/main/java/com/ruoyi/code/camera/scheduled/RtspScreenshotTask.java create mode 100644 ruoyi-code/src/main/java/com/ruoyi/code/camera/service/ICameraBrandService.java create mode 100644 ruoyi-code/src/main/java/com/ruoyi/code/camera/service/impl/CameraBrandServiceImpl.java diff --git a/ruoyi-code/src/main/java/com/ruoyi/code/camera/controller/CameraBrandController.java b/ruoyi-code/src/main/java/com/ruoyi/code/camera/controller/CameraBrandController.java new file mode 100644 index 0000000..400c11b --- /dev/null +++ b/ruoyi-code/src/main/java/com/ruoyi/code/camera/controller/CameraBrandController.java @@ -0,0 +1,105 @@ +package com.ruoyi.code.camera.controller; + +import com.ruoyi.code.camera.domain.CameraBrand; +import com.ruoyi.code.camera.service.ICameraBrandService; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.page.R; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.utils.poi.ExcelUtil; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +/** + * brandController + * + * @author ruoyi + * @date 2022-09-26 + */ +@RestController +@RequestMapping("/web/brand") +public class CameraBrandController extends BaseController +{ + @Resource + private ICameraBrandService cameraBrandService; + + /** + * 查询列表 + */ + @PreAuthorize("@ss.hasPermi('web:brand:list')") + @RequestMapping("/list") + public R list(@RequestParam Map params){ + return cameraBrandService.queryPage(params); + } + /** + * 查询列表 不带分页 + */ + @RequestMapping("/brands") + public R listBrand(){ + return R.ok().put("data",cameraBrandService.list()); + } + + /** + * 获取详细信息 + */ + @RequestMapping("/info/{id}") + @PreAuthorize("@ss.hasPermi('web:brand:query')") + public R info(@PathVariable("id") Long id){ + CameraBrand cameraBrand = cameraBrandService.getById(id); + + return R.ok().put("data", cameraBrand); + } + + + /** + * 导出列表 + */ + @PreAuthorize("@ss.hasPermi('web:brand:export')") + @Log(title = "列表", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, CameraBrand cameraBrand) + { + List list = cameraBrandService.list(); + ExcelUtil util = new ExcelUtil(CameraBrand.class); + util.exportExcel(response, list, "列表数据"); + } + + /** + * 新增 + */ + @RequestMapping("/add") + @Log(title = "CameraBrand", businessType = BusinessType.INSERT) + @PreAuthorize("@ss.hasPermi('web:brand:add')") + public R add(@RequestBody CameraBrand cameraBrand){ + cameraBrandService.save(cameraBrand); + return R.ok(); + } + + /** + * 修改 + */ + @RequestMapping("/edit") + @PreAuthorize("@ss.hasPermi('web:brand:edit')") + @Log(title = "CameraBrand", businessType = BusinessType.UPDATE) + public R edit(@RequestBody CameraBrand cameraBrand){ + cameraBrandService.updateById(cameraBrand); + return R.ok(); + } + + /** + * 删除 + */ + @RequestMapping("/delete/{ids}") + @PreAuthorize("@ss.hasPermi('web:brand:remove')") + @Log(title = "CameraBrand", businessType = BusinessType.DELETE) + public R delete(@PathVariable Long[] ids){ + cameraBrandService.removeByIds(Arrays.asList(ids)); + return R.ok(); + } + +} diff --git a/ruoyi-code/src/main/java/com/ruoyi/code/camera/domain/Camera.java b/ruoyi-code/src/main/java/com/ruoyi/code/camera/domain/Camera.java index ea238cc..644e3b4 100644 --- a/ruoyi-code/src/main/java/com/ruoyi/code/camera/domain/Camera.java +++ b/ruoyi-code/src/main/java/com/ruoyi/code/camera/domain/Camera.java @@ -64,4 +64,10 @@ public class Camera implements Serializable private Date updateTime; private Long platformId; + + /** 接入方式 0-4G/5G 1-网络 */ + private Long accessType; + + /** 摄像机品牌,关联品牌表 */ + private Long brand; } diff --git a/ruoyi-code/src/main/java/com/ruoyi/code/camera/domain/CameraBrand.java b/ruoyi-code/src/main/java/com/ruoyi/code/camera/domain/CameraBrand.java new file mode 100644 index 0000000..f645d8f --- /dev/null +++ b/ruoyi-code/src/main/java/com/ruoyi/code/camera/domain/CameraBrand.java @@ -0,0 +1,39 @@ +package com.ruoyi.code.camera.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.TableId; +import com.ruoyi.common.annotation.Excel; +import java.io.Serializable; +import lombok.Data; + + +/** + * brand对象 camera_brand + * + * @author ruoyi + * @date 2022-09-26 + */ +@Data +@TableName("camera_brand") +public class CameraBrand implements Serializable +{ + private static final long serialVersionUID = 1L; + + /** id */ + @TableId(type = IdType.INPUT) + private Long id; + + /** 品牌名称 */ + private String name; + + /** 品牌型号 */ + private String model; + + /** rtsp地址 */ + private String rtsp; + + +} diff --git a/ruoyi-code/src/main/java/com/ruoyi/code/camera/mapper/CameraBrandMapper.java b/ruoyi-code/src/main/java/com/ruoyi/code/camera/mapper/CameraBrandMapper.java new file mode 100644 index 0000000..7095300 --- /dev/null +++ b/ruoyi-code/src/main/java/com/ruoyi/code/camera/mapper/CameraBrandMapper.java @@ -0,0 +1,18 @@ +package com.ruoyi.code.camera.mapper; + +import java.util.List; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import com.ruoyi.code.camera.domain.CameraBrand; + +/** + * Mapper接口 + * + * @author ruoyi + * @date 2022-09-26 + */ +@Mapper +public interface CameraBrandMapper extends BaseMapper +{ + +} diff --git a/ruoyi-code/src/main/java/com/ruoyi/code/camera/scheduled/RtspScreenshotTask.java b/ruoyi-code/src/main/java/com/ruoyi/code/camera/scheduled/RtspScreenshotTask.java new file mode 100644 index 0000000..233212a --- /dev/null +++ b/ruoyi-code/src/main/java/com/ruoyi/code/camera/scheduled/RtspScreenshotTask.java @@ -0,0 +1,60 @@ +package com.ruoyi.code.camera.scheduled; + +import cn.hutool.core.util.RuntimeUtil; +import com.ruoyi.code.camera.domain.Camera; +import com.ruoyi.code.camera.domain.CameraBrand; +import com.ruoyi.code.camera.service.ICameraBrandService; +import com.ruoyi.code.camera.service.ICameraService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.io.File; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +@Component +@Configuration +@EnableScheduling +public class RtspScreenshotTask { + + @Autowired + private ICameraService cameraService; + + @Autowired + private ICameraBrandService iCameraBrandService; + + @Scheduled(cron = "0 0/5 * * * ?") +// @Scheduled(cron = "0/5 * * * * ?") + public void rtspScreenshot(){ + List strList = new ArrayList<>(); + String path = "D:" + File.separator + File.separator + "upload" + File.separator; + String ip = "192.168.1.40"; + String userName = "admin"; + String pwd = "admin123"; + + String currentDate = new SimpleDateFormat("yyyy-MM-dd").format(new Date()) + File.separator; + String currentTime = new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss").format(new Date()) + ".jpg"; + + List list = cameraService.list(); + + for (Camera camera : list) { + CameraBrand cameraBrand = iCameraBrandService.getById(camera.getBrand()); + String fileName = path+camera.getDevsn()+File.separator+currentDate; + File file = new File(fileName); + if (!file.exists()) { + file.mkdirs(); + } + String ffmpeg = +"ffmpeg -i \"rtsp://"+userName+":"+pwd+"@"+ip+cameraBrand.getRtsp()+"\" -y -f image2 -t 0.001 \""+fileName+currentTime+"\""; + strList.add(ffmpeg); + } + for (String s : strList) { + RuntimeUtil.execForStr(s); + } + } +} diff --git a/ruoyi-code/src/main/java/com/ruoyi/code/camera/service/ICameraBrandService.java b/ruoyi-code/src/main/java/com/ruoyi/code/camera/service/ICameraBrandService.java new file mode 100644 index 0000000..8cd4a09 --- /dev/null +++ b/ruoyi-code/src/main/java/com/ruoyi/code/camera/service/ICameraBrandService.java @@ -0,0 +1,21 @@ +package com.ruoyi.code.camera.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.common.core.page.R; +import java.util.Map; +import com.ruoyi.code.camera.domain.CameraBrand; + +/** + * Service接口 + * + * @author ruoyi + * @date 2022-09-26 + */ +public interface ICameraBrandService extends IService +{ + /** + * 查询 + */ + R queryPage(Map params); + +} diff --git a/ruoyi-code/src/main/java/com/ruoyi/code/camera/service/impl/CameraBrandServiceImpl.java b/ruoyi-code/src/main/java/com/ruoyi/code/camera/service/impl/CameraBrandServiceImpl.java new file mode 100644 index 0000000..5f16090 --- /dev/null +++ b/ruoyi-code/src/main/java/com/ruoyi/code/camera/service/impl/CameraBrandServiceImpl.java @@ -0,0 +1,33 @@ +package com.ruoyi.code.camera.service.impl; + +import java.util.Map; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.common.core.page.R; +import com.ruoyi.common.utils.Query; +import org.springframework.stereotype.Service; +import com.ruoyi.code.camera.mapper.CameraBrandMapper; +import com.ruoyi.code.camera.domain.CameraBrand; +import com.ruoyi.code.camera.service.ICameraBrandService; + +/** + * Service业务层处理 + * + * @author ruoyi + * @date 2022-09-26 + */ +@Service("cameraBrandService") +public class CameraBrandServiceImpl extends ServiceImpl implements ICameraBrandService +{ + @Override + public R queryPage(Map params) { + IPage page = this.page( + new Query().getPage(params), + new QueryWrapper() + ); + + return R.ok().put("count", page.getTotal()).put("data", page.getRecords()); + } + +}