package com.zy.core.netty.handle; import com.zy.asrs.service.impl.MainServiceImpl; import com.zy.core.netty.AbstractInboundHandler; import com.zy.core.netty.cache.ChannelCache; import com.zy.core.netty.constant.Constant; import com.zy.core.netty.constant.FireDataType; import com.zy.core.netty.domain.ChPackage; import com.zy.core.netty.domain.fire.Fire_3030; import io.netty.channel.Channel; import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelHandlerContext; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** * 国标业务处理handler * Created by vincent on 2019-04-02 */ @Slf4j @Component @ChannelHandler.Sharable public class PackageServerHandler extends AbstractInboundHandler { @Autowired private MainServiceImpl mainService; @Override protected boolean channelRead0(ChannelHandlerContext ctx, ChPackage pac) { FireDataType dataType = FireDataType.get(pac.getBytes()[1], pac.getBytes()[2]); switch (dataType) { case HEARTBEAT: Fire_3030 fire3030 = new Fire_3030().readFromBytes(pac.getBytes()); String now = "20" + fire3030.getYear() + "-" + fire3030.getMonth() + "-" + fire3030.getDay() + " " + fire3030.getHour() + ":" + fire3030.getMinute() + ":" + fire3030.getSeconds(); ChannelCache.setChannel(String.valueOf(fire3030.getNo()), ctx.channel()); Constant.errorMap.remove(fire3030.getNo()); break; case FIRE_ALARM: break; default: break; } return true; } /** * 数据下行 */ public static void write(ChPackage chPackage){ String uuid = chPackage.getUuid(); Channel channel = ChannelCache.getChannel(uuid); if (null == channel){ log.warn("通道uuid={} 不在线", uuid); return; } channel.writeAndFlush(chPackage); } }