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
jinan
traffic-signal-platform
Commits
d0bc74ef
Commit
d0bc74ef
authored
Mar 18, 2025
by
黄伟铭
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
4d4bb296
9738cae8
Changes
40
Show whitespace changes
Inline
Side-by-side
Showing
40 changed files
with
1015 additions
and
217 deletions
+1015
-217
RestTemplateConfig.java
...rc/main/java/net/wanji/opt/config/RestTemplateConfig.java
+63
-63
CrossController.java
...main/java/net/wanji/opt/controllerv2/CrossController.java
+34
-10
TrendControllerV2.java
...in/java/net/wanji/opt/controllerv2/TrendControllerV2.java
+22
-3
TrunkLineController.java
.../java/net/wanji/opt/controllerv2/TrunkLineController.java
+20
-2
AnalysisProblemAreaDayController.java
...lerv2/judgeanalysis/AnalysisProblemAreaDayController.java
+3
-2
AnalysisProblemCrossDayController.java
...erv2/judgeanalysis/AnalysisProblemCrossDayController.java
+2
-1
AnalysisProblemGreenDayController.java
...erv2/judgeanalysis/AnalysisProblemGreenDayController.java
+62
-37
BaseAreaInfoController.java
...pt/controllerv2/judgeanalysis/BaseAreaInfoController.java
+59
-0
AreaCrossProblemAnalysisResult.java
.../response/areaproblem/AreaCrossProblemAnalysisResult.java
+1
-1
AreaGreenProblemAnalysisResult.java
.../response/areaproblem/AreaGreenProblemAnalysisResult.java
+2
-2
AreaProblemOverview.java
...ysis/design/response/areaproblem/AreaProblemOverview.java
+1
-1
AreaProblemTrendAnalysisResult.java
.../response/areaproblem/AreaProblemTrendAnalysisResult.java
+0
-12
ProblemTrendAnalysisResultTimeFlow.java
...ponse/areaproblem/ProblemTrendAnalysisResultTimeFlow.java
+23
-0
CrossDirProblemTrendAnalysisResult.java
...onse/crossproblem/CrossDirProblemTrendAnalysisResult.java
+61
-0
GreenCrossProblemTrendAnalysisResult.java
...se/greenproblem/GreenCrossProblemTrendAnalysisResult.java
+60
-0
GreenProblemTimeDirReasonResult.java
...esponse/greenproblem/GreenProblemTimeDirReasonResult.java
+53
-0
TrunkLineMapper.java
...c/main/java/net/wanji/opt/dao/mapper/TrunkLineMapper.java
+13
-0
BaseAreaInfo.java
...java/net/wanji/opt/entity/judgeanalysis/BaseAreaInfo.java
+60
-0
CrossService.java
...e/src/main/java/net/wanji/opt/servicev2/CrossService.java
+9
-2
TrendServiceV2.java
...src/main/java/net/wanji/opt/servicev2/TrendServiceV2.java
+2
-0
TrunkLineService.java
...c/main/java/net/wanji/opt/servicev2/TrunkLineService.java
+6
-1
CrossServiceImpl.java
...java/net/wanji/opt/servicev2/implv2/CrossServiceImpl.java
+39
-31
TrendServiceV2Impl.java
...va/net/wanji/opt/servicev2/implv2/TrendServiceV2Impl.java
+91
-10
TrunkLineImpl.java
...in/java/net/wanji/opt/servicev2/implv2/TrunkLineImpl.java
+106
-19
BaseAreaInfoService.java
...anji/opt/servicev2/judgeanalysis/BaseAreaInfoService.java
+18
-0
BaseAreaInfoServiceImpl.java
...servicev2/judgeanalysis/impl/BaseAreaInfoServiceImpl.java
+53
-0
TrunkLineCrossProblemEntity.java
...wanji/opt/synthesis/pojo/TrunkLineCrossProblemEntity.java
+14
-0
CrossStatusDistributionVO.java
...ain/java/net/wanji/opt/vo2/CrossStatusDistributionVO.java
+10
-0
GreenOptCrossOffsetVO.java
...rc/main/java/net/wanji/opt/vo2/GreenOptCrossOffsetVO.java
+31
-0
TrunkLineCrossProblemVO.java
.../main/java/net/wanji/opt/vo2/TrunkLineCrossProblemVO.java
+28
-0
HoloEventMapper.xml
...ize-service/src/main/resources/mapper/HoloEventMapper.xml
+3
-3
TrunkLineMapper.xml
...ize-service/src/main/resources/mapper/TrunkLineMapper.xml
+35
-1
BaseEnum.java
wj-common/src/main/java/net/wanji/common/enums/BaseEnum.java
+2
-2
BaseAreaInfoMapper.java
...java/net/wanji/databus/dao/mapper/BaseAreaInfoMapper.java
+2
-0
BaseAreaInfoPO.java
...us/src/main/java/net/wanji/databus/po/BaseAreaInfoPO.java
+7
-0
BaseAreaInfoMapper.xml
wj-databus/src/main/resources/mapper/BaseAreaInfoMapper.xml
+6
-0
CodeGeneratorMyBatis1.java
wj-gernerator/src/main/java/CodeGeneratorMyBatis1.java
+8
-8
provider.java.ftl
...r/src/main/resources/templates/mybatis1/provider.java.ftl
+1
-1
providerImpl.java.ftl
...c/main/resources/templates/mybatis1/providerImpl.java.ftl
+2
-2
restServer.java.ftl
...src/main/resources/templates/mybatis1/restServer.java.ftl
+3
-3
No files found.
signal-optimize-service/src/main/java/net/wanji/opt/config/RestTemplateConfig.java
View file @
d0bc74ef
package
net
.
wanji
.
opt
.
config
;
//package net.wanji.opt.config;
//
import
org.springframework.beans.factory.annotation.Value
;
//import org.springframework.beans.factory.annotation.Value;
import
org.springframework.context.annotation.Bean
;
//import org.springframework.context.annotation.Bean;
import
org.springframework.context.annotation.Configuration
;
//import org.springframework.context.annotation.Configuration;
import
org.springframework.data.redis.connection.RedisConnectionFactory
;
//import org.springframework.data.redis.connection.RedisConnectionFactory;
import
org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory
;
//import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import
org.springframework.data.redis.core.RedisTemplate
;
//import org.springframework.data.redis.core.RedisTemplate;
import
org.springframework.data.redis.serializer.StringRedisSerializer
;
//import org.springframework.data.redis.serializer.StringRedisSerializer;
//
@Configuration
//@Configuration
public
class
RestTemplateConfig
{
//public class RestTemplateConfig {
//
@Value
(
"${spring.redis.host}"
)
// @Value("${spring.redis.host}")
private
String
redisHost
;
// private String redisHost;
//
@Value
(
"${spring.redis.port}"
)
// @Value("${spring.redis.port}")
private
int
redisPort
;
// private int redisPort;
//
@Value
(
"${spring.redis.database}"
)
// @Value("${spring.redis.database}")
private
int
redisDatabase
;
// private int redisDatabase;
//
@Value
(
"${spring.redis.password}"
)
// @Value("${spring.redis.password}")
private
String
redisPassword
;
// private String redisPassword;
//
//
// 默认使用配置的数据库
// // 默认使用配置的数据库
@Bean
// @Bean
public
RedisConnectionFactory
redisConnectionFactory
()
{
// public RedisConnectionFactory redisConnectionFactory() {
LettuceConnectionFactory
factory
=
new
LettuceConnectionFactory
(
redisHost
,
redisPort
);
// LettuceConnectionFactory factory = new LettuceConnectionFactory(redisHost, redisPort);
factory
.
setPassword
(
redisPassword
);
// factory.setPassword(redisPassword);
factory
.
setDatabase
(
redisDatabase
);
// factory.setDatabase(redisDatabase);
return
factory
;
// return factory;
}
// }
//
@Bean
(
name
=
"redisTemplate"
)
// @Bean(name = "redisTemplate")
public
RedisTemplate
<
String
,
Object
>
redisTemplate
()
{
// public RedisTemplate<String, Object> redisTemplate() {
RedisTemplate
<
String
,
Object
>
template
=
new
RedisTemplate
<>();
// RedisTemplate<String, Object> template = new RedisTemplate<>();
template
.
setConnectionFactory
(
redisConnectionFactory
());
// template.setConnectionFactory(redisConnectionFactory());
template
.
setKeySerializer
(
new
StringRedisSerializer
());
// template.setKeySerializer(new StringRedisSerializer());
template
.
setValueSerializer
(
new
StringRedisSerializer
());
// template.setValueSerializer(new StringRedisSerializer());
return
template
;
// return template;
}
// }
//
// 使用7号数据库
// // 使用7号数据库
@Bean
(
name
=
"redis7ConnectionFactory"
)
// @Bean(name = "redis7ConnectionFactory")
public
RedisConnectionFactory
redis7ConnectionFactory
()
{
// public RedisConnectionFactory redis7ConnectionFactory() {
LettuceConnectionFactory
factory
=
new
LettuceConnectionFactory
(
redisHost
,
redisPort
);
// LettuceConnectionFactory factory = new LettuceConnectionFactory(redisHost, redisPort);
factory
.
setPassword
(
redisPassword
);
// factory.setPassword(redisPassword);
factory
.
setDatabase
(
7
);
// factory.setDatabase(7);
return
factory
;
// return factory;
}
// }
//
@Bean
(
name
=
"redis7Template"
)
// @Bean(name = "redis7Template")
public
RedisTemplate
<
String
,
Object
>
redis7Template
()
{
// public RedisTemplate<String, Object> redis7Template() {
RedisTemplate
<
String
,
Object
>
template
=
new
RedisTemplate
<>();
// RedisTemplate<String, Object> template = new RedisTemplate<>();
template
.
setConnectionFactory
(
redis7ConnectionFactory
());
// template.setConnectionFactory(redis7ConnectionFactory());
template
.
setKeySerializer
(
new
StringRedisSerializer
());
// template.setKeySerializer(new StringRedisSerializer());
template
.
setValueSerializer
(
new
StringRedisSerializer
());
// template.setValueSerializer(new StringRedisSerializer());
return
template
;
// return template;
}
// }
//
}
//}
\ No newline at end of file
\ No newline at end of file
signal-optimize-service/src/main/java/net/wanji/opt/controllerv2/CrossController.java
View file @
d0bc74ef
...
@@ -3,12 +3,12 @@ package net.wanji.opt.controllerv2;
...
@@ -3,12 +3,12 @@ package net.wanji.opt.controllerv2;
import
io.swagger.annotations.*
;
import
io.swagger.annotations.*
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.common.framework.rest.JsonViewObject
;
import
net.wanji.common.framework.rest.JsonViewObject
;
import
net.wanji.opt.po.base.CrossLaneDataHistPoExtend
;
import
net.wanji.opt.servicev2.CrossService
;
import
net.wanji.opt.servicev2.CrossService
;
import
net.wanji.opt.synthesis.pojo.CrossRealTimeAlarmEntity
;
import
net.wanji.opt.synthesis.pojo.CrossRealTimeAlarmEntity
;
import
net.wanji.opt.synthesis.pojo.CrossStatusDisOptTimeEntity
;
import
net.wanji.opt.synthesis.pojo.CrossStatusDisOptTimeEntity
;
import
net.wanji.opt.vo2.CrossRealTimeAlarmVO
;
import
net.wanji.opt.vo2.CrossRealTimeAlarmVO
;
import
net.wanji.opt.vo2.CrossStatusDistributionVO
;
import
net.wanji.opt.vo2.CrossStatusDistributionVO
;
import
org.springframework.http.HttpMethod
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RequestParam
;
...
@@ -37,22 +37,46 @@ public class CrossController {
...
@@ -37,22 +37,46 @@ public class CrossController {
@ApiImplicitParam
(
name
=
"groupType"
,
value
=
"时间粒度 0--5分钟 1--15分钟 2--30分钟 3--60分钟"
,
required
=
true
,
dataType
=
"String"
,
paramType
=
"query"
),
@ApiImplicitParam
(
name
=
"groupType"
,
value
=
"时间粒度 0--5分钟 1--15分钟 2--30分钟 3--60分钟"
,
required
=
true
,
dataType
=
"String"
,
paramType
=
"query"
),
@ApiImplicitParam
(
name
=
"date"
,
value
=
"日期 格式:yyyy-MM-dd"
,
required
=
true
,
dataType
=
"String"
,
paramType
=
"query"
),
@ApiImplicitParam
(
name
=
"date"
,
value
=
"日期 格式:yyyy-MM-dd"
,
required
=
true
,
dataType
=
"String"
,
paramType
=
"query"
),
@ApiImplicitParam
(
name
=
"objectType"
,
value
=
"范围 1:方向级指标 2:转向级指标 3:车道级指标 4:路口级指标"
,
required
=
true
,
dataType
=
"String"
,
paramType
=
"query"
),
@ApiImplicitParam
(
name
=
"objectType"
,
value
=
"范围 1:方向级指标 2:转向级指标 3:车道级指标 4:路口级指标"
,
required
=
true
,
dataType
=
"String"
,
paramType
=
"query"
),
@ApiImplicitParam
(
name
=
"directionName"
,
value
=
"方向
"
,
required
=
false
,
dataType
=
"String"
,
defaultValue
=
"北
进口"
),
@ApiImplicitParam
(
name
=
"directionName"
,
value
=
"方向
支持 北进口;东进口;南进口;西进口"
,
dataType
=
"String"
,
defaultValue
=
"北进口;东进口;南进口;西
进口"
),
})
})
@ApiResponses
({
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
CrossStatusDistributionVO
.
class
),
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
CrossStatusDistributionVO
.
class
),
})
})
public
JsonViewObject
getCrossStatusDistribution
(
String
crossID
,
String
date
,
String
groupType
,
Integer
objectType
,
@RequestParam
(
defaultValue
=
""
)
String
directionName
)
{
public
JsonViewObject
getCrossStatusDistribution
(
String
crossID
,
String
date
,
String
groupType
,
Integer
objectType
,
String
directionName
)
{
JsonViewObject
jsonViewObject
=
JsonViewObject
.
newInstance
();
JsonViewObject
jsonViewObject
=
JsonViewObject
.
newInstance
();
Map
<
String
,
List
<?>>
result
;
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
String
[]
dirs
=
directionName
.
split
(
";"
);
for
(
String
dir
:
dirs
)
{
String
dirName
=
""
;
switch
(
dir
)
{
case
"北进口"
:
dirName
=
"northList"
;
break
;
case
"南进口"
:
dirName
=
"southList"
;
break
;
case
"西进口"
:
dirName
=
"westList"
;
break
;
case
"东进口"
:
dirName
=
"eastList"
;
break
;
}
try
{
try
{
result
=
crossService
.
getCrossStatusDistribution
(
crossID
,
date
,
groupType
,
objectType
,
directionName
);
List
<
CrossStatusDistributionVO
>
info
=
crossService
.
getCrossStatusDistribution
(
crossID
,
date
,
groupType
,
objectType
,
dir
);
map
.
put
(
dirName
,
info
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
log
.
error
(
"监测详情-路口事件详情-路口状态分布: "
,
e
);
log
.
error
(
"监测详情-路口事件详情-路口状态分布: "
,
e
);
return
jsonViewObject
.
fail
(
"路口状态分布查询失败"
);
return
jsonViewObject
.
fail
(
"路口状态分布查询失败"
);
}
}
return
jsonViewObject
.
success
(
result
);
}
map
.
put
(
"optTimeList"
,
crossService
.
getOptTimeList
(
crossID
));
return
jsonViewObject
.
success
(
map
);
}
}
@ApiOperation
(
value
=
"路口实时告警"
,
notes
=
"路口实时告警"
,
response
=
JsonViewObject
.
class
,
httpMethod
=
"GET"
)
@ApiOperation
(
value
=
"路口实时告警"
,
notes
=
"路口实时告警"
,
response
=
JsonViewObject
.
class
,
httpMethod
=
"GET"
)
...
...
signal-optimize-service/src/main/java/net/wanji/opt/controllerv2/TrendControllerV2.java
View file @
d0bc74ef
...
@@ -160,7 +160,8 @@ public class TrendControllerV2 {
...
@@ -160,7 +160,8 @@ public class TrendControllerV2 {
log
.
error
(
"态势监测-事件告警-实时列表:"
,
e
);
log
.
error
(
"态势监测-事件告警-实时列表:"
,
e
);
JsonViewObject
.
newInstance
().
success
(
list
);
JsonViewObject
.
newInstance
().
success
(
list
);
}
}
return
JsonViewObject
.
newInstance
().
success
(
list
);
List
<
OptMonitoringVO
>
collect
=
list
.
stream
().
filter
(
vo
->
!
StringUtils
.
equalsIgnoreCase
(
"700"
,
vo
.
getType
())).
collect
(
Collectors
.
toList
());
return
JsonViewObject
.
newInstance
().
success
(
collect
);
}
}
@ApiOperation
(
value
=
"态势监测-区域体检-雷达图绿波类型过滤"
,
notes
=
"态势监测-区域体检-雷达图绿波类型过滤"
,
@ApiOperation
(
value
=
"态势监测-区域体检-雷达图绿波类型过滤"
,
notes
=
"态势监测-区域体检-雷达图绿波类型过滤"
,
...
@@ -231,9 +232,27 @@ public class TrendControllerV2 {
...
@@ -231,9 +232,27 @@ public class TrendControllerV2 {
try
{
try
{
result
=
trendServiceV2
.
optStrategyResultInfo
(
id
);
result
=
trendServiceV2
.
optStrategyResultInfo
(
id
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
log
.
error
(
"态势监测-
事件告警-历史列表
:"
,
e
);
log
.
error
(
"态势监测-
策略推荐-优化策略
:"
,
e
);
JsonViewObject
.
newInstance
().
success
(
result
);
JsonViewObject
.
newInstance
().
success
(
result
);
}
}
return
JsonViewObject
.
newInstance
().
success
(
result
);
return
JsonViewObject
.
newInstance
().
success
(
result
);
}
}
@ApiOperation
(
value
=
"态势监测-策略推荐-绿波优化相位差"
,
notes
=
"态势监测-策略推荐-绿波优化相位差"
,
response
=
JsonViewObject
.
class
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@GetMapping
(
value
=
"/optStrategyCrossOffsetList"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
OptMonitoringVO
.
class
),
})
public
JsonViewObject
optStrategyCrossOffsetList
(
Integer
id
)
throws
Exception
{
GreenOptCrossOffsetVO
greenOptCrossOffsetVO
=
new
GreenOptCrossOffsetVO
();
try
{
greenOptCrossOffsetVO
=
trendServiceV2
.
optStrategyCrossOffsetList
(
id
);
}
catch
(
Exception
e
)
{
log
.
error
(
"态势监测-策略推荐-绿波优化相位差:"
,
e
);
JsonViewObject
.
newInstance
().
success
(
greenOptCrossOffsetVO
);
}
return
JsonViewObject
.
newInstance
().
success
(
greenOptCrossOffsetVO
);
}
}
}
\ No newline at end of file
signal-optimize-service/src/main/java/net/wanji/opt/controllerv2/TrunkLineController.java
View file @
d0bc74ef
...
@@ -44,8 +44,6 @@ public class TrunkLineController {
...
@@ -44,8 +44,6 @@ public class TrunkLineController {
responseHeaders
=
{
@ResponseHeader
(
name
=
"Content-Type"
,
description
=
"application/json"
)})
responseHeaders
=
{
@ResponseHeader
(
name
=
"Content-Type"
,
description
=
"application/json"
)})
})
})
public
JsonViewObject
statusDisInfoList
(
String
greenID
,
String
date
,
String
timeGranule
)
{
public
JsonViewObject
statusDisInfoList
(
String
greenID
,
String
date
,
String
timeGranule
)
{
try
{
try
{
JsonViewObject
object
=
JsonViewObject
.
newInstance
();
JsonViewObject
object
=
JsonViewObject
.
newInstance
();
JSONObject
list
=
trunkLineStatusDisService
.
trunkLineStatusDisInfoList
(
greenID
,
date
,
timeGranule
);
JSONObject
list
=
trunkLineStatusDisService
.
trunkLineStatusDisInfoList
(
greenID
,
date
,
timeGranule
);
...
@@ -97,4 +95,24 @@ public class TrunkLineController {
...
@@ -97,4 +95,24 @@ public class TrunkLineController {
return
JsonViewObject
.
newInstance
().
fail
(
"获取干线实时告警失败"
);
return
JsonViewObject
.
newInstance
().
fail
(
"获取干线实时告警失败"
);
}
}
}
}
@ApiOperation
(
value
=
"干线路口问题"
,
notes
=
"干线路口问题"
,
response
=
JsonViewObject
.
class
,
httpMethod
=
"GET"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"greenID"
,
value
=
"绿波ID"
,
required
=
true
,
dataType
=
"Integer"
,
paramType
=
"query"
),
@ApiImplicitParam
(
name
=
"time"
,
value
=
"时间 格式:yyyy-MM-dd HH:ii:ss"
,
dataType
=
"String"
,
paramType
=
"query"
),
})
@GetMapping
(
value
=
"/getTrunkLineCrossProblem"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
TrunkLineCrossProblemVO
.
class
),
})
public
JsonViewObject
getTrunkLineCrossProblem
(
Integer
greenID
,
@RequestParam
(
defaultValue
=
""
)
String
time
)
{
try
{
JsonViewObject
object
=
JsonViewObject
.
newInstance
();
List
<
TrunkLineCrossProblemVO
>
list
=
trunkLineService
.
getTrunkLineCrossProblem
(
greenID
,
time
);
return
object
.
success
(
list
);
}
catch
(
Exception
e
)
{
log
.
error
(
"获取干线路口问题失败: "
,
e
);
return
JsonViewObject
.
newInstance
().
fail
(
"获取干线路口问题失败"
);
}
}
}
}
signal-optimize-service/src/main/java/net/wanji/opt/controllerv2/judgeanalysis/AnalysisProblemAreaDayController.java
View file @
d0bc74ef
...
@@ -65,8 +65,9 @@ public class AnalysisProblemAreaDayController {
...
@@ -65,8 +65,9 @@ public class AnalysisProblemAreaDayController {
@ApiOperation
(
value
=
"区域-路口问题数量分析"
,
response
=
JsonViewObject
.
class
,
@ApiOperation
(
value
=
"区域-路口问题数量分析"
,
response
=
JsonViewObject
.
class
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@ApiImplicitParams
({
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"eventType"
,
value
=
"事件代码 701:路口空放 702:路口失衡,703:路口溢出
705:干线缓行 706:干线拥堵
707:路口拥堵"
,
required
=
true
,
dataType
=
"String"
,
defaultValue
=
""
),
@ApiImplicitParam
(
name
=
"eventType"
,
value
=
"事件代码 701:路口空放 702:路口失衡,703:路口溢出 707:路口拥堵"
,
required
=
true
,
dataType
=
"String"
,
defaultValue
=
""
),
@ApiImplicitParam
(
name
=
"areaId"
,
value
=
"区域ID"
,
required
=
true
,
dataType
=
"String"
,
defaultValue
=
"1"
),
@ApiImplicitParam
(
name
=
"areaId"
,
value
=
"区域ID"
,
required
=
true
,
dataType
=
"String"
,
defaultValue
=
"1"
),
@ApiImplicitParam
(
name
=
"timeType"
,
value
=
"事件类型 1:近一个月 2:近一周"
,
required
=
true
,
dataType
=
"int"
,
defaultValue
=
"1"
),
})
})
@GetMapping
(
value
=
"/cross-problem-number"
)
@GetMapping
(
value
=
"/cross-problem-number"
)
...
@@ -81,7 +82,7 @@ public class AnalysisProblemAreaDayController {
...
@@ -81,7 +82,7 @@ public class AnalysisProblemAreaDayController {
@ApiOperation
(
value
=
"区域-干线问题数量分析"
,
response
=
JsonViewObject
.
class
,
@ApiOperation
(
value
=
"区域-干线问题数量分析"
,
response
=
JsonViewObject
.
class
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@ApiImplicitParams
({
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"eventType"
,
value
=
"事件代码
701:路口空放 702:路口失衡,703:路口溢出 705:干线缓行 706:干线拥堵 707:路口拥堵
"
,
required
=
true
,
dataType
=
"String"
,
defaultValue
=
""
),
@ApiImplicitParam
(
name
=
"eventType"
,
value
=
"事件代码
705:干线缓行 706:干线拥堵
"
,
required
=
true
,
dataType
=
"String"
,
defaultValue
=
""
),
@ApiImplicitParam
(
name
=
"areaId"
,
value
=
"区域ID"
,
required
=
true
,
dataType
=
"String"
,
defaultValue
=
"1"
),
@ApiImplicitParam
(
name
=
"areaId"
,
value
=
"区域ID"
,
required
=
true
,
dataType
=
"String"
,
defaultValue
=
"1"
),
@ApiImplicitParam
(
name
=
"timeType"
,
value
=
"事件类型 1:近一个月 2:近一周"
,
required
=
true
,
dataType
=
"int"
,
defaultValue
=
"1"
),
@ApiImplicitParam
(
name
=
"timeType"
,
value
=
"事件类型 1:近一个月 2:近一周"
,
required
=
true
,
dataType
=
"int"
,
defaultValue
=
"1"
),
})
})
...
...
signal-optimize-service/src/main/java/net/wanji/opt/controllerv2/judgeanalysis/AnalysisProblemCrossDayController.java
View file @
d0bc74ef
...
@@ -9,6 +9,7 @@ import io.swagger.annotations.ApiResponses;
...
@@ -9,6 +9,7 @@ import io.swagger.annotations.ApiResponses;
import
net.wanji.common.framework.rest.JsonViewObject
;
import
net.wanji.common.framework.rest.JsonViewObject
;
import
net.wanji.opt.controllerv2.judgeanalysis.design.response.areaproblem.AreaProblemOverview
;
import
net.wanji.opt.controllerv2.judgeanalysis.design.response.areaproblem.AreaProblemOverview
;
import
net.wanji.opt.controllerv2.judgeanalysis.design.response.areaproblem.AreaProblemTrendAnalysisResult
;
import
net.wanji.opt.controllerv2.judgeanalysis.design.response.areaproblem.AreaProblemTrendAnalysisResult
;
import
net.wanji.opt.controllerv2.judgeanalysis.design.response.crossproblem.CrossDirProblemTrendAnalysisResult
;
import
net.wanji.opt.controllerv2.judgeanalysis.design.response.crossproblem.CrossProblemDirTrendAnalysisResult
;
import
net.wanji.opt.controllerv2.judgeanalysis.design.response.crossproblem.CrossProblemDirTrendAnalysisResult
;
import
net.wanji.opt.controllerv2.judgeanalysis.design.response.crossproblem.CrossProblemTimeDirReasonResult
;
import
net.wanji.opt.controllerv2.judgeanalysis.design.response.crossproblem.CrossProblemTimeDirReasonResult
;
import
net.wanji.opt.servicev2.judgeanalysis.AnalysisProblemCrossDayService
;
import
net.wanji.opt.servicev2.judgeanalysis.AnalysisProblemCrossDayService
;
...
@@ -93,7 +94,7 @@ public class AnalysisProblemCrossDayController {
...
@@ -93,7 +94,7 @@ public class AnalysisProblemCrossDayController {
})
})
@GetMapping
(
value
=
"/dir-trend"
)
@GetMapping
(
value
=
"/dir-trend"
)
@ApiResponses
({
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
Area
ProblemTrendAnalysisResult
.
class
),
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
CrossDir
ProblemTrendAnalysisResult
.
class
),
})
})
public
JsonViewObject
dirTrend
(
String
crossId
,
String
timeType
,
String
eventType
)
{
public
JsonViewObject
dirTrend
(
String
crossId
,
String
timeType
,
String
eventType
)
{
return
JsonViewObject
.
newInstance
().
success
(
null
);
return
JsonViewObject
.
newInstance
().
success
(
null
);
...
...
signal-optimize-service/src/main/java/net/wanji/opt/controllerv2/judgeanalysis/AnalysisProblemGreenDayController.java
View file @
d0bc74ef
package
net
.
wanji
.
opt
.
controllerv2
.
judgeanalysis
;
package
net
.
wanji
.
opt
.
controllerv2
.
judgeanalysis
;
import
net.wanji.opt.entity.judgeanalysis.AnalysisProblemGreenDay
;
import
net.wanji.opt.servicev2.judgeanalysis.AnalysisProblemGreenDayService
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiImplicitParams
;
import
io.swagger.annotations.ApiImplicitParams
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiResponse
;
import
io.swagger.annotations.ApiResponses
;
import
net.wanji.common.framework.rest.JsonViewObject
;
import
net.wanji.opt.controllerv2.judgeanalysis.design.response.areaproblem.AreaProblemOverview
;
import
net.wanji.opt.controllerv2.judgeanalysis.design.response.areaproblem.AreaProblemTrendAnalysisResult
;
import
net.wanji.opt.controllerv2.judgeanalysis.design.response.crossproblem.CrossProblemDirTrendAnalysisResult
;
import
net.wanji.opt.controllerv2.judgeanalysis.design.response.greenproblem.GreenCrossProblemTrendAnalysisResult
;
import
net.wanji.opt.controllerv2.judgeanalysis.design.response.greenproblem.GreenProblemTimeDirReasonResult
;
import
net.wanji.opt.servicev2.judgeanalysis.AnalysisProblemGreenDayService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.
*
;
import
org.springframework.web.bind.annotation.
GetMapping
;
import
net.wanji.opt.api.ResultGenerator
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.ws.rs.core.MediaType
;
import
javax.validation.Valid
;
import
java.util.List
;
/**
/**
* <p>
* <p>
...
@@ -35,44 +39,65 @@ public class AnalysisProblemGreenDayController {
...
@@ -35,44 +39,65 @@ public class AnalysisProblemGreenDayController {
@ApiOperation
(
value
=
"绿波问题分析详情"
,
response
=
AnalysisProblemGreenDay
.
class
)
@ApiOperation
(
value
=
"绿波干线-问题数量总览"
,
response
=
JsonViewObject
.
class
,
@GetMapping
(
value
=
"/info/{id}"
)
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
public
Object
info
(
@PathVariable
Long
id
)
{
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"greenId"
,
value
=
"绿波干线"
,
required
=
true
,
dataType
=
"String"
,
defaultValue
=
""
),
Object
data
=
analysisProblemGreenDayService
.
info
(
id
);
@ApiImplicitParam
(
name
=
"timeType"
,
value
=
"事件类型 1:近一个月 2:近一周"
,
required
=
true
,
dataType
=
"int"
,
defaultValue
=
"1"
),
return
ResultGenerator
.
genSuccessResult
(
data
);
})
@GetMapping
(
value
=
"/overview"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
AreaProblemOverview
.
class
),
})
public
JsonViewObject
problemOverview
(
String
greenId
,
Integer
timeType
)
{
return
JsonViewObject
.
newInstance
().
success
(
null
);
}
}
@ApiOperation
(
value
=
"绿波问题分析新增"
)
@PostMapping
(
value
=
"/add"
)
public
Object
add
(
@Valid
@RequestBody
AnalysisProblemGreenDay
param
)
{
analysisProblemGreenDayService
.
add
(
param
);
@ApiOperation
(
value
=
"绿波干线-报警走势"
,
response
=
JsonViewObject
.
class
,
return
ResultGenerator
.
genSuccessResult
();
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"greenId"
,
value
=
"绿波干线"
,
required
=
true
,
dataType
=
"String"
,
defaultValue
=
""
),
@ApiImplicitParam
(
name
=
"timeType"
,
value
=
"事件类型 1:近一个月 2:近一周"
,
required
=
true
,
dataType
=
"int"
,
defaultValue
=
"1"
),
})
@GetMapping
(
value
=
"/trend"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
AreaProblemTrendAnalysisResult
.
class
),
})
public
JsonViewObject
trend
(
String
greenId
,
Integer
timeType
)
{
return
JsonViewObject
.
newInstance
().
success
(
null
);
}
}
@ApiOperation
(
value
=
"绿波问题分析修改"
)
@PostMapping
(
value
=
"/modify"
)
public
Object
modify
(
@Valid
@RequestBody
AnalysisProblemGreenDay
param
)
{
analysisProblemGreenDayService
.
modify
(
param
);
return
ResultGenerator
.
genSuccessResult
();
}
@ApiOperation
(
value
=
"绿波问题分析删除(单个条目)"
)
@GetMapping
(
value
=
"/remove/{id}"
)
public
Object
remove
(
@PathVariable
Long
id
)
{
analysisProblemGreenDayService
.
remove
(
id
);
@ApiOperation
(
value
=
"绿波干线-问题发生时段、方向、原因分析"
,
response
=
JsonViewObject
.
class
,
return
ResultGenerator
.
genSuccessResult
();
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"greenId"
,
value
=
"绿波干线"
,
required
=
true
,
dataType
=
"String"
,
defaultValue
=
""
),
@ApiImplicitParam
(
name
=
"timeType"
,
value
=
"事件类型 1:近一个月 2:近一周"
,
required
=
true
,
dataType
=
"int"
,
defaultValue
=
"1"
),
})
@GetMapping
(
value
=
"/detail"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
GreenProblemTimeDirReasonResult
.
class
),
})
public
JsonViewObject
detail
(
String
greenId
,
String
timeType
)
{
return
JsonViewObject
.
newInstance
().
success
(
null
);
}
}
@ApiOperation
(
value
=
"绿波问题分析删除(多个条目)"
)
@PostMapping
(
value
=
"/removes"
)
public
Object
removes
(
@Valid
@RequestBody
List
<
Long
>
ids
)
{
analysisProblemGreenDayService
.
removes
(
ids
);
@ApiOperation
(
value
=
"绿波干线-干线路口问题情况分布"
,
return
ResultGenerator
.
genSuccessResult
();
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"greenId"
,
value
=
"绿波干线"
,
required
=
true
,
dataType
=
"String"
,
defaultValue
=
""
),
@ApiImplicitParam
(
name
=
"timeType"
,
value
=
"事件类型 1:近一个月 2:近一周"
,
required
=
true
,
dataType
=
"int"
,
defaultValue
=
"1"
),
@ApiImplicitParam
(
name
=
"eventType"
,
value
=
"事件代码 701:空放 702:路口失衡,703:路口溢出 707:路口拥堵"
,
required
=
true
,
dataType
=
"String"
,
defaultValue
=
""
)
})
@GetMapping
(
value
=
"/cross-trend"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
GreenCrossProblemTrendAnalysisResult
.
class
),
})
public
JsonViewObject
dirTrend
(
String
greenId
,
String
timeType
,
String
eventType
)
{
return
JsonViewObject
.
newInstance
().
success
(
null
);
}
}
}
}
\ No newline at end of file
signal-optimize-service/src/main/java/net/wanji/opt/controllerv2/judgeanalysis/BaseAreaInfoController.java
0 → 100644
View file @
d0bc74ef
package
net
.
wanji
.
opt
.
controllerv2
.
judgeanalysis
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiImplicitParams
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.common.framework.exception.DubboProviderException
;
import
net.wanji.common.framework.i18n.I18nResourceBundle
;
import
net.wanji.common.framework.rest.AbstractRestServer
;
import
net.wanji.common.framework.rest.JsonViewObject
;
import
net.wanji.common.framework.rest.Page
;
import
net.wanji.common.framework.rest.impl.AbstractRestServerImpl
;
import
net.wanji.databus.po.BaseAreaInfoPO
;
import
net.wanji.opt.entity.BaseAreaInfo
;
import
net.wanji.opt.servicev2.judgeanalysis.BaseAreaInfoService
;
import
net.wanji.opt.vo.GreenWaveRunStateVO
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
javax.ws.rs.core.MediaType
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
* <p>
* 区域基础信息 接口API
* </p>
* @version 1.0
* @author wangtao
* @Date 2025-03-18
*/
@RestController
@Slf4j
@RequestMapping
(
"/base-area-info"
)
@Api
(
value
=
"BaseAreaInfoController"
,
description
=
"区域基础信息接口"
,
tags
=
"区域基础信息"
)
public
class
BaseAreaInfoController
{
@Autowired
private
BaseAreaInfoService
baseAreaInfoService
;
@ApiOperation
(
httpMethod
=
"GET"
,
value
=
"区域基础信息-根据区划类型查询对应集合数据"
,
notes
=
""
)
@GetMapping
(
value
=
"/byCondition"
)
public
JsonViewObject
getListByType
(
@RequestParam
(
value
=
"type"
,
required
=
false
,
defaultValue
=
"2"
)
Integer
type
)
{
JsonViewObject
jsonViewObject
=
JsonViewObject
.
newInstance
();
try
{
List
<
BaseAreaInfoPO
>
list
=
baseAreaInfoService
.
selectByType
(
type
);
jsonViewObject
.
success
(
list
);
}
catch
(
Exception
e
)
{
jsonViewObject
.
fail
(
I18nResourceBundle
.
getConstants
(
"GET_FAILED_MSG"
));
log
.
error
(
"{} getAll error"
,
this
.
getClass
().
getSimpleName
(),
e
);
}
return
jsonViewObject
;
}
}
signal-optimize-service/src/main/java/net/wanji/opt/controllerv2/judgeanalysis/design/response/areaproblem/AreaCrossProblemAnalysisResult.java
View file @
d0bc74ef
...
@@ -43,7 +43,7 @@ class CrossProblemAnalysisResultResponse {
...
@@ -43,7 +43,7 @@ class CrossProblemAnalysisResultResponse {
@ApiModelProperty
(
value
=
"事件类型名称"
,
example
=
"路口拥堵"
)
@ApiModelProperty
(
value
=
"事件类型名称"
,
example
=
"路口拥堵"
)
private
String
eventLabel
;
private
String
eventLabel
;
@ApiModelProperty
(
value
=
"事件问题
梳理
"
,
example
=
"2"
,
dataType
=
"Integer"
)
@ApiModelProperty
(
value
=
"事件问题
数量
"
,
example
=
"2"
,
dataType
=
"Integer"
)
private
Integer
number
;
private
Integer
number
;
}
}
...
...
signal-optimize-service/src/main/java/net/wanji/opt/controllerv2/judgeanalysis/design/response/areaproblem/AreaGreenProblemAnalysisResult.java
View file @
d0bc74ef
...
@@ -35,9 +35,9 @@ class GreenProblemAnalysisResultResponse {
...
@@ -35,9 +35,9 @@ class GreenProblemAnalysisResultResponse {
private
Integer
greenId
;
private
Integer
greenId
;
@ApiModelProperty
(
value
=
"绿波干线名称"
,
example
=
"经十路(舜耕路-山大路)"
)
@ApiModelProperty
(
value
=
"绿波干线名称"
,
example
=
"经十路(舜耕路-山大路)"
)
private
String
cross
Name
;
private
String
green
Name
;
@ApiModelProperty
(
value
=
"事件代码 70
1:空放 702:路口失衡,703:路口溢出 707:路口
拥堵"
,
example
=
"'707'"
,
dataType
=
"String"
)
@ApiModelProperty
(
value
=
"事件代码 70
5:干线缓行 706:干线
拥堵"
,
example
=
"'707'"
,
dataType
=
"String"
)
private
String
eventType
;
private
String
eventType
;
@ApiModelProperty
(
value
=
"事件类型名称"
,
example
=
"路口拥堵"
)
@ApiModelProperty
(
value
=
"事件类型名称"
,
example
=
"路口拥堵"
)
...
...
signal-optimize-service/src/main/java/net/wanji/opt/controllerv2/judgeanalysis/design/response/areaproblem/AreaProblemOverview.java
View file @
d0bc74ef
...
@@ -31,7 +31,7 @@ public class AreaProblemOverview extends ParentResult {
...
@@ -31,7 +31,7 @@ public class AreaProblemOverview extends ParentResult {
@Data
@Data
class
EventAnalysisResultResponse
{
class
EventAnalysisResultResponse
{
@ApiModelProperty
(
value
=
"事件代码 701:空放 702:路口失衡,703:路口溢出 707:路口拥堵"
,
example
=
"'707'"
,
dataType
=
"string"
)
@ApiModelProperty
(
value
=
"事件代码 701:空放 702:路口失衡,703:路口溢出 70
5:干线缓行 706:干线拥堵 70
7:路口拥堵"
,
example
=
"'707'"
,
dataType
=
"string"
)
private
String
eventType
;
private
String
eventType
;
@ApiModelProperty
(
value
=
"事件类型名称"
,
example
=
"路口拥堵"
)
@ApiModelProperty
(
value
=
"事件类型名称"
,
example
=
"路口拥堵"
)
...
...
signal-optimize-service/src/main/java/net/wanji/opt/controllerv2/judgeanalysis/design/response/areaproblem/AreaProblemTrendAnalysisResult.java
View file @
d0bc74ef
...
@@ -43,17 +43,5 @@ class ProblemTrendAnalysisResultResponse {
...
@@ -43,17 +43,5 @@ class ProblemTrendAnalysisResultResponse {
}
}
@Data
class
ProblemTrendAnalysisResultTimeFlow
{
@ApiModelProperty
(
value
=
"事件代码 701:空放 702:路口失衡,703:路口溢出 707:路口拥堵"
,
example
=
"'707'"
,
dataType
=
"string"
)
private
String
eventType
;
@ApiModelProperty
(
value
=
"事件类型名称"
,
example
=
"路口拥堵"
)
private
String
eventLabel
;
@ApiModelProperty
(
value
=
"时段事件数量,时段对应到timeList"
,
example
=
"[300,400]"
,
dataType
=
"int[]"
)
private
List
<
Integer
>
list
;
}
signal-optimize-service/src/main/java/net/wanji/opt/controllerv2/judgeanalysis/design/response/areaproblem/ProblemTrendAnalysisResultTimeFlow.java
0 → 100644
View file @
d0bc74ef
package
net
.
wanji
.
opt
.
controllerv2
.
judgeanalysis
.
design
.
response
.
areaproblem
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.List
;
/**
* @author fengyi
* @date 2025/3/17
* @description
*/
@Data
public
class
ProblemTrendAnalysisResultTimeFlow
{
@ApiModelProperty
(
value
=
"事件代码 701:空放 702:路口失衡,703:路口溢出 705:干线缓行 706:干线拥堵 707:路口拥堵"
,
example
=
"'707'"
,
dataType
=
"string"
)
private
String
eventType
;
@ApiModelProperty
(
value
=
"事件类型名称"
,
example
=
"路口拥堵"
)
private
String
eventLabel
;
@ApiModelProperty
(
value
=
"时段事件数量,时段对应到timeList"
,
example
=
"[300,400]"
,
dataType
=
"int[]"
)
private
List
<
Integer
>
list
;
}
signal-optimize-service/src/main/java/net/wanji/opt/controllerv2/judgeanalysis/design/response/crossproblem/CrossDirProblemTrendAnalysisResult.java
0 → 100644
View file @
d0bc74ef
package
net
.
wanji
.
opt
.
controllerv2
.
judgeanalysis
.
design
.
response
.
crossproblem
;
import
com.alibaba.fastjson.JSON
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
net.wanji.opt.controllerv2.judgeanalysis.design.response.ParentResult
;
import
net.wanji.opt.controllerv2.judgeanalysis.design.response.areaproblem.AreaProblemTrendAnalysisResult
;
import
net.wanji.opt.controllerv2.judgeanalysis.design.response.areaproblem.ProblemTrendAnalysisResultTimeFlow
;
import
java.util.ArrayList
;
import
java.util.List
;
@Data
public
class
CrossDirProblemTrendAnalysisResult
extends
ParentResult
{
private
CrossDirProblemTrendAnalysisResultResponse
content
;
public
CrossDirProblemTrendAnalysisResultResponse
getContent
()
{
return
content
;
}
public
CrossDirProblemTrendAnalysisResult
setContent
(
CrossDirProblemTrendAnalysisResultResponse
content
)
{
this
.
content
=
content
;
return
this
;
}
@Override
public
String
toString
()
{
return
JSON
.
toJSONString
(
this
);
}
}
@Data
class
CrossDirProblemTrendAnalysisResultResponse
{
@ApiModelProperty
(
value
=
"时段列表"
,
example
=
"[\"20250311\",\"20250312\"]"
,
dataType
=
"String[]"
)
private
List
<
String
>
timeList
=
new
ArrayList
<>();
// @ApiModelProperty(value = "各路口时段流量列表",
// example = "[{\"name\":\"路口1\",\"list\":[150,300]}," +
// "{\"name\":\"路口2\",\"list\":[150,300]}]")
private
List
<
CrossDirProblemTrendAnalysisResultTimeFlow
>
dataList
=
new
ArrayList
<>();
}
@Data
class
CrossDirProblemTrendAnalysisResultTimeFlow
extends
ProblemTrendAnalysisResultTimeFlow
{
@ApiModelProperty
(
value
=
"方向编码"
,
example
=
""
)
private
Integer
dir
;
@ApiModelProperty
(
value
=
"方向名称"
,
example
=
""
)
private
String
dirName
;
}
signal-optimize-service/src/main/java/net/wanji/opt/controllerv2/judgeanalysis/design/response/greenproblem/GreenCrossProblemTrendAnalysisResult.java
0 → 100644
View file @
d0bc74ef
package
net
.
wanji
.
opt
.
controllerv2
.
judgeanalysis
.
design
.
response
.
greenproblem
;
import
com.alibaba.fastjson.JSON
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
net.wanji.opt.controllerv2.judgeanalysis.design.response.ParentResult
;
import
net.wanji.opt.controllerv2.judgeanalysis.design.response.areaproblem.ProblemTrendAnalysisResultTimeFlow
;
import
net.wanji.opt.controllerv2.judgeanalysis.design.response.crossproblem.CrossDirProblemTrendAnalysisResult
;
import
java.util.ArrayList
;
import
java.util.List
;
@Data
public
class
GreenCrossProblemTrendAnalysisResult
extends
ParentResult
{
private
GreenProblemTrendAnalysisResultResponse
content
;
public
GreenProblemTrendAnalysisResultResponse
getContent
()
{
return
content
;
}
public
GreenCrossProblemTrendAnalysisResult
setContent
(
GreenProblemTrendAnalysisResultResponse
content
)
{
this
.
content
=
content
;
return
this
;
}
@Override
public
String
toString
()
{
return
JSON
.
toJSONString
(
this
);
}
}
@Data
class
GreenProblemTrendAnalysisResultResponse
{
@ApiModelProperty
(
value
=
"时段列表"
,
example
=
"[\"20250311\",\"20250312\"]"
,
dataType
=
"String[]"
)
private
List
<
String
>
timeList
=
new
ArrayList
<>();
// @ApiModelProperty(value = "各路口时段流量列表",
// example = "[{\"name\":\"路口1\",\"list\":[150,300]}," +
// "{\"name\":\"路口2\",\"list\":[150,300]}]")
private
List
<
GreenProblemTrendAnalysisResultTimeFlow
>
dataList
=
new
ArrayList
<>();
}
@Data
class
GreenProblemTrendAnalysisResultTimeFlow
extends
ProblemTrendAnalysisResultTimeFlow
{
@ApiModelProperty
(
value
=
"路口ID"
,
example
=
""
,
dataType
=
"string"
)
private
String
crossId
;
@ApiModelProperty
(
value
=
"路口名称"
,
example
=
""
)
private
String
crossName
;
}
signal-optimize-service/src/main/java/net/wanji/opt/controllerv2/judgeanalysis/design/response/greenproblem/GreenProblemTimeDirReasonResult.java
0 → 100644
View file @
d0bc74ef
package
net
.
wanji
.
opt
.
controllerv2
.
judgeanalysis
.
design
.
response
.
greenproblem
;
import
com.alibaba.fastjson.JSON
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
net.wanji.opt.controllerv2.judgeanalysis.design.response.ParentResult
;
import
java.util.List
;
@Data
public
class
GreenProblemTimeDirReasonResult
extends
ParentResult
{
private
GreenProblemTimeDirReasonBody
content
;
public
GreenProblemTimeDirReasonBody
getContent
()
{
return
content
;
}
public
GreenProblemTimeDirReasonResult
setContent
(
GreenProblemTimeDirReasonBody
content
)
{
this
.
content
=
content
;
return
this
;
}
@Override
public
String
toString
()
{
return
JSON
.
toJSONString
(
this
);
}
}
@Data
class
GreenProblemTimeDirReasonBody
{
@ApiModelProperty
(
value
=
"事件类型码"
,
example
=
"'706'"
)
private
String
eventType
;
@ApiModelProperty
(
value
=
"事件类型名称"
,
example
=
"干线拥堵"
)
private
String
eventLabel
;
@ApiModelProperty
(
value
=
"问题主要发生时段"
,
example
=
"[\"07:00-08:00\",\"18:00-19:00\"]"
)
private
List
<
String
>
timeList
;
@ApiModelProperty
(
value
=
"主要【拥堵/缓行】路口"
,
example
=
"[\"路口1\",\"路口2\"]"
)
private
List
<
String
>
mainCongestCrossName
;
@ApiModelProperty
(
value
=
"主要【拥堵/缓行】路段"
,
example
=
"[\"路段1\",\"路段2\"]"
)
private
List
<
String
>
mainCongestRoadName
;
// TODO 需要有个计算任务,根据小时流量或其他指标计算事件发生的原因
@ApiModelProperty
(
value
=
"问题发生原因"
,
example
=
"[\"区位原因\",\"交通流原因\"]"
)
private
List
<
String
>
reasonList
;
}
signal-optimize-service/src/main/java/net/wanji/opt/dao/mapper/TrunkLineMapper.java
View file @
d0bc74ef
package
net
.
wanji
.
opt
.
dao
.
mapper
;
package
net
.
wanji
.
opt
.
dao
.
mapper
;
import
io.lettuce.core.dynamic.annotation.Param
;
import
io.lettuce.core.dynamic.annotation.Param
;
import
net.wanji.opt.synthesis.pojo.TrunkLineCrossProblemEntity
;
import
net.wanji.opt.synthesis.pojo.TrunkLineProblemDescribeEntity
;
import
net.wanji.opt.synthesis.pojo.TrunkLineProblemDescribeEntity
;
import
net.wanji.opt.vo2.CrossRealTimeAlarmVO
;
import
net.wanji.opt.vo2.CrossRealTimeAlarmVO
;
...
@@ -25,4 +26,16 @@ public interface TrunkLineMapper{
...
@@ -25,4 +26,16 @@ public interface TrunkLineMapper{
* @return
* @return
*/
*/
List
<
CrossRealTimeAlarmVO
>
getTrunkLineRealTimeAlarm
(
@Param
(
"greenID"
)
Integer
greenID
,
@Param
(
"time"
)
String
time
);
List
<
CrossRealTimeAlarmVO
>
getTrunkLineRealTimeAlarm
(
@Param
(
"greenID"
)
Integer
greenID
,
@Param
(
"time"
)
String
time
);
/**
* 获取干线路口事件描述
* @return
*/
List
<
TrunkLineCrossProblemEntity
>
getTrunkLineCrossProblem
(
@Param
(
"greenID"
)
Integer
greenID
,
@Param
(
"time"
)
String
time
);
/**
* 获取进出口方向
*/
TrunkLineCrossProblemEntity
getIODir
(
@Param
(
"greenID"
)
Integer
greenID
);
}
}
signal-optimize-service/src/main/java/net/wanji/opt/entity/judgeanalysis/BaseAreaInfo.java
0 → 100644
View file @
d0bc74ef
package
net
.
wanji
.
opt
.
entity
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
net.wanji.common.framework.domain.TrackableEntity
;
import
java.util.Date
;
import
java.math.BigDecimal
;
/**
* <p>
* 区域基础信息
* </p>
*
* @Author wangtao
* @Date 2025-03-18
*/
@Data
@ApiModel
(
value
=
"BaseAreaInfo对象"
,
description
=
"区域基础信息"
)
public
class
BaseAreaInfo
extends
TrackableEntity
{
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
value
=
"行政区划代码"
)
private
Long
code
;
@ApiModelProperty
(
value
=
"行政区划名称"
)
private
String
name
;
@ApiModelProperty
(
value
=
"道路名称"
)
private
String
roadName
;
@ApiModelProperty
(
value
=
"区划类型:1行政区划;2交警辖区;3商圈;4交通小区;5热点区域;6道路"
)
private
Integer
type
;
@ApiModelProperty
(
value
=
"父节点"
)
private
Integer
parentCode
;
@ApiModelProperty
(
value
=
"区域中心点"
)
private
String
location
;
@ApiModelProperty
(
value
=
"区域边界"
)
private
String
polylines
;
@ApiModelProperty
(
value
=
"备注"
)
private
String
remark
;
@ApiModelProperty
(
value
=
"创建时间"
)
private
Date
gmtCreate
;
@ApiModelProperty
(
value
=
"修改时间"
)
private
Date
gmtModified
;
}
signal-optimize-service/src/main/java/net/wanji/opt/servicev2/CrossService.java
View file @
d0bc74ef
package
net
.
wanji
.
opt
.
servicev2
;
package
net
.
wanji
.
opt
.
servicev2
;
import
net.wanji.opt.synthesis.pojo.CrossRealTimeAlarmEntity
;
import
net.wanji.opt.synthesis.pojo.CrossRealTimeAlarmEntity
;
import
net.wanji.opt.synthesis.pojo.CrossStatusDisOptTimeEntity
;
import
net.wanji.opt.vo2.CrossStatusDistributionVO
;
import
net.wanji.opt.vo2.CrossStatusDistributionVO
;
import
java.util.List
;
import
java.util.List
;
...
@@ -23,14 +24,20 @@ public interface CrossService {
...
@@ -23,14 +24,20 @@ public interface CrossService {
* @param directionName 方向
* @param directionName 方向
* @return 包含状态分布信息列表与优化时间列表
* @return 包含状态分布信息列表与优化时间列表
*/
*/
Map
<
String
,
List
<?>
>
getCrossStatusDistribution
(
String
crossID
,
String
date
,
String
groupType
,
Integer
objectType
,
String
directionName
);
List
<
CrossStatusDistributionVO
>
getCrossStatusDistribution
(
String
crossID
,
String
date
,
String
groupType
,
Integer
objectType
,
String
directionName
);
/**
/**
* 获取路口实时告警
* 获取路口实时告警
* @param crossID
* @param crossID
路口ID
* @param time 可选参数
* @param time 可选参数
* @return
* @return
*/
*/
List
<
CrossRealTimeAlarmEntity
>
getCrossRealTimeAlarm
(
String
crossID
,
String
time
);
List
<
CrossRealTimeAlarmEntity
>
getCrossRealTimeAlarm
(
String
crossID
,
String
time
);
/**
* 获取路口优化时间
* @param crossID 路口ID
* @return
*/
List
<
CrossStatusDisOptTimeEntity
>
getOptTimeList
(
String
crossID
);
}
}
signal-optimize-service/src/main/java/net/wanji/opt/servicev2/TrendServiceV2.java
View file @
d0bc74ef
...
@@ -31,4 +31,6 @@ public interface TrendServiceV2 {
...
@@ -31,4 +31,6 @@ public interface TrendServiceV2 {
String
optStrategyResultInfo
(
String
id
)
throws
Exception
;
String
optStrategyResultInfo
(
String
id
)
throws
Exception
;
GreenOptCrossOffsetVO
optStrategyCrossOffsetList
(
Integer
id
)
throws
Exception
;
}
}
\ No newline at end of file
signal-optimize-service/src/main/java/net/wanji/opt/servicev2/TrunkLineService.java
View file @
d0bc74ef
...
@@ -2,7 +2,7 @@ package net.wanji.opt.servicev2;
...
@@ -2,7 +2,7 @@ package net.wanji.opt.servicev2;
import
net.wanji.opt.synthesis.pojo.TrunkLineProblemDescribeEntity
;
import
net.wanji.opt.synthesis.pojo.TrunkLineProblemDescribeEntity
;
import
net.wanji.opt.vo2.CrossRealTimeAlarmVO
;
import
net.wanji.opt.vo2.CrossRealTimeAlarmVO
;
import
net.wanji.opt.vo2.TrunkLine
ProblemDescribe
VO
;
import
net.wanji.opt.vo2.TrunkLine
CrossProblem
VO
;
import
java.util.List
;
import
java.util.List
;
...
@@ -22,4 +22,9 @@ public interface TrunkLineService {
...
@@ -22,4 +22,9 @@ public interface TrunkLineService {
* 获取干线实时告警
* 获取干线实时告警
*/
*/
List
<
CrossRealTimeAlarmVO
>
getTrunkLineRealTimeAlarm
(
Integer
greenID
,
String
time
);
List
<
CrossRealTimeAlarmVO
>
getTrunkLineRealTimeAlarm
(
Integer
greenID
,
String
time
);
/**
* 干线路口事件描述列表
*/
List
<
TrunkLineCrossProblemVO
>
getTrunkLineCrossProblem
(
Integer
greenID
,
String
time
);
}
}
signal-optimize-service/src/main/java/net/wanji/opt/servicev2/implv2/CrossServiceImpl.java
View file @
d0bc74ef
package
net
.
wanji
.
opt
.
servicev2
.
implv2
;
package
net
.
wanji
.
opt
.
servicev2
.
implv2
;
import
com.google.gson.JsonElement
;
import
com.google.gson.JsonObject
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.common.enums.BaseEnum
;
import
net.wanji.common.enums.BaseEnum
;
import
net.wanji.common.utils.tool.StringUtils
;
import
net.wanji.common.utils.tool.StringUtils
;
...
@@ -11,18 +9,19 @@ import net.wanji.opt.po.base.CrossLaneDataHistPoExtend;
...
@@ -11,18 +9,19 @@ import net.wanji.opt.po.base.CrossLaneDataHistPoExtend;
import
net.wanji.opt.servicev2.CrossService
;
import
net.wanji.opt.servicev2.CrossService
;
import
net.wanji.opt.synthesis.pojo.CrossRealTimeAlarmEntity
;
import
net.wanji.opt.synthesis.pojo.CrossRealTimeAlarmEntity
;
import
net.wanji.opt.synthesis.pojo.CrossStatusDisOptTimeEntity
;
import
net.wanji.opt.synthesis.pojo.CrossStatusDisOptTimeEntity
;
import
net.wanji.opt.synthesis.pojo.StrategyCrossResultEntity
;
import
net.wanji.opt.vo2.CrossStatusDistributionVO
;
import
net.wanji.opt.vo2.CrossStatusDistributionVO
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
java.util.*
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
/**
* <p>
* <p>
* 监测详情-路口事件详情
* 监测详情-路口事件详情
*
* @author zhengyifan
* @author zhengyifan
* @date 2025/3/15
* @date 2025/3/15
*/
*/
...
@@ -36,18 +35,19 @@ public class CrossServiceImpl implements CrossService {
...
@@ -36,18 +35,19 @@ public class CrossServiceImpl implements CrossService {
/**
/**
* 路口状态分布
* 路口状态分布
*
* @param crossID 路口ID
* @param crossID 路口ID
* @param date 日期
* @param date 日期
* @param groupType 时间粒度 参数要求:0--5分钟 1--15分钟 2--30分钟 3--60分钟
* @param groupType 时间粒度 参数要求:0--5分钟 1--15分钟 2--30分钟 3--60分钟
* @param objectType 范围 参数要求:1--方向级 2--转向级 3--车道级 4--路口级
* @param objectType 范围 参数要求:1--方向级 2--转向级 3--车道级 4--路口级
* @param directionName 方向
* @param directionName 方向
东南西北
* @return
* @return
*/
*/
@Override
@Override
public
Map
<
String
,
List
<?>
>
getCrossStatusDistribution
(
String
crossID
,
String
date
,
String
groupType
,
Integer
objectType
,
String
directionName
)
{
public
List
<
CrossStatusDistributionVO
>
getCrossStatusDistribution
(
String
crossID
,
String
date
,
String
groupType
,
Integer
objectType
,
String
directionName
)
{
Map
<
String
,
Object
>
params
=
new
HashMap
<>();
Map
<
String
,
Object
>
params
=
new
HashMap
<>();
params
.
put
(
"crossId"
,
crossID
);
params
.
put
(
"crossId"
,
crossID
);
params
.
put
(
"startDate"
,
date
+
" 00:00:00"
);
params
.
put
(
"startDate"
,
date
+
" 00:00:00"
);
params
.
put
(
"endDate"
,
date
+
" 23:59:59"
);
params
.
put
(
"endDate"
,
date
+
" 23:59:59"
);
params
.
put
(
"groupType"
,
groupType
);
params
.
put
(
"groupType"
,
groupType
);
params
.
put
(
"objectType"
,
objectType
);
params
.
put
(
"objectType"
,
objectType
);
...
@@ -56,30 +56,33 @@ public class CrossServiceImpl implements CrossService {
...
@@ -56,30 +56,33 @@ public class CrossServiceImpl implements CrossService {
}
}
List
<
CrossLaneDataHistPoExtend
>
firstList
=
greenwaveHistoryMapper
.
findCrossObjectIndex
(
params
);
List
<
CrossLaneDataHistPoExtend
>
firstList
=
greenwaveHistoryMapper
.
findCrossObjectIndex
(
params
);
List
<
CrossStatusDisOptTimeEntity
>
optTimeList
=
crossMapper
.
getOptTimes
(
crossID
);
List
<
CrossStatusDistributionVO
>
results
=
new
ArrayList
<>();
List
<
CrossStatusDistributionVO
>
infoList
=
new
ArrayList
<>();
for
(
CrossLaneDataHistPoExtend
c
:
firstList
)
{
for
(
CrossLaneDataHistPoExtend
c:
firstList
)
{
CrossStatusDistributionVO
info
=
new
CrossStatusDistributionVO
();
CrossStatusDistributionVO
cd
=
new
CrossStatusDistributionVO
();
info
.
setSpeed
(
c
.
getSpeed
());
info
.
setQueueLength
(
c
.
getAvgQueueLength
());
info
.
setDelayTime
(
c
.
getDelayTime
());
info
.
setStopTimes
(
c
.
getStopTimes
());
info
.
setStartTime
(
c
.
getStartTime
().
toString
().
substring
(
11
,
16
));
cd
.
setSpeed
(
c
.
getSpeed
());
infoList
.
add
(
info
);
cd
.
setStartTime
(
c
.
getStartTime
().
toString
().
substring
(
11
,
16
));
}
cd
.
setDelayTime
(
c
.
getDelayTime
());
cd
.
setTurnType
(
c
.
getTurnType
());
cd
.
setTurnTypeName
(
BaseEnum
.
TurnTypeEnum
.
getNameByCode
(
c
.
getTurnType
()));
cd
.
setDirType
(
c
.
getDirType
());
cd
.
setDirTypeName
(
BaseEnum
.
SignalDirectionEnum
.
getNameByCode
(
c
.
getDirType
()));
cd
.
setStopTimes
(
c
.
getStopTimes
());
cd
.
setQueueLength
(
c
.
getAvgQueueLength
());
cd
.
setLaneNo
(
c
.
getLaneNo
());
results
.
add
(
cd
);
Map
<
String
,
List
<?>>
result
=
new
HashMap
<>();
}
result
.
put
(
"infoList"
,
infoList
);
result
.
put
(
"optTimeList"
,
optTimeList
);
return
result
;
return
result
s
;
}
}
/**
/**
* 路口实时告警
* 路口实时告警
* @param crossID
*
* @param crossID 路口ID
* @param time 可选参数
* @param time 可选参数
* @return
* @return
*/
*/
...
@@ -87,4 +90,9 @@ public class CrossServiceImpl implements CrossService {
...
@@ -87,4 +90,9 @@ public class CrossServiceImpl implements CrossService {
public
List
<
CrossRealTimeAlarmEntity
>
getCrossRealTimeAlarm
(
String
crossID
,
String
time
)
{
public
List
<
CrossRealTimeAlarmEntity
>
getCrossRealTimeAlarm
(
String
crossID
,
String
time
)
{
return
crossMapper
.
getCrossRealTimeAlarms
(
crossID
,
time
);
return
crossMapper
.
getCrossRealTimeAlarms
(
crossID
,
time
);
}
}
@Override
public
List
<
CrossStatusDisOptTimeEntity
>
getOptTimeList
(
String
crossID
)
{
return
crossMapper
.
getOptTimes
(
crossID
);
}
}
}
signal-optimize-service/src/main/java/net/wanji/opt/servicev2/implv2/TrendServiceV2Impl.java
View file @
d0bc74ef
package
net
.
wanji
.
opt
.
servicev2
.
implv2
;
package
net
.
wanji
.
opt
.
servicev2
.
implv2
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.fasterxml.jackson.core.JsonProcessingException
;
import
com.fasterxml.jackson.core.type.TypeReference
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.github.pagehelper.PageHelper
;
import
com.github.pagehelper.PageHelper
;
import
com.github.pagehelper.PageInfo
;
import
com.github.pagehelper.PageInfo
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.common.utils.tool.DateUtil
;
import
net.wanji.common.utils.tool.DateUtil
;
import
net.wanji.common.utils.tool.JacksonUtils
;
import
net.wanji.databus.dao.entity.BaseCrossSchemePO
;
import
net.wanji.databus.dao.entity.GreenwaveCrossPO
;
import
net.wanji.databus.dao.entity.GreenwaveHistPO
;
import
net.wanji.databus.dao.entity.GreenwaveHistPO
;
import
net.wanji.databus.dao.mapper.BaseCrossSchemeMapper
;
import
net.wanji.databus.dao.mapper.CrossDataHistMapper
;
import
net.wanji.databus.dao.mapper.CrossDataHistMapper
;
import
net.wanji.databus.dao.mapper.GreenwaveCrossMapper
;
import
net.wanji.databus.dao.mapper.GreenwaveHistMapper
;
import
net.wanji.databus.dao.mapper.GreenwaveHistMapper
;
import
net.wanji.databus.po.CrossDataHistPO
;
import
net.wanji.databus.po.CrossDataHistPO
;
import
net.wanji.databus.po.CrossSchemeRings
;
import
net.wanji.databus.vo.LightsStatusVO2
;
import
net.wanji.opt.common.RedisUtils
;
import
net.wanji.opt.common.enums.EventInfoTypeEnum
;
import
net.wanji.opt.common.enums.EventInfoTypeEnum
;
import
net.wanji.opt.common.enums.GreenBeltDirEnum
;
import
net.wanji.opt.common.enums.GreenBeltDirEnum
;
import
net.wanji.opt.dao.mapper.GreenWaveRealTimeMapperV2Mapper
;
import
net.wanji.opt.dao.mapper.GreenWaveRealTimeMapperV2Mapper
;
...
@@ -22,7 +33,6 @@ import net.wanji.opt.vo2.dto.CrossLastOptResultDTO;
...
@@ -22,7 +33,6 @@ import net.wanji.opt.vo2.dto.CrossLastOptResultDTO;
import
net.wanji.opt.vo2.dto.GreenLastOptResultDTO
;
import
net.wanji.opt.vo2.dto.GreenLastOptResultDTO
;
import
net.wanji.opt.vo2.dto.GreenOptDTO
;
import
net.wanji.opt.vo2.dto.GreenOptDTO
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.util.StringUtils
;
import
org.springframework.util.StringUtils
;
...
@@ -52,12 +62,18 @@ public class TrendServiceV2Impl implements TrendServiceV2 {
...
@@ -52,12 +62,18 @@ public class TrendServiceV2Impl implements TrendServiceV2 {
private
GreenwaveHistMapper
greenwaveHistMapper
;
private
GreenwaveHistMapper
greenwaveHistMapper
;
@Resource
@Resource
private
StrategyGreenOptHistMapper
greenOptHistMapper
;
private
StrategyGreenOptHistMapper
greenOptHistMapper
;
@Resource
private
GreenwaveCrossMapper
greenwaveCrossMapper
;
@Resource
private
StrategyGreenOptHistMapper
strategyGreenOptHistMapper
;
@Resource
private
RedisUtils
redisUtil
;
@Resource
private
BaseCrossSchemeMapper
baseCrossSchemeMapper
;
private
static
List
<
OptMonitoringVO
>
greenListCache
=
new
ArrayList
<>(
10
);
private
static
List
<
OptMonitoringVO
>
greenListCache
=
new
ArrayList
<>(
10
);
private
static
List
<
OptMonitoringVO
>
crossListCache
=
new
ArrayList
<>(
80
);
private
static
List
<
OptMonitoringVO
>
crossListCache
=
new
ArrayList
<>(
80
);
@Autowired
private
StrategyGreenOptHistMapper
strategyGreenOptHistMapper
;
@Override
@Override
public
List
<
CrossGreenStatusTimeRateVO
>
crossGreenStatusTimeRate
()
{
public
List
<
CrossGreenStatusTimeRateVO
>
crossGreenStatusTimeRate
()
{
...
@@ -380,4 +396,69 @@ public class TrendServiceV2Impl implements TrendServiceV2 {
...
@@ -380,4 +396,69 @@ public class TrendServiceV2Impl implements TrendServiceV2 {
}
}
return
sb
.
toString
();
return
sb
.
toString
();
}
}
@Override
public
GreenOptCrossOffsetVO
optStrategyCrossOffsetList
(
Integer
id
)
throws
Exception
{
GreenOptCrossOffsetVO
greenOptCrossOffsetVO
=
new
GreenOptCrossOffsetVO
();
try
{
List
<
GreenOptCrossOffsetVO
.
CrossOffsetDetail
>
oriOffsetDetails
=
new
ArrayList
<>();
List
<
GreenOptCrossOffsetVO
.
CrossOffsetDetail
>
curOffsetDetails
=
new
ArrayList
<>();
List
<
GreenwaveCrossPO
>
greenwaveCrossPOS
=
greenwaveCrossMapper
.
selectByGreenwaveId
(
id
);
for
(
GreenwaveCrossPO
greenwaveCrossPO
:
greenwaveCrossPOS
)
{
String
crossId
=
greenwaveCrossPO
.
getCrossId
();
GreenOptCrossOffsetVO
.
CrossOffsetDetail
oriOffsetDetail
=
getOriOffsetDetail
(
crossId
);
oriOffsetDetails
.
add
(
oriOffsetDetail
);
GreenOptCrossOffsetVO
.
CrossOffsetDetail
curOffsetDetail
=
getCurOffsetDetail
(
crossId
,
oriOffsetDetail
);
curOffsetDetails
.
add
(
curOffsetDetail
);
}
greenOptCrossOffsetVO
.
setOriCrossOffsets
(
oriOffsetDetails
);
greenOptCrossOffsetVO
.
setCurCrossOffsets
(
curOffsetDetails
);
}
catch
(
Exception
e
)
{
log
.
error
(
"态势监测-策略推荐-绿波优化相位差查询失败:{}"
,
e
);
throw
new
RuntimeException
(
e
);
}
return
greenOptCrossOffsetVO
;
}
private
GreenOptCrossOffsetVO
.
CrossOffsetDetail
getCurOffsetDetail
(
String
crossId
,
GreenOptCrossOffsetVO
.
CrossOffsetDetail
oriDetail
)
throws
Exception
{
ObjectMapper
mapper
=
JacksonUtils
.
getInstance
();
GreenOptCrossOffsetVO
.
CrossOffsetDetail
curDetail
=
new
GreenOptCrossOffsetVO
.
CrossOffsetDetail
();
Object
offsetStr
=
redisUtil
.
getHash
(
"utc_scheme_offset"
,
crossId
);
if
(
Objects
.
isNull
(
offsetStr
))
{
return
oriDetail
;
}
else
{
CrossSchemeRings
crossSchemeRings
=
mapper
.
readValue
(
String
.
valueOf
(
offsetStr
),
CrossSchemeRings
.
class
);
if
(
Objects
.
nonNull
(
crossSchemeRings
))
{
Integer
offset
=
StringUtils
.
isEmpty
(
crossSchemeRings
.
getOffset
())
?
0
:
Integer
.
valueOf
(
crossSchemeRings
.
getOffset
());
curDetail
.
setOffset
(
offset
);
curDetail
.
setCrossId
(
crossId
);
curDetail
.
setSchemeNo
(
Integer
.
valueOf
(
crossSchemeRings
.
getPattern
()));
}
}
return
curDetail
;
}
private
GreenOptCrossOffsetVO
.
CrossOffsetDetail
getOriOffsetDetail
(
String
crossId
)
throws
Exception
{
ObjectMapper
mapper
=
JacksonUtils
.
getInstance
();
GreenOptCrossOffsetVO
.
CrossOffsetDetail
crossOffsetDetail
=
new
GreenOptCrossOffsetVO
.
CrossOffsetDetail
();
Object
lightStr
=
redisUtil
.
getHash
(
"utc_light_status"
,
crossId
);
if
(!
StringUtils
.
isEmpty
(
lightStr
))
{
List
<
LightsStatusVO2
>
lightsStatusVO2s
=
mapper
.
readValue
(
String
.
valueOf
(
lightStr
),
new
TypeReference
<
List
<
LightsStatusVO2
>>()
{});
String
schemeId
=
lightsStatusVO2s
.
get
(
0
).
getSchemeId
();
Integer
schemeNo
=
Integer
.
valueOf
(
schemeId
);
BaseCrossSchemePO
baseCrossSchemePO
=
baseCrossSchemeMapper
.
selectByCrossIdAndSchemeNo
(
crossId
,
schemeNo
);
crossOffsetDetail
.
setOffset
(
0
);
if
(
Objects
.
nonNull
(
baseCrossSchemePO
))
{
Integer
offset
=
baseCrossSchemePO
.
getOffset
();
crossOffsetDetail
.
setCrossId
(
crossId
);
crossOffsetDetail
.
setSchemeNo
(
schemeNo
);
crossOffsetDetail
.
setOffset
(
offset
);
}
}
return
crossOffsetDetail
;
}
}
}
\ No newline at end of file
signal-optimize-service/src/main/java/net/wanji/opt/servicev2/implv2/TrunkLineImpl.java
View file @
d0bc74ef
...
@@ -3,10 +3,10 @@ package net.wanji.opt.servicev2.implv2;
...
@@ -3,10 +3,10 @@ package net.wanji.opt.servicev2.implv2;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.opt.dao.mapper.TrunkLineMapper
;
import
net.wanji.opt.dao.mapper.TrunkLineMapper
;
import
net.wanji.opt.servicev2.TrunkLineService
;
import
net.wanji.opt.servicev2.TrunkLineService
;
import
net.wanji.opt.synthesis.pojo.TrunkLineCrossProblemEntity
;
import
net.wanji.opt.synthesis.pojo.TrunkLineProblemDescribeEntity
;
import
net.wanji.opt.synthesis.pojo.TrunkLineProblemDescribeEntity
;
import
net.wanji.opt.vo2.CrossRealTimeAlarmVO
;
import
net.wanji.opt.vo2.CrossRealTimeAlarmVO
;
import
net.wanji.opt.vo2.TrunkLineProblemDescribeVO
;
import
net.wanji.opt.vo2.TrunkLineCrossProblemVO
;
import
org.jetbrains.annotations.NotNull
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
...
@@ -20,8 +20,7 @@ public class TrunkLineImpl implements TrunkLineService {
...
@@ -20,8 +20,7 @@ public class TrunkLineImpl implements TrunkLineService {
@Override
@Override
public
List
<
TrunkLineProblemDescribeEntity
>
getTrunkLineProblemDescribe
(
String
greenID
,
String
time
)
{
public
List
<
TrunkLineProblemDescribeEntity
>
getTrunkLineProblemDescribe
(
String
greenID
,
String
time
)
{
List
<
TrunkLineProblemDescribeEntity
>
list
=
trunkLineMapper
.
getTrunkLineProblemDescribe
(
greenID
,
time
);
return
trunkLineMapper
.
getTrunkLineProblemDescribe
(
greenID
,
time
);
return
list
;
}
}
@Override
@Override
...
@@ -29,20 +28,108 @@ public class TrunkLineImpl implements TrunkLineService {
...
@@ -29,20 +28,108 @@ public class TrunkLineImpl implements TrunkLineService {
return
trunkLineMapper
.
getTrunkLineRealTimeAlarm
(
greenID
,
time
);
return
trunkLineMapper
.
getTrunkLineRealTimeAlarm
(
greenID
,
time
);
}
}
@NotNull
@Override
private
static
TrunkLineProblemDescribeVO
getTrunkLineProblemDescribeVO
(
List
<
TrunkLineProblemDescribeEntity
>
list
,
int
i
)
{
public
List
<
TrunkLineCrossProblemVO
>
getTrunkLineCrossProblem
(
Integer
greenID
,
String
time
)
{
TrunkLineProblemDescribeVO
vo
=
new
TrunkLineProblemDescribeVO
();
List
<
TrunkLineCrossProblemEntity
>
list
=
trunkLineMapper
.
getTrunkLineCrossProblem
(
greenID
,
time
);
TrunkLineProblemDescribeEntity
e
=
list
.
get
(
i
);
TrunkLineCrossProblemEntity
ioDir
=
trunkLineMapper
.
getIODir
(
greenID
);
TrunkLineProblemDescribeEntity
e2
=
list
.
get
(
i
+
1
);
List
<
TrunkLineCrossProblemVO
>
voList
=
new
ArrayList
<>();
Map
<
String
,
String
>
IOdirMap
=
getDir
(
ioDir
.
getInDir
(),
ioDir
.
getOutDir
());
vo
.
setGreenID
(
e
.
getGreenID
());
vo
.
setTime
(
e
.
getTime
());
for
(
TrunkLineCrossProblemEntity
e
:
list
)
{
vo
.
setStatus
(
e
.
getStatus
());
TrunkLineCrossProblemVO
vo
=
new
TrunkLineCrossProblemVO
();
vo
.
setDir
(
e
.
getDir
());
vo
.
setStatusCN
(
e
.
getStatusCN
());
vo
.
setCrossID
(
e
.
getCrossID
());
vo
.
setDir2
(
e2
.
getDir
());
vo
.
setName
(
e
.
getName
());
vo
.
setStatus2
(
e
.
getStatus
());
vo
.
setStatusCN2
(
e
.
getStatusCN
());
if
(
e
.
getDirection
()
!=
null
)
{
return
vo
;
Map
<
String
,
Integer
>
directionMap
=
new
HashMap
<>();
for
(
String
s
:
e
.
getDirection
())
{
directionMap
.
put
(
s
,
directionMap
.
getOrDefault
(
s
,
0
)
+
1
);
}
Integer
count
=
directionMap
.
getOrDefault
(
IOdirMap
.
get
(
"dir"
),
0
);
if
(
count
==
0
)
{
// 不匹配
vo
.
setStatus_1
(
0
);
vo
.
setStatus_2
(
0
);
vo
.
setStatus_1_name
(
"正常"
);
vo
.
setStatus_2_name
(
"正常"
);
vo
.
setDir_1_name
(
IOdirMap
.
get
(
"dirName"
));
vo
.
setDir_2_name
(
IOdirMap
.
get
(
"dirNameReverse"
));
}
else
if
(
count
==
1
)
{
// 匹配一项
vo
.
setStatus_1
(
e
.
getStatus
());
vo
.
setStatus_2
(
0
);
vo
.
setStatus_2_name
(
getStatusName
(
e
.
getStatus
()));
vo
.
setStatus_1_name
(
"正常"
);
vo
.
setDir_1_name
(
IOdirMap
.
get
(
"dirName"
));
vo
.
setDir_2_name
(
IOdirMap
.
get
(
"dirNameReverse"
));
}
else
if
(
count
==
2
)
{
// 匹配两项
vo
.
setStatus_1
(
e
.
getStatus
());
vo
.
setStatus_2
(
e
.
getStatus
());
vo
.
setStatus_1_name
(
getStatusName
(
e
.
getStatus
()));
vo
.
setStatus_2_name
(
getStatusName
(
e
.
getStatus
()));
vo
.
setDir_1_name
(
IOdirMap
.
get
(
"dirName"
));
vo
.
setDir_2_name
(
IOdirMap
.
get
(
"dirNameReverse"
));
}
voList
.
add
(
vo
);
}
else
{
vo
.
setStatus_1
(
0
);
vo
.
setStatus_2
(
0
);
vo
.
setStatus_1_name
(
"正常"
);
vo
.
setStatus_2_name
(
"正常"
);
vo
.
setDir_1_name
(
IOdirMap
.
get
(
"dirName"
));
vo
.
setDir_2_name
(
IOdirMap
.
get
(
"dirNameReverse"
));
voList
.
add
(
vo
);
}
}
return
voList
;
}
private
Map
<
String
,
String
>
getDir
(
Integer
inDir
,
Integer
outDir
)
{
// 1 北 3 东 5 南 7 西
// 0 北向南 2东向西 4 西向东 6 南向北
Map
<
String
,
String
>
result
=
new
HashMap
<>();
if
(
inDir
==
5
&&
outDir
==
1
)
{
// 南向北
result
.
put
(
"dir"
,
"6"
);
result
.
put
(
"dirName"
,
"南向北"
);
result
.
put
(
"dirNameReverse"
,
"北向南"
);
return
result
;
}
else
if
(
inDir
==
7
&&
outDir
==
3
)
{
// 西向东
result
.
put
(
"dir"
,
"4"
);
result
.
put
(
"dirName"
,
"西向东"
);
result
.
put
(
"dirNameReverse"
,
"东向西"
);
return
result
;
}
else
if
(
inDir
==
3
&&
outDir
==
7
)
{
// 东向西
result
.
put
(
"dir"
,
"2"
);
result
.
put
(
"dirName"
,
"东向西"
);
result
.
put
(
"dirNameReverse"
,
"西向东"
);
return
result
;
}
else
if
(
inDir
==
1
&&
outDir
==
5
)
{
// 北向南
result
.
put
(
"dir"
,
"0"
);
result
.
put
(
"dirName"
,
"北向南"
);
result
.
put
(
"dirNameReverse"
,
"南向北"
);
return
result
;
}
return
Collections
.
emptyMap
();
}
private
String
getStatusName
(
Integer
status
)
{
switch
(
status
)
{
case
-
1
:
case
0
:
return
"正常"
;
case
1
:
return
"失衡"
;
case
3
:
return
"拥堵"
;
case
4
:
return
"死锁"
;
case
5
:
return
"相位空放"
;
}
return
""
;
}
}
}
}
signal-optimize-service/src/main/java/net/wanji/opt/servicev2/judgeanalysis/BaseAreaInfoService.java
0 → 100644
View file @
d0bc74ef
package
net
.
wanji
.
opt
.
servicev2
.
judgeanalysis
;
import
net.wanji.databus.po.BaseAreaInfoPO
;
import
java.util.List
;
/**
* <p>
* 区域基础信息
* </p>
*
* @Author wangtao
* @Date 2025-03-18
*/
public
interface
BaseAreaInfoService
{
List
<
BaseAreaInfoPO
>
selectByType
(
Integer
type
);
}
signal-optimize-service/src/main/java/net/wanji/opt/servicev2/judgeanalysis/impl/BaseAreaInfoServiceImpl.java
0 → 100644
View file @
d0bc74ef
package
net
.
wanji
.
opt
.
servicev2
.
judgeanalysis
.
impl
;
import
net.wanji.common.framework.dubbointerface.impl.BaseDubboInterfaceImpl
;
import
net.wanji.common.framework.mapper.BaseInterfaceMapper
;
import
net.wanji.databus.dao.mapper.BaseAreaInfoMapper
;
import
net.wanji.databus.po.BaseAreaInfoPO
;
import
net.wanji.opt.entity.BaseAreaInfo
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.opt.servicev2.judgeanalysis.BaseAreaInfoService
;
import
org.apache.dubbo.config.annotation.Service
;
import
org.springframework.stereotype.Component
;
import
javax.annotation.Resource
;
import
java.util.List
;
/**
* <p>
* 区域基础信息
* </p>
*
* @Author wangtao
* @Date 2025-03-18
*/
@Slf4j
@Component
@Service
public
class
BaseAreaInfoServiceImpl
implements
BaseAreaInfoService
{
@Resource
private
BaseAreaInfoMapper
baseAreaInfoMapper
;
/**
* 根据区划类型查询对应集合(含子集)
* @param type
* @return
*/
public
List
<
BaseAreaInfoPO
>
selectByType
(
Integer
type
){
List
<
BaseAreaInfoPO
>
list
=
baseAreaInfoMapper
.
selectByType
(
type
);
if
(
list
.
size
()
>
0
){
list
.
stream
().
forEach
(
item
->{
List
<
BaseAreaInfoPO
>
areaInfoPOList
=
baseAreaInfoMapper
.
selectListByParentCode
(
item
.
getId
());
if
(
areaInfoPOList
.
size
()
>
0
){
item
.
setAreaInfoPOList
(
areaInfoPOList
);
}
});
}
return
list
;
}
}
signal-optimize-service/src/main/java/net/wanji/opt/synthesis/pojo/TrunkLineCrossProblemEntity.java
0 → 100644
View file @
d0bc74ef
package
net
.
wanji
.
opt
.
synthesis
.
pojo
;
import
lombok.Data
;
@Data
public
class
TrunkLineCrossProblemEntity
{
private
String
crossID
;
private
String
name
;
private
Integer
inDir
;
private
Integer
outDir
;
private
Integer
status
;
private
String
[]
direction
;
private
String
startTime
;
}
signal-optimize-service/src/main/java/net/wanji/opt/vo2/CrossStatusDistributionVO.java
View file @
d0bc74ef
...
@@ -21,4 +21,14 @@ public class CrossStatusDistributionVO {
...
@@ -21,4 +21,14 @@ public class CrossStatusDistributionVO {
private
Double
stopTimes
;
private
Double
stopTimes
;
@ApiModelProperty
(
value
=
"时间"
)
@ApiModelProperty
(
value
=
"时间"
)
private
String
startTime
;
private
String
startTime
;
@ApiModelProperty
(
value
=
"车道号"
,
notes
=
""
)
private
Integer
laneNo
;
@ApiModelProperty
(
value
=
"方向"
,
notes
=
""
)
private
Integer
dirType
;
@ApiModelProperty
(
value
=
"方向描述"
,
notes
=
""
)
private
String
dirTypeName
;
@ApiModelProperty
(
value
=
"转向功能"
,
notes
=
""
)
private
Integer
turnType
;
@ApiModelProperty
(
value
=
"转向功能描述"
,
notes
=
""
)
private
String
turnTypeName
;
}
}
signal-optimize-service/src/main/java/net/wanji/opt/vo2/GreenOptCrossOffsetVO.java
0 → 100644
View file @
d0bc74ef
package
net
.
wanji
.
opt
.
vo2
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.List
;
/**
* @author duanruiming
* @date 2025/03/18 10:11
*/
@Data
@ApiModel
(
value
=
"GreenOptCrossOffsetVO"
,
description
=
"态势监测-策略推荐-绿波优化相位差实体"
)
public
class
GreenOptCrossOffsetVO
{
@ApiModelProperty
(
value
=
"原始路口相位差列表"
)
private
List
<
CrossOffsetDetail
>
oriCrossOffsets
;
@ApiModelProperty
(
value
=
"当前路口相位差列表"
)
private
List
<
CrossOffsetDetail
>
curCrossOffsets
;
@Data
@ApiModel
(
value
=
"CrossOffsetDetail"
,
description
=
""
)
public
static
class
CrossOffsetDetail
{
@ApiModelProperty
(
value
=
"路口编号"
)
private
String
crossId
;
@ApiModelProperty
(
value
=
"方案相位差"
)
private
Integer
offset
;
@ApiModelProperty
(
value
=
"方案号"
)
private
Integer
schemeNo
;
}
}
signal-optimize-service/src/main/java/net/wanji/opt/vo2/TrunkLineCrossProblemVO.java
0 → 100644
View file @
d0bc74ef
package
net
.
wanji
.
opt
.
vo2
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
@Data
@ApiModel
(
value
=
"TrunkLineCrossProblemVO"
,
description
=
"干线路口事件描述"
)
public
class
TrunkLineCrossProblemVO
{
@ApiModelProperty
(
value
=
"路口ID"
)
private
String
crossID
;
@ApiModelProperty
(
value
=
"路口名称"
)
private
String
name
;
@ApiModelProperty
(
value
=
"状态1"
)
private
Integer
status_1
;
@ApiModelProperty
(
value
=
"状态2"
)
private
Integer
status_2
;
@ApiModelProperty
(
value
=
"状态1名称"
)
private
String
status_1_name
;
@ApiModelProperty
(
value
=
"状态2名称"
)
private
String
status_2_name
;
@ApiModelProperty
(
value
=
"方向1"
)
private
String
dir_1_name
;
@ApiModelProperty
(
value
=
"方向2"
)
private
String
dir_2_name
;
}
signal-optimize-service/src/main/resources/mapper/HoloEventMapper.xml
View file @
d0bc74ef
...
@@ -261,7 +261,7 @@
...
@@ -261,7 +261,7 @@
IFNULL(t2.type, '708') AS type,
IFNULL(t2.type, '708') AS type,
t1.wkt,
t1.wkt,
IFNULL(TIMESTAMPDIFF(SECOND, t2.start_time, IFNULL(t2.end_time, NOW())), 0) AS duration,
IFNULL(TIMESTAMPDIFF(SECOND, t2.start_time, IFNULL(t2.end_time, NOW())), 0) AS duration,
DATE_FORMAT(IFNULL(t2.start_time, CURDATE()), '%
Y年%m月%d日%H:%i
') AS startTime
DATE_FORMAT(IFNULL(t2.start_time, CURDATE()), '%
H:%i:%s
') AS startTime
FROM t_greenwave_info t1
FROM t_greenwave_info t1
LEFT JOIN (
LEFT JOIN (
SELECT green_id, MAX(start_time) AS start_time
SELECT green_id, MAX(start_time) AS start_time
...
@@ -288,7 +288,7 @@
...
@@ -288,7 +288,7 @@
IFNULL(t2.type, '700') AS type,
IFNULL(t2.type, '700') AS type,
REPLACE(SUBSTRING(location, 7, 18), ' ', ',') AS wkt,
REPLACE(SUBSTRING(location, 7, 18), ' ', ',') AS wkt,
IFNULL(TIMESTAMPDIFF(SECOND, t2.start_time, IFNULL(t2.end_time, NOW())), 0) AS duration,
IFNULL(TIMESTAMPDIFF(SECOND, t2.start_time, IFNULL(t2.end_time, NOW())), 0) AS duration,
DATE_FORMAT(IFNULL(t2.start_time, CURDATE()), '%
Y年%m月%d日%H:%i
') AS startTime
DATE_FORMAT(IFNULL(t2.start_time, CURDATE()), '%
H:%i:%s
') AS startTime
FROM t_base_cross_info t1
FROM t_base_cross_info t1
LEFT JOIN (
LEFT JOIN (
SELECT cross_id, MAX(start_time) AS start_time
SELECT cross_id, MAX(start_time) AS start_time
...
@@ -359,7 +359,7 @@
...
@@ -359,7 +359,7 @@
(
(
select distinct t1.name, t1.id, ifnull(t2.type, '708') type, t1.wkt,
select distinct t1.name, t1.id, ifnull(t2.type, '708') type, t1.wkt,
ifnull(TIMESTAMPDIFF(SECOND, t2.start_time, ifnull(t2.end_time,now())), 0) duration,
ifnull(TIMESTAMPDIFF(SECOND, t2.start_time, ifnull(t2.end_time,now())), 0) duration,
DATE_FORMAT(ifnull(t2.start_time, curdate()), '%
Y年%m月%d日%H:%i
') as startTime,
DATE_FORMAT(ifnull(t2.start_time, curdate()), '%
H:%i:%s
') as startTime,
case
case
when t2.type = '706' then "干线缓行"
when t2.type = '706' then "干线缓行"
when t2.type = '707' then "干线拥堵"
when t2.type = '707' then "干线拥堵"
...
...
signal-optimize-service/src/main/resources/mapper/TrunkLineMapper.xml
View file @
d0bc74ef
...
@@ -13,7 +13,6 @@
...
@@ -13,7 +13,6 @@
<result
property=
"dir"
column=
"dir"
></result>
<result
property=
"dir"
column=
"dir"
></result>
</resultMap>
</resultMap>
<select
id=
"getTrunkLineProblemDescribe"
parameterType=
"String"
resultMap=
"tlProblemDescribe"
>
<select
id=
"getTrunkLineProblemDescribe"
parameterType=
"String"
resultMap=
"tlProblemDescribe"
>
select b.greenID ,b.status ,b.time , (
select b.greenID ,b.status ,b.time , (
case
case
...
@@ -74,5 +73,40 @@
...
@@ -74,5 +73,40 @@
</if>
</if>
) b
) b
</select>
</select>
<select
id=
"getTrunkLineCrossProblem"
parameterType=
"map"
resultType=
"net.wanji.opt.synthesis.pojo.TrunkLineCrossProblemEntity"
>
select
a.cross_id,
b.name,
a.`status`,
a.direction ,
MAX(a.start_time) as start_time
from
t_cross_data_hist a
left join t_base_cross_info b on
a.cross_id = b.id
where
a.cross_id in (
select
cross_id
from
t_greenwave_cross
where
green_id = #{greenID})
<if
test=
"time != null and time != ''"
>
and DATE_FORMAT(a.start_time, '%Y-%m-%d %H:%i:%s')
<![CDATA[ <= ]]>
DATE_FORMAT(#{time}, '%Y-%m-%d %H:%i:%s')
</if>
group by
a.cross_id
</select>
<select
id=
"getIODir"
parameterType=
"map"
resultType=
"net.wanji.opt.synthesis.pojo.TrunkLineCrossProblemEntity"
>
select
distinct a.in_dir,
a.out_dir
from
t_greenwave_cross a
where
a.green_id = #{greenID}
</select>
</mapper>
</mapper>
wj-common/src/main/java/net/wanji/common/enums/BaseEnum.java
View file @
d0bc74ef
...
@@ -127,7 +127,7 @@ public class BaseEnum {
...
@@ -127,7 +127,7 @@ public class BaseEnum {
private
String
nick
;
private
String
nick
;
public
static
SignalDirectionEnum
getNickByCode
(
int
code
)
{
public
static
SignalDirectionEnum
getNickByCode
(
Integer
code
)
{
for
(
SignalDirectionEnum
signalDirectionEnum
:
SignalDirectionEnum
.
values
())
{
for
(
SignalDirectionEnum
signalDirectionEnum
:
SignalDirectionEnum
.
values
())
{
if
(
signalDirectionEnum
.
getCode
()
==
code
)
{
if
(
signalDirectionEnum
.
getCode
()
==
code
)
{
return
signalDirectionEnum
;
return
signalDirectionEnum
;
...
@@ -136,7 +136,7 @@ public class BaseEnum {
...
@@ -136,7 +136,7 @@ public class BaseEnum {
return
null
;
return
null
;
}
}
public
static
String
getNameByCode
(
int
code
)
{
public
static
String
getNameByCode
(
Integer
code
)
{
for
(
SignalDirectionEnum
signalDirectionEnum
:
SignalDirectionEnum
.
values
())
{
for
(
SignalDirectionEnum
signalDirectionEnum
:
SignalDirectionEnum
.
values
())
{
if
(
signalDirectionEnum
.
getCode
()
==
code
)
{
if
(
signalDirectionEnum
.
getCode
()
==
code
)
{
return
signalDirectionEnum
.
getName
();
return
signalDirectionEnum
.
getName
();
...
...
wj-databus/src/main/java/net/wanji/databus/dao/mapper/BaseAreaInfoMapper.java
View file @
d0bc74ef
...
@@ -39,4 +39,6 @@ public interface BaseAreaInfoMapper {
...
@@ -39,4 +39,6 @@ public interface BaseAreaInfoMapper {
List
<
BaseAreaInfoPO
>
selectAllArea
(
Integer
type
);
List
<
BaseAreaInfoPO
>
selectAllArea
(
Integer
type
);
List
<
AreaDetailPOExt
>
selectAllJoinDetail
(
String
crossName
,
Integer
isSignal
,
Integer
isStart
,
Integer
isSend
);
List
<
AreaDetailPOExt
>
selectAllJoinDetail
(
String
crossName
,
Integer
isSignal
,
Integer
isStart
,
Integer
isSend
);
List
<
BaseAreaInfoPO
>
selectListByParentCode
(
Integer
parentCode
);
}
}
wj-databus/src/main/java/net/wanji/databus/po/BaseAreaInfoPO.java
View file @
d0bc74ef
...
@@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
...
@@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
import
lombok.Data
;
import
lombok.Data
;
import
java.util.Date
;
import
java.util.Date
;
import
java.util.List
;
/**
/**
* @author duanruiming
* @author duanruiming
...
@@ -46,4 +47,10 @@ public class BaseAreaInfoPO {
...
@@ -46,4 +47,10 @@ public class BaseAreaInfoPO {
/** 修改时间 */
/** 修改时间 */
@ApiModelProperty
(
value
=
"修改时间"
,
notes
=
""
)
@ApiModelProperty
(
value
=
"修改时间"
,
notes
=
""
)
private
Date
gmtModified
;
private
Date
gmtModified
;
/**
* 用于封装子集数据
*/
List
<
BaseAreaInfoPO
>
areaInfoPOList
;
}
}
wj-databus/src/main/resources/mapper/BaseAreaInfoMapper.xml
View file @
d0bc74ef
...
@@ -131,4 +131,10 @@
...
@@ -131,4 +131,10 @@
ORDER BY t_cross.id
ORDER BY t_cross.id
</select>
</select>
<select
id=
"selectListByParentCode"
resultType=
"net.wanji.databus.po.BaseAreaInfoPO"
>
select
<include
refid=
"baseColumnList"
/>
from t_base_area_info
where parent_code = #{parentCode}
</select>
</mapper>
</mapper>
wj-gernerator/src/main/java/CodeGeneratorMyBatis1.java
View file @
d0bc74ef
...
@@ -24,12 +24,12 @@ import java.util.List;
...
@@ -24,12 +24,12 @@ import java.util.List;
public
class
CodeGeneratorMyBatis1
{
public
class
CodeGeneratorMyBatis1
{
private
static
final
String
dburl
=
"jdbc:mysql://
localhost
:3306/wjdit_ecosystem_db_v1.0.0?serverTimezone=Asia/Shanghai&useUnicode=true&useSSL=false&characterEncoding=utf8"
;
private
static
final
String
dburl
=
"jdbc:mysql://
37.12.182.29
:3306/wjdit_ecosystem_db_v1.0.0?serverTimezone=Asia/Shanghai&useUnicode=true&useSSL=false&characterEncoding=utf8"
;
private
static
final
String
userName
=
"root"
;
private
static
final
String
userName
=
"root"
;
private
static
final
String
password
=
"
123456
"
;
private
static
final
String
password
=
"
Wanji300552
"
;
private
static
final
String
TABLE_NAMES
=
"t_
analysis_problem_cross_day
"
;
private
static
final
String
TABLE_NAMES
=
"t_
base_area_info
"
;
private
static
String
ENTITY_NAME
=
null
;
private
static
String
ENTITY_NAME
=
null
;
private
static
final
String
AUTHOR
=
"
fengyi
"
;
private
static
final
String
AUTHOR
=
"
wangtao
"
;
private
static
final
boolean
OVERITE_FILE
=
true
;
//是否覆盖源文件
private
static
final
boolean
OVERITE_FILE
=
true
;
//是否覆盖源文件
private
static
final
String
PARENT_PACAGE
=
"net.wanji"
;
private
static
final
String
PARENT_PACAGE
=
"net.wanji"
;
...
@@ -69,8 +69,8 @@ public class CodeGeneratorMyBatis1 {
...
@@ -69,8 +69,8 @@ public class CodeGeneratorMyBatis1 {
// 全局配置
// 全局配置
GlobalConfig
gc
=
new
GlobalConfig
();
GlobalConfig
gc
=
new
GlobalConfig
();
// String projectPath = "./holo-decision-big-screen
";
String
projectPath
=
"signal-optimize-service
"
;
String
projectPath
=
"./wj-gernerator/output"
;
//
String projectPath = "./wj-gernerator/output";
gc
.
setOutputDir
(
projectPath
+
"/src/main/java"
);
gc
.
setOutputDir
(
projectPath
+
"/src/main/java"
);
gc
.
setAuthor
(
AUTHOR
);
gc
.
setAuthor
(
AUTHOR
);
...
@@ -105,8 +105,8 @@ public class CodeGeneratorMyBatis1 {
...
@@ -105,8 +105,8 @@ public class CodeGeneratorMyBatis1 {
pc
.
setController
(
"controllerv2"
+
subModulePackage
);
pc
.
setController
(
"controllerv2"
+
subModulePackage
);
pc
.
setEntity
(
"entity"
+
subModulePackage
);
pc
.
setEntity
(
"entity"
+
subModulePackage
);
pc
.
setMapper
(
"dao.mapper"
+
subModulePackage
);
pc
.
setMapper
(
"dao.mapper"
+
subModulePackage
);
pc
.
setService
(
"service2"
+
subModulePackage
);
pc
.
setService
(
"service
v
2"
+
subModulePackage
);
pc
.
setServiceImpl
(
"service2"
+
subModulePackage
+
".impl"
);
pc
.
setServiceImpl
(
"service
v
2"
+
subModulePackage
+
".impl"
);
mpg
.
setPackageInfo
(
pc
);
mpg
.
setPackageInfo
(
pc
);
...
...
wj-gernerator/src/main/resources/templates/mybatis1/provider.java.ftl
View file @
d0bc74ef
...
@@ -12,6 +12,6 @@ import net.wanji.common.framework.dubbointerface.BaseDubboInterface;
...
@@ -12,6 +12,6 @@ import net.wanji.common.framework.dubbointerface.BaseDubboInterface;
*
@
Author
${
author
}
*
@
Author
${
author
}
*
@
Date
${
date
}
*
@
Date
${
date
}
*/
*/
public
interface
${
entity
}
Provider
extends
BaseDubboInterface
<${
entity
}>
{
public
interface
${
entity
}
Service
extends
BaseDubboInterface
<${
entity
}>
{
}
}
wj-gernerator/src/main/resources/templates/mybatis1/providerImpl.java.ftl
View file @
d0bc74ef
...
@@ -6,7 +6,7 @@ import net.wanji.common.framework.exception.DubboProviderException;
...
@@ -6,7 +6,7 @@ import net.wanji.common.framework.exception.DubboProviderException;
import
net
.
wanji
.
common
.
framework
.
mapper
.
BaseInterfaceMapper
;
import
net
.
wanji
.
common
.
framework
.
mapper
.
BaseInterfaceMapper
;
import
net
.
wanji
.
common
.
framework
.
rest
.
JsonViewObject
;
import
net
.
wanji
.
common
.
framework
.
rest
.
JsonViewObject
;
import
net
.
wanji
.${
package
.
ModuleName
}.
entity
.${
entity
};
import
net
.
wanji
.${
package
.
ModuleName
}.
entity
.${
entity
};
import
net
.
wanji
.${
package
.
ModuleName
}.
service
.${
entity
}
Provider
;
import
net
.
wanji
.${
package
.
ModuleName
}.
service
.${
entity
}
Service
;
import
${
package
.
Mapper
}.${
table
.
mapperName
};
import
${
package
.
Mapper
}.${
table
.
mapperName
};
import
lombok
.
extern
.
slf4j
.
Slf4j
;
import
lombok
.
extern
.
slf4j
.
Slf4j
;
...
@@ -27,7 +27,7 @@ import javax.annotation.Resource;
...
@@ -27,7 +27,7 @@ import javax.annotation.Resource;
@
Slf4j
@
Slf4j
@
Component
@
Component
@
Service
@
Service
public
class
${
entity
}
ProviderImpl
extends
BaseDubboInterfaceImpl
<${
entity
}>
implements
${
entity
}
Provider
{
public
class
${
entity
}
ServiceImpl
extends
BaseDubboInterfaceImpl
<${
entity
}>
implements
${
entity
}
Service
{
@
Resource
@
Resource
private
${
table
.
mapperName
}
${
table
.
entityPath
}
Mapper
;
private
${
table
.
mapperName
}
${
table
.
entityPath
}
Mapper
;
...
...
wj-gernerator/src/main/resources/templates/mybatis1/restServer.java.ftl
View file @
d0bc74ef
...
@@ -9,7 +9,7 @@ import net.wanji.common.framework.exception.DubboProviderException;
...
@@ -9,7 +9,7 @@ import net.wanji.common.framework.exception.DubboProviderException;
import
net
.
wanji
.
common
.
framework
.
i18n
.
I18nResourceBundle
;
import
net
.
wanji
.
common
.
framework
.
i18n
.
I18nResourceBundle
;
import
net
.
wanji
.
common
.
framework
.
rest
.
AbstractRestServer
;
import
net
.
wanji
.
common
.
framework
.
rest
.
AbstractRestServer
;
import
net
.
wanji
.
common
.
framework
.
rest
.
impl
.
AbstractRestServerImpl
;
import
net
.
wanji
.
common
.
framework
.
rest
.
impl
.
AbstractRestServerImpl
;
import
net
.
wanji
.${
package
.
ModuleName
}.
service
.${
entity
}
Provider
;
import
net
.
wanji
.${
package
.
ModuleName
}.
service
.${
entity
}
Service
;
import
net
.
wanji
.${
package
.
ModuleName
}.
entity
.${
entity
};
import
net
.
wanji
.${
package
.
ModuleName
}.
entity
.${
entity
};
import
net
.
wanji
.
common
.
framework
.
rest
.
Page
;
import
net
.
wanji
.
common
.
framework
.
rest
.
Page
;
...
@@ -44,8 +44,8 @@ import java.util.Map;
...
@@ -44,8 +44,8 @@ import java.util.Map;
@
RestController
@
RestController
@
Slf4j
@
Slf4j
@
RequestMapping
(
"/<#if controllerMappingHyphenStyle??>${controllerMappingHyphen}<#else>${table.entityPath}</#if>"
)
@
RequestMapping
(
"/<#if controllerMappingHyphenStyle??>${controllerMappingHyphen}<#else>${table.entityPath}</#if>"
)
@
Api
(
value
=
"${entity}
RestServ
er"
,
description
=
"${table.comment!}接口"
,
tags
=
"${table.comment}"
)
@
Api
(
value
=
"${entity}
Controll
er"
,
description
=
"${table.comment!}接口"
,
tags
=
"${table.comment}"
)
public
class
${
entity
}
RestServ
er
extends
AbstractRestServerImpl
<${
entity
}>
implements
AbstractRestServer
<${
entity
}>{
public
class
${
entity
}
Controll
er
extends
AbstractRestServerImpl
<${
entity
}>
implements
AbstractRestServer
<${
entity
}>{
@
Autowired
@
Autowired
private
${
table
.
serviceName
}
${
table
.
serviceName
?
uncap_first
};
private
${
table
.
serviceName
}
${
table
.
serviceName
?
uncap_first
};
...
...
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