diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/dubbo/RemotePrecautionaryImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/dubbo/RemotePrecautionaryImpl.java deleted file mode 100644 index 264080a3..00000000 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/dubbo/RemotePrecautionaryImpl.java +++ /dev/null @@ -1,35 +0,0 @@ -package org.dromara.sis.dubbo; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.apache.dubbo.config.annotation.DubboService; -import org.dromara.sis.api.RemotePrecautionary; -import org.dromara.sis.api.domain.RemotePrecautionaryVo; - -import java.util.List; -import java.util.Map; -import java.util.stream.Stream; - -@Slf4j -@DubboService -@RequiredArgsConstructor -public class RemotePrecautionaryImpl implements RemotePrecautionary { - private final PrecautionaryMapper precautionaryMapper; - - @Override - public List getList() { - Page Page = new Page<>(1, 10); - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.orderByAsc("time"); - return precautionaryMapper.selectVoPage(Page, wrapper); - } - - @Override - public Map count() { - List precautionaries = precautionaryMapper.selectList(); - Stream longStream = precautionaries.stream().map(Precautionary::getType); - return Map.of(); - } -} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisElevatorFloorChannelRefService.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisElevatorFloorChannelRefService.java index 4037e412..c48676bb 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisElevatorFloorChannelRefService.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisElevatorFloorChannelRefService.java @@ -75,4 +75,12 @@ public interface ISisElevatorFloorChannelRefService { * @return 是否添加成功 */ Boolean batchInsert(Long elevatorId, Collection bo); + + + /** + * 通过楼层id,查询通道信息 + * + * @param floorIds 楼层ids + */ + List queryByFloorIds(Collection floorIds); } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAuthGroupRefServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAuthGroupRefServiceImpl.java index 26a12b6b..2f3b703c 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAuthGroupRefServiceImpl.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAuthGroupRefServiceImpl.java @@ -1,5 +1,6 @@ package org.dromara.sis.service.impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Assert; import org.apache.dubbo.config.annotation.DubboReference; import org.dromara.common.core.utils.MapstructUtils; @@ -32,7 +33,7 @@ import java.util.Collection; * 权限组⇄设备关联Service业务层处理 * * @author lsm - * @date 2025-07-23 + * @since 2025-07-23 */ @Slf4j @Service @@ -109,9 +110,6 @@ public class SisAuthGroupRefServiceImpl implements ISisAuthGroupRefService { // 删除权限组⇄设备关联关系 this.deleteByGroupId(authGroupId); - // 电梯设备 - List eleVoList = elevatorInfoService.queryListByIds(eleIds); - log.info("开始写入授权组门禁,acIds:{}", acIds); boolean check = false; for (Long ac : acIds) { @@ -124,30 +122,34 @@ public class SisAuthGroupRefServiceImpl implements ISisAuthGroupRefService { } log.info("写入授权组门禁完成"); - log.info("开始写入授权组电梯,eleIds:{}", eleIds); - for (SisElevatorInfoVo ele : eleVoList) { - SisAuthGroupRef groupRef = new SisAuthGroupRef(); - groupRef.setAuthGroupId(authGroupId); - groupRef.setDeviceType(2L); - groupRef.setDeviceId(ele.getElevatorId()); - check = baseMapper.insert(groupRef) > 0; - Assert.isTrue(check, "写入授权组电梯失败!"); + if (CollUtil.isNotEmpty(eleIds)) { + // 电梯设备 + List eleVoList = elevatorInfoService.queryListByIds(eleIds); - log.info("开始写入授权组电梯楼层,floorIds:{}", floorIds); - // 获取该电梯所在单元的楼层信息 - List floorVoList = remoteFloorService.queryByBuildingId(ele.getBuildingId()); - // 该单元所有楼层id - List allFloors = floorVoList.stream().map(RemoteFloorVo::getId).toList(); - // 对比找出授权楼层id - List authFloors = floorIds.stream().filter(allFloors::contains).toList(); - SisElevatorFloorRefBo refBo = new SisElevatorFloorRefBo(); - refBo.setAuthGroupId(authGroupId); - refBo.setElevatorId(ele.getElevatorId()); - refBo.setFloorIds(authFloors); - sisElevatorFloorRefService.insertByBo(refBo); + log.info("开始写入授权组电梯,eleIds:{}", eleIds); + for (SisElevatorInfoVo ele : eleVoList) { + SisAuthGroupRef groupRef = new SisAuthGroupRef(); + groupRef.setAuthGroupId(authGroupId); + groupRef.setDeviceType(2L); + groupRef.setDeviceId(ele.getElevatorId()); + check = baseMapper.insert(groupRef) > 0; + Assert.isTrue(check, "写入授权组电梯失败!"); + + log.info("开始写入授权组电梯楼层,floorIds:{}", floorIds); + // 获取该电梯所在单元的楼层信息 + List floorVoList = remoteFloorService.queryByBuildingId(ele.getBuildingId()); + // 该单元所有楼层id + List allFloors = floorVoList.stream().map(RemoteFloorVo::getId).toList(); + // 对比找出授权楼层id + List authFloors = floorIds.stream().filter(allFloors::contains).toList(); + SisElevatorFloorRefBo refBo = new SisElevatorFloorRefBo(); + refBo.setAuthGroupId(authGroupId); + refBo.setElevatorId(ele.getElevatorId()); + refBo.setFloorIds(authFloors); + sisElevatorFloorRefService.insertByBo(refBo); + } + log.info("写入授权组电梯完成"); } - log.info("写入授权组电梯完成"); - return check; } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAuthGroupServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAuthGroupServiceImpl.java index 0d5b3640..23aafc69 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAuthGroupServiceImpl.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAuthGroupServiceImpl.java @@ -122,6 +122,7 @@ public class SisAuthGroupServiceImpl implements ISisAuthGroupService { Assert.isTrue(flag, "修改授权组失败"); if (flag) { + assert update != null; flag = sisAuthGroupRefService.insertByBo(update.getId(), bo.getAcIds(), bo.getEleIds(), bo.getFloorIds()); } 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 64a95406..4e5b80bd 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 @@ -320,6 +320,10 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService { */ @Override public SisAuthRecordVo checkAuth(Long personId) { + List authVoList = baseMapper.checkAuth(personId); + if (CollUtil.isEmpty(authVoList)) { + return null; + } return baseMapper.checkAuth(personId).get(0); } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisElevatorFloorChannelRefServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisElevatorFloorChannelRefServiceImpl.java index f8b96df8..fd80aa26 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisElevatorFloorChannelRefServiceImpl.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisElevatorFloorChannelRefServiceImpl.java @@ -2,7 +2,6 @@ package org.dromara.sis.service.impl; import cn.hutool.core.lang.Assert; import org.dromara.common.core.utils.MapstructUtils; -import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.PageQuery; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -26,7 +25,7 @@ import java.util.Collection; * 电梯⇄楼层⇄通道关联Service业务层处理 * * @author lsm - * @date 2025-08-04 + * @since 2025-08-04 */ @Slf4j @RequiredArgsConstructor @@ -155,4 +154,16 @@ public class SisElevatorFloorChannelRefServiceImpl implements ISisElevatorFloorC Assert.isTrue(flag, "批量增加电梯⇄楼层⇄通道关联信息失败"); return flag; } + + /** + * 通过楼层id,查询通道信息 + * + * @param floorIds 楼层ids + */ + @Override + public List queryByFloorIds(Collection floorIds){ + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.in(SisElevatorFloorChannelRef::getFloorId, floorIds); + return baseMapper.selectVoList(lqw); + } } 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 c6c2d4f7..497581fb 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 @@ -10,6 +10,8 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.dromara.sis.domain.SisElevatorFloorChannelRef; +import org.dromara.sis.domain.vo.SisElevatorFloorChannelRefVo; +import org.dromara.sis.service.ISisElevatorFloorChannelRefService; import org.springframework.stereotype.Service; import org.dromara.sis.domain.bo.SisElevatorFloorRefBo; import org.dromara.sis.domain.vo.SisElevatorFloorRefVo; @@ -18,6 +20,7 @@ import org.dromara.sis.mapper.SisElevatorFloorRefMapper; import org.dromara.sis.service.ISisElevatorFloorRefService; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Collection; @@ -36,6 +39,7 @@ import java.util.stream.Collectors; public class SisElevatorFloorRefServiceImpl implements ISisElevatorFloorRefService { private final SisElevatorFloorRefMapper baseMapper; + private final ISisElevatorFloorChannelRefService sisElevatorFloorChannelRefService; /** * 查询电梯⇄楼层关联 @@ -96,15 +100,33 @@ public class SisElevatorFloorRefServiceImpl implements ISisElevatorFloorRefServi Collection ids = list.stream().map(SisElevatorFloorRefVo::getId).toList(); baseMapper.deleteByIds(ids); - boolean flag = false; - for (Long num : bo.getFloorIds()){ + // 通道关系 + List channelInfo = sisElevatorFloorChannelRefService.queryByFloorIds(bo.getFloorIds()); + + // 创建Map提高查找效率,避免在循环中重复流操作 + Map channelInfoMap = channelInfo.stream() + .collect(Collectors.toMap(SisElevatorFloorChannelRefVo::getFloorId, Function.identity())); + + List refInfo = new ArrayList<>(); + + for (Long num : bo.getFloorIds()) { SisElevatorFloorRef add = new SisElevatorFloorRef(); add.setFloorId(num); add.setAuthGroupId(bo.getAuthGroupId()); add.setElevatorId(bo.getElevatorId()); - flag = baseMapper.insert(add) > 0; - Assert.isTrue(flag, "新增电梯⇄楼层关联关系失败"); + + // 存在通道关系同时写入 + SisElevatorFloorChannelRefVo channelRef = channelInfoMap.get(num); + if (channelRef != null) { + add.setOutChannel(channelRef.getOutChannel()); + add.setInChannel(channelRef.getInChannel()); + } + + refInfo.add(add); } + + boolean flag = baseMapper.insertBatch(refInfo); + Assert.isTrue(flag, "电梯楼层关联关系写入失败!"); return flag; } @@ -158,10 +180,10 @@ public class SisElevatorFloorRefServiceImpl implements ISisElevatorFloorRefServi /** * 批量更新电梯⇄楼层通道关联信息 * - * @param info 通道信息 + * @param info 通道信息 */ @Override - public Boolean batchUpdateChannel(Collection info){ + public Boolean batchUpdateChannel(Collection info) { LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.in(SisElevatorFloorRef::getFloorId, info.stream().map(SisElevatorFloorChannelRef::getFloorId).toList()); List list = baseMapper.selectList(lqw);