Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
T
traffic-signal-platform
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
signal
traffic-signal-platform
Commits
1ded3369
Commit
1ded3369
authored
May 09, 2023
by
duanruiming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[add] 信号机通讯模块
parent
dbfb73db
Changes
70
Show whitespace changes
Inline
Side-by-side
Showing
70 changed files
with
4929 additions
and
0 deletions
+4929
-0
pom.xml
pom.xml
+1
-0
pom.xml
signal-communication-service/pom.xml
+248
-0
package.xml
signal-communication-service/src/main/assembly/package.xml
+49
-0
CommunicationApplication.java
...src/main/java/net/wanji/com/CommunicationApplication.java
+30
-0
CrossInfoCache.java
...ice/src/main/java/net/wanji/com/cache/CrossInfoCache.java
+56
-0
SignalCommandInterfaceCache.java
...java/net/wanji/com/cache/SignalCommandInterfaceCache.java
+72
-0
NettyMessageCache.java
...ain/java/net/wanji/com/cache/netty/NettyMessageCache.java
+15
-0
Constants.java
...c/main/java/net/wanji/com/common/constants/Constants.java
+1178
-0
HexSign.java
...ice/src/main/java/net/wanji/com/common/enums/HexSign.java
+43
-0
SignalInterfaceTypeEnum.java
...a/net/wanji/com/common/enums/SignalInterfaceTypeEnum.java
+48
-0
Swagger2.java
...-service/src/main/java/net/wanji/com/config/Swagger2.java
+42
-0
ThreadPoolConfig.java
.../src/main/java/net/wanji/com/config/ThreadPoolConfig.java
+47
-0
ControlCommandController.java
...va/net/wanji/com/controller/ControlCommandController.java
+216
-0
SignalStatusController.java
...java/net/wanji/com/controller/SignalStatusController.java
+74
-0
StaticInfoController.java
...n/java/net/wanji/com/controller/StaticInfoController.java
+129
-0
ManufacturerInfoMapper.java
...ain/java/net/wanji/com/mapper/ManufacturerInfoMapper.java
+33
-0
TCrossInfoMapper.java
.../src/main/java/net/wanji/com/mapper/TCrossInfoMapper.java
+40
-0
NettyServer.java
...ervice/src/main/java/net/wanji/com/netty/NettyServer.java
+122
-0
AgreementCommon.java
.../net/wanji/com/netty/agreementcommon/AgreementCommon.java
+21
-0
MessageDecoder.java
...c/main/java/net/wanji/com/netty/codec/MessageDecoder.java
+21
-0
MessageEnCoder.java
...c/main/java/net/wanji/com/netty/codec/MessageEnCoder.java
+25
-0
NettyServerHandler.java
.../java/net/wanji/com/netty/handler/NettyServerHandler.java
+85
-0
CrossInfoDTO.java
...ce/src/main/java/net/wanji/com/pojo/dto/CrossInfoDTO.java
+21
-0
CrossSchedulesDTO.java
...c/main/java/net/wanji/com/pojo/dto/CrossSchedulesDTO.java
+27
-0
PlanSectionDTO.java
.../src/main/java/net/wanji/com/pojo/dto/PlanSectionDTO.java
+26
-0
SchemePhaseLightsDTO.java
...ain/java/net/wanji/com/pojo/dto/SchemePhaseLightsDTO.java
+19
-0
TelesemeCodeDTO.java
...src/main/java/net/wanji/com/pojo/dto/TelesemeCodeDTO.java
+16
-0
MessageResultPojo.java
...main/java/net/wanji/com/pojo/netty/MessageResultPojo.java
+37
-0
BaseCrossInfo.java
...ce/src/main/java/net/wanji/com/pojo/po/BaseCrossInfo.java
+22
-0
CrossInfoPO.java
...vice/src/main/java/net/wanji/com/pojo/po/CrossInfoPO.java
+51
-0
CrossLightsPO.java
...ce/src/main/java/net/wanji/com/pojo/po/CrossLightsPO.java
+44
-0
CrossPhaseLightsPO.java
...c/main/java/net/wanji/com/pojo/po/CrossPhaseLightsPO.java
+32
-0
CrossPhasePO.java
...ice/src/main/java/net/wanji/com/pojo/po/CrossPhasePO.java
+68
-0
CrossPlanPO.java
...vice/src/main/java/net/wanji/com/pojo/po/CrossPlanPO.java
+32
-0
CrossSchedulesPO.java
...src/main/java/net/wanji/com/pojo/po/CrossSchedulesPO.java
+41
-0
CrossSchemePO.java
...ce/src/main/java/net/wanji/com/pojo/po/CrossSchemePO.java
+47
-0
CrossSectionPO.java
...e/src/main/java/net/wanji/com/pojo/po/CrossSectionPO.java
+44
-0
ManufacturerApiInfoPO.java
...ain/java/net/wanji/com/pojo/po/ManufacturerApiInfoPO.java
+41
-0
ManufacturerInfoPO.java
...c/main/java/net/wanji/com/pojo/po/ManufacturerInfoPO.java
+40
-0
SignalLampStatus.java
...src/main/java/net/wanji/com/pojo/po/SignalLampStatus.java
+51
-0
SignalRunring.java
...ce/src/main/java/net/wanji/com/pojo/po/SignalRunring.java
+66
-0
SignalStatusLogPO.java
...rc/main/java/net/wanji/com/pojo/po/SignalStatusLogPO.java
+42
-0
ControlCommandVO.java
...src/main/java/net/wanji/com/pojo/vo/ControlCommandVO.java
+37
-0
CrossLanesVo.java
...ice/src/main/java/net/wanji/com/pojo/vo/CrossLanesVo.java
+20
-0
DelBaseConfigVO.java
.../src/main/java/net/wanji/com/pojo/vo/DelBaseConfigVO.java
+28
-0
DetailCrossInfoVO.java
...rc/main/java/net/wanji/com/pojo/vo/DetailCrossInfoVO.java
+33
-0
Direction.java
...ervice/src/main/java/net/wanji/com/pojo/vo/Direction.java
+15
-0
LightsStatusVO.java
...e/src/main/java/net/wanji/com/pojo/vo/LightsStatusVO.java
+76
-0
PhaseTimingSendVO.java
...rc/main/java/net/wanji/com/pojo/vo/PhaseTimingSendVO.java
+107
-0
PlanSectionVO.java
...ce/src/main/java/net/wanji/com/pojo/vo/PlanSectionVO.java
+17
-0
PlanSendVO.java
...rvice/src/main/java/net/wanji/com/pojo/vo/PlanSendVO.java
+81
-0
Road.java
...ion-service/src/main/java/net/wanji/com/pojo/vo/Road.java
+14
-0
RunningStatusVO.java
.../src/main/java/net/wanji/com/pojo/vo/RunningStatusVO.java
+22
-0
ScheduleSendVO.java
...e/src/main/java/net/wanji/com/pojo/vo/ScheduleSendVO.java
+79
-0
SchemePhaseLightsVO.java
.../main/java/net/wanji/com/pojo/vo/SchemePhaseLightsVO.java
+21
-0
SchemeSendVO.java
...ice/src/main/java/net/wanji/com/pojo/vo/SchemeSendVO.java
+186
-0
CommonService.java
...ce/src/main/java/net/wanji/com/service/CommonService.java
+37
-0
BeanMarkService.java
...ava/net/wanji/com/service/controller/BeanMarkService.java
+9
-0
ControlCommandService.java
...t/wanji/com/service/controller/ControlCommandService.java
+93
-0
SignalStatusService.java
...net/wanji/com/service/controller/SignalStatusService.java
+27
-0
StaticInfoService.java
...a/net/wanji/com/service/controller/StaticInfoService.java
+31
-0
DTControlCommandServiceImpl.java
...rvice/controller/dt/impl/DTControlCommandServiceImpl.java
+65
-0
DTSignalStatusServiceImpl.java
...service/controller/dt/impl/DTSignalStatusServiceImpl.java
+42
-0
DTStaticInfoServiceImpl.java
...m/service/controller/dt/impl/DTStaticInfoServiceImpl.java
+68
-0
ProtocolConversionService.java
...wanji/com/service/protocol/ProtocolConversionService.java
+18
-0
DTProtocolConversionServiceImpl.java
...ice/protocol/dt/impl/DTProtocolConversionServiceImpl.java
+15
-0
application-dev.yml
...munication-service/src/main/resources/application-dev.yml
+57
-0
application.yml
...-communication-service/src/main/resources/application.yml
+69
-0
ManufacturerInfoMapper.xml
...vice/src/main/resources/mapper/ManufacturerInfoMapper.xml
+89
-0
TCrossInfoMapper.xml
...on-service/src/main/resources/mapper/TCrossInfoMapper.xml
+211
-0
No files found.
pom.xml
View file @
1ded3369
...
...
@@ -34,6 +34,7 @@
<module>
wj-databus
</module>
<module>
wj-identity
</module>
<module>
wj-portal
</module>
<module>
signal-communication-service
</module>
</modules>
<!-- 依赖版本 -->
...
...
signal-communication-service/pom.xml
0 → 100644
View file @
1ded3369
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<parent>
<groupId>
net.wanji
</groupId>
<artifactId>
traffic-signal-platform
</artifactId>
<version>
0.2.1
</version>
</parent>
<artifactId>
signal-communication-service
</artifactId>
<name>
signal-communication-service
</name>
<properties>
<java.version>
1.8
</java.version>
<mybatis.generator.version>
1.3.2
</mybatis.generator.version>
<mysql.connector.version>
5.1.41
</mysql.connector.version>
</properties>
<dependencies>
<dependency>
<groupId>
net.wanji
</groupId>
<artifactId>
signal-feign-service
</artifactId>
<version>
0.0.2
</version>
</dependency>
<dependency>
<groupId>
net.wanji
</groupId>
<artifactId>
wj-common
</artifactId>
<version>
0.0.2
</version>
<exclusions>
<exclusion>
<artifactId>
mybatis
</artifactId>
<groupId>
org.mybatis
</groupId>
</exclusion>
<exclusion>
<artifactId>
jsqlparser
</artifactId>
<groupId>
com.github.jsqlparser
</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>
net.wanji
</groupId>
<artifactId>
wj-databus
</artifactId>
<version>
0.0.1
</version>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-websocket
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-web
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-freemarker
</artifactId>
</dependency>
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
druid-spring-boot-starter
</artifactId>
</dependency>
<dependency>
<groupId>
org.projectlombok
</groupId>
<artifactId>
lombok
</artifactId>
</dependency>
<dependency>
<groupId>
javax.el
</groupId>
<artifactId>
javax.el-api
</artifactId>
</dependency>
<!-- apache commons-->
<dependency>
<groupId>
commons-io
</groupId>
<artifactId>
commons-io
</artifactId>
</dependency>
<dependency>
<groupId>
commons-collections
</groupId>
<artifactId>
commons-collections
</artifactId>
</dependency>
<dependency>
<groupId>
commons-beanutils
</groupId>
<artifactId>
commons-beanutils
</artifactId>
</dependency>
<dependency>
<groupId>
org.apache.commons
</groupId>
<artifactId>
commons-lang3
</artifactId>
</dependency>
<!-- redis -->
<dependency>
<groupId>
redis.clients
</groupId>
<artifactId>
jedis
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-data-redis
</artifactId>
</dependency>
<!-- ws rs -->
<dependency>
<groupId>
jakarta.ws.rs
</groupId>
<artifactId>
jakarta.ws.rs-api
</artifactId>
</dependency>
<!-- pagehelper -->
<dependency>
<groupId>
com.github.pagehelper
</groupId>
<artifactId>
pagehelper-spring-boot-starter
</artifactId>
</dependency>
<!-- Hutool -->
<dependency>
<groupId>
cn.hutool
</groupId>
<artifactId>
hutool-all
</artifactId>
</dependency>
<!-- Gson -->
<dependency>
<groupId>
com.google.code.gson
</groupId>
<artifactId>
gson
</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<!-- 编译插件 -->
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-compiler-plugin
</artifactId>
<configuration>
<source>
${maven.compiler.source}
</source>
<target>
${maven.compiler.target}
</target>
<compilerArguments>
<encoding>
${project.build.sourceEncoding}
</encoding>
</compilerArguments>
</configuration>
</plugin>
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-surefire-plugin
</artifactId>
<configuration>
<skip>
true
</skip>
</configuration>
</plugin>
<plugin>
<groupId>
org.mybatis.generator
</groupId>
<artifactId>
mybatis-generator-maven-plugin
</artifactId>
<version>
${mybatis.generator.version}
</version>
<configuration>
<configurationFile>
${basedir}/src/main/resources/mybatis-generator/generatorConfig.xml
</configurationFile>
<verbose>
true
</verbose>
<overwrite>
true
</overwrite>
</configuration>
<dependencies>
<!-- 数据库驱动 -->
<dependency>
<groupId>
mysql
</groupId>
<artifactId>
mysql-connector-java
</artifactId>
<version>
${mysql.connector.version}
</version>
</dependency>
</dependencies>
</plugin>
<!-- swagger 导出配置 -->
<plugin>
<groupId>
io.github.swagger2markup
</groupId>
<artifactId>
swagger2markup-maven-plugin
</artifactId>
<version>
1.3.3
</version>
<configuration>
<swaggerInput>
http://10.102.1.182:30003/utcsystem/v2/api-docs
</swaggerInput>
<outputDir>
src/docs/asciidoc/generated
</outputDir>
<config>
<swagger2markup.markupLanguage>
ASCIIDOC
</swagger2markup.markupLanguage>
</config>
</configuration>
</plugin>
<plugin>
<groupId>
org.asciidoctor
</groupId>
<artifactId>
asciidoctor-maven-plugin
</artifactId>
<version>
1.5.6
</version>
<configuration>
<sourceDirectory>
src/docs/asciidoc/generated
</sourceDirectory>
<outputDirectory>
src/docs/asciidoc/html
</outputDirectory>
<backend>
html
</backend>
<sourceHighlighter>
coderay
</sourceHighlighter>
<attributes>
<toc>
left
</toc>
</attributes>
</configuration>
</plugin>
<!-- mvn clean package -Dmaven.test.skip=true jib:build -DsendCredentialsOverHttp=true -->
<!-- 使用jib 无需深入学习docker, 无需编写Dockerfile -->
<plugin>
<groupId>
com.google.cloud.tools
</groupId>
<artifactId>
jib-maven-plugin
</artifactId>
<version>
2.5.2
</version>
<!-- 将jib与mvn构建的生命周期绑定 -->
<executions>
<execution>
<id>
build-image
</id>
<phase>
install
</phase>
<goals>
<goal>
build
</goal>
</goals>
</execution>
</executions>
<configuration>
<!--from节点用来设置镜像的基础镜像,相当于Docerkfile中的FROM关键字-->
<from>
<!--使用harbor上的openjdk镜像-->
<image>
${harbor.ip.port}/xinkong/openjdk:8-alpine3.9
</image>
<!--harbor服务器的登录信息-->
<auth>
<username>
admin
</username>
<password>
Wanji300552
</password>
</auth>
</from>
<to>
<image>
${harbor.ip.port}/xinkong/${artifactId}:${version}
</image>
<auth>
<username>
admin
</username>
<password>
Wanji300552
</password>
</auth>
</to>
<container>
<!--配置jvm虚拟机参数-->
<jvmFlags>
<jvmFlag>
-Xms512m
</jvmFlag>
<jvmFlag>
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=15116
</jvmFlag>
</jvmFlags>
<!--配置使用的时区-->
<environment>
<TZ>
Asia/Shanghai
</TZ>
<spring.profiles.active>
dev
</spring.profiles.active>
</environment>
<!--要暴露的端口-->
<ports>
<port>
32001
</port>
<port>
15116
</port>
</ports>
<!-- <creationTime>2022-10-14T10:08:59.304+08:00</creationTime>-->
<creationTime>
${maven.build.timestamp}
</creationTime>
<mainClass>
net.wanji.web.SignalApplication
</mainClass>
</container>
<!--可以进行HTTP-->
<allowInsecureRegistries>
true
</allowInsecureRegistries>
</configuration>
</plugin>
</plugins>
</build>
</project>
signal-communication-service/src/main/assembly/package.xml
0 → 100644
View file @
1ded3369
<assembly
xmlns=
"http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd"
>
<id>
1.0
</id>
<formats>
<format>
tar.gz
</format>
<format>
dir
</format>
</formats>
<includeBaseDirectory>
true
</includeBaseDirectory>
<fileSets>
<!-- for bin -->
<fileSet>
<directory>
src/main/bin
</directory>
<includes>
<include>
*.*
</include>
</includes>
<directoryMode>
775
</directoryMode>
<outputDirectory>
bin/
</outputDirectory>
</fileSet>
<!-- for configs -->
<fileSet>
<directory>
src/main/resources
</directory>
<includes>
<include>
*.yml
</include>
<include>
*.xml
</include>
</includes>
<outputDirectory>
/
</outputDirectory>
</fileSet>
<!-- for jar -->
<fileSet>
<directory>
${project.build.directory}
</directory>
<outputDirectory>
/
</outputDirectory>
<includes>
<include>
*.jar
</include>
</includes>
</fileSet>
</fileSets>
<!-- for lib -->
<dependencySets>
<dependencySet>
<outputDirectory>
lib/
</outputDirectory>
<scope>
runtime
</scope>
<excludes>
<exclude>
${groupId}:${artifactId}
</exclude>
</excludes>
</dependencySet>
</dependencySets>
</assembly>
signal-communication-service/src/main/java/net/wanji/com/CommunicationApplication.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
;
import
net.wanji.com.netty.NettyServer
;
import
org.mybatis.spring.annotation.MapperScan
;
import
org.springframework.boot.CommandLineRunner
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.scheduling.annotation.EnableScheduling
;
import
org.springframework.transaction.annotation.EnableTransactionManagement
;
/**
* @author duanruiming
* @date 2023/05/08 13:37
*/
@SpringBootApplication
(
scanBasePackages
=
{
"net.wanji.com"
,
"net.wanji.databus"
,
"net.wanji.common"
})
@MapperScan
(
basePackages
=
{
"net.wanji.com.mapper"
,
"net.wanji.databus.dao.mapper"
})
@EnableTransactionManagement
@EnableScheduling
@SuppressWarnings
(
"all"
)
public
class
CommunicationApplication
implements
CommandLineRunner
{
public
static
void
main
(
String
[]
args
)
{
SpringApplication
.
run
(
CommunicationApplication
.
class
,
args
);
}
@Override
public
void
run
(
String
...
args
)
throws
Exception
{
NettyServer
.
start
(
3000
);
}
}
signal-communication-service/src/main/java/net/wanji/com/cache/CrossInfoCache.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
cache
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.com.mapper.TCrossInfoMapper
;
import
net.wanji.com.pojo.po.CrossInfoPO
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.CommandLineRunner
;
import
org.springframework.stereotype.Component
;
import
java.util.Collections
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
* @author duanruiming
* @date 2023/05/09 14:30
*/
@Slf4j
@Component
public
class
CrossInfoCache
implements
CommandLineRunner
{
@Autowired
private
TCrossInfoMapper
crossInfoMapper
;
private
static
final
Map
<
String
,
CrossInfoPO
>
crossInfoMap
=
new
HashMap
<>();
public
Map
<
String
,
CrossInfoPO
>
getCrossInfoCache
()
{
if
(!
crossInfoMap
.
isEmpty
())
{
return
crossInfoMap
;
}
return
Collections
.
EMPTY_MAP
;
}
public
CrossInfoPO
getCrossInfo
(
String
key
)
{
if
(!
crossInfoMap
.
isEmpty
())
{
return
crossInfoMap
.
get
(
key
);
}
return
null
;
}
@Override
public
void
run
(
String
...
args
)
throws
Exception
{
init
();
}
private
void
init
()
{
List
<
CrossInfoPO
>
crossInfoPOS
=
crossInfoMapper
.
selectAll
();
for
(
CrossInfoPO
crossInfoPO
:
crossInfoPOS
)
{
String
key
=
StringUtils
.
join
(
"/"
,
crossInfoPO
.
getIp
(),
":"
,
crossInfoPO
.
getPort
());
crossInfoMap
.
put
(
key
,
crossInfoPO
);
}
}
}
signal-communication-service/src/main/java/net/wanji/com/cache/SignalCommandInterfaceCache.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
cache
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.com.service.controller.BeanMarkService
;
import
net.wanji.com.service.controller.ControlCommandService
;
import
net.wanji.com.service.controller.SignalStatusService
;
import
net.wanji.com.service.controller.StaticInfoService
;
import
net.wanji.com.common.enums.SignalInterfaceTypeEnum
;
import
net.wanji.common.framework.spring.ServiceBeanContext
;
import
org.springframework.boot.CommandLineRunner
;
import
org.springframework.stereotype.Component
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
* @author duanruiming
* @date 2023/05/08 11:05
*/
@Slf4j
@Component
public
class
SignalCommandInterfaceCache
implements
CommandLineRunner
{
private
final
Map
<
String
,
BeanMarkService
>
controlCommandInterfaceMap
=
new
HashMap
<>();
/**
* 获取缓存
* key:主题名/类名,value: bean
*
* @return
*/
public
Map
<
String
,
BeanMarkService
>
getCache
()
throws
Exception
{
if
(
controlCommandInterfaceMap
.
isEmpty
())
{
throw
new
Exception
(
"SignalCommandInterfaceCache"
);
}
return
controlCommandInterfaceMap
;
}
@Override
public
void
run
(
String
...
args
)
throws
Exception
{
Map
<
String
,
BeanMarkService
>
map
=
ServiceBeanContext
.
getInterfaceBeanMap
(
BeanMarkService
.
class
);
for
(
Map
.
Entry
<
String
,
BeanMarkService
>
item
:
map
.
entrySet
())
{
BeanMarkService
bean
=
item
.
getValue
();
String
beanMark
=
bean
.
getBeanMark
();
String
type
=
""
;
if
(
bean
instanceof
ControlCommandService
)
{
type
=
SignalInterfaceTypeEnum
.
CONTROL
.
getCode
();
}
if
(
bean
instanceof
SignalStatusService
)
{
type
=
SignalInterfaceTypeEnum
.
STATUS
.
getCode
();
}
if
(
bean
instanceof
StaticInfoService
)
{
type
=
SignalInterfaceTypeEnum
.
STATIC
.
getCode
();
}
controlCommandInterfaceMap
.
put
(
beanMark
.
concat
(
type
),
bean
);
}
}
/**
* 通过beanMark获取接口实现类
*
* @param beanMark
* @return
*/
public
BeanMarkService
getService
(
String
beanMark
)
{
if
(!
controlCommandInterfaceMap
.
isEmpty
())
{
return
controlCommandInterfaceMap
.
get
(
beanMark
);
}
return
null
;
}
}
signal-communication-service/src/main/java/net/wanji/com/cache/netty/NettyMessageCache.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
cache
.
netty
;
import
net.wanji.com.pojo.netty.MessageResultPojo
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
* @author duanruiming
* @date 2023/05/08 14:07
*/
public
class
NettyMessageCache
{
public
static
final
Map
<
String
,
MessageResultPojo
>
NETTY_MESSAGE_RESULT_MAP
=
new
HashMap
<>();
}
signal-communication-service/src/main/java/net/wanji/com/common/constants/Constants.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
common
.
constants
;
import
org.springframework.stereotype.Component
;
import
java.sql.Connection
;
import
java.util.ArrayList
;
import
java.util.List
;
@Component
@SuppressWarnings
(
"all"
)
public
class
Constants
{
/**
* 系统缩写
*/
public
static
final
String
SYSTEM_ABBR
=
"UTC"
;
/**
* 分隔符:下划线
**/
public
static
final
String
SEPARATOR_UNDER_LINE
=
"_"
;
/**
* 分隔符:逗号
**/
public
static
final
String
SEPARATOR_COMMA
=
","
;
/**
* 分隔符:减号
**/
public
static
final
String
SEPARATOR_MINUS
=
"-"
;
/**
* 分隔符:冒号
**/
public
static
final
String
SEPARATOR_COLON
=
":"
;
/**
* 海康返回成功码
*/
public
static
final
Integer
HK_SUCCESS_CODE
=
0
;
/**
* 海康返回码的 key
*/
public
static
final
String
HK_CODE_KEY
=
"code"
;
/**
* 海康返回成功码
*/
public
static
final
String
HK_SUCCESS_STRING_CODE
=
"0"
;
/**
* 失败-false
*/
public
static
final
int
FALSE
=
0
;
/**
* 成功-true
*/
public
static
final
int
TRUE
=
1
;
/**
* 相位(灯态)锁定
*/
public
static
final
Integer
LOCK_RUNNING_CONTROL
=
12
;
/**
* 相位(灯态)解锁: 0-多时段控制模式
*/
public
static
final
Integer
UNLOCK_RUNNING_CONTROL
=
13
;
/**
* 恢复正常方案: 0-多时段控制模式
*/
public
static
final
Integer
NORMAL_RUNNING_CONTROL
=
0
;
/**
* 关灯
*/
public
static
final
Integer
CLOSE_LIGHT_CONTROL
=
1
;
/**
* 黄闪
*/
public
static
final
Integer
YELLOW_LIGHT_CONTROL
=
2
;
/**
* 手动全红
*/
public
static
final
Integer
ALL_RED_CONTROL
=
3
;
/**
* 定周期控制
*/
public
static
final
Integer
FIXED_CYCLE_MODE
=
4
;
/**
* 步进控制
*/
public
static
final
Integer
STEP_CONTROL
=
10
;
/**
* 取消步进
*/
public
static
final
Integer
CANCEL_STEP_CONTROL
=
11
;
/*记录当前用户*/
public
static
ThreadLocal
<
String
>
current_user_id
=
ThreadLocal
.
withInitial
(()
->
""
);
//gisc-develop 工作流事务全局标识,默认不开启
public
static
ThreadLocal
<
Boolean
>
OPEN_GLOBAL_TRANSACTION
=
ThreadLocal
.
withInitial
(()
->
Boolean
.
FALSE
);
//gisc-develop D2A事务实现,db操作临时conn存放
public
static
ThreadLocal
<
List
<
Connection
>>
DB_CONNS
=
ThreadLocal
.
withInitial
(
ArrayList:
:
new
);
//日志消息名称关键字
public
static
final
String
BP_LOG
=
"log"
;
//数据扩展表关键字
public
static
final
String
TABLE_RELATION
=
"_relation"
;
public
final
class
MessageES
{
public
static
final
String
MESSAGE_HISTORY
=
"message_history"
;
public
static
final
String
MESSAGE_CONSUME_HISTORY
=
"message_consume_history"
;
public
static
final
String
MESSAGE_FILTER_HISTORY
=
"message_filter_history"
;
}
public
final
class
WebsocketMessage
{
public
static
final
String
NEW_UNREAD_MESSAGE
=
""
;
public
static
final
String
GET_UNREAD_COUNT
=
""
;
public
static
final
String
GET_READ_MESSAGE
=
""
;
public
static
final
String
GET_UNREAD_MESSAGE
=
""
;
}
public
final
class
igniteCacheName
{
//bp design 模块缓存名称
public
static
final
String
BP_DESIGN_CACHE
=
"gisc-portal-cache-name"
;
public
static
final
String
BP_GATEWAY_CACHE
=
"gisc-gateway-cache-name"
;
public
static
final
String
GATEWAY_CACHE
=
"gatewayCache"
;
public
static
final
String
API_RESTFUL_CACHE
=
"apiRestfulCache"
;
public
static
final
String
A2A_RESTFUL_CACHE
=
"a2aRestfulCache"
;
public
static
final
String
D2A_TABLE_RESTFUL_CACHE
=
"d2aTableRestfulCache"
;
public
static
final
String
BP_ROADNET_CACHE
=
"gisc-roadnet-cache-name"
;
}
public
final
class
Env
{
public
static
final
String
BASE_HOME
=
""
;
public
static
final
String
WORKFLOW_HOME
=
"configs/workflow/"
;
}
// RepoModuleType 分类
public
final
class
RepoModuleTypeType
{
public
static
final
String
RULE
=
"rule"
;
public
static
final
String
COMMON
=
"common"
;
public
static
final
String
APPLICATION
=
"application"
;
}
public
final
class
MqTopic
{
public
static
final
String
JAVA_MODULE_OFFLINE_TOPIC
=
"javaModuleOffline"
;
public
static
final
String
JAVA_MODULE_ONLINE_TOPIC
=
"javaModuleOnline"
;
}
public
final
class
MqKey
{
}
public
final
class
ImportExport
{
public
static
final
String
IMPORT
=
"import"
;
public
static
final
String
EXPORT
=
"export"
;
}
public
final
class
DevExport
{
public
static
final
String
MAN_DEV_APP
=
"MAN_DEV_APP.csv"
;
public
static
final
String
MAN_DEV_APPTHEME
=
"MAN_DEV_APPTHEME.csv"
;
public
static
final
String
MAN_APP_TYPE
=
"MAN_APP_TYPE.csv"
;
public
static
final
String
MAN_GW_D2A_DATABASE
=
"MAN_GW_D2A_DATABASE.csv"
;
public
static
final
String
MAN_DEV_API_RESTFUL
=
"MAN_DEV_API_RESTFUL.csv"
;
public
static
final
String
MAN_GW_D2A_TABLE_RESTFUL
=
"MAN_GW_D2A_TABLE_RESTFUL.csv"
;
public
static
final
String
MAN_DEV_RESTFUL
=
"MAN_DEV_RESTFUL.csv"
;
public
static
final
String
MAN_GW_D2A_TABLE
=
"MAN_GW_D2A_TABLE.csv"
;
public
static
final
String
MAN_GW_D2A_TABLE_FIELDS
=
"MAN_GW_D2A_TABLE_FIELDS.csv"
;
public
static
final
String
MAN_DEV_DATA_DICT_CONTENT
=
"MAN_DEV_DATA_DICT_CONTENT.csv"
;
public
static
final
String
MAN_DEV_DATA_DICT_TYPE
=
"MAN_DEV_DATA_DICT_TYPE.csv"
;
public
static
final
String
MAN_GW_M2A_MAIL
=
"MAN_GW_M2A_MAIL.csv"
;
public
static
final
String
MAN_REPO_MODULE_TYPE
=
"MAN_REPO_MODULE_TYPE.csv"
;
public
static
final
String
MAN_REPO_MODULE
=
"MAN_REPO_MODULE.csv"
;
public
static
final
String
MAN_DEV_MODULE
=
"MAN_DEV_MODULE.csv"
;
public
static
final
String
MAN_MSG_TOPIC
=
"MAN_MSG_TOPIC.csv"
;
public
static
final
String
MAN_MSG_ROUTE
=
"MAN_MSG_ROUTE.csv"
;
public
static
final
String
MAN_MSG_SUBSCRIBE
=
"MAN_MSG_SUBSCRIBE.csv"
;
public
static
final
String
MAN_MSG_FILTER_ITEM
=
"MAN_MSG_FILTER_ITEM.csv"
;
public
static
final
String
CLI_IC_APP_BUSINESS_ACCOUNT
=
"CLI_IC_APP_BUSINESS_ACCOUNT.csv"
;
public
static
final
String
CLI_IC_ORGANIZATION
=
"CLI_IC_ORGANIZATION.csv"
;
public
static
final
String
CLI_IC_ROLE
=
"CLI_IC_ROLE.csv"
;
public
static
final
String
CLI_IC_ROLE_BUSINESSACCOUNT_RLAT
=
"CLI_IC_ROLE_BUSINESSACCOUNT_RLAT.csv"
;
public
static
final
String
CLI_DEV_MENU
=
"CLI_DEV_MENU.csv"
;
public
static
final
String
MAN_MSG_TOPIC_FILTER_ITEM_RLAT
=
"MAN_MSG_TOPIC_FILTER_ITEM_RLAT.csv"
;
public
static
final
String
MAN_DEV_PLUGIN_PARAM
=
"MAN_DEV_PLUGIN_PARAM.csv"
;
}
public
final
class
BpmExport
{
//导出流程定义表
public
static
final
String
WORKFLOW
=
"MAN_BPM_WORKFLOW.csv"
;
//导出流程实例表
public
static
final
String
WORKFLOW_INST
=
"MAN_BPM_WORKFLOW_INST.csv"
;
//导出流程任务表
public
static
final
String
WORKFLOW_INST_TASK
=
"MAN_BPM_WORKFLOW_TASK.csv"
;
//导出流程任务处理人表
public
static
final
String
WORKFLOW_INST_TASK_PERSON
=
"MAN_BPM_WORKFLOW_TASK_PERSON.csv"
;
//导出流程任务会签表
public
static
final
String
WORKFLOW_INST_TASK_SIGN
=
"MAN_BPM_WORKFLOW_TASK_COUNTERSIGN.csv"
;
//导出流程通知表
public
static
final
String
WORKFLOW_NOTICE
=
"MAN_BPM_WORKFLOW_NOTICE.csv"
;
//导出流程分类表
public
static
final
String
WORKFLOW_TYPE
=
"MAN_BPM_WORKFLOW_TYPE.csv"
;
//导出流程参数表
public
static
final
String
WORKFLOW_BPM_VAR
=
"MAN_BPM_VAR.csv"
;
//导出流程规则表
public
static
final
String
WORKFLOW_BPM_RULE
=
"MAN_BPM_RULE.csv"
;
//导出流程节点表
public
static
final
String
WORKFLOW_BPM_PLUGIN_PARAM
=
"MAN_BPM_PLUGIN_PARAM.csv"
;
//导出流程邮件日志表
public
static
final
String
WORKFLOW_MAIL_LOG
=
"MAN_BPM_MAIL_LOG.csv"
;
//导出流程原因表
public
static
final
String
WORKFLOW_LEAVE_INFO
=
"MAN_BPM_LEAVE_INFO.csv"
;
//导出流程form表单表
public
static
final
String
WORKFLOW_BPM_FORM
=
"MAN_BPM_FORM.csv"
;
//导出页面表
public
static
final
String
PAGE_WEB
=
"CLI_DEV_WEB_PAGE.csv"
;
//导出组件表
public
static
final
String
COMPONENT
=
"CLI_DEV_COMPONENT.csv"
;
//导出组件组表
public
static
final
String
COMPONENT_GROUP
=
"CLI_DEV_COMPONENT_GROUP.csv"
;
//导出组件版本表
public
static
final
String
COMPONENT_VERSION
=
"CLI_DEV_COMPONENT_VERSION.csv"
;
}
/**
* 系统基础服务路径
*/
public
final
class
RestPathPrefix
{
public
static
final
String
PREFIX
=
"bp/"
;
public
static
final
String
DEVELOP_PREFIX
=
"develop/"
;
public
static
final
String
LOG_PREFIX
=
"log/"
;
public
static
final
String
DESIGN_PREFIX
=
"design/"
;
public
static
final
String
MODEL_CONSOLE
=
"design/console/"
;
public
static
final
String
MODEL_IDENTITYAUTH
=
"bp/auth/"
;
public
static
final
String
MODEL_RESTFUL
=
"develop/restful/"
;
public
static
final
String
MODEL_IDENTITY
=
"bp/identity/"
;
public
static
final
String
MODEL_MSP
=
"bp/msp/"
;
public
static
final
String
MODEL_DATAMANAGE
=
"design/datamanage/"
;
public
static
final
String
MODEL_SGW
=
"design/sgw/"
;
public
static
final
String
MODEL_DISPLAYCENTER
=
"design/displaycenter/"
;
public
static
final
String
MODEL_TASKSCHEDULE
=
"design/taskschedule/"
;
public
static
final
String
MODEL_WEB
=
"design/web/"
;
public
static
final
String
FRONT_DEVELOP
=
"design/frontdevelop/"
;
public
static
final
String
MODEL_BPM_MANAGER
=
"design/bpm/"
;
public
static
final
String
MODEL_COMMON
=
"design/common/"
;
public
static
final
String
MODEL_PROCESS_QUERY
=
"develop/processquery/"
;
public
static
final
String
MODEL_MESSAGECENTER
=
"design/messagecenter/"
;
public
static
final
String
MODEL_DEV
=
"design/develop/"
;
public
static
final
String
MODEL_RULE
=
"design/rule/"
;
public
static
final
String
MODEL_DATA_CHECK
=
"design/datacheck/"
;
public
static
final
String
MODEL_TOOLS
=
"design/tools/"
;
public
static
final
String
MODEL_CONFIG_CENTER
=
"design/configcenter/"
;
public
static
final
String
MODEL_APPMANAGE
=
"design/appmanage/"
;
public
static
final
String
MODEL_COMPONENT
=
"design/component/"
;
public
static
final
String
MODEL_PORTAL
=
"design/portal/"
;
public
static
final
String
MODEL_LOG
=
"log/logcenter/"
;
public
static
final
String
MODEL_OPERATION_MONITOR
=
"design/operationmonitor/"
;
public
static
final
String
MODEL_SYSTEM_SETTING
=
"design/systemsetting/"
;
public
static
final
String
MODEL_STATISTICS
=
"bp/statistics/"
;
public
static
final
String
MODEL_IM
=
"bp/im/"
;
public
static
final
String
MODEL_DEVICE
=
"bp/things/"
;
public
static
final
String
MODEL_IM_USER
=
"bp/user/"
;
public
static
final
String
MODEL_IM_MESSAGE
=
"bp/message/"
;
public
static
final
String
MODEL_IM_GROUP
=
"bp/group/"
;
public
static
final
String
MODEL_IM_CHANNEL
=
"bp/channel/"
;
public
static
final
String
MODEL_IM_ORGANIZATION
=
"bp/organization/"
;
public
static
final
String
MODEL_IM_ORGAN_USER
=
"bp/organuser/"
;
public
static
final
String
MODEL_IM_STATISTICS
=
"bp/statistics"
;
public
static
final
String
MODEL_IM_TASK
=
"bp/task/"
;
//数据源
public
static
final
String
MODEL_DATASOURCE
=
"develop/datasource/"
;
//数据资源
public
static
final
String
MODEL_RESOURCE
=
"develop/resource/"
;
//数据资源管理
public
static
final
String
MODEL_RESOURCE_DATA
=
"develop/resourcedata/"
;
//基础数据
public
static
final
String
MODEL_BASE_DATA
=
"design/basedata/"
;
//服务接口
public
static
final
String
MODEL_DEV_SERVICE
=
"develop/service/"
;
//基础设置
public
static
final
String
MODEL_CONFIG_DATA
=
"design/config/"
;
//MSP
public
static
final
String
MODEL_MSP_STYLECONFIG
=
"bp/msp/config/"
;
//geoServer
public
static
final
String
GEOSERVER
=
"geoserver/"
;
/**
* msp相关path定义
*/
public
static
final
String
MODEL_MSP_SERVICE
=
"bp/msp/service/"
;
public
static
final
String
MODEL_MSP_RESOURCE
=
"bp/msp/resource/"
;
public
static
final
String
MODEL_MSP_CONFIG
=
"bp/msp/config/"
;
public
static
final
String
MODEL_MSP_TOOL
=
"bp/msp/tool/"
;
public
static
final
String
MODEL_MSP_SCENSE
=
"bp/msp/sense/"
;
/***
* 路网api定义
*/
public
static
final
String
ROADNET_API
=
"api/roadnet/"
;
/**
* 设备信息
*/
public
static
final
String
DEVICE_API
=
"api/device/"
;
}
public
final
class
ServiceDevPathPrefix
{
/**
* 数据库接口
*/
public
static
final
String
DEV_DB_INTERFACE
=
"sgw/dbInterface"
;
/**
* 服务接口接口
*/
public
static
final
String
DEV_API_INTERFACE
=
"sgw/apiInterface"
;
/**
* dev 注册服务
*/
public
static
final
String
DEV_SGW_SERVICE
=
"develop/sgw/serviceInterface/"
;
/**
* vt 矢量栅格服务
*/
public
static
final
String
DEV_VT_SERVICE
=
"develop/vt/"
;
}
/**
* 数据能力标签,元数据驱动的核心代码
*/
public
final
class
DataTag
{
/**
* geometry
* 空间表
* --
* export
* 导出
* --
* nest
* 套和
* --
* hook
* 挂接
* --
* cache
* 缓存
* --
* publish
* 发布
* --
* edit
*/
public
static
final
String
DATA_TAG_EXPORT
=
"export"
;
public
static
final
String
DATA_TAG_GEOMETRY
=
"geometry"
;
public
static
final
String
DATA_TAG_NEST
=
"nest"
;
public
static
final
String
DATA_TAG_HOOK
=
"hook"
;
public
static
final
String
DATA_TAG_CACHE
=
"cache"
;
public
static
final
String
DATA_TAG_PUBLISH
=
"publish"
;
public
static
final
String
DATA_TAG_EDIT
=
"edit"
;
}
/**
* Restful 对外的静态变量
*/
public
final
class
JsonView
{
public
static
final
String
STATUS_SUCCESS
=
"success"
;
public
static
final
String
STATUS_FAIL
=
"fail"
;
public
static
final
String
MESSAGE_FAIL
=
"操作失败"
;
public
static
final
String
MESSAGE_SUCCESS
=
"操作成功"
;
public
static
final
String
MESSAGE_PARAM_ERROR
=
"参数错误"
;
public
static
final
String
MESSAGE_FROMAT_ERROR
=
"请求格式错误"
;
public
static
final
String
MESSAGE_GET_PARAM_ERROR
=
"GET请求参数错误,注:暂不支持对象嵌套及数组"
;
public
static
final
String
MESSAGE_LOGIN_SUCCESS
=
"登录成功"
;
public
static
final
String
DELETE_ERROR_MSG
=
"表单【%s】已被流程【%s】使用"
;
}
/**
* 接口服务参数
*/
public
static
class
ServiceConstants
{
public
static
final
String
API_URL
=
"url"
;
public
static
final
String
API_ACCESS_METHOD
=
"method"
;
public
static
final
String
API_ACCESS_GET
=
"get"
;
public
static
final
String
API_ACCESS_POST
=
"post"
;
public
static
final
String
API_ACCESS_PUT
=
"put"
;
public
static
final
String
API_ACCESS_DELETE
=
"delete"
;
public
static
final
String
API_BODY
=
"body"
;
public
static
final
String
API_HEADER
=
"header"
;
public
static
final
String
API_QUERY
=
"query"
;
public
static
final
String
API_PATH
=
"pathParam"
;
}
/**
* @Description: 网关表,类型相关参数
* @return
* @Author mapabc8
* @Date 2020/2/14 10:10
**/
public
static
class
ServiceType
{
public
static
final
String
SERVICE_D2A
=
"d2a"
;
public
static
final
String
SERVICE_A2A
=
"a2a"
;
public
static
final
String
SERVICE_WEB_SERVICE
=
"webservice"
;
public
static
final
String
SERVICE_M2A
=
"m2a"
;
public
static
final
String
SERVICE_ORCHESTRATION
=
"orchestration"
;
public
static
final
String
SERVICE_DEVELOP
=
"develop"
;
public
static
final
String
SERVICE_BASIC
=
"basic"
;
public
static
final
String
SERVICE_BUSINESS
=
"business"
;
}
public
static
class
AppType
{
public
static
final
String
APP_REPOSITORY
=
"repository"
;
public
static
final
String
APP_EXTERNAL
=
"external"
;
public
static
final
String
APP_ORCHESTRATION
=
"orchestration"
;
public
static
final
String
APP_DEVELOP
=
"develop"
;
public
static
final
String
APP_INTERNAL
=
"internal"
;
}
/*
* apiType
* api 类型
*/
public
static
class
RestfulApiType
{
//内部系统
public
static
final
String
SERVICE_INSIDE
=
"inside"
;
//外部系统
public
static
final
String
SERVICE_OUTSIDE
=
"outside"
;
}
/*
* apiParam
* api 参数
*/
public
static
class
ApiParam
{
// mock
public
static
final
String
MOCK
=
"mock"
;
public
static
final
String
UNMOCK
=
"unmock"
;
}
/*
* spring application name
*/
public
static
class
applicationName
{
public
static
final
String
BP_RESTFUL
=
"gisc-restful"
;
public
static
final
String
BP_GATEWAY
=
"gisc-gateway"
;
public
static
final
String
BP_DESIGN
=
"gisc-portal"
;
public
static
final
String
BP_DEVELOP
=
"gisc-develop"
;
public
static
final
String
BP_IDENTITY
=
"gisc-identity"
;
public
static
final
String
BP_MSP
=
"gisc-msp"
;
}
/**
* 缓存名称
*/
public
final
class
Cache
{
public
static
final
String
USER
=
"user"
;
public
static
final
String
ONLINE_USER
=
"online_user"
;
public
static
final
String
ONLINE_MOBILE_USER
=
"online_mobile_user"
;
public
static
final
String
SYSTEM_SESSION
=
"system_session"
;
public
static
final
String
LOGIN_CACHE
=
"login_cache"
;
public
static
final
String
ETL_CACHE
=
"etl_workflow_cache"
;
public
static
final
String
RE_CACHE
=
"re_workflow_cache"
;
public
static
final
String
RE_CACHE_TOPIC
=
"re_workflow_cache_topic"
;
}
public
final
static
class
SystemParam
{
/**
* 逗号分隔符
*/
public
static
String
COMMA_SPLIT
=
","
;
/**
* 冒号分隔符
*/
public
static
String
COLON_SPLIT
=
":"
;
/**
* 空Json串
*/
public
static
String
BLANK_JSON_STRING
=
"{}"
;
}
/**
* mysql 的字段类型
*/
public
final
static
class
MysqlColumn
{
public
final
static
String
YEAR
=
"YEAR"
;
public
final
static
String
DATE
=
"DATE"
;
public
final
static
String
DATETIME
=
"DATETIME"
;
public
final
static
String
TIMESTAMP
=
"TIMESTAMP"
;
public
final
static
String
BINARY
=
"BINARY"
;
public
final
static
String
VARBINARY
=
"VARBINARY"
;
public
final
static
String
TINYINT
=
"TINYINT"
;
public
final
static
String
SMALLINT
=
"SMALLINT"
;
public
final
static
String
MEDIUMINT
=
"MEDIUMINT"
;
public
final
static
String
INT
=
"INT"
;
public
final
static
String
BIGINT
=
"BIGINT"
;
public
final
static
String
BIT
=
"BIT"
;
public
final
static
String
CHAR
=
"CHAR"
;
public
final
static
String
VARCHAR
=
"VARCHAR"
;
public
final
static
String
TEXT
=
"TEXT"
;
public
final
static
String
LONGTEXT
=
"LONGTEXT"
;
public
final
static
String
DECIMAL
=
"DECIMAL"
;
public
final
static
String
DOUBLE
=
"DOUBLE"
;
public
final
static
String
FLOAT
=
"FLOAT"
;
}
/**
* postgresql 的字段类型
*/
public
final
static
class
PostGreSqlColumn
{
public
final
static
String
TEXT
=
"text"
;
// string
public
final
static
String
BPCHAR
=
"char"
;
// string
public
final
static
String
VARCHAR
=
"varchar"
;
// string
public
final
static
String
INT4
=
"int4"
;
// integer
public
final
static
String
INT2
=
"int2"
;
// integer
public
final
static
String
FLOAT4
=
"float4"
;
// float
public
final
static
String
FLOAT8
=
"float8"
;
// double
public
final
static
String
MONEY
=
"money"
;
// double
public
final
static
String
BIT
=
"bit"
;
// boolean
public
final
static
String
NUMERIC
=
"numeric"
;
// BigDecimal
public
final
static
String
BOOL
=
"bool"
;
// boolean
public
final
static
String
INT8
=
"int8"
;
// long
public
final
static
String
TIMESTAMP
=
"timestamp"
;
// timestamp
public
final
static
String
TIME
=
"time"
;
// time
public
final
static
String
DATE
=
"date"
;
// time
public
final
static
String
BYTEA
=
"bytea"
;
// ?
public
final
static
String
BOX
=
"box"
;
// object
public
final
static
String
CIDR
=
"cidr"
;
// object
public
final
static
String
INET
=
"inet"
;
// object
public
final
static
String
MACADDR
=
"macaddr"
;
// object
public
final
static
String
VARBIT
=
"varbit"
;
// object
public
final
static
String
CIRCLE
=
"circle"
;
// object
public
final
static
String
INTERVAL
=
"interval"
;
// object
public
final
static
String
LINE
=
"line"
;
// object
public
final
static
String
LSEG
=
"lseg"
;
// object
public
final
static
String
POLYGON
=
"polygon"
;
// object
public
final
static
String
POINT
=
"point"
;
// object
public
final
static
String
PATH
=
"path"
;
// object
}
/**
* oracle 的字段类型
*/
public
final
static
class
OracleColumn
{
public
final
static
String
VARCHAR2
=
"VARCHAR2"
;
public
final
static
String
VARCHAR
=
"VARCHAR"
;
public
final
static
String
ORACLE_CHAR
=
"CHAR"
;
public
final
static
String
TIMESTAMP
=
"TIMESTAMP"
;
public
final
static
String
DATE
=
"DATE"
;
public
final
static
String
RAW
=
"RAW"
;
public
final
static
String
NVARCHAR2
=
"NVARCHAR2"
;
public
final
static
String
TIMESTAMP_WITH_LOCAL_TIME_ZONE
=
"TIMESTAMP_WITH_LOCAL_TIME_ZONE"
;
public
final
static
String
TIMESTAMP_WITH_TIME_ZONE
=
"TIMESTAMP_WITH_TIME_ZONE"
;
public
final
static
String
INTERVAL_DAY_TO_SECOND
=
"INTERVAL_DAY_TO_SECOND"
;
public
final
static
String
INTERVAL_YEAR_TO_MONTH
=
"INTERVAL_YEAR_TO_MONTH"
;
public
final
static
String
NUMBER
=
"NUMBER"
;
public
final
static
String
FLOAT
=
"FLOAT"
;
}
/**
* @Description: sqlserver 的字段类型
* @return
* @Author mapabc8
* @Date 2020/3/12 17:47
**/
public
final
static
class
SqlServerColumn
{
// Character 字符串
public
final
static
String
CHAR
=
"char"
;
public
final
static
String
VARCHAR
=
"varchar"
;
public
final
static
String
TEXT
=
"text"
;
// Number 类型
public
final
static
String
TINYINT
=
"tinyint"
;
public
final
static
String
SMALLINT
=
"smallint"
;
public
final
static
String
INT
=
"int"
;
public
final
static
String
BIGINT
=
"bigint"
;
public
final
static
String
FLOAT
=
"float"
;
// Binary类型
public
final
static
String
BIT
=
"bit"
;
public
final
static
String
BINARY
=
"binary"
;
public
final
static
String
VARBINARY
=
"varbinary"
;
// Date 类型
public
final
static
String
DATETIME
=
"datetime"
;
public
final
static
String
DATETIME2
=
"datetime2"
;
public
final
static
String
TIMESTAMP
=
"timestamp"
;
}
/**
* 数据表相关
*/
public
final
static
class
TableInfo
{
public
static
final
String
COLUMN_NAME
=
"COLUMN_NAME"
;
public
static
final
String
TYPE_NAME
=
"TYPE_NAME"
;
public
static
final
String
COLUMN_SIZE
=
"COLUMN_SIZE"
;
public
static
final
String
IS_PK
=
"IS_PK"
;
public
static
final
String
ISNULL
=
"ISNULL"
;
public
static
final
String
IS_BUSINESS_PK
=
"IS_BUSINESS_PK"
;
public
static
final
String
NULLABLE
=
"NULLABLE"
;
public
static
final
String
COLUMN_DEF
=
"COLUMN_DEF"
;
public
static
final
String
DECIMAL_DIGITS
=
"DECIMAL_DIGITS"
;
}
/**
* 数据库
*/
public
final
static
class
DataBase
{
public
static
final
String
MYSQL
=
"mysql"
;
public
static
final
String
ORACLE
=
"oracle"
;
public
static
final
String
BEYONDB
=
"beyondb"
;
public
static
final
String
POSTGRESQL
=
"postgresql"
;
public
static
final
String
SQLSERVER
=
"sqlserver"
;
}
/**
* 数据源的驱动
*/
public
static
final
class
DbDriver
{
public
static
final
String
MYSQL
=
"com.mysql.jdbc.Driver"
;
public
static
final
String
ORACLE
=
"oracle.jdbc.driver.OracleDriver"
;
public
static
final
String
BEYONDB
=
"org.postgresql.Driver"
;
public
static
final
String
IMPALA
=
"com.cloudera.impala.jdbc41.Driver"
;
public
static
final
String
SQLSERVER
=
"com.microsoft.sqlserver.jdbc.SQLServerDriver"
;
public
static
final
String
POSTGRESQL
=
"org.postgresql.Driver"
;
}
private
static
final
String
DATE_FORMAT_DAY
=
"yyyy-MM-dd"
;
private
static
final
String
DATE_FORMAT_HOUR
=
"yyyy-MM-dd HH"
;
private
static
final
String
DATE_FORMAT_MINUTE
=
"yyyy-MM-dd HH:mm"
;
private
static
final
String
DATE_FORMAT_SECOND
=
"yyyy-MM-dd HH:mm:ss"
;
private
static
final
String
DATE_FORMAT_MILLIS
=
"yyyy-MM-dd HH:mm:ss.SSS"
;
private
static
final
String
DATE_FORMAT_TIME
=
"HH:mm:ss"
;
private
static
final
String
DATE_FORMAT_WEEKDAY
=
"EEEE"
;
public
enum
DATE_FORMAT
{
// 平台指定的时间格式字符串
E_DATE_FORMAT_DAY
(
DATE_FORMAT_DAY
),
E_DATE_FORMAT_HOUR
(
DATE_FORMAT_HOUR
),
E_DATE_FORMAT_MINUTE
(
DATE_FORMAT_MINUTE
),
E_DATE_FORMAT_SECOND
(
DATE_FORMAT_SECOND
),
E_DATE_FORMAT_MILLIS
(
DATE_FORMAT_MILLIS
),
E_DATE_FORMAT_TIME
(
DATE_FORMAT_TIME
),
E_DATE_FORMAT_WEEKDAY
(
DATE_FORMAT_WEEKDAY
);
private
final
String
strFormat
;
DATE_FORMAT
(
String
strFormat
)
{
this
.
strFormat
=
strFormat
;
}
public
String
getStrFormat
()
{
return
strFormat
;
}
}
public
static
final
class
ServicePluginParamArea
{
public
static
final
String
GLOBAL
=
"global"
;
public
static
final
String
PARAM
=
"param"
;
public
static
final
String
OUTPUT
=
"output"
;
}
/*流程服务封装公用变量定义*/
public
final
class
ProcessService
{
public
static
final
String
ERROR_PARAM
=
"参数错误"
;
public
static
final
String
NO_PROCESS_OPERATE
=
"参数错误,无对应流程操作"
;
public
static
final
String
OPERATE_FAILD
=
"操作失败"
;
public
static
final
String
DEPLOY_SUCCESS
=
"部署成功"
;
public
static
final
String
DEPLOY_FAILD
=
"部署失败"
;
public
static
final
String
UNDEPLOY_SUCCESS
=
"取消部署成功"
;
public
static
final
String
UNDEPLOY_FAILD
=
"取消部署失败"
;
public
static
final
String
SUCCEED_COUNT
=
"成功条数"
;
public
static
final
String
FAILED_COUNT
=
"失败条数"
;
public
static
final
String
FAILED_USER_ID
=
"失败用户id"
;
public
static
final
String
START_ROWNUM
=
"startRowNum"
;
public
static
final
String
PAGE_SIZE
=
"pageSize"
;
public
static
final
String
PARAM_ERROR
=
"参数错误: processId=%s, userId=%s"
;
public
static
final
String
NODE_CONFIG_ERROR
=
"节点配置错误"
;
public
static
final
String
CANNOT_DEAL
=
"无法处理此任务,用户无对应操作权限或流程被暂停"
;
public
static
final
String
COMMENT_TYPE_PASS
=
"PASS"
;
public
static
final
String
COMMENT_TYPE_NO_PASS
=
"NO_PASS"
;
public
static
final
String
NR_OF_INSTANCES_VAR_NAME
=
"nrOfInstances"
;
public
static
final
String
NR_OF_ACTIVE_INSTANCES_VAR_NAME
=
"nrOfActiveInstances"
;
public
static
final
String
APPROVED_COUNTER_VAR_NAME
=
"approvedCounter"
;
public
static
final
String
COMMENT_BACK
=
"驳回"
;
public
static
final
String
COMMENT_TYPE_BACK
=
"BACK"
;
public
static
final
String
PAUSE_PROCESS
=
"流程已暂停,无法操作"
;
public
static
final
String
ADMIN_ID
=
"admin"
;
public
static
final
String
ALREADY_ACTIVE
=
"流程已激活,请勿重复操作"
;
public
static
final
String
ALREADY_ASSIGNED
=
"任务已分配到指定用户,无需重复操作"
;
public
static
final
String
COMMENT_ASSIGNE
=
"委派处理"
;
public
static
final
String
REJECT_ASSIGNE
=
"驳回处理"
;
public
static
final
String
COMMENT_TYPE_DEFAULT
=
"comment"
;
public
static
final
String
PROCESS_START_EVENT
=
"start"
;
public
static
final
String
PROCESS_END_EVENT
=
"end"
;
public
static
final
String
START_USER_ID
=
"startUserId"
;
public
static
final
String
PROCESS_INSTANCE_NAME
=
"processInstanceName"
;
public
static
final
String
NEED_EMAIL_VAR_NAME
=
"needEmail"
;
public
static
final
String
EMAIL_SERVICE_BEAN_NAME
=
"emailService"
;
public
static
final
String
CANDIDATE_USERS_VAR_NAME
=
"candidateUsers"
;
public
static
final
String
NOTICE_TYPE_START
=
"start"
;
public
static
final
String
NOTICE_TYPE_NEXT
=
"next"
;
/*流程表单保存在流程变量中的名称*/
public
static
final
String
FORM_DATA_USER_DEFINED_VAR_NAME
=
"formDataUserDefined"
;
public
static
final
String
START_FORM_DATA_USER_DEFINED_VAR_NAME
=
"startFormDataUserDefined"
;
/*流程是否通过流程变量*/
public
static
final
String
IS_APPROVED_VAR_NAME
=
"isApproved"
;
}
/*流程操作,枚举常量*/
public
enum
ProcessOperateType
{
/*启动流程*/
start
,
//审批,通过-不通过,通过变量控制
approve
,
//驳回,到指定节点
back
,
//委派
transfer
,
//暂停
suspend
,
//激活
active
,
//作废
delete
,
//抄送标记为已读
readCopyTo
,
//抄送标记为未读
unReadCopyTo
;
}
/*流程节点权限计算,枚举常量*/
public
enum
AUTH_CALCULATE_TYPE
{
//根据指定企业
withCompany
,
//根据指定部门
withDepartment
,
//根据岗位
withStation
,
//根据角色
withRole
,
//根据企业用户
withCompanyUser
,
//求并集
withUnion
,
//求交集
withIntersection
;
}
/**
* 流程定义bpmn20.xml生成字符属性
*/
public
final
static
class
Process
{
public
static
final
String
DEFAULT_CHARSET
=
"UTF-8"
;
//编码格式utf-8定义
public
static
final
String
BPMN_XML_SUFFIX
=
".bpmn20.xml"
;
//编码格式utf-8定义
/*bpmn20.xml节点定义 start*/
public
static
final
String
BPMN_DEFINITIONS
=
"definitions"
;
public
static
final
String
BPMN_XMLNS
=
"xmlns"
;
public
static
final
String
BPMN_XMLNS_CONTENT
=
"http://www.omg.org/spec/BPMN/20100524/MODEL"
;
public
static
final
String
BPMN_XMLNS_ACTIVITI
=
"xmlns:activiti"
;
public
static
final
String
BPMN_XMLNS_ACTIVITI_CONTENT
=
"http://activiti.org/bpmn"
;
public
static
final
String
BPMN_TARGET_NAMESPACE
=
"targetNamespace"
;
public
static
final
String
BPMN_TARGET_NAMESPACE_CONTENT
=
"http://activiti.org/bpmn20"
;
public
static
final
String
BPMN_XMLNS_XSI
=
"xmlns:xsi"
;
public
static
final
String
BPMN_XMLNS_XSI_CONTENT
=
"http://www.w3.org/2001/XMLSchema-instance"
;
public
static
final
String
BPMN_PROCESS
=
"process"
;
public
static
final
String
BPMN_ID
=
"id"
;
public
static
final
String
BPMN_PROCESS_ID
=
"processId"
;
public
static
final
String
BPMN_NAME
=
"name"
;
public
static
final
String
BPMN_SOURCE_REF
=
"sourceRef"
;
public
static
final
String
BPMN_TARGET_REF
=
"targetRef"
;
public
static
final
String
BPMN_CALLED_ELEMENT
=
"calledElement"
;
public
static
final
String
BPMN_EXTENSION_ELEMENTS
=
"extensionElements"
;
public
static
final
String
BPMN_SOURCE
=
"source"
;
public
static
final
String
BPMN_TARGET
=
"target"
;
public
static
final
String
BPMN_ACTIVITI_IN
=
"activiti:in"
;
public
static
final
String
BPMN_ACTIVITI_OUT
=
"activiti:out"
;
public
static
final
String
BPMN_CONDITION_EXPRESSION
=
"conditionExpression"
;
public
static
final
String
BPMN_XSI_TYPE
=
"xsi:type"
;
public
static
final
String
BPMN_FORMAL_EXPRESSION
=
"tFormalExpression"
;
public
static
final
String
BPMN_ACTIVITI_TASKLISTENER
=
"activiti:taskListener"
;
public
static
final
String
BPMN_EVENT
=
"event"
;
public
static
final
String
BPMN_CREATE
=
"create"
;
public
static
final
String
BPMN_CLASS
=
"class"
;
public
static
final
String
BPMN_ACTIVITI_CLASS
=
"activiti:class"
;
public
static
final
String
BPMN_ACTIVITI_EXECUTION_LISTENER
=
"activiti:executionListener"
;
public
static
final
String
BPMN_START
=
"start"
;
public
static
final
String
BPMN_END
=
"end"
;
public
static
final
String
BPMN_COMPLETE
=
"complete"
;
public
static
final
String
BPMN_EXPRESSION
=
"expression"
;
public
static
final
String
BPMN_COMPLETE_EXPRESSION_METHOD
=
"${userTaskHandler.postComplete(execution)}"
;
public
static
final
String
BPMN_START_EXPRESSION_METHOD
=
"${userTaskHandler.preStart(execution)}"
;
public
static
final
String
BPMN_ACTIVITI_CANDIDATE_USERS
=
"activiti:candidateUsers"
;
public
static
final
String
BPMN_ACTIVITI_CANDIDATE_USERS_VALUE
=
"${candidates}"
;
public
static
final
String
BPMN_MULTI_INSTANCE_LOOP_CHARACTERISTICS
=
"multiInstanceLoopCharacteristics"
;
public
static
final
String
BPMN_IS_SEQUENTIAL
=
"isSequential"
;
public
static
final
String
BPMN_IS_SEQUENTIAL_VALUE
=
"false"
;
public
static
final
String
BPMN_ACTIVITI_COLLECTION
=
"activiti:collection"
;
public
static
final
String
BPMN_ACTIVITI_COLLECTION_METHOD_NAME
=
"${userTaskHandler.getActorUser(execution)}"
;
public
static
final
String
BPMN_ACTIVITI_ELEMENT_VARIABLE
=
"activiti:elementVariable"
;
public
static
final
String
BPMN_CANDIDATES
=
"candidates"
;
public
static
final
String
BPMN_COMPLETION_CONDITION
=
"completionCondition"
;
public
static
final
String
BPMN_COMPLETION_CONDITION_CONTENT
=
"${userTaskHandler.dealComplete(execution)}"
;
public
static
final
String
BPMN_PROCESS_EXECUTION_LISTENER_NAME
=
"net.wanji.design.engine.operate.impl.ProcessExecutionListener"
;
public
static
final
String
BPMN_ACTIVITI_CLASS_NAME
=
"net.wanji.design.engine.operate.impl.AutoNodeServiceTask"
;
/*bpmn20.xml节点定义 end*/
/*流程设计器元素类型常量定义 start*/
public
static
final
String
START_NODE
=
"startNode"
;
public
static
final
String
END_NODE
=
"endNode"
;
public
static
final
String
APPROVAL_NODE
=
"approvalNode"
;
public
static
final
String
CONDITION_LINE
=
"conditionLine"
;
public
static
final
String
FORK_NODE
=
"forkNode"
;
public
static
final
String
CALL_ACTIVITY_NODE
=
"callActivityNode"
;
public
static
final
String
AUTO_NODE
=
"autoNode"
;
/*流程设计器元素类型常量定义 end*/
/*xml创建节点类型,枚举常量*/
public
enum
NodeType
{
START
(
"startEvent"
),
END
(
"endEvent"
),
USERTASK
(
"userTask"
),
CONDITION
(
"inclusiveGateway"
),
FLOW
(
"sequenceFlow"
),
AUTO_NODE
(
"serviceTask"
),
CALL_ACTIVITY
(
"callActivity"
);
private
String
value
;
NodeType
(
String
value
)
{
this
.
value
=
value
;
}
@Override
public
String
toString
()
{
return
this
.
value
;
}
}
/*审批节点类型*/
public
enum
ApprovalNodeType
{
SINGLE_INSTANCE
,
//非会签节点
MULTI_INSTANCE
,
//会签节点
COPY_TO
;
//抄送节点, 通过任务接收人实现, 用权限控制
}
}
/* 消息类型 */
public
enum
MessageType
{
// 工作流消息
BPM_MESSAGE_LOG
(
"bpm_log"
);
private
String
value
;
MessageType
(
String
value
)
{
this
.
value
=
value
;
}
public
static
MessageType
getEnumByValue
(
String
value
)
{
for
(
MessageType
msgType
:
MessageType
.
values
())
{
if
(
msgType
.
toString
().
equals
(
value
))
{
return
msgType
;
}
}
return
null
;
}
@Override
public
String
toString
()
{
return
this
.
value
;
}
}
/*日志保存操作类型*/
public
enum
LogType
{
//接口日志 D2A
D2A_INTERFACE_API_LOG
(
"d2a_interface_api_log"
),
//接口日志 A2A
A2A_INTERFACE_API_LOG
(
"a2a_interface_api_log"
),
//接口日志 webservice
WEBSERVICE_INTERFACE_API_LOG
(
"webservice_interface_api_log"
),
//接口日志 基础接口
BASE_INTERFACE_API_LOG
(
"base_interface_api_log"
),
//接口日志 业务接口
BUSINESS_INTERFACE_API_LOG
(
"business_interface_api_log"
),
//接口日志 集成接口
INTEGRATION_INTERFACE_API_LOG
(
"integration_interface_api_log"
),
//接口日志 服务编排接口
SGW_INTERFACE_API_LOG
(
"sgw_interface_api_log"
),
//接口日志 邮件接口
MAIL_INTERFACE_API_LOG
(
"mail_interface_api_log"
),
//调度日志 d2a接口
SCHEDULE_D2A_INTERFACE_API_LOG
(
"schedule_d2a_interface_api_log"
),
//调度日志 A2A接口
SCHEDULE_A2A_INTERFACE_API_LOG
(
"schedule_a2a_interface_api_log"
),
//调度日志 基础接口
MICROSERVICE_BASE_INTERFACE_API_LOG
(
"microservice_base_interface_api_log"
),
//调度日志 业务接口
MICROSERVICE_BUSINESS_INTERFACE_API_LOG
(
"microservice_business_interface_api_log"
),
//调度日志 集成接口
MICROSERVICE_INTEGRATION_INTERFACE_API_LOG
(
"microservice_integration_interface_api_log"
),
//调度日志 服务编排
MICROSERVICE_ORCHESTRATION_INTERFACE_API_LOG
(
"microservice_orchestration_interface_api_log"
),
//调度日志 系统日志
SYSTEM_TASK_LOG
(
"system_task_log"
),
// 授权日志
AUTH_LOG
(
"auth_log"
),
//网关日志 基础接口日志
GATEWAY_BASE_INTERFACE_API_LOG
(
"gateway_base_interface_api_log"
),
//网关日志 业务接口日志
GATEWAY_BUSINESS_INTERFACE_API_LOG
(
"gateway_business_interface_api_log"
),
//网关日志 集成接口日志
GATEWAY_INTEGRATION_INTERFACE_API_LOG
(
"gateway_integration_interface_api_log"
),
//网关日志 a2a
GATEWAY_A2A_INTERFACE_API_LOG
(
"gateway_a2a_interface_api_log"
),
//网关日志 d2a
GATEWAY_D2A_INTERFACE_API_LOG
(
"gateway_d2a_interface_api_log"
),
//网关日志 服务编排
GATEWAY_ORCHESTRATION_INTERFACE_API_LOG
(
"gateway_orchestration_interface_api_log"
),
//服务开发插件日志
DEV_SERVICE_PLUGIN_LOG
(
"dev_service_plugin_log"
),
//服务开发流程日志
DEV_SERVICE_FLOW_LOG
(
"dev_service_flow_log"
),
//服务编排任务调度日志
DEV_SCHEDULE_LOG
(
"dev_schedule_log"
),
//服务编排发布日志
SGW_SERVICE_PUBLISH_LOG
(
"sgw_service_publish_log"
),
//服务编排插件日志
SGW_SERVICE_PLUGIN_LOG
(
"sgw_service_plugin_log"
),
//服务编排流程日志
SGW_SERVICE_FLOW_LOG
(
"sgw_service_flow_log"
),
//服务网关D2A日志
SGW_D2A_SERVICE_LOG
(
"sgw_d2a_service_log"
),
// 操作日志
OPERATION_LOG
(
"operation_log"
),
// 登录日志
LOGIN_LOG
(
"login_log"
);
private
String
value
;
LogType
(
String
value
)
{
this
.
value
=
value
;
}
public
static
LogType
getEnumByValue
(
String
value
)
{
for
(
LogType
logType
:
LogType
.
values
())
{
if
(
logType
.
toString
().
equals
(
value
))
{
return
logType
;
}
}
return
null
;
}
@Override
public
String
toString
()
{
return
this
.
value
;
}
}
/**
* 重构移植 重新划分模块后,把之前bp-domain下的constants移植过来 start 20200514
*/
public
static
class
ConsoleConstants
{
public
static
final
class
User
{
public
static
final
String
USER
=
"user"
;
public
static
final
String
SYS_USER
=
"sysUser"
;
public
static
final
String
TOKEN
=
"token"
;
}
}
public
static
class
FunctionManageConstants
{
public
static
final
class
FunctionJar
{
public
static
final
String
DOWNLOAD_PATH_KEY
=
"folder"
;
}
}
public
static
class
ServiceDevelopConstants
{
public
static
final
class
TableOperationLogConst
{
public
static
final
String
RES_TYPE
=
"table"
;
// 业务表的操作类型。
public
static
final
String
CREATE_TABLE_OPERATION
=
"new"
;
public
static
final
String
DELETE_TABLE_OPERATION
=
"delete"
;
public
static
final
String
UPDATE_TABLE_OPERATION
=
"update"
;
public
static
final
String
IMPORT_TABLE_OPERATION
=
"import"
;
}
}
public
static
class
ServiceGateWayConstants
{
public
static
final
class
D2ADataBase
{
public
static
final
String
DB_MYSQL
=
"mysql"
;
public
static
final
String
DB_ORACLE
=
"oracle"
;
public
static
final
String
DB_SQLSERVER
=
"sqlserver"
;
public
static
final
String
DB_BEYONDB
=
"beyondb"
;
public
static
final
String
DB_POSTGRESQL
=
"postgresql"
;
}
public
static
final
class
DataSource
{
public
static
final
String
DB_ELASTICSEARCH
=
"elasticsearch"
;
public
static
final
String
DB_KAFKA
=
"kafka"
;
public
static
final
String
DB_RABBITMQ
=
"rabbitmq"
;
public
static
final
String
DB_REDIS
=
"redis"
;
public
static
final
String
DB_WEBSOCKET
=
"websocket"
;
public
static
final
String
DB_WEBSERVICE
=
"webservice"
;
public
static
final
String
DB_MONGODB
=
"mongo"
;
}
public
static
final
class
TableRestfulConstants
{
public
final
static
String
INTERFACE_CODE_BY_PAGE
=
"findByPage"
;
public
final
static
String
INTERFACE_CODE_BY_CONDITION
=
"findByWhere"
;
public
final
static
String
INTERFACE_CODE_BY_ID
=
"findById"
;
public
final
static
String
INTERFACE_CODE_INSERT
=
"insert"
;
public
final
static
String
INTERFACE_CODE_UPDATE
=
"update"
;
public
final
static
String
INTERFACE_CODE_DELETE
=
"delete"
;
public
final
static
String
INTERFACE_CODE_BY_SQL
=
"multiTable"
;
//bySql
}
}
public
static
class
ServicePublishConstants
{
public
final
class
SqlConstants
{
public
static
final
String
BLANK
=
" "
;
public
static
final
String
FIELD_NAME_EN
=
"fieldNameEn"
;
public
static
final
String
FIELD_TYPE
=
"type"
;
public
static
final
String
FIELD_VALUE
=
"value"
;
public
static
final
String
FIELD_FLAG
=
"flag"
;
public
static
final
String
OPERATIONS
=
"operations"
;
public
static
final
String
CONDITION_COLUMNS
=
"condition_columns"
;
public
static
final
String
TYPES_AND_VALUES
=
"typesAndValues"
;
public
static
final
String
CONDITION
=
"condition"
;
public
static
final
String
SET
=
"set"
;
public
static
final
String
OPERATION
=
"operation"
;
public
static
final
String
BETWEEN_OPERATION
=
"between"
;
public
static
final
String
PAGE_SIZE
=
"pageSize"
;
public
static
final
String
PAGE_NUM
=
"pageNum"
;
public
static
final
String
ORDER
=
"order"
;
public
static
final
String
IN_OPERATION
=
"in"
;
public
static
final
String
DESC_OPERATION
=
"DESC"
;
public
static
final
String
ASC_OPERATION
=
"ASC"
;
public
static
final
String
LIKE_OPERATION
=
"like"
;
}
/**
* 数据库类型常量定义
*/
public
final
class
DBType
{
public
final
static
String
MYSQL
=
"mysql"
;
public
final
static
String
ORACLE
=
"oracle"
;
public
final
static
String
SQLSERVER
=
"sqlserver"
;
public
final
static
String
BEYONDB
=
"beyondb"
;
}
}
public
static
class
TaskScheduleConstants
{
public
static
class
ScheduleStatus
{
public
static
final
String
STOP
=
"0"
;
public
static
final
String
START
=
"1"
;
}
}
public
static
class
StatisticalConstants
{
public
static
class
UserTrends
{
public
static
final
String
LOGIN_TIME
=
"loginTime"
;
public
static
final
String
START_DATE
=
"startDate"
;
public
static
final
String
END_DATE
=
"endDate"
;
public
static
final
String
CHART_DATA
=
"chartData"
;
public
static
final
String
DAILY_ACTIVE_USER
=
"dailyActiveUser"
;
public
static
final
String
DAILY_NEW_USER
=
"dailyNewUser"
;
public
static
final
String
DAILY_OLD_USER
=
"dailyOldUser"
;
public
static
final
String
DAILY_USER_VISITS
=
"dailyUserVisits"
;
public
static
final
String
DEDICATED_HOSTING_IP
=
"dedicatedHostingIp"
;
public
static
final
String
DAILY_UPDATE_USER
=
"dailyUpdateUser"
;
public
static
final
String
DAILY_NEWANDUPDATE_USER
=
"dailyNewAndUpdateUser"
;
public
static
final
String
DAILY_STARTUP
=
"dailyStartup"
;
}
}
/**
* IM类型
*/
public
final
class
IM
{
public
static
final
String
IM_CLIENT_ID
=
"IMClientId"
;
public
static
final
String
IM_PLATFORM
=
"IMPlatform"
;
public
static
final
String
IM_USER
=
"IMUser"
;
public
static
final
String
IM_TOKEN
=
"IMToken"
;
}
public
final
class
Idnetity
{
public
static
final
String
UNI_USER_AGENT
=
"X-Uni-User-Agent"
;
}
/**重构移植 end 20200514*/
/**
* 空间数据表
*/
public
final
class
tableNameConstants
{
public
static
final
String
RID_RID
=
"rid_rid"
;
public
static
final
String
RID_CROSS
=
"rid_cross"
;
public
static
final
String
RID_LANE_OBJ
=
"rid_lane_obj"
;
public
static
final
String
RID_AXF_THREE
=
"rid_axf_three"
;
public
static
final
String
ROAD_SEGMENT
=
"data_roadsegment"
;
}
/**
* 路网数据更新状态
*/
public
final
class
DataConstants
{
// 数据状态 0继承,1删除,2增加,3修改
public
final
static
String
DATA_MODE_EXTENTD
=
"0"
;
public
final
static
String
DATA_MODE_DELETE
=
"1"
;
public
final
static
String
DATA_MODE_ADD
=
"2"
;
public
final
static
String
DATA_MODE_EDIT
=
"3"
;
}
}
\ No newline at end of file
signal-communication-service/src/main/java/net/wanji/com/common/enums/HexSign.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
common
.
enums
;
import
org.apache.commons.lang3.StringUtils
;
/**
* @author duanruiming
* @date 2023/05/08 10:17
*/
public
enum
HexSign
{
HEARTBEAT
(
"1631"
,
"heartbeatService"
),
GET_SCHEDULE_PARAM
(
"2393"
,
"getScheduleService"
),
GET_DAY_SCHEDULE_PARAM
(
"2394"
,
"getDayScheduleService"
),
GET_DAILY_PLAN_PRAM
(
"2392"
,
"getDailyPlanService"
),
GET_PLAN_PARAM
(
"2353"
,
"getPlanService"
),
SET_SCHEDULE_PARAM
(
"1293"
,
"setScheduleService"
),
SET_DAILY_PLAN_PARAM
(
"1292"
,
"setDailyPlanService"
),
SET_PLAN_PARAM
(
"1253"
,
"setPlanService"
),
CTL_CROSS_CONTROL
(
"11"
,
"ctlControlService"
),
SIGNAL_REAL_DATA
(
"1549"
,
"signalRealDataService"
),
SIGNAL_NET_CONFIG
(
"3300"
,
"signalNetConfig"
);
private
String
hexSign
;
private
String
className
;
HexSign
(
String
hexSign
,
String
className
)
{
this
.
hexSign
=
hexSign
;
this
.
className
=
className
;
}
public
static
String
getClassNameByHexSign
(
String
hexSign
)
{
if
(
StringUtils
.
isEmpty
(
hexSign
))
{
return
null
;
}
for
(
HexSign
uniqueHexSign
:
values
())
{
if
(
uniqueHexSign
.
hexSign
.
equals
(
hexSign
))
{
return
uniqueHexSign
.
className
;
}
}
return
null
;
}
}
signal-communication-service/src/main/java/net/wanji/com/common/enums/SignalInterfaceTypeEnum.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
common
.
enums
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
lombok.RequiredArgsConstructor
;
import
net.wanji.com.service.controller.ControlCommandService
;
import
net.wanji.com.service.controller.SignalStatusService
;
import
net.wanji.com.service.controller.StaticInfoService
;
import
java.util.Objects
;
/**
* @author duanruiming
* @date 2023/05/09 10:35
*/
@Getter
@AllArgsConstructor
@RequiredArgsConstructor
public
enum
SignalInterfaceTypeEnum
{
CONTROL
(
"control"
,
ControlCommandService
.
class
,
"控制类型接口"
),
STATUS
(
"status"
,
SignalStatusService
.
class
,
"状态类型接口"
),
STATIC
(
"static"
,
StaticInfoService
.
class
,
"静态类型接口"
);
private
String
code
;
private
Object
type
;
private
String
desc
;
/**
* 通过编号获取接口类型
*
* @param code
* @return
*/
public
Object
getInterfaceType
(
String
code
)
{
for
(
SignalInterfaceTypeEnum
value
:
SignalInterfaceTypeEnum
.
values
())
{
if
(
Objects
.
equals
(
code
,
value
.
getCode
()))
{
return
value
.
getType
();
}
}
return
null
;
}
}
signal-communication-service/src/main/java/net/wanji/com/config/Swagger2.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
config
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
springfox.documentation.builders.ApiInfoBuilder
;
import
springfox.documentation.builders.PathSelectors
;
import
springfox.documentation.builders.RequestHandlerSelectors
;
import
springfox.documentation.service.ApiInfo
;
import
springfox.documentation.service.Contact
;
import
springfox.documentation.spi.DocumentationType
;
import
springfox.documentation.spring.web.plugins.Docket
;
import
springfox.documentation.swagger2.annotations.EnableSwagger2
;
@Configuration
@EnableSwagger2
public
class
Swagger2
{
@Bean
public
Docket
createRestApi
()
{
return
new
Docket
(
DocumentationType
.
SWAGGER_2
)
.
apiInfo
(
apiInfo
())
.
select
()
//为当前包路径
.
apis
(
RequestHandlerSelectors
.
basePackage
(
"net.wanji.utc.controller"
))
.
paths
(
PathSelectors
.
any
())
.
build
();
}
//构建 api文档的详细信息函数,注意这里的注解引用的是哪个
private
ApiInfo
apiInfo
()
{
return
new
ApiInfoBuilder
()
//页面标题
.
title
(
"万集科技-城市交通信号OpenAPI"
)
//创建人
.
contact
(
new
Contact
(
"test"
,
"#"
,
"test@wanji.net.cn"
))
//版本号
.
version
(
"0.2.1"
)
//描述
.
description
(
"城市交通信号厂商调用服务API"
)
.
build
();
}
}
\ No newline at end of file
signal-communication-service/src/main/java/net/wanji/com/config/ThreadPoolConfig.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
config
;
import
com.google.common.util.concurrent.ThreadFactoryBuilder
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor
;
import
java.util.concurrent.ThreadFactory
;
import
java.util.concurrent.ThreadPoolExecutor
;
/**
* @author duanruiming
* @date 2023/02/14 10:17
*/
@Configuration
public
class
ThreadPoolConfig
{
@Value
(
"${threadPoolConfig.threadPoolName}"
)
private
String
threadPoolName
;
@Value
(
"${threadPoolConfig.coreSize}"
)
private
int
coreSize
;
@Value
(
"${threadPoolConfig.maxSize}"
)
private
int
maxSize
;
@Value
(
"${threadPoolConfig.queueCapacity}"
)
private
int
queueCapacity
;
@Value
(
"${threadPoolConfig.keepAliveTime}"
)
private
int
keepAliveTime
;
@Value
(
"${threadPoolConfig.allowCoreTimeOut}"
)
private
boolean
allowCoreTimeOut
;
@Bean
public
ThreadPoolTaskExecutor
threadPoolExecutor
()
{
ThreadPoolTaskExecutor
executor
=
new
ThreadPoolTaskExecutor
();
ThreadFactory
build
=
new
ThreadFactoryBuilder
().
setNameFormat
(
threadPoolName
).
build
();
executor
.
setThreadFactory
(
build
);
executor
.
setCorePoolSize
(
coreSize
);
executor
.
setMaxPoolSize
(
maxSize
);
executor
.
setQueueCapacity
(
queueCapacity
);
executor
.
setKeepAliveSeconds
(
keepAliveTime
);
executor
.
setAllowCoreThreadTimeOut
(
allowCoreTimeOut
);
executor
.
setRejectedExecutionHandler
(
new
ThreadPoolExecutor
.
DiscardOldestPolicy
());
executor
.
initialize
();
return
executor
;
}
}
signal-communication-service/src/main/java/net/wanji/com/controller/ControlCommandController.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
controller
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiImplicitParams
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.com.cache.SignalCommandInterfaceCache
;
import
net.wanji.com.common.constants.Constants
;
import
net.wanji.com.common.enums.SignalInterfaceTypeEnum
;
import
net.wanji.com.service.CommonService
;
import
net.wanji.com.service.controller.ControlCommandService
;
import
net.wanji.common.annotation.aspect.AspectLog
;
import
net.wanji.common.enums.BaseEnum
;
import
net.wanji.common.framework.rest.JsonViewObject
;
import
net.wanji.databus.vo.*
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
/**
* @author duanruiming
* @date 2023/05/08 10:45
*/
@Slf4j
@RestController
@RequiredArgsConstructor
@RequestMapping
(
"/controlCommand"
)
@Api
(
value
=
"信号指令服务"
)
public
class
ControlCommandController
{
private
final
SignalCommandInterfaceCache
signalCommandInterfaceCache
;
private
final
CommonService
commonService
;
/**
* 通过厂商编码和类类型,获取缓存中实现类
*
* @param manufacturerId
* @return
*/
private
ControlCommandService
getService
(
String
manufacturerId
)
{
return
(
ControlCommandService
)
(
signalCommandInterfaceCache
.
getService
(
manufacturerId
.
concat
(
SignalInterfaceTypeEnum
.
CONTROL
.
getCode
())));
}
/**
* 信号机方案下发
*
* @param schemeSendVO 方案下发VO
* @return
*/
@AspectLog
(
description
=
"信号机方案下发-基础方案下发"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
UPDATE
)
@ApiOperation
(
value
=
"信号机方案下发-基础方案下发"
,
notes
=
"信号机方案下发-基础方案下发"
)
@PostMapping
(
"/schemeSend"
)
public
JsonViewObject
schemeSend
(
@RequestBody
@Validated
SchemeSendVO
schemeSendVO
)
throws
Exception
{
String
manufacturerId
=
commonService
.
getManufacturerCodeByCrossId
(
schemeSendVO
.
getCrossCode
());
return
getService
(
manufacturerId
).
schemeSend
(
schemeSendVO
);
}
/**
* 下发信号机计划
*
* @param planSendVO 计划下发VO
* @return
*/
@AspectLog
(
description
=
"计划下发-计划信息、时段信息"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
UPDATE
)
@ApiOperation
(
value
=
"计划下发-计划信息、时段信息"
,
notes
=
"计划下发-计划信息、时段信息"
)
@PostMapping
(
"/planSend"
)
public
JsonViewObject
planSend
(
@RequestBody
@Validated
PlanSendVO
planSendVO
)
throws
Exception
{
String
manufacturerId
=
commonService
.
getManufacturerCodeByCrossId
(
planSendVO
.
getCrossCode
());
return
getService
(
manufacturerId
).
planSend
(
planSendVO
);
}
/**
* 时间表下发
*
* @param scheduleSendVO 时间表下发VO
* @return
* @throws Exception 异常
*/
@AspectLog
(
description
=
"时间表下发-时间表信息"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
UPDATE
)
@ApiOperation
(
value
=
"时间表下发-时间表信息"
,
notes
=
"时间表下发-时间表信息"
)
@PostMapping
(
"/scheduleSend"
)
public
JsonViewObject
scheduleSend
(
@RequestBody
@Validated
ScheduleSendVO
scheduleSendVO
)
throws
Exception
{
String
manufacturerId
=
commonService
.
getManufacturerCodeByCrossId
(
scheduleSendVO
.
getCrossCode
());
return
getService
(
manufacturerId
).
scheduleSend
(
scheduleSendVO
);
}
/**
* 相位配时下发-(下发相位参数)
*
* @return
* @throws InterruptedException 中断异常
*/
@AspectLog
(
description
=
"相位配时下发-(下发相位参数)"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
UPDATE
)
@ApiOperation
(
value
=
"相位配时下发-(下发相位参数)"
,
notes
=
"相位配时下发-(下发相位参数)"
)
@PostMapping
(
"/phaseTimingSend"
)
public
JsonViewObject
phaseTimingSend
(
@RequestBody
@Validated
PhaseTimingSendVO
phaseTimingSendVO
)
throws
Exception
{
String
manufacturerId
=
commonService
.
getManufacturerCodeByCrossId
(
phaseTimingSendVO
.
getCrossCode
());
return
getService
(
manufacturerId
).
phaseTimingSend
(
phaseTimingSendVO
);
}
/**
* 全红控制
*
* @param commandVO 控制指令VO
* @return
* @throws Exception 异常
*/
@AspectLog
(
description
=
"全红控制-路口全红控制/恢复"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
UPDATE
)
@ApiOperation
(
value
=
"全红控制-路口全红控制/恢复"
,
notes
=
"全红控制-路口全红控制/恢复"
)
@PostMapping
(
"/allRedControl"
)
public
JsonViewObject
allRedControl
(
@RequestBody
@Validated
ControlCommandVO
commandVO
)
throws
Exception
{
String
manufacturerId
=
commonService
.
getManufacturerCodeByCrossId
(
commandVO
.
getCrossCode
());
return
getService
(
manufacturerId
).
setSignalControl
(
commandVO
.
getCrossCode
(),
commandVO
.
getCommand
(),
Constants
.
ALL_RED_CONTROL
);
}
/**
* 黄闪控制
*
* @param commandVO 控制指令VO
* @return
* @throws Exception 异常
*/
@AspectLog
(
description
=
"黄闪控制-路口黄闪控制/恢复"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
UPDATE
)
@ApiOperation
(
value
=
"黄闪控制-路口黄闪控制/恢复"
,
notes
=
"黄闪控制-路口黄闪控制/恢复"
)
@PostMapping
(
"/yellowLightControl"
)
public
JsonViewObject
yellowLightControl
(
@RequestBody
@Validated
ControlCommandVO
commandVO
)
throws
Exception
{
String
manufacturerId
=
commonService
.
getManufacturerCodeByCrossId
(
commandVO
.
getCrossCode
());
return
getService
(
manufacturerId
).
setSignalControl
(
commandVO
.
getCrossCode
(),
commandVO
.
getCommand
(),
Constants
.
YELLOW_LIGHT_CONTROL
);
}
/**
* 关灯控制
*
* @param commandVO 控制指令VO
* @return
* @throws Exception 异常
*/
@AspectLog
(
description
=
"关灯控制-路口关灯控制/开灯"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
UPDATE
)
@ApiOperation
(
value
=
"关灯控制-路口关灯控制/开灯"
,
notes
=
"关灯控制-路口关灯控制/开灯"
)
@PostMapping
(
"/closeLightControl"
)
public
JsonViewObject
closeLightControl
(
@RequestBody
@Validated
ControlCommandVO
commandVO
)
throws
Exception
{
String
manufacturerId
=
commonService
.
getManufacturerCodeByCrossId
(
commandVO
.
getCrossCode
());
return
getService
(
manufacturerId
).
setSignalControl
(
commandVO
.
getCrossCode
(),
commandVO
.
getCommand
(),
Constants
.
CLOSE_LIGHT_CONTROL
);
}
/**
* 步进控制
*
* @param crossCode 信号id
* @param command 命令
* @param stepNum 一步num
* @return
*/
@AspectLog
(
description
=
"步进控制-步进控制/恢复"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
UPDATE
)
@ApiOperation
(
value
=
"步进控制-步进控制/恢复"
,
notes
=
"步进控制-步进控制/恢复"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"crossCode"
,
value
=
"13位路口编号"
,
paramType
=
"query"
,
required
=
true
,
dataType
=
"String"
),
@ApiImplicitParam
(
name
=
"command"
,
value
=
"1 开始步进 0 取消步进"
,
paramType
=
"query"
,
required
=
true
,
dataType
=
"int"
),
@ApiImplicitParam
(
name
=
"stepNum"
,
value
=
"0 顺序步进 n 跳过n个相位"
,
paramType
=
"query"
,
required
=
true
,
dataType
=
"int"
),
})
@PostMapping
(
"/stepControl"
)
public
JsonViewObject
stepControl
(
@RequestParam
String
crossCode
,
@RequestParam
Integer
command
,
@RequestParam
int
stepNum
)
throws
Exception
{
String
manufacturerId
=
commonService
.
getManufacturerCodeByCrossId
(
crossCode
);
return
getService
(
manufacturerId
).
stepControl
(
crossCode
,
command
,
stepNum
);
}
/**
* 恢复时间表
*
* @param crossCode
* @return
*/
@AspectLog
(
description
=
"恢复时间表-恢复路口时间表执行"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
UPDATE
)
@ApiOperation
(
value
=
"恢复时间表-恢复路口时间表执行"
,
notes
=
"恢复时间表-恢复路口时间表执行"
)
@PostMapping
(
"/recoverSchedule"
)
public
JsonViewObject
recoverSchedule
(
@RequestParam
String
crossCode
)
throws
Exception
{
String
manufacturerId
=
commonService
.
getManufacturerCodeByCrossId
(
crossCode
);
return
getService
(
manufacturerId
).
recoverSchedule
(
crossCode
);
}
/**
* 锁定控制
*
* @param commandVO 控制指令VO
* @return
* @throws Exception 异常
*/
@AspectLog
(
description
=
"锁定控制-相位锁定/解锁"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
UPDATE
)
@ApiOperation
(
value
=
"锁定控制-相位锁定/解锁"
,
notes
=
"锁定控制-相位锁定/解锁"
)
@PostMapping
(
"/lockControl"
)
public
JsonViewObject
lockControl
(
@RequestBody
@Validated
ControlCommandVO
commandVO
)
throws
Exception
{
String
manufacturerId
=
commonService
.
getManufacturerCodeByCrossId
(
commandVO
.
getCrossCode
());
return
getService
(
manufacturerId
).
lockControl
(
commandVO
);
}
/**
* 相位差下发
*/
@AspectLog
(
description
=
"相位差下发"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
UPDATE
)
@ApiOperation
(
value
=
"相位差下发"
,
notes
=
"相位差下发"
)
@PostMapping
(
"/phaseDiffSend"
)
public
JsonViewObject
phaseDiffSend
(
String
crossCode
)
{
String
manufacturerId
=
commonService
.
getManufacturerCodeByCrossId
(
crossCode
);
return
getService
(
manufacturerId
).
phaseDiffSend
();
}
/* @AspectLog(description = "删除信号机配置参数", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "删除信号机配置参数", notes = "删除信号机配置参数")
@PostMapping("/delBaseConfig")
public JsonViewObject delBaseConfig(@RequestBody @Validated DelBaseConfigVO delBaseConfigVO) throws Exception {
return signalTypeServiceImplCache.getService(manufacturerId).delBaseConfig(delBaseConfigVO);
}*/
}
signal-communication-service/src/main/java/net/wanji/com/controller/SignalStatusController.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
controller
;
/**
* @author Kent HAN
* @date 2022/12/1 15:07
*/
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiResponse
;
import
io.swagger.annotations.ApiResponses
;
import
lombok.RequiredArgsConstructor
;
import
net.wanji.com.cache.SignalCommandInterfaceCache
;
import
net.wanji.com.common.enums.SignalInterfaceTypeEnum
;
import
net.wanji.com.pojo.po.SignalStatusLogPO
;
import
net.wanji.com.pojo.vo.LightsStatusVO
;
import
net.wanji.com.service.controller.SignalStatusService
;
import
net.wanji.common.annotation.aspect.AspectLog
;
import
net.wanji.common.enums.BaseEnum
;
import
net.wanji.common.framework.rest.JsonViewObject
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.ws.rs.core.MediaType
;
import
java.util.List
;
/**
* 运行状态、告警、灯态信息接口
*
* @date 2022/11/15 9:38
*/
@Api
(
value
=
"运行状态、告警、灯态信息接口"
,
description
=
"运行状态、告警、灯态信息接口"
)
@RequestMapping
(
"/signalStatus"
)
@RestController
@RequiredArgsConstructor
public
class
SignalStatusController
{
private
final
SignalStatusService
signalStatusService
;
private
final
SignalCommandInterfaceCache
signalCommandInterfaceCache
;
private
SignalStatusService
getService
(
String
manufacturerId
)
{
return
(
SignalStatusService
)
(
signalCommandInterfaceCache
.
getService
(
manufacturerId
.
concat
(
SignalInterfaceTypeEnum
.
STATUS
.
getCode
())));
}
@AspectLog
(
description
=
"运行状态、告警数据"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
QUERY
)
@PostMapping
(
value
=
"/runningStatusAlarm"
,
produces
=
MediaType
.
APPLICATION_JSON
)
@ApiOperation
(
value
=
"运行状态、告警数据"
,
notes
=
"运行状态、告警数据"
,
response
=
SignalStatusLogPO
.
class
,
produces
=
MediaType
.
APPLICATION_JSON
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
SignalStatusLogPO
.
class
)
})
public
JsonViewObject
runningStatusAlarm
()
{
List
<
SignalStatusLogPO
>
signalStatusLogPOList
=
signalStatusService
.
runningStatusAlarm
();
JsonViewObject
jsonViewObject
=
JsonViewObject
.
newInstance
();
return
jsonViewObject
.
success
(
signalStatusLogPOList
);
}
@AspectLog
(
description
=
"灯态数据"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
QUERY
)
@PostMapping
(
value
=
"/lightStatus"
,
produces
=
MediaType
.
APPLICATION_JSON
)
@ApiOperation
(
value
=
"灯态数据"
,
notes
=
"灯态数据"
,
response
=
LightsStatusVO
.
class
,
produces
=
MediaType
.
APPLICATION_JSON
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
LightsStatusVO
.
class
)
})
public
JsonViewObject
lightStatus
()
{
List
<
LightsStatusVO
>
lightsStatusVOList
=
signalStatusService
.
lightStatus
();
JsonViewObject
jsonViewObject
=
JsonViewObject
.
newInstance
();
return
jsonViewObject
.
success
(
lightsStatusVOList
);
}
}
signal-communication-service/src/main/java/net/wanji/com/controller/StaticInfoController.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
controller
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiResponse
;
import
io.swagger.annotations.ApiResponses
;
import
lombok.RequiredArgsConstructor
;
import
net.wanji.com.cache.SignalCommandInterfaceCache
;
import
net.wanji.com.common.enums.SignalInterfaceTypeEnum
;
import
net.wanji.com.pojo.dto.CrossInfoDTO
;
import
net.wanji.com.pojo.dto.CrossSchedulesDTO
;
import
net.wanji.com.pojo.dto.PlanSectionDTO
;
import
net.wanji.com.pojo.dto.SchemePhaseLightsDTO
;
import
net.wanji.com.pojo.po.CrossInfoPO
;
import
net.wanji.com.pojo.po.CrossSchedulesPO
;
import
net.wanji.com.pojo.vo.PlanSectionVO
;
import
net.wanji.com.pojo.vo.SchemePhaseLightsVO
;
import
net.wanji.com.service.controller.StaticInfoService
;
import
net.wanji.common.annotation.aspect.AspectLog
;
import
net.wanji.common.enums.BaseEnum
;
import
net.wanji.common.framework.rest.JsonViewObject
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.ws.rs.core.MediaType
;
import
java.util.List
;
import
java.util.Objects
;
/**
* 静态信息接口
*
* @date 2022/11/15 9:38
*/
@Api
(
value
=
"静态信息接口"
,
description
=
"静态信息接口"
)
@RequestMapping
(
"/staticInfo"
)
@RestController
@RequiredArgsConstructor
public
class
StaticInfoController
{
private
final
StaticInfoService
staticInfoService
;
private
final
SignalCommandInterfaceCache
signalCommandInterfaceCache
;
private
StaticInfoService
getService
(
String
manufacturerId
)
{
return
(
StaticInfoService
)
(
signalCommandInterfaceCache
.
getService
(
manufacturerId
.
concat
(
SignalInterfaceTypeEnum
.
STATIC
.
getCode
())));
}
@AspectLog
(
description
=
"信号路口基础信息"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
QUERY
)
@PostMapping
(
value
=
"/crossInfo"
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@ApiOperation
(
value
=
"信号路口基础信息"
,
notes
=
"信号路口基础信息"
,
response
=
CrossInfoPO
.
class
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
CrossInfoPO
.
class
)
})
public
JsonViewObject
crossInfo
(
@RequestBody
@Validated
CrossInfoDTO
crossInfoDTO
)
throws
Exception
{
List
<
CrossInfoPO
>
crossInfoPOList
=
staticInfoService
.
crossBasicInfo
(
crossInfoDTO
);
JsonViewObject
jsonViewObject
=
JsonViewObject
.
newInstance
();
return
jsonViewObject
.
success
(
crossInfoPOList
);
}
@AspectLog
(
description
=
"方案数据-方案信息、相位信息、灯组信息"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
QUERY
)
@PostMapping
(
value
=
"/schemePhaseLights"
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@ApiOperation
(
value
=
"方案数据-方案信息、相位信息、灯组信息"
,
notes
=
"方案数据-方案信息、相位信息、灯组信息"
,
response
=
SchemePhaseLightsVO
.
class
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
SchemePhaseLightsVO
.
class
)
})
public
JsonViewObject
schemePhaseLights
(
@RequestBody
@Validated
SchemePhaseLightsDTO
schemePhaseLightsDTO
)
throws
Exception
{
// 更新数据库
staticInfoService
.
schemePhaseLights
(
schemePhaseLightsDTO
);
// 构造返回值
SchemePhaseLightsVO
schemePhaseLightsVO
=
staticInfoService
.
buildSchemePhaseLightsResponse
(
schemePhaseLightsDTO
);
JsonViewObject
jsonViewObject
=
JsonViewObject
.
newInstance
();
return
jsonViewObject
.
success
(
schemePhaseLightsVO
);
}
@AspectLog
(
description
=
"计划数据-计划信息、时段信息"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
QUERY
)
@PostMapping
(
value
=
"/planSection"
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@ApiOperation
(
value
=
"计划数据-计划信息、时段信息"
,
notes
=
"计划数据-计划信息、时段信息"
,
response
=
PlanSectionVO
.
class
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
PlanSectionVO
.
class
)
})
public
JsonViewObject
planSection
(
@RequestBody
@Validated
PlanSectionDTO
planSectionDTO
)
throws
Exception
{
// 更新数据库
staticInfoService
.
planSection
(
planSectionDTO
);
// 构造返回值
String
crossId
=
planSectionDTO
.
getCrossId
();
Integer
planNo
=
planSectionDTO
.
getPlanNo
();
PlanSectionVO
planSectionVO
=
new
PlanSectionVO
();
if
(
Objects
.
isNull
(
planNo
)
||
planNo
==
-
1
)
{
// 返回所有
planSectionVO
=
staticInfoService
.
buildPlanSectionResponse
(
crossId
);
}
else
{
// 按计划号返回
planSectionVO
=
staticInfoService
.
buildPlanSectionResponse
(
crossId
,
planNo
);
}
JsonViewObject
jsonViewObject
=
JsonViewObject
.
newInstance
();
return
jsonViewObject
.
success
(
planSectionVO
);
}
@AspectLog
(
description
=
"时间表数据"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
QUERY
)
@PostMapping
(
value
=
"/crossSchedules"
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@ApiOperation
(
value
=
"时间表数据"
,
notes
=
"时间表数据"
,
response
=
CrossSchedulesPO
.
class
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
CrossSchedulesPO
.
class
)
})
public
JsonViewObject
crossSchedules
(
@RequestBody
@Validated
CrossSchedulesDTO
crossSchedulesDTO
)
throws
Exception
{
// 更新数据库
staticInfoService
.
crossSchedules
(
crossSchedulesDTO
);
// 构造返回值
List
<
String
>
crossIdList
=
crossSchedulesDTO
.
getCrossIdList
();
List
<
CrossSchedulesPO
>
crossSchedulesPOList
=
staticInfoService
.
buildCrossSchedulesResponse
(
crossIdList
);
JsonViewObject
jsonViewObject
=
JsonViewObject
.
newInstance
();
return
jsonViewObject
.
success
(
crossSchedulesPOList
);
}
}
signal-communication-service/src/main/java/net/wanji/com/mapper/ManufacturerInfoMapper.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
mapper
;
import
net.wanji.com.pojo.po.ManufacturerInfoPO
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.List
;
/**
* @author Kent HAN
* @date 2022/11/15 16:48
*/
@Mapper
public
interface
ManufacturerInfoMapper
{
ManufacturerInfoPO
selectByCode
(
@Param
(
"code"
)
String
code
);
ManufacturerInfoPO
selectById
(
@Param
(
"manufacturerId"
)
Integer
manufacturerId
);
List
<
ManufacturerInfoPO
>
selectAll
();
List
<
ManufacturerInfoPO
>
selectByOptionalPartialName
(
@Param
(
"name"
)
String
name
);
void
insertOne
(
ManufacturerInfoPO
manufacturerInfoPO
);
void
updateOne
(
ManufacturerInfoPO
manufacturerInfoPO
);
void
deleteBatch
(
@Param
(
"ids"
)
List
<
Integer
>
ids
);
Integer
selectIdByNick
(
@Param
(
"manufacturerNick"
)
String
manufacturerNick
);
String
selectNickById
(
@Param
(
"manufacturerId"
)
Integer
manufacturerId
);
}
signal-communication-service/src/main/java/net/wanji/com/mapper/TCrossInfoMapper.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
mapper
;
import
net.wanji.com.pojo.po.CrossInfoPO
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.List
;
/**
* @author duanruiming
* @date 2023/05/09 9:10
*/
@Mapper
public
interface
TCrossInfoMapper
{
CrossInfoPO
selectByPrimaryKey
(
@Param
(
"key"
)
String
key
);
void
insertBatch
(
@Param
(
"entities"
)
List
<
CrossInfoPO
>
crossInfoPOList
);
List
<
String
>
selectCrossCodesByIds
(
@Param
(
"entities"
)
List
<
String
>
crossIdList
);
String
selectIdByCodeAndManufacturerId
(
@Param
(
"crossCode"
)
String
crossCode
,
@Param
(
"manufacturerId"
)
Integer
manufacturerId
);
List
<
CrossInfoPO
>
selectByManufacturerId
(
@Param
(
"manufacturerId"
)
Integer
manufacturerId
);
List
<
CrossInfoPO
>
selectByOptionals
(
@Param
(
"crossName"
)
String
crossName
,
@Param
(
"manufacturerId"
)
Integer
manufacturerId
);
void
insertOne
(
CrossInfoPO
crossInfoPO
);
void
updateOne
(
CrossInfoPO
crossInfoPO
);
void
deleteBatch
(
@Param
(
"ids"
)
List
<
String
>
ids
);
void
updateOneByCodeAndManufacturerId
(
CrossInfoPO
crossInfoPO
);
void
deleteById
(
String
id
);
List
<
CrossInfoPO
>
selectAll
();
}
signal-communication-service/src/main/java/net/wanji/com/netty/NettyServer.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
netty
;
import
io.netty.bootstrap.ServerBootstrap
;
import
io.netty.channel.*
;
import
io.netty.channel.group.ChannelGroup
;
import
io.netty.channel.group.DefaultChannelGroup
;
import
io.netty.channel.nio.NioEventLoopGroup
;
import
io.netty.channel.socket.nio.NioServerSocketChannel
;
import
io.netty.channel.socket.nio.NioSocketChannel
;
import
io.netty.handler.codec.LengthFieldBasedFrameDecoder
;
import
io.netty.util.concurrent.GlobalEventExecutor
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.com.cache.netty.NettyMessageCache
;
import
net.wanji.com.netty.handler.NettyServerHandler
;
import
net.wanji.com.pojo.netty.MessageResultPojo
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor
;
import
org.springframework.stereotype.Component
;
import
javax.annotation.Resource
;
import
java.nio.ByteOrder
;
import
java.time.LocalDateTime
;
import
java.time.ZoneOffset
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.Objects
;
import
java.util.concurrent.CountDownLatch
;
@Slf4j
@Component
public
class
NettyServer
{
private
static
final
Map
<
String
,
ChannelId
>
IP_PORT_CHANNEL_ID_MAP
=
new
HashMap
<>();
private
static
ChannelGroup
channelGroup
=
new
DefaultChannelGroup
(
GlobalEventExecutor
.
INSTANCE
);
@Resource
(
name
=
"threadPoolExecutor"
)
ThreadPoolTaskExecutor
threadPoolExecutor
;
/**
* 建立连接
*/
public
static
void
start
(
int
port
)
throws
InterruptedException
{
final
EventLoopGroup
parent
=
new
NioEventLoopGroup
();
final
EventLoopGroup
child
=
new
NioEventLoopGroup
();
ServerBootstrap
serverBootstrap
=
new
ServerBootstrap
();
serverBootstrap
.
group
(
parent
,
child
)
.
channel
(
NioServerSocketChannel
.
class
)
.
childOption
(
ChannelOption
.
TCP_NODELAY
,
true
)
.
childOption
(
ChannelOption
.
SO_KEEPALIVE
,
true
)
.
childHandler
(
new
ChannelInitializer
<
NioSocketChannel
>()
{
@Override
protected
void
initChannel
(
NioSocketChannel
socketChannel
)
{
socketChannel
.
pipeline
()
.
addFirst
()
// .addLast(new MessageDecoder())
// .addLast(new MessageEnCoder())
// 格林威解码器
.
addLast
(
new
LengthFieldBasedFrameDecoder
(
ByteOrder
.
LITTLE_ENDIAN
,
Integer
.
MAX_VALUE
,
4
,
2
,
0
,
0
,
true
))
.
addLast
(
new
NettyServerHandler
());
channelGroup
.
add
(
socketChannel
);
String
key
=
StringUtils
.
join
(
socketChannel
.
remoteAddress
().
getHostString
(),
":"
.
intern
(),
socketChannel
.
remoteAddress
().
getPort
());
log
.
info
(
"client {} is connect success"
,
key
);
IP_PORT_CHANNEL_ID_MAP
.
put
(
key
,
socketChannel
.
id
());
}
});
ChannelFuture
channelFuture
=
serverBootstrap
.
bind
(
port
).
sync
();
log
.
info
(
"server is started in {}"
,
channelFuture
.
channel
().
localAddress
());
//收到停止信号
Runtime
.
getRuntime
().
addShutdownHook
(
new
Thread
(()
->
{
//停掉所有的线程
channelGroup
.
close
().
syncUninterruptibly
();
parent
.
shutdownGracefully
();
child
.
shutdownGracefully
();
channelFuture
.
channel
().
closeFuture
().
syncUninterruptibly
();
log
.
warn
(
"server is closed"
);
}));
}
public
static
void
sendMessage
(
String
ip
,
int
port
,
String
message
)
{
Channel
channel
=
channelGroup
.
find
(
IP_PORT_CHANNEL_ID_MAP
.
get
(
StringUtils
.
join
(
ip
,
":"
,
port
)));
channel
.
writeAndFlush
(
message
);
}
public
static
Object
sendMessage
(
String
ip
,
int
port
,
String
message
,
String
command
)
{
sendMessage
(
ip
,
port
,
message
,
command
,
500
);
return
null
;
}
public
static
String
sendMessage
(
String
ip
,
int
port
,
String
message
,
String
command
,
int
waitMillisecond
)
{
CountDownLatch
countDownLatch
=
new
CountDownLatch
(
1
);
String
key
=
StringUtils
.
joinWith
(
"#"
,
ip
,
port
,
command
);
long
now
=
LocalDateTime
.
now
().
toInstant
(
ZoneOffset
.
of
(
"+8"
)).
toEpochMilli
();
MessageResultPojo
messageResultPojo
=
new
MessageResultPojo
(
command
,
countDownLatch
,
now
,
waitMillisecond
,
null
);
NettyMessageCache
.
NETTY_MESSAGE_RESULT_MAP
.
put
(
key
,
messageResultPojo
);
try
{
sendMessage
(
ip
,
port
,
message
);
countDownLatch
.
await
();
}
catch
(
InterruptedException
e
)
{
log
.
error
(
"error"
,
e
);
}
MessageResultPojo
resultPojo
=
NettyMessageCache
.
NETTY_MESSAGE_RESULT_MAP
.
remove
(
key
);
if
(
Objects
.
nonNull
(
resultPojo
))
{
return
resultPojo
.
getMessageHexStr
();
}
return
null
;
}
@Scheduled
(
fixedRate
=
300
)
public
void
checkWaitTimeout
()
{
long
now
=
LocalDateTime
.
now
().
toInstant
(
ZoneOffset
.
of
(
"+8"
)).
toEpochMilli
();
NettyMessageCache
.
NETTY_MESSAGE_RESULT_MAP
.
forEach
((
k
,
v
)
->
{
threadPoolExecutor
.
execute
(()
->
{
if
(
now
-
v
.
getStartTime
()
>
v
.
getWaitMillisecond
())
{
log
.
warn
(
"wait {}ms {} timeout"
,
v
.
getWaitMillisecond
(),
k
);
v
.
getCountDownLatch
().
countDown
();
}
});
});
}
}
\ No newline at end of file
signal-communication-service/src/main/java/net/wanji/com/netty/agreementcommon/AgreementCommon.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
netty
.
agreementcommon
;
import
java.util.Objects
;
/**
* @author duanruiming
* @date 2023/05/08 10:14
*/
public
class
AgreementCommon
{
public
static
String
getHexSign
(
String
data
)
{
//根据不同需求获取消息唯一标识
String
controlHex
=
data
.
substring
(
28
,
30
);
// 控制类型
if
(
Objects
.
equals
(
"11"
,
controlHex
))
{
return
"11"
;
}
else
{
String
hex
=
data
.
substring
(
28
,
32
);
return
hex
;
}
}
}
signal-communication-service/src/main/java/net/wanji/com/netty/codec/MessageDecoder.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
netty
.
codec
;
import
io.netty.buffer.ByteBuf
;
import
io.netty.channel.ChannelHandlerContext
;
import
io.netty.handler.codec.ByteToMessageDecoder
;
import
java.util.List
;
/**
* @author duanruiming
* @date 2023/05/08 10:07
*/
public
class
MessageDecoder
extends
ByteToMessageDecoder
{
/*
*自定义解码器
*/
@Override
protected
void
decode
(
ChannelHandlerContext
ctx
,
ByteBuf
in
,
List
<
Object
>
out
)
throws
Exception
{
}
}
signal-communication-service/src/main/java/net/wanji/com/netty/codec/MessageEnCoder.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
netty
.
codec
;
import
io.netty.buffer.ByteBuf
;
import
io.netty.channel.ChannelHandlerContext
;
import
io.netty.handler.codec.MessageToByteEncoder
;
import
net.wanji.common.utils.licenseUtils.AESUtils
;
/**
* @author duanruiming
* @date 2023/05/08 10:08
*/
public
class
MessageEnCoder
extends
MessageToByteEncoder
<
String
>
{
/**
* 自定义编码器
*
* @param ctx
* @param msg
* @param out
* @throws Exception
*/
@Override
protected
void
encode
(
ChannelHandlerContext
ctx
,
String
msg
,
ByteBuf
out
)
throws
Exception
{
out
.
writeBytes
(
AESUtils
.
parseHexStr2Byte
(
msg
));
}
}
signal-communication-service/src/main/java/net/wanji/com/netty/handler/NettyServerHandler.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
netty
.
handler
;
import
io.netty.channel.ChannelHandlerContext
;
import
io.netty.channel.ChannelInboundHandlerAdapter
;
import
lombok.NoArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.com.cache.CrossInfoCache
;
import
net.wanji.com.cache.netty.NettyMessageCache
;
import
net.wanji.com.common.enums.HexSign
;
import
net.wanji.com.netty.agreementcommon.AgreementCommon
;
import
net.wanji.com.pojo.netty.MessageResultPojo
;
import
net.wanji.com.pojo.po.CrossInfoPO
;
import
net.wanji.com.service.protocol.ProtocolConversionService
;
import
net.wanji.common.framework.spring.ServiceBeanContext
;
import
org.apache.commons.lang3.StringUtils
;
import
javax.annotation.Resource
;
@Slf4j
@NoArgsConstructor
public
class
NettyServerHandler
extends
ChannelInboundHandlerAdapter
{
@Resource
private
CrossInfoCache
crossInfoCache
;
/**
* 建立连接后
*
* @param ctx
* @throws Exception
*/
@Override
public
void
channelActive
(
ChannelHandlerContext
ctx
)
throws
Exception
{
log
.
info
(
"{} connection is active...."
,
ctx
.
channel
().
remoteAddress
());
ctx
.
fireChannelActive
();
}
/**
* 读
*
* @param ctx
* @param msg
* @throws Exception
*/
@Override
public
void
channelRead
(
ChannelHandlerContext
ctx
,
Object
msg
)
throws
Exception
{
String
key
=
ctx
.
channel
().
remoteAddress
().
toString
();
String
data
=
msg
.
toString
();
log
.
debug
(
"receive server data :{}"
,
data
);
String
hexSign
=
AgreementCommon
.
getHexSign
(
data
);
if
(
StringUtils
.
isEmpty
(
hexSign
))
{
log
.
error
(
"data unique hex sign error"
);
return
;
}
String
className
=
HexSign
.
getClassNameByHexSign
(
hexSign
);
ProtocolConversionService
bean
=
(
ProtocolConversionService
)
ServiceBeanContext
.
getBean
(
className
);
CrossInfoPO
crossInfo
=
crossInfoCache
.
getCrossInfo
(
key
);
String
result
=
bean
.
protocolConvert
(
crossInfo
);
if
(
StringUtils
.
isNotEmpty
(
result
))
{
setResultData
(
key
,
result
);
}
}
private
void
setResultData
(
String
key
,
String
data
)
{
MessageResultPojo
resultPojo
=
NettyMessageCache
.
NETTY_MESSAGE_RESULT_MAP
.
get
(
key
);
if
(
resultPojo
!=
null
)
{
resultPojo
.
setMessageHexStr
(
data
);
resultPojo
.
getCountDownLatch
().
countDown
();
}
}
/**
* 关闭
*
* @param ctx
* @throws Exception
*/
@Override
public
void
channelInactive
(
ChannelHandlerContext
ctx
)
throws
Exception
{
String
s
=
ctx
.
channel
().
remoteAddress
().
toString
();
log
.
error
(
"{} connection break"
,
s
);
ctx
.
fireChannelInactive
();
}
}
signal-communication-service/src/main/java/net/wanji/com/pojo/dto/CrossInfoDTO.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
pojo
.
dto
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.Pattern
;
/**
* @author Kent HAN
* @date 2022/11/15 9:57
*/
@Data
@ApiModel
(
value
=
"CrossInfoDTO"
,
description
=
"查询信号路口基础信息输入参数"
)
public
class
CrossInfoDTO
{
@ApiModelProperty
(
value
=
"厂商代码 HK"
)
@NotBlank
@Pattern
(
regexp
=
"^[A-Z]*$"
,
message
=
"厂商代码只能包含大写英文字母"
)
String
manufacturerCode
;
}
signal-communication-service/src/main/java/net/wanji/com/pojo/dto/CrossSchedulesDTO.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
pojo
.
dto
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotEmpty
;
import
javax.validation.constraints.Pattern
;
import
java.util.List
;
/**
* @author Kent HAN
* @date 2022/11/18 17:15
*/
@Data
@ApiModel
(
value
=
"CrossSchedulesDTO"
,
description
=
"查询时间表数据输入参数"
)
public
class
CrossSchedulesDTO
{
@ApiModelProperty
(
value
=
"厂商代码 HK"
)
@NotBlank
@Pattern
(
regexp
=
"^[A-Z]*$"
,
message
=
"厂商代码只能包含大写英文字母"
)
String
manufacturerCode
;
@ApiModelProperty
(
value
=
"路口列表"
)
@NotEmpty
List
<
String
>
crossIdList
;
}
signal-communication-service/src/main/java/net/wanji/com/pojo/dto/PlanSectionDTO.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
pojo
.
dto
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
javax.validation.constraints.Min
;
import
javax.validation.constraints.NotNull
;
import
javax.validation.constraints.Pattern
;
/**
* @author Kent HAN
* @date 2022/11/15 9:57
*/
@Data
@ApiModel
(
value
=
"PlanSectionDTO"
,
description
=
"查询计划数据-计划信息、时段信息输入参数"
)
public
class
PlanSectionDTO
{
@ApiModelProperty
(
value
=
"路口ID"
)
@Pattern
(
regexp
=
"^[A-Za-z0-9]{11}$"
,
message
=
"路口编号只能包含英文、数字,必须11个字符"
)
private
String
crossId
;
@ApiModelProperty
(
value
=
"计划号,-1代表所有"
)
@NotNull
(
message
=
"最小为-1,查所有"
)
@Min
(
value
=
-
1
,
message
=
"最小为-1,查所有"
)
private
Integer
planNo
;
}
signal-communication-service/src/main/java/net/wanji/com/pojo/dto/SchemePhaseLightsDTO.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
pojo
.
dto
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
javax.validation.constraints.Pattern
;
/**
* @author Kent HAN
* @date 2022/11/16 13:23
*/
@Data
@ApiModel
(
value
=
"SchemePhaseLightsDTO"
,
description
=
"查询方案数据-方案信息、相位信息、灯组信息输入参数"
)
public
class
SchemePhaseLightsDTO
{
@ApiModelProperty
(
value
=
"路口ID"
)
@Pattern
(
regexp
=
"^[A-Za-z0-9]{11}$"
,
message
=
"路口编号只能包含英文、数字,必须11个字符"
)
private
String
crossId
;
}
signal-communication-service/src/main/java/net/wanji/com/pojo/dto/TelesemeCodeDTO.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
pojo
.
dto
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* @author Kent HAN
* @date 2022/11/15 9:57
*/
@Data
@ApiModel
(
value
=
"TelesemeCodeDTO"
,
description
=
"信号机编号"
)
public
class
TelesemeCodeDTO
{
@ApiModelProperty
(
value
=
"信号机编号"
)
String
telesemeCode
;
}
signal-communication-service/src/main/java/net/wanji/com/pojo/netty/MessageResultPojo.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
pojo
.
netty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.concurrent.CountDownLatch
;
/**
* @author duanruiming
* @date 2023/05/08 14:14
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public
class
MessageResultPojo
{
/**
* 命令标识
*/
private
String
sign
;
/**
* 计数对象
*/
private
CountDownLatch
countDownLatch
;
/**
* 消息请求时间
*/
private
long
startTime
;
/**
* 灯态毫秒时长
*/
private
int
waitMillisecond
;
/**
* netty响应消息16进制字符串
*/
private
String
messageHexStr
;
}
signal-communication-service/src/main/java/net/wanji/com/pojo/po/BaseCrossInfo.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
pojo
.
po
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* @author Kent HAN
* @date 2022/11/15 10:14
*/
@Data
@ApiModel
(
value
=
"BaseCrossInfo"
,
description
=
"查询信号路口基础信息输出参数"
)
public
class
BaseCrossInfo
{
@ApiModelProperty
(
value
=
"信号机ID"
)
private
String
code
;
@ApiModelProperty
(
value
=
"路口ID"
)
private
String
crossId
;
@ApiModelProperty
(
value
=
"厂商代码"
)
private
String
manufacturerCode
;
}
signal-communication-service/src/main/java/net/wanji/com/pojo/po/CrossInfoPO.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
pojo
.
po
;
import
com.fasterxml.jackson.annotation.JsonIgnoreProperties
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.Date
;
/**
* @author Kent HAN
* @date 2022/11/15 10:48
*/
@Data
@JsonIgnoreProperties
(
value
=
{
"gmtCreate"
,
"gmtModified"
})
public
class
CrossInfoPO
{
@ApiModelProperty
(
value
=
"路口ID"
,
notes
=
""
)
private
String
id
;
/** 路口名称 */
@ApiModelProperty
(
value
=
"路口名称"
,
notes
=
""
)
private
String
name
;
/** 信号机编号 */
@ApiModelProperty
(
value
=
"信号机编号"
,
notes
=
""
)
private
String
code
;
/** 厂商ID */
@ApiModelProperty
(
value
=
"厂商ID"
,
notes
=
""
)
private
Integer
manufacturerId
;
/** 信号机IP */
@ApiModelProperty
(
value
=
"信号机IP"
,
notes
=
""
)
private
String
ip
;
/** 信号机端口 */
@ApiModelProperty
(
value
=
"信号机端口"
,
notes
=
""
)
private
Integer
port
;
/** 经纬度 */
@ApiModelProperty
(
value
=
"经纬度"
,
notes
=
""
)
private
String
location
;
/** 版本号 */
@ApiModelProperty
(
value
=
"版本号"
,
notes
=
""
)
private
String
version
;
/** 型号 */
@ApiModelProperty
(
value
=
"型号"
,
notes
=
""
)
private
String
model
;
/** 安装时间 */
@ApiModelProperty
(
value
=
"安装时间"
,
notes
=
""
)
private
Date
installTime
;
/** 创建时间 */
@ApiModelProperty
(
value
=
"创建时间"
,
notes
=
""
)
private
Date
gmtCreate
;
/** 修改时间 */
@ApiModelProperty
(
value
=
"修改时间"
,
notes
=
""
)
private
Date
gmtModified
;
}
signal-communication-service/src/main/java/net/wanji/com/pojo/po/CrossLightsPO.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
pojo
.
po
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.Date
;
/**
* @author Kent HAN
* @date 2022/11/18 13:20
*/
@Data
public
class
CrossLightsPO
{
/** 灯组ID */
@ApiModelProperty
(
value
=
"灯组ID"
,
notes
=
""
)
private
Integer
id
;
/** 灯组号 */
@ApiModelProperty
(
value
=
"灯组号"
,
notes
=
""
)
private
String
lightsNo
;
/** 灯组名称 */
@ApiModelProperty
(
value
=
"灯组名称"
,
notes
=
""
)
private
String
name
;
/** 灯组类型:1箭头;2圆饼,3行人 */
@ApiModelProperty
(
value
=
"灯组类型:1箭头2圆饼3行人"
,
notes
=
""
)
private
Integer
type
;
/** 灯组方向:1北;2东北;3东;4东南;5南;6西南;7西;8西北 */
@ApiModelProperty
(
value
=
"灯组方向:1北;2东北;3东;4东南;5南;6西南;7西;8西北"
,
notes
=
""
)
private
Integer
dir
;
/** 灯组转向:1左转;2右转;3直行;4左掉头;5直左;6直右;7右掉头;8向左合流;9向右合流;10左转加掉头;11右转加掉头;12直行加左掉头;13直行加右掉头;14左转右转;15左直右;16左转右转加掉头;17左直掉头;18左直右掉头;20行人 */
@ApiModelProperty
(
value
=
"灯组转向:1左转;2右转;3直行;4左掉头;5直左;6直右;7右掉头;8向左合流;9向右合流;10左转加掉头;11右转加掉头;12直行加左掉头;13直行加右掉头;14左转右转;15左直右;16左转右转加掉头;17左直掉头;18左直右掉头;20行人"
,
notes
=
""
)
private
Integer
turn
;
/** 路口ID */
@ApiModelProperty
(
value
=
"路口ID"
,
notes
=
""
)
private
String
crossId
;
/** 行人进出口:1进口;2出口,3进出口 */
@ApiModelProperty
(
value
=
"行人进出口:1进口2出口3进出口"
,
notes
=
""
)
private
Integer
inOutType
;
/** 创建时间 */
@ApiModelProperty
(
value
=
"创建时间"
,
notes
=
""
)
private
Date
gmtCreate
;
/** 修改时间 */
@ApiModelProperty
(
value
=
"修改时间"
,
notes
=
""
)
private
Date
gmtModified
;
}
signal-communication-service/src/main/java/net/wanji/com/pojo/po/CrossPhaseLightsPO.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
pojo
.
po
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.Date
;
/**
* @author Kent HAN
* @date 2022/11/18 14:32
*/
@Data
public
class
CrossPhaseLightsPO
{
/** 主键 */
@ApiModelProperty
(
name
=
"主键"
,
notes
=
""
)
private
Integer
id
;
/** 灯组ID */
@ApiModelProperty
(
name
=
"灯组ID"
,
notes
=
""
)
private
Integer
lightsId
;
/** 相位ID */
@ApiModelProperty
(
name
=
"相位ID"
,
notes
=
""
)
private
Integer
phaseId
;
/** 路口ID */
@ApiModelProperty
(
name
=
"路口ID"
,
notes
=
""
)
private
String
crossId
;
/** 创建时间 */
@ApiModelProperty
(
name
=
"创建时间"
,
notes
=
""
)
private
Date
gmtCreate
;
/** 修改时间 */
@ApiModelProperty
(
name
=
"修改时间"
,
notes
=
""
)
private
Date
gmtModified
;
}
signal-communication-service/src/main/java/net/wanji/com/pojo/po/CrossPhasePO.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
pojo
.
po
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.Date
;
/**
* @author Kent HAN
* @date 2022/11/18 8:49
*/
@Data
public
class
CrossPhasePO
{
/** 相位ID */
@ApiModelProperty
(
value
=
"相位ID"
,
notes
=
""
)
private
Integer
id
;
/** 相位号 */
@ApiModelProperty
(
value
=
"相位号"
,
notes
=
""
)
private
String
phaseNo
;
/** 相位名称 */
@ApiModelProperty
(
value
=
"相位名称"
,
notes
=
""
)
private
String
name
;
/** 相位序号 */
@ApiModelProperty
(
value
=
"相位序号"
,
notes
=
""
)
private
Integer
sort
;
/** 路口ID */
@ApiModelProperty
(
value
=
"路口ID"
,
notes
=
""
)
private
String
crossId
;
/** 方案ID */
@ApiModelProperty
(
value
=
"方案ID"
,
notes
=
""
)
private
Integer
planId
;
/** 环号 */
@ApiModelProperty
(
value
=
"环号"
,
notes
=
""
)
private
Integer
ringNo
;
/** 控制模式:1定周期;2绿灯;3黄灯;4红灯;5关灯;6绿闪;7黄闪;8红闪 */
@ApiModelProperty
(
value
=
"控制模式:1定周期;2绿灯;3黄灯;4红灯;5关灯;6绿闪;7黄闪;8红闪"
,
notes
=
""
)
private
Integer
controlMode
;
/** 相位时间 */
@ApiModelProperty
(
value
=
"相位时间"
,
notes
=
""
)
private
Integer
phaseTime
;
/** 绿灯时间 */
@ApiModelProperty
(
value
=
"绿灯时间"
,
notes
=
""
)
private
Integer
greenTime
;
/** 绿闪时间 */
@ApiModelProperty
(
value
=
"绿闪时间"
,
notes
=
""
)
private
Integer
greenFlashTime
;
/** 行闪时间 */
@ApiModelProperty
(
value
=
"行闪时间"
,
notes
=
""
)
private
Integer
pedFlashTime
;
/** 黄灯时间 */
@ApiModelProperty
(
value
=
"黄灯时间"
,
notes
=
""
)
private
Integer
yellowTime
;
/** 红灯时间 */
@ApiModelProperty
(
value
=
"红灯时间"
,
notes
=
""
)
private
Integer
redTime
;
/** 最小绿灯时间 */
@ApiModelProperty
(
value
=
"最小绿灯时间"
,
notes
=
""
)
private
Integer
minGreenTime
;
/** 最大绿灯时间 */
@ApiModelProperty
(
value
=
"最大绿灯时间"
,
notes
=
""
)
private
Integer
maxGreenTime
;
/** 创建时间 */
@ApiModelProperty
(
value
=
"创建时间"
,
notes
=
""
)
private
Date
gmtCreate
;
/** 修改时间 */
@ApiModelProperty
(
value
=
"修改时间"
,
notes
=
""
)
private
Date
gmtModified
;
}
signal-communication-service/src/main/java/net/wanji/com/pojo/po/CrossPlanPO.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
pojo
.
po
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.Date
;
/**
* @author Kent HAN
* @date 2022/11/18 15:52
*/
@Data
public
class
CrossPlanPO
{
/** 计划ID */
@ApiModelProperty
(
value
=
"计划ID"
,
notes
=
""
)
private
Integer
id
;
/** 计划号 */
@ApiModelProperty
(
value
=
"计划号"
,
notes
=
""
)
private
String
planNo
;
/** 计划名称 */
@ApiModelProperty
(
value
=
"计划名称"
,
notes
=
""
)
private
String
name
;
/** 路口ID */
@ApiModelProperty
(
value
=
"路口ID"
,
notes
=
""
)
private
String
crossId
;
/** 创建时间 */
@ApiModelProperty
(
value
=
"创建时间"
,
notes
=
""
)
private
Date
gmtCreate
;
/** 修改时间 */
@ApiModelProperty
(
value
=
"修改时间"
,
notes
=
""
)
private
Date
gmtModified
;
}
signal-communication-service/src/main/java/net/wanji/com/pojo/po/CrossSchedulesPO.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
pojo
.
po
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.Date
;
/**
* @author Kent HAN
* @date 2022/11/18 18:37
*/
@Data
public
class
CrossSchedulesPO
{
/** 日期ID */
@ApiModelProperty
(
value
=
"日期ID"
,
notes
=
""
)
private
Integer
id
;
/** 日期编号 */
@ApiModelProperty
(
value
=
"日期编号"
,
notes
=
""
)
private
Integer
scheduleNo
;
/** 日期名称 */
@ApiModelProperty
(
value
=
"日期名称"
,
notes
=
""
)
private
String
name
;
/** 路口ID */
@ApiModelProperty
(
value
=
"路口ID"
,
notes
=
""
)
private
String
crossId
;
/** 计划ID */
@ApiModelProperty
(
value
=
"计划ID"
,
notes
=
""
)
private
Integer
planId
;
/** 星期:1周一;2周二,3周三,4周四,5周五,6周六,7周日,0特殊日期 */
@ApiModelProperty
(
value
=
"星期:1周一"
,
notes
=
"2周二,3周三,4周四,5周五,6周六,7周日,0特殊日期"
)
private
Integer
week
;
/** 特殊日期 */
@ApiModelProperty
(
value
=
"特殊日期"
,
notes
=
""
)
private
Date
specialDate
;
/** 创建时间 */
@ApiModelProperty
(
value
=
"创建时间"
,
notes
=
""
)
private
Date
gmtCreate
;
/** 修改时间 */
@ApiModelProperty
(
value
=
"修改时间"
,
notes
=
""
)
private
Date
gmtModified
;
}
signal-communication-service/src/main/java/net/wanji/com/pojo/po/CrossSchemePO.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
pojo
.
po
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.Date
;
/**
* @author Kent HAN
* @date 2022/11/16 16:09
*/
@Data
public
class
CrossSchemePO
{
/** 方案ID */
@ApiModelProperty
(
value
=
"方案ID"
,
notes
=
""
)
private
Integer
id
;
/** 方案号 */
@ApiModelProperty
(
value
=
"方案号"
,
notes
=
""
)
private
String
schemeNo
;
/** 方案名称 */
@ApiModelProperty
(
value
=
"方案名称"
,
notes
=
""
)
private
String
name
;
/** 路口ID */
@ApiModelProperty
(
value
=
"路口ID"
,
notes
=
""
)
private
String
crossId
;
/** 周期 */
@ApiModelProperty
(
value
=
"周期"
,
notes
=
""
)
private
Integer
cycle
;
/** 协调相位ID */
@ApiModelProperty
(
value
=
"协调相位ID"
,
notes
=
""
)
private
Integer
coordPhase
;
/** 相位差 */
@ApiModelProperty
(
value
=
"相位差"
,
notes
=
""
)
private
Integer
offset
;
/** 数据来源:1信号机;2平台 */
@ApiModelProperty
(
value
=
"数据来源:1信号机;2平台"
,
notes
=
""
)
private
Integer
source
;
/** 删除标识:1删除;0未删除 */
@ApiModelProperty
(
value
=
"删除标识:1删除;0未删除"
,
notes
=
""
)
private
Integer
isDeleted
;
/** 创建时间 */
@ApiModelProperty
(
value
=
"创建时间"
,
notes
=
""
)
private
Date
gmtCreate
;
/** 修改时间 */
@ApiModelProperty
(
value
=
"修改时间"
,
notes
=
""
)
private
Date
gmtModified
;
}
signal-communication-service/src/main/java/net/wanji/com/pojo/po/CrossSectionPO.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
pojo
.
po
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.Date
;
/**
* @author Kent HAN
* @date 2022/11/18 16:14
*/
@Data
public
class
CrossSectionPO
{
/** 时段ID */
@ApiModelProperty
(
value
=
"时段ID"
,
notes
=
""
)
private
Integer
id
;
/** 时段号 */
@ApiModelProperty
(
value
=
"时段号"
,
notes
=
""
)
private
String
sectionNo
;
/** 开始时间 */
@ApiModelProperty
(
value
=
"开始时间"
,
notes
=
""
)
private
String
startTime
;
/** 结束时间 */
@ApiModelProperty
(
value
=
"结束时间"
,
notes
=
""
)
private
String
endTime
;
/** 路口ID */
@ApiModelProperty
(
value
=
"路口ID"
,
notes
=
""
)
private
String
crossId
;
/** 计划ID */
@ApiModelProperty
(
value
=
"计划ID"
,
notes
=
""
)
private
Integer
planId
;
/** 控制模式:1定周期;2绿波协调;3黄闪;4全红;5关灯;6单点自适应;7全感应;8半感应;9 */
@ApiModelProperty
(
value
=
"控制模式:1定周期;2绿波协调;3黄闪;4全红;5关灯;6单点自适应;7全感应;8半感应;9"
,
notes
=
""
)
private
Integer
controlMode
;
/** 方案ID */
@ApiModelProperty
(
value
=
"方案ID"
,
notes
=
""
)
private
Integer
scemeId
;
/** 创建时间 */
@ApiModelProperty
(
value
=
"创建时间"
,
notes
=
""
)
private
Date
gmtCreate
;
/** 修改时间 */
@ApiModelProperty
(
value
=
"修改时间"
,
notes
=
""
)
private
Date
gmtModified
;
}
signal-communication-service/src/main/java/net/wanji/com/pojo/po/ManufacturerApiInfoPO.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
pojo
.
po
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.Date
;
/**
* @author Kent HAN
* @date 2022/11/15 13:41
*/
@Data
public
class
ManufacturerApiInfoPO
{
/** 接口ID */
@ApiModelProperty
(
value
=
"接口ID"
,
notes
=
""
)
private
Integer
id
;
/** 接口代码 */
@ApiModelProperty
(
value
=
"接口代码"
,
notes
=
""
)
private
String
code
;
/** 接口名称 */
@ApiModelProperty
(
value
=
"接口名称"
,
notes
=
""
)
private
String
name
;
/** 接口类型:1、静态;2、动态;3、控制 */
@ApiModelProperty
(
value
=
"接口类型:1、静态;2、动态;3、控制"
,
notes
=
""
)
private
Integer
type
;
/** 请求方式:GET、POST */
@ApiModelProperty
(
value
=
"请求方式:GET、POST"
,
notes
=
""
)
private
String
method
;
/** 接口地址 */
@ApiModelProperty
(
value
=
"接口地址"
,
notes
=
""
)
private
String
address
;
/** 厂商ID */
@ApiModelProperty
(
value
=
"厂商ID"
,
notes
=
""
)
private
Integer
manufacturerId
;
/** 创建时间 */
@ApiModelProperty
(
value
=
"创建时间"
,
notes
=
""
)
private
Date
gmtCreate
;
/** 修改时间 */
@ApiModelProperty
(
value
=
"修改时间"
,
notes
=
""
)
private
Date
gmtModified
;
}
signal-communication-service/src/main/java/net/wanji/com/pojo/po/ManufacturerInfoPO.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
pojo
.
po
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.Date
;
/**
* @author Kent HAN
* @date 2022/11/15 16:47
*/
@Data
@ApiModel
(
value
=
"ManufacturerInfoPO"
,
description
=
"查询厂商列表返回值"
)
public
class
ManufacturerInfoPO
{
/** 厂商ID */
@ApiModelProperty
(
value
=
"厂商ID"
,
notes
=
""
)
private
Integer
id
;
/** 厂商代码 */
@ApiModelProperty
(
value
=
"厂商代码"
,
notes
=
""
)
private
String
code
;
/** 厂商名称 */
@ApiModelProperty
(
value
=
"厂商名称"
,
notes
=
""
)
private
String
name
;
/** 厂商简称 */
@ApiModelProperty
(
value
=
"厂商简称"
,
notes
=
""
)
private
String
nickName
;
/** 平台地址 */
@ApiModelProperty
(
value
=
"平台地址"
,
notes
=
""
)
private
String
address
;
/** 维护单位 */
@ApiModelProperty
(
value
=
"维护单位"
,
notes
=
""
)
private
String
maintenanceUnit
;
/** 创建时间 */
@ApiModelProperty
(
value
=
"创建时间"
,
notes
=
""
)
private
Date
gmtCreate
;
/** 修改时间 */
@ApiModelProperty
(
value
=
"修改时间"
,
notes
=
""
)
private
Date
gmtModified
;
}
signal-communication-service/src/main/java/net/wanji/com/pojo/po/SignalLampStatus.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
pojo
.
po
;
import
lombok.Data
;
import
java.util.HashMap
;
@Data
public
class
SignalLampStatus
{
//信号机编号
private
String
signalId
;
//运行模式
private
Integer
runmodel
;
//方案号
private
String
planId
;
//周期
private
Integer
cycleLen
;
//当前步
private
Integer
stepNo
;
//周期剩余时长
private
Integer
cycleCountDown
;
//相位号
private
String
phaseId
;
//当前步已走时间
private
Integer
stepGoneTime
;
//方向灯组状态
private
HashMap
<
String
,
HashMap
<
String
,
String
>>
dirLampGroupMap
;
//存放当前方案每个相位的时长
HashMap
<
String
,
Integer
>
phaseMap
;
//记录灯态变更时间
Long
updateTime
=
Long
.
valueOf
(
0
);
/**
* 信号机厂商编号
*/
private
String
signalType
;
/**
* 当前步长
*/
private
Integer
stepLen
;
/**
* 当前步剩余时长
*/
private
Integer
stepSurplusTime
;
/**
* 相位内步号
*/
private
Integer
stepNum
;
}
\ No newline at end of file
signal-communication-service/src/main/java/net/wanji/com/pojo/po/SignalRunring.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
pojo
.
po
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
@Data
@ApiModel
(
value
=
"SignalRunring"
,
description
=
"信号机运行环数实体"
)
public
class
SignalRunring
{
//绿灯1
@ApiModelProperty
(
value
=
"绿灯1时长"
)
private
Integer
oneTime
;
//绿灯2
@ApiModelProperty
(
value
=
"绿灯2时长"
)
private
Integer
twoTime
;
//绿灯3
@ApiModelProperty
(
value
=
"绿灯3时长"
)
private
Integer
threeTime
;
//黄灯4
@ApiModelProperty
(
value
=
"黄灯4时长"
)
private
Integer
fourTime
;
//红灯5
@ApiModelProperty
(
value
=
"红灯5时长"
)
private
Integer
fiveTime
;
//环号
@ApiModelProperty
(
value
=
"环号"
)
private
String
runringNo
;
//当前相位编号
@ApiModelProperty
(
value
=
"当前相位编号"
)
private
String
phaseId
;
//相位时长
@ApiModelProperty
(
value
=
"相位时长"
)
private
Integer
phaseLen
;
//相位剩余时长
@ApiModelProperty
(
value
=
"相位剩余时长"
)
private
Integer
phaseLeft
;
//当前步号
@ApiModelProperty
(
value
=
"当前步号"
)
private
Integer
stepNo
;
//当前步类型
@ApiModelProperty
(
value
=
"当前步类型"
)
private
Integer
stepType
;
//当前步长
@ApiModelProperty
(
value
=
"当前步长"
)
private
Integer
stepLen
;
//当前步剩余时间
@ApiModelProperty
(
value
=
"当前步剩余时间"
)
private
Integer
stepLeft
;
//下一相位id
@ApiModelProperty
(
value
=
"下一相位id"
)
private
String
nextPhaseId
;
//相位顺序号
@ApiModelProperty
(
value
=
"相位顺序号"
)
private
Integer
phaseOrderId
;
//当前灯色
@ApiModelProperty
(
value
=
"当前灯色"
)
private
Integer
lampStatus
;
//当前说明
// 11 灭灯
// 21 红灯
// 22 黄灯
// 23 绿灯
// 31 红黄
@ApiModelProperty
(
value
=
"当前灯色"
)
private
String
lampStatusName
;
}
\ No newline at end of file
signal-communication-service/src/main/java/net/wanji/com/pojo/po/SignalStatusLogPO.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
pojo
.
po
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.Pattern
;
import
java.util.Date
;
/**
* @author Kent HAN
* @date 2022/11/21 11:18
*/
@Data
public
class
SignalStatusLogPO
{
/** 日志ID */
@ApiModelProperty
(
value
=
"日志ID"
,
notes
=
""
)
private
Integer
id
;
/** 路口ID */
@ApiModelProperty
(
value
=
"路口ID"
,
notes
=
""
)
private
String
crossId
;
/** 信号机ID */
@ApiModelProperty
(
value
=
"信号机ID"
,
notes
=
""
)
@NotBlank
(
message
=
"信号机ID不能为空"
)
@Pattern
(
regexp
=
"^[\\w\\-]{1,50}$"
,
message
=
"信号机ID只能包含英文、数字、下划线和中横线,1~50个字符"
)
private
String
signalId
;
// @Pattern(regexp = "^[\\u4E00-\\u9FA5\\w\\-]{0,20}$", messsage="信号机名称只能包含中文、英文、数字、下划线和中横线,0~20个字符")
/** 信号状态:0离线;1在线 */
@ApiModelProperty
(
value
=
"信号状态:0离线;1在线"
,
notes
=
""
)
private
Integer
status
;
/** 故障类型:0正常;1检测器故障;2时钟故障;3电源故障;4驱动模块故障;5信号灯故障;6箱门开启;7方案错误;8绿冲突;9红全熄;10行人红熄; */
@ApiModelProperty
(
value
=
"故障类型:0正常;1检测器故障;2时钟故障;3电源故障;4驱动模块故障;5信号灯故障;6箱门开启;7方案错误;8绿冲突;9红全熄;10行人红熄;"
,
notes
=
""
)
private
Integer
faultType
;
/** 控制类型:1时间表;2全红;3黄闪;4锁定;5中心优化;6MEC优化;7现场手动 */
@ApiModelProperty
(
value
=
"控制类型:1时间表;2全红;3黄闪;4锁定;5中心优化;6MEC优化;7现场手动"
,
notes
=
""
)
private
Integer
controlType
;
/** 创建时间 */
@ApiModelProperty
(
value
=
"创建时间"
,
notes
=
""
)
private
Date
gmtCreate
;
}
signal-communication-service/src/main/java/net/wanji/com/pojo/vo/ControlCommandVO.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
pojo
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
javax.validation.constraints.*
;
import
java.util.List
;
/**
* 控制指令VO
*
* @author wuxiaokai
* @date 2022/11/15 15:05:57
*/
@Data
@ApiModel
(
value
=
"ControlCommandVO"
,
description
=
"相位锁定实体类"
)
public
class
ControlCommandVO
{
@ApiModelProperty
(
value
=
"路口编号"
,
notes
=
"路口编号"
)
@NotBlank
(
message
=
"路口编号不可为空"
)
@Pattern
(
regexp
=
"^[A-Za-z0-9]{11}$"
,
message
=
"路口编号只能包含英文、数字,必须11个字符"
)
private
String
crossCode
;
@ApiModelProperty
(
value
=
"1是;0否"
)
@NotNull
(
message
=
"控制类型不可为空,1是;0否"
)
@Max
(
value
=
1
,
message
=
"控制类型:1是;0否"
)
@Min
(
value
=
0
,
message
=
"控制类型:1是;0否"
)
private
Integer
command
;
@ApiModelProperty
(
value
=
"持续时间"
,
notes
=
"持续时间, 可为空,默认999"
)
private
Integer
duration
;
@ApiModelProperty
(
value
=
"锁定相位列表"
,
notes
=
"锁定相位列表, 可为空"
)
private
List
<
Integer
>
phaseList
;
}
signal-communication-service/src/main/java/net/wanji/com/pojo/vo/CrossLanesVo.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
pojo
.
vo
;
import
lombok.Data
;
import
lombok.ToString
;
@Data
@ToString
public
class
CrossLanesVo
{
/** 通道号 */
private
Integer
channelNo
;
/** 车道号 */
private
Integer
laneNo
;
/** 方向 */
private
Integer
direction
;
/** 转向 */
private
Integer
turn
;
/** 灯组类型 */
private
Integer
lampGroupType
;
}
\ No newline at end of file
signal-communication-service/src/main/java/net/wanji/com/pojo/vo/DelBaseConfigVO.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
pojo
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotEmpty
;
import
javax.validation.constraints.NotNull
;
import
java.util.List
;
/**
* @author duanruiming
* @date 2023/04/11 9:26
*/
@Data
@ApiModel
(
value
=
"delBaseConfigVO"
,
description
=
"信号机删除命令实体"
)
public
class
DelBaseConfigVO
{
@ApiModelProperty
(
value
=
"路口编号"
)
@NotBlank
private
String
crossId
;
@ApiModelProperty
(
value
=
"参数类型:4-相位、5-方案、6-计划、7-日期"
)
@NotNull
private
Integer
type
;
@ApiModelProperty
(
value
=
"需要删除对应配置的id列表"
)
@NotEmpty
private
List
<
Integer
>
ids
;
}
signal-communication-service/src/main/java/net/wanji/com/pojo/vo/DetailCrossInfoVO.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
pojo
.
vo
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
net.wanji.com.pojo.po.BaseCrossInfo
;
import
java.util.Date
;
import
java.util.List
;
@EqualsAndHashCode
(
callSuper
=
true
)
@Data
public
class
DetailCrossInfoVO
extends
BaseCrossInfo
{
//路口名称
private
String
crossName
;
//路口类型,2行人过街 3 丁字口 4 十字口 5 五岔口 6 六岔口
private
String
crossType
;
private
String
ip
;
private
Integer
port
;
// 版本号
private
String
version
;
// 型号
private
String
model
;
// 安装时间
private
Date
installTime
;
//经度
private
Double
lon
;
//纬度
private
Double
lat
;
//路口进口方向对象列表
private
List
<
Direction
>
directions
;
}
\ No newline at end of file
signal-communication-service/src/main/java/net/wanji/com/pojo/vo/Direction.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
pojo
.
vo
;
import
lombok.Data
;
import
java.util.List
;
@Data
public
class
Direction
{
//方向:0 北 1 东北 2 东 3 东南 4 南 5 西南 6 西 7 西北
private
Integer
direction
;
//道路信息列表
private
List
<
Road
>
roads
;
}
\ No newline at end of file
signal-communication-service/src/main/java/net/wanji/com/pojo/vo/LightsStatusVO.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
pojo
.
vo
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
net.wanji.com.pojo.po.BaseCrossInfo
;
import
net.wanji.com.pojo.po.SignalRunring
;
import
java.util.List
;
import
java.util.Map
;
/**
* @author Kent HAN
* @date 2022/11/21 14:04
*/
@EqualsAndHashCode
(
callSuper
=
true
)
@Data
public
class
LightsStatusVO
extends
BaseCrossInfo
{
//运行模式
@ApiModelProperty
(
value
=
"运行模式 `2=手动锁定当前相位`,`3=手动全红`,`4=手动黄闪`,`5=手动关灯`,"
+
"`6=全红闪控制`,`7=全黄控制`,`8=正常按计划运行`,`9=手动步进控制`,`10=自动步进控制`,`11=恢复时间表`,`255=临时控制方案`"
)
private
String
runMode
;
//控制模式
@ApiModelProperty
(
value
=
"控制模式"
)
private
String
controlMode
;
//相位方案号
@ApiModelProperty
(
value
=
"相位方案号"
)
private
String
phasePlanId
;
//相位配时方案
@ApiModelProperty
(
value
=
"相位配时方案"
)
private
String
timePlanId
;
//方案开始时间
@ApiModelProperty
(
value
=
"方案开始时间"
)
private
String
planStartTime
;
//方案运行时间
@ApiModelProperty
(
value
=
"方案运行时间"
)
private
Integer
runTime
;
//相位周期剩余时长
@ApiModelProperty
(
value
=
"相位周期剩余时长"
)
private
Integer
cycleCountDown
;
@ApiModelProperty
(
value
=
"相位周期剩余时长"
)
private
Integer
cyclePhaseCountDown
;
//相位周期时长
@ApiModelProperty
(
value
=
"相位周期时长"
)
private
Integer
cycleLen
;
//运行环数组
private
List
<
SignalRunring
>
runrings
;
//相位编号
@ApiModelProperty
(
value
=
"当前相位号"
)
private
String
phaseId
;
//方案编号
@ApiModelProperty
(
value
=
"当前方案号"
)
private
String
planId
;
//灯组状态
@ApiModelProperty
(
value
=
"灯组状态"
)
private
Map
<
String
,
Object
>
dirLampGroupMap
;
//相位对象:key:相位编号,value:绿灯时长
@ApiModelProperty
(
value
=
"相位对象:key相位编号,value绿灯时长"
)
private
Map
<
String
,
Object
>
phaseMap
;
public
void
setCycleCountDown
(
Integer
cycleCountDown
)
{
if
(
null
==
cycleCountDown
)
{
this
.
cycleCountDown
=
-
1
;
}
else
{
this
.
cycleCountDown
=
cycleCountDown
;
}
}
public
Integer
getCycleCountDown
()
{
if
(
null
==
cycleCountDown
)
{
return
-
1
;
}
return
cycleCountDown
;
}
}
signal-communication-service/src/main/java/net/wanji/com/pojo/vo/PhaseTimingSendVO.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
pojo
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.Setter
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotEmpty
;
import
javax.validation.constraints.Pattern
;
import
java.util.List
;
/**
* 下发相位参数VO
*
* @author wuxiaokai
* @date 2022/12/9 11:08:51
*/
@Setter
@Getter
@ApiModel
(
value
=
"下发相位参数输入参数"
,
description
=
"下发相位参数输入参数"
)
public
class
PhaseTimingSendVO
{
@ApiModelProperty
(
value
=
"路口编号"
,
notes
=
"路口编号"
)
@NotBlank
(
message
=
"路口编号不可为空"
)
@Pattern
(
regexp
=
"^[A-Za-z0-9]{11}$"
,
message
=
"路口编号只能包含英文、数字,必须11个字符"
)
private
String
crossCode
;
@ApiModelProperty
(
value
=
"需要下发的相位列表"
,
notes
=
"需要下发的相位列表"
)
@NotEmpty
(
message
=
"相位列表不可为空"
)
private
List
<
Phase
>
phaseList
;
/**
* 相位
*/
@Setter
@Getter
public
static
class
Phase
{
/**
* 相位号
*/
@ApiModelProperty
(
value
=
"相位号"
,
notes
=
"相位号"
)
private
Integer
phaseNo
;
/**
* 相位描述
*/
@ApiModelProperty
(
value
=
"相位描述"
,
notes
=
"相位描述"
)
private
String
desc
;
/**
* 黄灯
*/
@ApiModelProperty
(
value
=
"黄灯"
,
notes
=
"黄灯"
)
private
Integer
yellow
;
/**
* 全红
*/
@ApiModelProperty
(
value
=
"全红"
,
notes
=
"全红"
)
private
Integer
allred
;
/**
* 绿闪
*/
@ApiModelProperty
(
value
=
"绿闪"
,
notes
=
"绿闪"
)
private
String
greenFlash
;
/**
* 红闪
*/
@ApiModelProperty
(
value
=
"红闪"
,
notes
=
"红闪"
)
private
String
redFlash
;
/**
* 最小绿
*/
@ApiModelProperty
(
value
=
"最小绿"
,
notes
=
"最小绿"
)
private
String
minGreen
;
/**
* 最大绿
*/
@ApiModelProperty
(
value
=
"最大绿"
,
notes
=
"最大绿"
)
private
String
maxGreen
;
/**
* 相位关联的车道列表
*/
@ApiModelProperty
(
value
=
"相位关联的车道列表"
,
notes
=
"相位关联的车道列表"
)
private
List
<
Lane
>
lanes
;
@Setter
@Getter
public
static
class
Lane
{
/**
* 车道号
*/
@ApiModelProperty
(
value
=
"车道号"
,
notes
=
"车道号"
)
private
Integer
laneNo
;
/**
* 方向
*/
@ApiModelProperty
(
value
=
"方向"
,
notes
=
"方向"
)
private
Integer
direction
;
/**
* 转向
*/
@ApiModelProperty
(
value
=
"转向"
,
notes
=
"转向"
)
private
Integer
turn
;
}
}
}
signal-communication-service/src/main/java/net/wanji/com/pojo/vo/PlanSectionVO.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
pojo
.
vo
;
import
lombok.Data
;
import
net.wanji.com.pojo.po.CrossPlanPO
;
import
net.wanji.com.pojo.po.CrossSectionPO
;
import
java.util.List
;
/**
* @author Kent HAN
* @date 2022/12/1 14:07
*/
@Data
public
class
PlanSectionVO
{
private
List
<
CrossPlanPO
>
crossPlanPOList
;
private
List
<
CrossSectionPO
>
crossSectionPOList
;
}
signal-communication-service/src/main/java/net/wanji/com/pojo/vo/PlanSendVO.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
pojo
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.Setter
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotEmpty
;
import
javax.validation.constraints.Pattern
;
import
java.util.List
;
/**
* 信号机计划下发VO
*
* @author wuxiaokai
* @date 2022/11/24 15:55:08
*/
@Setter
@Getter
@ApiModel
(
value
=
"信号机计划下发输入参数"
,
description
=
"信号机计划下发输入参数"
)
public
class
PlanSendVO
{
@ApiModelProperty
(
value
=
"路口编号"
,
notes
=
"路口编号"
)
@NotBlank
(
message
=
"路口编号不可为空"
)
@Pattern
(
regexp
=
"^[A-Za-z0-9]{11}$"
,
message
=
"路口编号只能包含英文、数字,必须11个字符"
)
private
String
crossCode
;
@ApiModelProperty
(
value
=
"计划列表"
,
notes
=
"计划列表"
)
@NotEmpty
(
message
=
"计划列表不可为空"
)
private
List
<
Plan
>
planList
;
@Setter
@Getter
public
static
class
Plan
{
/**
* 计划号
*/
@ApiModelProperty
(
value
=
"计划号"
,
notes
=
"计划号"
)
private
String
planNo
;
/**
* 计划描述
*/
@ApiModelProperty
(
value
=
"计划描述"
,
notes
=
"计划描述"
)
private
String
planDescribe
;
/**
* 时段列表
*/
@ApiModelProperty
(
value
=
"时段列表"
,
notes
=
"时段列表"
)
private
List
<
Section
>
sectionList
;
@Setter
@Getter
public
static
class
Section
{
/**
* 时段号
*/
@ApiModelProperty
(
value
=
"时段号"
,
notes
=
"时段号"
)
private
String
sectionNo
;
/**
* 开始时间
*/
@ApiModelProperty
(
value
=
"开始时间"
,
notes
=
"开始时间"
)
private
String
beginTime
;
/**
* 结束时间
*/
@ApiModelProperty
(
value
=
"结束时间"
,
notes
=
"结束时间"
)
private
String
endTime
;
/**
* 控制模式:1定周期;2绿灯;3黄灯;4红灯;5关灯;6绿闪;7黄闪;8红闪
*/
@ApiModelProperty
(
value
=
"控制模式:1定周期;2绿灯;3黄灯;4红灯;5关灯;6绿闪;7黄闪;8红闪"
,
notes
=
""
)
private
String
controlMode
;
/**
* 方案号
*/
@ApiModelProperty
(
value
=
"方案号"
,
notes
=
""
)
private
String
patternNo
;
}
}
}
signal-communication-service/src/main/java/net/wanji/com/pojo/vo/Road.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
pojo
.
vo
;
import
lombok.Data
;
@Data
public
class
Road
{
//道路编号
private
String
roadId
;
//道路名称
private
String
roadName
;
}
\ No newline at end of file
signal-communication-service/src/main/java/net/wanji/com/pojo/vo/RunningStatusVO.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
pojo
.
vo
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
net.wanji.com.pojo.po.BaseCrossInfo
;
/**
* @author Kent HAN
* @date 2022/11/21 9:44
*/
@EqualsAndHashCode
(
callSuper
=
true
)
@Data
public
class
RunningStatusVO
extends
BaseCrossInfo
{
// 信号状态:0离线;1在线
private
Integer
status
;
// 故障类型:0正常;1检测器故障;2时钟故障;3电源故障;4驱动模块故障;5信号灯故障;6箱门开启;7方案错误;8绿冲突;9红全熄;10行人红熄
private
Integer
faultType
;
// 控制模式:1时间表;2全红;3黄闪;4锁定;5中心优化;6MEC优化;7现场手动
private
Integer
controlType
;
}
signal-communication-service/src/main/java/net/wanji/com/pojo/vo/ScheduleSendVO.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
pojo
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.Setter
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotEmpty
;
import
javax.validation.constraints.Pattern
;
import
java.util.List
;
/**
* 时间表下发VO
*
* @author wuxiaokai
* @date 2022/11/23 14:11:09
*/
@Setter
@Getter
@ApiModel
(
value
=
"信号机时间表下发输入参数"
,
description
=
"信号机时间表下发输入参数"
)
public
class
ScheduleSendVO
{
@ApiModelProperty
(
value
=
"路口编号"
,
notes
=
"路口编号"
)
@NotBlank
(
message
=
"路口编号不可为空"
)
@Pattern
(
regexp
=
"^[A-Za-z0-9]{11}$"
,
message
=
"路口编号只能包含英文、数字,必须11个字符"
)
private
String
crossCode
;
@ApiModelProperty
(
value
=
"时间表"
,
notes
=
"时间表"
)
@NotEmpty
(
message
=
"时间表不可为空"
)
private
List
<
Schedule
>
schedules
;
@Setter
@Getter
public
static
class
Schedule
{
/**
* 调度号
*/
private
String
scheduleNo
;
/**
* 星期列表
*/
@ApiModelProperty
(
value
=
"星期列表"
,
notes
=
"星期列表"
)
private
List
<
Week
>
weeks
;
/**
* 特殊日期列表
*/
@ApiModelProperty
(
value
=
"特殊日期列表"
,
notes
=
"特殊日期列表"
)
private
List
<
SpecialDay
>
specialDays
;
@Setter
@Getter
public
static
class
Week
{
@ApiModelProperty
(
value
=
"星期"
,
notes
=
"星期"
)
private
Integer
weekNum
;
@ApiModelProperty
(
value
=
"计划号"
,
notes
=
"计划号"
)
private
Integer
planNo
;
}
@Setter
@Getter
public
static
class
SpecialDay
{
/**
* 日期 2019-05-01
*/
@ApiModelProperty
(
value
=
"日期"
,
notes
=
"日期"
)
private
String
dateStr
;
/**
* 计划号
*/
@ApiModelProperty
(
value
=
"计划号"
,
notes
=
"计划号"
)
private
Integer
planNo
;
}
}
}
signal-communication-service/src/main/java/net/wanji/com/pojo/vo/SchemePhaseLightsVO.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
pojo
.
vo
;
import
lombok.Data
;
import
net.wanji.com.pojo.po.CrossLightsPO
;
import
net.wanji.com.pojo.po.CrossPhaseLightsPO
;
import
net.wanji.com.pojo.po.CrossPhasePO
;
import
net.wanji.com.pojo.po.CrossSchemePO
;
import
java.util.List
;
/**
* @author Kent HAN
* @date 2022/12/1 11:23
*/
@Data
public
class
SchemePhaseLightsVO
{
private
List
<
CrossSchemePO
>
crossSchemeList
;
private
List
<
CrossPhasePO
>
crossPhaseList
;
private
List
<
CrossLightsPO
>
crossLightsList
;
private
List
<
CrossPhaseLightsPO
>
crossPhaseLightsPOList
;
}
signal-communication-service/src/main/java/net/wanji/com/pojo/vo/SchemeSendVO.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
pojo
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.Setter
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotEmpty
;
import
java.util.List
;
/**
* 信号机方案下发VO
*
* @author wuxiaokai
* @date 2022/12/6 16:14:27
*/
@Setter
@Getter
@ApiModel
(
value
=
"信号机方案下发输入参数"
,
description
=
"信号机方案下发输入参数"
)
public
class
SchemeSendVO
{
@ApiModelProperty
(
value
=
"路口编号"
,
notes
=
"路口编号"
)
@NotBlank
(
message
=
"路口编号不可为空"
)
@javax
.
validation
.
constraints
.
Pattern
(
regexp
=
"^[A-Za-z0-9]{11}$"
,
message
=
"路口编号只能包含英文、数字,必须11个字符"
)
private
String
crossCode
;
@ApiModelProperty
(
value
=
"方案列表"
,
notes
=
"方案列表"
)
@NotEmpty
(
message
=
"方案列表不可为空"
)
private
List
<
Pattern
>
patternList
;
/**
* 方案
*/
@Setter
@Getter
public
static
class
Pattern
{
/**
* 方案号
*/
@ApiModelProperty
(
value
=
"方案号"
,
notes
=
""
)
private
String
patternNo
;
/**
* 方案名称
*/
@ApiModelProperty
(
value
=
"方案名称"
,
notes
=
""
)
private
String
patternName
;
/**
* 方案周期
*/
@ApiModelProperty
(
value
=
"方案周期"
,
notes
=
""
)
private
String
cycle
;
/**
* 协调相位号
*/
@ApiModelProperty
(
value
=
"协调相位号"
,
notes
=
""
)
private
String
coordPhase
;
/**
* 协调相位差
*/
@ApiModelProperty
(
value
=
"协调相位差"
,
notes
=
"协调相位差"
)
private
String
offset
;
@ApiModelProperty
(
value
=
"环列表"
,
notes
=
"环列表"
)
private
List
<
Ring
>
rings
;
@Setter
@Getter
public
static
class
Ring
{
@ApiModelProperty
(
value
=
"环号"
,
notes
=
"环号"
)
private
String
ringNo
;
@ApiModelProperty
(
value
=
"相位列表"
,
notes
=
"相位列表"
)
private
List
<
Phase
>
phaseList
;
/**
* 相位
*/
@Setter
@Getter
public
static
class
Phase
{
/**
* 相位号
*/
@ApiModelProperty
(
value
=
"相位号"
,
notes
=
""
)
private
String
phaseNo
;
/**
* 相位名称
*/
@ApiModelProperty
(
value
=
"相位名称"
,
notes
=
""
)
private
String
phaseName
;
/**
* 相位序号
*/
@ApiModelProperty
(
value
=
"相位序号"
,
notes
=
""
)
private
String
sort
;
/**
* 控制模式:1定周期;2绿灯;3黄灯;4红灯;5关灯;6绿闪;7黄闪;8红闪
*/
@ApiModelProperty
(
value
=
"控制模式:1定周期;2绿灯;3黄灯;4红灯;5关灯;6绿闪;7黄闪;8红闪"
,
notes
=
""
)
private
String
controlMode
;
/**
* 最小绿灯时间
*/
@ApiModelProperty
(
value
=
"最小绿灯时间"
,
notes
=
""
)
private
String
minGreenTime
;
/**
* 最大绿灯时间
*/
@ApiModelProperty
(
value
=
"最大绿灯时间"
,
notes
=
""
)
private
String
maxGreenTime
;
/**
* 相位时间
*/
@ApiModelProperty
(
value
=
"相位时间"
,
notes
=
""
)
private
String
phaseTime
;
/**
* 绿灯时间
*/
@ApiModelProperty
(
value
=
"绿灯时间"
,
notes
=
""
)
private
String
greenTime
;
/**
* 绿闪时间
*/
@ApiModelProperty
(
value
=
"绿闪时间"
,
notes
=
""
)
private
String
greenFlashTime
;
/**
* 行闪时间
*/
@ApiModelProperty
(
value
=
"行闪时间"
,
notes
=
""
)
private
String
pedFlashTime
;
/**
* 黄灯时间
*/
@ApiModelProperty
(
value
=
"黄灯时间"
,
notes
=
""
)
private
String
yellowTime
;
/**
* 红灯时间
*/
@ApiModelProperty
(
value
=
"红灯时间"
,
notes
=
""
)
private
String
redTime
;
}
//@Setter
//@Getter
//public static class Lights {
//
// /**
// * 灯组号
// */
// @ApiModelProperty(value = "灯组号", notes = "")
// private String lightsNo;
// /**
// * 灯组名称
// */
// @ApiModelProperty(value = "灯组名称", notes = "")
// private String name;
// /**
// * 灯组类型:1箭头;2圆饼,3行人
// */
// @ApiModelProperty(value = "灯组类型:1箭头2圆饼3行人", notes = "")
// private String type;
// /**
// * 灯组方向:1北;2东北;3东;4东南;5南;6西南;7西;8西北
// */
// @ApiModelProperty(value = "灯组方向:1北;2东北;3东;4东南;5南;6西南;7西;8西北", notes = "")
// private String dir;
// /**
// * 灯组转向:1左转;2右转;3直行;4左掉头;5直左;6直右;7右掉头;8向左合流;9向右合流;10左转加掉头;11右转加掉头;12直行加左掉头;13直行加右掉头;14左转右转;15左直右;16左转右转加掉头;17左直掉头;18左直右掉头;20行人
// */
// @ApiModelProperty(value = "灯组转向:1左转;2右转;3直行;4左掉头;5直左;6直右;7右掉头;8向左合流;9向右合流;10左转加掉头;11右转加掉头;12直行加左掉头;13直行加右掉头;14左转右转;15左直右;16左转右转加掉头;17左直掉头;18左直右掉头;20行人", notes = "")
// private String turn;
// /**
// * 行人进出口:1进口;2出口,3进出口
// */
// @ApiModelProperty(value = "行人进出口:1进口2出口,3进出口", notes = "")
// private String inOutType;
//}
}
}
}
signal-communication-service/src/main/java/net/wanji/com/service/CommonService.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
service
;
import
lombok.NonNull
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.com.mapper.TCrossInfoMapper
;
import
net.wanji.com.mapper.ManufacturerInfoMapper
;
import
net.wanji.com.pojo.po.CrossInfoPO
;
import
net.wanji.com.pojo.po.ManufacturerInfoPO
;
import
org.springframework.stereotype.Service
;
/**
* @author duanruiming
* @date 2023/05/08 16:12
*/
@Slf4j
@Service
@RequiredArgsConstructor
public
class
CommonService
{
private
final
TCrossInfoMapper
TCrossInfoMapper
;
private
final
ManufacturerInfoMapper
manufacturerInfoMapper
;
/**
* 通过路口编号获取厂商编码
*
* @param crossId
* @return
*/
@NonNull
public
String
getManufacturerCodeByCrossId
(
String
crossId
)
{
CrossInfoPO
crossInfoPO
=
TCrossInfoMapper
.
selectByPrimaryKey
(
crossId
);
Integer
manufacturerId
=
crossInfoPO
.
getManufacturerId
();
ManufacturerInfoPO
manufacturerInfoPO
=
manufacturerInfoMapper
.
selectById
(
manufacturerId
);
return
manufacturerInfoPO
.
getCode
();
}
}
signal-communication-service/src/main/java/net/wanji/com/service/controller/BeanMarkService.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
service
.
controller
;
/**
* @author duanruiming
* @date 2023/05/09 9:24
*/
public
interface
BeanMarkService
{
String
getBeanMark
();
}
signal-communication-service/src/main/java/net/wanji/com/service/controller/ControlCommandService.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
service
.
controller
;
import
net.wanji.common.framework.rest.JsonViewObject
;
import
net.wanji.databus.vo.*
;
/**
* @author duanruiming
* @date 2023/05/08 10:42
*/
public
interface
ControlCommandService
extends
BeanMarkService
{
/**
* 方案下发
*/
JsonViewObject
schemeSend
(
SchemeSendVO
schemeSendVO
)
throws
Exception
;
/**
* 计划下发
*
* @param planSendVO 计划下发VO
* @return
*/
JsonViewObject
planSend
(
PlanSendVO
planSendVO
)
throws
Exception
;
/**
* 时间表下发
*
* @param scheduleSendVO 时间表下发VO
* @return
*/
JsonViewObject
scheduleSend
(
ScheduleSendVO
scheduleSendVO
)
throws
Exception
;
/**
* 锁定控制
*
* @param commandVO 控制指令VO
* @return
* @throws Exception 异常
*/
JsonViewObject
lockControl
(
ControlCommandVO
commandVO
)
throws
Exception
;
/**
* 步进控制
*
* @param code 信号机编号
* @param command 1 开始步进 0 取消步进
* @param stepNum 0 顺序步进 n 跳过n个相位
* @return
* @throws Exception 异常
*/
JsonViewObject
stepControl
(
String
code
,
Integer
command
,
Integer
stepNum
)
throws
Exception
;
/**
* 设置信号机控制模式
*
* @param code 信号机编号
* @param command 指令 1 开 0 关
* @param commandType 命令类型
* @return
* @throws Exception 异常
*/
JsonViewObject
setSignalControl
(
String
code
,
Integer
command
,
Integer
commandType
)
throws
Exception
;
/**
* 恢复时间表
*
* @param code 信号机编号
* @return
*/
JsonViewObject
recoverSchedule
(
String
code
)
throws
Exception
;
/**
* 相位配时下发
*
* @return
* @throws InterruptedException 中断异常
*/
JsonViewObject
phaseTimingSend
(
PhaseTimingSendVO
phaseTimingSendVO
)
throws
Exception
;
/**
* 相位差下发
*/
JsonViewObject
phaseDiffSend
();
/**
* 删除信号机配置参数
* 删除信号机配置参数-目前支持相位、方案、计划、日期
*
* @param delBaseConfigPO
* @return
*/
// JsonViewObject delBaseConfig(DelBaseConfigPOfigPO delBaseConfigPO) throws Exception;
}
signal-communication-service/src/main/java/net/wanji/com/service/controller/SignalStatusService.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
service
.
controller
;
import
net.wanji.com.pojo.po.SignalStatusLogPO
;
import
net.wanji.com.pojo.vo.LightsStatusVO
;
import
java.util.List
;
/**
* @author Kent HAN
* @date 2022/11/21 9:09
*/
public
interface
SignalStatusService
extends
BeanMarkService
{
List
<
SignalStatusLogPO
>
runningStatusAlarm
();
/**
* todo 提供给其他平台,需要确认以厂商还是以路口形式推送数据
*
* @param crossId
* @return
*/
List
<
SignalStatusLogPO
>
runningStatusAlarm
(
String
crossId
);
List
<
LightsStatusVO
>
lightStatus
();
List
<
LightsStatusVO
>
lightStatus
(
String
crossId
);
}
signal-communication-service/src/main/java/net/wanji/com/service/controller/StaticInfoService.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
service
.
controller
;
import
net.wanji.com.pojo.dto.CrossInfoDTO
;
import
net.wanji.com.pojo.dto.CrossSchedulesDTO
;
import
net.wanji.com.pojo.dto.PlanSectionDTO
;
import
net.wanji.com.pojo.dto.SchemePhaseLightsDTO
;
import
net.wanji.com.pojo.po.CrossInfoPO
;
import
net.wanji.com.pojo.po.CrossSchedulesPO
;
import
net.wanji.com.pojo.vo.PlanSectionVO
;
import
net.wanji.com.pojo.vo.SchemePhaseLightsVO
;
import
java.util.List
;
public
interface
StaticInfoService
extends
BeanMarkService
{
List
<
CrossInfoPO
>
crossBasicInfo
(
CrossInfoDTO
crossInfoDTO
)
throws
Exception
;
void
schemePhaseLights
(
SchemePhaseLightsDTO
schemePhaseLightsDTO
)
throws
Exception
;
void
planSection
(
PlanSectionDTO
planSectionDTO
)
throws
Exception
;
void
crossSchedules
(
CrossSchedulesDTO
crossSchedulesDTO
)
throws
Exception
;
SchemePhaseLightsVO
buildSchemePhaseLightsResponse
(
SchemePhaseLightsDTO
schemePhaseLightsDTO
);
PlanSectionVO
buildPlanSectionResponse
(
String
crossId
);
PlanSectionVO
buildPlanSectionResponse
(
String
crossId
,
Integer
planNo
);
List
<
CrossSchedulesPO
>
buildCrossSchedulesResponse
(
List
<
String
>
crossIdList
);
}
signal-communication-service/src/main/java/net/wanji/com/service/controller/dt/impl/DTControlCommandServiceImpl.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
service
.
controller
.
dt
.
impl
;
import
net.wanji.com.service.controller.ControlCommandService
;
import
net.wanji.common.enums.BaseEnum
;
import
net.wanji.common.framework.rest.JsonViewObject
;
import
net.wanji.databus.vo.*
;
import
org.springframework.stereotype.Service
;
/**
* @author duanruiming
* @date 2023/05/08 10:43
*/
@Service
public
class
DTControlCommandServiceImpl
implements
ControlCommandService
{
@Override
public
String
getBeanMark
()
{
return
BaseEnum
.
VendorTypeEnum
.
DT
.
getNick
();
}
@Override
public
JsonViewObject
schemeSend
(
SchemeSendVO
schemeSendVO
)
throws
Exception
{
return
null
;
}
@Override
public
JsonViewObject
planSend
(
PlanSendVO
planSendVO
)
throws
Exception
{
return
null
;
}
@Override
public
JsonViewObject
scheduleSend
(
ScheduleSendVO
scheduleSendVO
)
throws
Exception
{
return
null
;
}
@Override
public
JsonViewObject
lockControl
(
ControlCommandVO
commandVO
)
throws
Exception
{
return
null
;
}
@Override
public
JsonViewObject
stepControl
(
String
code
,
Integer
command
,
Integer
stepNum
)
throws
Exception
{
return
null
;
}
@Override
public
JsonViewObject
setSignalControl
(
String
code
,
Integer
command
,
Integer
commandType
)
throws
Exception
{
return
null
;
}
@Override
public
JsonViewObject
recoverSchedule
(
String
code
)
throws
Exception
{
return
null
;
}
@Override
public
JsonViewObject
phaseTimingSend
(
PhaseTimingSendVO
phaseTimingSendVO
)
throws
Exception
{
return
null
;
}
@Override
public
JsonViewObject
phaseDiffSend
()
{
return
null
;
}
}
signal-communication-service/src/main/java/net/wanji/com/service/controller/dt/impl/DTSignalStatusServiceImpl.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
service
.
controller
.
dt
.
impl
;
import
net.wanji.com.pojo.po.SignalStatusLogPO
;
import
net.wanji.com.pojo.vo.LightsStatusVO
;
import
net.wanji.com.service.controller.SignalStatusService
;
import
net.wanji.common.enums.BaseEnum
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
/**
* @author duanruiming
* @date 2023/05/08 17:28
*/
@Service
public
class
DTSignalStatusServiceImpl
implements
SignalStatusService
{
@Override
public
String
getBeanMark
()
{
return
BaseEnum
.
VendorTypeEnum
.
DT
.
getNick
();
}
@Override
public
List
<
SignalStatusLogPO
>
runningStatusAlarm
()
{
return
null
;
}
@Override
public
List
<
SignalStatusLogPO
>
runningStatusAlarm
(
String
crossId
)
{
return
null
;
}
@Override
public
List
<
LightsStatusVO
>
lightStatus
()
{
return
null
;
}
@Override
public
List
<
LightsStatusVO
>
lightStatus
(
String
crossId
)
{
return
null
;
}
}
signal-communication-service/src/main/java/net/wanji/com/service/controller/dt/impl/DTStaticInfoServiceImpl.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
service
.
controller
.
dt
.
impl
;
import
net.wanji.com.pojo.dto.CrossInfoDTO
;
import
net.wanji.com.pojo.dto.CrossSchedulesDTO
;
import
net.wanji.com.pojo.dto.PlanSectionDTO
;
import
net.wanji.com.pojo.dto.SchemePhaseLightsDTO
;
import
net.wanji.com.pojo.po.CrossInfoPO
;
import
net.wanji.com.pojo.po.CrossSchedulesPO
;
import
net.wanji.com.pojo.vo.PlanSectionVO
;
import
net.wanji.com.pojo.vo.SchemePhaseLightsVO
;
import
net.wanji.com.service.controller.StaticInfoService
;
import
net.wanji.common.enums.BaseEnum
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
/**
* @author duanruiming
* @date 2023/05/08 17:29
*/
@Service
public
class
DTStaticInfoServiceImpl
implements
StaticInfoService
{
@Override
public
String
getBeanMark
()
{
return
BaseEnum
.
VendorTypeEnum
.
DT
.
getNick
();
}
@Override
public
List
<
CrossInfoPO
>
crossBasicInfo
(
CrossInfoDTO
crossInfoDTO
)
throws
Exception
{
return
null
;
}
@Override
public
void
schemePhaseLights
(
SchemePhaseLightsDTO
schemePhaseLightsDTO
)
throws
Exception
{
}
@Override
public
void
planSection
(
PlanSectionDTO
planSectionDTO
)
throws
Exception
{
}
@Override
public
void
crossSchedules
(
CrossSchedulesDTO
crossSchedulesDTO
)
throws
Exception
{
}
@Override
public
SchemePhaseLightsVO
buildSchemePhaseLightsResponse
(
SchemePhaseLightsDTO
schemePhaseLightsDTO
)
{
return
null
;
}
@Override
public
PlanSectionVO
buildPlanSectionResponse
(
String
crossId
)
{
return
null
;
}
@Override
public
PlanSectionVO
buildPlanSectionResponse
(
String
crossId
,
Integer
planNo
)
{
return
null
;
}
@Override
public
List
<
CrossSchedulesPO
>
buildCrossSchedulesResponse
(
List
<
String
>
crossIdList
)
{
return
null
;
}
}
signal-communication-service/src/main/java/net/wanji/com/service/protocol/ProtocolConversionService.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
service
.
protocol
;
import
net.wanji.com.pojo.po.CrossInfoPO
;
/**
* @author duanruiming
* @date 2023/05/08 10:25
*/
public
interface
ProtocolConversionService
{
/**
* 协议解析接口
*
* @param crossInfo
* @return
*/
String
protocolConvert
(
CrossInfoPO
crossInfo
);
}
signal-communication-service/src/main/java/net/wanji/com/service/protocol/dt/impl/DTProtocolConversionServiceImpl.java
0 → 100644
View file @
1ded3369
package
net
.
wanji
.
com
.
service
.
protocol
.
dt
.
impl
;
import
net.wanji.com.pojo.po.CrossInfoPO
;
import
net.wanji.com.service.protocol.ProtocolConversionService
;
/**
* @author duanruiming
* @date 2023/05/08 15:38
*/
public
class
DTProtocolConversionServiceImpl
implements
ProtocolConversionService
{
@Override
public
String
protocolConvert
(
CrossInfoPO
crossInfo
)
{
return
null
;
}
}
signal-communication-service/src/main/resources/application-dev.yml
0 → 100644
View file @
1ded3369
server
:
port
:
32002
servlet
:
display-name
:
Wanji
context-path
:
/com
multipart
:
max-file-size
:
50MB
max-request-size
:
50MB
tomcat
:
threads
:
max
:
10000
#线程池配置
threadPool
:
corePoolSize
:
5
maxPoolSize
:
200
queueCapacity
:
5
keepAliveTime
:
60000
spring
:
datasource
:
dynamic
:
primary
:
master
datasource
:
master
:
type
:
com.alibaba.druid.pool.DruidDataSource
url
:
jdbc:mysql://106.120.201.126:14726/t_signal_utc_changsha?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&sessionVariables=sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'&useSSL=false&useCursorFetch=true
username
:
root
password
:
Wanji300552
driverClassName
:
com.mysql.cj.jdbc.Driver
slave
:
type
:
com.alibaba.druid.pool.DruidDataSource
url
:
jdbc:mysql://106.120.201.126:14726/t_signal_utc_changsha?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&sessionVariables=sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'&useSSL=false&useCursorFetch=true
username
:
root
password
:
Wanji300552
driverClassName
:
com.mysql.cj.jdbc.Driver
webService
:
driver-class-name
:
com.mysql.cj.jdbc.Driver
url
:
jdbc:mysql://106.120.201.126:14726/t_signal?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&sessionVariables=sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'&useSSL=false&useCursorFetch=true
username
:
root
password
:
Wanji300552
type
:
com.alibaba.druid.pool.DruidDataSource
redis
:
host
:
106.120.201.126
port
:
14728
password
:
Wanji300552
jedis
:
pool
:
max-active
:
200
max-wait
:
5000
max-idle
:
20
min-idle
:
10
timeout
:
5000
database
:
3
# 信号平台
signal
:
\ No newline at end of file
signal-communication-service/src/main/resources/application.yml
0 → 100644
View file @
1ded3369
spring
:
# dubbo启动需要程序名称
application
:
name
:
com
profiles
:
active
:
dev
jackson
:
mapper
:
accept_case_insensitive_properties
:
true
main
:
allow-circular-references
:
true
# allow-bean-definition-overriding: true
mvc
:
pathmatch
:
matching-strategy
:
ant_path_matcher
service
:
name
:
signal-communication-service
mybatis
:
type-aliases-package
:
net.wanji.*.model
mapper-locations
:
classpath*:mapper/*.xml,classpath:mapper/*/*.xml
configuration
:
log-impl
:
org.apache.ibatis.logging.stdout.StdOutImpl
mapper
:
mappers
:
-
net.wanji.web.mapper.MyBaseMapper
not-empty
:
false
identity
:
MYSQL
pagehelper
:
helper-dialect
:
mysql
reasonable
:
false
# pagehelper分页 配置参数 supportMethodsArguments 建议不要全局设置
# https://www.cnblogs.com/liran123/p/12889093.html
support-methods-arguments
:
false
params
:
count=countSql
jasypt
:
encryptor
:
algorithm
:
PBEWithMD5AndDES
password
:
7F84150B6A114C48F0EA1158484BF63C
iv-generator-classname
:
org.jasypt.iv.NoIvGenerator
mybatis-plus
:
mapper-locations
:
classpath*:mapper/*.xml,classpath:mapper/*/*.xml
typeAliasesPackage
:
net.wanji.web.entity
check-config-location
:
true
configuration
:
#是否开启自动驼峰命名规则(camel case)映射
map-underscore-to-camel-case
:
true
#全局地开启或关闭配置文件中的所有映射器已经配置的任何缓存
cache-enabled
:
false
call-setters-on-nulls
:
true
#配置JdbcTypeForNull, oracle数据库必须配置
jdbc-type-for-null
:
'
null'
#MyBatis 自动映射时未知列或未知属性处理策略 NONE:不做任何处理 (默认值), WARNING:以日志的形式打印相关警告信息, FAILING:当作映射失败处理,并抛出异常和详细信息
auto-mapping-unknown-column-behavior
:
warning
#开启SQL打印
log-impl
:
org.apache.ibatis.logging.stdout.StdOutImpl
#线程池配置
threadPoolConfig
:
threadPoolName
:
threadPoolExecutor
coreSize
:
8
maxSize
:
16
queueCapacity
:
200
keepAliveTime
:
6000
allowCoreTimeOut
:
false
signal-communication-service/src/main/resources/mapper/ManufacturerInfoMapper.xml
0 → 100644
View file @
1ded3369
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"net.wanji.com.mapper.ManufacturerInfoMapper"
>
<resultMap
type=
"net.wanji.com.pojo.po.ManufacturerInfoPO"
id=
"BaseResultMap"
>
<result
property=
"id"
column=
"id"
/>
<result
property=
"code"
column=
"code"
/>
<result
property=
"name"
column=
"name"
/>
<result
property=
"nickName"
column=
"nick_name"
/>
<result
property=
"address"
column=
"address"
/>
<result
property=
"maintenanceUnit"
column=
"maintenance_unit"
/>
<result
property=
"gmtCreate"
column=
"gmt_create"
/>
<result
property=
"gmtModified"
column=
"gmt_modified"
/>
</resultMap>
<insert
id=
"insertOne"
>
insert into t_manufacturer_info(code,name,nick_name,address,maintenance_unit)
values (#{code},#{name},#{nickName},#{address},#{maintenanceUnit})
</insert>
<update
id=
"updateOne"
>
update t_manufacturer_info
<set>
<if
test=
"code != null and code != ''"
>
code = #{code},
</if>
<if
test=
"name != null and name != ''"
>
name = #{name},
</if>
<if
test=
"nickName != null and nickName != ''"
>
nick_name = #{nickName},
</if>
<if
test=
"address != null and address != ''"
>
address = #{address},
</if>
<if
test=
"maintenanceUnit != null and maintenanceUnit != ''"
>
maintenance_unit = #{maintenanceUnit},
</if>
</set>
where id = #{id}
</update>
<delete
id=
"deleteBatch"
>
delete from t_manufacturer_info
where id in
<foreach
collection=
"ids"
item=
"id"
separator=
","
open=
"("
close=
")"
>
#{id}
</foreach>
</delete>
<select
id=
"selectByCode"
resultMap=
"BaseResultMap"
>
select
id,code,name,nick_name,address,maintenance_unit,gmt_create,gmt_modified
from t_manufacturer_info
where code = #{code}
</select>
<select
id=
"selectById"
resultMap=
"BaseResultMap"
>
select
id,code,name,nick_name,address,maintenance_unit,gmt_create,gmt_modified
from t_manufacturer_info
where id = #{manufacturerId}
</select>
<select
id=
"selectAll"
resultMap=
"BaseResultMap"
>
select
id,code,name,nick_name,address,maintenance_unit,gmt_create,gmt_modified
from t_manufacturer_info
</select>
<select
id=
"selectByOptionalPartialName"
resultMap=
"BaseResultMap"
>
select id,code,name,nick_name,address,maintenance_unit,gmt_create,gmt_modified
from t_manufacturer_info
<where>
<if
test=
"name != null and name != ''"
>
AND name LIKE CONCAT('%',#{name},'%')
</if>
</where>
order by id
</select>
<select
id=
"selectIdByNick"
resultType=
"java.lang.Integer"
>
select id from t_manufacturer_info
where nick_name = #{manufacturerNick}
</select>
<select
id=
"selectNickById"
resultType=
"java.lang.String"
>
select nick_name from t_manufacturer_info
where id = #{manufacturerId}
</select>
</mapper>
signal-communication-service/src/main/resources/mapper/TCrossInfoMapper.xml
0 → 100644
View file @
1ded3369
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"net.wanji.com.mapper.TCrossInfoMapper"
>
<resultMap
type=
"net.wanji.com.pojo.po.CrossInfoPO"
id=
"BaseResultMap"
>
<result
property=
"id"
column=
"id"
/>
<result
property=
"name"
column=
"name"
/>
<result
property=
"code"
column=
"code"
/>
<result
property=
"manufacturerId"
column=
"manufacturer_id"
/>
<result
property=
"ip"
column=
"ip"
/>
<result
property=
"port"
column=
"port"
/>
<result
property=
"location"
column=
"location"
/>
<result
property=
"version"
column=
"version"
/>
<result
property=
"model"
column=
"model"
/>
<result
property=
"installTime"
column=
"install_time"
/>
<result
property=
"gmtCreate"
column=
"gmt_create"
/>
<result
property=
"gmtModified"
column=
"gmt_modified"
/>
</resultMap>
<!-- 批量新增数据 -->
<insert
id=
"insertBatch"
keyProperty=
"id"
useGeneratedKeys=
"true"
>
insert into t_cross_info(id,name,code,manufacturer_id,ip,port,location,version,model,install_time)
values
<foreach
collection=
"entities"
item=
"entity"
separator=
","
>
(#{entity.id},#{entity.name},#{entity.code},#{entity.manufacturerId},#{entity.ip},#{entity.port},#{entity.location},#{entity.version},#{entity.model},#{entity.installTime})
</foreach>
</insert>
<insert
id=
"insertOne"
>
insert into t_cross_info(id, name, code, manufacturer_id, ip, port, location, version, model, install_time)
values (#{id}, #{name}, #{code}, #{manufacturerId}, #{ip}, #{port}, #{location}, #{version}, #{model},
#{installTime})
</insert>
<update
id=
"updateOne"
>
update t_cross_info
<set>
<if
test=
"name != null and name != ''"
>
name = #{name},
</if>
<if
test=
"code != null and code != ''"
>
code = #{code},
</if>
<if
test=
"manufacturerId != null and manufacturerId != ''"
>
manufacturer_id = #{manufacturerId},
</if>
<if
test=
"ip != null and ip != ''"
>
ip = #{ip},
</if>
<if
test=
"port != null and port != ''"
>
port = #{port},
</if>
<if
test=
"location != null and location != ''"
>
location = #{location},
</if>
<if
test=
"version != null and version != ''"
>
version = #{version},
</if>
<if
test=
"model != null and model != ''"
>
model = #{model},
</if>
<if
test=
"installTime != null"
>
install_time = #{installTime},
</if>
</set>
where id = #{id}
</update>
<update
id=
"updateOneByCodeAndManufacturerId"
>
update t_cross_info
<set>
<if
test=
"name != null and name != ''"
>
name = #{name},
</if>
<if
test=
"code != null and code != ''"
>
code = #{code},
</if>
<if
test=
"manufacturerId != null and manufacturerId != ''"
>
manufacturer_id = #{manufacturerId},
</if>
<if
test=
"ip != null and ip != ''"
>
ip = #{ip},
</if>
<if
test=
"port != null and port != ''"
>
port = #{port},
</if>
<if
test=
"location != null and location != ''"
>
location = #{location},
</if>
<if
test=
"version != null and version != ''"
>
version = #{version},
</if>
<if
test=
"model != null and model != ''"
>
model = #{model},
</if>
<if
test=
"installTime != null"
>
install_time = #{installTime},
</if>
</set>
where code = #{code} and manufacturer_id = #{manufacturerId}
</update>
<delete
id=
"deleteBatch"
>
delete from t_cross_info
where id in
<foreach
collection=
"ids"
item=
"id"
separator=
","
open=
"("
close=
")"
>
#{id}
</foreach>
</delete>
<delete
id=
"deleteById"
>
delete
from t_cross_info
where id = #{id}
</delete>
<select
id=
"selectByPrimaryKey"
resultMap=
"BaseResultMap"
>
select id,
name,
code,
manufacturer_id,
ip,
port,
location,
version,
model,
install_time,
gmt_create,
gmt_modified
from t_cross_info
where id = #{key}
</select>
<select
id=
"selectCrossCodesByIds"
resultType=
"java.lang.String"
>
select code
from t_cross_info
where id in
<foreach
collection=
"entities"
item=
"entity"
separator=
","
open=
"("
close=
")"
>
#{entity}
</foreach>
</select>
<select
id=
"selectIdByCodeAndManufacturerId"
resultType=
"java.lang.String"
>
select id
from t_cross_info
where code = #{crossCode}
and manufacturer_id = #{manufacturerId}
</select>
<select
id=
"selectByCode"
resultMap=
"BaseResultMap"
>
select id,
name,
code,
manufacturer_id,
ip,
port,
location,
version,
model,
install_time,
gmt_create,
gmt_modified
from t_cross_info
where code = #{code}
</select>
<select
id=
"selectByManufacturerId"
resultMap=
"BaseResultMap"
>
select id,
name,
code,
manufacturer_id,
ip,
port,
location,
version,
model,
install_time,
gmt_create,
gmt_modified
from t_cross_info
where manufacturer_id = #{manufacturerId}
</select>
<select
id=
"selectAll"
resultMap=
"BaseResultMap"
>
select id,
name,
code,
manufacturer_id,
ip,
port,
location,
version,
model,
install_time,
gmt_create,
gmt_modified
from t_cross_info
</select>
<select
id=
"selectByOptionals"
resultMap=
"BaseResultMap"
>
select id,name,code,manufacturer_id,ip,port,location,version,model,install_time,gmt_create,gmt_modified
from t_cross_info
<where>
<if
test=
"crossName != null and crossName != ''"
>
AND name LIKE CONCAT('%',#{crossName},'%')
</if>
<if
test=
"manufacturerId != null and manufacturerId != 0"
>
AND manufacturer_id = #{manufacturerId}
</if>
</where>
</select>
</mapper>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment