| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.doumee.jtt808.web.endpoint; |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.doumee.core.utils.DateUtil; |
| | | import com.doumee.dao.business.model.Bikes; |
| | | import com.doumee.jtt808.web.service.Jtt808Service; |
| | | import com.doumee.service.business.BikesService; |
| | | import io.github.yezhihao.netmc.core.annotation.Async; |
| | | import io.github.yezhihao.netmc.core.annotation.AsyncBatch; |
| | | import io.github.yezhihao.netmc.core.annotation.Endpoint; |
| | | import io.github.yezhihao.netmc.core.annotation.Mapping; |
| | | import io.github.yezhihao.netmc.session.Session; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Component; |
| | | import org.yzh.protocol.basics.JTMessage; |
| | | import org.yzh.protocol.commons.JT808; |
| | | import org.yzh.protocol.commons.transform.AttributeKey; |
| | | import org.yzh.protocol.commons.transform.attribute.Battery; |
| | | import org.yzh.protocol.t808.*; |
| | | import com.doumee.jtt808.web.model.entity.DeviceDO; |
| | | import com.doumee.jtt808.web.model.enums.SessionKey; |
| | | import com.doumee.jtt808.web.service.FileService; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalDateTime; |
| | | import java.time.ZoneOffset; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | import static org.yzh.protocol.commons.JT808.*; |
| | | |
| | | @Endpoint |
| | | @Component |
| | | public class JT808Endpoint { |
| | | |
| | | @Autowired |
| | | private Jtt808Service jtt808Service; |
| | | |
| | | private static final Logger log = LoggerFactory.getLogger(JT808Endpoint.class); |
| | | |
| | | @Autowired |
| | | private FileService fileService; |
| | | |
| | | @Mapping(types = ç»ç«¯éç¨åºç, desc = "ç»ç«¯éç¨åºç") |
| | | public Object T0001(T0001 message, Session session) { |
| | | session.response(message); |
| | | return null; |
| | | } |
| | | |
| | | @Mapping(types = ç»ç«¯å¿è·³, desc = "ç»ç«¯å¿è·³") |
| | | public void T0002(JTMessage message, Session session) { |
| | | log.info("ç»ç«¯å¿è·³========={}", JSONObject.toJSONString(message)); |
| | | } |
| | | |
| | | @Mapping(types = ç»ç«¯æ³¨é, desc = "ç»ç«¯æ³¨é") |
| | | public void T0003(JTMessage message, Session session) { |
| | | session.invalidate(); |
| | | } |
| | | |
| | | @Mapping(types = æ¥è¯¢æå¡å¨æ¶é´, desc = "æ¥è¯¢æå¡å¨æ¶é´") |
| | | public T8004 T0004(JTMessage message, Session session) { |
| | | T8004 result = new T8004(LocalDateTime.now(ZoneOffset.UTC)); |
| | | return result; |
| | | } |
| | | |
| | | @Mapping(types = ç»ç«¯è¡¥ä¼ åå
请æ±, desc = "ç»ç«¯è¡¥ä¼ åå
请æ±") |
| | | public void T8003(T8003 message, Session session) { |
| | | } |
| | | @Mapping(types = ç»ç«¯æ ¡æ¶è¯·æ±ä¸è¡, desc = "ç»ç«¯æ ¡æ¶è¯·æ±ä¸è¡") |
| | | public void T0F01(JTMessage message, Session session) { |
| | | } |
| | | |
| | | @Mapping(types = ç»ç«¯æ³¨å, desc = "ç»ç«¯æ³¨å") |
| | | public T8100 T0100(T0100 message, Session session) { |
| | | session.register(message); |
| | | DeviceDO device = new DeviceDO(); |
| | | device.setProtocolVersion(message.getProtocolVersion()); |
| | | device.setMobileNo(message.getClientId()); |
| | | device.setDeviceId(message.getDeviceId()); |
| | | device.setPlateNo(message.getPlateNo()); |
| | | session.setAttribute(SessionKey.Device, device); |
| | | T8100 result = new T8100(); |
| | | result.setResponseSerialNo(message.getSerialNo()); |
| | | result.setToken(message.getDeviceId() + "," + message.getPlateNo()); |
| | | result.setResultCode(T8100.Success); |
| | | return result; |
| | | } |
| | | |
| | | @Mapping(types = ç»ç«¯é´æ, desc = "ç»ç«¯é´æ") |
| | | public T0001 T0102(T0102 message, Session session) { |
| | | session.register(message); |
| | | DeviceDO device = new DeviceDO(); |
| | | String[] token = message.getToken().split(","); |
| | | device.setProtocolVersion(message.getProtocolVersion()); |
| | | device.setMobileNo(message.getClientId()); |
| | | device.setDeviceId(token[0]); |
| | | if (token.length > 1) |
| | | device.setPlateNo(token[1]); |
| | | session.setAttribute(SessionKey.Device, device); |
| | | |
| | | T0001 result = new T0001(); |
| | | result.setResponseSerialNo(message.getSerialNo()); |
| | | result.setResponseMessageId(message.getMessageId()); |
| | | result.setResultCode(T0001.Success); |
| | | return result; |
| | | } |
| | | |
| | | @Mapping(types = æ¥è¯¢ç»ç«¯åæ°åºç, desc = "æ¥è¯¢ç»ç«¯åæ°åºç") |
| | | public void T0104(T0104 message, Session session) { |
| | | session.response(message); |
| | | } |
| | | |
| | | @Mapping(types = æ¥è¯¢ç»ç«¯å±æ§åºç, desc = "æ¥è¯¢ç»ç«¯å±æ§åºç") |
| | | public void T0107(T0107 message, Session session) { |
| | | log.info("æ¥è¯¢ç»ç«¯å±æ§åºç========={}", JSONObject.toJSONString(message)); |
| | | session.response(message); |
| | | } |
| | | |
| | | @Mapping(types = ç»ç«¯åçº§ç»æéç¥, desc = "ç»ç«¯åçº§ç»æéç¥") |
| | | public void T0108(T0108 message, Session session) { |
| | | } |
| | | |
| | | /** |
| | | * 弿¥æ¹éå¤ç |
| | | * poolSizeï¼åèæ°æ®åºCPUæ ¸å¿æ°é |
| | | * maxElementsï¼æå¤§ç´¯ç§¯4000æ¡è®°å½å¤ç䏿¬¡ |
| | | * maxWaitï¼æå¤§çå¾
æ¶é´1ç§ |
| | | */ |
| | | @AsyncBatch(poolSize = 2, maxElements = 4000, maxWait = 1000) |
| | | @Mapping(types = ä½ç½®ä¿¡æ¯æ±æ¥, desc = "ä½ç½®ä¿¡æ¯æ±æ¥") |
| | | public void T0200(List<T0200> list) throws Exception { |
| | | jtt808Service.updateBikesInfo(list); |
| | | System.out.println(JSONObject.toJSONString(list) |
| | | ); |
| | | } |
| | | |
| | | @Mapping(types = å®ä½æ°æ®æ¹éä¸ä¼ , desc = "å®ä½æ°æ®æ¹éä¸ä¼ ") |
| | | public void T0704(T0704 message) { |
| | | } |
| | | public static String bcd2String(byte[] bytes) { |
| | | StringBuilder temp = new StringBuilder(bytes.length * 2); |
| | | for (int i = 0; i < bytes.length; i++) { |
| | | // é«åä½ |
| | | temp.append((bytes[i] & 0xf0) >>> 4); |
| | | // ä½åä½ |
| | | temp.append(bytes[i] & 0x0f); |
| | | } |
| | | return temp.toString().substring(0, 1).equalsIgnoreCase("0") ? temp.toString().substring(1) : temp.toString(); |
| | | } |
| | | |
| | | @Mapping(types = {ä½ç½®ä¿¡æ¯æ¥è¯¢åºç, è½¦è¾æ§å¶åºç}, desc = "ä½ç½®ä¿¡æ¯æ¥è¯¢åºç/è½¦è¾æ§å¶åºç") |
| | | public void T0201_0500(T0201_0500 message, Session session) { |
| | | session.response(message); |
| | | } |
| | | |
| | | @Mapping(types = äºä»¶æ¥å, desc = "äºä»¶æ¥å") |
| | | public void T0301(T0301 message, Session session) { |
| | | } |
| | | |
| | | @Mapping(types = æé®åºç, desc = "æé®åºç") |
| | | public void T0302(T0302 message, Session session) { |
| | | } |
| | | |
| | | @Mapping(types = ä¿¡æ¯ç¹æ_åæ¶, desc = "ä¿¡æ¯ç¹æ/åæ¶") |
| | | public void T0303(T0303 message, Session session) { |
| | | } |
| | | |
| | | @Mapping(types = æ¥è¯¢åºåæçº¿è·¯æ°æ®åºç, desc = "æ¥è¯¢åºåæçº¿è·¯æ°æ®åºç") |
| | | public void T0608(T0608 message, Session session) { |
| | | session.response(message); |
| | | } |
| | | |
| | | @Mapping(types = è¡é©¶è®°å½æ°æ®ä¸ä¼ , desc = "è¡é©¶è®°å½ä»ªæ°æ®ä¸ä¼ ") |
| | | public void T0700(T0700 message, Session session) { |
| | | session.response(message); |
| | | } |
| | | |
| | | @Mapping(types = çµåè¿å䏿¥, desc = "çµåè¿å䏿¥") |
| | | public void T0701(JTMessage message, Session session) { |
| | | } |
| | | |
| | | @Mapping(types = 驾驶å身份信æ¯éé䏿¥, desc = "驾驶å身份信æ¯éé䏿¥") |
| | | public void T0702(T0702 message, Session session) { |
| | | session.response(message); |
| | | } |
| | | |
| | | @Mapping(types = CANæ»çº¿æ°æ®ä¸ä¼ , desc = "CANæ»çº¿æ°æ®ä¸ä¼ ") |
| | | public void T0705(T0705 message, Session session) { |
| | | } |
| | | |
| | | @Mapping(types = å¤åªä½äºä»¶ä¿¡æ¯ä¸ä¼ , desc = "å¤åªä½äºä»¶ä¿¡æ¯ä¸ä¼ ") |
| | | public void T0800(T0800 message, Session session) { |
| | | } |
| | | |
| | | @Async |
| | | @Mapping(types = å¤åªä½æ°æ®ä¸ä¼ , desc = "å¤åªä½æ°æ®ä¸ä¼ ") |
| | | public JTMessage T0801(T0801 message, Session session) { |
| | | if (message.getPacket() == null) { |
| | | T0001 result = new T0001(); |
| | | result.copyBy(message); |
| | | result.setMessageId(JT808.å¹³å°éç¨åºç); |
| | | result.setSerialNo(session.nextSerialNo()); |
| | | |
| | | result.setResponseSerialNo(message.getSerialNo()); |
| | | result.setResponseMessageId(message.getMessageId()); |
| | | result.setResultCode(T0001.Success); |
| | | return result; |
| | | } |
| | | fileService.saveMediaFile(message); |
| | | T8800 result = new T8800(); |
| | | result.setMediaId(message.getId()); |
| | | return result; |
| | | } |
| | | |
| | | @Mapping(types = åå¨å¤åªä½æ°æ®æ£ç´¢åºç, desc = "åå¨å¤åªä½æ°æ®æ£ç´¢åºç") |
| | | public void T0802(T0802 message, Session session) { |
| | | session.response(message); |
| | | } |
| | | |
| | | @Mapping(types = æå头ç«å³ææå½ä»¤åºç, desc = "æå头ç«å³ææå½ä»¤åºç") |
| | | public void T0805(T0805 message, Session session) { |
| | | session.response(message); |
| | | } |
| | | |
| | | @Mapping(types = æ°æ®ä¸è¡éä¼ , desc = "æ°æ®ä¸è¡éä¼ ") |
| | | public void T0900(T0900 message, Session session) { |
| | | } |
| | | |
| | | @Mapping(types = æ°æ®åç¼©ä¸æ¥, desc = "æ°æ®åç¼©ä¸æ¥") |
| | | public void T0901(T0901 message, Session session) { |
| | | } |
| | | |
| | | @Mapping(types = ç»ç«¯RSAå
¬é¥, desc = "ç»ç«¯RSAå
¬é¥") |
| | | public void T0A00(T0A00_8A00 message, Session session) { |
| | | session.response(message); |
| | | } |
| | | } |