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
87be969f
Commit
87be969f
authored
Apr 04, 2025
by
yourName
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
海南分支
parent
d5fa84c4
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
97 additions
and
85 deletions
+97
-85
pom.xml
signal-optimize-service/pom.xml
+12
-12
SignalCommandOptController.java
.../controller/signalcontrol/SignalCommandOptController.java
+3
-7
TrendControllerV2.java
...in/java/net/wanji/opt/controllerv2/TrendControllerV2.java
+2
-2
DiagnoServiceImpl.java
...in/java/net/wanji/opt/service/impl/DiagnoServiceImpl.java
+5
-2
FeignProxyServiceImpl.java
...opt/service/signalcontrol/impl/FeignProxyServiceImpl.java
+67
-57
TrendServiceV2Impl.java
...va/net/wanji/opt/servicev2/implv2/TrendServiceV2Impl.java
+3
-2
bootstrap-docker.yaml
...optimize-service/src/main/resources/bootstrap-docker.yaml
+1
-1
bootstrap.yaml
signal-optimize-service/src/main/resources/bootstrap.yaml
+1
-1
SchemeOptSendVO.java
...s/src/main/java/net/wanji/databus/vo/SchemeOptSendVO.java
+2
-0
SchemeSendVO.java
...abus/src/main/java/net/wanji/databus/vo/SchemeSendVO.java
+1
-1
No files found.
signal-optimize-service/pom.xml
View file @
87be969f
...
...
@@ -27,10 +27,10 @@
<groupId>
org.springframework.cloud
</groupId>
<artifactId>
spring-cloud-starter-loadbalancer
</artifactId>
</dependency>
<
dependency
>
<
groupId>
com.github.xiaoymin
</groupId
>
<
artifactId>
knife4j-spring-boot-starter
</artifactId
>
<
/dependency
>
<
!--<dependency>--
>
<
!--<groupId>com.github.xiaoymin</groupId>--
>
<
!--<artifactId>knife4j-spring-boot-starter</artifactId>--
>
<
!--</dependency>--
>
<!-- easyexcel导出 -->
<dependency>
<groupId>
com.alibaba
</groupId>
...
...
@@ -83,10 +83,10 @@
<version>
${mybatis-plus-version}
</version>
</dependency>
<!-- MP相关 end -->
<
dependency
>
<
groupId>
org.springframework.boot
</groupId
>
<
artifactId>
spring-boot-starter-freemarker
</artifactId
>
<
/dependency
>
<
!--<dependency>--
>
<
!--<groupId>org.springframework.boot</groupId>--
>
<
!--<artifactId>spring-boot-starter-freemarker</artifactId>--
>
<
!--</dependency>--
>
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
druid-spring-boot-starter
</artifactId>
...
...
@@ -155,10 +155,10 @@
</dependency>
<!--swagger -start-->
<dependency>
<groupId>
com.github.xiaoymin
</groupId>
<artifactId>
knife4j-spring-boot-starter
</artifactId>
<version>
2.0.4
</version>
</dependency>
<groupId>
com.github.xiaoymin
</groupId>
<artifactId>
knife4j-spring-boot-starter
</artifactId>
<version>
2.0.4
</version>
</dependency>
<dependency>
<groupId>
com.hikvision.ga
</groupId>
<artifactId>
artemis-http-client
</artifactId>
...
...
signal-optimize-service/src/main/java/net/wanji/opt/controller/signalcontrol/SignalCommandOptController.java
View file @
87be969f
...
...
@@ -15,10 +15,7 @@ import net.wanji.databus.vo.SchemeOptSendVO;
import
net.wanji.opt.service.signalcontrol.FeignProxyService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.validation.annotation.Validated
;
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
org.springframework.web.bind.annotation.*
;
import
javax.validation.Valid
;
import
javax.validation.constraints.NotBlank
;
...
...
@@ -50,10 +47,9 @@ public class SignalCommandOptController {
@AspectLog
(
description
=
"诊断优化手动优化方案恢复"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
UPDATE
)
@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
)
@GetMapping
(
value
=
"/schemeOptRestore"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
JsonViewObject
.
class
)})
public
JsonViewObject
schemeOptRestore
(
@Request
Body
@NotBlank
String
crossId
)
throws
Exception
{
public
JsonViewObject
schemeOptRestore
(
@Request
Param
(
required
=
true
)
String
crossId
)
throws
Exception
{
JsonViewObject
jsonViewObject
=
feignProxyService
.
schemeOptRestore
(
crossId
);
return
jsonViewObject
;
}
...
...
signal-optimize-service/src/main/java/net/wanji/opt/controllerv2/TrendControllerV2.java
View file @
87be969f
...
...
@@ -241,10 +241,10 @@ public class TrendControllerV2 {
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
String
.
class
),
})
public
JsonViewObject
optStrategyResultInfo
(
String
i
d
,
String
date
)
throws
Exception
{
public
JsonViewObject
optStrategyResultInfo
(
String
crossI
d
,
String
date
)
throws
Exception
{
OptStrategyResultInfoVO
result
=
new
OptStrategyResultInfoVO
();
try
{
result
=
trendServiceV2
.
optStrategyResultInfo
(
i
d
,
date
);
result
=
trendServiceV2
.
optStrategyResultInfo
(
crossI
d
,
date
);
}
catch
(
Exception
e
)
{
log
.
error
(
"态势监测-策略推荐-优化策略:"
,
e
);
JsonViewObject
.
newInstance
().
success
(
result
,
""
);
...
...
signal-optimize-service/src/main/java/net/wanji/opt/service/impl/DiagnoServiceImpl.java
View file @
87be969f
...
...
@@ -17,6 +17,7 @@ import net.wanji.databus.bo.CrossIdAndSchemeIdBO;
import
net.wanji.databus.bo.CrossIdBO
;
import
net.wanji.databus.dao.entity.*
;
import
net.wanji.databus.dao.mapper.*
;
import
net.wanji.databus.dto.CrossSchemeQueryDTO
;
import
net.wanji.databus.dto.CrossSchemeRingsDTO
;
import
net.wanji.databus.dto.QueryByCrossIdAndTimeDTO
;
import
net.wanji.databus.po.*
;
...
...
@@ -68,6 +69,7 @@ public class DiagnoServiceImpl implements DiagnoService {
private
final
CrossDirDataRealtimeMapper
crossDirDataRealtimeMapper
;
private
final
BaseCrossLaneLightsMapper
baseCrossLaneLightsMapper
;
private
final
BaseCrossLightsMapper
baseCrossLightsMapper
;
@Resource
private
UtcFeignClients
utcFeignClients
;
private
Gson
gson
=
new
GsonBuilder
().
setDateFormat
(
"yyyy-MM-dd HH:mm:ss"
).
create
();
...
...
@@ -125,10 +127,10 @@ public class DiagnoServiceImpl implements DiagnoService {
// 查询路口场景代码
String
crossId
=
crossIdBO
.
getCrossId
();
CrossDataRealtimePO
crossDataRealtimePO
=
crossDataRealtimeMapper
.
selectByCrossId
(
crossId
);
Integer
status
=
crossDataRealtimePO
.
getStatus
()
;
Integer
status
=
Objects
.
nonNull
(
crossDataRealtimePO
)?
crossDataRealtimePO
.
getStatus
():
0
;
// 获取场景名称
ScenePO
scenePO
=
sceneMapper
.
selectBySceneNum
(
status
);
String
sceneName
=
scenePO
.
getSceneName
()
;
String
sceneName
=
Objects
.
nonNull
(
scenePO
)?
scenePO
.
getSceneName
():
""
;
// 构造请求体
QuerySceneDTO
querySceneDTO
=
new
QuerySceneDTO
();
querySceneDTO
.
setSceneName
(
sceneName
);
...
...
@@ -305,6 +307,7 @@ public class DiagnoServiceImpl implements DiagnoService {
return
phaseOptTimeList
;
}
@Override
public
void
sendManual
(
SendManualDTO
sendManualDTO
)
throws
Exception
{
// 构造场景、策略、方法
...
...
signal-optimize-service/src/main/java/net/wanji/opt/service/signalcontrol/impl/FeignProxyServiceImpl.java
View file @
87be969f
...
...
@@ -42,32 +42,39 @@ public class FeignProxyServiceImpl implements FeignProxyService {
@Override
public
JsonViewObject
schemeOptSend
(
SchemeOptSendVO
schemeOptSendVO
)
throws
Exception
{
SchemeSendVO
schemeSendVO
=
new
SchemeSendVO
();
BeanUtils
.
copyProperties
(
schemeOptSendVO
,
schemeSendVO
);
JsonViewObject
jsonViewObject
=
utcFeignClients
.
tempScheme
(
schemeOptSendVO
);
if
(
Objects
.
isNull
(
jsonViewObject
)
||
jsonViewObject
.
getCode
()
!=
200
)
{
log
.
error
(
"诊断优化手动下发优化方案,UTC服务调用异常"
,
jsonViewObject
);
throw
new
FeignServiceException
(
"诊断优化手动下发优化方案,UTC服务调用异常"
);
}
JsonViewObject
jsonViewObject
=
JsonViewObject
.
newInstance
();
//TODO: 需要具体对接各个厂商的1049协议,此处因交警及厂商原因暂未开展,屏蔽掉相关代码,避免报错
// SchemeSendVO schemeSendVO = new SchemeSendVO();
// BeanUtils.copyProperties(schemeOptSendVO, schemeSendVO);
// jsonViewObject = utcFeignClients.tempScheme(schemeOptSendVO);
// if (Objects.isNull(jsonViewObject) || jsonViewObject.getCode() != 200) {
// log.error("诊断优化手动下发优化方案,UTC服务调用异常", jsonViewObject);
// throw new FeignServiceException("诊断优化手动下发优化方案,UTC服务调用异常");
// }
// 将优化记录插入方案优化记录表
List
<
CrossSchemeOptLogPO
>
crossSchemeOptLogPOS
=
getCrossSchemeOptLogPOList
(
schemeOptSendVO
);
crossSchemeOptLogMapper
.
insertBatch
(
crossSchemeOptLogPOS
);
return
jsonViewObject
.
success
(
"手动下发优化方案成功"
);
if
(
crossSchemeOptLogPOS
.
size
()>
0
)
{
crossSchemeOptLogMapper
.
insertBatch
(
crossSchemeOptLogPOS
);
}
Thread
.
sleep
(
1000L
);
return
jsonViewObject
.
success
(
"下发AI优化方案成功"
);
}
@Override
public
JsonViewObject
schemeOptRestore
(
String
crossId
)
throws
Exception
{
// 下发原始方案
JsonViewObject
jsonViewObject
=
JsonViewObject
.
newInstance
();
Map
<
String
,
CrossPhaseDTO
>
phaseMap
=
crossDirTurnPhaseCache
.
getPhaseDirTurnMap
();
SchemeSendVO
schemeSendVO
=
crossOptimizeService
.
getSchemeSendVO
(
crossId
,
phaseMap
,
Collections
.
EMPTY_MAP
);
JsonViewObject
jsonViewObject
=
utcFeignClients
.
schemeSend
(
schemeSendVO
);
if
(
Objects
.
isNull
(
jsonViewObject
)
||
jsonViewObject
.
getCode
()
!=
200
)
{
log
.
error
(
"诊断优化手动恢复优化方案,UTC服务调用异常!"
,
jsonViewObject
);
throw
new
FeignServiceException
(
"手动恢复优化方案,UTC服务调用异常"
);
}
return
jsonViewObject
.
success
(
"手动恢复优化方案成功"
);
//TODO: 需要具体对接各个厂商的1049协议,此处因交警及厂商原因暂未开展,屏蔽掉相关代码,避免报错
// SchemeSendVO schemeSendVO = crossOptimizeService.getSchemeSendVO(crossId, phaseMap, Collections.EMPTY_MAP);
// jsonViewObject = utcFeignClients.schemeSend(schemeSendVO);
// if (Objects.isNull(jsonViewObject) || jsonViewObject.getCode() != 200) {
// log.error("诊断优化手动恢复优化方案,UTC服务调用异常!", jsonViewObject);
// throw new FeignServiceException("手动恢复优化方案,UTC服务调用异常");
// }
Thread
.
sleep
(
1000L
);
return
jsonViewObject
.
success
(
"恢复优化方案成功"
);
}
/**
...
...
@@ -84,46 +91,49 @@ public class FeignProxyServiceImpl implements FeignProxyService {
Map
<
String
,
Integer
>
phaseOffsetTimeMap
=
schemeOptSendVO
.
getPhaseOffsetTimeMap
();
String
crossId
=
schemeOptSendVO
.
getCrossCode
();
List
<
SchemeSendVO
.
Pattern
>
patternList
=
schemeOptSendVO
.
getPatternList
();
for
(
SchemeSendVO
.
Pattern
pattern
:
patternList
)
{
String
patternNo
=
pattern
.
getPatternNo
();
String
offset
=
pattern
.
getOffset
();
List
<
SchemeSendVO
.
Pattern
.
Ring
>
rings
=
pattern
.
getRings
();
for
(
SchemeSendVO
.
Pattern
.
Ring
ring
:
rings
)
{
String
ringNo
=
ring
.
getRingNo
();
List
<
SchemeSendVO
.
Pattern
.
Ring
.
Phase
>
phaseList
=
ring
.
getPhaseList
();
for
(
SchemeSendVO
.
Pattern
.
Ring
.
Phase
phase
:
phaseList
)
{
String
phaseNo
=
phase
.
getPhaseNo
();
String
greenTime
=
phase
.
getGreenTime
();
Integer
greenTimeOffset
=
phaseOffsetTimeMap
.
get
(
phaseNo
);
for
(
Map
.
Entry
<
String
,
CrossPhaseDTO
>
entry
:
phaseDirTurnMap
.
entrySet
())
{
CrossPhaseDTO
crossPhaseDTO
=
entry
.
getValue
();
if
(
StringUtils
.
equals
(
crossId
,
crossPhaseDTO
.
getCrossId
())
&&
StringUtils
.
equals
(
phaseNo
,
crossPhaseDTO
.
getPhaseNo
()))
{
Integer
dirType
=
crossPhaseDTO
.
getDirType
();
String
turnType
=
crossPhaseDTO
.
getTurnType
();
CrossSchemeOptLogPO
crossSchemeOptLogPO
=
new
CrossSchemeOptLogPO
();
crossSchemeOptLogPO
.
setCrossId
(
crossId
);
crossSchemeOptLogPO
.
setSchemeId
(
Integer
.
valueOf
(
patternNo
));
crossSchemeOptLogPO
.
setDirType
(
dirType
);
crossSchemeOptLogPO
.
setTurnType
(
turnType
);
crossSchemeOptLogPO
.
setOffset
(
Integer
.
valueOf
(
offset
));
crossSchemeOptLogPO
.
setRingNo
(
Integer
.
valueOf
(
ringNo
));
crossSchemeOptLogPO
.
setPhaseNo
(
phaseNo
);
crossSchemeOptLogPO
.
setPhaseOrderId
(
Integer
.
valueOf
(
phase
.
getSort
()));
crossSchemeOptLogPO
.
setOriGreenTime
(
Integer
.
valueOf
(
greenTime
)
-
greenTimeOffset
);
crossSchemeOptLogPO
.
setOptGreenTime
(
Integer
.
valueOf
(
greenTime
));
crossSchemeOptLogPO
.
setOptTime
(
greenTimeOffset
);
crossSchemeOptLogPO
.
setOptType
(
schemeOptSendVO
.
getOptType
());
crossSchemeOptLogPO
.
setOptReason
(
schemeOptSendVO
.
getOptReason
());
crossSchemeOptLogPO
.
setStartTime
(
new
Date
());
crossSchemeOptLogPO
.
setRelationFlag
(
schemeOptSendVO
.
getRelationFlag
());
crossSchemeOptLogPO
.
setRelationCrossId
(
schemeOptSendVO
.
getRelationCrossId
());
crossSchemeOptLogPO
.
setOptResult
(
"1"
);
crossSchemeOptLogPO
.
setOptResultDesc
(
StatusCodeEnum
.
STATUS_00200
.
getDetail
());
crossSchemeOptLogPO
.
setDataBatchTime
((
int
)
dataBatchTimeLong
);
if
(
Objects
.
nonNull
(
patternList
))
{
for
(
SchemeSendVO
.
Pattern
pattern
:
patternList
)
{
String
patternNo
=
pattern
.
getPatternNo
();
String
offset
=
pattern
.
getOffset
();
List
<
SchemeSendVO
.
Pattern
.
Ring
>
rings
=
pattern
.
getRings
();
for
(
SchemeSendVO
.
Pattern
.
Ring
ring
:
rings
)
{
String
ringNo
=
ring
.
getRingNo
();
List
<
SchemeSendVO
.
Pattern
.
Ring
.
Phase
>
phaseList
=
ring
.
getPhaseList
();
for
(
SchemeSendVO
.
Pattern
.
Ring
.
Phase
phase
:
phaseList
)
{
String
phaseNo
=
phase
.
getPhaseNo
();
String
greenTime
=
phase
.
getGreenTime
();
Integer
greenTimeOffset
=
phaseOffsetTimeMap
.
get
(
phaseNo
);
for
(
Map
.
Entry
<
String
,
CrossPhaseDTO
>
entry
:
phaseDirTurnMap
.
entrySet
())
{
CrossPhaseDTO
crossPhaseDTO
=
entry
.
getValue
();
if
(
StringUtils
.
equals
(
crossId
,
crossPhaseDTO
.
getCrossId
())
&&
StringUtils
.
equals
(
phaseNo
,
crossPhaseDTO
.
getPhaseNo
()))
{
Integer
dirType
=
crossPhaseDTO
.
getDirType
();
String
turnType
=
crossPhaseDTO
.
getTurnType
();
CrossSchemeOptLogPO
crossSchemeOptLogPO
=
new
CrossSchemeOptLogPO
();
crossSchemeOptLogPO
.
setCrossId
(
crossId
);
crossSchemeOptLogPO
.
setSchemeId
(
Integer
.
valueOf
(
patternNo
));
crossSchemeOptLogPO
.
setDirType
(
dirType
);
crossSchemeOptLogPO
.
setTurnType
(
turnType
);
crossSchemeOptLogPO
.
setOffset
(
Integer
.
valueOf
(
offset
));
crossSchemeOptLogPO
.
setRingNo
(
Integer
.
valueOf
(
ringNo
));
crossSchemeOptLogPO
.
setPhaseNo
(
phaseNo
);
crossSchemeOptLogPO
.
setPhaseOrderId
(
Integer
.
valueOf
(
phase
.
getSort
()));
crossSchemeOptLogPO
.
setOriGreenTime
(
Integer
.
valueOf
(
greenTime
)
-
greenTimeOffset
);
crossSchemeOptLogPO
.
setOptGreenTime
(
Integer
.
valueOf
(
greenTime
));
crossSchemeOptLogPO
.
setOptTime
(
greenTimeOffset
);
crossSchemeOptLogPO
.
setOptType
(
schemeOptSendVO
.
getOptType
());
crossSchemeOptLogPO
.
setOptReason
(
schemeOptSendVO
.
getOptReason
());
crossSchemeOptLogPO
.
setStartTime
(
new
Date
());
crossSchemeOptLogPO
.
setRelationFlag
(
schemeOptSendVO
.
getRelationFlag
());
crossSchemeOptLogPO
.
setRelationCrossId
(
schemeOptSendVO
.
getRelationCrossId
());
crossSchemeOptLogPO
.
setOptResult
(
"1"
);
crossSchemeOptLogPO
.
setOptResultDesc
(
StatusCodeEnum
.
STATUS_00200
.
getDetail
());
crossSchemeOptLogPO
.
setDataBatchTime
((
int
)
dataBatchTimeLong
);
crossSchemeOptLogPOS
.
add
(
crossSchemeOptLogPO
);
}
}
}
}
...
...
signal-optimize-service/src/main/java/net/wanji/opt/servicev2/implv2/TrendServiceV2Impl.java
View file @
87be969f
...
...
@@ -465,8 +465,9 @@ public class TrendServiceV2Impl implements TrendServiceV2 {
// 空放
if
(
Objects
.
equals
(
1
,
currentAlgo
)
&&
paramTime
-
optTime
<
countDown
*
1000
)
{
optStrategyResultInfoVO
.
setCurOptType
(
1
);
}
else
if
(
paramTime
-
optTime
<
duration
*
1000
)
{
optStrategyResultInfoVO
.
setCurOptType
(
currentAlgo
);
}
else
if
(
paramTime
-
optTime
<
duration
*
1000
)
{
optStrategyResultInfoVO
.
setCurOptType
(
currentAlgo
);
}
}
}
...
...
signal-optimize-service/src/main/resources/bootstrap-docker.yaml
View file @
87be969f
...
...
@@ -2,7 +2,7 @@ spring:
cloud
:
nacos
:
config
:
server-addr
:
37.12.182.29
:8848
server-addr
:
124.225.163.92
:8848
file-extension
:
yaml
group
:
signal
namespace
:
signal
...
...
signal-optimize-service/src/main/resources/bootstrap.yaml
View file @
87be969f
spring
:
profiles
:
active
:
test
active
:
docker
logging
:
level
:
org.apache.ibatis
:
DEBUG
\ No newline at end of file
wj-databus/src/main/java/net/wanji/databus/vo/SchemeOptSendVO.java
View file @
87be969f
...
...
@@ -21,6 +21,8 @@ public class SchemeOptSendVO extends SchemeSendVO {
private
String
optType
;
@ApiModelProperty
(
value
=
"调整原因: 1-失衡; 2-拥堵; 3-溢出; 4-绿波优化; 5-高峰方案下发-失衡; 6-高峰方案下发-溢出; 7-高峰方案下发-拥堵; 8-活动预案; 90-事故单点优化"
)
private
String
optReason
;
@ApiModelProperty
(
value
=
"锁定时长"
)
private
String
optTime
;
@ApiModelProperty
(
value
=
"是否被关联调整: 1-否; 0-是"
)
private
String
relationFlag
;
@ApiModelProperty
(
value
=
"关联路口方向编号"
)
...
...
wj-databus/src/main/java/net/wanji/databus/vo/SchemeSendVO.java
View file @
87be969f
...
...
@@ -26,7 +26,7 @@ public class SchemeSendVO {
private
String
crossCode
;
@ApiModelProperty
(
value
=
"方案列表"
,
notes
=
"方案列表"
)
@NotEmpty
(
message
=
"方案列表不可为空"
)
//
@NotEmpty(message = "方案列表不可为空")
private
List
<
Pattern
>
patternList
;
/**
...
...
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