增加门禁授权
Some checks are pending
Gitea Actions Demo / Explore-Gitea-Actions (push) Waiting to run

This commit is contained in:
15683799673 2025-06-30 06:17:21 +08:00
parent 6ea6c79341
commit 3837c2f2ef
48 changed files with 553 additions and 188 deletions

View File

@ -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();
}

View File

@ -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();

View File

@ -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;
/**

View File

@ -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;
}
}

View File

@ -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();
}

View File

@ -25,13 +25,8 @@ public interface ITbCommunityService {
*/
TbCommunityVo queryById(Long id);
/**
* 查询小区列表
*
* @param tenantId 租户编码
* @return 小区
*/
List<TbCommunityVo> queryByTenantId(String tenantId);
List<TbCommunityVo> queryAll();
/**
* 分页查询小区列表
@ -77,9 +72,10 @@ public interface ITbCommunityService {
/**
* 加载社区树结构
*
* @param level 加载等级
* @return 树结构
*/
List<TreeNode<Long>> tree(Integer level,String tenantId);
List<TreeNode<Long>> tree(Integer level, String tenantId);
}

View File

@ -67,5 +67,7 @@ public interface ITbFloorService {
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
List<TbFloorVo> queryByTenantId(String tenantId);
List<TbFloorVo> queryAll();
}

View File

@ -68,5 +68,6 @@ public interface ITbRoomService {
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
List<TbRoomVo> queryByTenantId(String tenantId);
List<TbRoomVo> queryAll();
}

View File

@ -66,6 +66,7 @@ public interface ITbUnitService {
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
List<TbUnitVo> queryByTenantId(String tenantId);
List<TbUnitVo> queryAll();
}

View File

@ -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);
}
}

View File

@ -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();
}
/**

View File

@ -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();
}
}

View File

@ -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();
}
}

View File

@ -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();
}
}

View File

@ -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;
/**
* 门禁设备
@ -65,7 +67,7 @@ public class SisAccessControlController extends BaseController {
@SaCheckPermission("sis:accessControl:query")
@GetMapping("/{id}")
public R<SisAccessControlVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable("id") Long id) {
@PathVariable("id") Long id) {
return R.ok(sisAccessControlService.queryById(id));
}
@ -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());
}
}

View File

@ -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;
/**
* 授权记录
@ -65,7 +67,7 @@ public class SisAuthRecordController extends BaseController {
@SaCheckPermission("sis:authRecord:query")
@GetMapping("/{id}")
public R<SisAuthRecordVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable("id") Long id) {
@PathVariable("id") Long id) {
return R.ok(sisAuthRecordService.queryById(id));
}
@ -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));
}
/**
* 修改授权记录
*/

View File

@ -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

View File

@ -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;

View File

@ -93,5 +93,15 @@ public class SisAccessControl extends TenantEntity {
*/
private String outCode;
/**
* 绑定设备id
*/
private Long bindDeviceId;
/**
* 绑定设备ip
*/
private String bindDeviceIp;
}

View File

@ -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;
}

View File

@ -66,6 +66,4 @@ public class SisEEightRef extends TenantEntity {
* E8权限ID
*/
private Long remoteAuthId;
}

View File

@ -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;
}

View File

@ -102,6 +102,11 @@ public class SisAccessControlBo extends BaseEntity {
/**
* 绑定设备Id
*/
private Long deviceId;
private Long bindDeviceId;
/**
* 绑定设备ip
*/
private String bindDeviceIp;
}

View File

@ -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
*/

View File

@ -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;
@ -25,19 +26,19 @@ public class SisEEightRefBo extends BaseEntity {
/**
* 主键
*/
@NotNull(message = "主键不能为空", groups = { EditGroup.class })
@NotNull(message = "主键不能为空", groups = {EditGroup.class})
private Long id;
/**
* 系统用户ID
*/
@NotNull(message = "系统用户ID不能为空", groups = { AddGroup.class, EditGroup.class })
@NotNull(message = "系统用户ID不能为空", groups = {AddGroup.class, EditGroup.class})
private Long userId;
/**
* 门禁id列表
*/
@NotBlank(message = "门禁id列表不能为空", groups = { AddGroup.class, EditGroup.class })
@NotBlank(message = "门禁id列表不能为空", groups = {AddGroup.class, EditGroup.class})
private List<Long> acIds;
/**
@ -53,7 +54,7 @@ public class SisEEightRefBo extends BaseEntity {
/**
* E8用户ID
*/
@NotNull(message = "E8用户ID不能为空", groups = { AddGroup.class, EditGroup.class })
@NotNull(message = "E8用户ID不能为空", groups = {AddGroup.class, EditGroup.class})
private Long remoteUserId;
/**
@ -66,10 +67,4 @@ public class SisEEightRefBo extends BaseEntity {
*/
private Long remoteVoucherId;
/**
* E8权限ID
*/
private Long remoteAuthId;
}

View File

@ -105,5 +105,11 @@ public class SisAccessControlVo implements Serializable {
@ExcelProperty(value = "外部编码")
private String outCode;
private Long bindDeviceId;
/**
* 绑定设备ip
*/
private String bindDeviceIp;
}

View File

@ -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;
}

View File

@ -82,5 +82,4 @@ public class SisEEightRefVo implements Serializable {
@ExcelProperty(value = "E8权限ID")
private Long remoteAuthId;
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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);
});
}
/**

View File

@ -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();
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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平台对应关系
*

View File

@ -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;
}
@ -215,7 +221,32 @@ public class SisAccessControlServiceImpl implements ISisAccessControlService {
* @return 列表
*/
@Override
public List<SisAccessControlVo> queryListByIds(Collection<Long> ids){
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);
}
}

View File

@ -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());
}
return door;
}).toList();
authRecord.setLibId(imgVo.getLibId());
authRecord.setImgId(imgVo.getId());
authRecord.setAcId(sisAccessControlVo.getId());
recordList.add(authRecord);
}
}
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);
}
}

View File

@ -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);
}
}

View File

@ -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平台对应关系
*

View File

@ -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>

View File

@ -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>