|  | @@ -21,6 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  |  import org.springframework.beans.factory.annotation.Qualifier;
 | 
	
		
			
				|  |  |  import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 | 
	
		
			
				|  |  |  import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  | +import org.springframework.util.StringUtils;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import javax.sip.DialogState;
 | 
	
		
			
				|  |  |  import javax.sip.TimeoutEvent;
 | 
	
	
		
			
				|  | @@ -248,4 +249,61 @@ public class DeviceServiceImpl implements IDeviceService {
 | 
	
		
			
				|  |  |      public Device getDeviceByHostAndPort(String host, int port) {
 | 
	
		
			
				|  |  |          return deviceMapper.getDeviceByHostAndPort(host, port);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public void updateDevice(Device device) {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        Device deviceInStore = deviceMapper.getDeviceByDeviceId(device.getDeviceId());
 | 
	
		
			
				|  |  | +        if (deviceInStore == null) {
 | 
	
		
			
				|  |  | +            logger.warn("更新设备时未找到设备信息");
 | 
	
		
			
				|  |  | +            return;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        if (!StringUtils.isEmpty(device.getName())) {
 | 
	
		
			
				|  |  | +            deviceInStore.setName(device.getName());
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        if (!StringUtils.isEmpty(device.getCharset())) {
 | 
	
		
			
				|  |  | +            deviceInStore.setCharset(device.getCharset());
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        if (!StringUtils.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);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        String now = DateUtil.getNow();
 | 
	
		
			
				|  |  | +        device.setUpdateTime(now);
 | 
	
		
			
				|  |  | +        device.setCharset(device.getCharset().toUpperCase());
 | 
	
		
			
				|  |  | +        device.setUpdateTime(DateUtil.getNow());
 | 
	
		
			
				|  |  | +        if (deviceMapper.update(device) > 0) {
 | 
	
		
			
				|  |  | +            redisCatchStorage.updateDevice(device);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  }
 |