增加梯控服务
This commit is contained in:
6
pom.xml
6
pom.xml
@@ -91,10 +91,8 @@
|
|||||||
<properties>
|
<properties>
|
||||||
<!-- 环境标识,需要与配置文件的名称相对应 -->
|
<!-- 环境标识,需要与配置文件的名称相对应 -->
|
||||||
<profiles.active>dev</profiles.active>
|
<profiles.active>dev</profiles.active>
|
||||||
<!-- <nacos.server>127.0.0.1:8848</nacos.server>-->
|
<nacos.server>192.168.110.207:8848</nacos.server>
|
||||||
<!-- <logstash.address>127.0.0.1:4560</logstash.address>-->
|
<logstash.address>192.168.110.207:4560</logstash.address>
|
||||||
<nacos.server>47.109.37.87:8848</nacos.server>
|
|
||||||
<logstash.address>47.109.37.87:4560</logstash.address>
|
|
||||||
<nacos.discovery.group>DEFAULT_GROUP</nacos.discovery.group>
|
<nacos.discovery.group>DEFAULT_GROUP</nacos.discovery.group>
|
||||||
<nacos.config.group>DEFAULT_GROUP</nacos.config.group>
|
<nacos.config.group>DEFAULT_GROUP</nacos.config.group>
|
||||||
<nacos.username>nacos</nacos.username>
|
<nacos.username>nacos</nacos.username>
|
||||||
|
@@ -51,6 +51,8 @@ public class TableDataInfo<T> implements Serializable {
|
|||||||
public TableDataInfo(List<T> list, long total) {
|
public TableDataInfo(List<T> list, long total) {
|
||||||
this.rows = list;
|
this.rows = list;
|
||||||
this.total = total;
|
this.total = total;
|
||||||
|
this.msg = "success";
|
||||||
|
this.code = HttpStatus.HTTP_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -93,15 +93,4 @@ public class SisAccessControl extends TenantEntity {
|
|||||||
*/
|
*/
|
||||||
private String outCode;
|
private String outCode;
|
||||||
|
|
||||||
/**
|
|
||||||
* 绑定设备id
|
|
||||||
*/
|
|
||||||
private Long bindDeviceId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 绑定设备ip
|
|
||||||
*/
|
|
||||||
private String bindDeviceIp;
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -0,0 +1,49 @@
|
|||||||
|
package org.dromara.sis.domain;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import org.dromara.common.tenant.core.TenantEntity;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 摄像头绑定(门禁,电梯)关联关系对象 sis_device_bind_ref
|
||||||
|
*
|
||||||
|
* @author lxj
|
||||||
|
* @date 2025-07-10
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@TableName("sis_device_bind_ref")
|
||||||
|
public class SisDeviceBindRef extends TenantEntity {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主键id
|
||||||
|
*/
|
||||||
|
@TableId(value = "id")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设备id(摄像头id)
|
||||||
|
*/
|
||||||
|
private Long deviceId;
|
||||||
|
|
||||||
|
private String deviceIp;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* control_type=1,是门禁id,control_type=2,3 是电梯id
|
||||||
|
*/
|
||||||
|
private Long bindId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 控制类型(1:门禁,2:电梯呼梯,3:电梯梯控
|
||||||
|
*/
|
||||||
|
private Integer controlType;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@@ -104,9 +104,4 @@ public class SisAccessControlBo extends BaseEntity {
|
|||||||
*/
|
*/
|
||||||
private Long bindDeviceId;
|
private Long bindDeviceId;
|
||||||
|
|
||||||
/**
|
|
||||||
* 绑定设备ip
|
|
||||||
*/
|
|
||||||
private String bindDeviceIp;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -0,0 +1,50 @@
|
|||||||
|
package org.dromara.sis.domain.bo;
|
||||||
|
|
||||||
|
import org.dromara.sis.domain.SisDeviceBindRef;
|
||||||
|
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 lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import jakarta.validation.constraints.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 摄像头绑定(门禁,电梯)关联关系业务对象 sis_device_bind_ref
|
||||||
|
*
|
||||||
|
* @author lxj
|
||||||
|
* @date 2025-07-10
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@AutoMapper(target = SisDeviceBindRef.class, reverseConvertGenerate = false)
|
||||||
|
public class SisDeviceBindRefBo extends BaseEntity {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主键id
|
||||||
|
*/
|
||||||
|
@NotNull(message = "主键id不能为空", groups = { EditGroup.class })
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设备id(摄像头id)
|
||||||
|
*/
|
||||||
|
@NotNull(message = "设备id(摄像头id)不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
|
private Long deviceId;
|
||||||
|
|
||||||
|
private String deviceIp;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* control_type=1,是门禁id,control_type=2,3 是电梯id
|
||||||
|
*/
|
||||||
|
@NotNull(message = "control_type=1,是门禁id,control_type=2,3 是电梯id不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
|
private Long bindId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 控制类型(1:门禁,2:电梯呼梯,3:电梯梯控
|
||||||
|
*/
|
||||||
|
@NotNull(message = "控制类型(1:门禁,2:电梯呼梯,3:电梯梯控不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
|
private Integer controlType;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@@ -0,0 +1,27 @@
|
|||||||
|
package org.dromara.sis.domain.enums;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
public enum ControlTypeEnum {
|
||||||
|
/**
|
||||||
|
* 门禁
|
||||||
|
*/
|
||||||
|
ACCESS_CONTROL(1),
|
||||||
|
/**
|
||||||
|
* 远程呼梯
|
||||||
|
*/
|
||||||
|
REMOTE_CALL_ELEVATOR(2),
|
||||||
|
/**
|
||||||
|
* 梯控
|
||||||
|
*/
|
||||||
|
ELEVATOR_CONTROL(3);
|
||||||
|
|
||||||
|
private final Integer code;
|
||||||
|
|
||||||
|
ControlTypeEnum(Integer code) {
|
||||||
|
this.code = code;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@@ -104,12 +104,4 @@ public class SisAccessControlVo implements Serializable {
|
|||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "外部编码")
|
@ExcelProperty(value = "外部编码")
|
||||||
private String outCode;
|
private String outCode;
|
||||||
|
|
||||||
private Long bindDeviceId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 绑定设备ip
|
|
||||||
*/
|
|
||||||
private String bindDeviceIp;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -0,0 +1,57 @@
|
|||||||
|
package org.dromara.sis.domain.vo;
|
||||||
|
|
||||||
|
import org.dromara.sis.domain.SisDeviceBindRef;
|
||||||
|
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||||
|
import cn.idev.excel.annotation.ExcelProperty;
|
||||||
|
import org.dromara.common.excel.annotation.ExcelDictFormat;
|
||||||
|
import org.dromara.common.excel.convert.ExcelDictConvert;
|
||||||
|
import io.github.linpeilie.annotations.AutoMapper;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 摄像头绑定(门禁,电梯)关联关系视图对象 sis_device_bind_ref
|
||||||
|
*
|
||||||
|
* @author lxj
|
||||||
|
* @date 2025-07-10
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@ExcelIgnoreUnannotated
|
||||||
|
@AutoMapper(target = SisDeviceBindRef.class)
|
||||||
|
public class SisDeviceBindRefVo implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主键id
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "主键id")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设备id(摄像头id)
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "设备id(摄像头id)")
|
||||||
|
private Long deviceId;
|
||||||
|
|
||||||
|
private String deviceIp;
|
||||||
|
/**
|
||||||
|
* control_type=1,是门禁id,control_type=2,3 是电梯id
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "control_type=1,是门禁id,control_type=2,3 是电梯id")
|
||||||
|
private Long bindId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 控制类型(1:门禁,2:电梯呼梯,3:电梯梯控
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "控制类型(1:门禁,2:电梯呼梯,3:电梯梯控")
|
||||||
|
private Integer controlType;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@@ -0,0 +1,15 @@
|
|||||||
|
package org.dromara.sis.mapper;
|
||||||
|
|
||||||
|
import org.dromara.sis.domain.SisDeviceBindRef;
|
||||||
|
import org.dromara.sis.domain.vo.SisDeviceBindRefVo;
|
||||||
|
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 摄像头绑定(门禁,电梯)关联关系Mapper接口
|
||||||
|
*
|
||||||
|
* @author lxj
|
||||||
|
* @date 2025-07-10
|
||||||
|
*/
|
||||||
|
public interface SisDeviceBindRefMapper extends BaseMapperPlus<SisDeviceBindRef, SisDeviceBindRefVo> {
|
||||||
|
|
||||||
|
}
|
@@ -3,7 +3,8 @@ package org.dromara.sis.sdk.unview.service;
|
|||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import lombok.RequiredArgsConstructor;
|
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.SisDeviceBindRef;
|
||||||
|
import org.dromara.sis.domain.enums.ControlTypeEnum;
|
||||||
import org.dromara.sis.domain.vo.SisAuthRecordVo;
|
import org.dromara.sis.domain.vo.SisAuthRecordVo;
|
||||||
import org.dromara.sis.sdk.e8.AccessControlService;
|
import org.dromara.sis.sdk.e8.AccessControlService;
|
||||||
import org.dromara.sis.sdk.e8.domain.accessControl.req.RemoteOpenDoorReq;
|
import org.dromara.sis.sdk.e8.domain.accessControl.req.RemoteOpenDoorReq;
|
||||||
@@ -11,10 +12,12 @@ 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.ISisAccessControlService;
|
||||||
import org.dromara.sis.service.ISisAuthRecordService;
|
import org.dromara.sis.service.ISisAuthRecordService;
|
||||||
|
import org.dromara.sis.service.ISisDeviceBindRefService;
|
||||||
import org.dromara.sis.service.ISisDeviceManageService;
|
import org.dromara.sis.service.ISisDeviceManageService;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 宇视人体设备告警数据处理
|
* 宇视人体设备告警数据处理
|
||||||
@@ -30,6 +33,7 @@ public class VideoAlarmService {
|
|||||||
private final ISisAuthRecordService authRecordService;
|
private final ISisAuthRecordService authRecordService;
|
||||||
private final AccessControlService accessControlService;
|
private final AccessControlService accessControlService;
|
||||||
private final ISisAccessControlService sisAccessControlService;
|
private final ISisAccessControlService sisAccessControlService;
|
||||||
|
private final ISisDeviceBindRefService deviceBindRefService;
|
||||||
|
|
||||||
|
|
||||||
public void handleAlarmData(UvModel.AlarmReportInfo alarmReportData) {
|
public void handleAlarmData(UvModel.AlarmReportInfo alarmReportData) {
|
||||||
@@ -127,37 +131,52 @@ public class VideoAlarmService {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
compareResults.forEach(result -> {
|
compareResults.forEach(result -> {
|
||||||
// 查询设备是偶绑定门径
|
// 查询设备绑定关联关系表
|
||||||
// SisDeviceManageVo sisDeviceManageVo = deviceManageService.queryVoByDeviceIp(deviceInfo.getDevice_code());
|
SisDeviceBindRef ref = deviceBindRefService.queryByDeviceIp(channelInfo.getIpc_addr());
|
||||||
SisAccessControlVo controlVo = sisAccessControlService.queryByBindDeviceIp(channelInfo.getIpc_addr());
|
if (ref == null) {
|
||||||
if (controlVo == null) {
|
|
||||||
log.info("设备[{}]未和门禁绑定,不处理此条数据。", channelInfo.getIpc_addr());
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// 人像库id
|
// 门禁
|
||||||
// Integer libId = result.getLib_id();
|
if (Objects.equals(ref.getControlType(), ControlTypeEnum.ACCESS_CONTROL.getCode())) {
|
||||||
// 宇视人员id
|
// SisAccessControlVo controlVo = sisAccessControlService.queryById(ref.getBindId());
|
||||||
Integer personId = result.getPerson_id();
|
// if (controlVo == null) {
|
||||||
// 门禁id
|
// log.info("设备[{}]未和门禁绑定,不处理此条数据。", channelInfo.getIpc_addr());
|
||||||
Long accessControlId = controlVo.getId();
|
// return;
|
||||||
// 校验人脸是偶有同行此门禁的权限
|
// }
|
||||||
SisAuthRecordVo recordVo = authRecordService.checkAuth(personId, accessControlId);
|
// 人像库id
|
||||||
// 如果有通行权限,则打开门禁
|
// Integer libId = result.getLib_id();
|
||||||
if (recordVo == null) {
|
// 宇视人员id
|
||||||
log.info("此人像[{}]没有门禁[{}]的通行权限。", personId, accessControlId);
|
Integer personId = result.getPerson_id();
|
||||||
|
// 门禁id
|
||||||
|
Long accessControlId = ref.getBindId();
|
||||||
|
// 校验人脸是偶有同行此门禁的权限
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
// 远程呼梯
|
||||||
|
if (Objects.equals(ref.getControlType(), ControlTypeEnum.REMOTE_CALL_ELEVATOR.getCode())) {
|
||||||
|
// TODO 待实现
|
||||||
|
}
|
||||||
|
|
||||||
|
// 梯控
|
||||||
|
if (Objects.equals(ref.getControlType(), ControlTypeEnum.ELEVATOR_CONTROL.getCode())) {
|
||||||
|
// TODO 待实现
|
||||||
}
|
}
|
||||||
// 打开门禁
|
|
||||||
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,11 +1,10 @@
|
|||||||
package org.dromara.sis.service;
|
package org.dromara.sis.service;
|
||||||
|
|
||||||
import org.dromara.common.core.domain.TreeNode;
|
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;
|
|
||||||
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.SisAccessControlBo;
|
||||||
|
import org.dromara.sis.domain.vo.SisAccessControlVo;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -76,17 +75,9 @@ public interface ISisAccessControlService {
|
|||||||
*/
|
*/
|
||||||
List<SisAccessControlVo> queryListByIds(Collection<Long> ids);
|
List<SisAccessControlVo> queryListByIds(Collection<Long> ids);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 通过绑定设备ip查询门禁
|
|
||||||
* @param deviceCode 设备ip
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
SisAccessControlVo queryByBindDeviceIp(String deviceCode);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询门禁树
|
* 查询门禁树
|
||||||
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
List<TreeNode<Long>> queryAcTree();
|
List<TreeNode<Long>> queryAcTree();
|
||||||
|
@@ -0,0 +1,84 @@
|
|||||||
|
package org.dromara.sis.service;
|
||||||
|
|
||||||
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||||
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
|
import org.dromara.sis.domain.SisDeviceBindRef;
|
||||||
|
import org.dromara.sis.domain.bo.SisDeviceBindRefBo;
|
||||||
|
import org.dromara.sis.domain.vo.SisDeviceBindRefVo;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 摄像头绑定(门禁,电梯)关联关系Service接口
|
||||||
|
*
|
||||||
|
* @author lxj
|
||||||
|
* @date 2025-07-10
|
||||||
|
*/
|
||||||
|
public interface ISisDeviceBindRefService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询摄像头绑定(门禁,电梯)关联关系
|
||||||
|
*
|
||||||
|
* @param id 主键
|
||||||
|
* @return 摄像头绑定(门禁 , 电梯)关联关系
|
||||||
|
*/
|
||||||
|
SisDeviceBindRefVo queryById(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询摄像头绑定(门禁,电梯)关联关系列表
|
||||||
|
*
|
||||||
|
* @param bo 查询条件
|
||||||
|
* @param pageQuery 分页参数
|
||||||
|
* @return 摄像头绑定(门禁 , 电梯)关联关系分页列表
|
||||||
|
*/
|
||||||
|
TableDataInfo<SisDeviceBindRefVo> queryPageList(SisDeviceBindRefBo bo, PageQuery pageQuery);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询符合条件的摄像头绑定(门禁,电梯)关联关系列表
|
||||||
|
*
|
||||||
|
* @param bo 查询条件
|
||||||
|
* @return 摄像头绑定(门禁 , 电梯)关联关系列表
|
||||||
|
*/
|
||||||
|
List<SisDeviceBindRefVo> queryList(SisDeviceBindRefBo bo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增摄像头绑定(门禁,电梯)关联关系
|
||||||
|
*
|
||||||
|
* @param bo 摄像头绑定(门禁,电梯)关联关系
|
||||||
|
* @return 是否新增成功
|
||||||
|
*/
|
||||||
|
Boolean insertByBo(SisDeviceBindRefBo bo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增摄像头绑定(门禁,电梯)关联关系
|
||||||
|
*
|
||||||
|
* @param ref 摄像头绑定(门禁,电梯)关联关系
|
||||||
|
* @return 是否新增成功
|
||||||
|
*/
|
||||||
|
Boolean insert(SisDeviceBindRef ref);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改摄像头绑定(门禁,电梯)关联关系
|
||||||
|
*
|
||||||
|
* @param bo 摄像头绑定(门禁,电梯)关联关系
|
||||||
|
* @return 是否修改成功
|
||||||
|
*/
|
||||||
|
Boolean updateByBo(SisDeviceBindRefBo bo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验并批量删除摄像头绑定(门禁,电梯)关联关系信息
|
||||||
|
*
|
||||||
|
* @param ids 待删除的主键集合
|
||||||
|
* @param isValid 是否进行有效性校验
|
||||||
|
* @return 是否删除成功
|
||||||
|
*/
|
||||||
|
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过ip查询设备关联关系
|
||||||
|
* @param ipcAddr 设备ip
|
||||||
|
* @return 返回关联关系表
|
||||||
|
*/
|
||||||
|
SisDeviceBindRef queryByDeviceIp(String ipcAddr);
|
||||||
|
}
|
@@ -17,7 +17,9 @@ 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.SisDeviceBindRef;
|
||||||
import org.dromara.sis.domain.bo.SisAccessControlBo;
|
import org.dromara.sis.domain.bo.SisAccessControlBo;
|
||||||
|
import org.dromara.sis.domain.enums.ControlTypeEnum;
|
||||||
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.domain.vo.SisDeviceManageVo;
|
||||||
import org.dromara.sis.mapper.SisAccessControlMapper;
|
import org.dromara.sis.mapper.SisAccessControlMapper;
|
||||||
@@ -25,6 +27,7 @@ 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;
|
||||||
import org.dromara.sis.sdk.e8.domain.door.res.DoorDeviceAddRes;
|
import org.dromara.sis.sdk.e8.domain.door.res.DoorDeviceAddRes;
|
||||||
import org.dromara.sis.service.ISisAccessControlService;
|
import org.dromara.sis.service.ISisAccessControlService;
|
||||||
|
import org.dromara.sis.service.ISisDeviceBindRefService;
|
||||||
import org.dromara.sis.service.ISisDeviceManageService;
|
import org.dromara.sis.service.ISisDeviceManageService;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
@@ -47,7 +50,7 @@ public class SisAccessControlServiceImpl implements ISisAccessControlService {
|
|||||||
private final SisAccessControlMapper baseMapper;
|
private final SisAccessControlMapper baseMapper;
|
||||||
private final DoorDeviceService doorDeviceService;
|
private final DoorDeviceService doorDeviceService;
|
||||||
private final ISisDeviceManageService sisDeviceManageService;
|
private final ISisDeviceManageService sisDeviceManageService;
|
||||||
|
private final ISisDeviceBindRefService sisDeviceBindRefService;
|
||||||
@DubboReference
|
@DubboReference
|
||||||
private RemoteFloorService remoteFloorService;
|
private RemoteFloorService remoteFloorService;
|
||||||
|
|
||||||
@@ -131,10 +134,18 @@ public class SisAccessControlServiceImpl implements ISisAccessControlService {
|
|||||||
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) {
|
||||||
|
// 写入关联关系表中
|
||||||
|
SisDeviceBindRef sisDeviceBindRef = new SisDeviceBindRef();
|
||||||
|
sisDeviceBindRef.setDeviceId(sisDeviceManageVo.getId());
|
||||||
|
sisDeviceBindRef.setDeviceIp(sisDeviceManageVo.getDeviceIp());
|
||||||
|
sisDeviceBindRef.setBindId(add.getId());
|
||||||
|
sisDeviceBindRef.setControlType(ControlTypeEnum.ACCESS_CONTROL.getCode());
|
||||||
|
Boolean insert = sisDeviceBindRefService.insert(sisDeviceBindRef);
|
||||||
|
Assert.isTrue(insert, "写入设备关联表失败!");
|
||||||
|
|
||||||
// 添加E8门禁设备
|
// 添加E8门禁设备
|
||||||
if (add.getControlType() == 2L) {
|
if (add.getControlType() == 2L) {
|
||||||
log.info("开始同步写入E8门禁");
|
log.info("开始同步写入E8门禁");
|
||||||
@@ -167,14 +178,6 @@ public class SisAccessControlServiceImpl implements ISisAccessControlService {
|
|||||||
Assert.isTrue(update, "外部编码回写失败");
|
Assert.isTrue(update, "外部编码回写失败");
|
||||||
log.info("E8平台写入完成!");
|
log.info("E8平台写入完成!");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 摄像头不绑定门禁,让门禁去绑定摄像头
|
|
||||||
/*if (bo.getBindDeviceId() != null) {
|
|
||||||
SisDeviceManageBo device = new SisDeviceManageBo();
|
|
||||||
device.setId(bo.getBindDeviceId());
|
|
||||||
device.setAccessControlId(add.getId());
|
|
||||||
sisDeviceManageService.updateByBo(device);
|
|
||||||
}*/
|
|
||||||
}
|
}
|
||||||
return flag;
|
return flag;
|
||||||
}
|
}
|
||||||
@@ -225,13 +228,6 @@ public class SisAccessControlServiceImpl implements ISisAccessControlService {
|
|||||||
return baseMapper.selectVoByIds(ids);
|
return baseMapper.selectVoByIds(ids);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public SisAccessControlVo queryByBindDeviceIp(String deviceCode) {
|
|
||||||
LambdaQueryWrapper<SisAccessControl> wrapper = new LambdaQueryWrapper<>();
|
|
||||||
wrapper.eq(SisAccessControl::getBindDeviceIp, deviceCode);
|
|
||||||
return baseMapper.selectVoOne(wrapper);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<TreeNode<Long>> queryAcTree() {
|
public List<TreeNode<Long>> queryAcTree() {
|
||||||
List<TreeNode<Long>> treeNodes = remoteFloorService.queryTreeList();
|
List<TreeNode<Long>> treeNodes = remoteFloorService.queryTreeList();
|
||||||
|
@@ -0,0 +1,145 @@
|
|||||||
|
package org.dromara.sis.service.impl;
|
||||||
|
|
||||||
|
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.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.SisDeviceBindRef;
|
||||||
|
import org.dromara.sis.domain.bo.SisDeviceBindRefBo;
|
||||||
|
import org.dromara.sis.domain.vo.SisDeviceBindRefVo;
|
||||||
|
import org.dromara.sis.mapper.SisDeviceBindRefMapper;
|
||||||
|
import org.dromara.sis.service.ISisDeviceBindRefService;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 摄像头绑定(门禁,电梯)关联关系Service业务层处理
|
||||||
|
*
|
||||||
|
* @author lxj
|
||||||
|
* @date 2025-07-10
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
@Service
|
||||||
|
public class SisDeviceBindRefServiceImpl implements ISisDeviceBindRefService {
|
||||||
|
|
||||||
|
private final SisDeviceBindRefMapper baseMapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询摄像头绑定(门禁,电梯)关联关系
|
||||||
|
*
|
||||||
|
* @param id 主键
|
||||||
|
* @return 摄像头绑定(门禁 , 电梯)关联关系
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public SisDeviceBindRefVo queryById(Long id) {
|
||||||
|
return baseMapper.selectVoById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询摄像头绑定(门禁,电梯)关联关系列表
|
||||||
|
*
|
||||||
|
* @param bo 查询条件
|
||||||
|
* @param pageQuery 分页参数
|
||||||
|
* @return 摄像头绑定(门禁 , 电梯)关联关系分页列表
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public TableDataInfo<SisDeviceBindRefVo> queryPageList(SisDeviceBindRefBo bo, PageQuery pageQuery) {
|
||||||
|
LambdaQueryWrapper<SisDeviceBindRef> lqw = buildQueryWrapper(bo);
|
||||||
|
Page<SisDeviceBindRefVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||||
|
return TableDataInfo.build(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询符合条件的摄像头绑定(门禁,电梯)关联关系列表
|
||||||
|
*
|
||||||
|
* @param bo 查询条件
|
||||||
|
* @return 摄像头绑定(门禁 , 电梯)关联关系列表
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<SisDeviceBindRefVo> queryList(SisDeviceBindRefBo bo) {
|
||||||
|
LambdaQueryWrapper<SisDeviceBindRef> lqw = buildQueryWrapper(bo);
|
||||||
|
return baseMapper.selectVoList(lqw);
|
||||||
|
}
|
||||||
|
|
||||||
|
private LambdaQueryWrapper<SisDeviceBindRef> buildQueryWrapper(SisDeviceBindRefBo bo) {
|
||||||
|
Map<String, Object> params = bo.getParams();
|
||||||
|
LambdaQueryWrapper<SisDeviceBindRef> lqw = Wrappers.lambdaQuery();
|
||||||
|
lqw.orderByAsc(SisDeviceBindRef::getId);
|
||||||
|
lqw.eq(bo.getDeviceId() != null, SisDeviceBindRef::getDeviceId, bo.getDeviceId());
|
||||||
|
lqw.eq(bo.getBindId() != null, SisDeviceBindRef::getBindId, bo.getBindId());
|
||||||
|
lqw.eq(bo.getControlType() != null, SisDeviceBindRef::getControlType, bo.getControlType());
|
||||||
|
return lqw;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增摄像头绑定(门禁,电梯)关联关系
|
||||||
|
*
|
||||||
|
* @param bo 摄像头绑定(门禁,电梯)关联关系
|
||||||
|
* @return 是否新增成功
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Boolean insertByBo(SisDeviceBindRefBo bo) {
|
||||||
|
SisDeviceBindRef add = MapstructUtils.convert(bo, SisDeviceBindRef.class);
|
||||||
|
validEntityBeforeSave(add);
|
||||||
|
boolean flag = baseMapper.insert(add) > 0;
|
||||||
|
if (flag) {
|
||||||
|
bo.setId(add.getId());
|
||||||
|
}
|
||||||
|
return flag;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Boolean insert(SisDeviceBindRef ref) {
|
||||||
|
return baseMapper.insert(ref) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改摄像头绑定(门禁,电梯)关联关系
|
||||||
|
*
|
||||||
|
* @param bo 摄像头绑定(门禁,电梯)关联关系
|
||||||
|
* @return 是否修改成功
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Boolean updateByBo(SisDeviceBindRefBo bo) {
|
||||||
|
SisDeviceBindRef update = MapstructUtils.convert(bo, SisDeviceBindRef.class);
|
||||||
|
validEntityBeforeSave(update);
|
||||||
|
return baseMapper.updateById(update) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 保存前的数据校验
|
||||||
|
*/
|
||||||
|
private void validEntityBeforeSave(SisDeviceBindRef entity) {
|
||||||
|
//TODO 做一些数据校验,如唯一约束
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验并批量删除摄像头绑定(门禁,电梯)关联关系信息
|
||||||
|
*
|
||||||
|
* @param ids 待删除的主键集合
|
||||||
|
* @param isValid 是否进行有效性校验
|
||||||
|
* @return 是否删除成功
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||||
|
if (isValid) {
|
||||||
|
//TODO 做一些业务上的校验,判断是否需要校验
|
||||||
|
}
|
||||||
|
return baseMapper.deleteByIds(ids) > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SisDeviceBindRef queryByDeviceIp(String ipcAddr) {
|
||||||
|
LambdaQueryWrapper<SisDeviceBindRef> lqw = new LambdaQueryWrapper<>();
|
||||||
|
lqw.eq(SisDeviceBindRef::getDeviceIp, ipcAddr);
|
||||||
|
return baseMapper.selectOne(lqw);
|
||||||
|
}
|
||||||
|
}
|
@@ -128,13 +128,14 @@ public class SisElevatorInfoServiceImpl implements ISisElevatorInfoService {
|
|||||||
boolean flag = baseMapper.insert(add) > 0;
|
boolean flag = baseMapper.insert(add) > 0;
|
||||||
if (flag) {
|
if (flag) {
|
||||||
bo.setElevatorId(add.getElevatorId());
|
bo.setElevatorId(add.getElevatorId());
|
||||||
// sdk 链接设备
|
// hik sdk 登录
|
||||||
// short port = bo.getControlPort().shortValue();
|
// short port = bo.getControlPort().shortValue();
|
||||||
// Boolean isLogin = HikApiService.getInstance().login(bo.getControlIp(), port, bo.getControlAccount(), bo.getControlPwd());
|
// Boolean isLogin = HikApiService.getInstance().login(bo.getControlIp(), port, bo.getControlAccount(), bo.getControlPwd());
|
||||||
// if (!isLogin) {
|
// Assert.isTrue(isLogin, "电梯添加失败, 发起梯控设备连接失败.");
|
||||||
// throw new RuntimeException("电梯添加失败, 发起梯控设备连接失败.");
|
|
||||||
// }
|
|
||||||
// todo 发起电梯楼层信息同步
|
// todo 发起电梯楼层信息同步
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
return flag;
|
return flag;
|
||||||
}
|
}
|
||||||
|
@@ -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.SisDeviceBindRefMapper">
|
||||||
|
|
||||||
|
</mapper>
|
Reference in New Issue
Block a user