1 Star 0 Fork 46

FORK / OpenATC-Admin

forked from OpenATC / OpenATC-Admin 
加入 Gitee
与超过 800 万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README.md

OpenATC-Admin

JDK author Spring Boot JDK author

简介

  • 这是一款开源的现代交通信号控制软件,可应用于小型、大型、特殊路口等多种场景,并且包含了灯控、检测、故障以及用户管理等多种功能,快来使用它吧!

准备工作

在进行开发之前,您需要安装以下程序:

  • git
  • Java 1.8+
  • Maven 3.3.9+
  • npm 5 or above
  • Vue

文档目录

PROJECT_FOLDER
├─logs   //存放服务运行的日志,每次运行会删除旧日志,保存新日志
├─OpenATC-Admin-server  //服务端项目
│  ├─agent
│  │  │  pom.xml
│  │  ├─src
│  │  │  └─main
│  │  │      ├─java
│  │  │      │  └─com
│  │  │      │      └─openatc
│  │  │      │             └─agent
│  │  │      │                  │  agentApplication.java         //agent服务启动入口
│  │  │      │                  ├─config
│  │  │      │                  │      CorsConfig.java
│  │  │      │                  │      LazyInitBeanFactoryPostProcessor.java   //懒加载,减少服务启动时间
│  │  │      │                  │      ShiroConfig.java            //shiro配置文件
│  │  │      │                  ├─controller
│  │  │      │                  │      DevController.java          //设备 
│  │  │      │                  │      FileController.java         //文件上传与下载
│  │  │      │                  │      HisParamsController.java    //操作记录
│  │  │      │                  │      ManualpanelController.java  //手动面板
│  │  │      │                  │      MessageController.java      //设备通讯
│  │  │      │                  │      RoleController.java         //角色   
│  │  │      │                  │      RouteController.java        //路线
│  │  │      │                  │      SysConfigController.java    //系统配置
│  │  │      │                  │      TemplateController.java     //模板
│  │  │      │                  │      UserController.java         //用户
│  │  │      │                  ├─data
│  │  │      │                  ├─handler
│  │  │      │                  ├─http
│  │  │      │                  ├─model     //存放实体类
│  │  │      │                  ├─realm     //存放shiro配置的相关类
│  │  │      │                  │      GlobalDefaultExceptionHandler.java
│  │  │      │                  │      JwtAuthenticationFilter.java
│  │  │      │                  │      JwtToken.java
│  │  │      │                  │      MyRealm.java
│  │  │      │                  │      StatelessDefaultSubjectFactory.java
│  │  │      │                  ├─resmodel
│  │  │      │                  ├─service   //service层
│  │  │      │                  └─utils     //存放工具类
│  │  │      │
│  │  │      └─resources
│  │  │          │  application-docker.properties //docker配置文件
│  │  │          │  application.properties        //kdagent服务配置文件
│  │  │          │  banner.txt
│  │  │          │  kd014693.com.jks              //ssl证书
│  │  │          │  kdstore.p12                   //jdk证书
│  │  │          │  log4j2.xml                    //日志配置文件
│  │  │          │
│  │  │          ├─db
│  │  │          │  └─migration   //存放数据库的建表文件
│  │  │          └─static   //存放前端生成的dist文件
│  │  └─target
│  │
│  ├─algorithm   //算法包
│  ├─KDComm        //通讯包,用于服务和设备的通讯
│  └─KDCore        //异常包,存放服务的错误代码和信息
└─OpenATC-Admin-ui // 前端项目
    ├─OpenATC-Admin-web // 平台主项目
    │  ├─build // 打包配置
    │  ├─config // 项目基础配置信息
    │  ├─src // 业务逻辑块
    │  │  ├─api // 接口api
    │  │  ├─assets // 静态图片块
    │  │  │  ├─404_images
    │  │  │  ├─gis
    │  │  │  ├─home
    │  │  │  └─icon
    │  │  ├─components // 组件类
    │  │  │  ├─HorizontalChildren
    │  │  │  ├─Kanban
    │  │  │  ├─MessageBox
    │  │  │  ├─OpenATCCard
    │  │  │  ├─PatternStatus
    │  │  │  ├─SvgIcon
    │  │  │  ├─TreeTable
    │  │  │  ├─TscBottom
    │  │  │  └─XRDDirSelector
    │  │  ├─i18n // 国际化配置块
    │  │  │  └─language
    │  │  ├─icons // svg静态图片块
    │  │  │  └─svg
    │  │  ├─mock
    │  │  │  └─service
    │  │  ├─model // 基础模型块
    │  │  │  └─tree
    │  │  ├─router // 路由配置
    │  │  ├─store // 存储配置
    │  │  │  └─modules
    │  │  ├─styles // 皮肤样式配置
    │  │  │  └─theme
    │  │  ├─utils // 工具类
    │  │  └─views // 页面文件
    │  │      ├─compose
    │  │      │  └─components
    │  │      ├─DeviceManage
    │  │      │  └─DeviceDialog
    │  │      ├─GisManager
    │  │      │  └─components
    │  │      ├─GreenWaveOptimize
    │  │      │  ├─components
    │  │      │  ├─pattern
    │  │      │  │  └─planChart
    │  │      │  │      └─model
    │  │      │  └─tables
    │  │      │      └─components
    │  │      ├─Home
    │  │      │  └─lottieDemo
    │  │      ├─login
    │  │      ├─OperationRecord
    │  │      ├─Organization
    │  │      │  └─components
    │  │      ├─Service
    │  │      │  ├─components
    │  │      │  ├─pattern
    │  │      │  │  └─planChart
    │  │      │  └─tables
    │  │      │      └─components
    │  │      └─UserManage
    │  │          └─UserDialog
    │  └─static
    │      └─lottiejson
    └─OpenATC-Configer-web // 配置工具项目(该项目以组件的形式嵌套在平台主项目里)
        ├─build // 打包配置
        ├─config // 项目基础配置
        ├─src // 业务逻辑块
        │  ├─api // 接口api
        │  ├─assets // 静态图片块
        │  │  ├─404_images
        │  │  ├─icon
        │  │  ├─intersection_state
        │  │  └─intersection_type
        │  ├─components // 组件类
        │  │  ├─Breadcrumb
        │  │  ├─FloatImgBtn
        │  │  ├─Hamburger
        │  │  ├─Kanban
        │  │  ├─MessageBox
        │  │  ├─PatternStatus
        │  │  ├─StageStatus
        │  │  ├─SvgIcon
        │  │  ├─Tankuang
        │  │  ├─TreeTable
        │  │  ├─TscBottom
        │  │  └─XRDDirSelector
        │  ├─EdgeMgr // 逻辑管理类
        │  │  └─controller
        │  ├─i18n // 国际化配置块
        │  │  └─language
        │  ├─icons // svg静态图片块
        │  │  └─svg
        │  ├─lib // 模板类
        │  │  └─publicjs
        │  │      └─KissWSSub
        │  ├─packge // 项目打包配置
        │  ├─router // 路由配置
        │  ├─store // 存储配置
        │  │  └─modules
        │  ├─styles // 皮肤样式配置
        │  │  └─theme
        │  ├─ThemeStyle // element ui样式配置
        │  ├─utils // 工具类
        │  └─views // 页面文件
        │      ├─channel
        │      ├─channelLock
        │      ├─control
        │      ├─controlPanel
        │      ├─dailyRecord
        │      ├─dashboard
        │      ├─date
        │      ├─detector
        │      ├─deviceInfo
        │      ├─history
        │      │  ├─dialog
        │      │  └─table
        │      ├─importTempDialog
        │      │  └─crossDirection
        │      │      └─baseImg
        │      ├─layout
        │      │  ├─components
        │      │  │  └─Sidebar
        │      │  └─mixin
        │      ├─login
        │      ├─optimize
        │      ├─overlap
        │      ├─overView
        │      │  ├─crossDirection
        │      │  │  └─baseImg
        │      │  └─textPage
        │      ├─pattern
        │      ├─pedestrianDetector
        │      ├─phase
        │      │  └─images
        │      ├─plan
        │      ├─statistics
        │      ├─system
        │      │  ├─channelControl
        │      │  ├─manualControl
        │      │  └─systemDialog
        │      ├─tree
        │      └─user
        │          └─UserDialog
        └─static

前端部分

技术栈

Component 技术
框架 Vue
构建工具 npm
UI element-ui
语法 ES2015+
HTTP客户端 axios

开发环境部署

``` bash
# 克隆项目
git clone https://github.com/apache/****-admin.git

# 打包OpenATC-Config-web项目(该项目为平台主项目的组件项目,故需要提前打包,不然直接编译会出现找不到edgebase-front依赖包的情况。)
npm install
npm run package

# 安装OpenATC-Admin-web主项目依赖
npm install

# 建议不要用cnpm  安装有各种诡异的bug 可以通过如下操作解决npm速度慢的问题
npm install --registry=https://registry.npm.taobao.org

# 启动服务
npm run dev

# 访问
访问地址为:http://localhost:9528

# 构建测试环境
npm run build:stage

# 构建生成环境
npm run build:prod

# 预览发布环境效果 + 静态资源分析
npm run preview  --report
```

第三方通过url跳转配置界面说明

跳转url
`https://dolphin-dev.kedacom.com/openatc/#/overviewNew/index`
url传参说明
参数名 必选 类型 说明 可选项
agentid number 设备id 10001
isfromatc boolean (default: false) 控制国际化切换、登出、修改密码功能是否可见,传true则不可见 true
hideMenu boolean (default: false) 控制左侧菜单栏以及切换到文字界面的图标是否可见,传true则不可见 true
shrink number 首页主内容区域缩放比例(取值为0~1之间) 0.8
graphicMode boolean (default: false) 控制首页只显示路口图 true
举例
`https://dolphin-dev.kedacom.com/openatc/#/overviewNew/index?agentid=10001&isfromatc=true&hideMenu=true`

