| | |
| | | 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; |
| | |
| | | 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; |
| | | |
| | |
| | | |
| | | @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) { |
| | |
| | | break; |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 解析子业务数据 |
| | |
| | | warnMsg.setData(data); |
| | | return warnMsg; |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 报警督办应答消息 |
| | | * |
| | |
| | | upWarnMsgUrgeTodoAckDao.save(upWarnMsgUrgeTodoAck); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | //走川标的公司 |
| | | private List<Integer> enterprise = Arrays.asList(17458936, 43984060, 13914394); |
| | | |
| | | |
| | | /** |
| | | * 上报报警信息 |
| | | * |
| | |
| | | upWarnMsgAdptInfo.setLongitude(gnssData.getLon()); |
| | | upWarnMsgAdptInfo.setLatitude(gnssData.getLat()); |
| | | } |
| | | }else if(2 != upWarnMsgAdptInfo.getLevel()){ |
| | | }else if(!warnType.contains(upWarnMsgAdptInfo.getWarnType())){ |
| | | return; |
| | | } |
| | | upWarnMsgAdptInfoDao.save(upWarnMsgAdptInfo); |
| | |
| | | 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); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | |
| | | |
| | | } |