From 3c52a16e5fcf9a1f20b3ef06220e021b712337b6 Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: 星期二, 18 十月 2022 17:02:05 +0800 Subject: [PATCH] 支持手动添加,为设备设置单独的密码 --- src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java | 150 +++++++++++++++++++++++++++++++++----------------- 1 files changed, 99 insertions(+), 51 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java index a6b9cc5..7ba2c4e 100644 --- a/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java +++ b/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java @@ -16,13 +16,17 @@ 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; @@ -61,10 +65,19 @@ 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 @@ } @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 @@ @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); - } - } - // 鍧愭爣绯诲彉鍖栵紝闇�瑕侀噸鏂拌绠桮CJ02鍧愭爣鍜學GS84鍧愭爣 - 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 @@ 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); + } + } + // 鍧愭爣绯诲彉鍖栵紝闇�瑕侀噸鏂拌绠桮CJ02鍧愭爣鍜學GS84鍧愭爣 + 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; + } } -- Gitblit v1.8.0