chrome浏览器下,脚本页面无法正常登陆解决方法

原因
Chrome浏览器默认限制了第三方Cookie,这将影响正常登录,需要更改浏览器的隐私设置,解除限制后重试
解决方法
chrome://flags/   把这句复制到浏览器,回车
SameSite by default cookies
Cookies without SameSite must be secure
找到上面这两两项设置成 Disable即可

系统配置参数

可用参数说明
模块 名称 举例 说明
theme theme dark 系统默认加载的主题,dark代表深色系主题,不填默认加载浅色主题
language language zh 默认加载的语言,有两个可选值:zh代表中文,en代表英文
media mediaWebsocketUrl wss://192.168.7.183/ 视频ws流媒体地址
jupyter url http://192.168.14.168:8888/tree jupyter跳转地址
gis zoom 12 地图默认缩放等级
gis maxZoom 18 地图最大缩放等级
gis minZoom 12 地图最小缩放等级
gis center [31.22784056, 121.68148040] 地图默认中心点
gis gisNormal http://192.168.14.168:7080/PBS/rest/services/ 2D地图本地服务资源地址
gis gisStatellite http://192.168.14.168:7081/PBS/rest/services/ 卫星图本地服务资源地址
gis gisBoundLeftTop [31.36360615, 121.30622863] 地图边界的左上角纬度经度
gis gisBoundRightBottom [31.11040156, 121.95270538] 地图边界的右下角纬度经度
gis isShowVideo true gis勤务路线是否显示视频

后端部分

技术栈

Component 技术
框架 SpringBoot (Java)
安全 Shiro + JWT
数据库 Sqlite
持久化 JPA
构建工具 Maven (Java)

