Pu Zhibing
2025-03-14 3c66b754ee314ae87d0f2eda2fa86a30ea2304e7
ruoyi-service/ruoyi-dataInterchange/src/main/java/com/ruoyi/dataInterchange/server/WarnMsgService.java
@@ -16,6 +16,7 @@
import io.netty.channel.Channel;
import io.netty.channel.ChannelHandlerContext;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
@@ -40,8 +41,16 @@
   @Resource
   private UPWarnMsgAdptInfoDao upWarnMsgAdptInfoDao;
   
   @Resource
   private RedisTemplate redisTemplate;
   
   public void up_warn_msg(ChannelHandlerContext ctx, OuterPacket out) {
      if (!redisTemplate.hasKey("login:" + out.getGnsscenterId())) {
         log.error("链路还未登录校验,拒绝连接");
         ctx.close();
         return;
      }
      WarnMsg warnMsg = getWarnMsg(out);
      DataType dataType = DataType.getDataType(warnMsg.getDataType());
      switch (dataType) {
@@ -52,18 +61,6 @@
         case UP_WARN_MSG_ADPT_INFO:
            log.info("上报报警信息({}):{}", DataType.UP_WARN_MSG_ADPT_INFO.getCode(), out);
            up_warn_msg_adpt_info(ctx, out.getGnsscenterId(), warnMsg);
            break;
         case UP_CTRL_MSG_MONITOR_VEHICLE_ACK:
            log.info("车辆单向监听应答消息({}):{}", DataType.UP_CTRL_MSG_MONITOR_VEHICLE_ACK.getCode(), out);
            break;
         case UP_CTRL_MSG_TAKE_PHOTO_ACK:
            log.info("车辆牌照应答消息({}):{}", DataType.UP_CTRL_MSG_TAKE_PHOTO_ACK.getCode(), out);
            break;
         case UP_CTRL_MSG_TEXT_INFO_ACK:
            log.info("下发车辆报文应答消息({}):{}", DataType.UP_CTRL_MSG_TEXT_INFO_ACK.getCode(), out);
            break;
         case UP_CTRL_MSG_EMERGENCY_MONITORING_ACK:
            log.info("车辆应急接入监管平台应答消息({}):{}", DataType.UP_CTRL_MSG_EMERGENCY_MONITORING_ACK.getCode(), out);
            break;
         default:
            break;
@@ -135,7 +132,7 @@
    * 定时任务督办报警请求
    */
   public void taskUrgeTodo() {
      List<UPWarnMsgAdptInfo> list = upWarnMsgAdptInfoDao.findByResultIs(0x00);
      List<UPWarnMsgAdptInfo> list = upWarnMsgAdptInfoDao.findByResultIsAndPushTimeBefore(0x00, LocalDateTime.now().toEpochSecond(ZoneOffset.ofHours(8)));
      for (UPWarnMsgAdptInfo upWarnMsgAdptInfo : list) {
         down_warn_msg_urge_todo_req(upWarnMsgAdptInfo);
      }
@@ -146,19 +143,23 @@
    * 报警督办请求
    */
   public void down_warn_msg_urge_todo_req(UPWarnMsgAdptInfo upWarnMsgAdptInfo) {
      if (!redisTemplate.hasKey("login:" + upWarnMsgAdptInfo.getInferiorPlatformId())) {
         log.error("链路还未登录校验,拒绝连接");
         return;
      }
      int inferiorPlatformId = upWarnMsgAdptInfo.getInferiorPlatformId();
      DOWNWarnMsgUrgeTodoReq downWarnMsgUrgeTodoReq = new DOWNWarnMsgUrgeTodoReq().build(upWarnMsgAdptInfo);
      log.info("报警督办请求({}):{}", DataType.DOWN_WARN_MSG_URGE_TODO_REQ.getCode(), JSON.toJSONString(downWarnMsgUrgeTodoReq));
      downWarnMsgUrgeTodoReq.setDataType(DataType.DOWN_WARN_MSG_URGE_TODO_REQ.getCode());
      downWarnMsgUrgeTodoReq.setDataLength(92);
      byte[] body = downWarnMsgUrgeTodoReq.encode();
      OuterPacket out = new OuterPacket(DataType.DOWN_WARN_MSG_URGE_TODO_REQ.getCode(), body);
      //获取从链路通道
      Channel channel = ChannelMap.getClientChannel(inferiorPlatformId);
      if (null != channel && channel.isActive()) {
         channel.writeAndFlush(out);
      } else {
         channel = ChannelMap.getServerChannel(inferiorPlatformId);
         channel.writeAndFlush(out);
         log.info("报警督办请求({}):{}", DataType.DOWN_WARN_MSG_URGE_TODO_REQ.getCode(), JSON.toJSONString(downWarnMsgUrgeTodoReq));
      }
      upWarnMsgAdptInfo.setPushTime(LocalDateTime.now().plusDays(7).toEpochSecond(ZoneOffset.ofHours(8)));
      upWarnMsgAdptInfoDao.save(upWarnMsgAdptInfo);
   }
}