代码拉取完成,页面将自动刷新
同步操作将从 OpenATC/OpenATC-Admin 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
在进行开发之前,您需要安装以下程序:
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
```
`https://dolphin-dev.kedacom.com/openatc/#/overviewNew/index`
参数名 | 必选 | 类型 | 说明 | 可选项 |
---|---|---|---|---|
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浏览器默认限制了第三方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`
```
OpenATC-admin-ui/config/index.js
添加了支持跨域访问的配置,当前端通过npm run dev
单独启动时,这些配置将被激活,允许跨域访问此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。