完成向上级联->选择通道-003
This commit is contained in:
@@ -206,9 +206,9 @@ public interface IVideoManagerStorager {
|
||||
void outlineForAllParentPlatform();
|
||||
|
||||
/**
|
||||
* 查询通道信息, 不区分设备
|
||||
* 查询通道信息,不区分设备(已关联平台或全部)
|
||||
*/
|
||||
PageInfo<ChannelReduce> queryChannelListInAll(int page, int count, String query, Boolean online, Boolean channelType, String parentChannelId);
|
||||
PageInfo<ChannelReduce> queryAllChannelList(int page, int count, String query, Boolean online, Boolean channelType, String platformId, Boolean inPlatform);
|
||||
|
||||
|
||||
/**
|
||||
@@ -218,4 +218,14 @@ public interface IVideoManagerStorager {
|
||||
* @return
|
||||
*/
|
||||
int updateChannelForGB(String platformId, List<ChannelReduce> channelReduces);
|
||||
|
||||
/**
|
||||
* 移除上级平台的通道信息
|
||||
* @param platformId
|
||||
* @param channelReduces
|
||||
* @return
|
||||
*/
|
||||
int delChannelForGB(String platformId, List<ChannelReduce> channelReduces);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
|
||||
import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform;
|
||||
import com.genersoft.iot.vmp.vmanager.platform.bean.ChannelReduce;
|
||||
import org.apache.ibatis.annotations.*;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -11,6 +12,7 @@ import java.util.List;
|
||||
* 用于存储设备通道信息
|
||||
*/
|
||||
@Mapper
|
||||
@Repository
|
||||
public interface DeviceChannelMapper {
|
||||
|
||||
@Insert("INSERT INTO device_channel (channelId, deviceId, name, manufacture, model, owner, civilCode, block, " +
|
||||
@@ -79,18 +81,22 @@ public interface DeviceChannelMapper {
|
||||
|
||||
@Select(value = {" <script>" +
|
||||
"SELECT * FROM ( "+
|
||||
" SELECT dc.channelId, dc.deviceId, dc.name, de.manufacturer, de.hostAddress, " +
|
||||
"(SELECT count(0) FROM device_channel WHERE parentId=dc.channelId) as subCount " +
|
||||
"FROM device_channel dc LEFT JOIN device de ON dc.deviceId = de.deviceId" +
|
||||
" SELECT dc.channelId, dc.deviceId, dc.name, de.manufacturer, de.hostAddress, " +
|
||||
"(SELECT count(0) FROM device_channel WHERE parentId=dc.channelId) as subCount, " +
|
||||
"pc.platformId " +
|
||||
"FROM device_channel dc " +
|
||||
"LEFT JOIN device de ON dc.deviceId = de.deviceId " +
|
||||
"LEFT JOIN platform_gb_channel pc on pc.deviceId = dc.deviceId AND pc.channelId = dc.channelId " +
|
||||
" WHERE 1=1 " +
|
||||
" <if test=\"query != null\"> AND (dc.channelId LIKE '%${query}%' OR dc.name LIKE '%${query}%' OR dc.name LIKE '%${query}%')</if> " +
|
||||
" <if test=\"online == true\" > AND dc.status=1</if> " +
|
||||
" <if test=\"online == false\" > AND dc.status=0</if> " +
|
||||
" <if test=\"platformId != null and inPlatform == true\"> AND pc.platformId=#{platformId} </if> " +
|
||||
") dcr" +
|
||||
" WHERE 1=1 " +
|
||||
" <if test=\"query != null\"> AND (dc.channelId LIKE '%${query}%' OR dc.name LIKE '%${query}%' OR dc.name LIKE '%${query}%')</if> " +
|
||||
" <if test=\"parentChannelId != null\"> AND dc.parentId=#{parentChannelId} </if> " +
|
||||
" <if test=\"online == true\" > AND dc.status=1</if>" +
|
||||
" <if test=\"online == false\" > AND dc.status=0</if>) dcr" +
|
||||
" WHERE 1=1 " +
|
||||
" <if test=\"hasSubChannel == true\" > AND subCount >0</if>" +
|
||||
" <if test=\"hasSubChannel == false\" > AND subCount=0</if>" +
|
||||
" <if test=\"hasSubChannel!= null and hasSubChannel == true\" > AND subCount >0</if> " +
|
||||
" <if test=\"hasSubChannel!= null and hasSubChannel == false\" > AND subCount=0</if> " +
|
||||
" </script>"})
|
||||
|
||||
List<ChannelReduce> queryChannelListInAll(String query, Boolean online, Boolean hasSubChannel, String parentChannelId);
|
||||
List<ChannelReduce> queryChannelListInAll(String query, Boolean online, Boolean hasSubChannel, String platformId, Boolean inPlatform);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
package com.genersoft.iot.vmp.storager.dao;
|
||||
|
||||
import com.genersoft.iot.vmp.vmanager.platform.bean.ChannelReduce;
|
||||
import org.apache.ibatis.annotations.Delete;
|
||||
import org.apache.ibatis.annotations.Insert;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Mapper
|
||||
@Repository
|
||||
public interface PatformChannelMapper {
|
||||
|
||||
/**
|
||||
* 查询列表里已经关联的
|
||||
*/
|
||||
@Select("<script> "+
|
||||
"SELECT deviceAndChannelId FROM platform_gb_channel WHERE platformId='${platformId}' AND deviceAndChannelId in" +
|
||||
"<foreach collection='deviceAndChannelIds' open='(' item='id_' separator=',' close=')'> '${id_}'</foreach>" +
|
||||
"</script>")
|
||||
List<String> findChannelRelatedPlatform(String platformId, List<String> deviceAndChannelIds);
|
||||
|
||||
@Insert("<script> "+
|
||||
"INSERT INTO platform_gb_channel (channelId, deviceId, platformId, deviceAndChannelId) VALUES" +
|
||||
"<foreach collection='channelReducesToAdd' item='item' separator=','> ('${item.channelId}','${item.deviceId}', '${platformId}', '${item.deviceId}_${item.channelId}' )</foreach>" +
|
||||
"</script>")
|
||||
int addChannels(String platformId, List<ChannelReduce> channelReducesToAdd);
|
||||
|
||||
|
||||
@Delete("<script> "+
|
||||
"DELETE FROM platform_gb_channel WHERE deviceAndChannelId in" +
|
||||
"<foreach collection='channelReducesToDel' item='item' open='(' separator=',' close=')' > '${item.deviceId}_${item.channelId}'</foreach>" +
|
||||
"</script>")
|
||||
int delChannelForGB(String platformId, List<ChannelReduce> channelReducesToDel);
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
package com.genersoft.iot.vmp.storager.dao;
|
||||
|
||||
import org.mapstruct.Mapper;
|
||||
|
||||
@Mapper
|
||||
public interface patformChannelMapper {
|
||||
}
|
||||
@@ -9,6 +9,7 @@ import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
|
||||
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.github.pagehelper.PageHelper;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
@@ -39,6 +40,9 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager {
|
||||
@Autowired
|
||||
private IRedisCatchStorage redisCatchStorage;
|
||||
|
||||
@Autowired
|
||||
private PatformChannelMapper patformChannelMapper;
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -275,17 +279,46 @@ public class VideoManagerStoragerImpl implements IVideoManagerStorager {
|
||||
|
||||
|
||||
@Override
|
||||
public PageInfo<ChannelReduce> queryChannelListInAll(int page, int count, String query, Boolean online,
|
||||
Boolean channelType, String parentChannelId) {
|
||||
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, parentChannelId);
|
||||
List<ChannelReduce> all = deviceChannelMapper.queryChannelListInAll(query, online, channelType, platformId, inPlatform);
|
||||
return new PageInfo<>(all);
|
||||
}
|
||||
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public int updateChannelForGB(String platformId, List<ChannelReduce> channelReduces) {
|
||||
return 0;
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -151,15 +151,21 @@ public class PlatformController {
|
||||
@RequestMapping("/platforms/channelList")
|
||||
@ResponseBody
|
||||
public PageInfo<ChannelReduce> channelList(int page, int count,
|
||||
@RequestParam(required = false) String platformId,
|
||||
@RequestParam(required = false) String query,
|
||||
@RequestParam(required = false) Boolean online,
|
||||
@RequestParam(required = false) Boolean choosed,
|
||||
@RequestParam(required = false) Boolean channelType){
|
||||
|
||||
if (logger.isDebugEnabled()) {
|
||||
logger.debug("查询所有所有通道API调用");
|
||||
}
|
||||
|
||||
PageInfo<ChannelReduce> channelReduces = storager.queryChannelListInAll(page, count, query, online, channelType, null);
|
||||
PageInfo<ChannelReduce> channelReduces = null;
|
||||
if (platformId != null ) {
|
||||
channelReduces = storager.queryAllChannelList(page, count, query, online, channelType, platformId, choosed);
|
||||
}else {
|
||||
channelReduces = storager.queryAllChannelList(page, count, query, online, channelType, null, false);
|
||||
}
|
||||
|
||||
return channelReduces;
|
||||
}
|
||||
@@ -177,5 +183,17 @@ public class PlatformController {
|
||||
return new ResponseEntity<>(String.valueOf(result > 0), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@RequestMapping("/platforms/delChannelForGB")
|
||||
@ResponseBody
|
||||
public ResponseEntity<String> delChannelForGB(@RequestBody UpdateChannelParam param){
|
||||
|
||||
if (logger.isDebugEnabled()) {
|
||||
logger.debug("给上级平台添加国标通道API调用");
|
||||
}
|
||||
int result = storager.delChannelForGB(param.getPlatformId(), param.getChannelReduces());
|
||||
|
||||
return new ResponseEntity<>(String.valueOf(result > 0), HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -35,6 +35,11 @@ public class ChannelReduce {
|
||||
*/
|
||||
private int subCount;
|
||||
|
||||
/**
|
||||
* 平台Id
|
||||
*/
|
||||
private String platformId;
|
||||
|
||||
|
||||
public String getChannelId() {
|
||||
return channelId;
|
||||
@@ -75,4 +80,20 @@ public class ChannelReduce {
|
||||
public void setHostAddress(String hostAddress) {
|
||||
this.hostAddress = hostAddress;
|
||||
}
|
||||
|
||||
public int getSubCount() {
|
||||
return subCount;
|
||||
}
|
||||
|
||||
public void setSubCount(int subCount) {
|
||||
this.subCount = subCount;
|
||||
}
|
||||
|
||||
public String getPlatformId() {
|
||||
return platformId;
|
||||
}
|
||||
|
||||
public void setPlatformId(String platformId) {
|
||||
this.platformId = platformId;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user