This commit is contained in:
parent
6ea6c79341
commit
3837c2f2ef
@ -1,7 +1,10 @@
|
||||
package org.dromara.property.api;
|
||||
|
||||
import org.dromara.common.core.domain.TreeNode;
|
||||
import org.dromara.property.api.domain.vo.RemoteFloorVo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 楼层的远程服务调用
|
||||
*
|
||||
@ -12,4 +15,10 @@ public interface RemoteFloorService {
|
||||
|
||||
RemoteFloorVo queryByFloorId(Long floorId);
|
||||
|
||||
/**
|
||||
* 获取 社区/楼栋/单元/楼栋 集合
|
||||
*/
|
||||
List<TreeNode<Long>> queryTreeList();
|
||||
|
||||
|
||||
}
|
||||
|
@ -1,12 +1,14 @@
|
||||
package org.dromara.common.core.domain;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 通用tree构建工具类
|
||||
*
|
||||
* @param <E>
|
||||
*/
|
||||
public interface TreeEntity<E, T> {
|
||||
public interface TreeEntity<E, T> extends Serializable {
|
||||
|
||||
T getId();
|
||||
|
||||
|
@ -32,7 +32,7 @@ public class TbBuildingBo extends BaseEntity {
|
||||
/**
|
||||
* 园区编码
|
||||
*/
|
||||
@NotBlank(message = "园区id不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
@NotNull(message = "园区id不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private Long communityId;
|
||||
|
||||
/**
|
||||
|
@ -3,11 +3,21 @@ package org.dromara.property.dubbo;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.dubbo.config.annotation.DubboService;
|
||||
import org.dromara.common.core.domain.TreeNode;
|
||||
import org.dromara.common.core.utils.MapstructUtils;
|
||||
import org.dromara.property.api.RemoteFloorService;
|
||||
import org.dromara.property.api.domain.vo.RemoteFloorVo;
|
||||
import org.dromara.property.domain.vo.TbBuildingVo;
|
||||
import org.dromara.property.domain.vo.TbCommunityVo;
|
||||
import org.dromara.property.domain.vo.TbFloorVo;
|
||||
import org.dromara.property.domain.vo.TbUnitVo;
|
||||
import org.dromara.property.service.ITbBuildingService;
|
||||
import org.dromara.property.service.ITbCommunityService;
|
||||
import org.dromara.property.service.ITbFloorService;
|
||||
import org.dromara.property.service.ITbUnitService;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 楼层服务远程调用实现
|
||||
@ -19,11 +29,76 @@ import org.dromara.property.service.ITbFloorService;
|
||||
@DubboService
|
||||
public class RemoteFloorServiceImpl implements RemoteFloorService {
|
||||
|
||||
private final ITbCommunityService tbCommunityService;
|
||||
private final ITbBuildingService tbBuildingService;
|
||||
private final ITbUnitService unitService;
|
||||
private final ITbFloorService floorService;
|
||||
|
||||
|
||||
@Override
|
||||
public RemoteFloorVo queryByFloorId(Long floorId) {
|
||||
TbFloorVo tbFloorVo = floorService.queryById(floorId);
|
||||
return MapstructUtils.convert(tbFloorVo, RemoteFloorVo.class);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<TreeNode<Long>> queryTreeList() {
|
||||
|
||||
List<TreeNode<Long>> treeList = new ArrayList<>();
|
||||
List<TbCommunityVo> tbCommunityVos = tbCommunityService.queryAll();
|
||||
if (tbCommunityVos == null || tbCommunityVos.isEmpty()) {
|
||||
return treeList;
|
||||
}
|
||||
List<TreeNode<Long>> l1 = tbCommunityVos.stream().map(item -> {
|
||||
TreeNode<Long> node = new TreeNode<>();
|
||||
node.setLevel(1);
|
||||
node.setCode(item.getId());
|
||||
node.setParentCode(0L);
|
||||
node.setLabel(item.getCommunityName());
|
||||
return node;
|
||||
}).toList();
|
||||
treeList.addAll(l1);
|
||||
List<TbBuildingVo> tbBuildingVos = tbBuildingService.queryAll();
|
||||
if (tbBuildingVos == null || tbBuildingVos.isEmpty()) {
|
||||
return treeList;
|
||||
}
|
||||
List<TreeNode<Long>> l2 = tbBuildingVos.stream().map(item -> {
|
||||
TreeNode<Long> node = new TreeNode<>();
|
||||
node.setLevel(2);
|
||||
node.setCode(item.getId());
|
||||
node.setParentCode(item.getCommunityId());
|
||||
node.setLabel(item.getBuildingName());
|
||||
return node;
|
||||
}).toList();
|
||||
treeList.addAll(l2);
|
||||
|
||||
List<TbUnitVo> tbUnitVos = unitService.queryAll();
|
||||
if (tbUnitVos == null || tbUnitVos.isEmpty()) {
|
||||
return treeList;
|
||||
}
|
||||
List<TreeNode<Long>> l3 = tbUnitVos.stream().map(item -> {
|
||||
TreeNode<Long> node = new TreeNode<>();
|
||||
node.setLevel(3);
|
||||
node.setCode(item.getId());
|
||||
node.setParentCode(item.getBuildingId());
|
||||
node.setLabel(item.getUnitName());
|
||||
return node;
|
||||
}).toList();
|
||||
treeList.addAll(l3);
|
||||
List<TbFloorVo> tbFloorVos = floorService.queryAll();
|
||||
if (tbFloorVos == null || tbFloorVos.isEmpty()) {
|
||||
return treeList;
|
||||
}
|
||||
List<TreeNode<Long>> l4 = tbFloorVos.stream().map(item -> {
|
||||
TreeNode<Long> node = new TreeNode<>();
|
||||
node.setLevel(4);
|
||||
node.setCode(item.getId());
|
||||
node.setParentCode(item.getUnitId());
|
||||
node.setLabel(item.getFloorName());
|
||||
return node;
|
||||
}).toList();
|
||||
treeList.addAll(l4);
|
||||
return treeList;
|
||||
}
|
||||
}
|
||||
|
@ -66,10 +66,6 @@ public interface ITbBuildingService {
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 加载当前租户下的所有建筑
|
||||
* @param tenantId 租户编码
|
||||
* @return 返回建筑列表
|
||||
*/
|
||||
List<TbBuildingVo> queryByTenantId(String tenantId);
|
||||
|
||||
List<TbBuildingVo> queryAll();
|
||||
}
|
||||
|
@ -25,13 +25,8 @@ public interface ITbCommunityService {
|
||||
*/
|
||||
TbCommunityVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 查询小区列表
|
||||
*
|
||||
* @param tenantId 租户编码
|
||||
* @return 小区
|
||||
*/
|
||||
List<TbCommunityVo> queryByTenantId(String tenantId);
|
||||
|
||||
List<TbCommunityVo> queryAll();
|
||||
|
||||
/**
|
||||
* 分页查询小区列表
|
||||
@ -77,6 +72,7 @@ public interface ITbCommunityService {
|
||||
|
||||
/**
|
||||
* 加载社区树结构
|
||||
*
|
||||
* @param level 加载等级
|
||||
* @return 树结构
|
||||
*/
|
||||
|
@ -67,5 +67,7 @@ public interface ITbFloorService {
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
List<TbFloorVo> queryByTenantId(String tenantId);
|
||||
|
||||
List<TbFloorVo> queryAll();
|
||||
|
||||
}
|
||||
|
@ -68,5 +68,6 @@ public interface ITbRoomService {
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
List<TbRoomVo> queryByTenantId(String tenantId);
|
||||
List<TbRoomVo> queryAll();
|
||||
|
||||
}
|
||||
|
@ -66,6 +66,7 @@ public interface ITbUnitService {
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
List<TbUnitVo> queryByTenantId(String tenantId);
|
||||
|
||||
List<TbUnitVo> queryAll();
|
||||
|
||||
}
|
||||
|
@ -147,10 +147,9 @@ public class TbBuildingServiceImpl implements ITbBuildingService {
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<TbBuildingVo> queryByTenantId(String tenantId) {
|
||||
LambdaQueryWrapper<TbBuilding> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(TbBuilding::getTenantId, tenantId);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
public List<TbBuildingVo> queryAll() {
|
||||
return baseMapper.selectVoList(null);
|
||||
}
|
||||
}
|
||||
|
@ -45,7 +45,7 @@ public class TbCommunityServiceImpl implements ITbCommunityService {
|
||||
@Override
|
||||
public List<TreeNode<Long>> tree(Integer level, String tenantId) {
|
||||
// 默认加载社区树
|
||||
List<TbCommunityVo> tbCommunityVos = queryByTenantId(tenantId);
|
||||
List<TbCommunityVo> tbCommunityVos = queryAll();
|
||||
if (tbCommunityVos == null || tbCommunityVos.isEmpty()) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
@ -62,7 +62,7 @@ public class TbCommunityServiceImpl implements ITbCommunityService {
|
||||
return community;
|
||||
}
|
||||
if (level >= 2) {
|
||||
List<TbBuildingVo> vos = buildingService.queryByTenantId(tenantId);
|
||||
List<TbBuildingVo> vos = buildingService.queryAll();
|
||||
if (vos != null && !vos.isEmpty()) {
|
||||
List<TreeNode<Long>> list = vos.stream().map(item -> {
|
||||
TreeNode<Long> node = new TreeNode<>();
|
||||
@ -77,7 +77,7 @@ public class TbCommunityServiceImpl implements ITbCommunityService {
|
||||
}
|
||||
}
|
||||
if (level >= 3) {
|
||||
List<TbUnitVo> vos = unitService.queryByTenantId(tenantId);
|
||||
List<TbUnitVo> vos = unitService.queryAll();
|
||||
if (vos != null && !vos.isEmpty()) {
|
||||
List<TreeNode<Long>> list = vos.stream().map(item -> {
|
||||
TreeNode<Long> node = new TreeNode<>();
|
||||
@ -92,7 +92,7 @@ public class TbCommunityServiceImpl implements ITbCommunityService {
|
||||
}
|
||||
}
|
||||
if (level >= 4) {
|
||||
List<TbFloorVo> vos = floorService.queryByTenantId(tenantId);
|
||||
List<TbFloorVo> vos = floorService.queryAll();
|
||||
if (vos != null && !vos.isEmpty()) {
|
||||
List<TreeNode<Long>> list = vos.stream().map(item -> {
|
||||
TreeNode<Long> node = new TreeNode<>();
|
||||
@ -108,7 +108,7 @@ public class TbCommunityServiceImpl implements ITbCommunityService {
|
||||
}
|
||||
|
||||
if (level >= 5) {
|
||||
List<TbRoomVo> vos = roomService.queryByTenantId(tenantId);
|
||||
List<TbRoomVo> vos = roomService.queryAll();
|
||||
if (vos != null && !vos.isEmpty()) {
|
||||
List<TreeNode<Long>> list = vos.stream().map(item -> {
|
||||
TreeNode<Long> node = new TreeNode<>();
|
||||
@ -125,11 +125,10 @@ public class TbCommunityServiceImpl implements ITbCommunityService {
|
||||
return TreeUtils.build(community, 0L);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<TbCommunityVo> queryByTenantId(String tenantId) {
|
||||
LambdaQueryWrapper<TbCommunity> queryWrapper = Wrappers.lambdaQuery();
|
||||
queryWrapper.eq(TbCommunity::getTenantId, tenantId);
|
||||
return baseMapper.selectVoList(queryWrapper);
|
||||
public List<TbCommunityVo> queryAll() {
|
||||
return baseMapper.selectVoList();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -145,9 +145,7 @@ public class TbFloorServiceImpl implements ITbFloorService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TbFloorVo> queryByTenantId(String tenantId) {
|
||||
LambdaQueryWrapper<TbFloor> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(TbFloor::getTenantId, tenantId);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
public List<TbFloorVo> queryAll() {
|
||||
return baseMapper.selectVoList();
|
||||
}
|
||||
}
|
||||
|
@ -146,9 +146,7 @@ public class TbRoomServiceImpl implements ITbRoomService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TbRoomVo> queryByTenantId(String tenantId) {
|
||||
LambdaQueryWrapper<TbRoom> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(TbRoom::getTenantId, tenantId);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
public List<TbRoomVo> queryAll() {
|
||||
return baseMapper.selectVoList();
|
||||
}
|
||||
}
|
||||
|
@ -143,9 +143,7 @@ public class TbUnitServiceImpl implements ITbUnitService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TbUnitVo> queryByTenantId(String tenantId) {
|
||||
LambdaQueryWrapper<TbUnit> queryWrapper = Wrappers.lambdaQuery();
|
||||
queryWrapper.eq(TbUnit::getTenantId, tenantId);
|
||||
return baseMapper.selectVoList(queryWrapper);
|
||||
public List<TbUnitVo> queryAll() {
|
||||
return baseMapper.selectVoList();
|
||||
}
|
||||
}
|
||||
|
@ -1,26 +1,28 @@
|
||||
package org.dromara.sis.controller;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.*;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.domain.TreeNode;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.sis.domain.vo.SisAccessControlVo;
|
||||
import org.dromara.sis.domain.bo.SisAccessControlBo;
|
||||
import org.dromara.sis.service.ISisAccessControlService;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.sis.domain.bo.SisAccessControlBo;
|
||||
import org.dromara.sis.domain.vo.SisAccessControlVo;
|
||||
import org.dromara.sis.service.ISisAccessControlService;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 门禁设备
|
||||
@ -103,4 +105,16 @@ public class SisAccessControlController extends BaseController {
|
||||
@PathVariable("ids") Long[] ids) {
|
||||
return toAjax(sisAccessControlService.deleteWithValidByIds(List.of(ids), true));
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成 社区/建组/单元/楼栋/门禁树结构
|
||||
*
|
||||
* @return 返回门禁树
|
||||
*/
|
||||
@GetMapping("/tree")
|
||||
public R<List<TreeNode<Long>>> queryAcTree() {
|
||||
return R.ok(sisAccessControlService.queryAcTree());
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -1,26 +1,28 @@
|
||||
package org.dromara.sis.controller;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.*;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.sis.domain.vo.SisAuthRecordVo;
|
||||
import org.dromara.sis.domain.bo.SisAuthRecordBo;
|
||||
import org.dromara.sis.service.ISisAuthRecordService;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.sis.domain.bo.SingleAuthRecordBo;
|
||||
import org.dromara.sis.domain.bo.SisAuthRecordBo;
|
||||
import org.dromara.sis.domain.vo.SisAuthRecordVo;
|
||||
import org.dromara.sis.service.ISisAuthRecordService;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 授权记录
|
||||
@ -80,6 +82,18 @@ public class SisAuthRecordController extends BaseController {
|
||||
return toAjax(sisAuthRecordService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增授权记录
|
||||
*/
|
||||
@SaCheckPermission("sis:authRecord:add")
|
||||
@Log(title = "单个人像授权", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping("/auth/single")
|
||||
public R<Void> singleAuth(@Validated(AddGroup.class) @RequestBody SingleAuthRecordBo bo) {
|
||||
return toAjax(sisAuthRecordService.singleAuth(bo));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 修改授权记录
|
||||
*/
|
||||
|
@ -7,6 +7,7 @@ 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;
|
||||
|
||||
/**
|
||||
@ -17,6 +18,7 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
*/
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@RequestMapping("/uniview")
|
||||
public class VideoAlarmController {
|
||||
|
||||
@Resource
|
||||
|
@ -5,11 +5,11 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.sis.sdk.e8.AccessControlService;
|
||||
import org.dromara.sis.sdk.e8.domain.accessControl.req.CustomerAuthAddReq;
|
||||
import org.dromara.sis.sdk.e8.domain.accessControl.req.RemoteOpenDoorReq;
|
||||
import org.dromara.sis.sdk.e8.domain.accessControl.res.AccessRecordFindRes;
|
||||
import org.dromara.sis.sdk.e8.domain.QueryDto;
|
||||
import org.dromara.sis.sdk.e8.domain.accessControl.res.CustomerAuthFindRes;
|
||||
import org.dromara.sis.sdk.e8.domain.accesscontrol.req.CustomerAuthAddReq;
|
||||
import org.dromara.sis.sdk.e8.domain.accesscontrol.req.RemoteOpenDoorReq;
|
||||
import org.dromara.sis.sdk.e8.domain.accesscontrol.res.AccessRecordFindRes;
|
||||
import org.dromara.sis.sdk.e8.domain.accesscontrol.res.CustomerAuthFindRes;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
|
@ -93,5 +93,15 @@ public class SisAccessControl extends TenantEntity {
|
||||
*/
|
||||
private String outCode;
|
||||
|
||||
/**
|
||||
* 绑定设备id
|
||||
*/
|
||||
private Long bindDeviceId;
|
||||
|
||||
/**
|
||||
* 绑定设备ip
|
||||
*/
|
||||
private String bindDeviceIp;
|
||||
|
||||
|
||||
}
|
||||
|
@ -47,5 +47,20 @@ public class SisAuthRecord extends TenantEntity {
|
||||
*/
|
||||
private Long eqbId;
|
||||
|
||||
/**
|
||||
* E8权限ID
|
||||
*/
|
||||
private Long remoteAuthId;
|
||||
|
||||
/*
|
||||
门id
|
||||
*/
|
||||
private Long doorId;
|
||||
|
||||
/**
|
||||
* 设备id
|
||||
*/
|
||||
private Long deviceId;
|
||||
|
||||
|
||||
}
|
||||
|
@ -66,6 +66,4 @@ public class SisEEightRef extends TenantEntity {
|
||||
* E8权限ID
|
||||
*/
|
||||
private Long remoteAuthId;
|
||||
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,44 @@
|
||||
package org.dromara.sis.domain.bo;
|
||||
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.sis.domain.SisAuthRecord;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 授权记录业务对象 sis_auth_record
|
||||
*
|
||||
* @author lxj
|
||||
* @since 2025-06-28
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = SisAuthRecord.class, reverseConvertGenerate = false)
|
||||
public class SingleAuthRecordBo extends BaseEntity {
|
||||
|
||||
|
||||
/**
|
||||
* 图像库Id
|
||||
*/
|
||||
@NotNull(message = "图像库Id不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private Long libId;
|
||||
|
||||
/**
|
||||
* 图像id列表
|
||||
*/
|
||||
@NotNull(message = "图像id列表不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private Long imgId;
|
||||
|
||||
/**
|
||||
* 门禁id列表
|
||||
*/
|
||||
@NotNull(message = "门禁id列表能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private List<Long> acIds;
|
||||
|
||||
}
|
@ -102,6 +102,11 @@ public class SisAccessControlBo extends BaseEntity {
|
||||
/**
|
||||
* 绑定设备Id
|
||||
*/
|
||||
private Long deviceId;
|
||||
private Long bindDeviceId;
|
||||
|
||||
/**
|
||||
* 绑定设备ip
|
||||
*/
|
||||
private String bindDeviceIp;
|
||||
|
||||
}
|
||||
|
@ -1,13 +1,13 @@
|
||||
package org.dromara.sis.domain.bo;
|
||||
|
||||
import org.dromara.sis.domain.SisAuthRecord;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import jakarta.validation.constraints.*;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.sis.domain.SisAuthRecord;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ -22,12 +22,6 @@ import java.util.List;
|
||||
@AutoMapper(target = SisAuthRecord.class, reverseConvertGenerate = false)
|
||||
public class SisAuthRecordBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
@NotNull(message = "主键id不能为空", groups = {EditGroup.class})
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 图像库Id
|
||||
*/
|
||||
|
@ -1,13 +1,14 @@
|
||||
package org.dromara.sis.domain.bo;
|
||||
|
||||
import org.dromara.sis.domain.SisEEightRef;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import jakarta.validation.constraints.*;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.sis.domain.SisEEightRef;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ -66,10 +67,4 @@ public class SisEEightRefBo extends BaseEntity {
|
||||
*/
|
||||
private Long remoteVoucherId;
|
||||
|
||||
/**
|
||||
* E8权限ID
|
||||
*/
|
||||
private Long remoteAuthId;
|
||||
|
||||
|
||||
}
|
||||
|
@ -105,5 +105,11 @@ public class SisAccessControlVo implements Serializable {
|
||||
@ExcelProperty(value = "外部编码")
|
||||
private String outCode;
|
||||
|
||||
private Long bindDeviceId;
|
||||
|
||||
/**
|
||||
* 绑定设备ip
|
||||
*/
|
||||
private String bindDeviceIp;
|
||||
|
||||
}
|
||||
|
@ -55,5 +55,18 @@ public class SisAuthRecordVo implements Serializable {
|
||||
@ExcelProperty(value = "设备id")
|
||||
private Long eqbId;
|
||||
|
||||
/**
|
||||
* E8权限ID
|
||||
*/
|
||||
private Long remoteAuthId;
|
||||
|
||||
/*
|
||||
门id
|
||||
*/
|
||||
private Long doorId;
|
||||
|
||||
/**
|
||||
* 设备id
|
||||
*/
|
||||
private Long deviceId;
|
||||
}
|
||||
|
@ -82,5 +82,4 @@ public class SisEEightRefVo implements Serializable {
|
||||
@ExcelProperty(value = "E8权限ID")
|
||||
private Long remoteAuthId;
|
||||
|
||||
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package org.dromara.sis.mapper;
|
||||
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.dromara.sis.domain.SisAuthRecord;
|
||||
import org.dromara.sis.domain.vo.SisAuthRecordVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
@ -12,4 +13,5 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
*/
|
||||
public interface SisAuthRecordMapper extends BaseMapperPlus<SisAuthRecord, SisAuthRecordVo> {
|
||||
|
||||
SisAuthRecordVo checkAuth(@Param("personId") Integer personId,@Param("accessControlId") Long accessControlId);
|
||||
}
|
||||
|
@ -1,11 +1,12 @@
|
||||
package org.dromara.sis.sdk.e8;
|
||||
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.sis.sdk.e8.domain.accessControl.req.CustomerAuthAddReq;
|
||||
import org.dromara.sis.sdk.e8.domain.accessControl.req.RemoteOpenDoorReq;
|
||||
import org.dromara.sis.sdk.e8.domain.accessControl.res.AccessRecordFindRes;
|
||||
import org.dromara.sis.domain.vo.SisAccessControlVo;
|
||||
import org.dromara.sis.sdk.e8.domain.QueryDto;
|
||||
import org.dromara.sis.sdk.e8.domain.accessControl.res.CustomerAuthFindRes;
|
||||
import org.dromara.sis.sdk.e8.domain.accesscontrol.req.CustomerAuthAddReq;
|
||||
import org.dromara.sis.sdk.e8.domain.accesscontrol.req.RemoteOpenDoorReq;
|
||||
import org.dromara.sis.sdk.e8.domain.accesscontrol.res.AccessRecordFindRes;
|
||||
import org.dromara.sis.sdk.e8.domain.accesscontrol.res.CustomerAuthFindRes;
|
||||
|
||||
/**
|
||||
* @author lsm
|
||||
@ -46,4 +47,6 @@ public interface AccessControlService {
|
||||
* @return TableDataInfo<CustomerAuthFindRes>
|
||||
*/
|
||||
TableDataInfo<CustomerAuthFindRes> getPageCustomerAuth(QueryDto dto);
|
||||
|
||||
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
package org.dromara.sis.sdk.e8.domain.accessControl.req;
|
||||
package org.dromara.sis.sdk.e8.domain.accesscontrol.req;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
|
@ -1,5 +1,4 @@
|
||||
package org.dromara.sis.sdk.e8.domain.accessControl.req;
|
||||
|
||||
package org.dromara.sis.sdk.e8.domain.accesscontrol.req;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package org.dromara.sis.sdk.e8.domain.accessControl.req;
|
||||
package org.dromara.sis.sdk.e8.domain.accesscontrol.req;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
package org.dromara.sis.sdk.e8.domain.accessControl.req;
|
||||
package org.dromara.sis.sdk.e8.domain.accesscontrol.req;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
package org.dromara.sis.sdk.e8.domain.accessControl.res;
|
||||
package org.dromara.sis.sdk.e8.domain.accesscontrol.res;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
package org.dromara.sis.sdk.e8.domain.accessControl.res;
|
||||
package org.dromara.sis.sdk.e8.domain.accesscontrol.res;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
|
@ -3,18 +3,21 @@ package org.dromara.sis.sdk.e8.impl;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.lang.TypeReference;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.sis.domain.SisAccessControl;
|
||||
import org.dromara.sis.domain.vo.SisAccessControlVo;
|
||||
import org.dromara.sis.sdk.e8.AccessControlService;
|
||||
import org.dromara.sis.sdk.e8.domain.accessControl.req.AccessRecordFindReq;
|
||||
import org.dromara.sis.sdk.e8.domain.accessControl.req.CustomerAuthAddReq;
|
||||
import org.dromara.sis.sdk.e8.domain.accessControl.req.CustomerAuthFindReq;
|
||||
import org.dromara.sis.sdk.e8.domain.accessControl.req.RemoteOpenDoorReq;
|
||||
import org.dromara.sis.sdk.e8.domain.accessControl.res.AccessRecordFindRes;
|
||||
import org.dromara.sis.sdk.e8.domain.ApiResp;
|
||||
import org.dromara.sis.sdk.e8.domain.QueryDto;
|
||||
import org.dromara.sis.sdk.e8.domain.accessControl.res.CustomerAuthFindRes;
|
||||
import org.dromara.sis.sdk.e8.domain.accesscontrol.req.AccessRecordFindReq;
|
||||
import org.dromara.sis.sdk.e8.domain.accesscontrol.req.CustomerAuthAddReq;
|
||||
import org.dromara.sis.sdk.e8.domain.accesscontrol.req.CustomerAuthFindReq;
|
||||
import org.dromara.sis.sdk.e8.domain.accesscontrol.req.RemoteOpenDoorReq;
|
||||
import org.dromara.sis.sdk.e8.domain.accesscontrol.res.AccessRecordFindRes;
|
||||
import org.dromara.sis.sdk.e8.domain.accesscontrol.res.CustomerAuthFindRes;
|
||||
import org.dromara.sis.sdk.e8.utils.E8ApiUtil;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
|
@ -1,11 +1,21 @@
|
||||
package org.dromara.sis.sdk.unview.service;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.sis.domain.vo.SisAccessControlVo;
|
||||
import org.dromara.sis.domain.vo.SisAuthRecordVo;
|
||||
import org.dromara.sis.sdk.e8.AccessControlService;
|
||||
import org.dromara.sis.sdk.e8.domain.accesscontrol.req.RemoteOpenDoorReq;
|
||||
import org.dromara.sis.sdk.unview.model.UvModel;
|
||||
import org.dromara.sis.sdk.unview.model.enums.AlarmTypeEnum;
|
||||
import org.dromara.sis.service.ISisAccessControlService;
|
||||
import org.dromara.sis.service.ISisAuthRecordService;
|
||||
import org.dromara.sis.service.ISisDeviceManageService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 宇视人体设备告警数据处理
|
||||
*
|
||||
@ -13,8 +23,14 @@ import org.springframework.stereotype.Service;
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class VideoAlarmService {
|
||||
|
||||
private final ISisDeviceManageService deviceManageService;
|
||||
private final ISisAuthRecordService authRecordService;
|
||||
private final AccessControlService accessControlService;
|
||||
private final ISisAccessControlService sisAccessControlService;
|
||||
|
||||
|
||||
public void handleAlarmData(UvModel.AlarmReportInfo alarmReportData) {
|
||||
Integer type = alarmReportData.getType();
|
||||
@ -90,11 +106,49 @@ public class VideoAlarmService {
|
||||
* @param alarmReportData 告警数据
|
||||
*/
|
||||
private void handleFacialCapture(UvModel.AlarmReportInfo alarmReportData) {
|
||||
List<UvModel.CompareResult> compareResults = alarmReportData.getCompare_results();
|
||||
if (compareResults == null) {
|
||||
log.info("无比对结果,不处理此条数据。");
|
||||
return;
|
||||
}
|
||||
UvModel.ChannelInfo channelInfo = alarmReportData.getChannel_info();
|
||||
if (channelInfo == null) {
|
||||
log.info("上报设备信息不存在,不处理词条数据。");
|
||||
return;
|
||||
}
|
||||
compareResults.forEach(result -> {
|
||||
// 查询设备是偶绑定门径
|
||||
|
||||
// SisDeviceManageVo sisDeviceManageVo = deviceManageService.queryVoByDeviceIp(deviceInfo.getDevice_code());
|
||||
SisAccessControlVo controlVo = sisAccessControlService.queryByBindDeviceIp(channelInfo.getIpc_addr());
|
||||
if (controlVo == null) {
|
||||
log.info("设备[{}]未和门禁绑定,不处理此条数据。", channelInfo.getIpc_addr());
|
||||
return;
|
||||
}
|
||||
// 人像库id
|
||||
// Integer libId = result.getLib_id();
|
||||
// 宇视人员id
|
||||
Integer personId = result.getPerson_id();
|
||||
// 门禁id
|
||||
Long accessControlId = controlVo.getId();
|
||||
// 校验人脸是偶有同行此门禁的权限
|
||||
|
||||
SisAuthRecordVo recordVo = authRecordService.checkAuth(personId, accessControlId);
|
||||
// 如果有通行权限,则打开门禁
|
||||
if (recordVo == null) {
|
||||
log.info("此人像[{}]没有门禁[{}]的通行权限。", personId, accessControlId);
|
||||
}
|
||||
// 打开门禁
|
||||
RemoteOpenDoorReq remoteOpenDoorReq = new RemoteOpenDoorReq();
|
||||
remoteOpenDoorReq.setType(0);
|
||||
remoteOpenDoorReq.setReason("宇视人像识别,人像id=" + recordVo.getImgId());
|
||||
remoteOpenDoorReq.setOperatorId(0L);
|
||||
RemoteOpenDoorReq.ControlData data = new RemoteOpenDoorReq.ControlData();
|
||||
data.setDoorId(recordVo.getDoorId());
|
||||
data.setDeviceId(recordVo.getDeviceId());
|
||||
remoteOpenDoorReq.setControlList(List.of(data));
|
||||
log.info("远程开门参数,params={}", JSONObject.toJSONString(remoteOpenDoorReq));
|
||||
Boolean b = accessControlService.remoteOpenDoor(remoteOpenDoorReq);
|
||||
log.info("远程开门完成, result={}", b);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1,5 +1,6 @@
|
||||
package org.dromara.sis.service;
|
||||
|
||||
import org.dromara.common.core.domain.TreeNode;
|
||||
import org.dromara.sis.domain.SisAccessControl;
|
||||
import org.dromara.sis.domain.vo.SisAccessControlVo;
|
||||
import org.dromara.sis.domain.bo.SisAccessControlBo;
|
||||
@ -74,4 +75,20 @@ public interface ISisAccessControlService {
|
||||
* @return 列表
|
||||
*/
|
||||
List<SisAccessControlVo> queryListByIds(Collection<Long> ids);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 通过绑定设备ip查询门禁
|
||||
* @param deviceCode 设备ip
|
||||
* @return
|
||||
*/
|
||||
SisAccessControlVo queryByBindDeviceIp(String deviceCode);
|
||||
|
||||
/**
|
||||
* 查询门禁树
|
||||
* @return
|
||||
*/
|
||||
List<TreeNode<Long>> queryAcTree();
|
||||
|
||||
}
|
||||
|
@ -1,10 +1,10 @@
|
||||
package org.dromara.sis.service;
|
||||
|
||||
import org.dromara.sis.domain.SisAuthRecord;
|
||||
import org.dromara.sis.domain.vo.SisAuthRecordVo;
|
||||
import org.dromara.sis.domain.bo.SisAuthRecordBo;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.sis.domain.bo.SingleAuthRecordBo;
|
||||
import org.dromara.sis.domain.bo.SisAuthRecordBo;
|
||||
import org.dromara.sis.domain.vo.SisAuthRecordVo;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
@ -66,4 +66,21 @@ public interface ISisAuthRecordService {
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 通过宇视图片id和门禁id校验此图像是否有通行权限
|
||||
*
|
||||
* @param personId 人像id
|
||||
* @param accessControlId 门禁id
|
||||
* @return 返回授权记录
|
||||
*/
|
||||
SisAuthRecordVo checkAuth(Integer personId, Long accessControlId);
|
||||
|
||||
/**
|
||||
* 单个人像授权
|
||||
*
|
||||
* @param bo 授权信息
|
||||
* @return 是否授权成功
|
||||
*/
|
||||
Boolean singleAuth(SingleAuthRecordBo bo);
|
||||
}
|
||||
|
@ -1,9 +1,9 @@
|
||||
package org.dromara.sis.service;
|
||||
|
||||
import org.dromara.sis.domain.vo.SisDeviceManageVo;
|
||||
import org.dromara.sis.domain.bo.SisDeviceManageBo;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.sis.domain.bo.SisDeviceManageBo;
|
||||
import org.dromara.sis.domain.vo.SisDeviceManageVo;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
@ -65,4 +65,12 @@ public interface ISisDeviceManageService {
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 通过设备ip查询设备信息
|
||||
*
|
||||
* @param deviceCode 设备编码
|
||||
* @return 设备信息
|
||||
*/
|
||||
SisDeviceManageVo queryVoByDeviceIp(Integer deviceCode);
|
||||
}
|
||||
|
@ -1,10 +1,9 @@
|
||||
package org.dromara.sis.service;
|
||||
|
||||
import org.dromara.sis.domain.SisEEightRef;
|
||||
import org.dromara.sis.domain.vo.SisEEightRefVo;
|
||||
import org.dromara.sis.domain.bo.SisEEightRefBo;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.sis.domain.bo.SisEEightRefBo;
|
||||
import org.dromara.sis.domain.vo.SisEEightRefVo;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
@ -50,6 +49,10 @@ public interface ISisEEightRefService {
|
||||
*/
|
||||
Boolean insertByBo(SisEEightRefBo bo);
|
||||
|
||||
|
||||
Boolean batchInsert(List<SisEEightRefBo> bos);
|
||||
|
||||
|
||||
/**
|
||||
* 修改E8平台对应关系
|
||||
*
|
||||
|
@ -8,16 +8,18 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.dubbo.config.annotation.DubboReference;
|
||||
import org.dromara.common.core.domain.TreeNode;
|
||||
import org.dromara.common.core.utils.MapstructUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.core.utils.TreeUtils;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.property.api.RemoteFloorService;
|
||||
import org.dromara.property.api.domain.vo.RemoteFloorVo;
|
||||
import org.dromara.sis.domain.SisAccessControl;
|
||||
import org.dromara.sis.domain.bo.SisAccessControlBo;
|
||||
import org.dromara.sis.domain.bo.SisDeviceManageBo;
|
||||
import org.dromara.sis.domain.vo.SisAccessControlVo;
|
||||
import org.dromara.sis.domain.vo.SisDeviceManageVo;
|
||||
import org.dromara.sis.mapper.SisAccessControlMapper;
|
||||
import org.dromara.sis.sdk.e8.DoorDeviceService;
|
||||
import org.dromara.sis.sdk.e8.domain.door.req.DoorDeviceAddReq;
|
||||
@ -121,11 +123,15 @@ public class SisAccessControlServiceImpl implements ISisAccessControlService {
|
||||
// 校验楼层是否存在
|
||||
RemoteFloorVo remoteFloorVo = remoteFloorService.queryByFloorId(bo.getFloorId());
|
||||
Assert.notNull(remoteFloorVo, "当前楼层信息不存在。");
|
||||
// 检验设备是否存在
|
||||
SisDeviceManageVo sisDeviceManageVo = sisDeviceManageService.queryById(bo.getBindDeviceId());
|
||||
Assert.notNull(sisDeviceManageVo, "绑定设备不存在。");
|
||||
SisAccessControl add = MapstructUtils.convert(bo, SisAccessControl.class);
|
||||
add.setCommunityId(remoteFloorVo.getCommunityId());
|
||||
add.setBuildingId(remoteFloorVo.getBuildingId());
|
||||
add.setUnitId(remoteFloorVo.getUnitId());
|
||||
add.setFloorId(remoteFloorVo.getId());
|
||||
add.setBindDeviceIp(sisDeviceManageVo.getDeviceIp());
|
||||
Assert.notNull(add, "数据处理失败");
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
@ -162,13 +168,13 @@ public class SisAccessControlServiceImpl implements ISisAccessControlService {
|
||||
log.info("E8平台写入完成!");
|
||||
}
|
||||
|
||||
// 判断是否绑定摄像头
|
||||
if (bo.getDeviceId() != null) {
|
||||
// 摄像头不绑定门禁,让门禁去绑定摄像头
|
||||
/*if (bo.getBindDeviceId() != null) {
|
||||
SisDeviceManageBo device = new SisDeviceManageBo();
|
||||
device.setId(bo.getDeviceId());
|
||||
device.setId(bo.getBindDeviceId());
|
||||
device.setAccessControlId(add.getId());
|
||||
sisDeviceManageService.updateByBo(device);
|
||||
}
|
||||
}*/
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
@ -218,4 +224,29 @@ public class SisAccessControlServiceImpl implements ISisAccessControlService {
|
||||
public List<SisAccessControlVo> queryListByIds(Collection<Long> ids) {
|
||||
return baseMapper.selectVoByIds(ids);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SisAccessControlVo queryByBindDeviceIp(String deviceCode) {
|
||||
LambdaQueryWrapper<SisAccessControl> wrapper = new LambdaQueryWrapper<>();
|
||||
return baseMapper.selectVoOne(wrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TreeNode<Long>> queryAcTree() {
|
||||
List<TreeNode<Long>> treeNodes = remoteFloorService.queryTreeList();
|
||||
// 查询所有的门禁
|
||||
List<SisAccessControlVo> sisAccessControlVos = baseMapper.selectVoList();
|
||||
if (sisAccessControlVos != null && !sisAccessControlVos.isEmpty()) {
|
||||
List<TreeNode<Long>> l1 = sisAccessControlVos.stream().map(item -> {
|
||||
TreeNode<Long> node = new TreeNode<>();
|
||||
node.setLevel(4);
|
||||
node.setCode(item.getId());
|
||||
node.setParentCode(item.getFloorId());
|
||||
node.setLabel(item.getAccessName());
|
||||
return node;
|
||||
}).toList();
|
||||
treeNodes.addAll(l1);
|
||||
}
|
||||
return TreeUtils.build(treeNodes, 0L);
|
||||
}
|
||||
}
|
||||
|
@ -1,31 +1,31 @@
|
||||
package org.dromara.sis.service.impl;
|
||||
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import org.dromara.common.core.utils.MapstructUtils;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.sis.domain.bo.SisEEightRefBo;
|
||||
import org.dromara.common.core.utils.MapstructUtils;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.sis.domain.SisAuthRecord;
|
||||
import org.dromara.sis.domain.bo.SingleAuthRecordBo;
|
||||
import org.dromara.sis.domain.bo.SisAuthRecordBo;
|
||||
import org.dromara.sis.domain.bo.SisLibDeviceImgRefBo;
|
||||
import org.dromara.sis.domain.bo.SisLibDeviceRefBo;
|
||||
import org.dromara.sis.domain.vo.*;
|
||||
import org.dromara.sis.mapper.SisAuthRecordMapper;
|
||||
import org.dromara.sis.sdk.e8.AccessControlService;
|
||||
import org.dromara.sis.sdk.e8.DoorDeviceService;
|
||||
import org.dromara.sis.sdk.e8.VoucherControlService;
|
||||
import org.dromara.sis.sdk.e8.domain.accessControl.req.CustomerAuthAddReq;
|
||||
import org.dromara.sis.sdk.e8.domain.accesscontrol.req.CustomerAuthAddReq;
|
||||
import org.dromara.sis.sdk.e8.domain.door.res.AuthDoorDeviceFindRes;
|
||||
import org.dromara.sis.sdk.e8.domain.voucher.req.IssueVoucherReq;
|
||||
import org.dromara.sis.sdk.unview.UnViewAiBoxApi;
|
||||
import org.dromara.sis.sdk.unview.model.UvModel;
|
||||
import org.dromara.sis.service.*;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.dromara.sis.domain.bo.SisAuthRecordBo;
|
||||
import org.dromara.sis.domain.SisAuthRecord;
|
||||
import org.dromara.sis.mapper.SisAuthRecordMapper;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.nio.file.Files;
|
||||
@ -116,7 +116,7 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService {
|
||||
List<Long> eqpIds = refVos.stream().map(SisLibDeviceRefVo::getEqpId).toList();
|
||||
|
||||
|
||||
boolean flag = false;
|
||||
/* boolean flag = false;
|
||||
log.info("开始写入授权记录,图片:{}、门禁:{}、设备:{}", bo.getImgIds(), bo.getAcIds(), eqpIds);
|
||||
for (Long imgId : bo.getImgIds()) {
|
||||
for (Long acId : bo.getAcIds()) {
|
||||
@ -131,7 +131,7 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService {
|
||||
}
|
||||
}
|
||||
}
|
||||
log.info("授权记录写入完成");
|
||||
log.info("授权记录写入完成");*/
|
||||
|
||||
SisPersonLibVo libVo = sisPersonLibService.queryById(bo.getLibId());
|
||||
Assert.notNull(libVo, "图像库不存在,id=" + (bo.getLibId()));
|
||||
@ -228,26 +228,36 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService {
|
||||
log.info("E8平台发行凭证完成!");
|
||||
|
||||
log.info("E8平台授权凭证");
|
||||
// E8平台授权门列表
|
||||
// 查询所有e8设备并分组
|
||||
List<AuthDoorDeviceFindRes> authDoor = e8DoorDeviceService.getPageAuthDoorDeviceList();
|
||||
Map<Long, AuthDoorDeviceFindRes> authDoorMap = authDoor.stream()
|
||||
.collect(Collectors.toMap(AuthDoorDeviceFindRes::getDeviceId, authDoorRes -> authDoorRes));
|
||||
Map<Long, AuthDoorDeviceFindRes> authDoorMap = authDoor.stream().collect(Collectors.toMap(AuthDoorDeviceFindRes::getDeviceId, authDoorRes -> authDoorRes));
|
||||
|
||||
List<CustomerAuthAddReq.AuthGroupData> authList = acList.stream()
|
||||
.filter(acVo -> acVo.getControlType() != 1 && acVo.getAccessType() != 2)
|
||||
.map(acVo -> {
|
||||
// E8 授权列表
|
||||
List<CustomerAuthAddReq.AuthGroupData> authList = new ArrayList<>(acList.size());
|
||||
// 授权记录
|
||||
List<SisAuthRecord> recordList = new ArrayList<>(acList.size());
|
||||
for (SisAccessControlVo sisAccessControlVo : acList) {
|
||||
if (sisAccessControlVo.getControlType() != 1 && sisAccessControlVo.getAccessType() != 2) {
|
||||
SisAuthRecord authRecord = new SisAuthRecord();
|
||||
CustomerAuthAddReq.AuthGroupData door = new CustomerAuthAddReq.AuthGroupData();
|
||||
door.setType(0);
|
||||
door.setGatewayType(1);
|
||||
Long id = Long.parseLong(acVo.getOutCode());
|
||||
Long id = Long.parseLong(sisAccessControlVo.getOutCode());
|
||||
door.setId(id);
|
||||
|
||||
authRecord.setDoorId(id);
|
||||
// 如果 authDoorMap 中存在对应的 deviceId,则更新 id
|
||||
AuthDoorDeviceFindRes authDoorRes = authDoorMap.get(id);
|
||||
if (authDoorRes != null) {
|
||||
door.setId(authDoorRes.getId());
|
||||
authRecord.setDeviceId(authDoorRes.getDeviceId());
|
||||
}
|
||||
authRecord.setLibId(imgVo.getLibId());
|
||||
authRecord.setImgId(imgVo.getId());
|
||||
authRecord.setAcId(sisAccessControlVo.getId());
|
||||
recordList.add(authRecord);
|
||||
}
|
||||
}
|
||||
return door;
|
||||
}).toList();
|
||||
|
||||
CustomerAuthAddReq authReq = new CustomerAuthAddReq();
|
||||
authReq.setAuthType(0);
|
||||
@ -259,15 +269,7 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService {
|
||||
Boolean auth = e8AccessControlService.addCustomerAuth(authReq);
|
||||
Assert.isTrue(auth, "E8平台授权失败");
|
||||
log.info("E8平台授权完成!");
|
||||
|
||||
SisEEightRefBo ref = new SisEEightRefBo();
|
||||
ref.setUserId(1L);
|
||||
ref.setRemoteImgUrl(url);
|
||||
ref.setRemoteVoucherId(vId);
|
||||
ref.setAcIds(bo.getAcIds());
|
||||
ref.setRemoteUserId(539696740646981L);
|
||||
ref.setImgId(imgVo.getId());
|
||||
Boolean insert = sisEEightRefService.insertByBo(ref);
|
||||
boolean insert = baseMapper.insertBatch(recordList);
|
||||
Assert.isTrue(insert, "写入E8关联关系表失败!");
|
||||
}
|
||||
log.info("写入E8平台完成!");
|
||||
@ -276,7 +278,12 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService {
|
||||
throw new RuntimeException(e.getMessage());
|
||||
}
|
||||
|
||||
return flag;
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean singleAuth(SingleAuthRecordBo bo) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -313,4 +320,9 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService {
|
||||
}
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SisAuthRecordVo checkAuth(Integer personId, Long accessControlId) {
|
||||
return baseMapper.checkAuth(personId, accessControlId);
|
||||
}
|
||||
}
|
||||
|
@ -136,4 +136,11 @@ public class SisDeviceManageServiceImpl implements ISisDeviceManageService {
|
||||
}
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SisDeviceManageVo queryVoByDeviceIp(Integer deviceCode) {
|
||||
LambdaQueryWrapper<SisDeviceManage> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(SisDeviceManage::getDeviceIp, deviceCode);
|
||||
return baseMapper.selectVoById(lqw);
|
||||
}
|
||||
}
|
||||
|
@ -1,26 +1,26 @@
|
||||
package org.dromara.sis.service.impl;
|
||||
|
||||
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;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.dromara.common.core.utils.MapstructUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.sis.domain.SisEEightRef;
|
||||
import org.dromara.sis.domain.bo.SisEEightRefBo;
|
||||
import org.dromara.sis.domain.vo.SisEEightRefVo;
|
||||
import org.dromara.sis.domain.SisEEightRef;
|
||||
import org.dromara.sis.mapper.SisEEightRefMapper;
|
||||
import org.dromara.sis.service.ISisEEightRefService;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* E8平台对应关系Service业务层处理
|
||||
@ -87,7 +87,6 @@ public class SisEEightRefServiceImpl implements ISisEEightRefService {
|
||||
lqw.eq(bo.getRemoteUserId() != null, SisEEightRef::getRemoteUserId, bo.getRemoteUserId());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getRemoteImgUrl()), SisEEightRef::getRemoteImgUrl, bo.getRemoteImgUrl());
|
||||
lqw.eq(bo.getRemoteVoucherId() != null, SisEEightRef::getRemoteVoucherId, bo.getRemoteVoucherId());
|
||||
lqw.eq(bo.getRemoteAuthId() != null, SisEEightRef::getRemoteAuthId, bo.getRemoteAuthId());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
@ -105,6 +104,12 @@ public class SisEEightRefServiceImpl implements ISisEEightRefService {
|
||||
return baseMapper.insert(add) > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean batchInsert(List<SisEEightRefBo> bos) {
|
||||
List<SisEEightRef> convert = MapstructUtils.convert(bos, SisEEightRef.class);
|
||||
return baseMapper.insertBatch(convert);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改E8平台对应关系
|
||||
*
|
||||
|
@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.dromara.sis.mapper.SisAuthRecordMapper">
|
||||
|
||||
<select id="checkAuth" resultType="org.dromara.sis.domain.vo.SisAuthRecordVo">
|
||||
SELECT a.*
|
||||
FROM sis_auth_record a
|
||||
LEFT JOIN sis_lib_device_img_ref b ON a.lib_id = b.lib_id AND a.img_id = b.img_id
|
||||
WHERE a.ac_id = #{accessControlId}
|
||||
AND b.eqp_lib_img_id = #{personId}
|
||||
</select>
|
||||
</mapper>
|
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.dromara.sis.mapper.SisEEightRefMapper">
|
||||
|
||||
</mapper>
|
Loading…
Reference in New Issue
Block a user