diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisElevatorInfoController.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisElevatorInfoController.java index b4ab49e0..29a53596 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisElevatorInfoController.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/SisElevatorInfoController.java @@ -6,9 +6,6 @@ import lombok.RequiredArgsConstructor; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.constraints.*; import cn.dev33.satoken.annotation.SaCheckPermission; -import org.dromara.sis.domain.bo.SisElevatorFloorRefBo; -import org.dromara.sis.domain.vo.SisElevatorFloorRefVo; -import org.dromara.sis.service.ISisElevatorFloorRefService; import org.springframework.web.bind.annotation.*; import org.springframework.validation.annotation.Validated; import org.dromara.common.idempotent.annotation.RepeatSubmit; @@ -40,8 +37,6 @@ public class SisElevatorInfoController extends BaseController { private final ISisElevatorInfoService sisElevatorInfoService; - private final ISisElevatorFloorRefService sisElevatorFloorRefService; - /** * 查询电梯基本信息列表 */ @@ -108,26 +103,4 @@ public class SisElevatorInfoController extends BaseController { @PathVariable("elevatorIds") Long[] elevatorIds) { return toAjax(sisElevatorInfoService.deleteWithValidByIds(List.of(elevatorIds), true)); } - - /** - * 新增电梯⇄楼层关联 - * - * @param bo 电梯⇄楼层关联 - */ - @RepeatSubmit() - @PostMapping("/ref/add") - public R addRef(@Validated(AddGroup.class) @RequestBody SisElevatorFloorRefBo bo) { - return toAjax(sisElevatorFloorRefService.insertByBo(bo)); - } - - /** - * 查询电梯⇄楼层关联 - * - * @param id 电梯id - */ - @GetMapping("/ref/{id}") - public R> queryRef(@NotNull(message = "电梯id不能为空") - @PathVariable("id") Long id) { - return R.ok(sisElevatorFloorRefService.queryByAuthGroupId(id)); - } } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisAuthGroupVo.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisAuthGroupVo.java index 3f57f152..2e16205c 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisAuthGroupVo.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisAuthGroupVo.java @@ -10,6 +10,7 @@ import lombok.Data; import java.io.Serial; import java.io.Serializable; +import java.util.Collection; import java.util.Date; @@ -18,7 +19,7 @@ import java.util.Date; * 授权组视图对象 sis_auth_group * * @author lsm - * @date 2025-07-23 + * @since 2025-07-23 */ @Data @ExcelIgnoreUnannotated @@ -52,5 +53,19 @@ public class SisAuthGroupVo implements Serializable { @ExcelProperty(value = "是否启用(0:禁用,1启用)") private Boolean isEnable; + /** + * 门禁id + */ + private Collection acIds; + + /** + * 电梯 + */ + private Collection eleIds; + + /** + * 门禁id + */ + private Collection floorIds; } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisAuthGroupRefService.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisAuthGroupRefService.java index c6cbd785..57c1f40e 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisAuthGroupRefService.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisAuthGroupRefService.java @@ -79,7 +79,7 @@ public interface ISisAuthGroupRefService { /** * 通过权限组id,删除授权设备列表 * - * @param groupId 权限id + * @param groupIds 权限id */ - Boolean deleteByGroupId(Long groupId); + Boolean deleteByGroupId(Collection groupIds); } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisAuthRecordService.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisAuthRecordService.java index bff61495..5c7b032a 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisAuthRecordService.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisAuthRecordService.java @@ -109,9 +109,17 @@ public interface ISisAuthRecordService { /** * 批量删除授权记录 * - * @param ids 入驻员工ids + * @param ids 入驻员工ids * @param e8Ids e8id */ Boolean deleteByPersonIds(Collection ids, Collection e8Ids); + /** + * 根据权限组ID,查询授权记录 + * + * @param groupIds 权限组ID + */ + Boolean queryByGroupIds(Collection groupIds); + + } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisElevatorFloorRefService.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisElevatorFloorRefService.java index 69b4ff9d..cad946f1 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisElevatorFloorRefService.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/ISisElevatorFloorRefService.java @@ -74,6 +74,13 @@ public interface ISisElevatorFloorRefService { */ List queryByAuthGroupId(Long authGroupId); + /** + * 根据权限组id,删除电梯⇄楼层关联信息 + * + * @param authGroupIds 权限组ids + */ + Boolean deleteByAuthGroupId(Collection authGroupIds); + /** * 批量更新电梯⇄楼层通道关联信息 * 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 2f3b703c..605a381f 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 @@ -108,7 +108,7 @@ public class SisAuthGroupRefServiceImpl implements ISisAuthGroupRefService { @Transactional(rollbackFor = Exception.class) public Boolean insertByBo(Long authGroupId, Collection acIds, Collection eleIds, Collection floorIds) { // 删除权限组⇄设备关联关系 - this.deleteByGroupId(authGroupId); + this.deleteByGroupId(List.of(authGroupId)); log.info("开始写入授权组门禁,acIds:{}", acIds); boolean check = false; @@ -203,12 +203,13 @@ public class SisAuthGroupRefServiceImpl implements ISisAuthGroupRefService { /** * 通过权限组id,删除授权设备列表 * - * @param groupId 权限id + * @param groupIds 权限id */ @Override - public Boolean deleteByGroupId(Long groupId) { + @Transactional(rollbackFor = Exception.class) + public Boolean deleteByGroupId(Collection groupIds) { LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.eq(SisAuthGroupRef::getAuthGroupId, groupId); + lqw.in(SisAuthGroupRef::getAuthGroupId, groupIds); return baseMapper.delete(lqw) > 0; } } 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 23aafc69..880cd7b0 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 @@ -10,6 +10,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.dromara.sis.domain.SisElevatorFloorRef; +import org.dromara.sis.domain.vo.SisAuthGroupRefVo; +import org.dromara.sis.domain.vo.SisElevatorFloorRefVo; import org.dromara.sis.service.*; import org.springframework.stereotype.Service; import org.dromara.sis.domain.bo.SisAuthGroupBo; @@ -35,8 +38,9 @@ public class SisAuthGroupServiceImpl implements ISisAuthGroupService { private final SisAuthGroupMapper baseMapper; + private final ISisAuthRecordService sisAuthRecordService; private final ISisAuthGroupRefService sisAuthGroupRefService; - + private final ISisElevatorFloorRefService sisElevatorFloorRefService; /** @@ -47,7 +51,21 @@ public class SisAuthGroupServiceImpl implements ISisAuthGroupService { */ @Override public SisAuthGroupVo queryById(Long id) { - return baseMapper.selectVoById(id); + + // 门禁设备 + List groupRefs = sisAuthGroupRefService.queryListByGroupId(id); + Collection acIds = groupRefs.stream().filter(vo -> vo.getDeviceType() == 1).map(SisAuthGroupRefVo::getDeviceId).toList(); + + // 楼层 + List floorRefs = sisElevatorFloorRefService.queryByAuthGroupId(id); + Collection floorIds = floorRefs.stream().map(SisElevatorFloorRefVo::getFloorId).toList(); + + SisAuthGroupVo vo = baseMapper.selectVoById(id); + + vo.setAcIds(acIds); + vo.setFloorIds(floorIds); + + return vo; } /** @@ -144,10 +162,25 @@ public class SisAuthGroupServiceImpl implements ISisAuthGroupService { * @return 是否删除成功 */ @Override + @Transactional(rollbackFor = Exception.class) public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { if (isValid) { - //TODO 做一些业务上的校验,判断是否需要校验 + boolean auth = sisAuthRecordService.queryByGroupIds(ids); + Assert.isTrue(!auth, "授权组已分配"); } - return baseMapper.deleteByIds(ids) > 0; + + boolean flag = baseMapper.deleteByIds(ids) > 0; + Assert.isTrue(flag, "删除授权组失败"); + + if (flag) { + // 删除授权组⇄授权设备关联表 + Boolean ref = sisAuthGroupRefService.deleteByGroupId(ids); + Assert.isTrue(ref, "删除授权组⇄授权设备失败"); + + // 删除授权组⇄电梯⇄楼层 + Boolean floor = sisElevatorFloorRefService.deleteByAuthGroupId(ids); + Assert.isTrue(floor, "删除授权组⇄电梯⇄楼层失败"); + } + return flag; } } 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 4e5b80bd..5a25d307 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 @@ -375,4 +375,17 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService { } return flag; } + + /** + * 根据权限组ID,查询授权记录 + * + * @param groupIds 权限组IDs + */ + @Override + public Boolean queryByGroupIds(Collection groupIds){ + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.in(SisAuthRecord::getGroupId, groupIds); + List authVoList = baseMapper.selectVoList(lqw); + return CollUtil.isNotEmpty(authVoList); + } } 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 497581fb..3020dc70 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 @@ -166,17 +166,30 @@ public class SisElevatorFloorRefServiceImpl implements ISisElevatorFloorRefServi } /** - * 根据电梯id,获取电梯⇄楼层关联信息 + * 根据权限组id,获取电梯⇄楼层关联信息 * * @param authGroupId 电梯id */ @Override public List queryByAuthGroupId(Long authGroupId) { LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); - lqw.eq(SisElevatorFloorRef::getElevatorId, authGroupId); + lqw.eq(SisElevatorFloorRef::getAuthGroupId, authGroupId); return baseMapper.selectVoList(lqw); } + /** + * 根据权限组id,删除电梯⇄楼层关联信息 + * + * @param authGroupIds 权限组ids + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean deleteByAuthGroupId(Collection authGroupIds) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.in(SisElevatorFloorRef::getAuthGroupId, authGroupIds); + return baseMapper.delete(lqw) > 0; + } + /** * 批量更新电梯⇄楼层通道关联信息 *