|
|
@@ -16,13 +16,17 @@ import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
|
|
|
import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
|
|
|
import com.genersoft.iot.vmp.storager.dao.DeviceChannelMapper;
|
|
|
import com.genersoft.iot.vmp.storager.dao.DeviceMapper;
|
|
|
+import com.genersoft.iot.vmp.storager.dao.PlatformChannelMapper;
|
|
|
import com.genersoft.iot.vmp.utils.DateUtil;
|
|
|
import com.genersoft.iot.vmp.vmanager.bean.BaseTree;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.jdbc.datasource.DataSourceTransactionManager;
|
|
|
import org.springframework.jdbc.support.incrementer.AbstractIdentityColumnMaxValueIncrementer;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.TransactionDefinition;
|
|
|
+import org.springframework.transaction.TransactionStatus;
|
|
|
import org.springframework.util.ObjectUtils;
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
|
@@ -60,12 +64,21 @@ public class DeviceServiceImpl implements IDeviceService {
|
|
|
@Autowired
|
|
|
private DeviceMapper deviceMapper;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private PlatformChannelMapper platformChannelMapper;
|
|
|
+
|
|
|
@Autowired
|
|
|
private IDeviceChannelService deviceChannelService;
|
|
|
|
|
|
@Autowired
|
|
|
private DeviceChannelMapper deviceChannelMapper;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ DataSourceTransactionManager dataSourceTransactionManager;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ TransactionDefinition transactionDefinition;
|
|
|
+
|
|
|
@Autowired
|
|
|
private IVideoManagerStorage storage;
|
|
|
|
|
|
@@ -263,7 +276,7 @@ public class DeviceServiceImpl implements IDeviceService {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public Device queryDevice(String deviceId) {
|
|
|
+ public Device getDevice(String deviceId) {
|
|
|
Device device = redisCatchStorage.getDevice(deviceId);
|
|
|
if (device == null) {
|
|
|
device = deviceMapper.getDeviceByDeviceId(deviceId);
|
|
|
@@ -307,60 +320,11 @@ public class DeviceServiceImpl implements IDeviceService {
|
|
|
@Override
|
|
|
public void updateDevice(Device device) {
|
|
|
|
|
|
- Device deviceInStore = deviceMapper.getDeviceByDeviceId(device.getDeviceId());
|
|
|
- if (deviceInStore == null) {
|
|
|
- logger.warn("更新设备时未找到设备信息");
|
|
|
- return;
|
|
|
- }
|
|
|
- if (!ObjectUtils.isEmpty(device.getName())) {
|
|
|
- deviceInStore.setName(device.getName());
|
|
|
- }
|
|
|
- if (!ObjectUtils.isEmpty(device.getCharset())) {
|
|
|
- deviceInStore.setCharset(device.getCharset());
|
|
|
- }
|
|
|
- if (!ObjectUtils.isEmpty(device.getMediaServerId())) {
|
|
|
- deviceInStore.setMediaServerId(device.getMediaServerId());
|
|
|
- }
|
|
|
-
|
|
|
- // 目录订阅相关的信息
|
|
|
- if (device.getSubscribeCycleForCatalog() > 0) {
|
|
|
- if (deviceInStore.getSubscribeCycleForCatalog() == 0 || deviceInStore.getSubscribeCycleForCatalog() != device.getSubscribeCycleForCatalog()) {
|
|
|
- deviceInStore.setSubscribeCycleForCatalog(device.getSubscribeCycleForCatalog());
|
|
|
- // 开启订阅
|
|
|
- addCatalogSubscribe(deviceInStore);
|
|
|
- }
|
|
|
- }else if (device.getSubscribeCycleForCatalog() == 0) {
|
|
|
- if (deviceInStore.getSubscribeCycleForCatalog() != 0) {
|
|
|
- deviceInStore.setSubscribeCycleForCatalog(device.getSubscribeCycleForCatalog());
|
|
|
- // 取消订阅
|
|
|
- removeCatalogSubscribe(deviceInStore);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // 移动位置订阅相关的信息
|
|
|
- if (device.getSubscribeCycleForMobilePosition() > 0) {
|
|
|
- if (deviceInStore.getSubscribeCycleForMobilePosition() == 0 || deviceInStore.getSubscribeCycleForMobilePosition() != device.getSubscribeCycleForMobilePosition()) {
|
|
|
- deviceInStore.setMobilePositionSubmissionInterval(device.getMobilePositionSubmissionInterval());
|
|
|
- deviceInStore.setSubscribeCycleForMobilePosition(device.getSubscribeCycleForMobilePosition());
|
|
|
- // 开启订阅
|
|
|
- addMobilePositionSubscribe(deviceInStore);
|
|
|
- }
|
|
|
- }else if (device.getSubscribeCycleForMobilePosition() == 0) {
|
|
|
- if (deviceInStore.getSubscribeCycleForMobilePosition() != 0) {
|
|
|
- // 取消订阅
|
|
|
- removeMobilePositionSubscribe(deviceInStore);
|
|
|
- }
|
|
|
- }
|
|
|
- // 坐标系变化,需要重新计算GCJ02坐标和WGS84坐标
|
|
|
- if (!deviceInStore.getGeoCoordSys().equals(device.getGeoCoordSys())) {
|
|
|
- updateDeviceChannelGeoCoordSys(device);
|
|
|
- }
|
|
|
-
|
|
|
String now = DateUtil.getNow();
|
|
|
device.setUpdateTime(now);
|
|
|
device.setCharset(device.getCharset().toUpperCase());
|
|
|
device.setUpdateTime(DateUtil.getNow());
|
|
|
- if (deviceMapper.updateCustom(device) > 0) {
|
|
|
+ if (deviceMapper.update(device) > 0) {
|
|
|
redisCatchStorage.updateDevice(device);
|
|
|
|
|
|
}
|
|
|
@@ -555,4 +519,88 @@ public class DeviceServiceImpl implements IDeviceService {
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public boolean isExist(String deviceId) {
|
|
|
+ return deviceMapper.getDeviceByDeviceId(deviceId) != null;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void addDevice(Device device) {
|
|
|
+ device.setOnline(0);
|
|
|
+ device.setCreateTime(DateUtil.getNow());
|
|
|
+ device.setUpdateTime(DateUtil.getNow());
|
|
|
+ deviceMapper.addCustomDevice(device);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void updateCustomDevice(Device device) {
|
|
|
+ Device deviceInStore = deviceMapper.getDeviceByDeviceId(device.getDeviceId());
|
|
|
+ if (deviceInStore == null) {
|
|
|
+ logger.warn("更新设备时未找到设备信息");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (!ObjectUtils.isEmpty(device.getName())) {
|
|
|
+ deviceInStore.setName(device.getName());
|
|
|
+ }
|
|
|
+ if (!ObjectUtils.isEmpty(device.getCharset())) {
|
|
|
+ deviceInStore.setCharset(device.getCharset());
|
|
|
+ }
|
|
|
+ if (!ObjectUtils.isEmpty(device.getMediaServerId())) {
|
|
|
+ deviceInStore.setMediaServerId(device.getMediaServerId());
|
|
|
+ }
|
|
|
+
|
|
|
+ // 目录订阅相关的信息
|
|
|
+ if (device.getSubscribeCycleForCatalog() > 0) {
|
|
|
+ if (deviceInStore.getSubscribeCycleForCatalog() == 0 || deviceInStore.getSubscribeCycleForCatalog() != device.getSubscribeCycleForCatalog()) {
|
|
|
+ deviceInStore.setSubscribeCycleForCatalog(device.getSubscribeCycleForCatalog());
|
|
|
+ // 开启订阅
|
|
|
+ addCatalogSubscribe(deviceInStore);
|
|
|
+ }
|
|
|
+ }else if (device.getSubscribeCycleForCatalog() == 0) {
|
|
|
+ if (deviceInStore.getSubscribeCycleForCatalog() != 0) {
|
|
|
+ deviceInStore.setSubscribeCycleForCatalog(device.getSubscribeCycleForCatalog());
|
|
|
+ // 取消订阅
|
|
|
+ removeCatalogSubscribe(deviceInStore);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 移动位置订阅相关的信息
|
|
|
+ if (device.getSubscribeCycleForMobilePosition() > 0) {
|
|
|
+ if (deviceInStore.getSubscribeCycleForMobilePosition() == 0 || deviceInStore.getSubscribeCycleForMobilePosition() != device.getSubscribeCycleForMobilePosition()) {
|
|
|
+ deviceInStore.setMobilePositionSubmissionInterval(device.getMobilePositionSubmissionInterval());
|
|
|
+ deviceInStore.setSubscribeCycleForMobilePosition(device.getSubscribeCycleForMobilePosition());
|
|
|
+ // 开启订阅
|
|
|
+ addMobilePositionSubscribe(deviceInStore);
|
|
|
+ }
|
|
|
+ }else if (device.getSubscribeCycleForMobilePosition() == 0) {
|
|
|
+ if (deviceInStore.getSubscribeCycleForMobilePosition() != 0) {
|
|
|
+ // 取消订阅
|
|
|
+ removeMobilePositionSubscribe(deviceInStore);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 坐标系变化,需要重新计算GCJ02坐标和WGS84坐标
|
|
|
+ if (!deviceInStore.getGeoCoordSys().equals(device.getGeoCoordSys())) {
|
|
|
+ updateDeviceChannelGeoCoordSys(device);
|
|
|
+ }
|
|
|
+ deviceMapper.updateCustom(device);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean delete(String deviceId) {
|
|
|
+ TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition);
|
|
|
+ boolean result = false;
|
|
|
+ try {
|
|
|
+ platformChannelMapper.delChannelForDeviceId(deviceId);
|
|
|
+ deviceChannelMapper.cleanChannelsByDeviceId(deviceId);
|
|
|
+ if ( deviceMapper.del(deviceId) < 0 ) {
|
|
|
+ //事务回滚
|
|
|
+ dataSourceTransactionManager.rollback(transactionStatus);
|
|
|
+ }
|
|
|
+ result = true;
|
|
|
+ dataSourceTransactionManager.commit(transactionStatus); //手动提交
|
|
|
+ }catch (Exception e) {
|
|
|
+ dataSourceTransactionManager.rollback(transactionStatus);
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
}
|