puzhibing
2025-05-20 ea7595c4c75926f85388574b261b8ba90cf60e0d
ruoyi-service/ruoyi-dataInterchange/src/main/java/com/ruoyi/dataInterchange/server/WarnMsgService.java
@@ -20,6 +20,7 @@
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.Arrays;
import java.util.List;
/**
@@ -48,7 +49,7 @@
   
   public void up_warn_msg(ChannelHandlerContext ctx, OuterPacket out) {
      if (!redisTemplate.hasKey("login:" + out.getGnsscenterId())) {
         log.error("链路还未登录校验,拒绝连接");
         log.error("链路还未登录校验,拒绝连接:{}", out.getGnsscenterId());
         ctx.close();
         return;
      }
@@ -112,6 +113,13 @@
      upWarnMsgUrgeTodoAck.setCreateTime(LocalDateTime.now().toEpochSecond(ZoneOffset.ofHours(8)));
      upWarnMsgUrgeTodoAckDao.save(upWarnMsgUrgeTodoAck);
   }
   //走川标的公司
   private List<Integer> enterprise = Arrays.asList(17458936, 43984060, 13914394);
   
   /**
    * 上报报警信息
@@ -121,16 +129,20 @@
    * @param warnMsg
    */
   public void up_warn_msg_adpt_info(ChannelHandlerContext ctx, int inferiorPlatformId, WarnMsg warnMsg) {
      UPWarnMsgAdptInfo upWarnMsgAdptInfo = new UPWarnMsgAdptInfo().decode(warnMsg);
      UPWarnMsgAdptInfo upWarnMsgAdptInfo = enterprise.contains(inferiorPlatformId) ? new UPWarnMsgAdptInfo().decode2(warnMsg) : new UPWarnMsgAdptInfo().decode1(warnMsg);
      upWarnMsgAdptInfo.setResult(0x00);
      upWarnMsgAdptInfo.setInferiorPlatformId(inferiorPlatformId);
      upWarnMsgAdptInfo.setCreateTime(LocalDateTime.now().toEpochSecond(ZoneOffset.ofHours(8)));
      UPExgMsgRealLocation upExgMsgRealLocation = upExgMsgRealLocationDao.findByVehicleNoOrderByCreateTimeDesc(upWarnMsgAdptInfo.getVehicleNo());
      if (null != upExgMsgRealLocation) {
         GnssData gnssData = upExgMsgRealLocation.getGnssData();
         upWarnMsgAdptInfo.setSpeed(gnssData.getVec1());
         upWarnMsgAdptInfo.setLongitude(gnssData.getLon());
         upWarnMsgAdptInfo.setLatitude(gnssData.getLat());
      if(0 == upWarnMsgAdptInfo.getLongitude()){
         UPExgMsgRealLocation upExgMsgRealLocation = upExgMsgRealLocationDao.findByVehicleNoOrderByCreateTimeDesc(upWarnMsgAdptInfo.getVehicleNo());
         if (null != upExgMsgRealLocation) {
            GnssData gnssData = upExgMsgRealLocation.getGnssData();
            upWarnMsgAdptInfo.setSpeed(gnssData.getVec1());
            upWarnMsgAdptInfo.setLongitude(gnssData.getLon());
            upWarnMsgAdptInfo.setLatitude(gnssData.getLat());
         }
      }else if(2 != upWarnMsgAdptInfo.getLevel()){
         return;
      }
      upWarnMsgAdptInfoDao.save(upWarnMsgAdptInfo);
   }
@@ -140,7 +152,7 @@
    * 定时任务督办报警请求
    */
   public void taskUrgeTodo() {
      List<UPWarnMsgAdptInfo> list = upWarnMsgAdptInfoDao.findByResultIsAndPushTimeBefore(0x00, LocalDateTime.now().toEpochSecond(ZoneOffset.ofHours(8)));
      List<UPWarnMsgAdptInfo> list = upWarnMsgAdptInfoDao.findByResultIsAndLevelNotNullAndPushTimeBefore(0x00, LocalDateTime.now().toEpochSecond(ZoneOffset.ofHours(8)));
      for (UPWarnMsgAdptInfo upWarnMsgAdptInfo : list) {
         down_warn_msg_urge_todo_req(upWarnMsgAdptInfo);
      }
@@ -152,7 +164,7 @@
    */
   public void down_warn_msg_urge_todo_req(UPWarnMsgAdptInfo upWarnMsgAdptInfo) {
      if (!redisTemplate.hasKey("login:" + upWarnMsgAdptInfo.getInferiorPlatformId())) {
         log.error("链路还未登录校验,拒绝连接");
         log.error("链路还未登录校验,拒绝连接:{}", upWarnMsgAdptInfo.getInferiorPlatformId());
         return;
      }
      int inferiorPlatformId = upWarnMsgAdptInfo.getInferiorPlatformId();
@@ -160,7 +172,7 @@
      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.getCode(), body);
      OuterPacket out = new OuterPacket(DataType.DOWN_WARN_MSG.getCode(), inferiorPlatformId, body);
      //获取从链路通道
      Channel channel = ChannelMap.getClientChannel(inferiorPlatformId);
      if (null != channel && channel.isActive()) {