配置说明

	# 项目名称
	spring.application.name=agent  

	# https的端口号
	server.port = 10004
	# http的端口号
	server.http.port = 10003

	# 监听服务发送的端口
	agent.send.port=0
	# 监听设备主动上报消息的端口
	agent.subscribe.port=21003

	# agent配置工具服务模式,设为true时,为中心模式,需配置数据库;设为false时,需打开spring.autoconfigure.exclude配置
	agent.server.mode.center=true

	# token的密码及过期时间
	jwt.token.secret = kedacom
	jwt.token.expiration = 86400000

	# 重置用户后的密码 123456
	default.user.password=123456

	# Preferred JSON mapper to use for HTTP message conversion.
	spring.http.converters.preferred-json-mapper=gson

	# 试图给一个new的RouteIntersection对象的某一个属性赋一个已经Persistent对象,导致最后save或者mergeRouterIntersection对象报这个错误,因此需要增加这个配置
	spring.jpa.properties.hibernate.event.merge.entity_copy_observer=allow

	# 配置工具版本使用此配置
	#spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration

	# 平台版本使用数据库配置
	spring.datasource.url=jdbc:postgresql://192.168.13.112:5432/openatc?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
	spring.datasource.username=postgres
	spring.datasource.password=password
	spring.datasource.driverClassName=org.postgresql.Driver
	spring.jpa.database-platform = com.example.jpajsonb.support.JsonbPostgresDialect
	spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
	spring.jpa.properties.hibernate.hbm2ddl.auto=update
	spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults = false
	spring.flyway.baseline-on-migrate=true

	##  Hikari 连接池配置
	## 最小空闲连接数量
	spring.datasource.hikari.minimum-idle=1
	## 空闲连接存活最大时间,默认600000(10分钟)
	spring.datasource.hikari.idle-timeout=180000
	## 连接池最大连接数,默认是10
	spring.datasource.hikari.maximum-pool-size=5
	## 此属性控制从池返回的连接的默认自动提交行为,默认值:true
	spring.datasource.hikari.auto-commit=true
	## 连接池名称
	spring.datasource.hikari.pool-name=HikariOpenATC
	## 此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认1800000即30分钟
	spring.datasource.hikari.max-lifetime=1800000
	## 数据库连接超时时间,默认30秒,即30000
	spring.datasource.hikari.connection-timeout=30000

	## 文件上传配置
	# 开启 multipart 上传功能
	spring.servlet.multipart.enabled=true
	# 文件写入磁盘的阈值
	spring.servlet.multipart.file-size-threshold=2KB
	# 最大文件大小
	spring.servlet.multipart.max-file-size=200MB
	# 最大请求大小
	spring.servlet.multipart.max-request-size=215MB
	# 文件存储目录
	file.upload-dir=./uploads

	# 秘钥证书库文件所在位置
	#server.ssl.key-store = classpath:kd014693.com.jks   #ssl证书
	server.ssl.key-store = classpath:kdstore.p12         #jdk证书
	# 密码
	server.ssl.key-store-password = kedacom123
	# 秘钥证书库类型
	#server.ssl.keyStoreType = JKS   #ssl证书类型
	server.ssl.keyStoreType = PKCS12 #jdk证书类型
	# 别名条目
	server.ssl.keyAlias= kd

开发环境部署

``` bash
# Clone project
git clone https://gitee.com/openatc/open-atc-admin.git

# Maven管理KDagent
使用IDEA打开第一步下载的项目文件,右键 OpenATC-Admin/OpenATC-Admin-server/KDagent/pom.xml文件,
点击Add as Maven Project,将KDagent交给Maven管理

# Maven管理kdalgorithm、KDCore、KDComm
使用第二步的方法,依次右键....../**algorithm**/pom.xml、....../**KDCore**/pom.xml、....../**KDComm**/pom.xml,
点击Add as Maven Project,将kdalgorithm、KDCore、KDComm三个模块交给Maven管理

# 加载本地jar包
点击右侧 maven -> kdcomm -> Lifecycle -> install,将kocomm模块的jar包加载的本地仓库;
然后,同样地继续将kdalgorithm、kdcore的jar包也加载到本地仓库

# 更改数据库连接配置
配置好 OpenATC-admin-server/KDagent/src/main/resources/application.properties 中连接数据库的用户名、密码以及数据库连接地址

# 构建
mvn clean package

# 启动
mvn --projects OpenATC-admin-server spring-boot:run
or
cd OpenATC-admin-server/target; java -jar kdagent-1.2-SNAPSHOT.jar

# 访问
访问地址为 `http://localhost:10003` 或者 `https://localhost:10002`
```    

注意

  • 为了方便开发,我们提供了这种前后端分离的部署模式,主要的好处是支持前端热部署,在这种模式下,前端会通过9528端口访问后端的restful api接口,获取数据, 这将导致跨域访问的问题。因此我们在OpenATC-admin-ui/config/index.js添加了支持跨域访问的配置,当前端通过npm run dev单独启动时,这些配置将被激活,允许跨域访问

License

  • Mulan PSL v2

联系我们

仓库评论 ( 0 )

你可以在登录后,发表评论

简介

OpenATC管理平台,包含设备管理,设备配置,权限管理,绿波路线,勤务路线等多种功能。通讯协议开源开放,支持对接多种协议的交通信号控制设备。具有最实用的信控优化算法,并可对接OpenATC虚拟环境,对更高级的信控算法进行扩展和验证。 展开 收起
Java
MulanPSL-2.0
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/diven-fork/open-atc-admin.git
git@gitee.com:diven-fork/open-atc-admin.git
diven-fork
open-atc-admin
OpenATC-Admin
master

搜索帮助