|
@@ -10,6 +10,8 @@ import io.netty.channel.ChannelHandler;
|
|
import io.netty.channel.ChannelHandlerContext;
|
|
import io.netty.channel.ChannelHandlerContext;
|
|
import io.netty.channel.SimpleChannelInboundHandler;
|
|
import io.netty.channel.SimpleChannelInboundHandler;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
+import org.joda.time.DateTime;
|
|
|
|
+import org.joda.time.Minutes;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Component;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
@@ -41,16 +43,36 @@ public class HeartReportHandler extends SimpleChannelInboundHandler<HeartReportI
|
|
log.warn("收到设备心跳,deviceNo=" + deviceNo);
|
|
log.warn("收到设备心跳,deviceNo=" + deviceNo);
|
|
log.warn("ip =="+ip);
|
|
log.warn("ip =="+ip);
|
|
|
|
|
|
- SysLog sysLog = new SysLog();
|
|
|
|
- sysLog.setPointcut(deviceNo);
|
|
|
|
- sysLog.setUrl("/LAPI/V1.0/PACS/Controller/HeartReportInfo");
|
|
|
|
- sysLog.setData(heartReportInfo.toString());
|
|
|
|
- sysLog.setRemark("收到设备心跳");
|
|
|
|
- SocketAddress remoteAddress = ctx.channel().remoteAddress();
|
|
|
|
- sysLog.setRemoteIp(remoteAddress.toString());
|
|
|
|
- sysLog.setCreateTime(new Date());
|
|
|
|
|
|
+ DateTime lastHeartTime = ctx.channel().attr(LapiAttrKeys.LAST_HEART_TIME).get();
|
|
|
|
|
|
- sysLogService.insert(sysLog);
|
|
|
|
|
|
+ boolean needWrite = false;
|
|
|
|
+
|
|
|
|
+ if(lastHeartTime==null){
|
|
|
|
+ ctx.channel().attr(LapiAttrKeys.LAST_HEART_TIME).set(DateTime.now());
|
|
|
|
+ needWrite = true;
|
|
|
|
+ }
|
|
|
|
+ else{
|
|
|
|
+ int minutes = Minutes.minutesBetween(lastHeartTime,DateTime.now()).getMinutes();
|
|
|
|
+
|
|
|
|
+ if(minutes>=10){
|
|
|
|
+ ctx.channel().attr(LapiAttrKeys.LAST_HEART_TIME).set(DateTime.now());
|
|
|
|
+ needWrite = true;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if(needWrite) {
|
|
|
|
+ new Thread(()->{
|
|
|
|
+ SysLog sysLog = new SysLog();
|
|
|
|
+ sysLog.setPointcut(deviceNo);
|
|
|
|
+ sysLog.setUrl("/LAPI/V1.0/PACS/Controller/HeartReportInfo");
|
|
|
|
+ sysLog.setData(heartReportInfo.toString());
|
|
|
|
+ sysLog.setRemark("收到设备心跳");
|
|
|
|
+ SocketAddress remoteAddress = ctx.channel().remoteAddress();
|
|
|
|
+ sysLog.setRemoteIp(remoteAddress.toString());
|
|
|
|
+ sysLog.setCreateTime(new Date());
|
|
|
|
+ sysLogService.insert(sysLog);
|
|
|
|
+ }).start();
|
|
|
|
+ }
|
|
|
|
|
|
deviceInfoService.updateByDeviceNo(deviceNo,ip);
|
|
deviceInfoService.updateByDeviceNo(deviceNo,ip);
|
|
|
|
|