From 17d041e51dd9481c60ee223f6130a3e71dae9dd6 Mon Sep 17 00:00:00 2001 From: zcxlsm Date: Wed, 6 Aug 2025 12:03:06 +0800 Subject: [PATCH] feat(sis): 1 --- .../sis/controller/VideoAlarmController.java | 12 ++--- .../impl/ZeroSensationPassageServiceImpl.java | 44 ++++++++++++------- 2 files changed, 36 insertions(+), 20 deletions(-) diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/VideoAlarmController.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/VideoAlarmController.java index cb1c713d..27824edd 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/VideoAlarmController.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/VideoAlarmController.java @@ -6,10 +6,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.dromara.sis.sdk.unview.model.UvModel; import org.dromara.sis.sdk.unview.service.VideoAlarmService; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; /** * 宇视告警书记上报 @@ -20,7 +17,7 @@ import org.springframework.web.bind.annotation.RestController; @Slf4j @RestController @RequiredArgsConstructor -@RequestMapping("/uniview") +@RequestMapping("/alarm") public class VideoAlarmController { @Resource @@ -34,5 +31,10 @@ public class VideoAlarmController { return UvModel.UniViewResult.success(null); } + @PostMapping("/huawei/callback") + public void huaweiAlarm(@RequestBody String data) { + log.info("华为上报消息,msg={}", data); + } + } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/ZeroSensationPassageServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/ZeroSensationPassageServiceImpl.java index c2b371a4..927d7388 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/ZeroSensationPassageServiceImpl.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/ZeroSensationPassageServiceImpl.java @@ -8,10 +8,11 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.config.annotation.DubboReference; import org.dromara.property.api.RemoteFloorService; -import org.dromara.property.api.domain.vo.RemoteFloorVo; import org.dromara.sis.domain.vo.*; +import org.dromara.sis.producer.CleanLiftAuthRocketProducer; import org.dromara.sis.sdk.e8.E8PlatformApi; import org.dromara.sis.sdk.e8.domain.accessControl.req.RemoteOpenDoorReq; +import org.dromara.sis.sdk.hik.HikApiService; import org.dromara.sis.sdk.huawei.HuaWeiBoxApi; import org.dromara.sis.service.*; import org.springframework.stereotype.Service; @@ -41,6 +42,8 @@ public class ZeroSensationPassageServiceImpl implements IZeroSensationPassageSer private final E8PlatformApi e8PlatformApi; private final ISisAlarmEventsService alarmEventsService; + private final CleanLiftAuthRocketProducer cleanLiftAuthRocketProducer; + @DubboReference private RemoteFloorService remoteFloorService; @@ -96,9 +99,9 @@ public class ZeroSensationPassageServiceImpl implements IZeroSensationPassageSer if (item.getControlType() == 1) { // 门禁 handleAc(item.getDeviceId()); } else if (item.getControlType() == 2) { // 电梯外面面板权限 - handleEle(item.getDeviceId(), r.getAuthGroupId(), 2); + handleEle(item.getDeviceId(), r.getAuthGroupId(), 2, item.getDeviceFloorId()); } else if (item.getControlType() == 3) { // 电梯里面的面板 - handleEle(item.getDeviceId(), r.getAuthGroupId(), 3); + handleEle(item.getDeviceId(), r.getAuthGroupId(), 3, item.getDeviceFloorId()); } else { log.info("设备绑定了未知的控制类型[{}],不处理", item.getControlType()); } @@ -134,21 +137,32 @@ public class ZeroSensationPassageServiceImpl implements IZeroSensationPassageSer /** * 验证电梯权限 */ - public void handleEle(Long deviceId, Long groupId, Integer controlType) { - log.info("开始下发梯控权限...."); - // 获取电梯信息 - // 获取电梯信息 + public void handleEle(Long deviceId, Long groupId, Integer controlType, Long deviceFloorId) { + + // 获取当前电梯信息 SisElevatorInfoVo ele = elevatorInfoService.queryById(deviceId); - // 根据单元ID获取楼层信息 - List floorInfo = remoteFloorService.queryByBuildingId(ele.getBuildingId()); - // 获取电梯⇄楼层关联信息 - List floorRefList = elevatorFloorRefService.queryByAuthGroupId(groupId); - for (SisElevatorFloorRefVo sisElevatorFloorRefVo : floorRefList) { - //todo 下发梯控权限 -// HikApiService.getInstance().controlGateway(ele.getControlIp(), sisElevatorFloorRefVo.getFloorId(), 2); + // 获取权限组下电梯⇄楼层关联信息 + List groupRef = elevatorFloorRefService.queryByAuthGroupId(groupId); + + // 取出当前电梯的楼层授权信息 + List eleRef = groupRef.stream().filter(o -> Objects.equals(o.getElevatorId(), deviceId)).toList(); + + for (SisElevatorFloorRefVo ref : eleRef){ + if (controlType == 2){ + log.info("开始下发外面版梯控权限...."); + if (ref.getOutChannel() != null && Objects.equals(ref.getFloorId(), deviceFloorId)) { + HikApiService.getInstance().controlGateway(ele.getControlIp(), ref.getOutChannel().intValue(), 2); + } + }else { + log.info("开始下发里面版梯控权限...."); + if (ref.getInChannel() != null && Objects.equals(ref.getFloorId(), deviceFloorId)) { + HikApiService.getInstance().controlGateway(ele.getControlIp(), ref.getInChannel().intValue(), 2); + } + } } + log.info("梯控下发权限完成"); - + cleanLiftAuthRocketProducer.sendMessage(deviceId, groupId, deviceFloorId, "清除电梯" + deviceId + "梯控权限", 3); } }