feat(auth-group): 新增授权组门禁和电梯关联功能
This commit is contained in:
parent
31291b4413
commit
399f48f1b4
@ -128,6 +128,6 @@ public class SisElevatorInfoController extends BaseController {
|
||||
@GetMapping("/ref/{id}")
|
||||
public R<List<SisElevatorFloorRefVo>> queryRef(@NotNull(message = "电梯id不能为空")
|
||||
@PathVariable("id") Long id) {
|
||||
return R.ok(sisElevatorFloorRefService.queryByElevatorId(id));
|
||||
return R.ok(sisElevatorFloorRefService.queryByAuthGroupId(id));
|
||||
}
|
||||
}
|
||||
|
@ -11,7 +11,7 @@ import java.io.Serial;
|
||||
* 授权组对象 sis_auth_group
|
||||
*
|
||||
* @author lsm
|
||||
* @date 2025-07-23
|
||||
* @since 2025-07-23
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ -41,6 +41,4 @@ public class SisAuthGroup extends TenantEntity {
|
||||
* 是否启用(0:禁用,1启用)
|
||||
*/
|
||||
private Boolean isEnable;
|
||||
|
||||
|
||||
}
|
||||
|
@ -33,9 +33,14 @@ public class SisElevatorFloorRef extends TenantEntity {
|
||||
private Long elevatorId;
|
||||
|
||||
/**
|
||||
* 楼层层数
|
||||
* 楼层id
|
||||
*/
|
||||
private Long floorId;
|
||||
|
||||
/**
|
||||
* 授权组id
|
||||
*/
|
||||
private Long authGroupId;
|
||||
|
||||
|
||||
}
|
||||
|
@ -9,11 +9,13 @@ import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import jakarta.validation.constraints.*;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* 授权组业务对象 sis_auth_group
|
||||
*
|
||||
* @author lsm
|
||||
* @date 2025-07-23
|
||||
* @since 2025-07-23
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ -23,25 +25,34 @@ public class SisAuthGroupBo extends BaseEntity {
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
@NotNull(message = "主键id不能为空", groups = { EditGroup.class })
|
||||
@NotNull(message = "主键id不能为空", groups = {EditGroup.class})
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 权限名称
|
||||
*/
|
||||
@NotBlank(message = "权限名称不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@NotBlank(message = "权限名称不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 面向对象(1-单位、2-个人)
|
||||
*/
|
||||
@NotNull(message = "面向对象(1-单位、2-个人)不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@NotNull(message = "面向对象不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private Long groupType;
|
||||
|
||||
/**
|
||||
* 是否启用(0:禁用,1启用)
|
||||
* 门禁id
|
||||
*/
|
||||
private Boolean isEnable;
|
||||
private Collection<Long> acIds;
|
||||
|
||||
/**
|
||||
* 电梯
|
||||
*/
|
||||
private Collection<Long> eleIds;
|
||||
|
||||
/**
|
||||
* 门禁id
|
||||
*/
|
||||
private Collection<Long> floorIds;
|
||||
|
||||
}
|
||||
|
@ -35,11 +35,17 @@ public class SisElevatorFloorRefBo extends BaseEntity {
|
||||
private Long elevatorId;
|
||||
|
||||
/**
|
||||
* 楼层层数
|
||||
* 楼层id
|
||||
*/
|
||||
@NotEmpty(message = "楼层层数不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
@NotEmpty(message = "楼层id不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Collection<Long> floorIds;
|
||||
|
||||
/**
|
||||
* 授权组id
|
||||
*/
|
||||
@NotNull(message = "授权组id不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long authGroupId;
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -43,5 +43,11 @@ public class SisElevatorFloorRefVo implements Serializable {
|
||||
@ExcelProperty(value = "楼层id")
|
||||
private Long floorId;
|
||||
|
||||
/**
|
||||
* 授权组id
|
||||
*/
|
||||
@ExcelProperty(value = "授权组id")
|
||||
private Long authGroupId;
|
||||
|
||||
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package org.dromara.sis.mapper;
|
||||
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.dromara.sis.domain.SisAuthGroup;
|
||||
import org.dromara.sis.domain.vo.SisAuthGroupVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
@ -8,8 +9,9 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
* 授权组Mapper接口
|
||||
*
|
||||
* @author lsm
|
||||
* @date 2025-07-23
|
||||
* @since 2025-07-23
|
||||
*/
|
||||
@Mapper
|
||||
public interface SisAuthGroupMapper extends BaseMapperPlus<SisAuthGroup, SisAuthGroupVo> {
|
||||
|
||||
}
|
||||
|
@ -355,7 +355,7 @@ public class HikAlarmCallBack implements HCNetSDK.FMSGCallBack_V31 {
|
||||
// 根据单元ID获取楼层信息
|
||||
List<RemoteFloorVo> floorInfo = remoteFloorService.queryByUnitId(ele.getUnitId());
|
||||
// 获取电梯⇄楼层关联信息
|
||||
List<SisElevatorFloorRefVo> floorRefList = elevatorFloorRefService.queryByElevatorId(deviceId);
|
||||
List<SisElevatorFloorRefVo> floorRefList = elevatorFloorRefService.queryByAuthGroupId(deviceId);
|
||||
// 获取楼层数组
|
||||
List<Long> layerArray = floorInfo.stream().map(RemoteFloorVo::getId).sorted().toList();
|
||||
|
||||
|
@ -67,9 +67,9 @@ public interface ISisElevatorFloorRefService {
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 根据电梯id,获取电梯⇄楼层关联信息
|
||||
* 根据权限组id,获取电梯⇄楼层关联信息
|
||||
*
|
||||
* @param elevatorId 电梯id
|
||||
* @param authGroupId 电梯id
|
||||
*/
|
||||
List<SisElevatorFloorRefVo> queryByElevatorId(Long elevatorId);
|
||||
List<SisElevatorFloorRefVo> queryByAuthGroupId(Long authGroupId);
|
||||
}
|
||||
|
@ -1,5 +1,8 @@
|
||||
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;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
@ -9,12 +12,19 @@ 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.property.api.RemoteFloorService;
|
||||
import org.dromara.property.api.domain.vo.RemoteFloorVo;
|
||||
import org.dromara.sis.domain.bo.SisAuthGroupRefBo;
|
||||
import org.dromara.sis.domain.bo.SisElevatorFloorRefBo;
|
||||
import org.dromara.sis.domain.vo.SisAccessControlVo;
|
||||
import org.dromara.sis.domain.vo.SisElevatorInfoVo;
|
||||
import org.dromara.sis.service.*;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.dromara.sis.domain.bo.SisAuthGroupBo;
|
||||
import org.dromara.sis.domain.vo.SisAuthGroupVo;
|
||||
import org.dromara.sis.domain.SisAuthGroup;
|
||||
import org.dromara.sis.mapper.SisAuthGroupMapper;
|
||||
import org.dromara.sis.service.ISisAuthGroupService;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@ -24,7 +34,7 @@ import java.util.Collection;
|
||||
* 授权组Service业务层处理
|
||||
*
|
||||
* @author lsm
|
||||
* @date 2025-07-23
|
||||
* @since 2025-07-23
|
||||
*/
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
@ -33,6 +43,13 @@ public class SisAuthGroupServiceImpl implements ISisAuthGroupService {
|
||||
|
||||
private final SisAuthGroupMapper baseMapper;
|
||||
|
||||
private final ISisElevatorInfoService elevatorInfoService;
|
||||
private final ISisAccessControlService accessControlService;
|
||||
private final ISisAuthGroupRefService sisAuthGroupRefService;
|
||||
private final ISisElevatorFloorRefService sisElevatorFloorRefService;
|
||||
|
||||
@DubboReference
|
||||
private RemoteFloorService remoteFloorService;
|
||||
/**
|
||||
* 查询授权组
|
||||
*
|
||||
@ -76,7 +93,6 @@ public class SisAuthGroupServiceImpl implements ISisAuthGroupService {
|
||||
lqw.orderByAsc(SisAuthGroup::getId);
|
||||
lqw.like(StringUtils.isNotBlank(bo.getName()), SisAuthGroup::getName, bo.getName());
|
||||
lqw.eq(bo.getGroupType() != null, SisAuthGroup::getGroupType, bo.getGroupType());
|
||||
lqw.eq(bo.getIsEnable() != null, SisAuthGroup::getIsEnable, bo.getIsEnable());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
@ -87,12 +103,57 @@ public class SisAuthGroupServiceImpl implements ISisAuthGroupService {
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean insertByBo(SisAuthGroupBo bo) {
|
||||
SisAuthGroup add = MapstructUtils.convert(bo, SisAuthGroup.class);
|
||||
validEntityBeforeSave(add);
|
||||
SisAuthGroup add = new SisAuthGroup();
|
||||
add.setName(bo.getName());
|
||||
add.setGroupType(bo.getGroupType());
|
||||
|
||||
// 电梯设备
|
||||
List<SisElevatorInfoVo> eleVoList = elevatorInfoService.queryListByIds(bo.getEleIds());
|
||||
if (CollUtil.isEmpty(eleVoList)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
Assert.isTrue(flag, "新增授权组失败");
|
||||
|
||||
if (flag) {
|
||||
bo.setId(add.getId());
|
||||
log.info("开始写入授权组门禁,acIds:{}", bo.getAcIds());
|
||||
boolean check;
|
||||
for(Long ac : bo.getAcIds()){
|
||||
SisAuthGroupRefBo groupRef = new SisAuthGroupRefBo();
|
||||
groupRef.setGroupId(add.getId());
|
||||
groupRef.setDeviceType(1L);
|
||||
groupRef.setDeviceId(ac);
|
||||
check = sisAuthGroupRefService.insertByBo(groupRef);
|
||||
Assert.isTrue(check, "写入授权组门禁失败!");
|
||||
}
|
||||
log.info("写入授权组门禁完成");
|
||||
|
||||
log.info("开始写入授权组电梯,eleIds:{}", bo.getEleIds());
|
||||
for (SisElevatorInfoVo ele : eleVoList) {
|
||||
SisAuthGroupRefBo groupRef = new SisAuthGroupRefBo();
|
||||
groupRef.setGroupId(add.getId());
|
||||
groupRef.setDeviceType(2L);
|
||||
groupRef.setDeviceId(ele.getElevatorId());
|
||||
check = sisAuthGroupRefService.insertByBo(groupRef);
|
||||
Assert.isTrue(check, "写入授权组电梯失败!");
|
||||
|
||||
log.info("开始写入授权组电梯楼层,floorIds:{}", bo.getFloorIds());
|
||||
// 获取该电梯所在单元的楼层信息
|
||||
List<RemoteFloorVo> floorVoList = remoteFloorService.queryByUnitId(ele.getUnitId());
|
||||
// 该单元所有楼层id
|
||||
List<Long> allFloors = floorVoList.stream().map(RemoteFloorVo::getId).toList();
|
||||
// 对比找出授权楼层id
|
||||
List<Long> authFloors = bo.getFloorIds().stream().filter(allFloors::contains).toList();
|
||||
SisElevatorFloorRefBo refBo = new SisElevatorFloorRefBo();
|
||||
refBo.setAuthGroupId(add.getId());
|
||||
refBo.setElevatorId(ele.getElevatorId());
|
||||
refBo.setFloorIds(authFloors);
|
||||
sisElevatorFloorRefService.insertByBo(refBo);
|
||||
}
|
||||
log.info("写入授权组电梯完成");
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
@ -89,7 +89,7 @@ public class SisElevatorFloorRefServiceImpl implements ISisElevatorFloorRefServi
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean insertByBo(SisElevatorFloorRefBo bo) {
|
||||
// 清除已有权限
|
||||
List<SisElevatorFloorRefVo> list = this.queryByElevatorId(bo.getElevatorId());
|
||||
List<SisElevatorFloorRefVo> list = this.queryByAuthGroupId(bo.getAuthGroupId());
|
||||
Collection<Long> ids = list.stream().map(SisElevatorFloorRefVo::getId).toList();
|
||||
baseMapper.deleteByIds(ids);
|
||||
|
||||
@ -97,10 +97,11 @@ public class SisElevatorFloorRefServiceImpl implements ISisElevatorFloorRefServi
|
||||
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, "新增电梯⇄楼层关联关系失败");
|
||||
}
|
||||
Assert.isTrue(flag, "新增电梯⇄楼层关联关系失败");
|
||||
return flag;
|
||||
}
|
||||
|
||||
@ -142,12 +143,12 @@ public class SisElevatorFloorRefServiceImpl implements ISisElevatorFloorRefServi
|
||||
/**
|
||||
* 根据电梯id,获取电梯⇄楼层关联信息
|
||||
*
|
||||
* @param elevatorId 电梯id
|
||||
* @param authGroupId 电梯id
|
||||
*/
|
||||
@Override
|
||||
public List<SisElevatorFloorRefVo> queryByElevatorId(Long elevatorId) {
|
||||
public List<SisElevatorFloorRefVo> queryByAuthGroupId(Long authGroupId) {
|
||||
LambdaQueryWrapper<SisElevatorFloorRef> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(SisElevatorFloorRef::getElevatorId, elevatorId);
|
||||
lqw.eq(SisElevatorFloorRef::getElevatorId, authGroupId);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user