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 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 list(NettyUpgradeStcdInfo nettyUpgradeStcdInfo) { //获取redis上的数据 Map map = redisCache.getCacheMap("NettyUpgradeStcdInfo"); List 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 nettymap=new HashMap<>(); // nettymap.put(stcdHexStr,map.get(stcdHexStr)); // map=nettymap; // }else { // return list; // } // } if (nettyUpgradeStcdInfo.getStartNumber()!=null && nettyUpgradeStcdInfo.getEndNumber()!=null){ Map nettymap=new HashMap<>(); List 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; } }