package com.ruoyi.system.service.impl;
|
|
import java.util.*;
|
import java.util.stream.Collectors;
|
import java.util.stream.IntStream;
|
|
import com.ruoyi.common.core.redis.RedisCache;
|
import com.ruoyi.common.utils.DateUtils;
|
import com.ruoyi.common.utils.StringUtils;
|
import com.ruoyi.common.utils.netty.ConcurrentHashMapBean;
|
import com.ruoyi.common.utils.netty.NettyTool;
|
import io.netty.util.internal.ObjectUtil;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import com.ruoyi.system.mapper.NettyUpgradeStcdInfoMapper;
|
import com.ruoyi.system.domain.NettyUpgradeStcdInfo;
|
import com.ruoyi.system.service.INettyUpgradeStcdInfoService;
|
|
/**
|
* 设备信息Service业务层处理
|
*
|
* @author ruoyi
|
* @date 2022-10-11
|
*/
|
@Service
|
public class NettyUpgradeStcdInfoServiceImpl implements INettyUpgradeStcdInfoService {
|
|
@Autowired
|
private RedisCache redisCache;
|
@Autowired
|
private NettyUpgradeStcdInfoMapper nettyUpgradeStcdInfoMapper;
|
|
/**
|
* 查询设备信息
|
*
|
* @param id 设备信息主键
|
* @return 设备信息
|
*/
|
@Override
|
public NettyUpgradeStcdInfo selectNettyUpgradeStcdInfoById(Integer id) {
|
return nettyUpgradeStcdInfoMapper.selectNettyUpgradeStcdInfoById(id);
|
}
|
|
/**
|
* 查询设备信息列表
|
*
|
* @param nettyUpgradeStcdInfo 设备信息
|
* @return 设备信息
|
*/
|
@Override
|
public List<NettyUpgradeStcdInfo> selectNettyUpgradeStcdInfoList(NettyUpgradeStcdInfo nettyUpgradeStcdInfo) {
|
return nettyUpgradeStcdInfoMapper.selectNettyUpgradeStcdInfoList(nettyUpgradeStcdInfo);
|
}
|
|
|
/**
|
* 新增设备信息
|
*
|
* @param nettyUpgradeStcdInfo 设备信息
|
* @return 结果
|
*/
|
@Override
|
public int insertNettyUpgradeStcdInfo(NettyUpgradeStcdInfo nettyUpgradeStcdInfo) {
|
return nettyUpgradeStcdInfoMapper.insertNettyUpgradeStcdInfo(nettyUpgradeStcdInfo);
|
}
|
|
/**
|
* 修改设备信息
|
*
|
* @param nettyUpgradeStcdInfo 设备信息
|
* @return 结果
|
*/
|
@Override
|
public int updateNettyUpgradeStcdInfo(NettyUpgradeStcdInfo nettyUpgradeStcdInfo) {
|
nettyUpgradeStcdInfo.setUpdateTime(DateUtils.getNowDate());
|
return nettyUpgradeStcdInfoMapper.updateNettyUpgradeStcdInfo(nettyUpgradeStcdInfo);
|
}
|
|
/**
|
* 批量删除设备信息
|
*
|
* @param ids 需要删除的设备信息主键
|
* @return 结果
|
*/
|
@Override
|
public int deleteNettyUpgradeStcdInfoByIds(Integer[] ids) {
|
return nettyUpgradeStcdInfoMapper.deleteNettyUpgradeStcdInfoByIds(ids);
|
}
|
|
/**
|
* 删除设备信息信息
|
*
|
* @param id 设备信息主键
|
* @return 结果
|
*/
|
@Override
|
public int deleteNettyUpgradeStcdInfoById(Integer id) {
|
return nettyUpgradeStcdInfoMapper.deleteNettyUpgradeStcdInfoById(id);
|
}
|
|
@Override
|
public List<NettyUpgradeStcdInfo> list(NettyUpgradeStcdInfo nettyUpgradeStcdInfo) {
|
//获取redis上的数据
|
Map<String, NettyUpgradeStcdInfo> map = redisCache.getCacheMap("NettyUpgradeStcdInfo");
|
List<NettyUpgradeStcdInfo> list = new ArrayList<>();
|
|
// if (StringUtils.isNotEmpty(nettyUpgradeStcdInfo.getStcd()) ){
|
// Integer stcdint=Integer.parseInt(nettyUpgradeStcdInfo.getStcd());
|
// String hexStr=Integer.toHexString(stcdint);
|
// hexStr= NettyTool.addleftForNum(hexStr,6);
|
// String stcdHexStr=hexStr.substring(4,6)+hexStr.substring(2,4)+hexStr.substring(0,2);
|
// if (map.containsKey(stcdHexStr)){
|
// //补位
|
// Map<String, NettyUpgradeStcdInfo> nettymap=new HashMap<>();
|
// nettymap.put(stcdHexStr,map.get(stcdHexStr));
|
// map=nettymap;
|
// }else {
|
// return list;
|
// }
|
// }
|
if (nettyUpgradeStcdInfo.getStartNumber()!=null && nettyUpgradeStcdInfo.getEndNumber()!=null){
|
Map<String, NettyUpgradeStcdInfo> nettymap=new HashMap<>();
|
List<Integer> numberList = IntStream.rangeClosed(nettyUpgradeStcdInfo.getStartNumber(), nettyUpgradeStcdInfo.getEndNumber()).boxed().collect(Collectors.toList());
|
for (Integer number:numberList){
|
String hexStr=Integer.toHexString(number);
|
hexStr= NettyTool.addleftForNum(hexStr,6);
|
String stcdHexStr=hexStr.substring(4,6)+hexStr.substring(2,4)+hexStr.substring(0,2);
|
if (map.containsKey(stcdHexStr)){
|
//补位
|
nettymap.put(stcdHexStr,map.get(stcdHexStr));
|
}
|
}
|
map=nettymap;
|
if (map.keySet().size()==0){
|
return list;
|
}
|
}
|
|
for (String stcd : map.keySet()) {
|
NettyUpgradeStcdInfo nettyUpgradeStcdInfo1 = map.get(stcd);
|
if (!ConcurrentHashMapBean.channelMap.keySet().contains(stcd)) {
|
//离线
|
nettyUpgradeStcdInfo1.setState(2);
|
} else {
|
nettyUpgradeStcdInfo1.setState(0);
|
}
|
Integer stcdInt = Integer.parseInt(stcd.substring(4, 6) + stcd.substring(2, 4) + stcd.substring(0, 2), 16);
|
nettyUpgradeStcdInfo1.setStcd(stcdInt.toString());
|
if (nettyUpgradeStcdInfo1.getState() != 2) {
|
list.add(nettyUpgradeStcdInfo1);
|
}
|
}
|
return list;
|
}
|
}
|