From ebeb51ea9b85701ad3e5ab21c63879895d80fa39 Mon Sep 17 00:00:00 2001 From: cwchen <1048842385@qq.com> Date: Wed, 24 Dec 2025 17:35:41 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=86=E9=A2=91=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/controller/data/LineController.java | 52 ++++++++++ .../bonus/web/service/data/LineService.java | 94 +++++++++++++++++++ .../bonus/common/domain/data/dto/LineDto.java | 67 +++++++++++++ .../common/domain/data/dto/ParamsDto.java | 2 +- .../bonus/common/domain/data/vo/LineVo.java | 61 ++++++++++++ .../bonus/common/domain/data/vo/StreamVo.java | 19 ++++ .../com/bonus/data/mapper/DLineMapper.java | 45 +++++++++ .../com/bonus/data/service/DILineService.java | 42 +++++++++ .../data/service/impl/DLineServiceImpl.java | 40 ++++++++ .../src/main/resources/mapper/DLineMapper.xml | 48 ++++++++++ 10 files changed, 469 insertions(+), 1 deletion(-) create mode 100644 bonus-admin/src/main/java/com/bonus/web/controller/data/LineController.java create mode 100644 bonus-admin/src/main/java/com/bonus/web/service/data/LineService.java create mode 100644 bonus-common/src/main/java/com/bonus/common/domain/data/dto/LineDto.java create mode 100644 bonus-common/src/main/java/com/bonus/common/domain/data/vo/LineVo.java create mode 100644 bonus-common/src/main/java/com/bonus/common/domain/data/vo/StreamVo.java create mode 100644 bonus-data/src/main/java/com/bonus/data/mapper/DLineMapper.java create mode 100644 bonus-data/src/main/java/com/bonus/data/service/DILineService.java create mode 100644 bonus-data/src/main/java/com/bonus/data/service/impl/DLineServiceImpl.java create mode 100644 bonus-data/src/main/resources/mapper/DLineMapper.xml diff --git a/bonus-admin/src/main/java/com/bonus/web/controller/data/LineController.java b/bonus-admin/src/main/java/com/bonus/web/controller/data/LineController.java new file mode 100644 index 0000000..47d1d3c --- /dev/null +++ b/bonus-admin/src/main/java/com/bonus/web/controller/data/LineController.java @@ -0,0 +1,52 @@ +package com.bonus.web.controller.data; + +import com.bonus.common.annotation.RequiresPermissions; +import com.bonus.common.annotation.SysLog; +import com.bonus.common.core.domain.AjaxResult; +import com.bonus.common.domain.data.dto.LineDto; +import com.bonus.common.domain.data.dto.ParamsDto; +import com.bonus.common.enums.OperaType; +import com.bonus.web.service.data.LineService; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +/** + * @className:LineController + * @author:cwchen + * @date:2025-12-24-15:34 + * @version:1.0 + * @description:画线-web层 + */ +@RestController +@RequestMapping("/data/line") +public class LineController { + + @Resource(name = "LineService") + private LineService lineService; + + @ApiOperation(notes = "查询初始线的位置",value = "查询初始线的位置") + @RequiresPermissions("data:line:detail") + @GetMapping("/getLineDetail") + @SysLog(title = "设备管理", businessType = OperaType.QUERY, logType = 1, module = "设备管理->视频管理", details = "查询初始线的位置") + public AjaxResult getLineDetail(ParamsDto dto) { + return lineService.getLineDetail(dto); + } + + @ApiOperation(notes = "更新画线位置",value = "更新画线位置") + @RequiresPermissions("data:line:update") + @PostMapping("/updateLine") + @SysLog(title = "设备管理", businessType = OperaType.UPDATE, logType = 1, module = "设备管理->视频管理", details = "更新画线位置") + public AjaxResult updateLine(@RequestBody LineDto dto) { + return lineService.updateLine(dto); + } + + @ApiOperation(notes = "获取设备视频流",value = "获取设备视频流") + @RequiresPermissions("data:line:detail") + @GetMapping("/getVideoStream") + @SysLog(title = "设备管理", businessType = OperaType.QUERY, logType = 1, module = "设备管理->视频管理", details = "获取设备视频流") + public AjaxResult getVideoStreamAPI(ParamsDto dto) { + return lineService.getVideoStreamAPI(dto); + } +} diff --git a/bonus-admin/src/main/java/com/bonus/web/service/data/LineService.java b/bonus-admin/src/main/java/com/bonus/web/service/data/LineService.java new file mode 100644 index 0000000..f322617 --- /dev/null +++ b/bonus-admin/src/main/java/com/bonus/web/service/data/LineService.java @@ -0,0 +1,94 @@ +package com.bonus.web.service.data; + +import com.bonus.common.core.domain.AjaxResult; +import com.bonus.common.domain.admin.dto.TeamDto; +import com.bonus.common.domain.data.dto.LineDto; +import com.bonus.common.domain.data.dto.ParamsDto; +import com.bonus.common.domain.data.vo.LineVo; +import com.bonus.common.domain.data.vo.StreamVo; +import com.bonus.common.utils.ValidatorsUtils; +import com.bonus.data.service.DILineService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.interceptor.TransactionAspectSupport; + +import javax.annotation.Resource; + +/** + * @className:LineService + * @author:cwchen + * @date:2025-12-24-15:35 + * @version:1.0 + * @description:画线-业务逻辑层 + */ +@Service(value = "LineService") +@Slf4j +public class LineService { + + @Resource(name = "DILineService") + private DILineService lineService; + + @Resource(name = "ValidatorsUtils") + private ValidatorsUtils validatorsUtils; + + /** + * 查询初始线的位置 + * @param dto + * @return AjaxResult + * @author cwchen + * @date 2025/12/24 15:41 + */ + public AjaxResult getLineDetail(ParamsDto dto) { + LineVo vo = null; + try { + vo = lineService.getLineDetail(dto); + } catch (Exception e) { + log.error(e.toString(),e); + } + return AjaxResult.success(vo); + } + + /** + * 更新线的位置 + * @param dto + * @return AjaxResult + * @author cwchen + * @date 2025/12/24 16:11 + */ + @Transactional(rollbackFor = Exception.class) + public AjaxResult updateLine(LineDto dto) { + // 校验数据是否合法 + String validResult = validatorsUtils.valid(dto, LineDto.ADD.class); + if (StringUtils.isNotBlank(validResult)) { + return AjaxResult.error(validResult); + } + try { + // 1.添加线的位置 + lineService.addLineData(dto); + } catch (Exception e) { + log.error(e.toString(), e); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + return AjaxResult.error(); + } + return AjaxResult.success(); + } + + /** + * 获取设备视频流 + * @param dto + * @return AjaxResult + * @author cwchen + * @date 2025/12/24 16:29 + */ + public AjaxResult getVideoStreamAPI(ParamsDto dto) { + StreamVo vo = null; + try { + vo = lineService.getVideoStreamAPI(dto); + } catch (Exception e) { + log.error(e.toString(),e); + } + return AjaxResult.success(vo); + } +} diff --git a/bonus-common/src/main/java/com/bonus/common/domain/data/dto/LineDto.java b/bonus-common/src/main/java/com/bonus/common/domain/data/dto/LineDto.java new file mode 100644 index 0000000..fe0456d --- /dev/null +++ b/bonus-common/src/main/java/com/bonus/common/domain/data/dto/LineDto.java @@ -0,0 +1,67 @@ +package com.bonus.common.domain.data.dto; + +import lombok.Data; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotBlank; +import java.util.Date; + +/** + * @className:LineDto + * @author:cwchen + * @date:2025-12-24-15:32 + * @version:1.0 + * @description:画线-dto + */ +@Data +public class LineDto { + + /** + * 线id + */ + private Long lineId; + + /** + * 系统id + */ + private Long systemId = 1L; + + /** + * 开始位置-X坐标 + */ + @NotBlank(message = "开始位置-X坐标不能为空", groups = {ADD.class}) + @Length(max = 32, message = "开始位置-X坐标字符长度不能超过32", groups = {ADD.class}) + private String startX; + + /** + * 开始位置-Y坐标 + */ + @NotBlank(message = "开始位置-Y坐标不能为空", groups = {ADD.class}) + @Length(max = 32, message = "开始位置-Y坐标字符长度不能超过32", groups = {ADD.class}) + private String startY; + + /** + * 结束位置-X坐标 + */ + @NotBlank(message = "结束位置-X坐标不能为空", groups = {ADD.class}) + @Length(max = 32, message = "结束位置-X坐标字符长度不能超过32", groups = {ADD.class}) + private String endX; + + /** + * 结束位置-Y坐标 + */ + @NotBlank(message = "结束位置-Y坐标不能为空", groups = {ADD.class}) + @Length(max = 32, message = "结束位置-Y坐标字符长度不能超过32", groups = {ADD.class}) + private String endY; + + /** + * 画线时间 + */ + private Date lineTime = new Date(); + + /** + * 新增条件限制 + */ + public interface ADD { + } +} diff --git a/bonus-common/src/main/java/com/bonus/common/domain/data/dto/ParamsDto.java b/bonus-common/src/main/java/com/bonus/common/domain/data/dto/ParamsDto.java index fed167b..218fc4b 100644 --- a/bonus-common/src/main/java/com/bonus/common/domain/data/dto/ParamsDto.java +++ b/bonus-common/src/main/java/com/bonus/common/domain/data/dto/ParamsDto.java @@ -31,7 +31,7 @@ public class ParamsDto { private String equipmentName; /**设备ID*/ - private Long systemId; + private Long systemId = 1L; /**告警状态*/ private String alarmStatus; diff --git a/bonus-common/src/main/java/com/bonus/common/domain/data/vo/LineVo.java b/bonus-common/src/main/java/com/bonus/common/domain/data/vo/LineVo.java new file mode 100644 index 0000000..6171a65 --- /dev/null +++ b/bonus-common/src/main/java/com/bonus/common/domain/data/vo/LineVo.java @@ -0,0 +1,61 @@ +package com.bonus.common.domain.data.vo; + +import lombok.Data; + +import java.util.Date; + +/** + * @className:LineVo + * @author:cwchen + * @date:2025-12-24-15:32 + * @version:1.0 + * @description:画线-vo + */ +@Data +public class LineVo { + + /** + * line_id + */ + private Long lineId; + + /** + * 系统id + */ + private Long systemId; + + /** + * 设备名称 + * */ + private String equipmentName; + + /** + * 设备状态 1.在线/0.离线/2.待机/3.升级中 + * */ + private String equipmentStatus; + + /** + * 开始位置-X坐标 + */ + private String startX; + + /** + * 开始位置-Y坐标 + */ + private String startY; + + /** + * 结束位置-X坐标 + */ + private String endX; + + /** + * 结束位置-Y坐标 + */ + private String endY; + + /** + * 画线时间 + */ + private Date lineTime; +} diff --git a/bonus-common/src/main/java/com/bonus/common/domain/data/vo/StreamVo.java b/bonus-common/src/main/java/com/bonus/common/domain/data/vo/StreamVo.java new file mode 100644 index 0000000..2c5ddce --- /dev/null +++ b/bonus-common/src/main/java/com/bonus/common/domain/data/vo/StreamVo.java @@ -0,0 +1,19 @@ +package com.bonus.common.domain.data.vo; + +import lombok.Data; + +/** + * @className:StreamVo + * @author:cwchen + * @date:2025-12-24-16:31 + * @version:1.0 + * @description:设备视频流-vo + */ +@Data +public class StreamVo { + + /** + * 设备视频流 + * */ + private String streamUrl; +} diff --git a/bonus-data/src/main/java/com/bonus/data/mapper/DLineMapper.java b/bonus-data/src/main/java/com/bonus/data/mapper/DLineMapper.java new file mode 100644 index 0000000..1a5100a --- /dev/null +++ b/bonus-data/src/main/java/com/bonus/data/mapper/DLineMapper.java @@ -0,0 +1,45 @@ +package com.bonus.data.mapper; + +import com.bonus.common.domain.data.dto.LineDto; +import com.bonus.common.domain.data.dto.ParamsDto; +import com.bonus.common.domain.data.vo.LineVo; +import com.bonus.common.domain.data.vo.StreamVo; +import org.springframework.stereotype.Repository; + +/** + * @className:DLineMapper + * @author:cwchen + * @date:2025-12-24-15:38 + * @version:1.0 + * @description:画线-数据层 + */ +@Repository(value = "DLineMapper") +public interface DLineMapper { + + /** + * 查询初始线的位置 + * @param dto + * @return LineVo + * @author cwchen + * @date 2025/12/24 15:43 + */ + LineVo getLineDetail(ParamsDto dto); + + /** + * 添加线的位置 + * @param dto + * @return void + * @author cwchen + * @date 2025/12/24 16:12 + */ + void addLineData(LineDto dto); + + /** + * 获取设备视频流 + * @param dto + * @return StreamVo + * @author cwchen + * @date 2025/12/24 16:33 + */ + StreamVo getVideoStreamAPI(ParamsDto dto); +} diff --git a/bonus-data/src/main/java/com/bonus/data/service/DILineService.java b/bonus-data/src/main/java/com/bonus/data/service/DILineService.java new file mode 100644 index 0000000..7ed6302 --- /dev/null +++ b/bonus-data/src/main/java/com/bonus/data/service/DILineService.java @@ -0,0 +1,42 @@ +package com.bonus.data.service; + +import com.bonus.common.domain.data.dto.LineDto; +import com.bonus.common.domain.data.dto.ParamsDto; +import com.bonus.common.domain.data.vo.LineVo; +import com.bonus.common.domain.data.vo.StreamVo; + +/** + * @className:DIlineService + * @author:cwchen + * @date:2025-12-24-15:35 + * @version:1.0 + * @description:画线-业务层 + */ +public interface DILineService { + /** + * + * @param dto + * @return LineVo + * @author cwchen + * @date 2025/12/24 15:43 + */ + LineVo getLineDetail(ParamsDto dto); + + /** + * 添加线的位置 + * @param dto + * @return void + * @author cwchen + * @date 2025/12/24 16:12 + */ + void addLineData(LineDto dto); + + /** + * 获取设备视频流 + * @param dto + * @return StreamVo + * @author cwchen + * @date 2025/12/24 16:33 + */ + StreamVo getVideoStreamAPI(ParamsDto dto); +} diff --git a/bonus-data/src/main/java/com/bonus/data/service/impl/DLineServiceImpl.java b/bonus-data/src/main/java/com/bonus/data/service/impl/DLineServiceImpl.java new file mode 100644 index 0000000..a1ad010 --- /dev/null +++ b/bonus-data/src/main/java/com/bonus/data/service/impl/DLineServiceImpl.java @@ -0,0 +1,40 @@ +package com.bonus.data.service.impl; + +import com.bonus.common.domain.data.dto.LineDto; +import com.bonus.common.domain.data.dto.ParamsDto; +import com.bonus.common.domain.data.vo.LineVo; +import com.bonus.common.domain.data.vo.StreamVo; +import com.bonus.data.mapper.DLineMapper; +import com.bonus.data.service.DILineService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * @className:DLineServiceImpl + * @author:cwchen + * @date:2025-12-24-15:36 + * @version:1.0 + * @description:画线-业务逻辑层 + */ +@Service(value = "DILineService") +public class DLineServiceImpl implements DILineService { + + @Resource(name = "DLineMapper") + private DLineMapper dLineMapper; + + @Override + public LineVo getLineDetail(ParamsDto dto) { + return dLineMapper.getLineDetail(dto); + } + + @Override + public void addLineData(LineDto dto) { + dLineMapper.addLineData(dto); + } + + @Override + public StreamVo getVideoStreamAPI(ParamsDto dto) { + return dLineMapper.getVideoStreamAPI(dto); + } +} diff --git a/bonus-data/src/main/resources/mapper/DLineMapper.xml b/bonus-data/src/main/resources/mapper/DLineMapper.xml new file mode 100644 index 0000000..836ffe2 --- /dev/null +++ b/bonus-data/src/main/resources/mapper/DLineMapper.xml @@ -0,0 +1,48 @@ + + + + + + + + + + INSERT INTO tb_device_line + + system_id, + start_x, + start_y, + end_x, + end_y, + line_time, + + + #{systemId}, + #{startX}, + #{startY}, + #{endX}, + #{endY}, + #{lineTime}, + + + + + +