This commit is contained in:
parent
6ea6c79341
commit
3837c2f2ef
@ -1,7 +1,10 @@
|
|||||||
package org.dromara.property.api;
|
package org.dromara.property.api;
|
||||||
|
|
||||||
|
import org.dromara.common.core.domain.TreeNode;
|
||||||
import org.dromara.property.api.domain.vo.RemoteFloorVo;
|
import org.dromara.property.api.domain.vo.RemoteFloorVo;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 楼层的远程服务调用
|
* 楼层的远程服务调用
|
||||||
*
|
*
|
||||||
@ -12,4 +15,10 @@ public interface RemoteFloorService {
|
|||||||
|
|
||||||
RemoteFloorVo queryByFloorId(Long floorId);
|
RemoteFloorVo queryByFloorId(Long floorId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取 社区/楼栋/单元/楼栋 集合
|
||||||
|
*/
|
||||||
|
List<TreeNode<Long>> queryTreeList();
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,12 +1,14 @@
|
|||||||
package org.dromara.common.core.domain;
|
package org.dromara.common.core.domain;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通用tree构建工具类
|
* 通用tree构建工具类
|
||||||
|
*
|
||||||
* @param <E>
|
* @param <E>
|
||||||
*/
|
*/
|
||||||
public interface TreeEntity<E, T> {
|
public interface TreeEntity<E, T> extends Serializable {
|
||||||
|
|
||||||
T getId();
|
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;
|
private Long communityId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -3,11 +3,21 @@ package org.dromara.property.dubbo;
|
|||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.dubbo.config.annotation.DubboService;
|
import org.apache.dubbo.config.annotation.DubboService;
|
||||||
|
import org.dromara.common.core.domain.TreeNode;
|
||||||
import org.dromara.common.core.utils.MapstructUtils;
|
import org.dromara.common.core.utils.MapstructUtils;
|
||||||
import org.dromara.property.api.RemoteFloorService;
|
import org.dromara.property.api.RemoteFloorService;
|
||||||
import org.dromara.property.api.domain.vo.RemoteFloorVo;
|
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.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.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
|
@DubboService
|
||||||
public class RemoteFloorServiceImpl implements RemoteFloorService {
|
public class RemoteFloorServiceImpl implements RemoteFloorService {
|
||||||
|
|
||||||
|
private final ITbCommunityService tbCommunityService;
|
||||||
|
private final ITbBuildingService tbBuildingService;
|
||||||
|
private final ITbUnitService unitService;
|
||||||
private final ITbFloorService floorService;
|
private final ITbFloorService floorService;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public RemoteFloorVo queryByFloorId(Long floorId) {
|
public RemoteFloorVo queryByFloorId(Long floorId) {
|
||||||
TbFloorVo tbFloorVo = floorService.queryById(floorId);
|
TbFloorVo tbFloorVo = floorService.queryById(floorId);
|
||||||
return MapstructUtils.convert(tbFloorVo, RemoteFloorVo.class);
|
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);
|
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||||
|
|
||||||
/**
|
|
||||||
* 加载当前租户下的所有建筑
|
List<TbBuildingVo> queryAll();
|
||||||
* @param tenantId 租户编码
|
|
||||||
* @return 返回建筑列表
|
|
||||||
*/
|
|
||||||
List<TbBuildingVo> queryByTenantId(String tenantId);
|
|
||||||
}
|
}
|
||||||
|
@ -25,13 +25,8 @@ public interface ITbCommunityService {
|
|||||||
*/
|
*/
|
||||||
TbCommunityVo queryById(Long id);
|
TbCommunityVo queryById(Long id);
|
||||||
|
|
||||||
/**
|
|
||||||
* 查询小区列表
|
List<TbCommunityVo> queryAll();
|
||||||
*
|
|
||||||
* @param tenantId 租户编码
|
|
||||||
* @return 小区
|
|
||||||
*/
|
|
||||||
List<TbCommunityVo> queryByTenantId(String tenantId);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分页查询小区列表
|
* 分页查询小区列表
|
||||||
@ -77,9 +72,10 @@ public interface ITbCommunityService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 加载社区树结构
|
* 加载社区树结构
|
||||||
|
*
|
||||||
* @param level 加载等级
|
* @param level 加载等级
|
||||||
* @return 树结构
|
* @return 树结构
|
||||||
*/
|
*/
|
||||||
List<TreeNode<Long>> tree(Integer level,String tenantId);
|
List<TreeNode<Long>> tree(Integer level, String tenantId);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -67,5 +67,7 @@ public interface ITbFloorService {
|
|||||||
*/
|
*/
|
||||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
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);
|
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);
|
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;
|
return baseMapper.deleteByIds(ids) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<TbBuildingVo> queryByTenantId(String tenantId) {
|
public List<TbBuildingVo> queryAll() {
|
||||||
LambdaQueryWrapper<TbBuilding> lqw = Wrappers.lambdaQuery();
|
return baseMapper.selectVoList(null);
|
||||||
lqw.eq(TbBuilding::getTenantId, tenantId);
|
|
||||||
return baseMapper.selectVoList(lqw);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -45,7 +45,7 @@ public class TbCommunityServiceImpl implements ITbCommunityService {
|
|||||||
@Override
|
@Override
|
||||||
public List<TreeNode<Long>> tree(Integer level, String tenantId) {
|
public List<TreeNode<Long>> tree(Integer level, String tenantId) {
|
||||||
// 默认加载社区树
|
// 默认加载社区树
|
||||||
List<TbCommunityVo> tbCommunityVos = queryByTenantId(tenantId);
|
List<TbCommunityVo> tbCommunityVos = queryAll();
|
||||||
if (tbCommunityVos == null || tbCommunityVos.isEmpty()) {
|
if (tbCommunityVos == null || tbCommunityVos.isEmpty()) {
|
||||||
return new ArrayList<>();
|
return new ArrayList<>();
|
||||||
}
|
}
|
||||||
@ -62,7 +62,7 @@ public class TbCommunityServiceImpl implements ITbCommunityService {
|
|||||||
return community;
|
return community;
|
||||||
}
|
}
|
||||||
if (level >= 2) {
|
if (level >= 2) {
|
||||||
List<TbBuildingVo> vos = buildingService.queryByTenantId(tenantId);
|
List<TbBuildingVo> vos = buildingService.queryAll();
|
||||||
if (vos != null && !vos.isEmpty()) {
|
if (vos != null && !vos.isEmpty()) {
|
||||||
List<TreeNode<Long>> list = vos.stream().map(item -> {
|
List<TreeNode<Long>> list = vos.stream().map(item -> {
|
||||||
TreeNode<Long> node = new TreeNode<>();
|
TreeNode<Long> node = new TreeNode<>();
|
||||||
@ -77,7 +77,7 @@ public class TbCommunityServiceImpl implements ITbCommunityService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (level >= 3) {
|
if (level >= 3) {
|
||||||
List<TbUnitVo> vos = unitService.queryByTenantId(tenantId);
|
List<TbUnitVo> vos = unitService.queryAll();
|
||||||
if (vos != null && !vos.isEmpty()) {
|
if (vos != null && !vos.isEmpty()) {
|
||||||
List<TreeNode<Long>> list = vos.stream().map(item -> {
|
List<TreeNode<Long>> list = vos.stream().map(item -> {
|
||||||
TreeNode<Long> node = new TreeNode<>();
|
TreeNode<Long> node = new TreeNode<>();
|
||||||
@ -92,7 +92,7 @@ public class TbCommunityServiceImpl implements ITbCommunityService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (level >= 4) {
|
if (level >= 4) {
|
||||||
List<TbFloorVo> vos = floorService.queryByTenantId(tenantId);
|
List<TbFloorVo> vos = floorService.queryAll();
|
||||||
if (vos != null && !vos.isEmpty()) {
|
if (vos != null && !vos.isEmpty()) {
|
||||||
List<TreeNode<Long>> list = vos.stream().map(item -> {
|
List<TreeNode<Long>> list = vos.stream().map(item -> {
|
||||||
TreeNode<Long> node = new TreeNode<>();
|
TreeNode<Long> node = new TreeNode<>();
|
||||||
@ -108,7 +108,7 @@ public class TbCommunityServiceImpl implements ITbCommunityService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (level >= 5) {
|
if (level >= 5) {
|
||||||
List<TbRoomVo> vos = roomService.queryByTenantId(tenantId);
|
List<TbRoomVo> vos = roomService.queryAll();
|
||||||
if (vos != null && !vos.isEmpty()) {
|
if (vos != null && !vos.isEmpty()) {
|
||||||
List<TreeNode<Long>> list = vos.stream().map(item -> {
|
List<TreeNode<Long>> list = vos.stream().map(item -> {
|
||||||
TreeNode<Long> node = new TreeNode<>();
|
TreeNode<Long> node = new TreeNode<>();
|
||||||
@ -125,11 +125,10 @@ public class TbCommunityServiceImpl implements ITbCommunityService {
|
|||||||
return TreeUtils.build(community, 0L);
|
return TreeUtils.build(community, 0L);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<TbCommunityVo> queryByTenantId(String tenantId) {
|
public List<TbCommunityVo> queryAll() {
|
||||||
LambdaQueryWrapper<TbCommunity> queryWrapper = Wrappers.lambdaQuery();
|
return baseMapper.selectVoList();
|
||||||
queryWrapper.eq(TbCommunity::getTenantId, tenantId);
|
|
||||||
return baseMapper.selectVoList(queryWrapper);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -145,9 +145,7 @@ public class TbFloorServiceImpl implements ITbFloorService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<TbFloorVo> queryByTenantId(String tenantId) {
|
public List<TbFloorVo> queryAll() {
|
||||||
LambdaQueryWrapper<TbFloor> lqw = Wrappers.lambdaQuery();
|
return baseMapper.selectVoList();
|
||||||
lqw.eq(TbFloor::getTenantId, tenantId);
|
|
||||||
return baseMapper.selectVoList(lqw);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -146,9 +146,7 @@ public class TbRoomServiceImpl implements ITbRoomService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<TbRoomVo> queryByTenantId(String tenantId) {
|
public List<TbRoomVo> queryAll() {
|
||||||
LambdaQueryWrapper<TbRoom> lqw = Wrappers.lambdaQuery();
|
return baseMapper.selectVoList();
|
||||||
lqw.eq(TbRoom::getTenantId, tenantId);
|
|
||||||
return baseMapper.selectVoList(lqw);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -143,9 +143,7 @@ public class TbUnitServiceImpl implements ITbUnitService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<TbUnitVo> queryByTenantId(String tenantId) {
|
public List<TbUnitVo> queryAll() {
|
||||||
LambdaQueryWrapper<TbUnit> queryWrapper = Wrappers.lambdaQuery();
|
return baseMapper.selectVoList();
|
||||||
queryWrapper.eq(TbUnit::getTenantId, tenantId);
|
|
||||||
return baseMapper.selectVoList(queryWrapper);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,26 +1,28 @@
|
|||||||
package org.dromara.sis.controller;
|
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 cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import org.dromara.common.log.annotation.Log;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.dromara.common.web.core.BaseController;
|
|
||||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
|
||||||
import org.dromara.common.core.domain.R;
|
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.AddGroup;
|
||||||
import org.dromara.common.core.validate.EditGroup;
|
import org.dromara.common.core.validate.EditGroup;
|
||||||
import org.dromara.common.log.enums.BusinessType;
|
|
||||||
import org.dromara.common.excel.utils.ExcelUtil;
|
import org.dromara.common.excel.utils.ExcelUtil;
|
||||||
import org.dromara.sis.domain.vo.SisAccessControlVo;
|
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||||
import org.dromara.sis.domain.bo.SisAccessControlBo;
|
import org.dromara.common.log.annotation.Log;
|
||||||
import org.dromara.sis.service.ISisAccessControlService;
|
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.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;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 门禁设备
|
* 门禁设备
|
||||||
@ -65,7 +67,7 @@ public class SisAccessControlController extends BaseController {
|
|||||||
@SaCheckPermission("sis:accessControl:query")
|
@SaCheckPermission("sis:accessControl:query")
|
||||||
@GetMapping("/{id}")
|
@GetMapping("/{id}")
|
||||||
public R<SisAccessControlVo> getInfo(@NotNull(message = "主键不能为空")
|
public R<SisAccessControlVo> getInfo(@NotNull(message = "主键不能为空")
|
||||||
@PathVariable("id") Long id) {
|
@PathVariable("id") Long id) {
|
||||||
return R.ok(sisAccessControlService.queryById(id));
|
return R.ok(sisAccessControlService.queryById(id));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -103,4 +105,16 @@ public class SisAccessControlController extends BaseController {
|
|||||||
@PathVariable("ids") Long[] ids) {
|
@PathVariable("ids") Long[] ids) {
|
||||||
return toAjax(sisAccessControlService.deleteWithValidByIds(List.of(ids), true));
|
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;
|
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 cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import org.dromara.common.log.annotation.Log;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.dromara.common.web.core.BaseController;
|
|
||||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
|
||||||
import org.dromara.common.core.domain.R;
|
import org.dromara.common.core.domain.R;
|
||||||
import org.dromara.common.core.validate.AddGroup;
|
import org.dromara.common.core.validate.AddGroup;
|
||||||
import org.dromara.common.core.validate.EditGroup;
|
import org.dromara.common.core.validate.EditGroup;
|
||||||
import org.dromara.common.log.enums.BusinessType;
|
|
||||||
import org.dromara.common.excel.utils.ExcelUtil;
|
import org.dromara.common.excel.utils.ExcelUtil;
|
||||||
import org.dromara.sis.domain.vo.SisAuthRecordVo;
|
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||||
import org.dromara.sis.domain.bo.SisAuthRecordBo;
|
import org.dromara.common.log.annotation.Log;
|
||||||
import org.dromara.sis.service.ISisAuthRecordService;
|
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.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;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 授权记录
|
* 授权记录
|
||||||
@ -65,7 +67,7 @@ public class SisAuthRecordController extends BaseController {
|
|||||||
@SaCheckPermission("sis:authRecord:query")
|
@SaCheckPermission("sis:authRecord:query")
|
||||||
@GetMapping("/{id}")
|
@GetMapping("/{id}")
|
||||||
public R<SisAuthRecordVo> getInfo(@NotNull(message = "主键不能为空")
|
public R<SisAuthRecordVo> getInfo(@NotNull(message = "主键不能为空")
|
||||||
@PathVariable("id") Long id) {
|
@PathVariable("id") Long id) {
|
||||||
return R.ok(sisAuthRecordService.queryById(id));
|
return R.ok(sisAuthRecordService.queryById(id));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -80,6 +82,18 @@ public class SisAuthRecordController extends BaseController {
|
|||||||
return toAjax(sisAuthRecordService.insertByBo(bo));
|
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.dromara.sis.sdk.unview.service.VideoAlarmService;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -17,6 +18,7 @@ import org.springframework.web.bind.annotation.RestController;
|
|||||||
*/
|
*/
|
||||||
@RestController
|
@RestController
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
|
@RequestMapping("/uniview")
|
||||||
public class VideoAlarmController {
|
public class VideoAlarmController {
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
|
@ -5,11 +5,11 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import org.dromara.common.core.domain.R;
|
import org.dromara.common.core.domain.R;
|
||||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
import org.dromara.sis.sdk.e8.AccessControlService;
|
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.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.PostMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
@ -93,5 +93,15 @@ public class SisAccessControl extends TenantEntity {
|
|||||||
*/
|
*/
|
||||||
private String outCode;
|
private String outCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 绑定设备id
|
||||||
|
*/
|
||||||
|
private Long bindDeviceId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 绑定设备ip
|
||||||
|
*/
|
||||||
|
private String bindDeviceIp;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -47,5 +47,20 @@ public class SisAuthRecord extends TenantEntity {
|
|||||||
*/
|
*/
|
||||||
private Long eqbId;
|
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
|
* E8权限ID
|
||||||
*/
|
*/
|
||||||
private Long remoteAuthId;
|
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
|
* 绑定设备Id
|
||||||
*/
|
*/
|
||||||
private Long deviceId;
|
private Long bindDeviceId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 绑定设备ip
|
||||||
|
*/
|
||||||
|
private String bindDeviceIp;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
package org.dromara.sis.domain.bo;
|
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 io.github.linpeilie.annotations.AutoMapper;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
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;
|
import java.util.List;
|
||||||
|
|
||||||
@ -22,12 +22,6 @@ import java.util.List;
|
|||||||
@AutoMapper(target = SisAuthRecord.class, reverseConvertGenerate = false)
|
@AutoMapper(target = SisAuthRecord.class, reverseConvertGenerate = false)
|
||||||
public class SisAuthRecordBo extends BaseEntity {
|
public class SisAuthRecordBo extends BaseEntity {
|
||||||
|
|
||||||
/**
|
|
||||||
* 主键id
|
|
||||||
*/
|
|
||||||
@NotNull(message = "主键id不能为空", groups = {EditGroup.class})
|
|
||||||
private Long id;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 图像库Id
|
* 图像库Id
|
||||||
*/
|
*/
|
||||||
|
@ -1,13 +1,14 @@
|
|||||||
package org.dromara.sis.domain.bo;
|
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 io.github.linpeilie.annotations.AutoMapper;
|
||||||
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
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;
|
import java.util.List;
|
||||||
|
|
||||||
@ -25,19 +26,19 @@ public class SisEEightRefBo extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 主键
|
* 主键
|
||||||
*/
|
*/
|
||||||
@NotNull(message = "主键不能为空", groups = { EditGroup.class })
|
@NotNull(message = "主键不能为空", groups = {EditGroup.class})
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 系统用户ID
|
* 系统用户ID
|
||||||
*/
|
*/
|
||||||
@NotNull(message = "系统用户ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
@NotNull(message = "系统用户ID不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||||
private Long userId;
|
private Long userId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 门禁id列表
|
* 门禁id列表
|
||||||
*/
|
*/
|
||||||
@NotBlank(message = "门禁id列表不能为空", groups = { AddGroup.class, EditGroup.class })
|
@NotBlank(message = "门禁id列表不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||||
private List<Long> acIds;
|
private List<Long> acIds;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -53,7 +54,7 @@ public class SisEEightRefBo extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* E8用户ID
|
* E8用户ID
|
||||||
*/
|
*/
|
||||||
@NotNull(message = "E8用户ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
@NotNull(message = "E8用户ID不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||||
private Long remoteUserId;
|
private Long remoteUserId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -66,10 +67,4 @@ public class SisEEightRefBo extends BaseEntity {
|
|||||||
*/
|
*/
|
||||||
private Long remoteVoucherId;
|
private Long remoteVoucherId;
|
||||||
|
|
||||||
/**
|
|
||||||
* E8权限ID
|
|
||||||
*/
|
|
||||||
private Long remoteAuthId;
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -105,5 +105,11 @@ public class SisAccessControlVo implements Serializable {
|
|||||||
@ExcelProperty(value = "外部编码")
|
@ExcelProperty(value = "外部编码")
|
||||||
private String outCode;
|
private String outCode;
|
||||||
|
|
||||||
|
private Long bindDeviceId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 绑定设备ip
|
||||||
|
*/
|
||||||
|
private String bindDeviceIp;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -55,5 +55,18 @@ public class SisAuthRecordVo implements Serializable {
|
|||||||
@ExcelProperty(value = "设备id")
|
@ExcelProperty(value = "设备id")
|
||||||
private Long eqbId;
|
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")
|
@ExcelProperty(value = "E8权限ID")
|
||||||
private Long remoteAuthId;
|
private Long remoteAuthId;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package org.dromara.sis.mapper;
|
package org.dromara.sis.mapper;
|
||||||
|
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
import org.dromara.sis.domain.SisAuthRecord;
|
import org.dromara.sis.domain.SisAuthRecord;
|
||||||
import org.dromara.sis.domain.vo.SisAuthRecordVo;
|
import org.dromara.sis.domain.vo.SisAuthRecordVo;
|
||||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
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> {
|
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;
|
package org.dromara.sis.sdk.e8;
|
||||||
|
|
||||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
import org.dromara.sis.sdk.e8.domain.accessControl.req.CustomerAuthAddReq;
|
import org.dromara.sis.domain.vo.SisAccessControlVo;
|
||||||
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.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
|
* @author lsm
|
||||||
@ -46,4 +47,6 @@ public interface AccessControlService {
|
|||||||
* @return TableDataInfo<CustomerAuthFindRes>
|
* @return TableDataInfo<CustomerAuthFindRes>
|
||||||
*/
|
*/
|
||||||
TableDataInfo<CustomerAuthFindRes> getPageCustomerAuth(QueryDto dto);
|
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;
|
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 lombok.Data;
|
||||||
|
|
||||||
import java.util.List;
|
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;
|
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;
|
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;
|
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;
|
import lombok.Data;
|
||||||
|
|
||||||
|
@ -3,18 +3,21 @@ package org.dromara.sis.sdk.e8.impl;
|
|||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.lang.TypeReference;
|
import cn.hutool.core.lang.TypeReference;
|
||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
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.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.ApiResp;
|
||||||
import org.dromara.sis.sdk.e8.domain.QueryDto;
|
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.dromara.sis.sdk.e8.utils.E8ApiUtil;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
@ -1,11 +1,21 @@
|
|||||||
package org.dromara.sis.sdk.unview.service;
|
package org.dromara.sis.sdk.unview.service;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
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.UvModel;
|
||||||
import org.dromara.sis.sdk.unview.model.enums.AlarmTypeEnum;
|
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 org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 宇视人体设备告警数据处理
|
* 宇视人体设备告警数据处理
|
||||||
*
|
*
|
||||||
@ -13,8 +23,14 @@ import org.springframework.stereotype.Service;
|
|||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Service
|
@Service
|
||||||
|
@RequiredArgsConstructor
|
||||||
public class VideoAlarmService {
|
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) {
|
public void handleAlarmData(UvModel.AlarmReportInfo alarmReportData) {
|
||||||
Integer type = alarmReportData.getType();
|
Integer type = alarmReportData.getType();
|
||||||
@ -90,11 +106,49 @@ public class VideoAlarmService {
|
|||||||
* @param alarmReportData 告警数据
|
* @param alarmReportData 告警数据
|
||||||
*/
|
*/
|
||||||
private void handleFacialCapture(UvModel.AlarmReportInfo 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;
|
package org.dromara.sis.service;
|
||||||
|
|
||||||
|
import org.dromara.common.core.domain.TreeNode;
|
||||||
import org.dromara.sis.domain.SisAccessControl;
|
import org.dromara.sis.domain.SisAccessControl;
|
||||||
import org.dromara.sis.domain.vo.SisAccessControlVo;
|
import org.dromara.sis.domain.vo.SisAccessControlVo;
|
||||||
import org.dromara.sis.domain.bo.SisAccessControlBo;
|
import org.dromara.sis.domain.bo.SisAccessControlBo;
|
||||||
@ -74,4 +75,20 @@ public interface ISisAccessControlService {
|
|||||||
* @return 列表
|
* @return 列表
|
||||||
*/
|
*/
|
||||||
List<SisAccessControlVo> queryListByIds(Collection<Long> ids);
|
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;
|
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.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.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -66,4 +66,21 @@ public interface ISisAuthRecordService {
|
|||||||
* @return 是否删除成功
|
* @return 是否删除成功
|
||||||
*/
|
*/
|
||||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
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;
|
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.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.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -65,4 +65,12 @@ public interface ISisDeviceManageService {
|
|||||||
* @return 是否删除成功
|
* @return 是否删除成功
|
||||||
*/
|
*/
|
||||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过设备ip查询设备信息
|
||||||
|
*
|
||||||
|
* @param deviceCode 设备编码
|
||||||
|
* @return 设备信息
|
||||||
|
*/
|
||||||
|
SisDeviceManageVo queryVoByDeviceIp(Integer deviceCode);
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,9 @@
|
|||||||
package org.dromara.sis.service;
|
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.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.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -50,6 +49,10 @@ public interface ISisEEightRefService {
|
|||||||
*/
|
*/
|
||||||
Boolean insertByBo(SisEEightRefBo bo);
|
Boolean insertByBo(SisEEightRefBo bo);
|
||||||
|
|
||||||
|
|
||||||
|
Boolean batchInsert(List<SisEEightRefBo> bos);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改E8平台对应关系
|
* 修改E8平台对应关系
|
||||||
*
|
*
|
||||||
|
@ -8,16 +8,18 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.dubbo.config.annotation.DubboReference;
|
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.MapstructUtils;
|
||||||
import org.dromara.common.core.utils.StringUtils;
|
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.PageQuery;
|
||||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
import org.dromara.property.api.RemoteFloorService;
|
import org.dromara.property.api.RemoteFloorService;
|
||||||
import org.dromara.property.api.domain.vo.RemoteFloorVo;
|
import org.dromara.property.api.domain.vo.RemoteFloorVo;
|
||||||
import org.dromara.sis.domain.SisAccessControl;
|
import org.dromara.sis.domain.SisAccessControl;
|
||||||
import org.dromara.sis.domain.bo.SisAccessControlBo;
|
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.SisAccessControlVo;
|
||||||
|
import org.dromara.sis.domain.vo.SisDeviceManageVo;
|
||||||
import org.dromara.sis.mapper.SisAccessControlMapper;
|
import org.dromara.sis.mapper.SisAccessControlMapper;
|
||||||
import org.dromara.sis.sdk.e8.DoorDeviceService;
|
import org.dromara.sis.sdk.e8.DoorDeviceService;
|
||||||
import org.dromara.sis.sdk.e8.domain.door.req.DoorDeviceAddReq;
|
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());
|
RemoteFloorVo remoteFloorVo = remoteFloorService.queryByFloorId(bo.getFloorId());
|
||||||
Assert.notNull(remoteFloorVo, "当前楼层信息不存在。");
|
Assert.notNull(remoteFloorVo, "当前楼层信息不存在。");
|
||||||
|
// 检验设备是否存在
|
||||||
|
SisDeviceManageVo sisDeviceManageVo = sisDeviceManageService.queryById(bo.getBindDeviceId());
|
||||||
|
Assert.notNull(sisDeviceManageVo, "绑定设备不存在。");
|
||||||
SisAccessControl add = MapstructUtils.convert(bo, SisAccessControl.class);
|
SisAccessControl add = MapstructUtils.convert(bo, SisAccessControl.class);
|
||||||
add.setCommunityId(remoteFloorVo.getCommunityId());
|
add.setCommunityId(remoteFloorVo.getCommunityId());
|
||||||
add.setBuildingId(remoteFloorVo.getBuildingId());
|
add.setBuildingId(remoteFloorVo.getBuildingId());
|
||||||
add.setUnitId(remoteFloorVo.getUnitId());
|
add.setUnitId(remoteFloorVo.getUnitId());
|
||||||
add.setFloorId(remoteFloorVo.getId());
|
add.setFloorId(remoteFloorVo.getId());
|
||||||
|
add.setBindDeviceIp(sisDeviceManageVo.getDeviceIp());
|
||||||
Assert.notNull(add, "数据处理失败");
|
Assert.notNull(add, "数据处理失败");
|
||||||
boolean flag = baseMapper.insert(add) > 0;
|
boolean flag = baseMapper.insert(add) > 0;
|
||||||
if (flag) {
|
if (flag) {
|
||||||
@ -162,13 +168,13 @@ public class SisAccessControlServiceImpl implements ISisAccessControlService {
|
|||||||
log.info("E8平台写入完成!");
|
log.info("E8平台写入完成!");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 判断是否绑定摄像头
|
// 摄像头不绑定门禁,让门禁去绑定摄像头
|
||||||
if (bo.getDeviceId() != null) {
|
/*if (bo.getBindDeviceId() != null) {
|
||||||
SisDeviceManageBo device = new SisDeviceManageBo();
|
SisDeviceManageBo device = new SisDeviceManageBo();
|
||||||
device.setId(bo.getDeviceId());
|
device.setId(bo.getBindDeviceId());
|
||||||
device.setAccessControlId(add.getId());
|
device.setAccessControlId(add.getId());
|
||||||
sisDeviceManageService.updateByBo(device);
|
sisDeviceManageService.updateByBo(device);
|
||||||
}
|
}*/
|
||||||
}
|
}
|
||||||
return flag;
|
return flag;
|
||||||
}
|
}
|
||||||
@ -215,7 +221,32 @@ public class SisAccessControlServiceImpl implements ISisAccessControlService {
|
|||||||
* @return 列表
|
* @return 列表
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public List<SisAccessControlVo> queryListByIds(Collection<Long> ids){
|
public List<SisAccessControlVo> queryListByIds(Collection<Long> ids) {
|
||||||
return baseMapper.selectVoByIds(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;
|
package org.dromara.sis.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.lang.Assert;
|
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.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
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.SisLibDeviceImgRefBo;
|
||||||
import org.dromara.sis.domain.bo.SisLibDeviceRefBo;
|
import org.dromara.sis.domain.bo.SisLibDeviceRefBo;
|
||||||
import org.dromara.sis.domain.vo.*;
|
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.AccessControlService;
|
||||||
import org.dromara.sis.sdk.e8.DoorDeviceService;
|
import org.dromara.sis.sdk.e8.DoorDeviceService;
|
||||||
import org.dromara.sis.sdk.e8.VoucherControlService;
|
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.door.res.AuthDoorDeviceFindRes;
|
||||||
import org.dromara.sis.sdk.e8.domain.voucher.req.IssueVoucherReq;
|
import org.dromara.sis.sdk.e8.domain.voucher.req.IssueVoucherReq;
|
||||||
import org.dromara.sis.sdk.unview.UnViewAiBoxApi;
|
import org.dromara.sis.sdk.unview.UnViewAiBoxApi;
|
||||||
import org.dromara.sis.sdk.unview.model.UvModel;
|
import org.dromara.sis.sdk.unview.model.UvModel;
|
||||||
import org.dromara.sis.service.*;
|
import org.dromara.sis.service.*;
|
||||||
import org.springframework.stereotype.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 org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
@ -116,7 +116,7 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService {
|
|||||||
List<Long> eqpIds = refVos.stream().map(SisLibDeviceRefVo::getEqpId).toList();
|
List<Long> eqpIds = refVos.stream().map(SisLibDeviceRefVo::getEqpId).toList();
|
||||||
|
|
||||||
|
|
||||||
boolean flag = false;
|
/* boolean flag = false;
|
||||||
log.info("开始写入授权记录,图片:{}、门禁:{}、设备:{}", bo.getImgIds(), bo.getAcIds(), eqpIds);
|
log.info("开始写入授权记录,图片:{}、门禁:{}、设备:{}", bo.getImgIds(), bo.getAcIds(), eqpIds);
|
||||||
for (Long imgId : bo.getImgIds()) {
|
for (Long imgId : bo.getImgIds()) {
|
||||||
for (Long acId : bo.getAcIds()) {
|
for (Long acId : bo.getAcIds()) {
|
||||||
@ -131,7 +131,7 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
log.info("授权记录写入完成");
|
log.info("授权记录写入完成");*/
|
||||||
|
|
||||||
SisPersonLibVo libVo = sisPersonLibService.queryById(bo.getLibId());
|
SisPersonLibVo libVo = sisPersonLibService.queryById(bo.getLibId());
|
||||||
Assert.notNull(libVo, "图像库不存在,id=" + (bo.getLibId()));
|
Assert.notNull(libVo, "图像库不存在,id=" + (bo.getLibId()));
|
||||||
@ -228,26 +228,36 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService {
|
|||||||
log.info("E8平台发行凭证完成!");
|
log.info("E8平台发行凭证完成!");
|
||||||
|
|
||||||
log.info("E8平台授权凭证");
|
log.info("E8平台授权凭证");
|
||||||
// E8平台授权门列表
|
// 查询所有e8设备并分组
|
||||||
List<AuthDoorDeviceFindRes> authDoor = e8DoorDeviceService.getPageAuthDoorDeviceList();
|
List<AuthDoorDeviceFindRes> authDoor = e8DoorDeviceService.getPageAuthDoorDeviceList();
|
||||||
Map<Long, AuthDoorDeviceFindRes> authDoorMap = authDoor.stream()
|
Map<Long, AuthDoorDeviceFindRes> authDoorMap = authDoor.stream().collect(Collectors.toMap(AuthDoorDeviceFindRes::getDeviceId, authDoorRes -> authDoorRes));
|
||||||
.collect(Collectors.toMap(AuthDoorDeviceFindRes::getDeviceId, authDoorRes -> authDoorRes));
|
|
||||||
|
|
||||||
List<CustomerAuthAddReq.AuthGroupData> authList = acList.stream()
|
// E8 授权列表
|
||||||
.filter(acVo -> acVo.getControlType() != 1 && acVo.getAccessType() != 2)
|
List<CustomerAuthAddReq.AuthGroupData> authList = new ArrayList<>(acList.size());
|
||||||
.map(acVo -> {
|
// 授权记录
|
||||||
|
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();
|
CustomerAuthAddReq.AuthGroupData door = new CustomerAuthAddReq.AuthGroupData();
|
||||||
door.setType(0);
|
door.setType(0);
|
||||||
door.setGatewayType(1);
|
door.setGatewayType(1);
|
||||||
Long id = Long.parseLong(acVo.getOutCode());
|
Long id = Long.parseLong(sisAccessControlVo.getOutCode());
|
||||||
door.setId(id);
|
door.setId(id);
|
||||||
|
|
||||||
|
authRecord.setDoorId(id);
|
||||||
// 如果 authDoorMap 中存在对应的 deviceId,则更新 id
|
// 如果 authDoorMap 中存在对应的 deviceId,则更新 id
|
||||||
AuthDoorDeviceFindRes authDoorRes = authDoorMap.get(id);
|
AuthDoorDeviceFindRes authDoorRes = authDoorMap.get(id);
|
||||||
if (authDoorRes != null) {
|
if (authDoorRes != null) {
|
||||||
door.setId(authDoorRes.getId());
|
door.setId(authDoorRes.getId());
|
||||||
|
authRecord.setDeviceId(authDoorRes.getDeviceId());
|
||||||
}
|
}
|
||||||
return door;
|
authRecord.setLibId(imgVo.getLibId());
|
||||||
}).toList();
|
authRecord.setImgId(imgVo.getId());
|
||||||
|
authRecord.setAcId(sisAccessControlVo.getId());
|
||||||
|
recordList.add(authRecord);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
CustomerAuthAddReq authReq = new CustomerAuthAddReq();
|
CustomerAuthAddReq authReq = new CustomerAuthAddReq();
|
||||||
authReq.setAuthType(0);
|
authReq.setAuthType(0);
|
||||||
@ -259,15 +269,7 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService {
|
|||||||
Boolean auth = e8AccessControlService.addCustomerAuth(authReq);
|
Boolean auth = e8AccessControlService.addCustomerAuth(authReq);
|
||||||
Assert.isTrue(auth, "E8平台授权失败");
|
Assert.isTrue(auth, "E8平台授权失败");
|
||||||
log.info("E8平台授权完成!");
|
log.info("E8平台授权完成!");
|
||||||
|
boolean insert = baseMapper.insertBatch(recordList);
|
||||||
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);
|
|
||||||
Assert.isTrue(insert, "写入E8关联关系表失败!");
|
Assert.isTrue(insert, "写入E8关联关系表失败!");
|
||||||
}
|
}
|
||||||
log.info("写入E8平台完成!");
|
log.info("写入E8平台完成!");
|
||||||
@ -276,7 +278,12 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService {
|
|||||||
throw new RuntimeException(e.getMessage());
|
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;
|
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;
|
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;
|
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.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
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.bo.SisEEightRefBo;
|
||||||
import org.dromara.sis.domain.vo.SisEEightRefVo;
|
import org.dromara.sis.domain.vo.SisEEightRefVo;
|
||||||
import org.dromara.sis.domain.SisEEightRef;
|
|
||||||
import org.dromara.sis.mapper.SisEEightRefMapper;
|
import org.dromara.sis.mapper.SisEEightRefMapper;
|
||||||
import org.dromara.sis.service.ISisEEightRefService;
|
import org.dromara.sis.service.ISisEEightRefService;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Collection;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* E8平台对应关系Service业务层处理
|
* E8平台对应关系Service业务层处理
|
||||||
@ -87,7 +87,6 @@ public class SisEEightRefServiceImpl implements ISisEEightRefService {
|
|||||||
lqw.eq(bo.getRemoteUserId() != null, SisEEightRef::getRemoteUserId, bo.getRemoteUserId());
|
lqw.eq(bo.getRemoteUserId() != null, SisEEightRef::getRemoteUserId, bo.getRemoteUserId());
|
||||||
lqw.eq(StringUtils.isNotBlank(bo.getRemoteImgUrl()), SisEEightRef::getRemoteImgUrl, bo.getRemoteImgUrl());
|
lqw.eq(StringUtils.isNotBlank(bo.getRemoteImgUrl()), SisEEightRef::getRemoteImgUrl, bo.getRemoteImgUrl());
|
||||||
lqw.eq(bo.getRemoteVoucherId() != null, SisEEightRef::getRemoteVoucherId, bo.getRemoteVoucherId());
|
lqw.eq(bo.getRemoteVoucherId() != null, SisEEightRef::getRemoteVoucherId, bo.getRemoteVoucherId());
|
||||||
lqw.eq(bo.getRemoteAuthId() != null, SisEEightRef::getRemoteAuthId, bo.getRemoteAuthId());
|
|
||||||
return lqw;
|
return lqw;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -105,6 +104,12 @@ public class SisEEightRefServiceImpl implements ISisEEightRefService {
|
|||||||
return baseMapper.insert(add) > 0;
|
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平台对应关系
|
* 修改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