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
f99cb8d9
Commit
f99cb8d9
authored
Mar 10, 2023
by
hanbing
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[add] 信号评价,路口详情
parent
67e21c6b
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
194 additions
and
1 deletion
+194
-1
EvaluateController.java
...ain/java/net/wanji/opt/controller/EvaluateController.java
+46
-0
EvaluateService.java
.../src/main/java/net/wanji/opt/service/EvaluateService.java
+14
-0
EvaluateServiceImpl.java
.../java/net/wanji/opt/service/impl/EvaluateServiceImpl.java
+88
-0
EvaluateCrossDetailVO.java
...src/main/java/net/wanji/opt/vo/EvaluateCrossDetailVO.java
+45
-0
OptEffectVO.java
...e-service/src/main/java/net/wanji/opt/vo/OptEffectVO.java
+1
-1
No files found.
signal-optimize-service/src/main/java/net/wanji/opt/controller/EvaluateController.java
0 → 100644
View file @
f99cb8d9
package
net
.
wanji
.
opt
.
controller
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiResponse
;
import
io.swagger.annotations.ApiResponses
;
import
net.wanji.common.dto.CrossIdDTO
;
import
net.wanji.common.framework.rest.JsonViewObject
;
import
net.wanji.opt.service.EvaluateService
;
import
net.wanji.opt.vo.EvaluateCrossDetailVO
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.ws.rs.core.MediaType
;
/**
* 信号评价
*
* @author Kent HAN
*/
@Api
(
value
=
"EvaluateController"
,
description
=
"信号评价"
)
@RequestMapping
(
"/evaluate"
)
@RestController
public
class
EvaluateController
{
private
final
EvaluateService
evaluateService
;
public
EvaluateController
(
EvaluateService
evaluateService
)
{
this
.
evaluateService
=
evaluateService
;
}
@ApiOperation
(
value
=
"路口详情"
,
notes
=
"路口详情"
,
response
=
JsonViewObject
.
class
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@PostMapping
(
value
=
"/evaluateCrossDetail"
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
EvaluateCrossDetailVO
.
class
),
})
public
JsonViewObject
evaluateCrossDetail
(
@RequestBody
CrossIdDTO
crossIdDTO
)
{
EvaluateCrossDetailVO
evaluateCrossDetailVO
=
evaluateService
.
evaluateCrossDetail
(
crossIdDTO
);
return
JsonViewObject
.
newInstance
().
success
(
evaluateCrossDetailVO
);
}
}
\ No newline at end of file
signal-optimize-service/src/main/java/net/wanji/opt/service/EvaluateService.java
0 → 100644
View file @
f99cb8d9
package
net
.
wanji
.
opt
.
service
;
import
net.wanji.common.dto.CrossIdDTO
;
import
net.wanji.opt.vo.EvaluateCrossDetailVO
;
/**
* @author hanbing
* @date 2023/1/12 15:12
* @desc 信号评价接口服务
*/
public
interface
EvaluateService
{
EvaluateCrossDetailVO
evaluateCrossDetail
(
CrossIdDTO
crossIdDTO
);
}
signal-optimize-service/src/main/java/net/wanji/opt/service/impl/EvaluateServiceImpl.java
0 → 100644
View file @
f99cb8d9
package
net
.
wanji
.
opt
.
service
.
impl
;
import
cn.hutool.core.collection.CollectionUtil
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.google.gson.Gson
;
import
com.google.gson.GsonBuilder
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.common.dto.CrossIdDTO
;
import
net.wanji.opt.dao.mapper.CrossInfoMapper
;
import
net.wanji.opt.dao.mapper.CrossSchemeOptLogMapper
;
import
net.wanji.opt.dao.mapper.trend.CrossDataRealtimeMapper
;
import
net.wanji.opt.dto.OptDataExtend
;
import
net.wanji.opt.po.base.CrossInfoPO
;
import
net.wanji.opt.po.base.CrossSchemeOptLogPO
;
import
net.wanji.opt.po.trend.CrossDataRealtimePO
;
import
net.wanji.opt.service.EvaluateService
;
import
net.wanji.opt.vo.EvaluateCrossDetailVO
;
import
org.springframework.stereotype.Service
;
import
java.util.Date
;
import
java.util.List
;
/**
* @author Kent HAN
* @date 2023/3/10 10:47
*/
@Service
@Slf4j
public
class
EvaluateServiceImpl
implements
EvaluateService
{
private
final
CrossInfoMapper
crossInfoMapper
;
private
final
CrossSchemeOptLogMapper
crossSchemeOptLogMapper
;
private
final
CrossDataRealtimeMapper
crossDataRealtimeMapper
;
private
Gson
gson
=
new
GsonBuilder
().
setDateFormat
(
"yyyy-MM-dd HH:mm:ss"
).
create
();
public
EvaluateServiceImpl
(
CrossInfoMapper
crossInfoMapper
,
CrossSchemeOptLogMapper
crossSchemeOptLogMapper
,
CrossDataRealtimeMapper
crossDataRealtimeMapper
)
{
this
.
crossInfoMapper
=
crossInfoMapper
;
this
.
crossSchemeOptLogMapper
=
crossSchemeOptLogMapper
;
this
.
crossDataRealtimeMapper
=
crossDataRealtimeMapper
;
}
@Override
public
EvaluateCrossDetailVO
evaluateCrossDetail
(
CrossIdDTO
crossIdDTO
)
{
EvaluateCrossDetailVO
evaluateCrossDetailVO
=
new
EvaluateCrossDetailVO
();
String
crossId
=
crossIdDTO
.
getCrossId
();
CrossInfoPO
crossInfoPO
=
crossInfoMapper
.
selectById
(
crossId
);
String
crossName
=
crossInfoPO
.
getName
();
evaluateCrossDetailVO
.
setCrossName
(
crossName
);
fillOptData
(
evaluateCrossDetailVO
,
crossId
);
fillRealtimeData
(
evaluateCrossDetailVO
,
crossId
);
return
evaluateCrossDetailVO
;
}
private
void
fillRealtimeData
(
EvaluateCrossDetailVO
evaluateCrossDetailVO
,
String
crossId
)
{
CrossDataRealtimePO
crossDataRealtimePO
=
crossDataRealtimeMapper
.
selectByCrossId
(
crossId
);
evaluateCrossDetailVO
.
setSceneStartTime
(
crossDataRealtimePO
.
getStartTime
());
evaluateCrossDetailVO
.
setDuration
(
crossDataRealtimePO
.
getDuration
());
// todo 服务水平定义
evaluateCrossDetailVO
.
setServiceLevel
(
"D"
);
evaluateCrossDetailVO
.
setFlow
(
crossDataRealtimePO
.
getFlow
());
evaluateCrossDetailVO
.
setLength
(
crossDataRealtimePO
.
getQueueLength
());
evaluateCrossDetailVO
.
setStopTimes
(
crossDataRealtimePO
.
getStopTimes
());
}
private
void
fillOptData
(
EvaluateCrossDetailVO
evaluateCrossDetailVO
,
String
crossId
)
{
// 选择数据批次时间最大的记录
List
<
CrossSchemeOptLogPO
>
maxList
=
crossSchemeOptLogMapper
.
selectMaxByCrossId
(
crossId
);
if
(
CollectionUtil
.
isEmpty
(
maxList
))
{
throw
new
RuntimeException
(
"没有该路口优化日志数据"
);
}
CrossSchemeOptLogPO
crossSchemeOptLogPO
=
maxList
.
get
(
0
);
// 解析dataExtend
String
dataExtend
=
crossSchemeOptLogPO
.
getDataExtend
();
OptDataExtend
optDataExtend
=
gson
.
fromJson
(
dataExtend
,
OptDataExtend
.
class
);
evaluateCrossDetailVO
.
setSceneName
(
optDataExtend
.
getSceneName
());
evaluateCrossDetailVO
.
setStrategyName
(
optDataExtend
.
getStrategyName
());
evaluateCrossDetailVO
.
setIdeaName
(
optDataExtend
.
getIdeaName
());
evaluateCrossDetailVO
.
setOptStartTime
(
crossSchemeOptLogPO
.
getStartTime
());
Date
endTime
=
crossSchemeOptLogPO
.
getEndTime
();
if
(
ObjectUtil
.
isEmpty
(
endTime
))
{
evaluateCrossDetailVO
.
setOptStatus
(
2
);
}
else
{
evaluateCrossDetailVO
.
setOptStatus
(
1
);
}
}
}
signal-optimize-service/src/main/java/net/wanji/opt/vo/EvaluateCrossDetailVO.java
0 → 100644
View file @
f99cb8d9
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
lombok.NoArgsConstructor
;
import
java.util.Date
;
/**
* @author Kent HAN
* @date 2023/2/9 8:38
*/
@Data
@NoArgsConstructor
@ApiModel
(
value
=
"EvaluateCrossDetailVO"
,
description
=
"信号评价路口详情"
)
public
class
EvaluateCrossDetailVO
{
@ApiModelProperty
(
value
=
"路口名称"
)
private
String
crossName
;
@ApiModelProperty
(
value
=
"当前场景"
)
private
String
sceneName
;
@ApiModelProperty
(
value
=
"优化策略"
)
private
String
strategyName
;
@ApiModelProperty
(
value
=
"优化方法"
)
private
String
ideaName
;
@ApiModelProperty
(
value
=
"场景开始时间"
)
@JsonFormat
(
shape
=
JsonFormat
.
Shape
.
STRING
,
pattern
=
"yyyy/MM/dd HH:mm"
,
timezone
=
"GMT+8"
)
private
Date
sceneStartTime
;
@ApiModelProperty
(
value
=
"持续时间(单位:分钟)"
)
private
Integer
duration
;
@ApiModelProperty
(
value
=
"优化开始时间"
)
@JsonFormat
(
shape
=
JsonFormat
.
Shape
.
STRING
,
pattern
=
"yyyy/MM/dd HH:mm"
,
timezone
=
"GMT+8"
)
private
Date
optStartTime
;
@ApiModelProperty
(
value
=
"优化状态 1已完成 2持续优化"
)
Integer
optStatus
;
@ApiModelProperty
(
value
=
"服务水平"
)
String
serviceLevel
;
@ApiModelProperty
(
value
=
"路口流量"
)
private
Integer
flow
;
@ApiModelProperty
(
value
=
"排队长度"
)
private
Double
length
;
@ApiModelProperty
(
value
=
"停车次数(次)"
)
private
Double
stopTimes
;
}
signal-optimize-service/src/main/java/net/wanji/opt/vo/OptEffectVO.java
View file @
f99cb8d9
...
@@ -28,7 +28,7 @@ public class OptEffectVO {
...
@@ -28,7 +28,7 @@ public class OptEffectVO {
@ApiModelProperty
(
value
=
"优化开始时间 格式2023-03-02 10:10"
)
@ApiModelProperty
(
value
=
"优化开始时间 格式2023-03-02 10:10"
)
@JsonFormat
(
shape
=
JsonFormat
.
Shape
.
STRING
,
pattern
=
"yyyy-MM-dd HH:mm"
,
timezone
=
"GMT+8"
)
@JsonFormat
(
shape
=
JsonFormat
.
Shape
.
STRING
,
pattern
=
"yyyy-MM-dd HH:mm"
,
timezone
=
"GMT+8"
)
Date
optStartTime
;
Date
optStartTime
;
@ApiModelProperty
(
value
=
"状态 1已完成 2
优化中
"
)
@ApiModelProperty
(
value
=
"状态 1已完成 2
持续优化
"
)
Integer
status
;
Integer
status
;
@ApiModelProperty
(
value
=
"拥堵指数延误折线图"
)
@ApiModelProperty
(
value
=
"拥堵指数延误折线图"
)
List
<
IndexDelay
>
indexDelayList
;
List
<
IndexDelay
>
indexDelayList
;
...
...
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