From b95f99532f4408994c8d390118c23a2855fa2243 Mon Sep 17 00:00:00 2001 From: zcxlsm Date: Tue, 22 Jul 2025 11:40:00 +0800 Subject: [PATCH] =?UTF-8?q?feat(sis):=20=E7=94=B5=E6=A2=AF=E6=8E=88?= =?UTF-8?q?=E6=9D=83=E5=A2=9E=E5=8A=A0=E6=A5=BC=E5=B1=82=E9=80=89=E6=8B=A9?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sis/domain/SisElevatorFloorRef.java | 2 +- .../sis/domain/bo/SisAuthRecordBo.java | 4 +- .../sis/domain/bo/SisElevatorFloorRefBo.java | 4 +- .../sis/domain/vo/SisElevatorFloorRefVo.java | 6 +-- .../sis/sdk/hik/calback/HikAlarmCallBack.java | 5 ++- .../impl/SisAuthRecordServiceImpl.java | 41 +++++++++++++++---- .../impl/SisElevatorFloorRefServiceImpl.java | 4 +- 7 files changed, 47 insertions(+), 19 deletions(-) diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisElevatorFloorRef.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisElevatorFloorRef.java index a855f6c..88ab627 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisElevatorFloorRef.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/SisElevatorFloorRef.java @@ -35,7 +35,7 @@ public class SisElevatorFloorRef extends TenantEntity { /** * 楼层层数 */ - private Long floorNum; + private Long floorId; } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisAuthRecordBo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisAuthRecordBo.java index 555c120..29a2edd 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisAuthRecordBo.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisAuthRecordBo.java @@ -9,7 +9,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import jakarta.validation.constraints.*; -import java.util.Collection; +import java.util.List; /** * 授权记录业务对象 sis_auth_record @@ -38,5 +38,5 @@ public class SisAuthRecordBo extends BaseEntity { * 授权设备idList */ @NotEmpty(message = "授权设备idList不能为空", groups = {AddGroup.class, EditGroup.class}) - private Collection deviceIds; + private List> deviceIds; } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisElevatorFloorRefBo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisElevatorFloorRefBo.java index ce26948..921a38d 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisElevatorFloorRefBo.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/bo/SisElevatorFloorRefBo.java @@ -38,7 +38,9 @@ public class SisElevatorFloorRefBo extends BaseEntity { * 楼层层数 */ @NotEmpty(message = "楼层层数不能为空", groups = { AddGroup.class, EditGroup.class }) - private Collection floorNums; + private Collection floorIds; + + } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisElevatorFloorRefVo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisElevatorFloorRefVo.java index 6b8fd55..7558689 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisElevatorFloorRefVo.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisElevatorFloorRefVo.java @@ -38,10 +38,10 @@ public class SisElevatorFloorRefVo implements Serializable { private Long elevatorId; /** - * 楼层层数 + * 楼层id */ - @ExcelProperty(value = "楼层层数") - private Long floorNum; + @ExcelProperty(value = "楼层id") + private Long floorId; } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/hik/calback/HikAlarmCallBack.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/hik/calback/HikAlarmCallBack.java index 0b93cfa..150de39 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/hik/calback/HikAlarmCallBack.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/hik/calback/HikAlarmCallBack.java @@ -25,6 +25,7 @@ import java.text.SimpleDateFormat; import java.util.Collection; import java.util.Date; import java.util.List; +import java.util.Objects; import static org.dromara.sis.sdk.hik.HCNetSDK.*; @@ -356,11 +357,11 @@ public class HikAlarmCallBack implements HCNetSDK.FMSGCallBack_V31 { // 获取电梯⇄楼层关联信息 List floorRefList = elevatorFloorRefService.queryByElevatorId(deviceId); // 获取楼层数组 - List layerArray = floorInfo.stream().map(RemoteFloorVo::getFloorNumber).sorted().toList(); + List layerArray = floorInfo.stream().map(RemoteFloorVo::getId).sorted().toList(); layerArray.forEach(layer -> { SisElevatorFloorRefVo floorRef = floorRefList.stream() - .filter(vo -> vo.getFloorNum().intValue() == layer) // 直接使用 layer + .filter(vo -> Objects.equals(vo.getFloorId(), layer)) // 直接使用 layer .findFirst() .orElse(null); if (floorRef == null) { diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAuthRecordServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAuthRecordServiceImpl.java index d443c86..d9a0d32 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAuthRecordServiceImpl.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAuthRecordServiceImpl.java @@ -15,10 +15,12 @@ import lombok.extern.slf4j.Slf4j; import org.dromara.property.api.RemoteFloorService; import org.dromara.property.api.domain.vo.RemoteFloorVo; import org.dromara.sis.domain.bo.SisAccessControlBo; +import org.dromara.sis.domain.bo.SisElevatorFloorRefBo; import org.dromara.sis.domain.bo.SisElevatorInfoBo; import org.dromara.sis.domain.vo.SisAccessControlVo; import org.dromara.sis.domain.vo.SisElevatorInfoVo; import org.dromara.sis.service.ISisAccessControlService; +import org.dromara.sis.service.ISisElevatorFloorRefService; import org.dromara.sis.service.ISisElevatorInfoService; import org.springframework.stereotype.Service; import org.dromara.sis.domain.bo.SisAuthRecordBo; @@ -46,6 +48,7 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService { private final SisAuthRecordMapper baseMapper; + private final ISisElevatorFloorRefService elevatorFloorRefService; private final ISisAccessControlService accessControlService; private final ISisElevatorInfoService elevatorInfoService; @@ -113,11 +116,18 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService { // 每次授权先删除上一次授权信息 deleteByLibId(bo.getLibId()); + //取出需要授权的门禁id、电梯id、楼层id + List acIds = bo.getDeviceIds().get(0); + List eleIds = bo.getDeviceIds().get(1); + List floorIds = bo.getDeviceIds().get(2); + // 过滤不是设备的节点数据 // 门禁设备 - List acVoList = accessControlService.queryListByIds(bo.getDeviceIds()); + List acVoList = accessControlService.queryListByIds(acIds); // 电梯设备 - List eleVoList = elevatorInfoService.queryListByIds(bo.getDeviceIds()); + List eleVoList = elevatorInfoService.queryListByIds(eleIds); + // 楼层信息 + if (CollUtil.isEmpty(acVoList) || CollUtil.isEmpty(eleVoList)) { return false; } @@ -139,12 +149,24 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService { log.info("开始写入电梯授权记录,eleIds:{}", eleVoList); for (SisElevatorInfoVo ele : eleVoList) { SisAuthRecord authRecord = new SisAuthRecord(); + SisElevatorFloorRefBo refBo = new SisElevatorFloorRefBo(); authRecord.setDeviceType(2); authRecord.setLibId(bo.getLibId()); authRecord.setDeviceId(ele.getElevatorId()); flag = baseMapper.insert(authRecord) > 0; Assert.isTrue(flag, "写入电梯授权记录失败!"); + + log.info("开始写入电梯⇄楼层关联关系"); + // 获取该电梯所在单元的楼层信息 + List floorVoList = remoteFloorService.queryByUnitId(ele.getUnitId()); + // 该单元所有楼层id + List allFloors = floorVoList.stream().map(RemoteFloorVo::getId).toList(); + // 对比找出授权楼层id + List authFloors = floorIds.stream().filter(allFloors::contains).toList(); + refBo.setElevatorId(ele.getElevatorId()); + refBo.setFloorIds(authFloors); + elevatorFloorRefService.insertByBo(refBo); } log.info("写入电梯授权记录完成"); @@ -224,21 +246,21 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService { root.setLevel(0); root.setCode(0L); root.setParentCode(-1L); - root.setLabel("授权设备"); + root.setTitle("授权设备"); // 创建门禁设备父节点 TreeNode accessNode = new TreeNode<>(); accessNode.setLevel(1); accessNode.setCode(1L); accessNode.setParentCode(0L); - accessNode.setLabel("门禁设备"); + accessNode.setTitle("门禁设备"); // 创建电梯父节点 TreeNode elevatorNode = new TreeNode<>(); elevatorNode.setLevel(1); elevatorNode.setCode(2L); elevatorNode.setParentCode(0L); - elevatorNode.setLabel("电梯设备"); + elevatorNode.setTitle("电梯设备"); List acVoList = accessControlService.queryList(new SisAccessControlBo()); @@ -250,7 +272,8 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService { node.setLevel(2); node.setCode(item.getId()); node.setParentCode(1L); - node.setLabel(item.getAccessName()); + node.setLabel("accessControl"); + node.setTitle(item.getAccessName()); return node; }).toList(); @@ -260,8 +283,9 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService { TreeNode eleNode = new TreeNode<>(); eleNode.setLevel(2); eleNode.setParentCode(2L); + eleNode.setLabel("elevator"); eleNode.setCode(item.getElevatorId()); - eleNode.setLabel(item.getElevatorName()); + eleNode.setTitle(item.getElevatorName()); // 楼层节点 List> floorTree = new ArrayList<>(); @@ -270,8 +294,9 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService { floorInfoList.forEach(floor -> { TreeNode floorNode = new TreeNode<>(); floorNode.setLevel(3); + floorNode.setLabel("floor"); floorNode.setCode(floor.getId()); - floorNode.setLabel(floor.getFloorName()); + floorNode.setTitle(floor.getFloorName()); floorNode.setParentCode(item.getElevatorId()); floorTree.add(floorNode); }); diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisElevatorFloorRefServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisElevatorFloorRefServiceImpl.java index 3517d7b..566104d 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisElevatorFloorRefServiceImpl.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisElevatorFloorRefServiceImpl.java @@ -94,9 +94,9 @@ public class SisElevatorFloorRefServiceImpl implements ISisElevatorFloorRefServi baseMapper.deleteByIds(ids); boolean flag = false; - for (Long num : bo.getFloorNums()){ + for (Long num : bo.getFloorIds()){ SisElevatorFloorRef add = new SisElevatorFloorRef(); - add.setFloorNum(num); + add.setFloorId(num); add.setElevatorId(bo.getElevatorId()); flag = baseMapper.insert(add) > 0; }