Giter Club home page Giter Club logo

gnss-web's Introduction

技术架构

JAVA:JDK 1.8+
框架:SpringBoot 2.x、Spring Data JPA、Hibernate Validation、Caffeine缓存、SnowFlake ID生成器
日志:Slf4j、Logback
中间件:RabbitMQ、Redis
数据库:demo版采用H2,可自行更换其他主流数据库
接口文档:Swagger
代码规约:遵循《阿里巴巴Java开发手册》标准

特性

  1. 支持JT808-2011、JT808-2019、JT1078、苏标主动安全指令。
  2. 前后端分离,采用Swagger管理接口,支持在线调试。
  3. 跨平台开发和部署,使用内嵌的容器无需部署到Tomcat。
  4. 采用SpringMVC开发Restful接口,异常统一拦截处理,支持分页,采用Hibernate Validation校验接口参数。
  5. 所有数据表的ID统一由SnowFlake ID生成器生成,取代传统的使用整型自增或者UUID的方式,确保ID是整型有顺序和安全性,不会影响查询性能。
  6. 采用Spring Data JPA兼容所有主流数据库,无需编写SQL,可随时更换数据库而不用修改代码。
  7. 采用性能最高的Caffeine作为一级本地缓存,Redis作为二级分布式缓存,大大提高了性能。目前已将车辆信息、服务器状态信息缓存到Redis,数据库或者Web后台未启动不会影响网关正常运行。
  8. 下发给终端的指令统一处理,接口已分JT808、JT1078、主动安全三大类。
  9. 终端上传的数据分多个MQ主题订阅处理,目前订阅了主动安全附件、JT808日志、JT808多媒体文件、终端状态信息、终端上传数据、指令上行。
  10. 目前实现了车辆信息维护、压力测试位置数量统计、JT1078实时音视频和录像回放、位置存储、报警存储、多媒体文件存储(JT808拍照)、FTP上传文件查询存储、主动安全报警和附件查询。
  11. 预留了JT809企业网关接口,支持数据上传多个上级平台,后续再加。

PS:此项目只实现终端数据的订阅和处理,测试页面在src/main/reources/static中,登录、公司机构、权限、报表等功能请自行实现。测试界面做的丑请谅解,仅做测试接口使用。

环境搭建

JDK 1.8+
maven 3.6+(配置阿里云镜像加速请参考:https://maven.aliyun.com/mvn/guide)
开发工具建议使用IntelliJ IDEA

以下步骤以苹果Mac系统开发为例:
(1) 下载项目:git clone https://github.com/gnss-pro/gnss-web.git
(2) 打开IDEA,导入项目
(3) 安装插件Lombok,点击Preferences -> Plugins -> 查询Lombok并安装重启IDEA
(4) 设置Java编译版本,点击Preferences -> Compiler -> Java Compiler -> 右边的Target bytecode version选择1.8
(5) 点击File -> Project Structure -> Project -> 右边Project SDK选择1.8,Modules -> 右边Module SDK选择1.8
(6) 设置maven环境,点击Preferences -> Build Tools -> Maven -> 右边配置Maven home directory和User settings file
(7) 打开IDEA的maven工具栏,双击clean,然后双击package则在target目录生成jar文件

项目运行

(1) 请确保中间件RabbitMQ和Redis已经启动。
(2) 选择GnssWebApplication,运行main方法启动项目。默认dev环境,会使用application-dev.yml的配置。
(3) 打开浏览器输入:http://localhost:9999/gnss-web/static/jt808Test.html

gnss-web's People

Contributors

gnss-pro avatar xiaobaibin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

gnss-web's Issues

摄像头立即拍摄测试出现指令超时问题

环境搭建完成并对接终端测试基本808指令和1078实时音视频都成功。再测试多媒体出现指令超时不成功。操作过程如下:

  1. 拍照指令发送成功,在gnss-web日志如下:

2021-07-02 19:06:18.521 INFO [http-nio-8088-exec-7] com.gnss.web.command.service.CommandOperationService:114 - 同步指令内容:终端ID:62,指令ID:8801,指令参数:{逻辑通道号=1, 拍摄命令=1, 拍照间隔/录像时间=0, 保存标志=1:保存, 分辨率=0x01:320x240, 图
像/视频质量=1, 亮度=100, 对比度=100, 饱和度=100, 色度=100},commandProto:{"downCommandDesc":"摄像头立即拍摄命令","downCommandId":"8801","fromNode":"web-server","messageBody":"AQABAAABAQFkZGRk","operationId":"617797401008144384","paramsDesc":"{逻
辑通道号=1, 拍摄命令=1, 拍照间隔/录像时间=0, 保存标志=1:保存, 分辨率=0x01:320x240, 图像/视频质量=1, 亮度=100, 对比度=100, 饱和度=100, 色度=100}","requestType":"SYNC","respCommandId":"0001","startTime":1625223978521,"terminalInfo":{"nodeName":"jt
808-server","protocolType":"JT808_2011","terminalId":62,"terminalNum":"19942257112","terminalSimCode":"19942257112","terminalStrId":"62","vehicleNum":"京A-test001","vehiclePlateColor":"YELLOW"},"timeout":15000,"toNode":"jt808-server","wholePacke
t":false}
2021-07-02 19:06:18.522 INFO [http-nio-8088-exec-7] com.gnss.web.command.service.CommandOperationService:119 - 同步指令发送成功到MQ,终端ID:62,指令ID:8801,指令参数:{逻辑通道号=1, 拍摄命令=1, 拍照间隔/录像时间=0, 保存标志=1:保存, 分辨率=0x01:320x
240, 图像/视频质量=1, 亮度=100, 对比度=100, 饱和度=100, 色度=100}
2021-07-02 19:06:18.706 INFO [org.springframework.amqp.rabbit.RabbitListenerEndpointContainer#5-2] com.gnss.web.consumer.TerminalUploadDataReceiver:128 - 收到终端上传数据,终端手机号:19942257112,上传类型:TAKE_PHOTO_RESPONSE,上传内容:{"idCount":1
,"idList":[24],"replyMsgFlowId":555,"result":0}
2021-07-02 19:06:33.523 ERROR [http-nio-8088-exec-7] com.gnss.web.command.service.CommandOperationService:169 - 等待指令应答超时,终端ID:62,终端号:19942257112,指令ID:8801,指令参数:{逻辑通道号=1, 拍摄命令=1, 拍照间隔/录像时间=0, 保存标志=1:保存,
分辨率=0x01:320x240, 图像/视频质量=1, 亮度=100, 对比度=100, 饱和度=100, 色度=100},等待时间:15000

  1. 拍照指令下发终端成功,在jt808-server日志如下:

com.gnss.gateway.common.consumer.AbstractDownCommandReceiver:132 - 下发指令:8801(摄像头立即拍摄命令),终端ID:62,终端手机号:19942257112,车牌号:京A-
test001,流水号:707,参数:{逻辑通道号=2, 拍摄命令=1, 拍照间隔/录像时间=0, 保存标志=0:实时上传, 分辨率=0x01:320x240, 图像/视频质量=1, 亮度=100, 对比度=100, 饱和度=100, 色度=100},消息体:020001000000010164646464,响应指令:0001
2021-07-02 19:55:45.684 INFO [nioEventLoopGroup-4-1] com.gnss.jt808.netty.codec.Jt808FrameDecoder:135 - 收到:7e08050009019942257112c17a02c30000010000001bf87e
2021-07-02 19:55:45.684 INFO [defaultEventExecutorGroup-5-1] com.gnss.jt808.netty.handler.Jt808BusinessHandler:59 - 收到摄像头立即拍摄命令应答(0x0805),终端手机号:19942257112,消息流水号:49530,内容:{应答流水号=707, 结果=0, ID个数=1, ID列表=[27]}
2021-07-02 19:55:52.394 INFO [nioEventLoopGroup-4-1] com.gnss.jt808.netty.codec.Jt808FrameDecoder:135 - 收到:7e02000048019942257112c17b000008000000000302624e0d06f14eb60041000000002107021955440104000000000302000014040000000115040000000c160400000
0001702000025040cff000030011f31011bfe7e

  1. 问题--在gnss-web端没有收到上行指令, UpCommandReceiver没收到响应消息导致指令超时
    JT808多媒体文件(拍照等)订阅 MediaFileReceiver 消费端也没收到消息和任何日志。

请问问题出在哪个环节? 这个功能测试工具发布之前是否正常调通? 请大神帮助排查,多谢!!!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.