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 | 134 ++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 126 insertions(+), 8 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 b783238..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
@@ -6,9 +6,13 @@
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 org.springframework.beans.factory.annotation.Autowired;
@@ -16,12 +20,14 @@
import com.genersoft.iot.vmp.gb28181.bean.Device;
import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
+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 {
@@ -29,13 +35,19 @@
private DeviceMapper deviceMapper;
@Autowired
- private DeviceChannelMapper deviceChannelMapper;
+ private DeviceChannelMapper deviceChannelMapper;
+
+ @Autowired
+ private DeviceMobilePositionMapper deviceMobilePositionMapper;
@Autowired
private ParentPlatformMapper platformMapper;
@Autowired
private IRedisCatchStorage redisCatchStorage;
+
+ @Autowired
+ private PatformChannelMapper patformChannelMapper;
@@ -188,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;
}
@@ -210,10 +222,33 @@
return deviceMapper.update(device) > 0;
}
-
+ /**
+ * 娓呯┖閫氶亾
+ * @param deviceId
+ */
@Override
public void cleanChannelsForDevice(String deviceId) {
- int result = deviceChannelMapper.cleanChannelsByDeviceId(deviceId);
+ deviceChannelMapper.cleanChannelsByDeviceId(deviceId);
+ }
+
+ /**
+ * 娣诲姞Mobile Position璁惧绉诲姩浣嶇疆
+ * @param MobilePosition
+ */
+ @Override
+ public synchronized boolean insertMobilePosition(MobilePosition mobilePosition) {
+ return deviceMobilePositionMapper.insertNewPosition(mobilePosition) > 0;
+ }
+
+ /**
+ * 鏌ヨ绉诲姩浣嶇疆杞ㄨ抗
+ * @param deviceId
+ * @param startTime
+ * @param endTime
+ */
+ @Override
+ public synchronized List<MobilePosition> queryMobilePositions(String deviceId, String startTime, String endTime) {
+ return deviceMobilePositionMapper.queryPositionByDeviceIdAndTime(deviceId, startTime, endTime);
}
@Override
@@ -225,14 +260,14 @@
@Override
public boolean updateParentPlatform(ParentPlatform parentPlatform) {
int result = 0;
- ParentPlatformCatch parentPlatformCatch = redisCatchStorage.queryPlatformCatchInfo(parentPlatform.getDeviceGBId());
- if ( platformMapper.getParentPlatById(parentPlatform.getDeviceGBId()) == null) {
+ 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.getDeviceGBId());
+ parentPlatformCatch.setId(parentPlatform.getServerGBId());
}
}else {
result = platformMapper.updateParentPlatform(parentPlatform);
@@ -243,9 +278,12 @@
return result > 0;
}
+ @Transactional
@Override
public boolean deleteParentPlatform(ParentPlatform parentPlatform) {
int result = platformMapper.delParentPlatform(parentPlatform);
+ // 鍒犻櫎鍏宠仈鐨勯�氶亾
+ patformChannelMapper.cleanChannelForGB(parentPlatform.getServerGBId());
return result > 0;
}
@@ -270,4 +308,84 @@
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
+ */
+ @Override
+ public MobilePosition queryLatestPosition(String deviceId) {
+ return deviceMobilePositionMapper.queryLatestPositionByDevice(deviceId);
+ }
+
+ /**
+ * 鍒犻櫎鎸囧畾璁惧鐨勬墍鏈夌Щ鍔ㄤ綅缃�
+ * @param deviceId
+ */
+ public int clearMobilePositionsByDeviceId(String deviceId) {
+ return deviceMobilePositionMapper.clearMobilePositionsByDeviceId(deviceId);
+ }
+
}
--
Gitblit v1.8.0