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
e93ffaa0
Commit
e93ffaa0
authored
Apr 24, 2024
by
hanbing
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[update] 城市大脑-信号评价-评价指标
parent
ee5b973e
Changes
10
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
175 additions
and
17 deletions
+175
-17
MainlineEvaluateServiceImpl.java
...t/wanji/opt/service/impl/MainlineEvaluateServiceImpl.java
+31
-1
RunningEvaluateServiceImpl.java
...et/wanji/opt/service/impl/RunningEvaluateServiceImpl.java
+68
-9
MainlineListVO.java
...ervice/src/main/java/net/wanji/opt/vo/MainlineListVO.java
+3
-0
RunningEvaluateCrossEvaluateVO.java
...java/net/wanji/opt/vo/RunningEvaluateCrossEvaluateVO.java
+16
-0
StrategyAndMetricsEnum.java
...n/java/net/wanji/common/enums/StrategyAndMetricsEnum.java
+2
-1
CrossIdAndStartEndDateBO.java
...n/java/net/wanji/databus/bo/CrossIdAndStartEndDateBO.java
+5
-5
CustomDateDeserializer.java
...ain/java/net/wanji/databus/bo/CustomDateDeserializer.java
+26
-0
DateConverter.java
...bus/src/main/java/net/wanji/databus/bo/DateConverter.java
+18
-0
RunningEvaluateCrossListVO.java
...java/net/wanji/databus/vo/RunningEvaluateCrossListVO.java
+5
-0
CrossDataRealtimeMapper.xml
...bus/src/main/resources/mapper/CrossDataRealtimeMapper.xml
+1
-1
No files found.
signal-optimize-service/src/main/java/net/wanji/opt/service/impl/MainlineEvaluateServiceImpl.java
View file @
e93ffaa0
...
...
@@ -45,6 +45,7 @@ import java.util.stream.Collectors;
@Slf4j
@Service
public
class
MainlineEvaluateServiceImpl
implements
MainlineEvaluateService
{
private
final
GreenwaveRealtimeMapper
greenwaveRealtimeMapper
;
@Value
(
"${spring.kafka.bootstrap-servers}"
)
private
String
bootstrapServers
;
...
...
@@ -84,7 +85,7 @@ public class MainlineEvaluateServiceImpl implements MainlineEvaluateService {
@Qualifier
(
"baseCrossTurnInfoMapper"
)
BaseCrossTurnInfoMapper
baseCrossTurnInfoMapper
,
CrossBaseLaneInfoMapper
crossBaseLaneInfoMapper
,
@Qualifier
(
"laneInfoMapper"
)
LaneInfoMapper
laneInfoMapper
,
CrossDirDataHistMapper
crossDirDataHistMapper
,
CrossDataHistMapper
crossDataHistMapper
,
CrossTurnDataHistMapper
crossTurnDataHistMapper
,
CrossLaneDataHistMapper
crossLaneDataHistMapper
,
@Qualifier
(
"greenwaveInfoMapper"
)
GreenwaveInfoMapper
greenwaveInfoMapper
,
@Qualifier
(
"greenwaveHistMapper"
)
GreenwaveHistMapper
greenwaveHistMapper
,
@Qualifier
(
"greenwaveCrossMapper"
)
GreenwaveCrossMapper
greenwaveCrossMapper
,
@Qualifier
(
"baseCrossInfoMapper"
)
BaseCrossInfoMapper
baseCrossInfoMapper
,
@Qualifier
(
"greenwaveSceneMapper"
)
GreenwaveSceneMapper
greenwaveSceneMapper
,
@Qualifier
(
"sceneStrategyMapper"
)
SceneStrategyMapper
sceneStrategyMapper
,
@Qualifier
(
"strategyMapper"
)
StrategyMapper
strategyMapper
,
@Qualifier
(
"baseCrossSectionMapper"
)
BaseCrossSectionMapper
baseCrossSectionMapper
,
@Qualifier
(
"ridInfoMapper"
)
RidInfoMapper
ridInfoMapper
,
@Qualifier
(
"baseCrossPlanMapper"
)
BaseCrossPlanMapper
baseCrossPlanMapper
,
@Qualifier
(
"baseCrossSchemeMapper"
)
BaseCrossSchemeMapper
baseCrossSchemeMapper
,
@Qualifier
(
"greenwaveMergeMapper"
)
GreenwaveMergeMapper
greenwaveMergeMapper
)
{
CrossDirDataHistMapper
crossDirDataHistMapper
,
CrossDataHistMapper
crossDataHistMapper
,
CrossTurnDataHistMapper
crossTurnDataHistMapper
,
CrossLaneDataHistMapper
crossLaneDataHistMapper
,
@Qualifier
(
"greenwaveInfoMapper"
)
GreenwaveInfoMapper
greenwaveInfoMapper
,
@Qualifier
(
"greenwaveHistMapper"
)
GreenwaveHistMapper
greenwaveHistMapper
,
@Qualifier
(
"greenwaveCrossMapper"
)
GreenwaveCrossMapper
greenwaveCrossMapper
,
@Qualifier
(
"baseCrossInfoMapper"
)
BaseCrossInfoMapper
baseCrossInfoMapper
,
@Qualifier
(
"greenwaveSceneMapper"
)
GreenwaveSceneMapper
greenwaveSceneMapper
,
@Qualifier
(
"sceneStrategyMapper"
)
SceneStrategyMapper
sceneStrategyMapper
,
@Qualifier
(
"strategyMapper"
)
StrategyMapper
strategyMapper
,
@Qualifier
(
"baseCrossSectionMapper"
)
BaseCrossSectionMapper
baseCrossSectionMapper
,
@Qualifier
(
"ridInfoMapper"
)
RidInfoMapper
ridInfoMapper
,
@Qualifier
(
"baseCrossPlanMapper"
)
BaseCrossPlanMapper
baseCrossPlanMapper
,
@Qualifier
(
"baseCrossSchemeMapper"
)
BaseCrossSchemeMapper
baseCrossSchemeMapper
,
@Qualifier
(
"greenwaveMergeMapper"
)
GreenwaveMergeMapper
greenwaveMergeMapper
,
@Qualifier
(
"greenwaveRealtimeMapper"
)
GreenwaveRealtimeMapper
greenwaveRealtimeMapper
)
{
this
.
baseCrossDirInfoMapper
=
baseCrossDirInfoMapper
;
this
.
baseCrossTurnInfoMapper
=
baseCrossTurnInfoMapper
;
this
.
laneInfoMapper
=
laneInfoMapper
;
...
...
@@ -104,6 +105,7 @@ public class MainlineEvaluateServiceImpl implements MainlineEvaluateService {
this
.
baseCrossPlanMapper
=
baseCrossPlanMapper
;
this
.
baseCrossSchemeMapper
=
baseCrossSchemeMapper
;
this
.
greenwaveMergeMapper
=
greenwaveMergeMapper
;
this
.
greenwaveRealtimeMapper
=
greenwaveRealtimeMapper
;
}
@Override
...
...
@@ -283,6 +285,12 @@ public class MainlineEvaluateServiceImpl implements MainlineEvaluateService {
.
sum
();
int
round
=
(
int
)
(
Math
.
round
(
v
));
vo
.
setValue
(
round
);
}
else
if
(
Objects
.
equals
(
metricCode
,
StrategyAndMetricsEnum
.
Metrics
.
FLOW
.
getCode
()))
{
double
v
=
filteredList
.
stream
()
.
mapToDouble
(
CrossDataHistPOExt:
:
getFlow
)
.
sum
();
int
round
=
(
int
)
(
Math
.
round
(
v
));
vo
.
setValue
(
round
);
}
res
.
add
(
vo
);
...
...
@@ -388,6 +396,12 @@ public class MainlineEvaluateServiceImpl implements MainlineEvaluateService {
.
orElse
(
0.0
);
int
round
=
(
int
)
(
Math
.
round
(
v
*
100
));
vo
.
setValue
(
round
);
}
else
if
(
Objects
.
equals
(
metricCode
,
StrategyAndMetricsEnum
.
Metrics
.
FLOW
.
getCode
()))
{
double
v
=
filteredList
.
stream
()
.
mapToDouble
(
CrossDirDataHistPO:
:
getFlow
)
.
sum
();
int
round
=
(
int
)
(
Math
.
round
(
v
));
vo
.
setValue
(
round
);
}
res
.
add
(
vo
);
...
...
@@ -496,6 +510,12 @@ public class MainlineEvaluateServiceImpl implements MainlineEvaluateService {
.
orElse
(
0.0
);
int
round
=
(
int
)
(
Math
.
round
(
v
*
100
));
vo
.
setValue
(
round
);
}
else
if
(
Objects
.
equals
(
metricCode
,
StrategyAndMetricsEnum
.
Metrics
.
FLOW
.
getCode
()))
{
double
v
=
filteredList
.
stream
()
.
mapToDouble
(
CrossTurnDataHistPO:
:
getFlow
)
.
sum
();
int
round
=
(
int
)
(
Math
.
round
(
v
));
vo
.
setValue
(
round
);
}
res
.
add
(
vo
);
...
...
@@ -609,6 +629,12 @@ public class MainlineEvaluateServiceImpl implements MainlineEvaluateService {
.
orElse
(
0.0
);
int
round
=
(
int
)
(
Math
.
round
(
v
*
100
));
vo
.
setValue
(
round
);
}
else
if
(
Objects
.
equals
(
metricCode
,
StrategyAndMetricsEnum
.
Metrics
.
FLOW
.
getCode
()))
{
double
v
=
filteredList
.
stream
()
.
mapToDouble
(
CrossLaneDataHistPOExt:
:
getFlow
)
.
sum
();
int
round
=
(
int
)
(
Math
.
round
(
v
));
vo
.
setValue
(
round
);
}
res
.
add
(
vo
);
...
...
@@ -642,10 +668,14 @@ public class MainlineEvaluateServiceImpl implements MainlineEvaluateService {
mainlineListVO
.
setMainlineName
(
prefix
);
Integer
greenwaveId
=
greenwaveInfoPO
.
getId
();
GreenwaveRealtimePO
greenwaveRealtimePO
=
greenwaveRealtimeMapper
.
selectById
(
greenwaveId
);
mainlineListVO
.
setTrafficIndex
(
greenwaveRealtimePO
.
getTrafficIndex
());
setCrossListAndwkt
(
mainlineListVO
,
greenwaveId
);
res
.
add
(
mainlineListVO
);
}
res
.
sort
(
Comparator
.
comparingDouble
(
MainlineListVO:
:
getTrafficIndex
).
reversed
());
return
res
;
}
...
...
signal-optimize-service/src/main/java/net/wanji/opt/service/impl/RunningEvaluateServiceImpl.java
View file @
e93ffaa0
...
...
@@ -110,20 +110,20 @@ public class RunningEvaluateServiceImpl implements RunningEvaluateService {
@Override
public
List
<
RunningEvaluateCrossListVO
>
crossList
(
CrossNameBO
crossNameBO
)
{
String
crossName
=
crossNameBO
.
getCrossName
();
List
<
RunningEvaluateCrossListVO
>
crossDataRealtimePO
List
=
crossDataRealtimeMapper
.
selectByCrossName
(
crossName
);
for
(
RunningEvaluateCrossListVO
runningEvaluateCrossListVO
:
crossDataRealtimePO
List
)
{
Double
sturation
=
runningEvaluateCrossListVO
.
getSturation
();
runningEvaluateCrossListVO
.
setServiceLevel
(
CrossUtil
.
getServiceLevel
(
sturation
));
List
<
RunningEvaluateCrossListVO
>
vo
List
=
crossDataRealtimeMapper
.
selectByCrossName
(
crossName
);
for
(
RunningEvaluateCrossListVO
vo
:
vo
List
)
{
Double
sturation
=
vo
.
getSturation
();
vo
.
setServiceLevel
(
CrossUtil
.
getServiceLevel
(
sturation
));
// 路口经纬度
String
crossId
=
runningEvaluateCrossListVO
.
getCrossId
();
String
crossId
=
vo
.
getCrossId
();
BaseCrossInfoPO
baseCrossInfoPO
=
baseCrossInfoMapper
.
selectById
(
crossId
);
String
location
=
baseCrossInfoPO
.
getLocation
();
double
[]
lonLat
=
CrossUtil
.
getLonLat
(
location
);
runningEvaluateCrossListVO
.
setLongitude
(
lonLat
[
0
]);
runningEvaluateCrossListVO
.
setLatitude
(
lonLat
[
1
]);
vo
.
setLongitude
(
lonLat
[
0
]);
vo
.
setLatitude
(
lonLat
[
1
]);
}
// 按服务水平降序排序
List
<
RunningEvaluateCrossListVO
>
res
=
crossDataRealtimePO
List
.
stream
()
List
<
RunningEvaluateCrossListVO
>
res
=
vo
List
.
stream
()
.
sorted
(
Comparator
.
comparing
(
RunningEvaluateCrossListVO:
:
getSturation
).
reversed
())
.
collect
(
Collectors
.
toList
());
...
...
@@ -155,10 +155,58 @@ public class RunningEvaluateServiceImpl implements RunningEvaluateService {
List
<
CrossDataHistPO
>
congestionEventList
=
buildCongestionEvents
(
crossDataHistPOList
);
// 获取拥堵事件集合
vo
.
setCongestionTimes
(
congestionEventList
.
size
());
int
congestionSum
=
congestionEventList
.
stream
()
.
filter
(
Objects:
:
nonNull
)
.
map
(
CrossDataHistPO:
:
getDuration
)
.
filter
(
Objects:
:
nonNull
)
.
mapToInt
(
Integer:
:
intValue
)
.
sum
();
vo
.
setCongestionSum
(
congestionSum
);
List
<
CrossDataHistPO
>
unbalanceEventList
=
buildUnbalanceEvents
(
crossDataHistPOList
);
// 获取失衡事件集合
vo
.
setUnbalanceTimes
(
unbalanceEventList
.
size
());
int
unbalanceSum
=
unbalanceEventList
.
stream
()
.
filter
(
Objects:
:
nonNull
)
.
map
(
CrossDataHistPO:
:
getDuration
)
.
filter
(
Objects:
:
nonNull
)
.
mapToInt
(
Integer:
:
intValue
)
.
sum
();
vo
.
setUnbalanceSum
(
unbalanceSum
);
List
<
CrossDataHistPO
>
spilloverEventList
=
buildSpilloverEvents
(
crossDataHistPOList
);
// 获取溢出事件集合
vo
.
setSpilloverTimes
(
spilloverEventList
.
size
());
int
spilloverSum
=
spilloverEventList
.
stream
()
.
filter
(
Objects:
:
nonNull
)
.
map
(
CrossDataHistPO:
:
getDuration
)
.
filter
(
Objects:
:
nonNull
)
.
mapToInt
(
Integer:
:
intValue
)
.
sum
();
vo
.
setSpilloverSum
(
spilloverSum
);
// 相位空放指标
Date
startDate
=
bo
.
getStartDate
();
Date
endDate
=
bo
.
getEndDate
();
if
(
isZeros
(
endDate
))
{
endDate
=
DateUtil
.
offsetDay
(
endDate
,
1
);
// 包含最后一天
}
long
startTime
=
startDate
.
getTime
();
long
endTime
=
endDate
.
getTime
();
KafkaConsumerUtil
kafkaConsumerUtil
=
new
KafkaConsumerUtil
(
bootstrapServers
,
"empty-phase-evaluate"
);
List
<
PhaseEmptyResult
>
phaseEmptyResults
=
kafkaConsumerUtil
.
consumeEmptyPhaseForTimeRange
(
emptyPhaseTopic
,
0
,
startTime
,
endTime
);
int
emptyPhaseCount
=
(
int
)
phaseEmptyResults
.
stream
()
.
filter
(
result
->
result
!=
null
&&
crossId
.
equals
(
result
.
getCrossId
()))
.
count
();
int
emptyPhaseSum
=
phaseEmptyResults
.
stream
()
.
filter
(
result
->
result
!=
null
&&
crossId
.
equals
(
result
.
getCrossId
()))
.
map
(
PhaseEmptyResult:
:
getDuration
)
.
filter
(
Objects:
:
nonNull
)
.
mapToInt
(
Integer:
:
intValue
)
.
sum
();
vo
.
setEmptyPhaseTimes
(
emptyPhaseCount
);
vo
.
setEmptyPhaseSum
(
emptyPhaseSum
);
Integer
schemeProblems
=
calcSchemeProblems
(
congestionEventList
,
unbalanceEventList
,
spilloverEventList
,
crossId
);
// 计算方案问题
vo
.
setSchemeProblems
(
schemeProblems
);
...
...
@@ -178,7 +226,9 @@ public class RunningEvaluateServiceImpl implements RunningEvaluateService {
private
List
<
CrossDataHistPO
>
buildCrossDataHistPOList
(
CrossIdAndStartEndDateBO
bo
,
String
crossId
)
{
Date
startDate
=
bo
.
getStartDate
();
Date
endDate
=
bo
.
getEndDate
();
if
(
isZeros
(
endDate
))
{
endDate
=
DateUtil
.
offsetDay
(
endDate
,
1
);
// 包含最后一天
}
int
startStamp
=
(
int
)
(
startDate
.
getTime
()
/
1000
);
// 10位时间戳
int
endStamp
=
(
int
)
(
endDate
.
getTime
()
/
1000
);
List
<
CrossDataHistPO
>
crossDataHistPOList
=
crossDataHistMapper
.
selectByCrossIdAndStartEnd
(
...
...
@@ -186,6 +236,15 @@ public class RunningEvaluateServiceImpl implements RunningEvaluateService {
return
crossDataHistPOList
;
}
private
boolean
isZeros
(
Date
endDate
)
{
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTime
(
endDate
);
return
calendar
.
get
(
Calendar
.
HOUR_OF_DAY
)
==
0
&&
calendar
.
get
(
Calendar
.
MINUTE
)
==
0
&&
calendar
.
get
(
Calendar
.
SECOND
)
==
0
&&
calendar
.
get
(
Calendar
.
MILLISECOND
)
==
0
;
}
@Override
public
RunningEvaluateStatusVO
congestionStatus
(
CrossIdAndStartEndDateBO
bo
)
{
return
evaluateStatus
(
bo
,
CrossStatusEnum
.
CONGESTION
);
...
...
signal-optimize-service/src/main/java/net/wanji/opt/vo/MainlineListVO.java
View file @
e93ffaa0
...
...
@@ -24,4 +24,7 @@ public class MainlineListVO {
@ApiModelProperty
(
value
=
"干线坐标"
)
private
String
wkt
;
@ApiModelProperty
(
value
=
"干线拥堵指数"
)
private
Double
trafficIndex
;
}
signal-optimize-service/src/main/java/net/wanji/opt/vo/RunningEvaluateCrossEvaluateVO.java
View file @
e93ffaa0
...
...
@@ -13,14 +13,30 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor
@ApiModel
(
value
=
"RunningEvaluateCrossEvaluateVO"
,
description
=
"运行评价-路口评价"
)
public
class
RunningEvaluateCrossEvaluateVO
{
@ApiModelProperty
(
value
=
"服务水平"
)
String
serviceLevel
;
@ApiModelProperty
(
value
=
"拥堵次数"
)
Integer
congestionTimes
;
@ApiModelProperty
(
value
=
"拥堵时长"
)
Integer
congestionSum
;
@ApiModelProperty
(
value
=
"失衡次数"
)
Integer
unbalanceTimes
;
@ApiModelProperty
(
value
=
"失衡时长"
)
Integer
unbalanceSum
;
@ApiModelProperty
(
value
=
"溢出次数"
)
Integer
spilloverTimes
;
@ApiModelProperty
(
value
=
"溢出时长"
)
Integer
spilloverSum
;
@ApiModelProperty
(
value
=
"空放次数"
)
Integer
emptyPhaseTimes
;
@ApiModelProperty
(
value
=
"空放时长"
)
Integer
emptyPhaseSum
;
@ApiModelProperty
(
value
=
"方案问题"
)
Integer
schemeProblems
;
}
wj-common/src/main/java/net/wanji/common/enums/StrategyAndMetricsEnum.java
View file @
e93ffaa0
...
...
@@ -53,7 +53,8 @@ public class StrategyAndMetricsEnum {
UNCOORDINATE_PHASE_QUEUE
(
"17"
,
"非协调相位二次排队"
,
"%"
,
"uncoordinatePhaseQueue"
),
TRVAL_TIME
(
"18"
,
"干线行程时间"
,
"s"
,
"trvalTime"
),
TRAFFIC_INDEX
(
"19"
,
"拥堵指数"
,
""
,
"trafficIndex"
),
EMPTY_PHASE
(
"20"
,
"绿灯空放时长"
,
"m"
,
"emptyPhase"
);
EMPTY_PHASE
(
"20"
,
"绿灯空放时长"
,
"m"
,
"emptyPhase"
),
FLOW
(
"21"
,
"交通流量"
,
"辆"
,
"flow"
);
private
final
String
code
;
private
final
String
description
;
...
...
wj-databus/src/main/java/net/wanji/databus/bo/CrossIdAndStartEndDateBO.java
View file @
e93ffaa0
package
net
.
wanji
.
databus
.
bo
;
import
com.fasterxml.jackson.
annotation.JsonFormat
;
import
com.fasterxml.jackson.
databind.annotation.JsonDeserialize
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
...
...
@@ -11,11 +11,11 @@ public class CrossIdAndStartEndDateBO {
@ApiModelProperty
(
value
=
"路口ID"
)
private
String
crossId
;
@ApiModelProperty
(
value
=
"开始日期 yyyy-MM-dd"
)
@Json
Format
(
shape
=
JsonFormat
.
Shape
.
STRING
,
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
@ApiModelProperty
(
value
=
"开始日期 yyyy-MM-dd
HH:mm:ss
"
)
@Json
Deserialize
(
using
=
CustomDateDeserializer
.
class
)
private
Date
startDate
;
@ApiModelProperty
(
value
=
"结束日期 yyyy-MM-dd"
)
@Json
Format
(
shape
=
JsonFormat
.
Shape
.
STRING
,
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
@ApiModelProperty
(
value
=
"结束日期 yyyy-MM-dd
HH:mm:ss
"
)
@Json
Deserialize
(
using
=
CustomDateDeserializer
.
class
)
private
Date
endDate
;
}
wj-databus/src/main/java/net/wanji/databus/bo/CustomDateDeserializer.java
0 → 100644
View file @
e93ffaa0
package
net
.
wanji
.
databus
.
bo
;
import
com.fasterxml.jackson.core.JsonParser
;
import
com.fasterxml.jackson.databind.DeserializationContext
;
import
com.fasterxml.jackson.databind.deser.std.StdDeserializer
;
import
java.io.IOException
;
import
java.text.ParseException
;
import
java.util.Date
;
public
class
CustomDateDeserializer
extends
StdDeserializer
<
Date
>
{
public
CustomDateDeserializer
()
{
super
(
Date
.
class
);
}
@Override
public
Date
deserialize
(
JsonParser
p
,
DeserializationContext
ctxt
)
throws
IOException
{
String
date
=
p
.
getText
();
try
{
return
DateConverter
.
parseDate
(
date
);
}
catch
(
ParseException
e
)
{
throw
new
RuntimeException
(
e
);
}
}
}
\ No newline at end of file
wj-databus/src/main/java/net/wanji/databus/bo/DateConverter.java
0 → 100644
View file @
e93ffaa0
package
net
.
wanji
.
databus
.
bo
;
import
java.text.ParseException
;
import
java.text.SimpleDateFormat
;
import
java.util.Date
;
public
class
DateConverter
{
public
static
Date
parseDate
(
String
dateString
)
throws
ParseException
{
SimpleDateFormat
formatter
;
if
(
dateString
.
contains
(
" "
))
{
formatter
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
}
else
{
formatter
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
}
return
formatter
.
parse
(
dateString
);
}
}
wj-databus/src/main/java/net/wanji/databus/vo/RunningEvaluateCrossListVO.java
View file @
e93ffaa0
...
...
@@ -6,6 +6,8 @@ import io.swagger.annotations.ApiModelProperty;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.math.BigDecimal
;
/**
* @author Kent HAN
* @date 2023/2/9 8:38
...
...
@@ -34,4 +36,7 @@ public class RunningEvaluateCrossListVO {
@ApiModelProperty
(
value
=
"路口纬度"
)
private
Double
latitude
;
@ApiModelProperty
(
value
=
"拥堵指数"
)
private
BigDecimal
congestionIndex
;
}
wj-databus/src/main/resources/mapper/CrossDataRealtimeMapper.xml
View file @
e93ffaa0
...
...
@@ -106,7 +106,7 @@
</select>
<select
id=
"selectByCrossName"
resultType=
"net.wanji.databus.vo.RunningEvaluateCrossListVO"
>
select t1.cross_id as crossId, t1.sturation as sturation, t2.name as crossName
select t1.cross_id as crossId, t1.sturation as sturation, t2.name as crossName
, t1.congestion_index
from t_cross_data_realtime t1 join t_base_cross_info t2 on t1.cross_id = t2.id and t2.is_signal = 1
<where>
<if
test=
"crossName != null and crossName != ''"
>
...
...
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