临时提交
parent
52aa4e6e85
commit
052bbf16c3
|
@ -4,6 +4,8 @@ import com.genersoft.iot.vmp.gb28181.bean.CommonGBChannel;
|
|||
import org.apache.ibatis.annotations.*;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Mapper
|
||||
@Repository
|
||||
public interface CommonGBChannelMapper {
|
||||
|
@ -294,4 +296,8 @@ public interface CommonGBChannelMapper {
|
|||
int update(CommonGBChannel commonGBChannel);
|
||||
|
||||
int updateStatus(@Param("gbId") int gbId, @Param("status") int status);
|
||||
|
||||
int updateStatusForList(List<CommonGBChannel> commonGBChannels, @Param("status") int status);
|
||||
|
||||
List<CommonGBChannel> queryInListByStatus(List<CommonGBChannel> commonGBChannelList, @Param("status") int status);
|
||||
}
|
||||
|
|
|
@ -24,6 +24,8 @@ public interface IGbChannelService {
|
|||
|
||||
void closeSend(CommonGBChannel commonGBChannel);
|
||||
|
||||
void closeSend(List<CommonGBChannel> commonGBChannelList);
|
||||
|
||||
void batchAdd(List<CommonGBChannel> commonGBChannels);
|
||||
|
||||
void updateStatus(List<CommonGBChannel> channelList);
|
||||
|
|
|
@ -44,6 +44,8 @@ public class GbChannelServiceImpl implements IGbChannelService {
|
|||
}catch (Exception e) {
|
||||
log.warn("[通道移除通知] 发送失败,{}", channel.getGbDeviceId(), e);
|
||||
}
|
||||
// 结束发送
|
||||
closeSend(channel);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
@ -91,10 +93,34 @@ public class GbChannelServiceImpl implements IGbChannelService {
|
|||
log.warn("[多个通道离线] 通道数量为0,更新失败");
|
||||
return 0;
|
||||
}
|
||||
int result = 0;
|
||||
for (CommonGBChannel channel : commonGBChannelList) {
|
||||
result += offline(channel);
|
||||
List<CommonGBChannel> onlineChannelList = commonGBChannelMapper.queryInListByStatus(commonGBChannelList, 1);
|
||||
if (onlineChannelList.isEmpty()) {
|
||||
log.warn("[多个通道离线] 更新失败, 参数内通道已经离线");
|
||||
return 0;
|
||||
}
|
||||
int limitCount = 1000;
|
||||
int result = 0;
|
||||
if (onlineChannelList.size() > limitCount) {
|
||||
for (int i = 0; i < onlineChannelList.size(); i += limitCount) {
|
||||
int toIndex = i + limitCount;
|
||||
if (i + limitCount > onlineChannelList.size()) {
|
||||
toIndex = onlineChannelList.size();
|
||||
}
|
||||
result += commonGBChannelMapper.updateStatusForList(onlineChannelList.subList(i, toIndex), 0);
|
||||
}
|
||||
}else {
|
||||
result += commonGBChannelMapper.updateStatusForList(onlineChannelList, 0);
|
||||
}
|
||||
if (result > 0) {
|
||||
try {
|
||||
// 发送catalog
|
||||
eventPublisher.catalogEventPublish(null, onlineChannelList, CatalogEvent.OFF);
|
||||
}catch (Exception e) {
|
||||
log.warn("[多个通道离线] 发送失败,数量:{}", onlineChannelList.size(), e);
|
||||
}
|
||||
}
|
||||
// 结束国标级联的发送
|
||||
closeSend(onlineChannelList);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -123,10 +149,34 @@ public class GbChannelServiceImpl implements IGbChannelService {
|
|||
log.warn("[多个通道上线] 通道数量为0,更新失败");
|
||||
return 0;
|
||||
}
|
||||
int result = 0;
|
||||
for (CommonGBChannel channel : commonGBChannelList) {
|
||||
result += online(channel);
|
||||
List<CommonGBChannel> offlineChannelList = commonGBChannelMapper.queryInListByStatus(commonGBChannelList, 0);
|
||||
if (offlineChannelList.isEmpty()) {
|
||||
log.warn("[多个通道上线] 更新失败, 参数内通道已经上线线");
|
||||
return 0;
|
||||
}
|
||||
// 批量更新
|
||||
int limitCount = 1000;
|
||||
int result = 0;
|
||||
if (offlineChannelList.size() > limitCount) {
|
||||
for (int i = 0; i < offlineChannelList.size(); i += limitCount) {
|
||||
int toIndex = i + limitCount;
|
||||
if (i + limitCount > offlineChannelList.size()) {
|
||||
toIndex = offlineChannelList.size();
|
||||
}
|
||||
result += commonGBChannelMapper.updateStatusForList(offlineChannelList.subList(i, toIndex), 1);
|
||||
}
|
||||
}else {
|
||||
result += commonGBChannelMapper.updateStatusForList(offlineChannelList, 1);
|
||||
}
|
||||
if (result > 0) {
|
||||
try {
|
||||
// 发送catalog
|
||||
eventPublisher.catalogEventPublish(null, offlineChannelList, CatalogEvent.ON);
|
||||
}catch (Exception e) {
|
||||
log.warn("[多个通道上线] 发送失败,数量:{}", offlineChannelList.size(), e);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -135,6 +185,16 @@ public class GbChannelServiceImpl implements IGbChannelService {
|
|||
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void closeSend(List<CommonGBChannel> commonGBChannelList) {
|
||||
if (!commonGBChannelList.isEmpty()) {
|
||||
for (CommonGBChannel commonGBChannel : commonGBChannelList) {
|
||||
closeSend(commonGBChannel);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void batchAdd(List<CommonGBChannel> commonGBChannels) {
|
||||
|
||||
|
|
Loading…
Reference in New Issue