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
8d3110bf
Commit
8d3110bf
authored
Mar 03, 2023
by
hanbing
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
06210f5f
f91f7e33
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
91 additions
and
16 deletions
+91
-16
ControlServiceException.java
...t/wanji/web/common/exception/ControlServiceException.java
+10
-0
SignalOptimizeApplication.java
...rc/main/java/net/wanji/opt/SignalOptimizeApplication.java
+1
-1
CrossDirTurnPhaseCache.java
...main/java/net/wanji/opt/cache/CrossDirTurnPhaseCache.java
+2
-1
OptExceptionHandler.java
...a/net/wanji/opt/common/exception/OptExceptionHandler.java
+5
-0
OptServiceException.java
...a/net/wanji/opt/common/exception/OptServiceException.java
+19
-0
SignalCommandOptController.java
.../controller/signalcontrol/SignalCommandOptController.java
+4
-0
CrossOptimizeServiceImpl.java
.../net/wanji/opt/service/impl/CrossOptimizeServiceImpl.java
+10
-9
FeignProxyServiceImpl.java
...opt/service/signalcontrol/impl/FeignProxyServiceImpl.java
+6
-5
FeignServiceException.java
...nji/common/framework/exception/FeignServiceException.java
+19
-0
GlobalExceptionHandler.java
...on/framework/exceptionhandler/GlobalExceptionHandler.java
+15
-0
No files found.
signal-control-service/src/main/java/net/wanji/web/common/exception/ControlServiceException.java
0 → 100644
View file @
8d3110bf
package
net
.
wanji
.
web
.
common
.
exception
;
import
net.wanji.common.framework.exceptionhandler.GlobalExceptionHandler
;
/**
* @author duanruiming
* @date 2023/03/03 14:42
*/
public
class
ControlServiceException
extends
GlobalExceptionHandler
{
}
signal-optimize-service/src/main/java/net/wanji/opt/SignalOptimizeApplication.java
View file @
8d3110bf
...
...
@@ -10,7 +10,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
/**
* @author
*/
@SpringBootApplication
(
scanBasePackages
=
{
"net.wanji.opt"
,
"net.wanji.databus"
})
@SpringBootApplication
(
scanBasePackages
=
{
"net.wanji.opt"
,
"net.wanji.databus"
,
"net.wanji.common"
})
@MapperScan
(
basePackages
=
{
"net.wanji.opt.dao.mapper"
,
"net.wanji.databus.dao.mapper"
})
@EnableTransactionManagement
@EnableScheduling
...
...
signal-optimize-service/src/main/java/net/wanji/opt/cache/CrossDirTurnPhaseCache.java
View file @
8d3110bf
...
...
@@ -6,6 +6,7 @@ import net.wanji.common.enums.TurnConvertEnum;
import
net.wanji.common.enums.WeekEnum
;
import
net.wanji.common.framework.Constants
;
import
net.wanji.common.utils.tool.DateUtil
;
import
net.wanji.opt.common.exception.OptServiceException
;
import
net.wanji.opt.dto.*
;
import
net.wanji.opt.service.CrossSchedulesService
;
import
net.wanji.opt.service.CrossSchemeService
;
...
...
@@ -88,7 +89,7 @@ public class CrossDirTurnPhaseCache implements CommandLineRunner {
dir
=
lights
.
getDir
();
if
(
Objects
.
isNull
(
lights
.
getLaneInfos
()))
{
log
.
error
(
"{}-路口, {}-方案,{}-灯组,灯组中车道信息不能为空"
,
crossId
,
scheme
.
getId
(),
lights
.
getId
());
throw
new
Exception
(
"灯组中车道信息不能为空"
);
throw
new
OptServiceException
(
"当前路口:"
.
concat
(
crossId
).
concat
(
", 灯组关联车道信息不能为空"
)
);
}
for
(
LaneInfoDTO
lane
:
lights
.
getLaneInfos
())
{
// 车道转向转换为转向类型,并去重
...
...
signal-optimize-service/src/main/java/net/wanji/opt/common/exception/OptExceptionHandler.java
View file @
8d3110bf
...
...
@@ -20,4 +20,9 @@ public class OptExceptionHandler extends GlobalExceptionHandler {
public
JsonViewObject
uniqueExceptionHandler
(
UniqueException
e
)
{
return
JsonViewObject
.
newInstance
().
fail
(
e
);
}
@ExceptionHandler
(
value
=
OptServiceException
.
class
)
public
JsonViewObject
OptServiceExceptionHandler
(
OptServiceException
e
)
{
return
JsonViewObject
.
newInstance
().
fail
(
e
.
getMessage
(),
"optService服务调用异常"
);
}
}
\ No newline at end of file
signal-optimize-service/src/main/java/net/wanji/opt/common/exception/OptServiceException.java
0 → 100644
View file @
8d3110bf
package
net
.
wanji
.
opt
.
common
.
exception
;
/**
* @author duanruiming
* @date 2023/03/03 13:47
*/
public
class
OptServiceException
extends
RuntimeException
{
public
OptServiceException
()
{
super
();
}
public
OptServiceException
(
String
message
)
{
super
(
message
);
}
public
OptServiceException
(
String
message
,
Exception
e
)
{
super
(
message
,
e
);
}
}
\ No newline at end of file
signal-optimize-service/src/main/java/net/wanji/opt/controller/signalcontrol/SignalCommandOptController.java
View file @
8d3110bf
...
...
@@ -4,6 +4,8 @@ import io.swagger.annotations.Api;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiResponse
;
import
io.swagger.annotations.ApiResponses
;
import
net.wanji.common.annotation.aspect.AspectLog
;
import
net.wanji.common.enums.BaseEnum
;
import
net.wanji.common.framework.rest.JsonViewObject
;
import
net.wanji.opt.service.signalcontrol.FeignProxyService
;
import
net.wanji.opt.vo.SchemeOptSendVO
;
...
...
@@ -29,6 +31,7 @@ public class SignalCommandOptController {
@Autowired
private
FeignProxyService
feignProxyService
;
@AspectLog
(
description
=
"诊断优化手动优化方案下发"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
UPDATE
)
@ApiOperation
(
value
=
"手动优化方案下发"
,
notes
=
"优化方案下发"
,
response
=
JsonViewObject
.
class
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@PostMapping
(
value
=
"/schemeOptSend"
,
...
...
@@ -39,6 +42,7 @@ public class SignalCommandOptController {
return
jsonViewObject
;
}
@AspectLog
(
description
=
"诊断优化手动优化方案恢复"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
UPDATE
)
@ApiOperation
(
value
=
"手动优化方案恢复"
,
notes
=
"优化方案恢复"
,
response
=
JsonViewObject
.
class
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@PostMapping
(
value
=
"/schemeOptRestore"
,
...
...
signal-optimize-service/src/main/java/net/wanji/opt/service/impl/CrossOptimizeServiceImpl.java
View file @
8d3110bf
...
...
@@ -11,6 +11,7 @@ import net.wanji.feign.pojo.vo.SchemeSendVO;
import
net.wanji.feign.pojo.vo.SignalStatusVO
;
import
net.wanji.feign.service.UtcFeignClients
;
import
net.wanji.opt.cache.CrossDirTurnPhaseCache
;
import
net.wanji.opt.common.exception.OptServiceException
;
import
net.wanji.opt.dao.mapper.CrossPhaseMapper
;
import
net.wanji.opt.dao.mapper.CrossSchemeMapper
;
import
net.wanji.opt.dao.mapper.CrossSchemeOptLogMapper
;
...
...
@@ -186,7 +187,7 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
List
<
CrossTurnDataRealtimeDTO
>
endcrossTurnDataRealtimeDTOS
=
turnDataRealtimeMap
.
get
(
endCrossId
);
if
(
CollectionUtils
.
isEmpty
(
endcrossTurnDataRealtimeDTOS
))
{
log
.
error
(
"溢出路口:{},优化其下游路口:{}时,路口转向数据为空"
,
crossId
,
ridInfoEntity
.
getEndCrossId
());
throw
new
Exception
(
);
throw
new
OptServiceException
(
"实时监控->溢出路口方案优化异常,优化路口转向数据异常"
);
}
endcrossTurnDataRealtimeDTOS
.
forEach
(
item
->
item
.
setPassTime
(
calPassTime
(
item
)));
// 进行优化下发
...
...
@@ -272,7 +273,7 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
// 记录已优化的路口
CROSS_OPT
.
add
(
crossId
);
}
else
{
log
.
error
(
"当前拥堵路口: {}, 实时监控优化上游路口: {}时,未获取到上游路口的实时转向数据!"
,
crossId
,
startCrossId
);
log
.
error
(
"当前拥堵路口: {}, 实时监控
->
优化上游路口: {}时,未获取到上游路口的实时转向数据!"
,
crossId
,
startCrossId
);
}
}
}
...
...
@@ -359,8 +360,8 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
SchemeSendVO
schemeSendVO
=
getSchemeSendVO
(
optCrossId
,
phaseMap
,
Collections
.
EMPTY_MAP
);
JsonViewObject
jsonViewObject
=
utcFeignClients
.
schemeSend
(
schemeSendVO
);
if
(
Objects
.
isNull
(
jsonViewObject
)
||
jsonViewObject
.
getCode
()
!=
200
)
{
log
.
error
(
"实时监控路口优化方案下发远程调用异常!"
,
jsonViewObject
);
throw
new
Exception
(
);
log
.
error
(
"实时监控
->
路口优化方案下发远程调用异常!"
,
jsonViewObject
);
throw
new
OptServiceException
(
"实时监控->恢复原始方案调用UTC服务异常"
);
}
CROSS_OPT
.
remove
(
optCrossId
);
}
...
...
@@ -430,8 +431,8 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
//todo test下发成功
jsonViewObject
.
success
();
if
(
Objects
.
isNull
(
jsonViewObject
)
||
jsonViewObject
.
getCode
()
!=
200
)
{
log
.
error
(
"实时监控路口优化方案下发远程调用异常!"
,
jsonViewObject
);
throw
new
Exception
(
);
log
.
error
(
"实时监控
->
路口优化方案下发远程调用异常!"
,
jsonViewObject
);
throw
new
OptServiceException
(
"实时监控->下发优化方案调用UTC服务异常"
);
}
// 将优化记录插入方案优化记录表
...
...
@@ -490,8 +491,8 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
String
key
=
String
.
join
(
Constants
.
SystemParam
.
SEPARATOR_UNDER_LINE
,
crossId
,
"1"
,
"s"
);
CrossPhaseDTO
crossPhaseDTO
=
phaseMap
.
get
(
key
);
if
(
Objects
.
isNull
(
crossPhaseDTO
))
{
log
.
error
(
"当前路口:{}未获取到信号机
相位等
信息,无法进行方案下发优化"
,
crossId
);
throw
new
Exception
(
);
log
.
error
(
"当前路口:{}未获取到信号机
方案
信息,无法进行方案下发优化"
,
crossId
);
throw
new
OptServiceException
(
"当前路口不能获取到运行方案相位信息!"
);
}
Integer
schemeId
=
crossPhaseDTO
.
getSchemeId
();
...
...
@@ -716,7 +717,7 @@ public class CrossOptimizeServiceImpl implements CrossOptimizeService {
JsonViewObject
jsonViewObject
=
utcFeignClients
.
runningStatusAlarm
();
if
(
Objects
.
isNull
(
jsonViewObject
)
||
jsonViewObject
.
getCode
()
!=
200
)
{
log
.
error
(
"路口优化获取当前路口控制模式异常!"
);
throw
new
Exception
(
);
throw
new
OptServiceException
(
"路口优化获取当前路口控制模式异常!"
);
}
List
<
SignalStatusVO
>
signalStatusVOS
=
(
List
<
SignalStatusVO
>)
jsonViewObject
.
getContent
();
List
<
SignalStatusVO
>
resultList
=
signalStatusVOS
.
stream
().
filter
(
signalStatusVO
->
Objects
.
equals
(
crossId
,
signalStatusVO
.
getCrossId
())).
collect
(
Collectors
.
toList
());
...
...
signal-optimize-service/src/main/java/net/wanji/opt/service/signalcontrol/impl/FeignProxyServiceImpl.java
View file @
8d3110bf
package
net
.
wanji
.
opt
.
service
.
signalcontrol
.
impl
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.common.framework.exception.FeignServiceException
;
import
net.wanji.common.framework.rest.JsonViewObject
;
import
net.wanji.databus.entity.develop.servicedevelop.develop.StatusCodeEnum
;
import
net.wanji.feign.pojo.vo.SchemeSendVO
;
...
...
@@ -44,8 +45,8 @@ public class FeignProxyServiceImpl implements FeignProxyService {
BeanUtils
.
copyProperties
(
schemeOptSendVO
,
schemeSendVO
);
JsonViewObject
jsonViewObject
=
utcFeignClients
.
schemeSend
(
schemeSendVO
);
if
(
Objects
.
isNull
(
jsonViewObject
)
||
jsonViewObject
.
getCode
()
!=
200
)
{
log
.
error
(
"
实时监控路口优化方案下发远程调用异常!
"
,
jsonViewObject
);
return
jsonViewObject
.
fail
(
"
手动下发优化方案,UTC服务调用异常"
);
log
.
error
(
"
诊断优化手动下发优化方案,UTC服务调用异常
"
,
jsonViewObject
);
throw
new
FeignServiceException
(
"诊断优化
手动下发优化方案,UTC服务调用异常"
);
}
// 将优化记录插入方案优化记录表
...
...
@@ -61,10 +62,10 @@ public class FeignProxyServiceImpl implements FeignProxyService {
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服务调用异常"
);
log
.
error
(
"
诊断优化手动恢复优化方案,UTC服务
调用异常!"
,
jsonViewObject
);
throw
new
FeignServiceException
(
"手动恢复优化方案,UTC服务调用异常"
);
}
return
null
;
return
jsonViewObject
.
success
(
"手动恢复优化方案成功"
)
;
}
/**
...
...
wj-common/src/main/java/net/wanji/common/framework/exception/FeignServiceException.java
0 → 100644
View file @
8d3110bf
package
net
.
wanji
.
common
.
framework
.
exception
;
/**
* @author duanruiming
* @date 2023/03/03 14:22
*/
public
class
FeignServiceException
extends
RuntimeException
{
public
FeignServiceException
(
Exception
e
)
{
super
(
e
);
}
public
FeignServiceException
(
String
msg
,
Exception
e
)
{
super
(
msg
,
e
);
}
public
FeignServiceException
(
String
msg
)
{
super
(
msg
);
}
}
wj-common/src/main/java/net/wanji/common/framework/exceptionhandler/GlobalExceptionHandler.java
View file @
8d3110bf
package
net
.
wanji
.
common
.
framework
.
exceptionhandler
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.common.framework.exception.FeignServiceException
;
import
net.wanji.common.framework.rest.JsonViewObject
;
import
org.springframework.dao.DuplicateKeyException
;
import
org.springframework.validation.FieldError
;
...
...
@@ -106,6 +107,20 @@ public class GlobalExceptionHandler {
return
JsonViewObject
.
newInstance
().
fail
(
"发生参数异常!原因是:"
+
errorMessage
);
}
@ExceptionHandler
(
value
=
FeignServiceException
.
class
)
public
JsonViewObject
feignServiceExceptionHandler
(
HttpServletRequest
req
,
FeignServiceException
e
)
{
Throwable
cause
=
e
.
getCause
();
String
errorMessage
;
if
(
cause
!=
null
)
{
errorMessage
=
cause
.
getMessage
();
}
else
{
StackTraceElement
element
=
e
.
getStackTrace
()[
0
];
errorMessage
=
element
.
getClassName
()
+
" "
+
element
.
getLineNumber
();
}
log
.
error
(
"feign远程服务调用异常:"
,
e
);
return
JsonViewObject
.
newInstance
().
fail
(
"feign远程服务调用异常!位置在:"
+
errorMessage
);
}
/**
* 处理其他异常
*/
...
...
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