Pu Zhibing
23 小时以前 185b6c7f14d8324540f39913e2b92146636cc5e0
ruoyi-service/ruoyi-dataInterchange/src/main/java/com/ruoyi/dataInterchange/server/WarnMsgService.java
@@ -1,12 +1,17 @@
package com.ruoyi.dataInterchange.server;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.ruoyi.dataInterchange.dao.UPExgMsgRealLocationDao;
import com.ruoyi.dataInterchange.dao.UPWarnMsgAdptInfoDao;
import com.ruoyi.dataInterchange.dao.UPWarnMsgUrgeTodoAckDao;
import com.ruoyi.dataInterchange.model.*;
import com.ruoyi.dataInterchange.model.enu.DataType;
import com.ruoyi.dataInterchange.netty.client.ChannelMap;
import com.ruoyi.dataInterchange.util.haikang.model.Alarm;
import com.ruoyi.dataInterchange.util.haikang.model.AlarmPic;
import com.ruoyi.dataInterchange.util.haikang.model.Event;
import com.ruoyi.dataInterchange.util.haikang.model.SubscriptionEvent;
import com.ruoyi.dataInterchange.util.jtt809.common.Jtt809Util;
import com.ruoyi.dataInterchange.util.jtt809.packet.common.OuterPacket;
import io.netty.buffer.ByteBuf;
@@ -16,10 +21,12 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.util.Arrays;
import java.util.List;
@@ -45,6 +52,10 @@
   
   @Resource
   private UPExgMsgRealLocationDao upExgMsgRealLocationDao;
   //走川标的公司
   private List<Integer> enterprise = Arrays.asList(17458936, 43984060, 13914394);
   //固定报警类型
   private List<Integer> warnType = Arrays.asList(0x0201, 0x0012, 0x0203, 0x0208, 0x0002, 0x0212, 0x0214, 0x0213, 0x0217, 0x0307);
   
   
   public void up_warn_msg(ChannelHandlerContext ctx, OuterPacket out) {
@@ -68,7 +79,6 @@
            break;
      }
   }
   
   /**
    * 解析子业务数据
@@ -98,8 +108,7 @@
      warnMsg.setData(data);
      return warnMsg;
   }
   /**
    * 报警督办应答消息
    *
@@ -114,13 +123,6 @@
      upWarnMsgUrgeTodoAckDao.save(upWarnMsgUrgeTodoAck);
   }
   //走川标的公司
   private List<Integer> enterprise = Arrays.asList(17458936, 43984060, 13914394);
   /**
    * 上报报警信息
    *
@@ -141,7 +143,7 @@
            upWarnMsgAdptInfo.setLongitude(gnssData.getLon());
            upWarnMsgAdptInfo.setLatitude(gnssData.getLat());
         }
      }else if(2 != upWarnMsgAdptInfo.getLevel()){
      }else if(!warnType.contains(upWarnMsgAdptInfo.getWarnType())){
         return;
      }
      upWarnMsgAdptInfoDao.save(upWarnMsgAdptInfo);
@@ -182,4 +184,237 @@
      upWarnMsgAdptInfo.setPushTime(LocalDateTime.now().plusDays(7).toEpochSecond(ZoneOffset.ofHours(8)));
      upWarnMsgAdptInfoDao.save(upWarnMsgAdptInfo);
   }
   /**
    * 存储mqtt协议报警信息
    */
   public void saveWarnMsgService(JSONObject jsonObject) {
      SubscriptionEvent subscriptionEvent = jsonObject.getObject("params", SubscriptionEvent.class);
      List<Event> events = subscriptionEvent.getEvents();
      events.forEach(event -> {
         //车牌号
         String srcName = event.getSrcName();
         Alarm data = JSONObject.parseObject(event.getData(), Alarm.class);
         if(!StringUtils.hasLength(data.getAlarmId())){
            return;
         }
         UPWarnMsgAdptInfo upWarnMsgAdptInfo = upWarnMsgAdptInfoDao.findByInfoIdIs(data.getAlarmId());
         if(null == upWarnMsgAdptInfo){
            upWarnMsgAdptInfo = new UPWarnMsgAdptInfo();
         }
         upWarnMsgAdptInfo.setVehicleNo(srcName);
         upWarnMsgAdptInfo.setVehicleColor(null == data.getVehicleLicenseColor() ? 0 : data.getVehicleLicenseColor());
         upWarnMsgAdptInfo.setWarnSrc(data.getSourceType() + 1);
         upWarnMsgAdptInfo.setWarnType(getAlarmType(data.getEventType()));
         upWarnMsgAdptInfo.setWarnTime(LocalDateTime.parse(data.getAlarmTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")).toEpochSecond(ZoneOffset.ofHours(8)));
         upWarnMsgAdptInfo.setInfoId(data.getAlarmId());
         upWarnMsgAdptInfo.setLevel(getLevel(data.getLevel()));
         upWarnMsgAdptInfo.setLongitude(data.getLongitude().intValue());
         upWarnMsgAdptInfo.setLatitude(data.getLatitude().intValue());
         upWarnMsgAdptInfo.setAltitude(data.getHeight().intValue() / 10);
         upWarnMsgAdptInfo.setSpeed(data.getSpeed().intValue() / 100000);
         upWarnMsgAdptInfo.setVec2(data.getSpeed().intValue() / 100000);
         upWarnMsgAdptInfo.setStatus(data.getStatus());
         upWarnMsgAdptInfo.setDirection(data.getDirection() / 100);
         upWarnMsgAdptInfo.setInfoContent(data.getAlarmInfo());
         upWarnMsgAdptInfo.setInferiorPlatformId(25439966);
         upWarnMsgAdptInfo.setCreateTime(LocalDateTime.now().toEpochSecond(ZoneOffset.ofHours(8)));
         if(!warnType.contains(upWarnMsgAdptInfo.getWarnType())){
            return;
         }
         upWarnMsgAdptInfoDao.save(upWarnMsgAdptInfo);
      });
   }
   public int getAlarmType(long eventType){
      switch ((int) eventType){
         case 0x00020501:
            return 0x0301;
         case 0x00020502:
            return 0x0201;
         case 0x00020503:
            return 0x0202;
         case 0x00020504:
            return 0x0202;
         case 0x00020505:
            return 0x0202;
         case 0x00020506:
            return 0x0202;
         case 0x00020507:
            return 0x0203;
         case 0x00020508:
            return 0x0203;
         case 0x00020509:
            return 0x0204;
         case 0x00020510:
            return 0x0204;
         case 0x00037017:
            return 0x00FF;
         case 0x00020511:
            return 0x00FF;
         case 0x00037005:
            return 0x00FF;
         case 0x00020512:
            return 0x0002;
         case 0x00020513:
            return 0x0002;
         case 0x00020514:
            return 0x00FF;
         case 0x00020515:
            return 0x00FF;
         case 0x00020516:
            return 0x0214;
         case 0x00020517:
            return 0x0213;
         case 0x00020519:
            return 0x0215;
         case 0x00020520:
            return 0x0234;
         case 0x00020521:
            return 0x0234;
         case 0x00020522:
            return 0x0234;
         case 0x00020523:
            return 0x0241;
         case 0x00020524:
            return 0x0242;
         case 0x00020525:
            return 0x0243;
         case 0x00020526:
            return 0x0243;
         case 0x00020531:
            return 0x00FF;
         case 0x00020532:
            return 0x00FF;
         case 0x00020533:
            return 0x00FF;
         case 0x00020534:
            return 0x0218;
         case 0x00020518:
            return 0xA0FF;
         case 0x00037001:
            return 0xA0FF;
         case 0x00037002:
            return 0x0216;
         case 0x00037006:
            return 0x0216;
         case 0x00020535:
            return 0x0001;
         case 0x00020536:
            return 0x0001;
         case 0x00020537:
            return 0x000D;
         case 0x00020102:
            return 0x0102;
         case 0x00020538:
            return 0x0005;
         case 0x00020539:
            return 0x0004;
         case 0x00020540:
            return 0x0304;
         case 0x00020541:
            return 0x0304;
         case 0x00020542:
            return 0x000B;
         case 0x00020543:
            return 0x0001;
         case 0x00020544:
            return 0x0001;
         case 0x00020545:
            return 0xA001;
         case 0x00020546:
            return 0x0305;
         case 0x00020547:
            return 0x0305;
         case 0x00020548:
            return 0xA0FF;
         case 0x00010202:
            return 0x0103;
         case 0x00010206:
            return 0x0103;
         case 0x00020101:
            return 0x0101;
         case 0x00020103:
            return 0x000C;
         case 0x00020549:
            return 0xA00A;
         case 0x00020550:
            return 0xA00A;
         case 0x00020551:
            return 0xA00A;
         case 0x00020552:
            return 0x0308;
         case 0x00020553:
            return 0x0308;
         case 0x00020554:
            return 0x0308;
         case 0x00020555:
            return 0x0308;
         case 0x00020556:
            return 0x0308;
         case 0x00020557:
            return 0x0308;
         case 0x00020558:
            return 0x0308;
         case 0x00020559:
            return 0x0003;
         case 0x00020527:
            return 0x0301;
         case 0x00020528:
            return 0x0201;
         case 0x00020529:
            return 0x0302;
         case 0x00020530:
            return 0x0302;
         case 0x00020560:
            return 0x0009;
         case 0x00020561:
            return 0x0306;
         case 0x00020562:
            return 0x0307;
         case 0x00090001:
            return 0x00FF;
            default:
               return 0x00FF;
      }
   }
   public int getLevel(String level){
      switch (level){
         case "h":
         case "m":
            return 1;
         case "l":
         case "w":
            return 2;
         default:
            return 0;
      }
   }
   /**
    * 存储mqtt协议报警图片信息
    */
   public void saveWarnMsgPicService(JSONObject jsonObject) {
      SubscriptionEvent subscriptionEvent = jsonObject.getObject("", SubscriptionEvent.class);
      List<Event> events = subscriptionEvent.getEvents();
      events.forEach(event -> {
         AlarmPic data = JSONObject.parseObject(event.getData(), AlarmPic.class);
         if(StringUtils.hasLength(data.getAlarmId())){
            UPWarnMsgAdptInfo upWarnMsgAdptInfo = upWarnMsgAdptInfoDao.findByInfoIdIs(data.getAlarmId());
            if(null != upWarnMsgAdptInfo){
               upWarnMsgAdptInfo.setPicUrl(data.getUrl());
               upWarnMsgAdptInfoDao.save(upWarnMsgAdptInfo);
            }else{
               upWarnMsgAdptInfo = new UPWarnMsgAdptInfo();
               upWarnMsgAdptInfo.setInfoId(data.getAlarmId());
               upWarnMsgAdptInfoDao.save(upWarnMsgAdptInfo);
            }
         }
      });
   }
}