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
c21f74ae
Commit
c21f74ae
authored
Dec 06, 2024
by
zhoushiguang
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
1eb81bc8
43740846
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
231 additions
and
36 deletions
+231
-36
GreenwaveInducesHistController.java
...opt/controller/induce/GreenwaveInducesHistController.java
+5
-5
GreenBeltController.java
...t/wanji/opt/controller/signalopt/GreenBeltController.java
+17
-0
StrategyGreenOptHistEntity.java
...ain/java/net/wanji/opt/po/StrategyGreenOptHistEntity.java
+2
-0
TrendServiceImpl.java
...ain/java/net/wanji/opt/service/impl/TrendServiceImpl.java
+1
-0
GreenBeltInfoService.java
...net/wanji/opt/service/signalopt/GreenBeltInfoService.java
+2
-0
GreenBeltServiceImpl.java
...anji/opt/service/signalopt/impl/GreenBeltServiceImpl.java
+146
-16
InducesMonitorTask.java
.../src/main/java/net/wanji/opt/task/InducesMonitorTask.java
+18
-14
GreenBeltKeyCrossFlowTimeVO.java
...in/java/net/wanji/opt/vo/GreenBeltKeyCrossFlowTimeVO.java
+28
-0
GreenBeltSpeedWidthVO.java
...src/main/java/net/wanji/opt/vo/GreenBeltSpeedWidthVO.java
+3
-1
GreenwaveRunMonitorVO.java
...src/main/java/net/wanji/opt/vo/GreenwaveRunMonitorVO.java
+2
-0
GreenwaveInfoMapper.xml
wj-databus/src/main/resources/mapper/GreenwaveInfoMapper.xml
+7
-0
No files found.
signal-optimize-service/src/main/java/net/wanji/opt/controller/induce/GreenwaveInducesHistController.java
View file @
c21f74ae
...
@@ -102,7 +102,7 @@ public class GreenwaveInducesHistController {
...
@@ -102,7 +102,7 @@ public class GreenwaveInducesHistController {
greenwaveDirDTO
.
setStrategyName
(
o
.
getStrategyName
());
greenwaveDirDTO
.
setStrategyName
(
o
.
getStrategyName
());
greenwaveDirDTO
.
setMinSpeed
(
o
.
getMinSpeed
());
greenwaveDirDTO
.
setMinSpeed
(
o
.
getMinSpeed
());
greenwaveDirDTO
.
setM
in
Speed
(
o
.
getMaxSpeed
());
greenwaveDirDTO
.
setM
ax
Speed
(
o
.
getMaxSpeed
());
if
(
Objects
.
nonNull
(
o
.
getControlOptTimes
())
&&
o
.
getControlOptTimes
().
split
(
"\\|"
).
length
>
0
)
{
if
(
Objects
.
nonNull
(
o
.
getControlOptTimes
())
&&
o
.
getControlOptTimes
().
split
(
"\\|"
).
length
>
0
)
{
try
{
try
{
String
startTime
=
DateUtil
.
format
(
DateUtil
.
parse
(
o
.
getControlOptTimes
().
split
(
"\\|"
)[
0
],
Constants
.
DATE_FORMAT
.
E_DATE_FORMAT_SECOND
),
Constants
.
DATE_FORMAT
.
E_DATE_FORMAT_TIME
);
String
startTime
=
DateUtil
.
format
(
DateUtil
.
parse
(
o
.
getControlOptTimes
().
split
(
"\\|"
)[
0
],
Constants
.
DATE_FORMAT
.
E_DATE_FORMAT_SECOND
),
Constants
.
DATE_FORMAT
.
E_DATE_FORMAT_TIME
);
...
@@ -117,13 +117,13 @@ public class GreenwaveInducesHistController {
...
@@ -117,13 +117,13 @@ public class GreenwaveInducesHistController {
}
}
//获取诱导屏列表
//获取诱导屏列表
List
<
InduceDTO
>
induceDTOList
=
new
ArrayList
<>();
List
<
InduceDTO
>
induceDTOList
=
new
ArrayList
<>();
greenwaveInducesList
.
stream
().
filter
(
l
->
Objects
.
nonNull
(
l
.
getGreenId
())
&&
l
.
getGreenId
().
equals
(
o
.
getGreenId
())).
forEach
(
n
->
{
greenwaveInducesList
.
stream
().
filter
(
l
->
Objects
.
nonNull
(
l
.
getGreenId
())
&&
l
.
getGreenId
().
equals
(
o
.
getGreenId
())
&&
Objects
.
nonNull
(
l
.
getDir
())
&&
l
.
getDir
().
equals
(
o
.
getDir
())
).
forEach
(
n
->
{
InduceDTO
induceDTO
=
new
InduceDTO
();
InduceDTO
induceDTO
=
new
InduceDTO
();
induceDTO
.
setId
(
n
.
getId
());
induceDTO
.
setId
(
n
.
getId
());
induceDTO
.
setEquipCode
(
n
.
getEquipCode
());
induceDTO
.
setEquipCode
(
n
.
getEquipCode
());
induceDTO
.
setStatus
(
o
.
getStatus
());
induceDTO
.
setStatus
(
o
.
getStatus
());
//获取屏幕的设备信息
//获取屏幕的设备信息
List
<
DeviceInduces
>
deviceInduces
=
deviceInducesList
.
stream
().
filter
(
m
->
Objects
.
nonNull
(
m
.
getEquipCode
())
&&
m
.
getEquipCode
().
equals
(
n
.
getEquipCode
())).
collect
(
Collectors
.
toList
());
// 过滤条件// 收集结果
List
<
DeviceInduces
>
deviceInduces
=
deviceInducesList
.
stream
().
filter
(
m
->
Objects
.
nonNull
(
m
.
getEquipCode
())
&&
m
.
getEquipCode
().
equals
(
n
.
getEquipCode
())
).
collect
(
Collectors
.
toList
());
// 过滤条件// 收集结果
if
(
Objects
.
nonNull
(
deviceInduces
)
&&
deviceInduces
.
size
()
>
0
)
{
if
(
Objects
.
nonNull
(
deviceInduces
)
&&
deviceInduces
.
size
()
>
0
)
{
induceDTO
.
setEquipName
(
deviceInduces
.
get
(
0
).
getEquipName
());
induceDTO
.
setEquipName
(
deviceInduces
.
get
(
0
).
getEquipName
());
induceDTO
.
setRidDir
(
n
.
getDir
());
//
induceDTO
.
setRidDir
(
n
.
getDir
());
//
...
@@ -195,7 +195,7 @@ public class GreenwaveInducesHistController {
...
@@ -195,7 +195,7 @@ public class GreenwaveInducesHistController {
greenwaveDirDTO
.
setStrategyId
(
o
.
getStrategyId
());
greenwaveDirDTO
.
setStrategyId
(
o
.
getStrategyId
());
greenwaveDirDTO
.
setStrategyName
(
o
.
getStrategyName
());
greenwaveDirDTO
.
setStrategyName
(
o
.
getStrategyName
());
greenwaveDirDTO
.
setMinSpeed
(
o
.
getMinSpeed
());
greenwaveDirDTO
.
setMinSpeed
(
o
.
getMinSpeed
());
greenwaveDirDTO
.
setM
in
Speed
(
o
.
getMaxSpeed
());
greenwaveDirDTO
.
setM
ax
Speed
(
o
.
getMaxSpeed
());
if
(
Objects
.
nonNull
(
o
.
getControlOptTimes
())
&&
o
.
getControlOptTimes
().
split
(
"\\|"
).
length
>
0
)
{
if
(
Objects
.
nonNull
(
o
.
getControlOptTimes
())
&&
o
.
getControlOptTimes
().
split
(
"\\|"
).
length
>
0
)
{
try
{
try
{
String
startTime
=
DateUtil
.
format
(
DateUtil
.
parse
(
o
.
getControlOptTimes
().
split
(
"\\|"
)[
0
],
Constants
.
DATE_FORMAT
.
E_DATE_FORMAT_SECOND
),
Constants
.
DATE_FORMAT
.
E_DATE_FORMAT_TIME
);
String
startTime
=
DateUtil
.
format
(
DateUtil
.
parse
(
o
.
getControlOptTimes
().
split
(
"\\|"
)[
0
],
Constants
.
DATE_FORMAT
.
E_DATE_FORMAT_SECOND
),
Constants
.
DATE_FORMAT
.
E_DATE_FORMAT_TIME
);
...
@@ -210,7 +210,7 @@ public class GreenwaveInducesHistController {
...
@@ -210,7 +210,7 @@ public class GreenwaveInducesHistController {
}
}
//获取诱导屏列表
//获取诱导屏列表
List
<
InduceDTO
>
induceDTOList
=
new
ArrayList
<>();
List
<
InduceDTO
>
induceDTOList
=
new
ArrayList
<>();
greenwaveInducesList
.
stream
().
filter
(
l
->
Objects
.
nonNull
(
l
.
getGreenId
())
&&
l
.
getGreenId
().
equals
(
o
.
getGreenId
())).
forEach
(
n
->
{
greenwaveInducesList
.
stream
().
filter
(
l
->
Objects
.
nonNull
(
l
.
getGreenId
())
&&
l
.
getGreenId
().
equals
(
o
.
getGreenId
())
&&
Objects
.
nonNull
(
l
.
getDir
())
&&
l
.
getDir
().
equals
(
o
.
getDir
())
).
forEach
(
n
->
{
InduceDTO
induceDTO
=
new
InduceDTO
();
InduceDTO
induceDTO
=
new
InduceDTO
();
induceDTO
.
setId
(
n
.
getId
());
induceDTO
.
setId
(
n
.
getId
());
induceDTO
.
setEquipCode
(
n
.
getEquipCode
());
induceDTO
.
setEquipCode
(
n
.
getEquipCode
());
...
...
signal-optimize-service/src/main/java/net/wanji/opt/controller/signalopt/GreenBeltController.java
View file @
c21f74ae
...
@@ -8,6 +8,7 @@ import net.wanji.common.framework.rest.JsonViewObject;
...
@@ -8,6 +8,7 @@ import net.wanji.common.framework.rest.JsonViewObject;
import
net.wanji.opt.dto.strategy.AddOrUpdateSceneDTO
;
import
net.wanji.opt.dto.strategy.AddOrUpdateSceneDTO
;
import
net.wanji.opt.service.signalopt.GreenBeltInfoService
;
import
net.wanji.opt.service.signalopt.GreenBeltInfoService
;
import
net.wanji.opt.vo.GreenBeltFlowStopTimeVO
;
import
net.wanji.opt.vo.GreenBeltFlowStopTimeVO
;
import
net.wanji.opt.vo.GreenBeltKeyCrossFlowTimeVO
;
import
net.wanji.opt.vo.GreenBeltSpeedWidthVO
;
import
net.wanji.opt.vo.GreenBeltSpeedWidthVO
;
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
;
...
@@ -61,4 +62,20 @@ public class GreenBeltController {
...
@@ -61,4 +62,20 @@ public class GreenBeltController {
}
}
return
JsonViewObject
.
newInstance
().
success
(
greenBeltFlowStopTimeVOS
);
return
JsonViewObject
.
newInstance
().
success
(
greenBeltFlowStopTimeVOS
);
}
}
@ApiOperation
(
value
=
"绿波关键路口流量绿信比"
,
notes
=
"优化监测-绿波关键路口流量绿信比"
,
response
=
JsonViewObject
.
class
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@GetMapping
(
value
=
"/greenBeltKeyCrossFlowTime"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
AddOrUpdateSceneDTO
.
class
),
})
public
JsonViewObject
greenBeltKeyCrossFlowTime
(
Integer
greenId
)
{
List
<
GreenBeltKeyCrossFlowTimeVO
>
greenBeltKeyCrossFlowTimeVOS
=
Collections
.
EMPTY_LIST
;
try
{
greenBeltKeyCrossFlowTimeVOS
=
greenBeltInfoService
.
greenBeltKeyCrossFlowTime
(
greenId
);
}
catch
(
Exception
e
)
{
JsonViewObject
.
newInstance
().
fail
(
"绿波带宽曲线异常"
);
}
return
JsonViewObject
.
newInstance
().
success
(
greenBeltKeyCrossFlowTimeVOS
);
}
}
}
signal-optimize-service/src/main/java/net/wanji/opt/po/StrategyGreenOptHistEntity.java
View file @
c21f74ae
...
@@ -45,6 +45,8 @@ public class StrategyGreenOptHistEntity {
...
@@ -45,6 +45,8 @@ public class StrategyGreenOptHistEntity {
private
Double
greenWidthTime
;
private
Double
greenWidthTime
;
@TableField
(
"cross_green_detail"
)
@TableField
(
"cross_green_detail"
)
private
String
crossGreenDetail
;
private
String
crossGreenDetail
;
@TableField
(
"key_cross"
)
private
String
keyCross
;
@TableField
(
"create_time"
)
@TableField
(
"create_time"
)
private
Date
createTime
;
private
Date
createTime
;
@TableField
(
"modify_time"
)
@TableField
(
"modify_time"
)
...
...
signal-optimize-service/src/main/java/net/wanji/opt/service/impl/TrendServiceImpl.java
View file @
c21f74ae
...
@@ -536,6 +536,7 @@ public class TrendServiceImpl implements TrendService {
...
@@ -536,6 +536,7 @@ public class TrendServiceImpl implements TrendService {
greenWaveRunMonitorVO
.
setHour
(
hourSub
);
greenWaveRunMonitorVO
.
setHour
(
hourSub
);
greenWaveRunMonitorVO
.
setAvgSpeed
(
greenwaveHistPOExt
.
getAvgSpeed
());
greenWaveRunMonitorVO
.
setAvgSpeed
(
greenwaveHistPOExt
.
getAvgSpeed
());
greenWaveRunMonitorVO
.
setCongestionIndex
(
greenwaveHistPOExt
.
getCongestionIndex
());
greenWaveRunMonitorVO
.
setCongestionIndex
(
greenwaveHistPOExt
.
getCongestionIndex
());
greenWaveRunMonitorVO
.
setTravelTime
((
int
)
(
greenwaveHistPOExt
.
getTrvalTime
()
/
60
));
res
.
add
(
greenWaveRunMonitorVO
);
res
.
add
(
greenWaveRunMonitorVO
);
}
}
return
res
;
return
res
;
...
...
signal-optimize-service/src/main/java/net/wanji/opt/service/signalopt/GreenBeltInfoService.java
View file @
c21f74ae
package
net
.
wanji
.
opt
.
service
.
signalopt
;
package
net
.
wanji
.
opt
.
service
.
signalopt
;
import
net.wanji.opt.vo.GreenBeltFlowStopTimeVO
;
import
net.wanji.opt.vo.GreenBeltFlowStopTimeVO
;
import
net.wanji.opt.vo.GreenBeltKeyCrossFlowTimeVO
;
import
net.wanji.opt.vo.GreenBeltSpeedWidthVO
;
import
net.wanji.opt.vo.GreenBeltSpeedWidthVO
;
import
java.util.List
;
import
java.util.List
;
...
@@ -12,4 +13,5 @@ import java.util.List;
...
@@ -12,4 +13,5 @@ import java.util.List;
public
interface
GreenBeltInfoService
{
public
interface
GreenBeltInfoService
{
List
<
GreenBeltFlowStopTimeVO
>
greenBeltCrossDetailHist
(
Integer
greenId
)
throws
Exception
;
List
<
GreenBeltFlowStopTimeVO
>
greenBeltCrossDetailHist
(
Integer
greenId
)
throws
Exception
;
List
<
GreenBeltSpeedWidthVO
>
greenBeltSpeedWidth
(
Integer
greenId
)
throws
Exception
;
List
<
GreenBeltSpeedWidthVO
>
greenBeltSpeedWidth
(
Integer
greenId
)
throws
Exception
;
List
<
GreenBeltKeyCrossFlowTimeVO
>
greenBeltKeyCrossFlowTime
(
Integer
greenId
)
throws
Exception
;
}
}
signal-optimize-service/src/main/java/net/wanji/opt/service/signalopt/impl/GreenBeltServiceImpl.java
View file @
c21f74ae
package
net
.
wanji
.
opt
.
service
.
signalopt
.
impl
;
package
net
.
wanji
.
opt
.
service
.
signalopt
.
impl
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.fasterxml.jackson.core.type.TypeReference
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.common.framework.Constants
;
import
net.wanji.common.utils.tool.DateUtil
;
import
net.wanji.common.utils.tool.DateUtil
;
import
net.wanji.common.utils.tool.JacksonUtils
;
import
net.wanji.common.utils.tool.StringUtils
;
import
net.wanji.databus.dao.entity.GreenwaveHistPO
;
import
net.wanji.databus.dao.mapper.CrossDataHistMapper
;
import
net.wanji.databus.dao.mapper.CrossDataHistMapper
;
import
net.wanji.databus.dao.mapper.GreenwaveHistMapper
;
import
net.wanji.databus.dao.mapper.GreenwaveInfoMapper
;
import
net.wanji.databus.dao.mapper.GreenwaveInfoMapper
;
import
net.wanji.databus.po.CrossDataHistPO
;
import
net.wanji.databus.po.CrossDataHistPO
;
import
net.wanji.opt.
dao.mapper.StrategyControlInfoMapper
;
import
net.wanji.opt.
common.enums.GreenBeltDirEnum
;
import
net.wanji.opt.dao.mapper.StrategyGreenOptHistMapper
;
import
net.wanji.opt.dao.mapper.StrategyGreenOptHistMapper
;
import
net.wanji.opt.po.StrategyGreenOptHistEntity
;
import
net.wanji.opt.po.StrategyGreenOptHistEntity
;
import
net.wanji.opt.service.signalopt.GreenBeltInfoService
;
import
net.wanji.opt.service.signalopt.GreenBeltInfoService
;
import
net.wanji.opt.synthesis.pojo.StrategyControlDataEntity
;
import
net.wanji.opt.vo.GreenBeltFlowStopTimeVO
;
import
net.wanji.opt.vo.GreenBeltFlowStopTimeVO
;
import
net.wanji.opt.vo.GreenBeltInfoVO
;
import
net.wanji.opt.vo.GreenBeltKeyCrossFlowTimeVO
;
import
net.wanji.opt.vo.GreenBeltSpeedWidthVO
;
import
net.wanji.opt.vo.GreenBeltSpeedWidthVO
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.util.CollectionUtils
;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
java.text.
ParseException
;
import
java.text.
DecimalFormat
;
import
java.time.LocalDate
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
import
java.time.LocalDateTime
;
import
java.time.LocalTime
;
import
java.time.LocalTime
;
import
java.time.ZoneOffset
;
import
java.time.ZoneId
;
import
java.time.format.DateTimeFormatter
;
import
java.util.*
;
import
java.util.*
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
...
@@ -39,28 +48,129 @@ public class GreenBeltServiceImpl implements GreenBeltInfoService {
...
@@ -39,28 +48,129 @@ public class GreenBeltServiceImpl implements GreenBeltInfoService {
private
CrossDataHistMapper
crossDataHistMapper
;
private
CrossDataHistMapper
crossDataHistMapper
;
@Resource
@Resource
private
StrategyGreenOptHistMapper
strategyGreenOptHistMapper
;
private
StrategyGreenOptHistMapper
strategyGreenOptHistMapper
;
@Resource
private
GreenwaveHistMapper
greenwaveHistMapper
;
@Override
public
List
<
GreenBeltKeyCrossFlowTimeVO
>
greenBeltKeyCrossFlowTime
(
Integer
greenId
)
throws
Exception
{
ObjectMapper
mapper
=
JacksonUtils
.
getInstance
();
DecimalFormat
df
=
new
DecimalFormat
(
"#.00"
);
List
<
GreenBeltKeyCrossFlowTimeVO
>
tempResult
=
new
ArrayList
<>();
List
<
GreenBeltKeyCrossFlowTimeVO
>
results
=
new
ArrayList
<>();
LocalDate
currentDate
=
LocalDate
.
now
();
LocalTime
startTime
=
LocalTime
.
MIDNIGHT
;
LocalDateTime
startOfDay
=
LocalDateTime
.
of
(
currentDate
,
startTime
);
// 绿波优化数据
LambdaQueryWrapper
<
StrategyGreenOptHistEntity
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
queryWrapper
.
eq
(
StrategyGreenOptHistEntity:
:
getGreenId
,
greenId
);
queryWrapper
.
ge
(
StrategyGreenOptHistEntity:
:
getControlTime
,
startOfDay
);
List
<
StrategyGreenOptHistEntity
>
entities
=
strategyGreenOptHistMapper
.
selectList
(
queryWrapper
);
// 随机路口编号,通过路口编号查询时间轴
String
tempCrossId
=
""
;
if
(!
CollectionUtils
.
isEmpty
(
entities
))
{
for
(
StrategyGreenOptHistEntity
entity
:
entities
)
{
GreenBeltKeyCrossFlowTimeVO
vo
=
new
GreenBeltKeyCrossFlowTimeVO
();
String
keyCross
=
entity
.
getKeyCross
();
vo
.
setCrossId
(
keyCross
);
vo
.
setDirName
(
entity
.
getDir
());
Date
controlTime
=
get5MinuteDate
(
entity
.
getControlTime
());
vo
.
setStartTime
(
controlTime
);
String
crossGreenDetail
=
entity
.
getCrossGreenDetail
();
Integer
cycle
=
entity
.
getCycle
();
List
<
GreenBeltInfoVO
.
CrossGreenDetail
>
crossGreenDetails
=
mapper
.
readValue
(
crossGreenDetail
,
new
TypeReference
<
List
<
GreenBeltInfoVO
.
CrossGreenDetail
>>()
{
});
if
(!
CollectionUtils
.
isEmpty
(
crossGreenDetails
))
{
List
<
GreenBeltInfoVO
.
CrossGreenDetail
>
keyCrossDetail
=
crossGreenDetails
.
stream
().
filter
(
details
->
StringUtils
.
equalsIgnoreCase
(
keyCross
,
details
.
getCrossId
())).
collect
(
Collectors
.
toList
());
if
(!
CollectionUtils
.
isEmpty
(
keyCrossDetail
))
{
GreenBeltInfoVO
.
CrossGreenDetail
curKeyCross
=
keyCrossDetail
.
get
(
0
);
tempCrossId
=
curKeyCross
.
getCrossId
();
Double
phaseStartTime
=
curKeyCross
.
getPhaseStartTime
();
Double
phaseEndTime
=
curKeyCross
.
getPhaseEndTime
();
Double
greenTimeRatio
=
Double
.
parseDouble
(
df
.
format
(
phaseEndTime
-
phaseStartTime
/
cycle
));
vo
.
setGreenTimeRatio
(
greenTimeRatio
);
}
}
tempResult
.
add
(
vo
);
}
// 关键路口历史数据
LambdaQueryWrapper
<
CrossDataHistPO
>
histQuery
=
new
LambdaQueryWrapper
<>();
histQuery
.
eq
(
CrossDataHistPO:
:
getCrossId
,
tempCrossId
);
histQuery
.
ge
(
CrossDataHistPO:
:
getStartTime
,
startOfDay
);
List
<
CrossDataHistPO
>
crossDataHistPOS
=
crossDataHistMapper
.
selectList
(
histQuery
);
if
(!
CollectionUtils
.
isEmpty
(
crossDataHistPOS
))
{
for
(
CrossDataHistPO
crossDataHistPO
:
crossDataHistPOS
)
{
Date
crossStartTime
=
crossDataHistPO
.
getStartTime
();
String
format
=
DateUtil
.
format
(
crossStartTime
,
Constants
.
DATE_FORMAT
.
E_DATE_FORMAT_SECOND
);
Date
minuteDate
=
get5MinuteDate
(
format
);
Integer
flow
=
crossDataHistPO
.
getFlow
();
GreenBeltKeyCrossFlowTimeVO
resultVO
=
new
GreenBeltKeyCrossFlowTimeVO
();
resultVO
.
setStartTime
(
minuteDate
);
resultVO
.
setFlow
(
0
);
resultVO
.
setGreenTimeRatio
(
0.0
);
resultVO
.
setCrossId
(
tempCrossId
);
for
(
GreenBeltKeyCrossFlowTimeVO
result
:
tempResult
)
{
if
(
StringUtils
.
equalsIgnoreCase
(
tempCrossId
,
result
.
getCrossId
())
&&
minuteDate
.
getTime
()
==
result
.
getStartTime
().
getTime
())
{
resultVO
.
setFlow
(
flow
);
resultVO
.
setGreenTimeRatio
(
result
.
getGreenTimeRatio
());
}
}
results
.
add
(
resultVO
);
}
}
}
return
results
;
}
@Override
@Override
public
List
<
GreenBeltSpeedWidthVO
>
greenBeltSpeedWidth
(
Integer
greenId
)
throws
Exception
{
public
List
<
GreenBeltSpeedWidthVO
>
greenBeltSpeedWidth
(
Integer
greenId
)
throws
Exception
{
try
{
try
{
LambdaQueryWrapper
<
StrategyGreenOptHistEntity
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
List
<
GreenBeltSpeedWidthVO
>
results
=
new
ArrayList
<>();
queryWrapper
.
eq
(
StrategyGreenOptHistEntity:
:
getGreenId
,
greenId
);
LocalDate
currentDate
=
LocalDate
.
now
();
LocalDate
currentDate
=
LocalDate
.
now
();
LocalTime
startTime
=
LocalTime
.
MIDNIGHT
;
LocalTime
startTime
=
LocalTime
.
MIDNIGHT
;
LocalDateTime
startOfDay
=
LocalDateTime
.
of
(
currentDate
,
startTime
);
LocalDateTime
startOfDay
=
LocalDateTime
.
of
(
currentDate
,
startTime
);
LambdaQueryWrapper
<
GreenwaveHistPO
>
greenWrapper
=
new
LambdaQueryWrapper
<>();
greenWrapper
.
eq
(
GreenwaveHistPO:
:
getGreenId
,
greenId
);
greenWrapper
.
ge
(
GreenwaveHistPO:
:
getStartTime
,
startOfDay
);
// 绿波历史数据
List
<
GreenwaveHistPO
>
greenwaveHistPOS
=
greenwaveHistMapper
.
selectList
(
greenWrapper
);
// 绿波优化数据
LambdaQueryWrapper
<
StrategyGreenOptHistEntity
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
queryWrapper
.
eq
(
StrategyGreenOptHistEntity:
:
getGreenId
,
greenId
);
queryWrapper
.
ge
(
StrategyGreenOptHistEntity:
:
getControlTime
,
startOfDay
);
queryWrapper
.
ge
(
StrategyGreenOptHistEntity:
:
getControlTime
,
startOfDay
);
List
<
StrategyGreenOptHistEntity
>
entities
=
strategyGreenOptHistMapper
.
selectList
(
queryWrapper
);
List
<
StrategyGreenOptHistEntity
>
entities
=
strategyGreenOptHistMapper
.
selectList
(
queryWrapper
);
List
<
GreenBeltSpeedWidthVO
>
results
=
new
ArrayList
<>();
if
(!
CollectionUtils
.
isEmpty
(
greenwaveHistPOS
)
&&
!
CollectionUtils
.
isEmpty
(
entities
))
{
if
(!
CollectionUtils
.
isEmpty
(
entities
))
{
for
(
GreenwaveHistPO
histPO
:
greenwaveHistPOS
)
{
for
(
StrategyGreenOptHistEntity
entity
:
entities
)
{
Integer
curGreenId
=
histPO
.
getGreenId
();
GreenBeltSpeedWidthVO
greenBeltSpeedWidthVO
=
new
GreenBeltSpeedWidthVO
();
Date
curStartTime
=
histPO
.
getStartTime
();
Date
date
=
DateUtil
.
parse
(
entity
.
getControlTime
(),
"yyyy-MM-dd HH:mm:ss"
);
String
curStartTimeStr
=
DateUtil
.
format
(
curStartTime
,
Constants
.
DATE_FORMAT
.
E_DATE_FORMAT_SECOND
);
greenBeltSpeedWidthVO
.
setStartTime
(
date
);
Date
startTimeminuteDate
=
get5MinuteDate
(
curStartTimeStr
);
greenBeltSpeedWidthVO
.
setSpeed
(
entity
.
getMaxSpeed
());
String
roadDirection
=
histPO
.
getRoadDirection
();
greenBeltSpeedWidthVO
.
setWidth
(
entity
.
getGreenWidthTime
());
Double
speed
=
histPO
.
getSpeed
();
results
.
add
(
greenBeltSpeedWidthVO
);
for
(
StrategyGreenOptHistEntity
entity
:
entities
)
{
Integer
optGreenId
=
entity
.
getGreenId
();
String
controlTime
=
entity
.
getControlTime
();
String
dir
=
entity
.
getDir
();
Date
minuteDate
=
get5MinuteDate
(
controlTime
);
Double
greenWidthTime
=
entity
.
getGreenWidthTime
();
if
(
Objects
.
equals
(
curGreenId
,
optGreenId
)
&&
StringUtils
.
equalsIgnoreCase
(
dir
,
roadDirection
)
&&
minuteDate
.
getTime
()
==
startTimeminuteDate
.
getTime
())
{
GreenBeltSpeedWidthVO
vo
=
new
GreenBeltSpeedWidthVO
();
vo
.
setStartTime
(
curStartTime
);
vo
.
setSpeed
(
speed
);
vo
.
setWidth
(
greenWidthTime
);
vo
.
setDirName
(
GreenBeltDirEnum
.
getDesc
(
dir
));
results
.
add
(
vo
);
}
}
}
}
}
}
return
results
;
return
results
;
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
log
.
error
(
"绿波带宽曲线异常:"
,
e
);
log
.
error
(
"绿波带宽曲线异常:"
,
e
);
...
@@ -68,6 +178,26 @@ public class GreenBeltServiceImpl implements GreenBeltInfoService {
...
@@ -68,6 +178,26 @@ public class GreenBeltServiceImpl implements GreenBeltInfoService {
}
}
}
}
/**
* 将下发时间按五分钟取整
*
* @param controlTime
* @return
*/
public
static
Date
get5MinuteDate
(
String
controlTime
)
{
DateTimeFormatter
formatter
=
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
);
LocalDateTime
dateTime
=
LocalDateTime
.
parse
(
controlTime
,
formatter
);
// 获取当前分钟
int
minute
=
dateTime
.
getMinute
();
// 计算需要补充的分钟数(如果 minute % 5 != 0)
int
minutesToAdd
=
(
5
-
minute
%
5
)
%
5
;
// 添加这些分钟并返回新的时间
LocalDateTime
localDateTime
=
dateTime
.
plusMinutes
(
minutesToAdd
).
withSecond
(
0
).
withNano
(
0
);
ZoneId
zoneId
=
ZoneId
.
systemDefault
();
Date
minuteDate
=
Date
.
from
(
localDateTime
.
atZone
(
zoneId
).
toInstant
());
return
minuteDate
;
}
@Override
@Override
public
List
<
GreenBeltFlowStopTimeVO
>
greenBeltCrossDetailHist
(
Integer
greenId
)
throws
Exception
{
public
List
<
GreenBeltFlowStopTimeVO
>
greenBeltCrossDetailHist
(
Integer
greenId
)
throws
Exception
{
try
{
try
{
...
@@ -75,7 +205,7 @@ public class GreenBeltServiceImpl implements GreenBeltInfoService {
...
@@ -75,7 +205,7 @@ public class GreenBeltServiceImpl implements GreenBeltInfoService {
long
currentTimeMillis
=
System
.
currentTimeMillis
();
long
currentTimeMillis
=
System
.
currentTimeMillis
();
int
startSecond
=
(
int
)
(
currentTimeMillis
/
1000
-
3600
);
int
startSecond
=
(
int
)
(
currentTimeMillis
/
1000
-
3600
);
int
endSecond
=
(
int
)
(
currentTimeMillis
/
1000
);
int
endSecond
=
(
int
)
(
currentTimeMillis
/
1000
);
List
<
CrossDataHistPO
>
crossDataHistPOS
=
crossDataHistMapper
.
selectByCrossIdsAndTimestamp
(
crossIds
,
startSecond
,
endSecond
);
List
<
CrossDataHistPO
>
crossDataHistPOS
=
crossDataHistMapper
.
selectByCrossIdsAndTimestamp
(
crossIds
,
startSecond
,
endSecond
);
if
(!
CollectionUtils
.
isEmpty
(
crossDataHistPOS
))
{
if
(!
CollectionUtils
.
isEmpty
(
crossDataHistPOS
))
{
List
<
GreenBeltFlowStopTimeVO
>
results
=
new
ArrayList
<>();
List
<
GreenBeltFlowStopTimeVO
>
results
=
new
ArrayList
<>();
Map
<
Date
,
List
<
CrossDataHistPO
>>
startTimeMap
=
crossDataHistPOS
.
stream
().
collect
(
Collectors
.
groupingBy
(
CrossDataHistPO:
:
getStartTime
));
Map
<
Date
,
List
<
CrossDataHistPO
>>
startTimeMap
=
crossDataHistPOS
.
stream
().
collect
(
Collectors
.
groupingBy
(
CrossDataHistPO:
:
getStartTime
));
...
...
signal-optimize-service/src/main/java/net/wanji/opt/task/InducesMonitorTask.java
View file @
c21f74ae
package
net
.
wanji
.
opt
.
task
;
package
net
.
wanji
.
opt
.
task
;
import
com.alibaba.druid.support.json.JSONUtils
;
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.JsonProcessingException
;
import
com.fasterxml.jackson.core.type.TypeReference
;
import
com.fasterxml.jackson.core.type.TypeReference
;
...
@@ -95,25 +96,27 @@ public class InducesMonitorTask {
...
@@ -95,25 +96,27 @@ public class InducesMonitorTask {
* #绿波调度计划扫描周期
* #绿波调度计划扫描周期
* 5 分钟 300000
* 5 分钟 300000
*/
*/
@Scheduled
(
fixedRate
=
30000
0
)
@Scheduled
(
fixedRate
=
30000
)
public
void
refresh
()
throws
Exception
{
public
void
refresh
()
throws
Exception
{
long
start
=
System
.
currentTimeMillis
();
long
start
=
System
.
currentTimeMillis
();
AtomicLong
synCount
=
new
AtomicLong
();
AtomicLong
synCount
=
new
AtomicLong
();
try
{
try
{
log
.
info
(
"每5分钟刷新绿波优化下发数据..................."
);
log
.
info
(
"每5分钟刷新绿波优化下发数据..................."
);
List
<
GreenwaveInfoPO
>
greenwaveInfoPOList
=
greenwaveInfoMapper
.
selectAll
();
List
<
GreenwaveInfoPO
>
greenwaveInfoPOList
=
greenwaveInfoMapper
.
selectAll
();
List
<
GreenwaveInducesHist
>
greenwaveInducesHistss
=
greenwaveInducesHistService
.
list
();
for
(
GreenwaveInfoPO
greenwaveInfoPO
:
greenwaveInfoPOList
)
{
for
(
GreenwaveInfoPO
greenwaveInfoPO
:
greenwaveInfoPOList
)
{
AtomicBoolean
flag
=
new
AtomicBoolean
(
false
);
//是否已发布优化
AtomicBoolean
flag
=
new
AtomicBoolean
(
false
);
//是否已发布优化
AtomicReference
<
Integer
>
strategyId
=
new
AtomicReference
<
Integer
>(
0
);
AtomicReference
<
Integer
>
strategyId
=
new
AtomicReference
<
Integer
>(
0
);
//1、查询所有绿波带路口信息,获取路口下的绿波策略计划
//1、查询所有绿波带路口信息,获取路口下的绿波策略计划
List
<
GreenwaveCrossPO
>
greenwaveCrossList
=
greenwaveCrossMapper
.
selectByGreenwaveId
(
greenwaveInfoPO
.
getId
());
List
<
GreenwaveCrossPO
>
greenwaveCrossList
=
greenwaveCrossMapper
.
selectByGreenwaveId
(
greenwaveInfoPO
.
getId
());
greenwaveCrossList
.
stream
().
forEach
(
o
->
{
greenwaveCrossList
.
stream
().
forEach
(
o
->
{
//System.out.println("绿波路口--->"+
o.getGreenwaveName
()+"=="+o.getCrossId());
//System.out.println("绿波路口--->"+
greenwaveInfoPO.getId
()+"=="+o.getCrossId());
//创建路口策略列表
//创建路口策略列表
List
<
StrategyPlanInfoEntity
>
strategyPlanInfoEntityList
=
strategyPlanInfoMapper
.
selectByCrossId
(
o
.
getCrossId
());
List
<
StrategyPlanInfoEntity
>
strategyPlanInfoEntityList
=
strategyPlanInfoMapper
.
selectByCrossId
(
o
.
getCrossId
());
//strategyPlanInfoEntityList.stream().filter(x->Objects.nonNull(x.getCrossId()) && x.getCrossId().equals(o.getCrossId()) ).forEach(x->
//strategyPlanInfoEntityList.stream().filter(x->Objects.nonNull(x.getCrossId()) && x.getCrossId().equals(o.getCrossId()) ).forEach(x->
for
(
StrategyPlanInfoEntity
strategyPlanInfoEntity
:
strategyPlanInfoEntityList
)
{
for
(
StrategyPlanInfoEntity
strategyPlanInfoEntity
:
strategyPlanInfoEntityList
)
{
//System.out.println("策略计划--->"+x.getCrossId()+"=="+x
.getPlanDetails());
System
.
out
.
println
(
"策略计划--->"
+
greenwaveInfoPO
.
getId
()+
"=="
+
strategyPlanInfoEntity
.
getPlanDetails
());
//2、检查绿波时段,判断是否在绿波时段内,如果不在,则判断是否执行过上屏操作,如果执行过,则调用下屏服务(此出屏幕自动处理,无需逻辑)
//2、检查绿波时段,判断是否在绿波时段内,如果不在,则判断是否执行过上屏操作,如果执行过,则调用下屏服务(此出屏幕自动处理,无需逻辑)
//[{"dailyPlanId":1,"weeks":[1,2,3,4,5]}]
//[{"dailyPlanId":1,"weeks":[1,2,3,4,5]}]
List
<
StrategyControlDetailList
.
ExecutePlan
.
PlanDetail
>
planDetails
=
new
ArrayList
<>();
List
<
StrategyControlDetailList
.
ExecutePlan
.
PlanDetail
>
planDetails
=
new
ArrayList
<>();
...
@@ -151,8 +154,7 @@ public class InducesMonitorTask {
...
@@ -151,8 +154,7 @@ public class InducesMonitorTask {
// 判断当前时间是否在范围内
// 判断当前时间是否在范围内
if
(
LocalTime
.
now
().
isAfter
(
startTime
)
&&
LocalTime
.
now
().
isBefore
(
endTime
))
{
if
(
LocalTime
.
now
().
isAfter
(
startTime
)
&&
LocalTime
.
now
().
isBefore
(
endTime
))
{
System
.
out
.
println
(
"当前时间在范围内: "
+
LocalTime
.
now
());
System
.
out
.
println
(
"当前时间在范围内: "
+
LocalTime
.
now
());
//3、如果在绿波时段内,未上屏,则获取固定配时绿波信息
//System.out.println("绿波路口--->"+greenwaveInfoPO.getId()+"=="+o.getCrossId());
//4、获取优化绿波方案,如果不存在,则执行固定绿波方案
flag
.
set
(
true
);
flag
.
set
(
true
);
strategyId
.
set
(
p
.
getDailyPlanId
());
strategyId
.
set
(
p
.
getDailyPlanId
());
}
}
...
@@ -164,19 +166,21 @@ public class InducesMonitorTask {
...
@@ -164,19 +166,21 @@ public class InducesMonitorTask {
}
}
}
}
});
});
//3、如果在绿波时段内,未上屏,则获取固定配时绿波信息
//4、获取优化绿波方案,如果不存在,则执行固定绿波方案
//如果在绿波时段内,未上屏,则获取固定配时绿波信息
//如果在绿波时段内,未上屏,则获取固定配时绿波信息
if
(
flag
.
get
())
{
if
(
flag
.
get
())
{
List
<
StrategyGreenOptHistEntity
>
strategyGreenOptHistEntitiesList
=
strategyGreenOptHistMapper
.
selectByGreenId
(
String
.
valueOf
(
greenwaveInfoPO
.
getId
())).
stream
().
distinct
().
collect
(
Collectors
.
toList
());
List
<
StrategyGreenOptHistEntity
>
strategyGreenOptHistEntitiesList
=
strategyGreenOptHistMapper
.
selectByGreenId
(
String
.
valueOf
(
greenwaveInfoPO
.
getId
())).
stream
().
distinct
().
collect
(
Collectors
.
toList
());
if
(
Objects
.
nonNull
(
strategyGreenOptHistEntitiesList
))
{
if
(
Objects
.
nonNull
(
strategyGreenOptHistEntitiesList
))
{
for
(
StrategyGreenOptHistEntity
greenOptHistEntity
:
strategyGreenOptHistEntitiesList
)
{
for
(
StrategyGreenOptHistEntity
greenOptHistEntity
:
strategyGreenOptHistEntitiesList
)
{
LambdaQueryWrapper
<
GreenwaveInducesHist
>
greenwaveInducesHistQueryWrapper
=
new
LambdaQueryWrapper
<>();
//
LambdaQueryWrapper<GreenwaveInducesHist> greenwaveInducesHistQueryWrapper = new LambdaQueryWrapper<>();
greenwaveInducesHistQueryWrapper
.
eq
(
GreenwaveInducesHist:
:
getGreenId
,
greenwaveInfoPO
.
getId
());
//
greenwaveInducesHistQueryWrapper.eq(GreenwaveInducesHist::getGreenId, greenwaveInfoPO.getId());
greenwaveInducesHistQueryWrapper
.
eq
(
GreenwaveInducesHist:
:
getDir
,
getDir
(
greenOptHistEntity
.
getDir
()));
//
greenwaveInducesHistQueryWrapper.eq(GreenwaveInducesHist::getDir, getDir(greenOptHistEntity.getDir()));
List
<
GreenwaveInducesHist
>
greenwaveInducesHistList
=
greenwaveInducesHistService
.
list
(
greenwaveInducesHistQueryWrapper
);
List
<
GreenwaveInducesHist
>
greenwaveInducesHistList
=
greenwaveInducesHistss
.
stream
().
filter
(
g
->
g
.
getGreenId
().
equals
(
greenwaveInfoPO
.
getId
())
&&
g
.
getDir
().
equals
(
getDir
(
greenOptHistEntity
.
getDir
()))).
collect
(
Collectors
.
toList
()
);
GreenwaveInducesHist
greenwaveInducesHist
=
null
;
GreenwaveInducesHist
greenwaveInducesHist
=
null
;
if
(
Objects
.
isNull
(
greenwaveInducesHistList
)
||
greenwaveInducesHistList
.
size
()<
1
)
{
if
(
Objects
.
isNull
(
greenwaveInducesHistList
)
||
greenwaveInducesHistList
.
size
()<
1
)
{
greenwaveInducesHist
=
new
GreenwaveInducesHist
();
greenwaveInducesHist
=
new
GreenwaveInducesHist
();
greenwaveInducesHist
.
setCreateTime
(
new
Dat
e
());
greenwaveInducesHist
.
setCreateTime
(
greenOptHistEntity
.
getCreateTim
e
());
greenwaveInducesHist
.
setGreenId
(
greenwaveInfoPO
.
getId
());
greenwaveInducesHist
.
setGreenId
(
greenwaveInfoPO
.
getId
());
greenwaveInducesHist
.
setDir
(
getDir
(
greenOptHistEntity
.
getDir
()));
greenwaveInducesHist
.
setDir
(
getDir
(
greenOptHistEntity
.
getDir
()));
}
else
{
}
else
{
...
@@ -232,21 +236,21 @@ public class InducesMonitorTask {
...
@@ -232,21 +236,21 @@ public class InducesMonitorTask {
}
}
}
}
greenwaveInducesHist
.
setStatus
(
1
);
greenwaveInducesHist
.
setStatus
(
1
);
greenwaveInducesHist
.
setModifyTime
(
greenOptHistEntity
.
getCreateTime
());
}
}
}
catch
(
IOException
e
)
{
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
e
.
printStackTrace
();
}
catch
(
TemplateException
e
)
{
}
catch
(
TemplateException
e
)
{
log
.
info
(
"发送上屏信息异常"
+
e
.
getMessage
());
log
.
info
(
"发送上屏信息异常"
+
e
.
getMessage
());
}
}
greenwaveInducesHist
.
setModifyTime
(
greenOptHistEntity
.
getCreateTime
());
greenwaveInducesHistService
.
saveOrUpdate
(
greenwaveInducesHist
);
greenwaveInducesHistService
.
saveOrUpdate
(
greenwaveInducesHist
);
synCount
.
getAndIncrement
();
synCount
.
getAndIncrement
();
log
.
info
(
"同步绿波状态信息成功->"
+
greenwaveInfoPO
.
getName
()+
green
OptHistEntity
.
getDir
());
log
.
info
(
"同步绿波状态信息成功->"
+
greenwaveInfoPO
.
getName
()+
green
waveInducesHist
.
getDir
());
}
}
}
}
}
}
//如果没有绿波方案则调用下屏服务
//如果没有绿波方案则调用下屏服务
if
(!
flag
.
get
())
{
else
{
LambdaQueryWrapper
<
GreenwaveInducesHist
>
greenwaveInducesHistQueryWrapper
=
new
LambdaQueryWrapper
<>();
LambdaQueryWrapper
<
GreenwaveInducesHist
>
greenwaveInducesHistQueryWrapper
=
new
LambdaQueryWrapper
<>();
greenwaveInducesHistQueryWrapper
.
eq
(
GreenwaveInducesHist:
:
getGreenId
,
greenwaveInfoPO
.
getId
());
greenwaveInducesHistQueryWrapper
.
eq
(
GreenwaveInducesHist:
:
getGreenId
,
greenwaveInfoPO
.
getId
());
List
<
GreenwaveInducesHist
>
greenwaveInducesHistList
=
greenwaveInducesHistService
.
list
(
greenwaveInducesHistQueryWrapper
);
List
<
GreenwaveInducesHist
>
greenwaveInducesHistList
=
greenwaveInducesHistService
.
list
(
greenwaveInducesHistQueryWrapper
);
...
@@ -281,7 +285,7 @@ public class InducesMonitorTask {
...
@@ -281,7 +285,7 @@ public class InducesMonitorTask {
n
.
setStatus
(
0
);
n
.
setStatus
(
0
);
n
.
setModifyTime
(
new
Date
());
n
.
setModifyTime
(
new
Date
());
greenwaveInducesHistService
.
saveOrUpdate
(
n
);
greenwaveInducesHistService
.
saveOrUpdate
(
n
);
log
.
info
(
"同步绿波状态信息(下屏)->"
+
greenwaveInfoPO
.
getName
());
log
.
info
(
"同步绿波状态信息(下屏)->"
+
greenwaveInfoPO
.
getName
()
+
"####"
+
n
.
getDir
()
);
synCount
.
getAndIncrement
();
synCount
.
getAndIncrement
();
});
});
}
}
...
...
signal-optimize-service/src/main/java/net/wanji/opt/vo/GreenBeltKeyCrossFlowTimeVO.java
0 → 100644
View file @
c21f74ae
package
net
.
wanji
.
opt
.
vo
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.Date
;
/**
* @author duanruiming
* @date 2024/12/06 13:37
*/
@Data
@ApiModel
(
value
=
"优化监测-绿波关键路口流量绿信比实体"
)
public
class
GreenBeltKeyCrossFlowTimeVO
{
@ApiModelProperty
(
"路口编号"
)
private
String
crossId
;
@ApiModelProperty
(
"时间"
)
@JsonFormat
(
shape
=
JsonFormat
.
Shape
.
STRING
,
pattern
=
"HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
startTime
;
@ApiModelProperty
(
"干线方向"
)
private
String
dirName
;
@ApiModelProperty
(
"流量"
)
private
Integer
flow
;
@ApiModelProperty
(
"绿信比"
)
private
Double
greenTimeRatio
;
}
signal-optimize-service/src/main/java/net/wanji/opt/vo/GreenBeltSpeedWidthVO.java
View file @
c21f74ae
...
@@ -18,7 +18,9 @@ public class GreenBeltSpeedWidthVO {
...
@@ -18,7 +18,9 @@ public class GreenBeltSpeedWidthVO {
@ApiModelProperty
(
"时间"
)
@ApiModelProperty
(
"时间"
)
@JsonFormat
(
shape
=
JsonFormat
.
Shape
.
STRING
,
pattern
=
"HH:mm:ss"
,
timezone
=
"GMT+8"
)
@JsonFormat
(
shape
=
JsonFormat
.
Shape
.
STRING
,
pattern
=
"HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
Date
startTime
;
private
Date
startTime
;
@ApiModelProperty
(
"流量"
)
@ApiModelProperty
(
"干线方向"
)
private
String
dirName
;
@ApiModelProperty
(
"速度"
)
private
Double
speed
;
private
Double
speed
;
@ApiModelProperty
(
"带宽"
)
@ApiModelProperty
(
"带宽"
)
private
Double
width
;
private
Double
width
;
...
...
signal-optimize-service/src/main/java/net/wanji/opt/vo/GreenwaveRunMonitorVO.java
View file @
c21f74ae
...
@@ -15,4 +15,6 @@ public class GreenwaveRunMonitorVO {
...
@@ -15,4 +15,6 @@ public class GreenwaveRunMonitorVO {
private
Integer
avgSpeed
;
private
Integer
avgSpeed
;
@ApiModelProperty
(
value
=
"拥堵指数"
)
@ApiModelProperty
(
value
=
"拥堵指数"
)
private
Double
congestionIndex
;
private
Double
congestionIndex
;
@ApiModelProperty
(
value
=
"行程时间"
)
private
Integer
travelTime
;
}
}
wj-databus/src/main/resources/mapper/GreenwaveInfoMapper.xml
View file @
c21f74ae
...
@@ -52,9 +52,16 @@
...
@@ -52,9 +52,16 @@
<select
id=
"findByMap"
resultType=
"net.wanji.databus.dao.entity.GreenwaveInfoPO"
parameterType=
"java.util.Map"
>
<select
id=
"findByMap"
resultType=
"net.wanji.databus.dao.entity.GreenwaveInfoPO"
parameterType=
"java.util.Map"
>
SELECT
<include
refid=
"Base_Column_List"
></include>
SELECT
<include
refid=
"Base_Column_List"
></include>
FROM t_greenwave_info WHERE 1=1
FROM t_greenwave_info WHERE 1=1
<include
refid=
"sql_query"
/>
<if
test=
"keyword != null and keyword != ''"
>
<if
test=
"keyword != null and keyword != ''"
>
AND ( locate(#{keyword,jdbcType=VARCHAR}, `name`)>0 )
AND ( locate(#{keyword,jdbcType=VARCHAR}, `name`)>0 )
</if>
</if>
</select>
</select>
<sql
id=
"sql_query"
>
<if
test=
"greenId != null "
>
<![CDATA[ and `id` = #{greenId} ]]>
</if>
</sql>
</mapper>
</mapper>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment