同步通道任务完善

This commit is contained in:
lxj
2025-07-31 15:38:04 +08:00
parent 8f71f5f261
commit e016e6d44c
10 changed files with 272 additions and 76 deletions

View File

@@ -1,15 +1,17 @@
package org.dromara.sis.api; package org.dromara.sis.api;
import org.dromara.sis.api.domain.RemoteSdkChannel;
import org.dromara.sis.api.domain.RemoteSisDeviceChannel; import org.dromara.sis.api.domain.RemoteSisDeviceChannel;
import org.dromara.sis.api.domain.RemoteSisDeviceManage; import org.dromara.sis.api.domain.RemoteSisDeviceManage;
import java.util.List; import java.util.List;
public interface RemoteHikDeviceService { public interface RemoteDeviceService {
/** /**
* 查询所有的海康设备信息 * 查询所有的海康设备信息
*
* @return 返回海康设备列表 * @return 返回海康设备列表
*/ */
List<RemoteSisDeviceManage> queryHikDevices(); List<RemoteSisDeviceManage> queryHikDevices();
@@ -17,6 +19,7 @@ public interface RemoteHikDeviceService {
/** /**
* 更新设备在线状态 * 更新设备在线状态
*
* @param item 设备信息 * @param item 设备信息
* @return 返回是否操作成功 * @return 返回是否操作成功
*/ */
@@ -24,6 +27,7 @@ public interface RemoteHikDeviceService {
/** /**
* 查询设备通道信息 * 查询设备通道信息
*
* @param deviceIp 设备ip * @param deviceIp 设备ip
* @return 返回通道列表 * @return 返回通道列表
*/ */
@@ -31,8 +35,32 @@ public interface RemoteHikDeviceService {
/** /**
* 更新设备通道在线状态 * 更新设备通道在线状态
*
* @param deviceIp 设备ip * @param deviceIp 设备ip
* @return 返回是否成功 * @return 返回是否成功
*/ */
Boolean updateDeviceChannelState(String deviceIp, Integer onLineState); Boolean updateDeviceChannelState(String deviceIp, Integer onLineState);
/**
* 根据ip列表删除设备通道
*
* @param list ip列表
* @return 返回删除条数
*/
Integer deleteByChannelIps(List<String> list);
/**
* 批量写入设备通道
*
* @param insertData 写入数据
* @return 返回写入条数
*/
Boolean insertChannel(List<RemoteSdkChannel> insertData);
/**
* 更新设备通道信息
* @param updateData 更新数据
* @return 返回更新成功数量
*/
Integer updateChannelInfo(List<RemoteSisDeviceChannel> updateData);
} }

View File

@@ -5,6 +5,23 @@ import lombok.Data;
@Data @Data
public class RemoteSdkChannel { public class RemoteSdkChannel {
private Long deviceId;
private String nvrIp;
private Integer nvrPort;
private String nvrAccount;
private String nvrPwd;
private String nvrFactoryNo;
private Long groupId;
private String tenantId;
/** /**
* 通道id * 通道id
*/ */

View File

@@ -62,4 +62,9 @@ public class RemoteSisDeviceManage {
* 设备组id * 设备组id
*/ */
private Long groupId; private Long groupId;
/**
* 租户编号
*/
private String tenantId;
} }

View File

@@ -0,0 +1,106 @@
package org.dromara.sis.dubbo;
import cn.hutool.core.util.StrUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.sis.api.RemoteDeviceService;
import org.dromara.sis.api.domain.RemoteSdkChannel;
import org.dromara.sis.api.domain.RemoteSisDeviceChannel;
import org.dromara.sis.api.domain.RemoteSisDeviceManage;
import org.dromara.sis.domain.SisDeviceChannel;
import org.dromara.sis.domain.SisDeviceManage;
import org.dromara.sis.domain.covert.CommonBeanCovert;
import org.dromara.sis.sdk.hik.HikSdkConstans;
import org.dromara.sis.service.ISisDeviceChannelService;
import org.dromara.sis.service.ISisDeviceManageService;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* 海康设备远程服务调用
*
* @author lxj
*/
@Slf4j
@Component
@RequiredArgsConstructor
public class RemoteDeviceServiceImpl implements RemoteDeviceService {
private final ISisDeviceManageService deviceManageService;
private final ISisDeviceChannelService deviceChannelService;
@Override
public List<RemoteSisDeviceManage> queryHikDevices() {
List<SisDeviceManage> sisDeviceManages = deviceManageService.queryHikDevices();
return CommonBeanCovert.INSTANCE.entity2Remote(sisDeviceManages);
}
@Override
public Boolean updateDeviceState(RemoteSisDeviceManage item) {
return deviceManageService.updateDeviceState(CommonBeanCovert.INSTANCE.Remote2Entity(item));
}
@Override
public List<RemoteSisDeviceChannel> queryDeviceChannels(String deviceIp) {
List<SisDeviceChannel> channels = deviceChannelService.queryByDeviceIp(deviceIp);
return CommonBeanCovert.INSTANCE.channelEntity2Remote(channels);
}
@Override
public Boolean updateDeviceChannelState(String deviceIp, Integer onLineState) {
return deviceChannelService.updateDeviceChannelState(deviceIp, onLineState);
}
@Override
public Integer deleteByChannelIps(List<String> list) {
return deviceChannelService.deleteByChannelIps(list);
}
@Override
public Boolean insertChannel(List<RemoteSdkChannel> insertData) {
List<SisDeviceChannel> list = insertData.stream().map(item -> {
SisDeviceChannel channel = new SisDeviceChannel();
// 通道设备信息
channel.setDeviceIp(item.getChannelIp());
channel.setDevicePort(Integer.valueOf(item.getChannelPort()));
channel.setDeviceAccount(item.getChannelAccount());
// 目前没发获取通道设备厂商,默认跟着录像机走
channel.setFactoryNo(item.getNvrFactoryNo());
channel.setChannelNo(HikSdkConstans.DEFAULT_CHANNEL);
channel.setChannelState(item.getChannelStatus());
if (StrUtil.isNotEmpty(item.getChannelPwd())) {
channel.setDevicePwd(item.getChannelPwd());
}
// nvr 设备信息
channel.setNvrIp(item.getNvrIp());
channel.setNvrPort(HikSdkConstans.DEFAULT_RTSP_PORT);
channel.setNvrAccount(item.getNvrAccount());
channel.setNvrPwd(item.getNvrPwd());
channel.setNvrFactoryNo(item.getNvrFactoryNo());
channel.setNvrChannelNo(item.getChannelId() + HikSdkConstans.DEFAULT_CHANNEL_PREFX);
// 系统设备信息
// 将设备id 更改为nvr的设备id
channel.setDeviceId(item.getDeviceId());
channel.setGroupId(item.getGroupId());
channel.setChannelName(item.getChannelName());
channel.setChannelNo(item.getChannelId() + HikSdkConstans.DEFAULT_CHANNEL_PREFX);
channel.setTenantId(item.getTenantId());
return channel;
}).toList();
return deviceChannelService.batchInsert(list);
}
@Override
public Integer updateChannelInfo(List<RemoteSisDeviceChannel> updateData) {
int num = 0;
for (RemoteSisDeviceChannel item : updateData) {
Boolean b = deviceChannelService.updateDeviceChannelState(item.getDeviceIp(), item.getChannelState());
if (b) {
num++;
}
}
return num;
}
}

View File

@@ -1,51 +0,0 @@
package org.dromara.sis.dubbo;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.sis.api.RemoteHikDeviceService;
import org.dromara.sis.api.domain.RemoteSisDeviceChannel;
import org.dromara.sis.api.domain.RemoteSisDeviceManage;
import org.dromara.sis.domain.SisDeviceChannel;
import org.dromara.sis.domain.SisDeviceManage;
import org.dromara.sis.domain.covert.CommonBeanCovert;
import org.dromara.sis.service.ISisDeviceChannelService;
import org.dromara.sis.service.ISisDeviceManageService;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* 海康设备远程服务调用
*
* @author lxj
*/
@Slf4j
@Component
@RequiredArgsConstructor
public class RemoteHikDeviceServiceImpl implements RemoteHikDeviceService {
private final ISisDeviceManageService deviceManageService;
private final ISisDeviceChannelService deviceChannelService;
@Override
public List<RemoteSisDeviceManage> queryHikDevices() {
List<SisDeviceManage> sisDeviceManages = deviceManageService.queryHikDevices();
return CommonBeanCovert.INSTANCE.entity2Remote(sisDeviceManages);
}
@Override
public Boolean updateDeviceState(RemoteSisDeviceManage item) {
return deviceManageService.updateDeviceState(CommonBeanCovert.INSTANCE.Remote2Entity(item));
}
@Override
public List<RemoteSisDeviceChannel> queryDeviceChannels(String deviceIp) {
List<SisDeviceChannel> channels = deviceChannelService.queryByDeviceIp(deviceIp);
return CommonBeanCovert.INSTANCE.channelEntity2Remote(channels);
}
@Override
public Boolean updateDeviceChannelState(String deviceIp, Integer onLineState) {
return deviceChannelService.updateDeviceChannelState(deviceIp, onLineState);
}
}

View File

@@ -8,14 +8,18 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference; import org.apache.dubbo.config.annotation.DubboReference;
import org.dromara.property.api.RemoteFloorService; import org.dromara.property.api.RemoteFloorService;
import org.dromara.property.api.domain.vo.RemoteFloorVo; import org.dromara.sis.domain.vo.SisAccessControlVo;
import org.dromara.sis.domain.vo.*; import org.dromara.sis.domain.vo.SisAuthGroupRefVo;
import org.dromara.sis.domain.vo.SisAuthRecordVo;
import org.dromara.sis.domain.vo.SisDeviceBindRefVo;
import org.dromara.sis.sdk.e8.E8PlatformApi; import org.dromara.sis.sdk.e8.E8PlatformApi;
import org.dromara.sis.sdk.e8.domain.accessControl.req.RemoteOpenDoorReq; import org.dromara.sis.sdk.e8.domain.accessControl.req.RemoteOpenDoorReq;
import org.dromara.sis.sdk.hik.HCNetSDK; import org.dromara.sis.sdk.hik.HCNetSDK;
import org.dromara.sis.sdk.hik.HikApiService;
import org.dromara.sis.sdk.huawei.HuaWeiBoxApi; import org.dromara.sis.sdk.huawei.HuaWeiBoxApi;
import org.dromara.sis.service.*; import org.dromara.sis.service.ISisAccessControlService;
import org.dromara.sis.service.ISisAuthGroupRefService;
import org.dromara.sis.service.ISisAuthRecordService;
import org.dromara.sis.service.ISisDeviceBindRefService;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
@@ -23,7 +27,9 @@ import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.Collection;
import java.util.Date;
import java.util.List;
import static org.dromara.sis.sdk.hik.HCNetSDK.*; import static org.dromara.sis.sdk.hik.HCNetSDK.*;
@@ -35,10 +41,8 @@ public class HikAlarmCallBack implements HCNetSDK.FMSGCallBack_V31 {
private final HuaWeiBoxApi huaWeiBoxApi; private final HuaWeiBoxApi huaWeiBoxApi;
private final ISisAuthRecordService authRecordService; private final ISisAuthRecordService authRecordService;
private final ISisAuthGroupRefService authGroupRefService; private final ISisAuthGroupRefService authGroupRefService;
private final ISisElevatorInfoService elevatorInfoService;
private final ISisDeviceBindRefService deviceBindRefService; private final ISisDeviceBindRefService deviceBindRefService;
private final ISisAccessControlService accessControlService; private final ISisAccessControlService accessControlService;
private final ISisElevatorFloorRefService elevatorFloorRefService;
private final E8PlatformApi e8PlatformApi; private final E8PlatformApi e8PlatformApi;
@DubboReference @DubboReference
@@ -330,7 +334,7 @@ public class HikAlarmCallBack implements HCNetSDK.FMSGCallBack_V31 {
} }
Date now = new Date(); Date now = new Date();
if(DateUtil.compare(now, authRecord.getEndDate()) > 0){ if (DateUtil.compare(now, authRecord.getEndDate()) > 0) {
log.info("当前人脸已过期,暂不处理。"); log.info("当前人脸已过期,暂不处理。");
return true; return true;
} }

View File

@@ -24,6 +24,7 @@ public class HikDevWorkStateCallBack implements HCNetSDK.DEV_WORK_STATE_CB {
} }
lpWorkState.read(); lpWorkState.read();
log.info(JSON.toJSONString(lpWorkState)); log.info(JSON.toJSONString(lpWorkState));
log.info("海康sdk心跳信息上报 tda = {}", JSON.toJSONString(lpWorkState));
return true; return true;
} }
} }

View File

@@ -60,6 +60,14 @@ public interface ISisDeviceChannelService {
*/ */
Boolean insert(SisDeviceChannel channel); Boolean insert(SisDeviceChannel channel);
/**
* 批量写入通道信息
*
* @param list 批量写入通道信息
* @return 返回写入数量
*/
Boolean batchInsert(List<SisDeviceChannel> list);
/** /**
* 修改设备通道管理 * 修改设备通道管理
* *
@@ -77,6 +85,21 @@ public interface ISisDeviceChannelService {
*/ */
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid); Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
/**
* 通过设备ids 删除设备通道信息
*
* @param deviceIds 设备ids
* @return 返回删除数量
*/
Integer deleteByDeviceIds(List<Long> deviceIds);
/**
* 通过通道ip删除设备通道
*
* @param list ip列表
*/
Integer deleteByChannelIps(List<String> list);
/** /**
* 查询设备通道树 * 查询设备通道树
* *
@@ -87,13 +110,6 @@ public interface ISisDeviceChannelService {
void handleHikDeviceChannel(SisDeviceManageBo bo); void handleHikDeviceChannel(SisDeviceManageBo bo);
/**
* 通过设备ids 删除设备通道信息
*
* @param deviceIds 设备ids
* @return 返回删除数量
*/
Integer deleteByDeviceIds(List<Long> deviceIds);
SisDeviceChannel queryByChannelIp(String channelIp); SisDeviceChannel queryByChannelIp(String channelIp);
@@ -107,8 +123,11 @@ public interface ISisDeviceChannelService {
/** /**
* 更新设备状态 * 更新设备状态
*
* @param deviceIp 设备ip * @param deviceIp 设备ip
* @return 返回是否操作成功 * @return 返回是否操作成功
*/ */
Boolean updateDeviceChannelState(String deviceIp, Integer onLineState); Boolean updateDeviceChannelState(String deviceIp, Integer onLineState);
} }

View File

@@ -123,6 +123,11 @@ public class SisDeviceChannelServiceImpl implements ISisDeviceChannelService {
return baseMapper.insert(channel) > 0; return baseMapper.insert(channel) > 0;
} }
@Override
public Boolean batchInsert(List<SisDeviceChannel> list) {
return baseMapper.insertBatch(list);
}
/** /**
* 修改设备通道管理 * 修改设备通道管理
* *
@@ -302,6 +307,13 @@ public class SisDeviceChannelServiceImpl implements ISisDeviceChannelService {
return baseMapper.delete(lqw); return baseMapper.delete(lqw);
} }
@Override
public Integer deleteByChannelIps(List<String> list) {
LambdaQueryWrapper<SisDeviceChannel> lqw = new LambdaQueryWrapper<>();
lqw.in(SisDeviceChannel::getDeviceIp, list);
return baseMapper.delete(lqw);
}
@Override @Override
public List<SisDeviceChannel> queryByDeviceIp(String deviceIp) { public List<SisDeviceChannel> queryByDeviceIp(String deviceIp) {
LambdaQueryWrapper<SisDeviceChannel> lqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SisDeviceChannel> lqw = new LambdaQueryWrapper<>();

View File

@@ -5,9 +5,10 @@ import com.aizuda.snailjob.client.job.core.annotation.JobExecutor;
import com.aizuda.snailjob.client.job.core.dto.JobArgs; import com.aizuda.snailjob.client.job.core.dto.JobArgs;
import com.aizuda.snailjob.client.model.ExecuteResult; import com.aizuda.snailjob.client.model.ExecuteResult;
import com.aizuda.snailjob.common.log.SnailJobLog; import com.aizuda.snailjob.common.log.SnailJobLog;
import com.alibaba.fastjson2.JSONObject;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.dubbo.config.annotation.DubboReference; import org.apache.dubbo.config.annotation.DubboReference;
import org.dromara.sis.api.RemoteHikDeviceService; import org.dromara.sis.api.RemoteDeviceService;
import org.dromara.sis.api.RemoteHikSdkService; import org.dromara.sis.api.RemoteHikSdkService;
import org.dromara.sis.api.domain.RemoteSdkChannel; import org.dromara.sis.api.domain.RemoteSdkChannel;
import org.dromara.sis.api.domain.RemoteSisDeviceChannel; import org.dromara.sis.api.domain.RemoteSisDeviceChannel;
@@ -15,8 +16,7 @@ import org.dromara.sis.api.domain.RemoteSisDeviceManage;
import org.dromara.sis.api.enums.DeviceTypeEnum; import org.dromara.sis.api.enums.DeviceTypeEnum;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.List; import java.util.*;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@@ -31,7 +31,7 @@ import java.util.stream.Collectors;
public class HikDeviceCheckStateTask { public class HikDeviceCheckStateTask {
@DubboReference @DubboReference
private RemoteHikDeviceService remoteHikDeviceService; private RemoteDeviceService remoteDeviceService;
@DubboReference @DubboReference
private RemoteHikSdkService remoteHikSdkService; private RemoteHikSdkService remoteHikSdkService;
@@ -44,7 +44,7 @@ public class HikDeviceCheckStateTask {
* @throws InterruptedException * @throws InterruptedException
*/ */
public ExecuteResult jobExecute(JobArgs jobArgs) throws InterruptedException { public ExecuteResult jobExecute(JobArgs jobArgs) throws InterruptedException {
List<RemoteSisDeviceManage> device = remoteHikDeviceService.queryHikDevices(); List<RemoteSisDeviceManage> device = remoteDeviceService.queryHikDevices();
if (CollUtil.isEmpty(device)) { if (CollUtil.isEmpty(device)) {
SnailJobLog.REMOTE.info("需要同步的hik设备数量为0任务执行结束"); SnailJobLog.REMOTE.info("需要同步的hik设备数量为0任务执行结束");
return ExecuteResult.success(); return ExecuteResult.success();
@@ -76,17 +76,71 @@ public class HikDeviceCheckStateTask {
*/ */
private void updateDeviceChannelStatus(RemoteSisDeviceManage sisDeviceManage) { private void updateDeviceChannelStatus(RemoteSisDeviceManage sisDeviceManage) {
// 查询设备通道信息 // 查询设备通道信息
List<RemoteSisDeviceChannel> ls = remoteHikDeviceService.queryDeviceChannels(sisDeviceManage.getDeviceIp()); List<RemoteSisDeviceChannel> ls = remoteDeviceService.queryDeviceChannels(sisDeviceManage.getDeviceIp());
SnailJobLog.REMOTE.info("设备[{}]本地通道数量={}", sisDeviceManage.getDeviceIp(), ls.size()); SnailJobLog.REMOTE.info("设备[{}]本地通道数量={}", sisDeviceManage.getDeviceIp(), ls.size());
List<RemoteSdkChannel> sdkChannels = remoteHikSdkService.getDeviceChannel(sisDeviceManage.getDeviceIp()); List<RemoteSdkChannel> sdkChannels = remoteHikSdkService.getDeviceChannel(sisDeviceManage.getDeviceIp());
SnailJobLog.REMOTE.info("设备[{}]sdk通道数量={}", sisDeviceManage.getDeviceIp(), sdkChannels.size()); SnailJobLog.REMOTE.info("设备[{}]sdk通道数量={}", sisDeviceManage.getDeviceIp(), sdkChannels.size());
Map<String, RemoteSisDeviceChannel> data1 = ls.stream().collect(Collectors.toMap(RemoteSisDeviceChannel::getDeviceIp, item -> item)); Map<String, RemoteSisDeviceChannel> data1 = ls.stream().collect(Collectors.toMap(RemoteSisDeviceChannel::getDeviceIp, item -> item));
Map<String, RemoteSdkChannel> data2 = sdkChannels.stream().collect(Collectors.toMap(RemoteSdkChannel::getChannelIp, item -> item)); Map<String, RemoteSdkChannel> data2 = sdkChannels.stream().collect(Collectors.toMap(RemoteSdkChannel::getChannelIp, item -> item));
Set<String> keys = new HashSet<>(data1.size() + data2.size());
keys.addAll(data1.keySet());
keys.addAll(data2.keySet());
// 在data1 不在data2 的数据 -- 删除本体通道
List<RemoteSisDeviceChannel> deleteData = new ArrayList<>(data1.size());
// 在data2有 data1中没有的数据 -- 写入本地通道
List<RemoteSdkChannel> insertData = new ArrayList<>(data1.size());
// 在2个集合中都存在的数据 -- 更新本地通道
List<RemoteSisDeviceChannel> updateData = new ArrayList<>(data1.size());
keys.forEach(item -> {
RemoteSisDeviceChannel remoteSisDeviceChannel = data1.get(item);
RemoteSdkChannel remoteSdkChannel = data2.get(item);
if (remoteSisDeviceChannel == null) {
if (remoteSdkChannel != null) {
remoteSdkChannel.setDeviceId(sisDeviceManage.getId());
remoteSdkChannel.setNvrIp(sisDeviceManage.getDeviceIp());
remoteSdkChannel.setNvrPort(sisDeviceManage.getDevicePort());
remoteSdkChannel.setNvrAccount(sisDeviceManage.getDeviceAccount());
remoteSdkChannel.setNvrPwd(sisDeviceManage.getDevicePwd());
remoteSdkChannel.setNvrFactoryNo(sisDeviceManage.getFactoryNo());
remoteSdkChannel.setGroupId(sisDeviceManage.getGroupId());
remoteSdkChannel.setTenantId(sisDeviceManage.getTenantId());
// 写入
insertData.add(remoteSdkChannel);
}
} else {
if (remoteSdkChannel == null) {
// 删除
deleteData.add(remoteSisDeviceChannel);
} else {
// 更新
if (!Objects.equals(remoteSdkChannel.getChannelStatus(), remoteSisDeviceChannel.getChannelState())) {
updateData.add(remoteSisDeviceChannel);
}
}
}
});
// 开始执行更新操作
if (!deleteData.isEmpty()) {
List<String> delList = deleteData.stream().map(RemoteSisDeviceChannel::getDeviceIp).toList();
int num = remoteDeviceService.deleteByChannelIps(delList);
SnailJobLog.REMOTE.info("删除通道完成,删除数量={}", num);
SnailJobLog.REMOTE.info("删除的通道列表={}", JSONObject.toJSONString(delList));
}
// 开始写入操作
if (!insertData.isEmpty()) {
Boolean result = remoteDeviceService.insertChannel(insertData);
SnailJobLog.REMOTE.info("写入通道信息完成result={}", result);
}
// 开始更新操作
if (!updateData.isEmpty()) {
Integer i = remoteDeviceService.updateChannelInfo(updateData);
SnailJobLog.REMOTE.info("更新通道完成,通道数量={},完成数量={}", updateData.size(), i);
}
} }
@@ -104,16 +158,17 @@ public class HikDeviceCheckStateTask {
if (item.getDeviceStatus() != onLineState) { if (item.getDeviceStatus() != onLineState) {
SnailJobLog.REMOTE.info("设备[{}]在线状态变更,开始更新状态。 old={}new ={} ", item.getDeviceIp(), item.getDeviceStatus(), onLineState); SnailJobLog.REMOTE.info("设备[{}]在线状态变更,开始更新状态。 old={}new ={} ", item.getDeviceIp(), item.getDeviceStatus(), onLineState);
item.setDeviceStatus(onLineState); item.setDeviceStatus(onLineState);
Boolean result = remoteHikDeviceService.updateDeviceState(item); Boolean result = remoteDeviceService.updateDeviceState(item);
SnailJobLog.REMOTE.info("设备[{}]在线状态变更,状态更新完成。 result={} ", item.getDeviceIp(), result); SnailJobLog.REMOTE.info("设备[{}]在线状态变更,状态更新完成。 result={} ", item.getDeviceIp(), result);
// 监测当前设备是否存在通道,如果有则跟新通道信息 // 监测当前设备是否存在通道,如果有则跟新通道信息
List<RemoteSisDeviceChannel> ls = remoteHikDeviceService.queryDeviceChannels(item.getDeviceIp()); List<RemoteSisDeviceChannel> ls = remoteDeviceService.queryDeviceChannels(item.getDeviceIp());
if (CollUtil.isNotEmpty(ls)) { if (CollUtil.isNotEmpty(ls)) {
Boolean r1 = remoteHikDeviceService.updateDeviceChannelState(item.getDeviceIp(), onLineState); Boolean r1 = remoteDeviceService.updateDeviceChannelState(item.getDeviceIp(), onLineState);
SnailJobLog.REMOTE.info("设备通道[{}]在线状态变更,状态更新完成。 result={} ", item.getDeviceIp(), r1); SnailJobLog.REMOTE.info("设备通道[{}]在线状态变更,状态更新完成。 result={} ", item.getDeviceIp(), r1);
} }
} }
return isLogin; return isLogin;
} }
} }