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
b31efdbd
Commit
b31efdbd
authored
Jan 18, 2023
by
黄福新
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[add] 新增信号优化服务
parent
8ed85e44
Changes
88
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
88 changed files
with
3850 additions
and
86 deletions
+3850
-86
pom.xml
signal-optimize-service/pom.xml
+306
-0
SignalOptimizeApplication.java
...rc/main/java/net/wanji/opt/SignalOptimizeApplication.java
+25
-0
Constants.java
...service/src/main/java/net/wanji/opt/common/Constants.java
+85
-0
Result.java
...ze-service/src/main/java/net/wanji/opt/common/Result.java
+46
-0
ResultCode.java
...ervice/src/main/java/net/wanji/opt/common/ResultCode.java
+31
-0
CrossStatusEnum.java
...main/java/net/wanji/opt/common/enums/CrossStatusEnum.java
+28
-0
BeanListUtils.java
...rc/main/java/net/wanji/opt/common/util/BeanListUtils.java
+0
-86
RestTemplateConfig.java
...rc/main/java/net/wanji/opt/config/RestTemplateConfig.java
+30
-0
Swagger2.java
...-service/src/main/java/net/wanji/opt/config/Swagger2.java
+42
-0
WebConfigurer.java
...ice/src/main/java/net/wanji/opt/config/WebConfigurer.java
+21
-0
WebSocketConfig.java
...e/src/main/java/net/wanji/opt/config/WebSocketConfig.java
+21
-0
RedisDao.java
...rvice/src/main/java/net/wanji/opt/dao/cache/RedisDao.java
+272
-0
CrossInfoMapper.java
...c/main/java/net/wanji/opt/dao/mapper/CrossInfoMapper.java
+23
-0
CrossLightsMapper.java
...main/java/net/wanji/opt/dao/mapper/CrossLightsMapper.java
+21
-0
CrossPhaseLightsMapper.java
...java/net/wanji/opt/dao/mapper/CrossPhaseLightsMapper.java
+21
-0
CrossPhaseMapper.java
.../main/java/net/wanji/opt/dao/mapper/CrossPhaseMapper.java
+21
-0
CrossPlanMapper.java
...c/main/java/net/wanji/opt/dao/mapper/CrossPlanMapper.java
+24
-0
CrossSchedulesMapper.java
...n/java/net/wanji/opt/dao/mapper/CrossSchedulesMapper.java
+32
-0
CrossSchemeMapper.java
...main/java/net/wanji/opt/dao/mapper/CrossSchemeMapper.java
+23
-0
CrossSectionMapper.java
...ain/java/net/wanji/opt/dao/mapper/CrossSectionMapper.java
+22
-0
LaneInfoMapper.java
...rc/main/java/net/wanji/opt/dao/mapper/LaneInfoMapper.java
+22
-0
LaneLightsMapper.java
.../main/java/net/wanji/opt/dao/mapper/LaneLightsMapper.java
+22
-0
CrossDataRealtimeDTO.java
...src/main/java/net/wanji/opt/dto/CrossDataRealtimeDTO.java
+48
-0
CrossDirInfoDTO.java
...vice/src/main/java/net/wanji/opt/dto/CrossDirInfoDTO.java
+26
-0
CrossInfoDTO.java
...service/src/main/java/net/wanji/opt/dto/CrossInfoDTO.java
+45
-0
CrossLightsDTO.java
...rvice/src/main/java/net/wanji/opt/dto/CrossLightsDTO.java
+44
-0
CrossPhaseDTO.java
...ervice/src/main/java/net/wanji/opt/dto/CrossPhaseDTO.java
+79
-0
CrossSchedulesDTO.java
...ce/src/main/java/net/wanji/opt/dto/CrossSchedulesDTO.java
+44
-0
CrossSchemeDTO.java
...rvice/src/main/java/net/wanji/opt/dto/CrossSchemeDTO.java
+40
-0
CrossSectionDTO.java
...vice/src/main/java/net/wanji/opt/dto/CrossSectionDTO.java
+37
-0
CrossTurnDataRealtimeDTO.java
...main/java/net/wanji/opt/dto/CrossTurnDataRealtimeDTO.java
+64
-0
CrossTurnInfoDTO.java
...ice/src/main/java/net/wanji/opt/dto/CrossTurnInfoDTO.java
+29
-0
LaneInfoDTO.java
...-service/src/main/java/net/wanji/opt/dto/LaneInfoDTO.java
+50
-0
CrossDataRealtimePO.java
...e/src/main/java/net/wanji/opt/po/CrossDataRealtimePO.java
+59
-0
CrossDirInfoPO.java
...e/src/main/java/net/wanji/opt/po/base/CrossDirInfoPO.java
+29
-0
CrossInfoPO.java
...vice/src/main/java/net/wanji/opt/po/base/CrossInfoPO.java
+41
-0
CrossLightsPO.java
...ce/src/main/java/net/wanji/opt/po/base/CrossLightsPO.java
+35
-0
CrossPhaseLightsPO.java
...c/main/java/net/wanji/opt/po/base/CrossPhaseLightsPO.java
+23
-0
CrossPhasePO.java
...ice/src/main/java/net/wanji/opt/po/base/CrossPhasePO.java
+68
-0
CrossPlanPO.java
...vice/src/main/java/net/wanji/opt/po/base/CrossPlanPO.java
+26
-0
CrossSchedulesPO.java
...src/main/java/net/wanji/opt/po/base/CrossSchedulesPO.java
+26
-0
CrossSchedulesPlanPO.java
...main/java/net/wanji/opt/po/base/CrossSchedulesPlanPO.java
+38
-0
CrossSchemePO.java
...ce/src/main/java/net/wanji/opt/po/base/CrossSchemePO.java
+35
-0
CrossSectionPO.java
...e/src/main/java/net/wanji/opt/po/base/CrossSectionPO.java
+38
-0
CrossTurnInfoPO.java
.../src/main/java/net/wanji/opt/po/base/CrossTurnInfoPO.java
+29
-0
LaneInfoPO.java
...rvice/src/main/java/net/wanji/opt/po/base/LaneInfoPO.java
+47
-0
LaneLightsPO.java
...ice/src/main/java/net/wanji/opt/po/base/LaneLightsPO.java
+23
-0
CrossPhaseQuery.java
...ce/src/main/java/net/wanji/opt/query/CrossPhaseQuery.java
+19
-0
CrossQuery.java
...service/src/main/java/net/wanji/opt/query/CrossQuery.java
+24
-0
LaneQuery.java
...-service/src/main/java/net/wanji/opt/query/LaneQuery.java
+23
-0
CrossInfoService.java
...src/main/java/net/wanji/opt/service/CrossInfoService.java
+22
-0
CrossLightsService.java
...c/main/java/net/wanji/opt/service/CrossLightsService.java
+27
-0
CrossOptimizeService.java
...main/java/net/wanji/opt/service/CrossOptimizeService.java
+21
-0
CrossPhaseService.java
...rc/main/java/net/wanji/opt/service/CrossPhaseService.java
+25
-0
CrossSchedulesService.java
...ain/java/net/wanji/opt/service/CrossSchedulesService.java
+24
-0
CrossSchemeService.java
...c/main/java/net/wanji/opt/service/CrossSchemeService.java
+28
-0
CrossSectionService.java
.../main/java/net/wanji/opt/service/CrossSectionService.java
+23
-0
LaneInfoService.java
.../src/main/java/net/wanji/opt/service/LaneInfoService.java
+29
-0
CrossInfoServiceImpl.java
...java/net/wanji/opt/service/impl/CrossInfoServiceImpl.java
+33
-0
CrossLightsServiceImpl.java
...va/net/wanji/opt/service/impl/CrossLightsServiceImpl.java
+62
-0
CrossOptimizeServiceImpl.java
.../net/wanji/opt/service/impl/CrossOptimizeServiceImpl.java
+128
-0
CrossPhaseServiceImpl.java
...ava/net/wanji/opt/service/impl/CrossPhaseServiceImpl.java
+96
-0
CrossSchedulesServiceImpl.java
...net/wanji/opt/service/impl/CrossSchedulesServiceImpl.java
+50
-0
CrossSchemeServiceImpl.java
...va/net/wanji/opt/service/impl/CrossSchemeServiceImpl.java
+57
-0
CrossSectionServiceImpl.java
...a/net/wanji/opt/service/impl/CrossSectionServiceImpl.java
+34
-0
LaneInfoServiceImpl.java
.../java/net/wanji/opt/service/impl/LaneInfoServiceImpl.java
+73
-0
RealtimeOptimizeTask.java
...rc/main/java/net/wanji/opt/task/RealtimeOptimizeTask.java
+30
-0
application-dev.yml
...l-optimize-service/src/main/resources/application-dev.yml
+62
-0
application-pro.yml
...l-optimize-service/src/main/resources/application-pro.yml
+61
-0
application.yml
signal-optimize-service/src/main/resources/application.yml
+52
-0
controller.java.ftl
...e/src/main/resources/generate_code_vm/controller.java.ftl
+41
-0
entity.java.ftl
...rvice/src/main/resources/generate_code_vm/entity.java.ftl
+55
-0
mapper.java.ftl
...rvice/src/main/resources/generate_code_vm/mapper.java.ftl
+15
-0
mapper.xml.ftl
...ervice/src/main/resources/generate_code_vm/mapper.xml.ftl
+30
-0
service.java.ftl
...vice/src/main/resources/generate_code_vm/service.java.ftl
+14
-0
serviceImpl.java.ftl
.../src/main/resources/generate_code_vm/serviceImpl.java.ftl
+16
-0
logback-spring.xml
...al-optimize-service/src/main/resources/logback-spring.xml
+70
-0
CrossInfoMapper.xml
...ize-service/src/main/resources/mapper/CrossInfoMapper.xml
+44
-0
CrossLightsMapper.xml
...e-service/src/main/resources/mapper/CrossLightsMapper.xml
+32
-0
CrossPhaseLightsMapper.xml
...vice/src/main/resources/mapper/CrossPhaseLightsMapper.xml
+29
-0
CrossPhaseMapper.xml
...ze-service/src/main/resources/mapper/CrossPhaseMapper.xml
+60
-0
CrossPlanMapper.xml
...ize-service/src/main/resources/mapper/CrossPlanMapper.xml
+28
-0
CrossSchedulesMapper.xml
...ervice/src/main/resources/mapper/CrossSchedulesMapper.xml
+66
-0
CrossSchemeMapper.xml
...e-service/src/main/resources/mapper/CrossSchemeMapper.xml
+34
-0
CrossSectionMapper.xml
...-service/src/main/resources/mapper/CrossSectionMapper.xml
+39
-0
LaneInfoMapper.xml
...mize-service/src/main/resources/mapper/LaneInfoMapper.xml
+48
-0
LaneLightsMapper.xml
...ze-service/src/main/resources/mapper/LaneLightsMapper.xml
+30
-0
generatorConfig.xml
.../src/main/resources/mybatis-generator/generatorConfig.xml
+35
-0
No files found.
signal-optimize-service/pom.xml
0 → 100644
View file @
b31efdbd
This diff is collapsed.
Click to expand it.
signal-optimize-service/src/main/java/net/wanji/opt/SignalOptimizeApplication.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
;
import
org.mybatis.spring.annotation.MapperScan
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.scheduling.annotation.EnableAsync
;
import
org.springframework.scheduling.annotation.EnableScheduling
;
import
org.springframework.transaction.annotation.EnableTransactionManagement
;
/**
* @author
*/
@SpringBootApplication
(
scanBasePackages
=
"net.wanji.opt"
)
@MapperScan
(
basePackages
=
"net.wanji.opt.dao.mapper"
)
@EnableTransactionManagement
@EnableScheduling
@EnableAsync
//@EnableDiscoveryClient
public
class
SignalOptimizeApplication
{
public
static
void
main
(
String
[]
args
)
{
SpringApplication
.
run
(
SignalOptimizeApplication
.
class
,
args
);
}
}
signal-optimize-service/src/main/java/net/wanji/opt/common/Constants.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
common
;
public
class
Constants
{
/**
* 系统缩写
*/
public
static
final
String
SYSTEM_ABBR
=
"OPT"
;
/**
* 否
*/
public
static
final
Integer
NO
=
0
;
/**
* 是
*/
public
static
final
Integer
YES
=
1
;
/**
* 分隔符:下划线
**/
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
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
;
}
\ No newline at end of file
signal-optimize-service/src/main/java/net/wanji/opt/common/Result.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
common
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.experimental.Accessors
;
import
java.io.Serializable
;
/**
* @Description: [API响应结果封装]
* @author hfx
* @version 1.0
* Created on 2019/4/28 19:45
*/
@Data
@Accessors
(
chain
=
true
)
@NoArgsConstructor
@AllArgsConstructor
public
class
Result
implements
Serializable
{
private
Integer
status
;
private
String
msg
;
private
Object
data
;
public
static
Result
success
()
{
return
new
Result
(
ResultCode
.
SUCCESS
.
getStatus
(),
ResultCode
.
SUCCESS
.
getMsg
(),
null
);
}
public
static
Result
fail
()
{
return
new
Result
(
ResultCode
.
FAIL
.
getStatus
(),
ResultCode
.
FAIL
.
getMsg
(),
null
);
}
public
static
Result
success
(
Object
data
)
{
return
new
Result
(
ResultCode
.
SUCCESS
.
getStatus
(),
ResultCode
.
SUCCESS
.
getMsg
(),
data
);
}
public
static
Result
fail
(
String
msg
)
{
return
new
Result
(
ResultCode
.
FAIL
.
getStatus
(),
msg
,
null
);
}
public
static
Result
fail
(
Integer
status
,
String
msg
)
{
return
new
Result
(
status
,
msg
,
null
);
}
}
signal-optimize-service/src/main/java/net/wanji/opt/common/ResultCode.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
common
;
/**
* 响应码枚举,参考HTTP状态码的语义
*/
public
enum
ResultCode
{
SUCCESS
(
200
,
"操作成功"
),
FAIL
(
400
,
"操作失败"
),
UNAUTHORIZED
(
401
,
"未认证,签名错误"
),
INVALID
(
403
,
"token无效"
),
NOT_FOUND
(
404
,
"接口不存在"
),
INTERNAL_SERVER_ERROR
(
500
,
"服务器内部错误"
);
private
int
status
;
private
String
msg
;
ResultCode
(
int
status
,
String
msg
)
{
this
.
status
=
status
;
this
.
msg
=
msg
;
}
public
int
getStatus
()
{
return
status
;
}
public
String
getMsg
()
{
return
msg
;
}
}
signal-optimize-service/src/main/java/net/wanji/opt/common/enums/CrossStatusEnum.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
common
.
enums
;
public
enum
CrossStatusEnum
{
NORMAL
(
0
,
"正常"
),
UNBALANCE
(
1
,
"失衡"
),
CONGESTION
(
2
,
"拥堵"
),
SPILLOVER
(
3
,
"溢出"
),
DEADLOCK
(
4
,
"死锁"
);
private
Integer
code
;
private
String
name
;
private
CrossStatusEnum
(
Integer
code
,
String
name
)
{
this
.
code
=
code
;
this
.
name
=
name
;
}
public
Integer
getCode
()
{
return
this
.
code
;
}
public
String
getName
()
{
return
this
.
name
;
}
}
signal-optimize-service/src/main/java/net/wanji/opt/common/util/BeanListUtils.java
deleted
100644 → 0
View file @
8ed85e44
package
net
.
wanji
.
opt
.
common
.
util
;
import
java.lang.reflect.Field
;
import
java.lang.reflect.Method
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* @ClassName BeanListUtils
* @Description
* @Author
* @Date 2022/01/17 10:08
* @Version 1.0
*/
public
class
BeanListUtils
{
public
static
<
T
>
ArrayList
beanToList
(
T
bean
)
throws
NoSuchFieldException
,
IllegalAccessException
{
ArrayList
<
String
>
list
=
new
ArrayList
<
String
>();
if
(
bean
==
null
)
return
null
;
Field
[]
fields
=
bean
.
getClass
().
getDeclaredFields
();
for
(
Field
field
:
fields
)
{
Field
f
=
bean
.
getClass
().
getDeclaredField
(
field
.
getName
());
f
.
setAccessible
(
true
);
Object
o
=
f
.
get
(
bean
);
list
.
add
(
o
.
toString
());
}
return
list
;
}
/**
*
* 将dto和entity之间的属性互相转换,dto中属性一般为String等基本类型,
* 但是entity中可能有复合主键等复杂类型,需要注意同名问题
* @param src
* @param target
*/
public
static
Object
populate
(
Object
src
,
Object
target
)
{
Method
[]
srcMethods
=
src
.
getClass
().
getMethods
();
Method
[]
targetMethods
=
target
.
getClass
().
getMethods
();
for
(
Method
m
:
srcMethods
)
{
String
srcName
=
m
.
getName
();
if
(
srcName
.
startsWith
(
"get"
))
{
try
{
Object
result
=
m
.
invoke
(
src
);
for
(
Method
mm
:
targetMethods
)
{
String
targetName
=
mm
.
getName
();
if
(
targetName
.
startsWith
(
"set"
)
&&
targetName
.
substring
(
3
,
targetName
.
length
())
.
equals
(
srcName
.
substring
(
3
,
srcName
.
length
())))
{
mm
.
invoke
(
target
,
result
);
}
}
}
catch
(
Exception
e
)
{
}
}
}
return
target
;
}
/**
*
* dto集合和实体类集合间的互相属性映射
*
* @param src
* @param target
* @param targetClass
* @return
*/
@SuppressWarnings
(
"unchecked"
)
public
static
<
S
,
T
>
List
<
T
>
populateList
(
List
<
S
>
src
,
List
<
T
>
target
,
Class
<?>
targetClass
)
{
for
(
int
i
=
0
;
i
<
src
.
size
();
i
++)
{
try
{
Object
object
=
targetClass
.
newInstance
();
target
.
add
((
T
)
object
);
populate
(
src
.
get
(
i
),
object
);
}
catch
(
Exception
e
)
{
continue
;
// 某个方法反射异常
}
}
return
target
;
}
}
signal-optimize-service/src/main/java/net/wanji/opt/config/RestTemplateConfig.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
config
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.http.client.ClientHttpRequestFactory
;
import
org.springframework.http.client.SimpleClientHttpRequestFactory
;
import
org.springframework.http.converter.StringHttpMessageConverter
;
import
org.springframework.web.client.RestTemplate
;
import
java.nio.charset.StandardCharsets
;
@Configuration
public
class
RestTemplateConfig
{
@Bean
public
RestTemplate
restTemplate
(
ClientHttpRequestFactory
factory
)
{
RestTemplate
restTemplate
=
new
RestTemplate
(
factory
);
restTemplate
.
getMessageConverters
().
set
(
1
,
new
StringHttpMessageConverter
(
StandardCharsets
.
UTF_8
));
return
restTemplate
;
}
@Bean
public
ClientHttpRequestFactory
simpleClientHttpRequestFactory
()
{
SimpleClientHttpRequestFactory
factory
=
new
SimpleClientHttpRequestFactory
();
factory
.
setConnectTimeout
(
30000
);
factory
.
setReadTimeout
(
30000
);
return
factory
;
}
}
\ No newline at end of file
signal-optimize-service/src/main/java/net/wanji/opt/config/Swagger2.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
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.opt.controller"
))
.
paths
(
PathSelectors
.
any
())
.
build
();
}
//构建 api文档的详细信息函数,注意这里的注解引用的是哪个
private
ApiInfo
apiInfo
()
{
return
new
ApiInfoBuilder
()
//页面标题
.
title
(
"万集科技-城市交通信号优化系统"
)
//创建人
.
contact
(
new
Contact
(
"test"
,
"#"
,
"signal-opt@wanji.net.cn"
))
//版本号
.
version
(
"1.0.0"
)
//描述
.
description
(
"城市交通信号优化系统API"
)
.
build
();
}
}
\ No newline at end of file
signal-optimize-service/src/main/java/net/wanji/opt/config/WebConfigurer.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
config
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.web.servlet.config.annotation.CorsRegistry
;
import
org.springframework.web.servlet.config.annotation.WebMvcConfigurer
;
@Configuration
public
class
WebConfigurer
implements
WebMvcConfigurer
{
/**
* 跨域支持
* @param registry
*/
@Override
public
void
addCorsMappings
(
CorsRegistry
registry
)
{
registry
.
addMapping
(
"/**"
)
.
allowedOrigins
(
"*"
)
.
allowedMethods
(
"GET"
,
"POST"
,
"DELETE"
,
"PUT"
)
.
allowedHeaders
(
"*"
)
.
maxAge
(
3600
*
24
);
}
}
\ No newline at end of file
signal-optimize-service/src/main/java/net/wanji/opt/config/WebSocketConfig.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
config
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.web.socket.server.standard.ServerEndpointExporter
;
/**
* @author duanruiming
* @date 2023/01/06 8:55
*/
@Configuration
public
class
WebSocketConfig
{
/**
* 注入ServerEndpointExporter,
* 这个bean会自动注册使用了@ServerEndpoint注解声明的Websocket endpoint
*/
@Bean
public
ServerEndpointExporter
serverEndpointExporter
()
{
return
new
ServerEndpointExporter
();
}
}
signal-optimize-service/src/main/java/net/wanji/opt/dao/cache/RedisDao.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
dao
.
cache
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.data.redis.support.atomic.RedisAtomicLong
;
import
org.springframework.stereotype.Component
;
import
javax.annotation.Resource
;
import
java.util.Date
;
import
java.util.Map
;
import
java.util.Set
;
import
java.util.concurrent.TimeUnit
;
@Component
public
class
RedisDao
{
/**
* 注入redisTemplate
*/
@Resource
private
RedisTemplate
<
String
,
Object
>
redisTemplate
;
/**
* @description: 判断是否存在Key
* @param key redis的Key
* @return boolean true:有 false:无
*/
public
boolean
hasKey
(
String
key
)
{
return
redisTemplate
.
hasKey
(
key
);
}
/**
* @description: 添加字符串
* @param key redis的Key
* @param value 添加redis的value
*/
public
void
set
(
String
key
,
String
value
)
{
redisTemplate
.
opsForValue
().
set
(
key
,
value
);
}
/**
* @description: 添加对象
* @param key redis的Key
* @param object 添加redis的value
*/
public
void
set
(
String
key
,
Object
object
)
{
redisTemplate
.
opsForValue
().
set
(
key
,
object
);
}
/**
* @description: 添加带生命周期的对象
* @param key redis的Key
* @param object 添加redis的value
* @param seconds 失效时间
*/
public
void
setAndExpire
(
String
key
,
Object
object
,
int
seconds
)
{
redisTemplate
.
opsForValue
().
set
(
key
,
object
);
redisTemplate
.
expire
(
key
,
seconds
,
TimeUnit
.
SECONDS
);
}
/**
* @description: 添加带生命周期的对象
* @param key redis的Key
* @param value 添加redis的value
* @param seconds 失效时间
*/
public
void
setAndExpire
(
String
key
,
String
value
,
int
seconds
)
{
redisTemplate
.
opsForValue
().
set
(
key
,
value
);
redisTemplate
.
expire
(
key
,
seconds
,
TimeUnit
.
SECONDS
);
}
/**
* @description: 获取对象
* @param key redis的Key
* @return Object 返回对象
*/
public
Object
get
(
String
key
)
{
return
redisTemplate
.
opsForValue
().
get
(
key
);
}
/**
* @description: 存入redis的hash
* @param key redis的Key
* @param field 字段值
* @param value 存入的值
*/
public
void
setHash
(
String
key
,
String
field
,
String
value
)
{
redisTemplate
.
opsForHash
().
put
(
key
,
field
,
value
);
}
/**
* @description: 存入redis的hash
* @param key redis的Key
* @param field 字段值
* @param value 存入的值
*/
public
void
setHash
(
String
key
,
String
field
,
Object
value
)
{
redisTemplate
.
opsForHash
().
put
(
key
,
field
,
value
);
}
/**
* @description: 根据key和字段值获取内容值
* @param key redis的Key
* @param field 字段值
* @return String 返回字符串
*/
public
String
getHash
(
String
key
,
String
field
)
{
return
(
String
)
redisTemplate
.
opsForHash
().
get
(
key
,
field
);
}
/**
* @description: 根据field删除值
* @param key redis的Key
* @param field 字段值
*/
public
void
delHashMap
(
String
key
,
String
field
)
{
redisTemplate
.
boundHashOps
(
key
).
delete
(
field
);
}
/**
* @description: 存入hash集合
* @param key redis的Key
* @param hashmap 存入的Map集合
*/
public
void
setHashMap
(
String
key
,
Map
<
String
,
Object
>
hashmap
){
redisTemplate
.
opsForHash
().
putAll
(
key
,
hashmap
);;
}
/**
* @description: 取出hash集合
* @param key redis的Key
* @return Map<Object, Object> 返回Map集合
*/
public
Map
<
Object
,
Object
>
getHashMap
(
String
key
)
{
return
redisTemplate
.
opsForHash
().
entries
(
key
);
}
/**
* @description: 存入redis的Set
* @param key redis的Key
* @param object 对象
*/
public
void
setSet
(
String
key
,
Object
object
){
redisTemplate
.
opsForSet
().
add
(
key
,
object
);
}
/**
* @description: 获取redis的Set
* @param key redis的Key
* @return Set<Object> Set集合
*/
public
Set
<
Object
>
getSet
(
String
key
){
return
redisTemplate
.
opsForSet
().
members
(
key
);
}
/**
* @discription: 查看值是否是set成员
* @param key set的key
* @param value set的成员
* @return 是否是set成员
*/
public
Boolean
isSetMember
(
String
key
,
Object
value
)
{
return
redisTemplate
.
opsForSet
().
isMember
(
key
,
value
);
}
/**
* @description:设置key的过期时间,endTime格式:yyyy-MM-dd hh:mm:ss
* @param key redis的Key
* @param endTime 结束时间
*/
public
void
setExpire
(
String
key
,
Date
endTime
)
{
long
seconds
=
endTime
.
getTime
()
-
System
.
currentTimeMillis
();
redisTemplate
.
expire
(
key
,
(
int
)
(
seconds
/
1000
),
TimeUnit
.
SECONDS
);
}
/**
* @description: 设置key的过期时间
* @param key redis的Key
* @param time 过期时间(秒)
*/
public
void
setExpire
(
String
key
,
int
time
)
{
redisTemplate
.
expire
(
key
,
time
,
TimeUnit
.
SECONDS
);
}
/**
* <p>Discription:获取key的过期时间
* @param key redis的Key
* @return 过期时间(秒)
*/
public
Long
getExpire
(
String
key
)
{
return
redisTemplate
.
getExpire
(
key
,
TimeUnit
.
SECONDS
);
}
/**
* @description: 在redis消息队列队尾插入数据
* @param key redis的Key
* @param object 添加的对象
*/
public
void
tailPush
(
String
key
,
Object
object
){
redisTemplate
.
opsForList
().
rightPush
(
key
,
object
);
}
/**
* @description: 在redis消息队列对头插入数据
* @param key redis的Key
* @param object 添加的对象
*/
public
void
headPush
(
String
key
,
Object
object
){
redisTemplate
.
opsForList
().
leftPush
(
key
,
object
);
}
/**
* @description: 在redis消息队列队尾删除数据
* @param key redis的Key
* @return Object 删除的对象
*/
public
Object
tailPop
(
String
key
){
return
redisTemplate
.
opsForList
().
rightPop
(
key
);
}
/**
* @description: 在redis消息队列队头删除数据
* @param key redis的Key
* @return Object 删除的对象
*/
public
Object
headPop
(
String
key
){
return
redisTemplate
.
opsForList
().
leftPop
(
key
);
}
/**
* @description: 删除redis的值
* @param key redis的Key
*/
public
void
del
(
String
key
)
{
if
(
hasKey
(
key
))
{
redisTemplate
.
delete
(
key
);
}
}
/**
* @description: 清理redis缓存
*/
public
void
flushDB
(){
redisTemplate
.
getConnectionFactory
().
getConnection
().
flushDb
();
}
/**
* 自增ID
* @param key 建
* @param liveTime 过期时间
* @return 自增结果
*/
public
Long
getIncr
(
String
key
,
long
liveTime
)
{
RedisAtomicLong
entityIdCounter
=
new
RedisAtomicLong
(
key
,
redisTemplate
.
getConnectionFactory
());
Long
increment
=
entityIdCounter
.
getAndIncrement
();
if
((
null
==
increment
||
increment
.
longValue
()
==
0
)
&&
liveTime
>
0
)
{
//初始设置过期时间
entityIdCounter
.
expire
(
liveTime
,
TimeUnit
.
MILLISECONDS
);
//单位毫秒
}
return
increment
;
}
/**
* 获取全部Redis的key
* @return
*/
public
Set
<
String
>
keys
()
{
return
redisTemplate
.
keys
(
"*"
);
}
}
signal-optimize-service/src/main/java/net/wanji/opt/dao/mapper/CrossInfoMapper.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
dao
.
mapper
;
import
net.wanji.opt.po.base.CrossInfoPO
;
import
net.wanji.opt.query.CrossQuery
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
/**
* @author hfx
* @date 2023/1/12 13:24
* @desc CrossInfoMapper
*/
@Repository
public
interface
CrossInfoMapper
{
/**
* 查询路口列表信息
* @param query
* @return
*/
List
<
CrossInfoPO
>
listCrossInfo
(
CrossQuery
query
);
}
signal-optimize-service/src/main/java/net/wanji/opt/dao/mapper/CrossLightsMapper.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
dao
.
mapper
;
import
net.wanji.opt.po.base.CrossLightsPO
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
/**
* @author hfx
* @date 2023/1/13 14:43
* @desc CrossLightsMapper
*/
@Repository
public
interface
CrossLightsMapper
{
/**
* 查询灯组基础信息列表
* @return
*/
List
<
CrossLightsPO
>
listCrossLights
();
}
signal-optimize-service/src/main/java/net/wanji/opt/dao/mapper/CrossPhaseLightsMapper.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
dao
.
mapper
;
import
net.wanji.opt.po.base.CrossPhaseLightsPO
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
/**
* @author hfx
* @date 2023/1/18 14:25
* @desc CrossPhaseLightsMapper
*/
@Repository
public
interface
CrossPhaseLightsMapper
{
/**
* 查询相位灯组信息
* @return
*/
List
<
CrossPhaseLightsPO
>
listCrossPhaseLights
();
}
signal-optimize-service/src/main/java/net/wanji/opt/dao/mapper/CrossPhaseMapper.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
dao
.
mapper
;
import
net.wanji.opt.po.base.CrossPhasePO
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
/**
* @author hfx
* @date 2023/1/13 10:54
* @desc CrossPhaseMapper
*/
@Repository
public
interface
CrossPhaseMapper
{
/**
* 查询相位基础信息列表
* @return
*/
List
<
CrossPhasePO
>
listCrossPhase
();
}
signal-optimize-service/src/main/java/net/wanji/opt/dao/mapper/CrossPlanMapper.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
dao
.
mapper
;
import
net.wanji.opt.po.base.CrossPlanPO
;
import
net.wanji.opt.po.base.CrossSchemePO
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
/**
* @author hfx
* @date 2023/1/17 16:06
* @desc CrossPlanMapper
*/
@Repository
public
interface
CrossPlanMapper
{
/**
* 查询计划基础信息列表
* @param crossId
* @return
*/
List
<
CrossPlanPO
>
listCrossPlanInfo
(
String
crossId
);
}
signal-optimize-service/src/main/java/net/wanji/opt/dao/mapper/CrossSchedulesMapper.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
dao
.
mapper
;
import
net.wanji.opt.po.base.CrossSchedulesPO
;
import
net.wanji.opt.po.base.CrossSchedulesPlanPO
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
/**
* @author hfx
* @date 2023/1/17 16:06
* @desc CrossSchedulesMapper
*/
@Repository
public
interface
CrossSchedulesMapper
{
/**
* 查询调度基础信息列表
* @param crossId
* @return
*/
List
<
CrossSchedulesPO
>
listCrossSchedulesInfo
(
String
crossId
);
/**
* 查询调度计划信息列表
* @param crossId
* @return
*/
List
<
CrossSchedulesPlanPO
>
listSchedulesPlan
(
String
crossId
,
String
schedulesId
);
}
signal-optimize-service/src/main/java/net/wanji/opt/dao/mapper/CrossSchemeMapper.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
dao
.
mapper
;
import
net.wanji.opt.po.base.CrossSchemePO
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
/**
* @author hfx
* @date 2023/1/17 14:49
* @desc CrossSchemeMapper
*/
@Repository
public
interface
CrossSchemeMapper
{
/**
* 查询方案基础信息列表
* @param crossId
* @return
*/
List
<
CrossSchemePO
>
listCrossSchemeInfo
(
String
crossId
);
}
signal-optimize-service/src/main/java/net/wanji/opt/dao/mapper/CrossSectionMapper.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
dao
.
mapper
;
import
net.wanji.opt.po.base.CrossSectionPO
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
/**
* @author hfx
* @date 2023/1/17 17:35
* @desc CrossSectionMapper
*/
@Repository
public
interface
CrossSectionMapper
{
/**
* 查询时段基础信息列表
* @return
*/
List
<
CrossSectionPO
>
listCrossSectionInfo
();
}
signal-optimize-service/src/main/java/net/wanji/opt/dao/mapper/LaneInfoMapper.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
dao
.
mapper
;
import
net.wanji.opt.po.base.LaneInfoPO
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
/**
* @author hfx
* @date 2023/1/13 14:43
* @desc LaneInfoMapper
*/
@Repository
public
interface
LaneInfoMapper
{
/**
* 查询车道基础信息列表
* @return
*/
List
<
LaneInfoPO
>
listLaneInfo
();
}
signal-optimize-service/src/main/java/net/wanji/opt/dao/mapper/LaneLightsMapper.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
dao
.
mapper
;
import
net.wanji.opt.po.base.CrossLightsPO
;
import
net.wanji.opt.po.base.LaneLightsPO
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
/**
* @author hfx
* @date 2023/1/13 14:43
* @desc LaneLightsMapper
*/
@Repository
public
interface
LaneLightsMapper
{
/**
* 查询灯组车道列表信息
* @return
*/
List
<
LaneLightsPO
>
listLightLane
();
}
signal-optimize-service/src/main/java/net/wanji/opt/dto/CrossDataRealtimeDTO.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
dto
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.List
;
/**
* @author hfx
* @date 2023/1/12 09:11
* @desc 路口实时数据
*/
@Data
@ApiModel
(
value
=
"CrossDataRealtimeDTO"
,
description
=
"路口实时数据"
)
public
class
CrossDataRealtimeDTO
{
@ApiModelProperty
(
name
=
"路口ID"
,
notes
=
""
)
private
String
crossId
;
@ApiModelProperty
(
name
=
"路口状态:0正常;1失衡;2拥堵;3溢出;4死锁"
,
notes
=
""
)
private
Integer
status
;
@ApiModelProperty
(
name
=
"交通流量(辆)"
,
notes
=
""
)
private
Integer
flow
;
@ApiModelProperty
(
name
=
"平均速度(km/h)"
,
notes
=
""
)
private
Double
speed
;
@ApiModelProperty
(
name
=
"停车次数(次)"
,
notes
=
""
)
private
Double
stopTimes
;
@ApiModelProperty
(
name
=
"延误时间(秒)"
,
notes
=
""
)
private
Integer
delayTime
;
@ApiModelProperty
(
name
=
"饱和度"
,
notes
=
""
)
private
Double
sturation
;
@ApiModelProperty
(
name
=
"数据批次"
,
notes
=
""
)
private
Integer
batchTime
;
@ApiModelProperty
(
name
=
"路口方向列表"
,
notes
=
""
)
List
<
CrossDirInfoDTO
>
dirList
;
@ApiModelProperty
(
name
=
"路口转向列表"
,
notes
=
""
)
List
<
CrossTurnInfoDTO
>
turnList
;
}
signal-optimize-service/src/main/java/net/wanji/opt/dto/CrossDirInfoDTO.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
dto
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* @author hfx
* @date 2023/1/12 9:15
* @desc 路口方向
*/
@Data
public
class
CrossDirInfoDTO
{
@ApiModelProperty
(
name
=
"路口方向ID"
,
notes
=
""
)
private
String
crossDirId
;
@ApiModelProperty
(
name
=
"路口方向类型:1北;2东北;3东;4东南;5南;6西南;7西;8西北"
,
notes
=
""
)
private
Integer
dirType
;
@ApiModelProperty
(
name
=
"进出口类型:1进口;2出口"
,
notes
=
""
)
private
Integer
inOutType
;
@ApiModelProperty
(
name
=
"路口ID"
,
notes
=
""
)
private
String
crossId
;
}
signal-optimize-service/src/main/java/net/wanji/opt/dto/CrossInfoDTO.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
dto
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.List
;
/**
* @author hfx
* @date 2023/1/12 09:11
* @desc 路口基础信息
*/
@Data
@ApiModel
(
value
=
"CrossInfoDTO"
,
description
=
"路口基础信息"
)
public
class
CrossInfoDTO
{
@ApiModelProperty
(
name
=
"路口ID"
,
notes
=
""
)
private
String
id
;
@ApiModelProperty
(
name
=
"路口名称"
,
notes
=
""
)
private
String
name
;
@ApiModelProperty
(
name
=
"路口类型"
,
notes
=
""
)
private
Integer
type
;
@ApiModelProperty
(
name
=
"路口级别"
,
notes
=
""
)
private
Integer
level
;
@ApiModelProperty
(
name
=
"行政区划代码"
,
notes
=
""
)
private
Integer
areaCode
;
@ApiModelProperty
(
name
=
"路口位置"
,
notes
=
""
)
private
String
location
;
@ApiModelProperty
(
name
=
"是否信控路口:1是;0否"
,
notes
=
""
)
private
Integer
isSignal
;
@ApiModelProperty
(
name
=
"是否启动优化:1是;0否"
,
notes
=
""
)
private
Integer
isStart
;
@ApiModelProperty
(
name
=
"是否下发方案:1是;0否"
,
notes
=
""
)
private
Integer
isSend
;
}
signal-optimize-service/src/main/java/net/wanji/opt/dto/CrossLightsDTO.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
dto
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
net.wanji.opt.po.base.LaneInfoPO
;
import
java.util.List
;
/**
* @author hfx
* @date 2023/01/12 13:29:39
* @desc 灯组信息
*/
@Data
public
class
CrossLightsDTO
{
@ApiModelProperty
(
name
=
"灯组ID"
,
notes
=
""
)
private
Integer
id
;
@ApiModelProperty
(
name
=
"灯组号"
,
notes
=
""
)
private
String
lightsNo
;
@ApiModelProperty
(
name
=
"灯组类型:机动车(1圆饼灯;2左转灯;3直行灯;4右转灯;5掉头灯;);"
+
"非机动车(10非机动车灯;11左转灯;12直行灯;13右转灯;14掉头灯);"
+
"20行人灯;21行人进口灯;22行人出口灯;"
+
"30公交专用灯"
,
notes
=
""
)
private
Integer
type
;
@ApiModelProperty
(
name
=
"灯组放行方向:1北;2东北;3东;4东南;5南;6西南;7西;8西北"
,
notes
=
""
)
private
Integer
dir
;
@ApiModelProperty
(
name
=
"灯组序号"
,
notes
=
""
)
private
Integer
sort
;
@ApiModelProperty
(
name
=
"路口ID"
,
notes
=
""
)
private
String
crossId
;
@ApiModelProperty
(
name
=
"相位ID"
,
notes
=
""
)
private
Integer
phaseId
;
@ApiModelProperty
(
name
=
"车道信息"
,
notes
=
""
)
private
List
<
LaneInfoDTO
>
laneInfos
;
}
signal-optimize-service/src/main/java/net/wanji/opt/dto/CrossPhaseDTO.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
dto
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.List
;
/**
* @author hfx
* @date 2023/01/12 13:29:39
* @desc 路口相位基础信息
*/
@Data
public
class
CrossPhaseDTO
{
@ApiModelProperty
(
name
=
"相位ID"
,
notes
=
""
)
private
Integer
id
;
@ApiModelProperty
(
name
=
"相位号"
,
notes
=
""
)
private
String
phaseNo
;
@ApiModelProperty
(
name
=
"相位名称"
,
notes
=
""
)
private
String
name
;
@ApiModelProperty
(
name
=
"相位序号"
,
notes
=
""
)
private
Integer
sort
;
@ApiModelProperty
(
name
=
"路口ID"
,
notes
=
""
)
private
String
crossId
;
@ApiModelProperty
(
name
=
"路口方向:1北;2东北;3东;4东南;5南;6西南;7西;8西北"
,
notes
=
""
)
private
Integer
dirType
;
@ApiModelProperty
(
name
=
"路口转向:u掉头;l左转;s直行;r右转"
,
notes
=
""
)
private
Integer
turnType
;
@ApiModelProperty
(
name
=
"方案ID"
,
notes
=
""
)
private
Integer
schemeId
;
@ApiModelProperty
(
name
=
"环号"
,
notes
=
""
)
private
Integer
ringNo
;
@ApiModelProperty
(
name
=
"组号"
,
notes
=
""
)
private
Integer
groupNo
;
@ApiModelProperty
(
name
=
"相位类型 1实相位 2虚相位 3伴随相位"
,
notes
=
""
)
private
Integer
type
;
@ApiModelProperty
(
name
=
"控制模式:1定周期;2绿灯;3黄灯;4红灯;5关灯;6绿闪;7黄闪;8红闪"
,
notes
=
""
)
private
Integer
controlMode
;
@ApiModelProperty
(
name
=
"相位时间"
,
notes
=
""
)
private
Integer
phaseTime
;
@ApiModelProperty
(
name
=
"绿灯时间"
,
notes
=
""
)
private
Integer
greenTime
;
@ApiModelProperty
(
name
=
"绿闪时间"
,
notes
=
""
)
private
Integer
greenFlashTime
;
@ApiModelProperty
(
name
=
"行闪时间"
,
notes
=
""
)
private
Integer
pedFlashTime
;
@ApiModelProperty
(
name
=
"黄灯时间"
,
notes
=
""
)
private
Integer
yellowTime
;
@ApiModelProperty
(
name
=
"红灯时间"
,
notes
=
""
)
private
Integer
redTime
;
@ApiModelProperty
(
name
=
"最小绿灯时间"
,
notes
=
""
)
private
Integer
minGreenTime
;
@ApiModelProperty
(
name
=
"最大绿灯时间"
,
notes
=
""
)
private
Integer
maxGreenTime
;
@ApiModelProperty
(
name
=
"灯组信息"
,
notes
=
""
)
List
<
CrossLightsDTO
>
lightsInfos
;
}
signal-optimize-service/src/main/java/net/wanji/opt/dto/CrossSchedulesDTO.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
dto
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.List
;
/**
* @author hfx
* @date 2023/1/17 16:21
* @desc 路口调度信息
*/
@Data
public
class
CrossSchedulesDTO
{
@ApiModelProperty
(
name
=
"调度ID"
,
notes
=
""
)
private
Integer
schedulesId
;
@ApiModelProperty
(
name
=
"调度名称"
,
notes
=
""
)
private
String
schedulesName
;
@ApiModelProperty
(
name
=
"状态:1执行;0未执行"
,
notes
=
""
)
private
Integer
status
;
@ApiModelProperty
(
name
=
"星期:1周一,2周二,3周三,4周四,5周五,6周六,7周日,0特殊日期"
,
notes
=
""
)
private
Integer
week
;
@ApiModelProperty
(
name
=
"特殊日期"
,
notes
=
""
)
private
String
specialDate
;
@ApiModelProperty
(
name
=
"计划ID"
,
notes
=
""
)
private
Integer
planId
;
@ApiModelProperty
(
name
=
"计划号"
,
notes
=
""
)
private
String
planNo
;
@ApiModelProperty
(
name
=
"路口ID"
,
notes
=
""
)
private
String
crossId
;
@ApiModelProperty
(
name
=
"时段信息"
,
notes
=
""
)
List
<
CrossSectionDTO
>
sectionInfos
;
}
signal-optimize-service/src/main/java/net/wanji/opt/dto/CrossSchemeDTO.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
dto
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.List
;
/**
* @author hfx
* @date 2023/01/12 13:29:39
* @desc 路口方案基础信息
*/
@Data
public
class
CrossSchemeDTO
{
@ApiModelProperty
(
name
=
"方案ID"
,
notes
=
""
)
private
Integer
id
;
@ApiModelProperty
(
name
=
"方案号"
,
notes
=
""
)
private
String
schemeNo
;
@ApiModelProperty
(
name
=
"方案名称"
,
notes
=
""
)
private
String
name
;
@ApiModelProperty
(
name
=
"路口ID"
,
notes
=
""
)
private
String
crossId
;
@ApiModelProperty
(
name
=
"周期(秒)"
,
notes
=
""
)
private
Integer
cycle
;
@ApiModelProperty
(
name
=
"协调相位ID"
,
notes
=
""
)
private
Integer
coordPhase
;
@ApiModelProperty
(
name
=
"相位差"
,
notes
=
""
)
private
Integer
offset
;
@ApiModelProperty
(
name
=
"相位信息"
,
notes
=
""
)
private
List
<
CrossPhaseDTO
>
phaseInfos
;
}
signal-optimize-service/src/main/java/net/wanji/opt/dto/CrossSectionDTO.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
dto
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* @author hfx
* @date 2023/1/17 16:14
* @desc CrossSectionDTO
*/
@Data
public
class
CrossSectionDTO
{
@ApiModelProperty
(
name
=
"时段ID"
,
notes
=
""
)
private
Integer
id
;
@ApiModelProperty
(
name
=
"时段号"
,
notes
=
""
)
private
String
sectionNo
;
@ApiModelProperty
(
name
=
"开始时间"
,
notes
=
""
)
private
String
startTime
;
@ApiModelProperty
(
name
=
"结束时间"
,
notes
=
""
)
private
String
endTime
;
@ApiModelProperty
(
name
=
"计划ID"
,
notes
=
""
)
private
Integer
planId
;
@ApiModelProperty
(
name
=
"路口ID"
,
notes
=
""
)
private
String
crossId
;
@ApiModelProperty
(
name
=
"方案ID"
,
notes
=
""
)
private
Integer
scemeId
;
@ApiModelProperty
(
name
=
"控制模式:1定周期;2绿波协调;3黄闪;4全红;5关灯;6单点自适应;7全感应;8半感应;"
,
notes
=
""
)
private
Integer
control_mode
;
}
signal-optimize-service/src/main/java/net/wanji/opt/dto/CrossTurnDataRealtimeDTO.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
dto
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.List
;
/**
* @author hfx
* @date 2023/1/12 09:11
* @desc 路口实时数据
*/
@Data
public
class
CrossTurnDataRealtimeDTO
{
@ApiModelProperty
(
name
=
"转向ID"
,
notes
=
""
)
private
String
turnId
;
@ApiModelProperty
(
name
=
"转向类型:u掉头;l左转;s直行;r右转;"
,
notes
=
""
)
private
Integer
turnType
;
@ApiModelProperty
(
name
=
"驶入方向:1北;2东北;3东;4东南;5南;6西南;7西;8西北"
,
notes
=
""
)
private
Integer
inDir
;
@ApiModelProperty
(
name
=
"驶出方向:1北;2东北;3东;4东南;5南;6西南;7西;8西北"
,
notes
=
""
)
private
Integer
outDir
;
@ApiModelProperty
(
name
=
"路口ID"
,
notes
=
""
)
private
String
crossId
;
@ApiModelProperty
(
name
=
"交通流量(辆)"
,
notes
=
""
)
private
Integer
flow
;
@ApiModelProperty
(
name
=
"平均速度(km/h)"
,
notes
=
""
)
private
Double
speed
;
@ApiModelProperty
(
name
=
"驶入速度(km/h)"
,
notes
=
""
)
private
Double
inSpeed
;
@ApiModelProperty
(
name
=
"驶出速度(km/h)"
,
notes
=
""
)
private
Double
outSpeed
;
@ApiModelProperty
(
name
=
"排队长度(米)"
,
notes
=
""
)
private
Double
queueLength
;
@ApiModelProperty
(
name
=
"停车次数(次)"
,
notes
=
""
)
private
Double
stopTimes
;
@ApiModelProperty
(
name
=
"延误时间(秒)"
,
notes
=
""
)
private
Integer
delayTime
;
@ApiModelProperty
(
name
=
"饱和度"
,
notes
=
""
)
private
Double
sturation
;
@ApiModelProperty
(
name
=
"车头间距(米)"
,
notes
=
""
)
private
Double
vehheadDist
;
@ApiModelProperty
(
name
=
"车头时距(秒)"
,
notes
=
""
)
private
Double
vehheadTime
;
@ApiModelProperty
(
name
=
"数据批次(10位时间戳)"
,
notes
=
""
)
private
Integer
batchTime
;
}
signal-optimize-service/src/main/java/net/wanji/opt/dto/CrossTurnInfoDTO.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
dto
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* @author hfx
* @date 2023/1/12 9:15
* @desc 路口转向
*/
@Data
public
class
CrossTurnInfoDTO
{
@ApiModelProperty
(
name
=
"转向ID"
,
notes
=
""
)
private
String
turnId
;
@ApiModelProperty
(
name
=
"转向类型:u掉头;l左转;s直行;r右转;"
,
notes
=
""
)
private
Integer
turnType
;
@ApiModelProperty
(
name
=
"驶入方向:1北;2东北;3东;4东南;5南;6西南;7西;8西北"
,
notes
=
""
)
private
Integer
inDir
;
@ApiModelProperty
(
name
=
"驶出方向:1北;2东北;3东;4东南;5南;6西南;7西;8西北"
,
notes
=
""
)
private
Integer
outDir
;
@ApiModelProperty
(
name
=
"路口ID"
,
notes
=
""
)
private
String
crossId
;
}
signal-optimize-service/src/main/java/net/wanji/opt/dto/LaneInfoDTO.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
dto
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* @author hfx
* @date 2023/1/13 19:03
* @desc 车道信息
*/
@Data
public
class
LaneInfoDTO
{
@ApiModelProperty
(
name
=
"车道ID"
,
notes
=
""
)
private
String
id
;
@ApiModelProperty
(
name
=
"车道代码"
,
notes
=
""
)
private
String
code
;
@ApiModelProperty
(
name
=
"车道序号,从左车道开始编号11、12、13..."
,
notes
=
""
)
private
Integer
sort
;
@ApiModelProperty
(
name
=
"车道类型:1路段车道;2进口车道;3出口车道;4左转弯待转区;6直行待行区"
,
notes
=
""
)
private
Integer
type
;
@ApiModelProperty
(
name
=
"车道方向:1北;2东北;3东;4东南;5南;6西南;7西;8西北"
,
notes
=
""
)
private
Integer
dir
;
@ApiModelProperty
(
name
=
"车道转向"
,
notes
=
""
)
private
Integer
turn
;
@ApiModelProperty
(
name
=
"车道类别:1机动车;2非机动车;3公交专用;4可变;5潮汐"
,
notes
=
""
)
private
Integer
category
;
@ApiModelProperty
(
name
=
"路段编号"
,
notes
=
""
)
private
String
rid
;
@ApiModelProperty
(
name
=
"路口ID"
,
notes
=
""
)
private
String
crossId
;
@ApiModelProperty
(
name
=
"灯组ID"
,
notes
=
""
)
private
Integer
lightsId
;
@ApiModelProperty
(
name
=
"车道长度"
,
notes
=
""
)
private
Double
length
;
@ApiModelProperty
(
name
=
"车道宽度"
,
notes
=
""
)
private
Double
width
;
}
signal-optimize-service/src/main/java/net/wanji/opt/po/CrossDataRealtimePO.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
po
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.Date
;
/**
* @author hfx
* @date 2023/1/10 16:36
* @desc CrossDataRealtimePO
*/
@Data
public
class
CrossDataRealtimePO
{
@ApiModelProperty
(
name
=
"路口ID"
,
notes
=
""
)
private
String
crossId
;
@ApiModelProperty
(
name
=
"是否失衡:0否;1是"
,
notes
=
""
)
private
Integer
isUnbalance
;
@ApiModelProperty
(
name
=
"是否溢出:0否;1是"
,
notes
=
""
)
private
Integer
isSpillover
;
@ApiModelProperty
(
name
=
"是否拥堵:0否;1是"
,
notes
=
""
)
private
Integer
isCongestion
;
@ApiModelProperty
(
name
=
"失衡指数"
,
notes
=
""
)
private
Double
unbalanceIndex
;
@ApiModelProperty
(
name
=
"溢出指数"
,
notes
=
""
)
private
Double
spilloverIndex
;
@ApiModelProperty
(
name
=
"拥堵指数"
,
notes
=
""
)
private
Double
congestionIndex
;
@ApiModelProperty
(
name
=
"综合指数"
,
notes
=
""
)
private
Double
compositeIndex
;
@ApiModelProperty
(
name
=
"交通流量(辆)"
,
notes
=
""
)
private
Integer
flow
;
@ApiModelProperty
(
name
=
"平均速度(km/h)"
,
notes
=
""
)
private
Double
speed
;
@ApiModelProperty
(
name
=
"停车次数(次)"
,
notes
=
""
)
private
Double
stopTimes
;
@ApiModelProperty
(
name
=
"延误时间(秒)"
,
notes
=
""
)
private
Integer
delayTime
;
@ApiModelProperty
(
name
=
"饱和度"
,
notes
=
""
)
private
Double
sturation
;
@ApiModelProperty
(
name
=
"数据批次"
,
notes
=
""
)
private
Integer
batchTime
;
}
signal-optimize-service/src/main/java/net/wanji/opt/po/base/CrossDirInfoPO.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
po
.
base
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* @author hfx
* @date 2023/1/12 13:35
* @desc 路口方向基础信息
*/
@Data
public
class
CrossDirInfoPO
{
@ApiModelProperty
(
name
=
"路口方向ID"
,
notes
=
""
)
private
String
crossDirId
;
@ApiModelProperty
(
name
=
"路口方向类型:1北;2东北;3东;4东南;5南;6西南;7西;8西北"
,
notes
=
""
)
private
Integer
dirType
;
@ApiModelProperty
(
name
=
"进出口类型:1进口;2出口"
,
notes
=
""
)
private
Integer
inOutType
;
@ApiModelProperty
(
name
=
"路段长度"
,
notes
=
""
)
private
Double
length
;
@ApiModelProperty
(
name
=
"路口ID"
,
notes
=
""
)
private
String
crossId
;
}
signal-optimize-service/src/main/java/net/wanji/opt/po/base/CrossInfoPO.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
po
.
base
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* @author hfx
* @date 2023/01/12 13:29:39
* @desc 路口基础信息
*/
@Data
public
class
CrossInfoPO
{
@ApiModelProperty
(
name
=
"路口ID"
,
notes
=
""
)
private
String
id
;
@ApiModelProperty
(
name
=
"路口名称"
,
notes
=
""
)
private
String
name
;
@ApiModelProperty
(
name
=
"路口类型"
,
notes
=
""
)
private
Integer
type
;
@ApiModelProperty
(
name
=
"路口级别"
,
notes
=
""
)
private
Integer
level
;
@ApiModelProperty
(
name
=
"行政区划代码"
,
notes
=
""
)
private
Integer
areaCode
;
@ApiModelProperty
(
name
=
"路口位置"
,
notes
=
""
)
private
String
location
;
@ApiModelProperty
(
name
=
"是否信控路口:1是;0否"
,
notes
=
""
)
private
Integer
isSignal
;
@ApiModelProperty
(
name
=
"是否启动优化:1是;0否"
,
notes
=
""
)
private
Integer
isStart
;
@ApiModelProperty
(
name
=
"是否下发方案:1是;0否"
,
notes
=
""
)
private
Integer
isSend
;
}
signal-optimize-service/src/main/java/net/wanji/opt/po/base/CrossLightsPO.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
po
.
base
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* @author hfx
* @date 2023/01/12 13:29:39
* @desc 灯组基础信息
*/
@Data
public
class
CrossLightsPO
{
@ApiModelProperty
(
name
=
"灯组ID"
,
notes
=
""
)
private
Integer
id
;
@ApiModelProperty
(
name
=
"灯组号"
,
notes
=
""
)
private
String
lightsNo
;
@ApiModelProperty
(
name
=
"灯组类型:机动车(1圆饼灯;2左转灯;3直行灯;4右转灯;5掉头灯;);"
+
"非机动车(10非机动车灯;11左转灯;12直行灯;13右转灯;14掉头灯);"
+
"20行人灯;21行人进口灯;22行人出口灯;"
+
"30公交专用灯"
,
notes
=
""
)
private
Integer
type
;
@ApiModelProperty
(
name
=
"灯组放行方向:1北;2东北;3东;4东南;5南;6西南;7西;8西北"
,
notes
=
""
)
private
Integer
dir
;
@ApiModelProperty
(
name
=
"灯组序号"
,
notes
=
""
)
private
Integer
sort
;
@ApiModelProperty
(
name
=
"路口ID"
,
notes
=
""
)
private
String
crossId
;
}
signal-optimize-service/src/main/java/net/wanji/opt/po/base/CrossPhaseLightsPO.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
po
.
base
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* @author hfx
* @date 2023/01/18 14:27:39
* @desc 路口相位灯组信息
*/
@Data
public
class
CrossPhaseLightsPO
{
@ApiModelProperty
(
name
=
"相位ID"
,
notes
=
""
)
private
Integer
phaseId
;
@ApiModelProperty
(
name
=
"灯组ID"
,
notes
=
""
)
private
Integer
lightsId
;
@ApiModelProperty
(
name
=
"路口ID"
,
notes
=
""
)
private
String
crossId
;
}
signal-optimize-service/src/main/java/net/wanji/opt/po/base/CrossPhasePO.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
po
.
base
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* @author hfx
* @date 2023/01/12 13:29:39
* @desc 路口相位基础信息
*/
@Data
public
class
CrossPhasePO
{
@ApiModelProperty
(
name
=
"相位ID"
,
notes
=
""
)
private
Integer
id
;
@ApiModelProperty
(
name
=
"相位号"
,
notes
=
""
)
private
String
phaseNo
;
@ApiModelProperty
(
name
=
"相位名称"
,
notes
=
""
)
private
String
name
;
@ApiModelProperty
(
name
=
"相位序号"
,
notes
=
""
)
private
Integer
sort
;
@ApiModelProperty
(
name
=
"路口ID"
,
notes
=
""
)
private
String
crossId
;
@ApiModelProperty
(
name
=
"方案ID"
,
notes
=
""
)
private
Integer
schemeId
;
@ApiModelProperty
(
name
=
"环号"
,
notes
=
""
)
private
Integer
ringNo
;
@ApiModelProperty
(
name
=
"组号"
,
notes
=
""
)
private
Integer
groupNo
;
@ApiModelProperty
(
name
=
"相位类型:1实相位;2虚相位;3伴随相位"
,
notes
=
""
)
private
Integer
type
;
@ApiModelProperty
(
name
=
"控制模式:1定周期;2绿灯;3黄灯;4红灯;5关灯;6绿闪;7黄闪;8红闪"
,
notes
=
""
)
private
Integer
controlMode
;
@ApiModelProperty
(
name
=
"相位时间"
,
notes
=
""
)
private
Integer
phaseTime
;
@ApiModelProperty
(
name
=
"绿灯时间"
,
notes
=
""
)
private
Integer
greenTime
;
@ApiModelProperty
(
name
=
"绿闪时间"
,
notes
=
""
)
private
Integer
greenFlashTime
;
@ApiModelProperty
(
name
=
"行闪时间"
,
notes
=
""
)
private
Integer
pedFlashTime
;
@ApiModelProperty
(
name
=
"黄灯时间"
,
notes
=
""
)
private
Integer
yellowTime
;
@ApiModelProperty
(
name
=
"红灯时间"
,
notes
=
""
)
private
Integer
redTime
;
@ApiModelProperty
(
name
=
"最小绿灯时间"
,
notes
=
""
)
private
Integer
minGreenTime
;
@ApiModelProperty
(
name
=
"最大绿灯时间"
,
notes
=
""
)
private
Integer
maxGreenTime
;
}
signal-optimize-service/src/main/java/net/wanji/opt/po/base/CrossPlanPO.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
po
.
base
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* @author hfx
* @date 2023/1/17 15:48
* @desc 计划基础信息
*/
@Data
public
class
CrossPlanPO
{
@ApiModelProperty
(
name
=
"计划ID"
,
notes
=
""
)
private
Integer
id
;
@ApiModelProperty
(
name
=
"计划号"
,
notes
=
""
)
private
String
planNo
;
@ApiModelProperty
(
name
=
"计划名称"
,
notes
=
""
)
private
String
name
;
@ApiModelProperty
(
name
=
"路口ID"
,
notes
=
""
)
private
String
crossId
;
}
signal-optimize-service/src/main/java/net/wanji/opt/po/base/CrossSchedulesPO.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
po
.
base
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* @author hfx
* @date 2023/1/17 15:48
* @desc 调度基础信息
*/
@Data
public
class
CrossSchedulesPO
{
@ApiModelProperty
(
name
=
"调度ID"
,
notes
=
""
)
private
Integer
id
;
@ApiModelProperty
(
name
=
"调度名称"
,
notes
=
""
)
private
String
name
;
@ApiModelProperty
(
name
=
"路口ID"
,
notes
=
""
)
private
String
crossId
;
@ApiModelProperty
(
name
=
"状态:1执行;0未执行"
,
notes
=
""
)
private
Integer
status
;
}
signal-optimize-service/src/main/java/net/wanji/opt/po/base/CrossSchedulesPlanPO.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
po
.
base
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* @author hfx
* @date 2023/1/13 10:31
* @desc 路口调度计划信息
*/
@Data
public
class
CrossSchedulesPlanPO
{
@ApiModelProperty
(
name
=
"调度ID"
,
notes
=
""
)
private
Integer
schedulesId
;
@ApiModelProperty
(
name
=
"调度名称"
,
notes
=
""
)
private
String
schedulesName
;
@ApiModelProperty
(
name
=
"调度状态:1执行;0未执行"
,
notes
=
""
)
private
Integer
status
;
@ApiModelProperty
(
name
=
"计划ID"
,
notes
=
""
)
private
Integer
planId
;
@ApiModelProperty
(
name
=
"计划号"
,
notes
=
""
)
private
String
planNo
;
@ApiModelProperty
(
name
=
"路口ID"
,
notes
=
""
)
private
String
crossId
;
@ApiModelProperty
(
name
=
"星期:1周一,2周二,3周三,4周四,5周五,6周六,7周日,0特殊日期"
,
notes
=
""
)
private
Integer
week
;
@ApiModelProperty
(
name
=
"特殊日期"
,
notes
=
""
)
private
String
specialDate
;
}
signal-optimize-service/src/main/java/net/wanji/opt/po/base/CrossSchemePO.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
po
.
base
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* @author hfx
* @date 2023/01/12 13:29:39
* @desc 路口方案基础信息
*/
@Data
public
class
CrossSchemePO
{
@ApiModelProperty
(
name
=
"方案ID"
,
notes
=
""
)
private
Integer
id
;
@ApiModelProperty
(
name
=
"方案号"
,
notes
=
""
)
private
String
schemeNo
;
@ApiModelProperty
(
name
=
"方案名称"
,
notes
=
""
)
private
String
name
;
@ApiModelProperty
(
name
=
"路口ID"
,
notes
=
""
)
private
String
crossId
;
@ApiModelProperty
(
name
=
"周期(秒)"
,
notes
=
""
)
private
Integer
cycle
;
@ApiModelProperty
(
name
=
"协调相位ID"
,
notes
=
""
)
private
Integer
coordPhase
;
@ApiModelProperty
(
name
=
"相位差"
,
notes
=
""
)
private
Integer
offset
;
}
signal-optimize-service/src/main/java/net/wanji/opt/po/base/CrossSectionPO.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
po
.
base
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* @author hfx
* @date 2023/1/13 10:32
* @desc 路口时段信息
*/
@Data
public
class
CrossSectionPO
{
@ApiModelProperty
(
name
=
"时段ID"
,
notes
=
""
)
private
Integer
id
;
@ApiModelProperty
(
name
=
"时段号"
,
notes
=
""
)
private
String
sectionNo
;
@ApiModelProperty
(
name
=
"开始时间"
,
notes
=
""
)
private
String
startTime
;
@ApiModelProperty
(
name
=
"结束时间"
,
notes
=
""
)
private
String
endTime
;
@ApiModelProperty
(
name
=
"计划ID"
,
notes
=
""
)
private
Integer
planId
;
@ApiModelProperty
(
name
=
"路口ID"
,
notes
=
""
)
private
String
crossId
;
@ApiModelProperty
(
name
=
"方案ID"
,
notes
=
""
)
private
Integer
scemeId
;
@ApiModelProperty
(
name
=
"控制模式:1定周期;2绿波协调;3黄闪;4全红;5关灯;6单点自适应;7全感应;8半感应;"
,
notes
=
""
)
private
Integer
controlMode
;
}
signal-optimize-service/src/main/java/net/wanji/opt/po/base/CrossTurnInfoPO.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
po
.
base
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* @author hfx
* @date 2023/1/12 13:37
* @desc 路口转向基础信息
*/
@Data
public
class
CrossTurnInfoPO
{
@ApiModelProperty
(
name
=
"转向ID"
,
notes
=
""
)
private
String
turnId
;
@ApiModelProperty
(
name
=
"转向类型:u掉头;l左转;s直行;r右转;"
,
notes
=
""
)
private
Integer
turnType
;
@ApiModelProperty
(
name
=
"驶入方向:1北;2东北;3东;4东南;5南;6西南;7西;8西北"
,
notes
=
""
)
private
Integer
inDir
;
@ApiModelProperty
(
name
=
"驶出方向:1北;2东北;3东;4东南;5南;6西南;7西;8西北"
,
notes
=
""
)
private
Integer
outDir
;
@ApiModelProperty
(
name
=
"路口ID"
,
notes
=
""
)
private
String
crossId
;
}
signal-optimize-service/src/main/java/net/wanji/opt/po/base/LaneInfoPO.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
po
.
base
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* @author hfx
* @date 2023/1/13 16:50
* @desc 车道基础信息
*/
@Data
public
class
LaneInfoPO
{
@ApiModelProperty
(
name
=
"车道ID"
,
notes
=
""
)
private
String
id
;
@ApiModelProperty
(
name
=
"车道代码"
,
notes
=
""
)
private
String
code
;
@ApiModelProperty
(
name
=
"车道序号,从左车道开始编号11、12、13..."
,
notes
=
""
)
private
Integer
sort
;
@ApiModelProperty
(
name
=
"车道类型:1路段车道;2进口车道;3出口车道;4左转弯待转区;6直行待行区"
,
notes
=
""
)
private
Integer
type
;
@ApiModelProperty
(
name
=
"车道方向:1北;2东北;3东;4东南;5南;6西南;7西;8西北"
,
notes
=
""
)
private
Integer
dir
;
@ApiModelProperty
(
name
=
"车道转向"
,
notes
=
""
)
private
Integer
turn
;
@ApiModelProperty
(
name
=
"车道类别:1机动车;2非机动车;3公交专用;4可变;5潮汐"
,
notes
=
""
)
private
Integer
category
;
@ApiModelProperty
(
name
=
"路段编号"
,
notes
=
""
)
private
String
rid
;
@ApiModelProperty
(
name
=
"路口ID"
,
notes
=
""
)
private
String
crossId
;
@ApiModelProperty
(
name
=
"车道长度"
,
notes
=
""
)
private
Double
length
;
@ApiModelProperty
(
name
=
"车道宽度"
,
notes
=
""
)
private
Double
width
;
}
signal-optimize-service/src/main/java/net/wanji/opt/po/base/LaneLightsPO.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
po
.
base
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* @author hfx
* @date 2023/1/13 17:37
* @desc 车道灯组信息
*/
@Data
public
class
LaneLightsPO
{
@ApiModelProperty
(
name
=
"灯组ID"
,
notes
=
""
)
private
Integer
lightsId
;
@ApiModelProperty
(
name
=
"车道ID"
,
notes
=
""
)
private
String
laneId
;
@ApiModelProperty
(
name
=
"路口ID"
,
notes
=
""
)
private
String
crossId
;
}
signal-optimize-service/src/main/java/net/wanji/opt/query/CrossPhaseQuery.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
query
;
import
io.swagger.annotations.ApiModelProperty
;
/**
* @author hfx
* @date 2023/1/13 13:34
* @desc CrossPhaseQuery
*/
public
class
CrossPhaseQuery
{
@ApiModelProperty
(
name
=
"路口ID"
,
notes
=
""
)
private
String
crossId
;
@ApiModelProperty
(
name
=
"方案ID"
,
notes
=
""
)
private
Integer
schemeId
;
}
signal-optimize-service/src/main/java/net/wanji/opt/query/CrossQuery.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
query
;
import
io.swagger.annotations.ApiModelProperty
;
/**
* @author hfx
* @date 2023/1/12 14:08
* @desc CrossQuery
*/
public
class
CrossQuery
{
@ApiModelProperty
(
name
=
"路口ID"
,
notes
=
""
)
private
String
id
;
@ApiModelProperty
(
name
=
"是否信控路口:1是;0否"
,
notes
=
""
)
private
Integer
isSignal
;
@ApiModelProperty
(
name
=
"是否启动优化:1是;0否"
,
notes
=
""
)
private
Integer
isStart
;
@ApiModelProperty
(
name
=
"是否下发方案:1是;0否"
,
notes
=
""
)
private
Integer
isSend
;
}
signal-optimize-service/src/main/java/net/wanji/opt/query/LaneQuery.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
query
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* @author hfx
* @date 2023/1/13 19:11
* @desc LaneQuery
*/
@Data
public
class
LaneQuery
{
@ApiModelProperty
(
name
=
"路段编号"
,
notes
=
""
)
private
String
rid
;
@ApiModelProperty
(
name
=
"路口ID"
,
notes
=
""
)
private
String
crossId
;
@ApiModelProperty
(
name
=
"灯组ID"
,
notes
=
""
)
private
String
lightsId
;
}
signal-optimize-service/src/main/java/net/wanji/opt/service/CrossInfoService.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
service
;
import
net.wanji.opt.dto.CrossInfoDTO
;
import
net.wanji.opt.query.CrossQuery
;
import
java.util.List
;
/**
* @author hfx
* @date 2023/1/12 15:12
* @desc 路口基础信息接口服务
*/
public
interface
CrossInfoService
{
/**
* 查询路口基础信息列表
* @return
*/
List
<
CrossInfoDTO
>
listCrossInfo
(
CrossQuery
query
);
}
signal-optimize-service/src/main/java/net/wanji/opt/service/CrossLightsService.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
service
;
import
net.wanji.opt.dto.CrossLightsDTO
;
import
net.wanji.opt.po.base.CrossLightsPO
;
import
java.util.List
;
/**
* @author hfx
* @date 2023/1/13 17:48
* @desc CrossLightsService
*/
public
interface
CrossLightsService
{
/**
* 查询灯组基础信息列表
* @return
*/
List
<
CrossLightsDTO
>
listCrossLights
();
/**
* 查询灯组详情信息列表
* @return
*/
List
<
CrossLightsDTO
>
listLightsDetails
();
}
signal-optimize-service/src/main/java/net/wanji/opt/service/CrossOptimizeService.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
service
;
/**
* @author hfx
* @date 2023/1/10 11:12
* @desc 路口优化接口服务
*/
public
interface
CrossOptimizeService
{
/**
* 路口实时优化
* @return
*/
String
realtimeOptimize
();
/**
* 路口方案优化
*/
// String schemeOptimize();
}
signal-optimize-service/src/main/java/net/wanji/opt/service/CrossPhaseService.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
service
;
import
net.wanji.opt.dto.CrossPhaseDTO
;
import
java.util.List
;
/**
* @author hfx
* @date 2023/1/13 10:09
* @desc 相位接口服务
*/
public
interface
CrossPhaseService
{
/**
* 获取相位基础信息列表
*/
List
<
CrossPhaseDTO
>
listCrossPhase
();
/**
* 获取相位详情信息列表
* @return
*/
List
<
CrossPhaseDTO
>
listPhaseDetails
();
}
signal-optimize-service/src/main/java/net/wanji/opt/service/CrossSchedulesService.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
service
;
import
net.wanji.opt.dto.CrossSchedulesDTO
;
import
java.util.List
;
import
java.util.Map
;
/**
* @author hfx
* @date 2023/1/17 15:55
* @desc 路口调度服务接口
*/
public
interface
CrossSchedulesService
{
/**
* 获取路口调度详情信息列表
* @param crossId
* @return
*/
List
<
CrossSchedulesDTO
>
listCrossSchedulesDetails
(
String
crossId
);
}
signal-optimize-service/src/main/java/net/wanji/opt/service/CrossSchemeService.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
service
;
import
net.wanji.opt.dto.CrossSchemeDTO
;
import
java.util.List
;
/**
* @author hfx
* @date 2023/1/17 14:59
* @desc CrossSchemeService
*/
public
interface
CrossSchemeService
{
/**
* 获取方案基础信息
* @param crossId
* @return
*/
List
<
CrossSchemeDTO
>
listCrossSchemeInfo
(
String
crossId
);
/**
* 获取方案详情信息
* @param crossId
* @return
*/
List
<
CrossSchemeDTO
>
listCrossSchemeDetails
(
String
crossId
);
}
signal-optimize-service/src/main/java/net/wanji/opt/service/CrossSectionService.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
service
;
import
net.wanji.opt.dto.CrossSchedulesDTO
;
import
net.wanji.opt.dto.CrossSectionDTO
;
import
java.util.List
;
/**
* @author hfx
* @date 2023/1/17 17:48
* @desc 路口时段服务接口
*/
public
interface
CrossSectionService
{
/**
* 获取路口时段信息列表
* @param crossId
* @param planId
* @return
*/
List
<
CrossSectionDTO
>
listCrossSectionInfo
(
String
crossId
,
String
planId
);
}
signal-optimize-service/src/main/java/net/wanji/opt/service/LaneInfoService.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
service
;
import
net.wanji.opt.dto.LaneInfoDTO
;
import
net.wanji.opt.query.LaneQuery
;
import
java.util.List
;
/**
* @author hfx
* @date 2023/1/13 19:09
* @desc LaneInfoService
*/
public
interface
LaneInfoService
{
/**
* 查询车道基础信息
* @param query
* @return
*/
List
<
LaneInfoDTO
>
listLaneInfo
(
LaneQuery
query
);
/**
* 查询灯组车道信息
* @param query
* @return
*/
List
<
LaneInfoDTO
>
listLightsLaneInfo
(
LaneQuery
query
);
}
signal-optimize-service/src/main/java/net/wanji/opt/service/impl/CrossInfoServiceImpl.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
service
.
impl
;
import
net.wanji.common.utils.tool.BeanListUtils
;
import
net.wanji.opt.dao.mapper.CrossInfoMapper
;
import
net.wanji.opt.dto.CrossInfoDTO
;
import
net.wanji.opt.po.base.CrossInfoPO
;
import
net.wanji.opt.query.CrossQuery
;
import
net.wanji.opt.service.CrossInfoService
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* @author hfx
* @date 2023/1/12 15:12
* @desc CrossInfoServiceImpl
*/
@Service
public
class
CrossInfoServiceImpl
implements
CrossInfoService
{
@Resource
CrossInfoMapper
crossInfoMapper
;
public
List
<
CrossInfoDTO
>
listCrossInfo
(
CrossQuery
query
)
{
// 获取数据库数据
List
<
CrossInfoPO
>
crossInfoPOList
=
crossInfoMapper
.
listCrossInfo
(
query
);
return
BeanListUtils
.
populateList
(
crossInfoPOList
,
new
ArrayList
<>(),
CrossInfoDTO
.
class
);
}
}
signal-optimize-service/src/main/java/net/wanji/opt/service/impl/CrossLightsServiceImpl.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
service
.
impl
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.common.utils.tool.BeanListUtils
;
import
net.wanji.opt.dao.mapper.CrossLightsMapper
;
import
net.wanji.opt.dao.mapper.CrossPhaseLightsMapper
;
import
net.wanji.opt.dto.CrossLightsDTO
;
import
net.wanji.opt.dto.LaneInfoDTO
;
import
net.wanji.opt.po.base.CrossLightsPO
;
import
net.wanji.opt.po.base.CrossPhaseLightsPO
;
import
net.wanji.opt.service.CrossLightsService
;
import
net.wanji.opt.service.LaneInfoService
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
/**
* @author hfx
* @date 2023/1/13 17:48
* @desc CrossLightsServiceImpl
*/
@Service
@Slf4j
public
class
CrossLightsServiceImpl
implements
CrossLightsService
{
@Resource
CrossLightsMapper
crossLightsMapper
;
@Resource
LaneInfoService
laneInfoService
;
@Override
public
List
<
CrossLightsDTO
>
listCrossLights
()
{
List
<
CrossLightsPO
>
lightsPOList
=
crossLightsMapper
.
listCrossLights
();
return
BeanListUtils
.
populateList
(
lightsPOList
,
new
ArrayList
<>(),
CrossLightsDTO
.
class
);
}
@Override
public
List
<
CrossLightsDTO
>
listLightsDetails
()
{
// 获取灯组基础信息
List
<
CrossLightsDTO
>
lightsDTOList
=
listCrossLights
();
if
(
lightsDTOList
.
isEmpty
())
{
return
lightsDTOList
;
}
// 获取灯组车道信息
List
<
LaneInfoDTO
>
laneInfoDTOList
=
laneInfoService
.
listLightsLaneInfo
(
null
);
// 处理灯组车道信息,封装成Map:key是灯组ID,value 是车道集合
Map
<
Integer
,
List
<
LaneInfoDTO
>>
laneInfoMap
=
laneInfoDTOList
.
stream
().
collect
(
Collectors
.
groupingBy
(
LaneInfoDTO:
:
getLightsId
));
for
(
CrossLightsDTO
lightsDTO:
lightsDTOList
)
{
lightsDTO
.
setLaneInfos
(
laneInfoMap
.
get
(
lightsDTO
.
getId
()));
}
return
lightsDTOList
;
}
}
signal-optimize-service/src/main/java/net/wanji/opt/service/impl/CrossOptimizeServiceImpl.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
service
.
impl
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.opt.common.Constants
;
import
net.wanji.opt.common.enums.CrossStatusEnum
;
import
net.wanji.opt.dto.*
;
import
net.wanji.opt.po.CrossDataRealtimePO
;
import
net.wanji.opt.service.CrossOptimizeService
;
import
net.wanji.opt.service.CrossPhaseService
;
import
net.wanji.opt.service.CrossSchedulesService
;
import
net.wanji.opt.service.CrossSchemeService
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* @author hfx
* @date 2023/1/10 15:15
* @desc CrossOptimizeServiceImpl
*/
@Service
@Slf4j
public
class
CrossOptimizeServiceImpl
implements
CrossOptimizeService
{
@Resource
CrossPhaseService
crossPhaseService
;
@Resource
CrossSchemeService
crossSchemeService
;
@Resource
CrossSchedulesService
crossSchedulesService
;
public
String
realtimeOptimize
()
{
// 获取路口实时数据
List
<
CrossDataRealtimePO
>
crossDataRealtimePOList
=
listCrossDataRealtime
();
if
(
crossDataRealtimePOList
.
isEmpty
())
{
return
null
;
}
// 获取路口转向实时数据
List
<
CrossTurnDataRealtimeDTO
>
turnDataRealtimeDTOList
=
listTurnDataRealtime
();
// 获取方案详情信息
List
<
CrossSchemeDTO
>
schemeDTOList
=
crossSchemeService
.
listCrossSchemeDetails
(
null
);
// 获取调度详情信息
// List<CrossSchedulesDTO> schedulesDTOList = crossSchedulesService.listCrossSchedulesDetails(null);
// 获取异常路口数据
List
<
CrossDataRealtimeDTO
>
abnormalCrossList
=
listAbnormalCross
(
crossDataRealtimePOList
);
if
(
abnormalCrossList
.
isEmpty
())
{
return
null
;
}
log
.
info
(
"加载异常路口:{}条"
,
abnormalCrossList
.
size
());
for
(
CrossDataRealtimeDTO
dto
:
abnormalCrossList
)
{
}
// 获取相位方案信息
// 计算相位优化配时
// 方案下发
return
null
;
}
/**
* 获取异常路口数据
* @return
*/
public
List
<
CrossDataRealtimeDTO
>
listAbnormalCross
(
List
<
CrossDataRealtimePO
>
crossDataRealtimePOList
)
{
List
<
CrossDataRealtimeDTO
>
dtoList
=
new
ArrayList
<>();
CrossDataRealtimeDTO
dto
=
null
;
int
status
=
0
;
for
(
CrossDataRealtimePO
po:
crossDataRealtimePOList
)
{
// 获取失衡、拥堵、溢出路口数据
if
(
Constants
.
NO
.
equals
(
po
.
getIsSpillover
())
||
Constants
.
NO
.
equals
(
po
.
getIsCongestion
())
||
Constants
.
NO
.
equals
(
po
.
getIsUnbalance
()))
{
continue
;
}
if
(
Constants
.
YES
.
equals
(
po
.
getIsSpillover
()))
{
// 溢出
status
=
CrossStatusEnum
.
SPILLOVER
.
getCode
();
}
else
if
(
Constants
.
YES
.
equals
(
po
.
getIsCongestion
()))
{
// 拥堵
status
=
CrossStatusEnum
.
CONGESTION
.
getCode
();
}
else
if
(
Constants
.
YES
.
equals
(
po
.
getIsUnbalance
()))
{
// 失衡
status
=
CrossStatusEnum
.
UNBALANCE
.
getCode
();
}
dto
=
new
CrossDataRealtimeDTO
();
dto
.
setCrossId
(
po
.
getCrossId
());
dto
.
setStatus
(
status
);
dto
.
setDirList
(
null
);
dto
.
setTurnList
(
null
);
dtoList
.
add
(
dto
);
}
return
dtoList
;
}
/**
* 获取转向实时数据
* @return
*/
public
List
<
CrossTurnDataRealtimeDTO
>
listTurnDataRealtime
()
{
return
new
ArrayList
<>();
}
/**
* 获取路口实时数据
* @return
*/
public
List
<
CrossDataRealtimePO
>
listCrossDataRealtime
()
{
return
new
ArrayList
<>();
}
}
signal-optimize-service/src/main/java/net/wanji/opt/service/impl/CrossPhaseServiceImpl.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
service
.
impl
;
import
net.wanji.common.utils.tool.BeanListUtils
;
import
net.wanji.opt.dao.mapper.CrossPhaseLightsMapper
;
import
net.wanji.opt.dao.mapper.CrossPhaseMapper
;
import
net.wanji.opt.dto.CrossLightsDTO
;
import
net.wanji.opt.dto.CrossPhaseDTO
;
import
net.wanji.opt.po.base.CrossPhaseLightsPO
;
import
net.wanji.opt.po.base.CrossPhasePO
;
import
net.wanji.opt.service.CrossLightsService
;
import
net.wanji.opt.service.CrossPhaseService
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
/**
* @author hfx
* @date 2023/1/13 10:10
* @desc 相位接口服务实现
*/
@Service
public
class
CrossPhaseServiceImpl
implements
CrossPhaseService
{
@Resource
CrossPhaseMapper
crossPhaseMapper
;
@Resource
CrossPhaseLightsMapper
phaseLightsMapper
;
@Resource
CrossLightsService
crossLightsService
;
@Override
public
List
<
CrossPhaseDTO
>
listCrossPhase
()
{
// 获取相位信息
List
<
CrossPhasePO
>
crossPhasePOList
=
crossPhaseMapper
.
listCrossPhase
();
return
BeanListUtils
.
populateList
(
crossPhasePOList
,
new
ArrayList
<>(),
CrossPhaseDTO
.
class
);
}
@Override
public
List
<
CrossPhaseDTO
>
listPhaseDetails
()
{
// 获取相位信息
List
<
CrossPhaseDTO
>
phaseDTOList
=
listCrossPhase
();
if
(
phaseDTOList
.
isEmpty
())
{
return
phaseDTOList
;
}
// 获取相位灯组信息
Map
<
Integer
,
List
<
CrossLightsDTO
>>
phaseLightsMap
=
listPhaseLights
();
for
(
CrossPhaseDTO
phase
:
phaseDTOList
)
{
phase
.
setLightsInfos
(
phaseLightsMap
.
get
(
phase
.
getId
()));
}
return
phaseDTOList
;
}
/**
* 获取相位灯组信息
* @return
*/
private
Map
<
Integer
,
List
<
CrossLightsDTO
>>
listPhaseLights
()
{
Map
<
Integer
,
List
<
CrossLightsDTO
>>
phaseLightsMap
=
new
HashMap
<>();
// 获取相位灯组信息
List
<
CrossPhaseLightsPO
>
phaseLightsPOList
=
phaseLightsMapper
.
listCrossPhaseLights
();
if
(
phaseLightsPOList
.
isEmpty
())
{
return
phaseLightsMap
;
}
// 获取灯组详情信息
List
<
CrossLightsDTO
>
lightsDTOList
=
crossLightsService
.
listLightsDetails
();
// 处理灯组数据,封装成map:key是相位ID,value灯组集合
Map
<
Integer
,
CrossLightsDTO
>
lightsMap
=
lightsDTOList
.
stream
().
collect
(
Collectors
.
toMap
(
e
->
e
.
getId
(),
e
->
e
));
Integer
phaseId
;
for
(
CrossPhaseLightsPO
po
:
phaseLightsPOList
)
{
phaseId
=
po
.
getPhaseId
();
if
(
phaseLightsMap
.
containsKey
(
phaseId
))
{
lightsDTOList
=
phaseLightsMap
.
get
(
phaseId
);
}
else
{
lightsDTOList
=
new
ArrayList
<>();
phaseLightsMap
.
put
(
phaseId
,
lightsDTOList
);
}
lightsDTOList
.
add
(
lightsMap
.
get
(
po
.
getLightsId
()));
}
return
phaseLightsMap
;
}
}
signal-optimize-service/src/main/java/net/wanji/opt/service/impl/CrossSchedulesServiceImpl.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
service
.
impl
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.common.utils.tool.BeanListUtils
;
import
net.wanji.opt.dao.mapper.CrossSchedulesMapper
;
import
net.wanji.opt.dto.CrossSchedulesDTO
;
import
net.wanji.opt.dto.CrossSectionDTO
;
import
net.wanji.opt.po.base.CrossSchedulesPlanPO
;
import
net.wanji.opt.service.CrossSchedulesService
;
import
net.wanji.opt.service.CrossSectionService
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
/**
* @author hfx
* @date 2023/1/17 15:58
* @desc CrossSchedulesServiceImpl
*/
@Service
@Slf4j
public
class
CrossSchedulesServiceImpl
implements
CrossSchedulesService
{
@Resource
CrossSchedulesMapper
crossSchedulesMapper
;
@Resource
CrossSectionService
crossSectionService
;
@Override
public
List
<
CrossSchedulesDTO
>
listCrossSchedulesDetails
(
String
crossId
)
{
List
<
CrossSchedulesDTO
>
schedulesDTOList
=
new
ArrayList
<>();
// 获取调度计划信息
List
<
CrossSchedulesPlanPO
>
schedulesPlanPOList
=
crossSchedulesMapper
.
listSchedulesPlan
(
crossId
,
null
);
schedulesDTOList
=
BeanListUtils
.
populateList
(
schedulesPlanPOList
,
schedulesDTOList
,
CrossSchedulesDTO
.
class
);
// 获取日计划信息
List
<
CrossSectionDTO
>
sectionPOList
=
crossSectionService
.
listCrossSectionInfo
(
crossId
,
null
);
// 处理日计划数据,封装成map:key是计划ID,value时段集合
Map
<
Integer
,
List
<
CrossSectionDTO
>>
sectionMap
=
sectionPOList
.
stream
().
collect
(
Collectors
.
groupingBy
(
CrossSectionDTO:
:
getPlanId
));
for
(
CrossSchedulesDTO
schedules
:
schedulesDTOList
)
{
schedules
.
setSectionInfos
(
sectionMap
.
get
(
schedules
.
getPlanId
()));
}
return
schedulesDTOList
;
}
}
signal-optimize-service/src/main/java/net/wanji/opt/service/impl/CrossSchemeServiceImpl.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
service
.
impl
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.common.utils.tool.BeanListUtils
;
import
net.wanji.opt.dao.mapper.CrossSchemeMapper
;
import
net.wanji.opt.dto.CrossPhaseDTO
;
import
net.wanji.opt.dto.CrossSchemeDTO
;
import
net.wanji.opt.po.base.CrossSchemePO
;
import
net.wanji.opt.service.CrossPhaseService
;
import
net.wanji.opt.service.CrossSchemeService
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
/**
* @author hfx
* @date 2023/1/17 15:05
* @desc CrossSchemeServiceImpl
*/
@Service
@Slf4j
public
class
CrossSchemeServiceImpl
implements
CrossSchemeService
{
@Resource
CrossSchemeMapper
crossSchemeMapper
;
@Resource
CrossPhaseService
crossPhaseService
;
@Override
public
List
<
CrossSchemeDTO
>
listCrossSchemeInfo
(
String
crossId
)
{
List
<
CrossSchemePO
>
schemePOList
=
crossSchemeMapper
.
listCrossSchemeInfo
(
crossId
);
return
BeanListUtils
.
populateList
(
schemePOList
,
new
ArrayList
<>(),
CrossSchemeDTO
.
class
);
}
@Override
public
List
<
CrossSchemeDTO
>
listCrossSchemeDetails
(
String
crossId
)
{
// 获取方案基础信息
List
<
CrossSchemeDTO
>
schemeDTOList
=
listCrossSchemeInfo
(
crossId
);
// 获取相位详情信息
List
<
CrossPhaseDTO
>
phaseDTOList
=
crossPhaseService
.
listPhaseDetails
();
// 处理相位数据,封装成map:key是方案ID,value相位信息
Map
<
Integer
,
List
<
CrossPhaseDTO
>>
phaseMap
=
phaseDTOList
.
stream
().
collect
(
Collectors
.
groupingBy
(
CrossPhaseDTO:
:
getSchemeId
));
for
(
CrossSchemeDTO
scheme
:
schemeDTOList
)
{
// 获取方案对应的相位列表
scheme
.
setPhaseInfos
(
phaseMap
.
get
(
scheme
.
getId
()));
}
return
schemeDTOList
;
}
}
signal-optimize-service/src/main/java/net/wanji/opt/service/impl/CrossSectionServiceImpl.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
service
.
impl
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.common.utils.tool.BeanListUtils
;
import
net.wanji.opt.dao.mapper.CrossSectionMapper
;
import
net.wanji.opt.dto.CrossSectionDTO
;
import
net.wanji.opt.po.base.CrossSectionPO
;
import
net.wanji.opt.service.CrossSectionService
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* @author hfx
* @date 2023/1/17 17:48
* @desc CrossSectionServiceImpl
*/
@Service
@Slf4j
public
class
CrossSectionServiceImpl
implements
CrossSectionService
{
@Resource
CrossSectionMapper
crossSectionMapper
;
@Override
public
List
<
CrossSectionDTO
>
listCrossSectionInfo
(
String
crossId
,
String
planId
)
{
// 获取时段信息
List
<
CrossSectionPO
>
sectionPOList
=
crossSectionMapper
.
listCrossSectionInfo
();
return
BeanListUtils
.
populateList
(
sectionPOList
,
new
ArrayList
<>(),
CrossSectionDTO
.
class
);
}
}
signal-optimize-service/src/main/java/net/wanji/opt/service/impl/LaneInfoServiceImpl.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
service
.
impl
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.common.utils.tool.BeanListUtils
;
import
net.wanji.opt.dao.mapper.LaneInfoMapper
;
import
net.wanji.opt.dao.mapper.LaneLightsMapper
;
import
net.wanji.opt.dto.LaneInfoDTO
;
import
net.wanji.opt.po.base.LaneInfoPO
;
import
net.wanji.opt.po.base.LaneLightsPO
;
import
net.wanji.opt.query.LaneQuery
;
import
net.wanji.opt.service.LaneInfoService
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
/**
* @author hfx
* @date 2023/1/13 19:13
* @desc LaneInfoServiceImpl
*/
@Slf4j
@Service
public
class
LaneInfoServiceImpl
implements
LaneInfoService
{
@Resource
LaneInfoMapper
laneInfoMapper
;
@Resource
LaneLightsMapper
laneLightsMapper
;
@Override
public
List
<
LaneInfoDTO
>
listLaneInfo
(
LaneQuery
query
)
{
// 获取车道基础信息
List
<
LaneInfoPO
>
laneInfoPOList
=
laneInfoMapper
.
listLaneInfo
();
return
BeanListUtils
.
populateList
(
laneInfoPOList
,
new
ArrayList
<>(),
LaneInfoDTO
.
class
);
}
@Override
public
List
<
LaneInfoDTO
>
listLightsLaneInfo
(
LaneQuery
query
)
{
// 获取车道信息
List
<
LaneInfoDTO
>
laneInfoDTOList
=
listLaneInfo
(
query
);
if
(
laneInfoDTOList
.
isEmpty
())
{
return
laneInfoDTOList
;
}
// 获取灯组车道信息
List
<
LaneLightsPO
>
lightLanePOList
=
laneLightsMapper
.
listLightLane
();
if
(
lightLanePOList
.
isEmpty
())
{
return
laneInfoDTOList
;
}
// 处理灯组车道信息,封装成Map:key是车道ID,value 是灯组ID
Map
<
String
,
Integer
>
lightLaneMap
=
lightLanePOList
.
stream
().
collect
(
Collectors
.
toMap
(
po
->
po
.
getLaneId
(),
po
->
po
.
getLightsId
()));
List
<
LaneInfoDTO
>
newLaneList
=
new
ArrayList
<>();
String
laneId
;
for
(
LaneInfoDTO
lane
:
laneInfoDTOList
)
{
laneId
=
lane
.
getId
();
if
(!
lightLaneMap
.
containsKey
(
laneId
))
{
continue
;
}
lane
.
setLightsId
(
lightLaneMap
.
get
(
laneId
));
newLaneList
.
add
(
lane
);
}
return
newLaneList
;
}
}
signal-optimize-service/src/main/java/net/wanji/opt/task/RealtimeOptimizeTask.java
0 → 100644
View file @
b31efdbd
package
net
.
wanji
.
opt
.
task
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.opt.service.CrossOptimizeService
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.stereotype.Component
;
import
javax.annotation.Resource
;
/**
* @author hfx
* @date 2023/1/16 16:39
* @desc RealtimeOptimizeTask
*/
@Component
@Slf4j
public
class
RealtimeOptimizeTask
{
@Resource
CrossOptimizeService
crossOptimizeService
;
@Scheduled
(
cron
=
"* 0/1 * * * ? "
)
public
void
run
()
{
log
.
info
(
"RealtimeOptimizeTask ..."
);
crossOptimizeService
.
realtimeOptimize
();
}
}
\ No newline at end of file
signal-optimize-service/src/main/resources/application-dev.yml
0 → 100644
View file @
b31efdbd
server
:
port
:
39001
servlet
:
display-name
:
Wanji
context-path
:
/opt
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://10.100.1.59:3306/t_signal_control?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://10.100.1.59:3306/t_signal_control?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://10.100.1.59:3306/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
:
10.100.1.59
port
:
6379
password
:
Wanji300552
jedis
:
pool
:
max-active
:
200
max-wait
:
5000
max-idle
:
20
min-idle
:
10
timeout
:
5000
database
:
3
# 信号平台
system
:
address
:
# UTC服务地址
utc
:
http://10.100.1.59:32000/utc
# control服务地址
control
:
http://10.100.1.59:32000/control
\ No newline at end of file
signal-optimize-service/src/main/resources/application-pro.yml
0 → 100644
View file @
b31efdbd
server
:
port
:
32001
servlet
:
display-name
:
Wanji
context-path
:
/web
multipart
:
max-file-size
:
50MB
max-request-size
:
50MB
tomcat
:
threads
:
max
:
10000
#线程池配置
threadPool
:
corePoolSize
:
5
maxPoolSize
:
200
queueCapacity
:
5
keepAliveTime
:
60000
spring
:
datasource
:
driver-class-name
:
com.mysql.cj.jdbc.Driver
url
:
jdbc:mysql://10.100.1.59:3306/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
filters
:
stat
minIdle
:
50
maxActive
:
200
initialSize
:
10
maxWait
:
5000
minEvictableIdleTimeMillis
:
60000
timeBetweenEvictionRunsMillis
:
30000
testWhileIdle
:
true
testOnBorrow
:
false
testOnReturn
:
false
keepAlive
:
false
validationQuery
:
SELECT
1
poolPreparedStatements
:
false
maxPoolPreparedStatementPerConnectionSize
:
-1
maxOpenPreparedStatements
:
-1
logAbandoned
:
true
encoding
:
force
:
true
charset
:
UTF-8
enabled
:
true
redis
:
host
:
10.100.1.59
port
:
6379
password
:
Wanji300552
jedis
:
pool
:
max-active
:
200
max-wait
:
5000
max-idle
:
20
min-idle
:
10
timeout
:
5000
database
:
3
# 信号平台
signal
:
signal-optimize-service/src/main/resources/application.yml
0 → 100644
View file @
b31efdbd
spring
:
application
:
name
:
signal-optimize-service
profiles
:
active
:
dev
jackson
:
mapper
:
accept_case_insensitive_properties
:
true
main
:
allow-circular-references
:
true
mvc
:
pathmatch
:
matching-strategy
:
ant_path_matcher
service
:
name
:
signal-optimize-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.opt.dao.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
mybatis-plus
:
mapper-locations
:
classpath:mapper/*.xml,classpath:mapper/*/*.xml
typeAliasesPackage
:
net.wanji.opt.po.base
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
signal-optimize-service/src/main/resources/generate_code_vm/controller.java.ftl
0 → 100644
View file @
b31efdbd
package
${
package
.
Controller
};
import
${
package
.
Service
}.${
table
.
serviceName
};
import
${
package
.
Entity
}.${
entity
};
import
org
.
apache
.
shiro
.
authz
.
annotation
.
RequiresPermissions
;
import
org
.
springframework
.
beans
.
factory
.
annotation
.
Autowired
;
import
org
.
springframework
.
stereotype
.
Controller
;
import
org
.
springframework
.
ui
.
Model
;
import
org
.
springframework
.
web
.
bind
.
annotation
.
PathVariable
;
import
org
.
springframework
.
web
.
bind
.
annotation
.
RequestMapping
;
import
org
.
springframework
.
web
.
bind
.
annotation
.
RequestMethod
;
import
org
.
springframework
.
web
.
bind
.
annotation
.
ResponseBody
;
<#
if
superControllerClassPackage
??
>
import
${
superControllerClassPackage
};
</#
if
>
/**
*
@
Description
:
[${
table
.
comment
}
接口
API
]</
p
>
*
@
author
${
author
}
*
@
version
1.0
*
Created
on
${
date
}
*/
@
Slf4j
@
RestController
@
RequestMapping
(
"<#if package.ModuleName??>/${package.ModuleName}</#if><#if package.SubModuleName??>/${package.SubModuleName}</#if>/${table.viewName}"
)
@
Api
(
value
=
${
table
.
comment
}
接口
,
description
=
${
table
.
comment
}
接口
,
tags
=
{${
table
.
comment
}})
<#
if
superControllerClass
??>
public
class
${
table
.
controllerName
}
extends
${
superControllerClass
}
{
<#
else
>
public
class
${
table
.
controllerName
}
{
</#
if
>
/**
*
<
p
>
Description
:[${
table
.
comment
}
服务
]</
p
>
*/
@
Autowired
private
${
table
.
serviceName
}
${
table
.
serviceName
?
uncap_first
};
}
signal-optimize-service/src/main/resources/generate_code_vm/entity.java.ftl
0 → 100644
View file @
b31efdbd
package
${
package
.
Entity
};
<#
list
table
.
importPackages
as
pkg
>
import
${
pkg
};
</#
list
>
import
lombok
.
Data
;
import
javax
.
persistence
.*;
/**
*
@
Description
:
[${
table
.
comment
}
实体类
]</
p
>
*
@
author
${
author
}
*
@
version
1.0
*
Created
on
${
date
}
*/
@
Data
<#
if
tableAnnotation
??&&
tableAnnotation
>
@
Table
(
name
=
"${table.name}"
)
</#
if
>
<#
if
superEntityClass
??
>
public
class
${
entity
}
extends
${
superEntityClass
}<#
if
activeRecord
><${
entity
}></#
if
>
{
<#
elseif
activeRecord
>
public
class
${
entity
}
extends
Model
<${
entity
}>
{
<#
else
>
public
class
${
entity
}
{
</#
if
>
<#
list
table
.
fields
as
field
>
/**
*
<#
if
field
.
comment
??&&
field
.
comment
!= "">${field.comment}</#if>
**/
<#
if
field
.
keyFlag
>
<#
assign
keyPropertyName
=
field
.
propertyName
/>
@
Id
</#
if
>
<#
if
field
.
convert
>
@
Column
(
name
=
"${field.name}"
)
</#
if
>
private
${
field
.
propertyType
}
${
field
.
propertyName
};
<#
if
cfg
.
rangeDateFileds
?
seq_contains
(
field
.
propertyName
)>
/**
*
<
p
>${
field
.
comment
}
范围查询
-
开始
</
p
>
*/
private
String
${
field
.
propertyName
}
Start
;
/**
*
<
p
>${
field
.
comment
}
范围查询
-
结束
</
p
>
*/
private
String
${
field
.
propertyName
}
End
;
</#
if
>
</#
list
>
}
signal-optimize-service/src/main/resources/generate_code_vm/mapper.java.ftl
0 → 100644
View file @
b31efdbd
package
${
package
.
Mapper
};
import
${
package
.
Entity
}.${
entity
};
import
${
superMapperClassPackage
};
import
org
.
springframework
.
stereotype
.
Repository
;
/**
*
@
Description
:
[${
table
.
comment
}
持久层实现
]</
p
>
*
@
author
${
author
}
*
@
version
1.0
*
Created
on
${
date
}
*/
@
Repository
public
interface
${
table
.
mapperName
}
extends
${
superMapperClass
}<${
entity
}>
{
}
\ No newline at end of file
signal-optimize-service/src/main/resources/generate_code_vm/mapper.xml.ftl
0 → 100644
View file @
b31efdbd
<?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=
"${package.Mapper}.${table.mapperName}"
>
<
#if
enableCache
>
<!-- 开启二级缓存 -->
<cache
type=
"org.mybatis.caches.ehcache.LoggingEhcache"
/>
</
#
if>
<
#if
baseResultMap
>
<!-- 通用查询映射结果 -->
<resultMap
id=
"BaseResultMap"
type=
"${package.Entity}.${entity}"
>
<
#list
table
.
fields
as
field
>
<
#if
field
.
keyFlag
>
<id
column=
"${field.name}"
property=
"${field.propertyName}"
/>
<
#else
>
<result
column=
"${field.name}"
property=
"${field.propertyName}"
/>
</
#
if>
</
#
list>
</resultMap>
</
#
if>
<!--基本字段列表-->
<sql
id=
"Base_Column_List"
>
<
#list
table
.
fields
as
field
>
${field.name}
<
#sep
>
,
</
#
list>
</sql>
</mapper>
signal-optimize-service/src/main/resources/generate_code_vm/service.java.ftl
0 → 100644
View file @
b31efdbd
package
${
package
.
Service
};
import
${
package
.
Entity
}.${
entity
};
import
org
.
springframework
.
stereotype
.
Repository
;
/**
*
@
Description
:
[${
table
.
comment
}
service
]</
p
>
*
@
author
${
author
}
*
@
version
1.0
*
Created
on
${
date
}
*/
@
Repository
public
interface
${
table
.
serviceName
}
extends
${
superServiceClass
}<${
entity
}>
{
}
signal-optimize-service/src/main/resources/generate_code_vm/serviceImpl.java.ftl
0 → 100644
View file @
b31efdbd
package
${
package
.
ServiceImpl
};
import
${
package
.
Entity
}.${
entity
};
import
${
package
.
Mapper
}.${
table
.
mapperName
};
import
${
package
.
Service
}.${
table
.
serviceName
};
import
org
.
springframework
.
stereotype
.
Service
;
/**
*
@
Description
:
[${
table
.
comment
}
service
实现
]</
p
>
*
@
author
${
author
}
*
@
version
1.0
*
Created
on
${
date
}
*/
@
Service
public
class
${
table
.
serviceImplName
}
extends
${
superServiceImplClass
}<${
entity
},
${
table
.
mapperName
}>
implements
${
table
.
serviceName
}
{
}
signal-optimize-service/src/main/resources/logback-spring.xml
0 → 100644
View file @
b31efdbd
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<property
name=
"encoding"
value=
"UTF-8"
/>
<property
name=
"normal-pattern"
value=
"%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level[%thread]%logger{56}.%method:%L -%msg%n"
/>
<property
name=
"LOG_PATH"
value=
"./logs"
/>
<!-- 配置打印DEBUG级别日志的环境. 多个使用逗号隔开. -->
<springProfile
name=
"dev,test"
>
<!-- 如果需要,请自行开启spring或其他组件的debug级别 -->
<logger
name=
"net.wanji.web"
level=
"info"
/>
</springProfile>
<!-- 配置打印INFO级别日志的环境 -->
<springProfile
name=
"prod"
>
<logger
name=
"net.wanji.web"
level=
"info"
/>
</springProfile>
<appender
name=
"consoleLog"
class=
"ch.qos.logback.core.ConsoleAppender"
>
<layout
class=
"ch.qos.logback.classic.PatternLayout"
>
<pattern>
${normal-pattern}
</pattern>
</layout>
</appender>
<appender
name=
"fileInfoLog"
class=
"ch.qos.logback.core.rolling.RollingFileAppender"
>
<file>
${LOG_PATH}/info.log
</file>
<filter
class=
"ch.qos.logback.classic.filter.LevelFilter"
>
<level>
ERROR
</level>
<onMatch>
DENY
</onMatch>
<onMismatch>
ACCEPT
</onMismatch>
</filter>
<encoder>
<pattern>
${normal-pattern}
</pattern>
<charset>
${encoding}
</charset>
</encoder>
<!--滚动策略-->
<rollingPolicy
class=
"ch.qos.logback.core.rolling.TimeBasedRollingPolicy"
>
<!--路径-->
<fileNamePattern>
${LOG_PATH}/info.%d.log
</fileNamePattern>
<MaxHistory>
30
</MaxHistory>
</rollingPolicy>
</appender>
<appender
name=
"fileErrorLog"
class=
"ch.qos.logback.core.rolling.RollingFileAppender"
>
<file>
${LOG_PATH}/error.log
</file>
<filter
class=
"ch.qos.logback.classic.filter.ThresholdFilter"
>
<level>
ERROR
</level>
</filter>
>
<encoder>
<pattern>
${normal-pattern}
</pattern>
<charset>
${encoding}
</charset>
</encoder>
<!--滚动策略-->
<rollingPolicy
class=
"ch.qos.logback.core.rolling.TimeBasedRollingPolicy"
>
<!--路径-->
<fileNamePattern>
${LOG_PATH}/error.%d.log
</fileNamePattern>
<MaxHistory>
30
</MaxHistory>
</rollingPolicy>
</appender>
<root
level=
"INFO"
>
<appender-ref
ref=
"consoleLog"
/>
<appender-ref
ref=
"fileInfoLog"
/>
<appender-ref
ref=
"fileErrorLog"
/>
</root>
</configuration>
\ No newline at end of file
signal-optimize-service/src/main/resources/mapper/CrossInfoMapper.xml
0 → 100644
View file @
b31efdbd
<?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.opt.dao.mapper.CrossInfoMapper"
>
<!-- 通用查询映射结果 -->
<resultMap
id=
"BaseResultMap"
type=
"net.wanji.opt.po.base.CrossInfoPO"
>
<result
property=
"id"
column=
"id"
/>
<result
property=
"name"
column=
"name"
/>
<result
property=
"type"
column=
"type"
/>
<result
property=
"level"
column=
"level"
/>
<result
property=
"areaCode"
column=
"area_code"
/>
<result
property=
"location"
column=
"location"
/>
<result
property=
"isSignal"
column=
"is_signal"
/>
<result
property=
"isStart"
column=
"is_start"
/>
<result
property=
"isSend"
column=
"is_send"
/>
</resultMap>
<!-- 查询路口列表信息 -->
<select
id=
"listCrossInfo"
parameterType=
"net.wanji.opt.query.CrossQuery"
resultMap=
"BaseResultMap"
>
select
id
,name
,type
,level
,area_code
,location
,is_signal
,is_start
,is_send
from
t_base_cross_info
where 1 = 1
<if
test=
"isSignal != null and isSignal != '' "
>
and is_signal = #{isSignal}
</if>
<if
test=
"isStart != null and isStart != '' "
>
and is_start = #{isStart}
</if>
<if
test=
"isSend != null and isSend != '' "
>
and is_send = #{isSend}
</if>
</select>
</mapper>
signal-optimize-service/src/main/resources/mapper/CrossLightsMapper.xml
0 → 100644
View file @
b31efdbd
<?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.opt.dao.mapper.CrossLightsMapper"
>
<!-- 通用查询映射结果 -->
<resultMap
type=
"net.wanji.opt.po.base.CrossLightsPO"
id=
"BaseResultMap"
>
<result
property=
"id"
column=
"id"
/>
<result
property=
"lightsNo"
column=
"lights_no"
/>
<result
property=
"type"
column=
"type"
/>
<result
property=
"dir"
column=
"dir"
/>
<result
property=
"sort"
column=
"sort"
/>
<result
property=
"crossId"
column=
"cross_id"
/>
</resultMap>
<!-- 查询灯组列表信息 -->
<select
id=
"listCrossLights"
resultMap=
"BaseResultMap"
>
select
id
,lights_no
,type
,dir
,sort
,cross_id
from
t_base_cross_lights
where 1=1
<if
test=
"crossId != null and crossId != ''"
>
and cross_id = #{crossId}
</if>
</select>
</mapper>
signal-optimize-service/src/main/resources/mapper/CrossPhaseLightsMapper.xml
0 → 100644
View file @
b31efdbd
<?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.opt.dao.mapper.CrossPhaseLightsMapper"
>
<!-- 通用查询映射结果 -->
<resultMap
type=
"net.wanji.opt.po.base.CrossPhaseLightsPO"
id=
"BaseResultMap"
>
<result
property=
"lightsId"
column=
"lights_id"
/>
<result
property=
"phaseId"
column=
"phase_id"
/>
<result
property=
"crossId"
column=
"cross_id"
/>
</resultMap>
<!-- 查询相位灯组信息 -->
<select
id=
"listCrossPhaseLights"
resultMap=
"BaseResultMap"
>
select
lights_id
,phase_id
,cross_id
from
t_base_cross_phase_lights
where 1=1
<if
test=
"crossId != null and crossId != ''"
>
and cross_id = #{crossId}
</if>
<if
test=
"phaseId != null and phaseId != ''"
>
and phase_id = #{phaseId}
</if>
</select>
</mapper>
signal-optimize-service/src/main/resources/mapper/CrossPhaseMapper.xml
0 → 100644
View file @
b31efdbd
<?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.opt.dao.mapper.CrossPhaseMapper"
>
<!-- 通用查询映射结果 -->
<resultMap
type=
"net.wanji.opt.po.base.CrossPhasePO"
id=
"BaseResultMap"
>
<result
property=
"id"
column=
"id"
/>
<result
property=
"phaseNo"
column=
"phase_no"
/>
<result
property=
"name"
column=
"name"
/>
<result
property=
"sort"
column=
"sort"
/>
<result
property=
"crossId"
column=
"cross_id"
/>
<result
property=
"schemeId"
column=
"plan_id"
/>
<result
property=
"ringNo"
column=
"ring_no"
/>
<result
property=
"groupNo"
column=
"group_no"
/>
<!--<result property="type" column="type"/>-->
<result
property=
"controlMode"
column=
"control_mode"
/>
<result
property=
"phaseTime"
column=
"phase_time"
/>
<result
property=
"greenTime"
column=
"green_time"
/>
<result
property=
"greenFlashTime"
column=
"green_flash_time"
/>
<result
property=
"pedFlashTime"
column=
"ped_flash_time"
/>
<result
property=
"yellowTime"
column=
"yellow_time"
/>
<result
property=
"redTime"
column=
"red_time"
/>
<result
property=
"minGreenTime"
column=
"min_green_time"
/>
<result
property=
"maxGreenTime"
column=
"max_green_time"
/>
<result
property=
"gmtCreate"
column=
"gmt_create"
/>
<result
property=
"gmtModified"
column=
"gmt_modified"
/>
</resultMap>
<select
id=
"listCrossPhase"
resultMap=
"BaseResultMap"
>
select
id
,phase_no
,name
,sort
,cross_id
,plan_id
,ring_no
,group_no
,control_mode
,phase_time
,green_time
,green_flash_time
,ped_flash_time
,yellow_time
,red_time
,min_green_time
,max_green_time
from
t_base_cross_phase
where 1=1
<if
test=
"crossId != null and crossId != ''"
>
and cross_id = #{crossId}
</if>
<if
test=
"schemeId != null and schemeId != ''"
>
and plan_id = #{schemeId}
</if>
</select>
</mapper>
signal-optimize-service/src/main/resources/mapper/CrossPlanMapper.xml
0 → 100644
View file @
b31efdbd
<?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.opt.dao.mapper.CrossPlanMapper"
>
<!-- 通用查询映射结果 -->
<resultMap
type=
"net.wanji.opt.po.base.CrossPlanPO"
id=
"BaseResultMap"
>
<result
property=
"id"
column=
"id"
/>
<result
property=
"planNo"
column=
"plan_no"
/>
<result
property=
"name"
column=
"name"
/>
<result
property=
"crossId"
column=
"cross_id"
/>
</resultMap>
<!-- 查询计划基础信息列表 -->
<select
id=
"listCrossPlanInfo"
parameterType=
"String"
resultMap=
"BaseResultMap"
>
select
id
,plan_no
,name
,cross_id
from
t_base_cross_plan
where 1=1
<if
test=
"crossId != null and crossId != ''"
>
and cross_id = #{crossId}
</if>
</select>
</mapper>
signal-optimize-service/src/main/resources/mapper/CrossSchedulesMapper.xml
0 → 100644
View file @
b31efdbd
<?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.opt.dao.mapper.CrossSchedulesMapper"
>
<!-- 通用查询映射结果 -->
<resultMap
type=
"net.wanji.opt.po.base.CrossSchedulesPO"
id=
"BaseResultMap"
>
<result
property=
"id"
column=
"id"
/>
<result
property=
"name"
column=
"name"
/>
<result
property=
"crossId"
column=
"cross_id"
/>
<result
property=
"status"
column=
"status"
/>
</resultMap>
<resultMap
type=
"net.wanji.opt.po.base.CrossSchedulesPlanPO"
id=
"CrossSchedulesPlanPO"
>
<result
property=
"schedulesId"
column=
"schedulesId"
/>
<result
property=
"schedulesName"
column=
"schedulesName"
/>
<result
property=
"status"
column=
"status"
/>
<result
property=
"planId"
column=
"planId"
/>
<result
property=
"planNo"
column=
"planNo"
/>
<result
property=
"crossId"
column=
"cross_id"
/>
<result
property=
"week"
column=
"week"
/>
<result
property=
"specialDate"
column=
"specialDate"
/>
</resultMap>
<!-- 查询调度基础信息列表 -->
<select
id=
"listCrossSchedulesInfo"
parameterType=
"String"
resultMap=
"BaseResultMap"
>
select
id
,plan_no
,name
,cross_id
from
t_base_cross_plan
where 1=1
<if
test=
"crossId != null and crossId != ''"
>
and cross_id = #{crossId}
</if>
</select>
<!-- 查询调度计划信息列表 -->
<select
id=
"listSchedulesPlan"
parameterType=
"String"
resultMap=
"CrossSchedulesPlanPO"
>
SELECT
s.id schedules_id
,s.`name` schedules_name
,s.`status`
,s.cross_id
,p.id plan_id
,p.plan_no
,sp.`week`
,sp.special_date
FROM
t_base_cross_schedules s
,t_base_cross_schedules_plan sp
,t_base_cross_plan p
WHERE
s.id = sp.schedules_id
AND p.id = sp.plan_id
<if
test=
"crossId != null and crossId != ''"
>
and cross_id = #{crossId}
</if>
<if
test=
"schedulesId != null and schedulesId != ''"
>
and s.id = #{schedulesId}
</if>
</select>
</mapper>
signal-optimize-service/src/main/resources/mapper/CrossSchemeMapper.xml
0 → 100644
View file @
b31efdbd
<?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.opt.dao.mapper.CrossSchemeMapper"
>
<!-- 通用查询映射结果 -->
<resultMap
type=
"net.wanji.opt.po.base.CrossSchemePO"
id=
"BaseResultMap"
>
<result
property=
"id"
column=
"id"
/>
<result
property=
"schemeNo"
column=
"scheme_no"
/>
<result
property=
"name"
column=
"name"
/>
<result
property=
"crossId"
column=
"cross_id"
/>
<result
property=
"cycle"
column=
"cycle"
/>
<result
property=
"coordPhase"
column=
"coord_phase"
/>
<result
property=
"offset"
column=
"offset"
/>
</resultMap>
<!-- 查询方案基础信息列表 -->
<select
id=
"listCrossSchemeInfo"
parameterType=
"String"
resultMap=
"BaseResultMap"
>
select
id
,scheme_no
,name
,cross_id
,cycle
,coord_phase
,offset
from
t_base_cross_scheme
where 1=1
<if
test=
"crossId != null and crossId != ''"
>
and cross_id = #{crossId}
</if>
</select>
</mapper>
signal-optimize-service/src/main/resources/mapper/CrossSectionMapper.xml
0 → 100644
View file @
b31efdbd
<?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.opt.dao.mapper.CrossSectionMapper"
>
<!-- 通用查询映射结果 -->
<resultMap
type=
"net.wanji.opt.po.base.CrossSectionPO"
id=
"BaseResultMap"
>
<result
property=
"id"
column=
"id"
/>
<result
property=
"sectionNo"
column=
"section_no"
/>
<result
property=
"startTime"
column=
"start_time"
/>
<result
property=
"endTime"
column=
"end_time"
/>
<result
property=
"crossId"
column=
"cross_id"
/>
<result
property=
"planId"
column=
"plan_id"
/>
<result
property=
"schemeId"
column=
"scheme_id"
/>
<result
property=
"controlMode"
column=
"control_mode"
/>
</resultMap>
<!-- 查询时段基础信息列表 -->
<select
id=
"listCrossSectionInfo"
parameterType=
"String"
resultMap=
"BaseResultMap"
>
select
id
,section_no
,start_time
,end_time
,cross_id
,plan_id
,scheme_id
,control_mode
from
t_base_cross_section
where 1=1
<if
test=
"crossId != null and crossId != ''"
>
and cross_id = #{crossId}
</if>
<if
test=
"planId != null and planId != ''"
>
and plan_id = #{planId}
</if>
</select>
</mapper>
signal-optimize-service/src/main/resources/mapper/LaneInfoMapper.xml
0 → 100644
View file @
b31efdbd
<?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.opt.dao.mapper.LaneInfoMapper"
>
<!-- 通用查询映射结果 -->
<resultMap
id=
"BaseResultMap"
type=
"net.wanji.opt.po.base.LaneInfoPO"
>
<result
property=
"id"
column=
"id"
/>
<result
property=
"code"
column=
"code"
/>
<result
property=
"sort"
column=
"sort"
/>
<result
property=
"type"
column=
"type"
/>
<result
property=
"dir"
column=
"dir"
/>
<result
property=
"turn"
column=
"turn"
/>
<result
property=
"category"
column=
"category"
/>
<result
property=
"rid"
column=
"rid"
/>
<result
property=
"crossId"
column=
"cross_id"
/>
<result
property=
"length"
column=
"length"
/>
<result
property=
"width"
column=
"width"
/>
</resultMap>
<!-- 查询车道基础信息列表 -->
<select
id=
"listLaneInfo"
parameterType=
"String"
resultMap=
"BaseResultMap"
>
select
id
,code
,sort
,type
,dir
,turn
,category
,rid
,cross_id
,length
,width
from
t_base_lane_info
where 1 = 1
<if
test=
"crossId != null and crossId != '' "
>
and cross_id = #{crossId}
</if>
<if
test=
"type != null and type != '' "
>
and type = #{type}
</if>
<if
test=
"rid != null and rid != '' "
>
and rid = #{rid}
</if>
</select>
</mapper>
signal-optimize-service/src/main/resources/mapper/LaneLightsMapper.xml
0 → 100644
View file @
b31efdbd
<?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.opt.dao.mapper.LaneLightsMapper"
>
<!-- 通用查询映射结果 -->
<resultMap
id=
"BaseResultMap"
type=
"net.wanji.opt.po.base.LaneLightsPO"
>
<result
property=
"laneId"
column=
"lane_id"
/>
<result
property=
"crossId"
column=
"cross_id"
/>
<result
property=
"lightsId"
column=
"lights_id"
/>
</resultMap>
<!-- 查询灯组车道列表信息 -->
<select
id=
"listLightLane"
parameterType=
"String"
resultMap=
"BaseResultMap"
>
select
id
,lights_id
,lane_id
,cross_id
from
t_base_cross_lane_lights
where 1=1
<if
test=
"crossId != null and crossId != '' "
>
and cross_id = #{crossId}
</if>
<if
test=
"lightsId != null and lightsId != '' "
>
and lights_id = #{lightsId}
</if>
</select>
</mapper>
signal-optimize-service/src/main/resources/mybatis-generator/generatorConfig.xml
0 → 100644
View file @
b31efdbd
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<context
id=
"Mysql"
defaultModelType=
"flat"
>
<property
name=
"javaFileEncoding"
value=
"UTF-8"
/>
<!-- xml配置文件中分隔符 -->
<property
name=
"beginningDelimiter"
value=
"`"
/>
<property
name=
"endingDelimiter"
value=
"`"
/>
<!-- 配置通用的Mapper基类 -->
<plugin
type=
"tk.mybatis.mapper.generator.MapperPlugin"
>
<property
name=
"mappers"
value=
"com.xiaojukeji.ep.ip.dao.util.MyBaseMapper"
/>
</plugin>
<jdbcConnection
connectionURL=
"jdbc:mysql://172.20.24.58/didi-assets"
driverClass=
"com.mysql.jdbc.Driver"
userId=
"root"
password=
"Eifqr!Kge"
>
</jdbcConnection>
<javaModelGenerator
targetPackage=
"${targetModelPackage}"
targetProject=
"${targetJavaProject}"
/>
<sqlMapGenerator
targetPackage=
"${targetXMLPackage}"
targetProject=
"${targetResourcesProject}"
/>
<javaClientGenerator
targetPackage=
"${targetMapperPackage}"
targetProject=
"${targetJavaProject}"
type=
"MIXEDMAPPER"
/>
<!-- 控制生成文件和XML的内容 -->
<table
tableName=
"outsource_user"
enableCountByExample=
"false"
enableUpdateByExample=
"false"
enableDeleteByExample=
"false"
enableSelectByExample=
"false"
selectByExampleQueryId=
"false"
/>
</context>
</generatorConfiguration>
\ No newline at end of file
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