From f840c85666369d407ff08ceb6ba30b17aa9d0d4e Mon Sep 17 00:00:00 2001
From: lawrencehj <1934378145@qq.com>
Date: 星期三, 10 三月 2021 12:21:05 +0800
Subject: [PATCH] 修正一处可能导致死循环的代码
---
src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java | 150 ++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 144 insertions(+), 6 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java b/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java
index cc8320c..ac2ed5b 100644
--- a/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStoragerImpl.java
@@ -3,25 +3,31 @@
import java.util.*;
import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
+import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform;
+import com.genersoft.iot.vmp.gb28181.bean.ParentPlatformCatch;
+import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import com.genersoft.iot.vmp.gb28181.bean.MobilePosition;
import com.genersoft.iot.vmp.storager.dao.DeviceChannelMapper;
import com.genersoft.iot.vmp.storager.dao.DeviceMapper;
+import com.genersoft.iot.vmp.storager.dao.ParentPlatformMapper;
+import com.genersoft.iot.vmp.storager.dao.PatformChannelMapper;
+import com.genersoft.iot.vmp.vmanager.platform.bean.ChannelReduce;
import com.genersoft.iot.vmp.storager.dao.DeviceMobilePositionMapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
-import io.swagger.models.auth.In;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.genersoft.iot.vmp.gb28181.bean.Device;
import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
-import org.springframework.util.StringUtils;
+import org.springframework.transaction.annotation.Transactional;
/**
* @Description:瑙嗛璁惧鏁版嵁瀛樺偍-jdbc瀹炵幇
* @author: swwheihei
* @date: 2020骞�5鏈�6鏃� 涓嬪崍2:31:42
*/
+@SuppressWarnings("rawtypes")
@Component
public class VideoManagerStoragerImpl implements IVideoManagerStorager {
@@ -30,9 +36,20 @@
@Autowired
private DeviceChannelMapper deviceChannelMapper;
-
+
@Autowired
private DeviceMobilePositionMapper deviceMobilePositionMapper;
+
+ @Autowired
+ private ParentPlatformMapper platformMapper;
+
+ @Autowired
+ private IRedisCatchStorage redisCatchStorage;
+
+ @Autowired
+ private PatformChannelMapper patformChannelMapper;
+
+
/**
@@ -183,11 +200,11 @@
@Override
public synchronized boolean online(String deviceId) {
Device device = deviceMapper.getDeviceByDeviceId(deviceId);
- device.setOnline(1);
- System.out.println("鏇存柊璁惧鍦ㄧ嚎");
if (device == null) {
return false;
}
+ device.setOnline(1);
+ System.out.println("鏇存柊璁惧鍦ㄧ嚎");
return deviceMapper.update(device) > 0;
}
@@ -211,7 +228,7 @@
*/
@Override
public void cleanChannelsForDevice(String deviceId) {
- int result = deviceChannelMapper.cleanChannelsByDeviceId(deviceId);
+ deviceChannelMapper.cleanChannelsByDeviceId(deviceId);
}
/**
@@ -234,6 +251,126 @@
return deviceMobilePositionMapper.queryPositionByDeviceIdAndTime(deviceId, startTime, endTime);
}
+ @Override
+ public boolean addParentPlatform(ParentPlatform parentPlatform) {
+ int result = platformMapper.addParentPlatform(parentPlatform);
+ return result > 0;
+ }
+
+ @Override
+ public boolean updateParentPlatform(ParentPlatform parentPlatform) {
+ int result = 0;
+ ParentPlatformCatch parentPlatformCatch = redisCatchStorage.queryPlatformCatchInfo(parentPlatform.getServerGBId()); // .getDeviceGBId());
+ if ( platformMapper.getParentPlatById(parentPlatform.getServerGBId()) == null) {
+ result = platformMapper.addParentPlatform(parentPlatform);
+
+ if (parentPlatformCatch == null) {
+ parentPlatformCatch = new ParentPlatformCatch();
+ parentPlatformCatch.setParentPlatform(parentPlatform);
+ parentPlatformCatch.setId(parentPlatform.getServerGBId());
+ }
+ }else {
+ result = platformMapper.updateParentPlatform(parentPlatform);
+ }
+ // 鏇存柊缂撳瓨
+ parentPlatformCatch.setParentPlatform(parentPlatform);
+ redisCatchStorage.updatePlatformCatchInfo(parentPlatformCatch);
+ return result > 0;
+ }
+
+ @Transactional
+ @Override
+ public boolean deleteParentPlatform(ParentPlatform parentPlatform) {
+ int result = platformMapper.delParentPlatform(parentPlatform);
+ // 鍒犻櫎鍏宠仈鐨勯�氶亾
+ patformChannelMapper.cleanChannelForGB(parentPlatform.getServerGBId());
+ return result > 0;
+ }
+
+ @Override
+ public PageInfo<ParentPlatform> queryParentPlatformList(int page, int count) {
+ PageHelper.startPage(page, count);
+ List<ParentPlatform> all = platformMapper.getParentPlatformList();
+ return new PageInfo<>(all);
+ }
+
+ @Override
+ public ParentPlatform queryParentPlatById(String platformGbId) {
+ return platformMapper.getParentPlatById(platformGbId);
+ }
+
+ @Override
+ public List<ParentPlatform> queryEnableParentPlatformList(boolean enable) {
+ return platformMapper.getEnableParentPlatformList(enable);
+ }
+
+ @Override
+ public void outlineForAllParentPlatform() {
+ platformMapper.outlineForAllParentPlatform();
+ }
+
+
+ @Override
+ public PageInfo<ChannelReduce> queryAllChannelList(int page, int count, String query, Boolean online,
+ Boolean channelType, String platformId, Boolean inPlatform) {
+ PageHelper.startPage(page, count);
+ List<ChannelReduce> all = deviceChannelMapper.queryChannelListInAll(query, online, channelType, platformId, inPlatform);
+ return new PageInfo<>(all);
+ }
+
+ @Override
+ public List<ChannelReduce> queryChannelListInParentPlatform(String platformId) {
+
+ return deviceChannelMapper.queryChannelListInAll(null, null, null, platformId, true);
+ }
+
+ @Override
+ public int updateChannelForGB(String platformId, List<ChannelReduce> channelReduces) {
+
+ Map<String, ChannelReduce> deviceAndChannels = new HashMap<>();
+ for (ChannelReduce channelReduce : channelReduces) {
+ deviceAndChannels.put(channelReduce.getDeviceId() + "_" + channelReduce.getChannelId(), channelReduce);
+ }
+ List<String> deviceAndChannelList = new ArrayList<>(deviceAndChannels.keySet());
+ // 鏌ヨ褰撳墠宸茬粡瀛樺湪鐨�
+ List<String> relatedPlatformchannels = patformChannelMapper.findChannelRelatedPlatform(platformId, deviceAndChannelList);
+ if (relatedPlatformchannels != null) {
+ deviceAndChannelList.removeAll(relatedPlatformchannels);
+ }
+ for (String relatedPlatformchannel : relatedPlatformchannels) {
+ deviceAndChannels.remove(relatedPlatformchannel);
+ }
+ List<ChannelReduce> channelReducesToAdd = new ArrayList<>(deviceAndChannels.values());
+ // 瀵瑰墿涓嬬殑鏁版嵁杩涜瀛樺偍
+ int result = 0;
+ if (channelReducesToAdd.size() > 0) {
+ result = patformChannelMapper.addChannels(platformId, channelReducesToAdd);
+ }
+
+ return result;
+ }
+
+
+ @Override
+ public int delChannelForGB(String platformId, List<ChannelReduce> channelReduces) {
+
+ int result = patformChannelMapper.delChannelForGB(platformId, channelReduces);
+
+ return result;
+ }
+
+ @Override
+ public DeviceChannel queryChannelInParentPlatform(String platformId, String channelId) {
+ DeviceChannel channel = patformChannelMapper.queryChannelInParentPlatform(platformId, channelId);
+ return channel;
+ }
+
+ @Override
+ public Device queryVideoDeviceByPlatformIdAndChannelId(String platformId, String channelId) {
+ Device device = patformChannelMapper.queryVideoDeviceByPlatformIdAndChannelId(platformId, channelId);
+ return device;
+ }
+
/**
* 鏌ヨ鏈�鏂扮Щ鍔ㄤ綅缃�
* @param deviceId
@@ -250,4 +387,5 @@
public int clearMobilePositionsByDeviceId(String deviceId) {
return deviceMobilePositionMapper.clearMobilePositionsByDeviceId(deviceId);
}
+
}
--
Gitblit v1.8.0