|  |  |  | 
|---|
|  |  |  | package com.genersoft.iot.vmp.service.impl; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.genersoft.iot.vmp.conf.SipConfig; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.gb28181.bean.GbStream; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.gb28181.bean.*; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.gb28181.event.EventPublisher; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.gb28181.event.subscribe.catalog.CatalogEvent; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.media.zlm.dto.StreamProxyItem; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.media.zlm.dto.StreamPushItem; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.storager.dao.GbStreamMapper; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.storager.dao.ParentPlatformMapper; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.storager.dao.PlatformCatalogMapper; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.storager.dao.PlatformGbStreamMapper; | 
|---|
|  |  |  | import com.genersoft.iot.vmp.service.IGbStreamService; | 
|---|
|  |  |  | import com.github.pagehelper.PageHelper; | 
|---|
|  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import java.util.ArrayList; | 
|---|
|  |  |  | 
|---|
|  |  |  | private ParentPlatformMapper platformMapper; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private SipConfig sipConfig; | 
|---|
|  |  |  | private PlatformCatalogMapper catalogMapper; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private EventPublisher eventPublisher; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public PageInfo<GbStream> getAll(Integer page, Integer count, String platFormId, String catalogId, String query, Boolean pushing, String mediaServerId) { | 
|---|
|  |  |  | public PageInfo<GbStream> getAll(Integer page, Integer count, String platFormId, String catalogId, String query, String mediaServerId) { | 
|---|
|  |  |  | PageHelper.startPage(page, count); | 
|---|
|  |  |  | List<GbStream> all = gbStreamMapper.selectAll(platFormId, catalogId, query, pushing, mediaServerId); | 
|---|
|  |  |  | List<GbStream> all = gbStreamMapper.selectAll(platFormId, catalogId, query, mediaServerId); | 
|---|
|  |  |  | return new PageInfo<>(all); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | gbStream.setPlatformId(platformId); | 
|---|
|  |  |  | // TODO 修改为批量提交 | 
|---|
|  |  |  | platformGbStreamMapper.add(gbStream); | 
|---|
|  |  |  | DeviceChannel deviceChannelListByStream = getDeviceChannelListByStream(gbStream, catalogId, parentPlatform); | 
|---|
|  |  |  | DeviceChannel deviceChannelListByStream = getDeviceChannelListByStreamWithStatus(gbStream, catalogId, parentPlatform); | 
|---|
|  |  |  | deviceChannelList.add(deviceChannelListByStream); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | dataSourceTransactionManager.commit(transactionStatus);     //手动提交 | 
|---|
|  |  |  | 
|---|
|  |  |  | deviceChannel.setLatitude(gbStream.getLatitude()); | 
|---|
|  |  |  | deviceChannel.setDeviceId(platform.getDeviceGBId()); | 
|---|
|  |  |  | deviceChannel.setManufacture("wvp-pro"); | 
|---|
|  |  |  | //        deviceChannel.setStatus(gbStream.isStatus()?1:0); | 
|---|
|  |  |  | deviceChannel.setStatus(1); | 
|---|
|  |  |  | deviceChannel.setParentId(catalogId ==null?gbStream.getCatalogId():catalogId); | 
|---|
|  |  |  | deviceChannel.setStatus(gbStream.isStatus()?1:0); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | deviceChannel.setRegisterWay(1); | 
|---|
|  |  |  | if (catalogId.length() > 0 && catalogId.length() <= 10) { | 
|---|
|  |  |  | // 父节点是行政区划,则设置CivilCode使用此行政区划 | 
|---|
|  |  |  | deviceChannel.setCivilCode(platform.getAdministrativeDivision()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (platform.getTreeType().equals(TreeType.CIVIL_CODE)){ | 
|---|
|  |  |  | deviceChannel.setCivilCode(catalogId); | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | deviceChannel.setCivilCode(platform.getAdministrativeDivision()); | 
|---|
|  |  |  | }else if (platform.getTreeType().equals(TreeType.BUSINESS_GROUP)){ | 
|---|
|  |  |  | PlatformCatalog catalog = catalogMapper.select(catalogId); | 
|---|
|  |  |  | if (catalog == null) { | 
|---|
|  |  |  | deviceChannel.setParentId(platform.getDeviceGBId()); | 
|---|
|  |  |  | deviceChannel.setBusinessGroupId(null); | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | deviceChannel.setParentId(catalog.getId()); | 
|---|
|  |  |  | deviceChannel.setBusinessGroupId(catalog.getBusinessGroupId()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | deviceChannel.setModel("live"); | 
|---|
|  |  |  | deviceChannel.setOwner("wvp-pro"); | 
|---|
|  |  |  | deviceChannel.setParental(0); | 
|---|
|  |  |  | 
|---|
|  |  |  | if (gbStream.getGbId() != null) { | 
|---|
|  |  |  | gbStreams.add(gbStream); | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | StreamProxyItem streamProxyItem = gbStreamMapper.selectOne(gbStream.getApp(), gbStream.getStream()); | 
|---|
|  |  |  | if (streamProxyItem != null && streamProxyItem.getGbId() != null){ | 
|---|
|  |  |  | gbStreams.add(streamProxyItem); | 
|---|
|  |  |  | GbStream gbStreamIndb  = gbStreamMapper.selectOne(gbStream.getApp(), gbStream.getStream()); | 
|---|
|  |  |  | if (gbStreamIndb != null && gbStreamIndb.getGbId() != null){ | 
|---|
|  |  |  | gbStreams.add(gbStreamIndb); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | sendCatalogMsgs(gbStreams, type); | 
|---|
|  |  |  | 
|---|
|  |  |  | public void sendCatalogMsgs(List<GbStream> gbStreams, String type) { | 
|---|
|  |  |  | if (gbStreams.size() > 0) { | 
|---|
|  |  |  | for (GbStream gs : gbStreams) { | 
|---|
|  |  |  | if (StringUtils.isEmpty(gs.getGbId())){ | 
|---|
|  |  |  | if (ObjectUtils.isEmpty(gs.getGbId())){ | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | List<ParentPlatform> parentPlatforms = platformGbStreamMapper.selectByAppAndStream(gs.getApp(), gs.getStream()); | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public int updateGbIdOrName(List<StreamPushItem> streamPushItemForUpdate) { | 
|---|
|  |  |  | return gbStreamMapper.updateGbIdOrName(streamPushItemForUpdate); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public DeviceChannel getDeviceChannelListByStreamWithStatus(GbStream gbStream, String catalogId, ParentPlatform platform) { | 
|---|
|  |  |  | DeviceChannel deviceChannel = new DeviceChannel(); | 
|---|
|  |  |  | deviceChannel.setChannelId(gbStream.getGbId()); | 
|---|
|  |  |  | deviceChannel.setName(gbStream.getName()); | 
|---|
|  |  |  | deviceChannel.setLongitude(gbStream.getLongitude()); | 
|---|
|  |  |  | deviceChannel.setLatitude(gbStream.getLatitude()); | 
|---|
|  |  |  | deviceChannel.setDeviceId(platform.getDeviceGBId()); | 
|---|
|  |  |  | deviceChannel.setManufacture("wvp-pro"); | 
|---|
|  |  |  | // todo 目前是每一条查询一次,需要优化 | 
|---|
|  |  |  | Boolean status = null; | 
|---|
|  |  |  | if ("proxy".equals(gbStream.getStreamType())) { | 
|---|
|  |  |  | status = gbStreamMapper.selectStatusForProxy(gbStream.getApp(), gbStream.getStream()); | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | status = gbStreamMapper.selectStatusForPush(gbStream.getApp(), gbStream.getStream()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | deviceChannel.setStatus((status != null && status )?1:0); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | deviceChannel.setRegisterWay(1); | 
|---|
|  |  |  | deviceChannel.setCivilCode(platform.getAdministrativeDivision()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (platform.getTreeType().equals(TreeType.CIVIL_CODE)){ | 
|---|
|  |  |  | deviceChannel.setCivilCode(catalogId); | 
|---|
|  |  |  | }else if (platform.getTreeType().equals(TreeType.BUSINESS_GROUP)){ | 
|---|
|  |  |  | PlatformCatalog catalog = catalogMapper.select(catalogId); | 
|---|
|  |  |  | if (catalog == null) { | 
|---|
|  |  |  | deviceChannel.setParentId(platform.getDeviceGBId()); | 
|---|
|  |  |  | deviceChannel.setBusinessGroupId(null); | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | deviceChannel.setParentId(catalog.getId()); | 
|---|
|  |  |  | deviceChannel.setBusinessGroupId(catalog.getBusinessGroupId()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | deviceChannel.setModel("live"); | 
|---|
|  |  |  | deviceChannel.setOwner("wvp-pro"); | 
|---|
|  |  |  | deviceChannel.setParental(0); | 
|---|
|  |  |  | deviceChannel.setSecrecy("0"); | 
|---|
|  |  |  | return deviceChannel; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|