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
86d97bc5
Commit
86d97bc5
authored
Mar 02, 2023
by
duanruiming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[add] 路口优化->手动优化方案恢复
parent
c5476999
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
45 additions
and
13 deletions
+45
-13
SignalCommandOptController.java
.../controller/signalcontrol/SignalCommandOptController.java
+12
-1
CrossOptimizeServiceImpl.java
.../net/wanji/opt/service/impl/CrossOptimizeServiceImpl.java
+15
-11
FeignProxyService.java
...et/wanji/opt/service/signalcontrol/FeignProxyService.java
+1
-0
FeignProxyServiceImpl.java
...opt/service/signalcontrol/impl/FeignProxyServiceImpl.java
+16
-1
SchemeOptSendVO.java
...rvice/src/main/java/net/wanji/opt/vo/SchemeOptSendVO.java
+1
-0
No files found.
signal-optimize-service/src/main/java/net/wanji/opt/controller/signalcontrol/SignalCommandOptController.java
View file @
86d97bc5
...
...
@@ -14,13 +14,14 @@ import org.springframework.web.bind.annotation.RequestBody;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.validation.constraints.NotBlank
;
import
javax.ws.rs.core.MediaType
;
/**
* @author duanruiming
* @date 2023/03/01 20:44
*/
@Api
(
value
=
"SignalCommandOptController"
,
description
=
"
手动优化数据下发服务
"
)
@Api
(
value
=
"SignalCommandOptController"
,
description
=
"
信号优化
"
)
@RequestMapping
(
"/signalControl"
)
@RestController
public
class
SignalCommandOptController
{
...
...
@@ -38,4 +39,14 @@ public class SignalCommandOptController {
return
jsonViewObject
;
}
@ApiOperation
(
value
=
"手动优化方案恢复"
,
notes
=
"优化方案恢复"
,
response
=
JsonViewObject
.
class
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@PostMapping
(
value
=
"/schemeOptRestore"
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
JsonViewObject
.
class
)})
public
JsonViewObject
schemeOptRestore
(
@RequestBody
@NotBlank
String
crossId
)
throws
Exception
{
JsonViewObject
jsonViewObject
=
feignProxyService
.
schemeOptRestore
(
crossId
);
return
jsonViewObject
;
}
}
signal-optimize-service/src/main/java/net/wanji/opt/service/impl/CrossOptimizeServiceImpl.java
View file @
86d97bc5
...
...
@@ -23,8 +23,6 @@ import net.wanji.opt.po.base.CrossSchemeOptLogPO;
import
net.wanji.opt.po.base.CrossSchemePO
;
import
net.wanji.opt.po.trend.CrossDataRealtimePO
;
import
net.wanji.opt.service.CrossOptimizeService
;
import
net.wanji.opt.service.CrossSchedulesService
;
import
net.wanji.opt.service.CrossSchemeService
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Value
;
...
...
@@ -32,6 +30,7 @@ import org.springframework.stereotype.Service;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.util.CollectionUtils
;
import
javax.annotation.PostConstruct
;
import
javax.annotation.Resource
;
import
java.time.LocalDateTime
;
import
java.time.ZoneOffset
;
...
...
@@ -47,10 +46,6 @@ import java.util.stream.Collectors;
@Slf4j
public
class
CrossOptimizeServiceImpl
implements
CrossOptimizeService
{
@Resource
CrossSchemeService
crossSchemeService
;
@Resource
CrossSchedulesService
crossSchedulesService
;
@Resource
CrossPhaseMapper
crossPhaseMapper
;
@Resource
...
...
@@ -79,6 +74,17 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
static
Set
<
String
>
CROSS_OPT
=
new
HashSet
<>();
// 记录已优化的路口
/**
* 解决静态方法中不能使用mapper
*/
private
static
CrossOptimizeServiceImpl
crossOptimizeService
;
@PostConstruct
public
void
init
()
{
crossOptimizeService
=
this
;
crossOptimizeService
.
crossPhaseMapper
=
this
.
crossPhaseMapper
;
crossOptimizeService
.
crossSchemeMapper
=
this
.
crossSchemeMapper
;
}
@Override
@Transactional
public
String
realtimeOptimize
(
List
<
CrossDataRealtimePO
>
abnormalCrossList
,
List
<
CrossDataRealtimePO
>
crossDataRealtimePOList
)
{
...
...
@@ -268,11 +274,9 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
}
else
{
log
.
error
(
"当前拥堵路口: {}, 实时监控优化上游路口: {}时,未获取到上游路口的实时转向数据!"
,
crossId
,
startCrossId
);
}
}
}
}
}
}
...
...
@@ -482,7 +486,7 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
* @param phaseTimeOptResultMap
* @return
*/
p
rivate
SchemeSendVO
getSchemeSendVO
(
String
crossId
,
Map
<
String
,
CrossPhaseDTO
>
phaseMap
,
Map
<
String
,
Integer
>
phaseTimeOptResultMap
)
throws
Exception
{
p
ublic
static
SchemeSendVO
getSchemeSendVO
(
String
crossId
,
Map
<
String
,
CrossPhaseDTO
>
phaseMap
,
Map
<
String
,
Integer
>
phaseTimeOptResultMap
)
throws
Exception
{
String
key
=
String
.
join
(
Constants
.
SystemParam
.
SEPARATOR_UNDER_LINE
,
crossId
,
"1"
,
"s"
);
CrossPhaseDTO
crossPhaseDTO
=
phaseMap
.
get
(
key
);
if
(
Objects
.
isNull
(
crossPhaseDTO
))
{
...
...
@@ -491,8 +495,8 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
}
Integer
schemeId
=
crossPhaseDTO
.
getSchemeId
();
List
<
CrossSchemePO
>
crossSchemePOS
=
crossSchemeMapper
.
listCrossSchemeInfo
(
crossId
,
null
,
schemeId
);
List
<
CrossPhasePO
>
crossPhasePOS
=
crossPhaseMapper
.
listCrossPhase
(
crossId
,
String
.
valueOf
(
schemeId
));
List
<
CrossSchemePO
>
crossSchemePOS
=
cross
OptimizeService
.
cross
SchemeMapper
.
listCrossSchemeInfo
(
crossId
,
null
,
schemeId
);
List
<
CrossPhasePO
>
crossPhasePOS
=
cross
OptimizeService
.
cross
PhaseMapper
.
listCrossPhase
(
crossId
,
String
.
valueOf
(
schemeId
));
Map
<
Integer
,
List
<
CrossPhasePO
>>
ringNoPhasePOMap
=
crossPhasePOS
.
stream
().
collect
(
Collectors
.
groupingBy
(
CrossPhasePO:
:
getRingNo
));
SchemeSendVO
schemeSendVO
=
new
SchemeSendVO
();
...
...
signal-optimize-service/src/main/java/net/wanji/opt/service/signalcontrol/FeignProxyService.java
View file @
86d97bc5
...
...
@@ -9,4 +9,5 @@ import net.wanji.opt.vo.SchemeOptSendVO;
*/
public
interface
FeignProxyService
{
JsonViewObject
schemeOptSend
(
SchemeOptSendVO
schemeOptSendVO
)
throws
Exception
;
JsonViewObject
schemeOptRestore
(
String
crossId
)
throws
Exception
;
}
signal-optimize-service/src/main/java/net/wanji/opt/service/signalcontrol/impl/FeignProxyServiceImpl.java
View file @
86d97bc5
...
...
@@ -20,6 +20,8 @@ import java.time.LocalDateTime;
import
java.time.ZoneOffset
;
import
java.util.*
;
import
static
net
.
wanji
.
opt
.
service
.
impl
.
CrossOptimizeServiceImpl
.
getSchemeSendVO
;
/**
* @author duanruiming
* @date 2023/03/02 9:11
...
...
@@ -43,7 +45,7 @@ public class FeignProxyServiceImpl implements FeignProxyService {
JsonViewObject
jsonViewObject
=
utcFeignClients
.
schemeSend
(
schemeSendVO
);
if
(
Objects
.
isNull
(
jsonViewObject
)
||
jsonViewObject
.
getCode
()
!=
200
)
{
log
.
error
(
"实时监控路口优化方案下发远程调用异常!"
,
jsonViewObject
);
throw
new
Exception
(
);
return
jsonViewObject
.
fail
(
"手动下发优化方案,UTC服务调用异常"
);
}
// 将优化记录插入方案优化记录表
...
...
@@ -52,6 +54,19 @@ public class FeignProxyServiceImpl implements FeignProxyService {
return
jsonViewObject
.
success
(
"手动下发优化方案成功"
);
}
@Override
public
JsonViewObject
schemeOptRestore
(
String
crossId
)
throws
Exception
{
// 下发原始方案
Map
<
String
,
CrossPhaseDTO
>
phaseMap
=
phaseDirTurnCache
.
getPhaseDirTurnMap
();
SchemeSendVO
schemeSendVO
=
getSchemeSendVO
(
crossId
,
phaseMap
,
Collections
.
EMPTY_MAP
);
JsonViewObject
jsonViewObject
=
utcFeignClients
.
schemeSend
(
schemeSendVO
);
if
(
Objects
.
isNull
(
jsonViewObject
)
||
jsonViewObject
.
getCode
()
!=
200
)
{
log
.
error
(
"实时监控路口优化方案恢复远程调用异常!"
,
jsonViewObject
);
return
jsonViewObject
.
fail
(
"手动恢复优化方案,UTC服务调用异常"
);
}
return
null
;
}
/**
* 获取方案优化数据,插入到数据库
*
...
...
signal-optimize-service/src/main/java/net/wanji/opt/vo/SchemeOptSendVO.java
View file @
86d97bc5
...
...
@@ -25,6 +25,7 @@ public class SchemeOptSendVO extends SchemeSendVO {
@ApiModelProperty
(
value
=
"是否被关联调整: 1-否; 0-是"
)
private
String
relationFlag
;
@ApiModelProperty
(
value
=
"关联路口方向编号"
)
@javax
.
validation
.
constraints
.
Pattern
(
regexp
=
"^[A-za-z0-9]{11}$"
,
message
=
"路口编号只能包含英文、数字,必须11个字符"
)
private
String
relationCrossId
;
@ApiModelProperty
(
value
=
"相位号-相位调整时间map"
)
@NotEmpty
...
...
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