增加梯控服务
This commit is contained in:
@@ -93,15 +93,4 @@ public class SisAccessControl extends TenantEntity {
|
||||
*/
|
||||
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;
|
||||
|
||||
/**
|
||||
* 绑定设备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 = "外部编码")
|
||||
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 lombok.RequiredArgsConstructor;
|
||||
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.sdk.e8.AccessControlService;
|
||||
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.service.ISisAccessControlService;
|
||||
import org.dromara.sis.service.ISisAuthRecordService;
|
||||
import org.dromara.sis.service.ISisDeviceBindRefService;
|
||||
import org.dromara.sis.service.ISisDeviceManageService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* 宇视人体设备告警数据处理
|
||||
@@ -30,6 +33,7 @@ public class VideoAlarmService {
|
||||
private final ISisAuthRecordService authRecordService;
|
||||
private final AccessControlService accessControlService;
|
||||
private final ISisAccessControlService sisAccessControlService;
|
||||
private final ISisDeviceBindRefService deviceBindRefService;
|
||||
|
||||
|
||||
public void handleAlarmData(UvModel.AlarmReportInfo alarmReportData) {
|
||||
@@ -127,37 +131,52 @@ public class VideoAlarmService {
|
||||
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());
|
||||
// 查询设备绑定关联关系表
|
||||
SisDeviceBindRef ref = deviceBindRefService.queryByDeviceIp(channelInfo.getIpc_addr());
|
||||
if (ref == null) {
|
||||
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);
|
||||
// 门禁
|
||||
if (Objects.equals(ref.getControlType(), ControlTypeEnum.ACCESS_CONTROL.getCode())) {
|
||||
// SisAccessControlVo controlVo = sisAccessControlService.queryById(ref.getBindId());
|
||||
// if (controlVo == null) {
|
||||
// log.info("设备[{}]未和门禁绑定,不处理此条数据。", channelInfo.getIpc_addr());
|
||||
// return;
|
||||
// }
|
||||
// 人像库id
|
||||
// Integer libId = result.getLib_id();
|
||||
// 宇视人员id
|
||||
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;
|
||||
|
||||
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.TableDataInfo;
|
||||
import org.dromara.sis.domain.bo.SisAccessControlBo;
|
||||
import org.dromara.sis.domain.vo.SisAccessControlVo;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
@@ -76,17 +75,9 @@ public interface ISisAccessControlService {
|
||||
*/
|
||||
List<SisAccessControlVo> queryListByIds(Collection<Long> ids);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 通过绑定设备ip查询门禁
|
||||
* @param deviceCode 设备ip
|
||||
* @return
|
||||
*/
|
||||
SisAccessControlVo queryByBindDeviceIp(String deviceCode);
|
||||
|
||||
/**
|
||||
* 查询门禁树
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
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.domain.vo.RemoteFloorVo;
|
||||
import org.dromara.sis.domain.SisAccessControl;
|
||||
import org.dromara.sis.domain.SisDeviceBindRef;
|
||||
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.SisDeviceManageVo;
|
||||
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.res.DoorDeviceAddRes;
|
||||
import org.dromara.sis.service.ISisAccessControlService;
|
||||
import org.dromara.sis.service.ISisDeviceBindRefService;
|
||||
import org.dromara.sis.service.ISisDeviceManageService;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@@ -47,7 +50,7 @@ public class SisAccessControlServiceImpl implements ISisAccessControlService {
|
||||
private final SisAccessControlMapper baseMapper;
|
||||
private final DoorDeviceService doorDeviceService;
|
||||
private final ISisDeviceManageService sisDeviceManageService;
|
||||
|
||||
private final ISisDeviceBindRefService sisDeviceBindRefService;
|
||||
@DubboReference
|
||||
private RemoteFloorService remoteFloorService;
|
||||
|
||||
@@ -131,10 +134,18 @@ public class SisAccessControlServiceImpl implements ISisAccessControlService {
|
||||
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) {
|
||||
// 写入关联关系表中
|
||||
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门禁设备
|
||||
if (add.getControlType() == 2L) {
|
||||
log.info("开始同步写入E8门禁");
|
||||
@@ -167,14 +178,6 @@ public class SisAccessControlServiceImpl implements ISisAccessControlService {
|
||||
Assert.isTrue(update, "外部编码回写失败");
|
||||
log.info("E8平台写入完成!");
|
||||
}
|
||||
|
||||
// 摄像头不绑定门禁,让门禁去绑定摄像头
|
||||
/*if (bo.getBindDeviceId() != null) {
|
||||
SisDeviceManageBo device = new SisDeviceManageBo();
|
||||
device.setId(bo.getBindDeviceId());
|
||||
device.setAccessControlId(add.getId());
|
||||
sisDeviceManageService.updateByBo(device);
|
||||
}*/
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
@@ -225,13 +228,6 @@ public class SisAccessControlServiceImpl implements ISisAccessControlService {
|
||||
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
|
||||
public List<TreeNode<Long>> queryAcTree() {
|
||||
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;
|
||||
if (flag) {
|
||||
bo.setElevatorId(add.getElevatorId());
|
||||
// sdk 链接设备
|
||||
// hik sdk 登录
|
||||
// short port = bo.getControlPort().shortValue();
|
||||
// Boolean isLogin = HikApiService.getInstance().login(bo.getControlIp(), port, bo.getControlAccount(), bo.getControlPwd());
|
||||
// if (!isLogin) {
|
||||
// throw new RuntimeException("电梯添加失败, 发起梯控设备连接失败.");
|
||||
// }
|
||||
// Assert.isTrue(isLogin, "电梯添加失败, 发起梯控设备连接失败.");
|
||||
// todo 发起电梯楼层信息同步
|
||||
|
||||
|
||||
|
||||
}
|
||||
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