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
473b1826
Commit
473b1826
authored
Nov 22, 2022
by
wuxiaokai
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
控制指令接口-相位锁定/解锁
parent
e6e80b11
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
110 additions
and
10 deletions
+110
-10
Constants.java
...rc/main/java/net/wanji/utc/common/constant/Constants.java
+2
-2
ControlCommandController.java
...va/net/wanji/utc/controller/ControlCommandController.java
+30
-0
ControlCommandService.java
...ain/java/net/wanji/utc/service/ControlCommandService.java
+4
-2
HKControlCommandServiceImpl.java
...t/wanji/utc/service/impl/HKControlCommandServiceImpl.java
+74
-6
No files found.
signal-utc-service/src/main/java/net/wanji/utc/common/constant/Constants.java
View file @
473b1826
...
...
@@ -73,11 +73,11 @@ public class Constants {
/**
* 相位(灯态)锁定
*/
public
static
final
Integer
LOCK_RUNNING_
MODE
=
12
;
public
static
final
Integer
LOCK_RUNNING_
CONTROL
=
12
;
/**
* 相位(灯态)解锁: 0-多时段控制模式
*/
public
static
final
Integer
UNLOCK_RUNNING_
MODE
=
13
;
public
static
final
Integer
UNLOCK_RUNNING_
CONTROL
=
13
;
/**
* 恢复正常方案: 0-多时段控制模式
*/
...
...
signal-utc-service/src/main/java/net/wanji/utc/controller/ControlCommandController.java
View file @
473b1826
...
...
@@ -9,6 +9,8 @@ import net.wanji.utc.common.typeenum.BasicEnum;
import
net.wanji.utc.mapper.CrossInfoMapper
;
import
net.wanji.utc.po.CrossInfoPO
;
import
net.wanji.utc.service.ControlCommandService
;
import
net.wanji.utc.util.ListUtil
;
import
net.wanji.utc.vo.PhaseLock
;
import
net.wanji.utc.vo.plansend.PlanSendVO
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
...
...
@@ -16,6 +18,8 @@ import org.springframework.web.bind.annotation.*;
import
javax.annotation.Resource
;
import
java.util.List
;
import
static
net
.
wanji
.
utc
.
common
.
ResultEnum
.
BODY_NOT_MATCH
;
/**
...
...
@@ -189,6 +193,32 @@ public class ControlCommandController {
}
}
/**
* 锁定控制
*
* @param signalId 信号id
* @return {@link Result}<{@link T}>
*/
@ApiOperation
(
value
=
"锁定控制-相位锁定/解锁"
,
notes
=
"锁定控制-相位锁定/解锁"
)
@PostMapping
(
"/lockControl"
)
public
<
T
>
Result
<
T
>
lockControl
(
@RequestParam
String
signalId
,
@RequestBody
PhaseLock
phaseLock
)
{
if
(
mock
)
{
return
Result
.
success
();
}
try
{
Integer
manufacturerId
=
check
(
signalId
);
if
(
manufacturerId
.
equals
(
BasicEnum
.
ManufacturerEnum
.
HK
.
getCode
()))
{
return
hkControlCommandService
.
lockControl
(
signalId
,
phaseLock
);
}
else
{
// todo else
return
null
;
}
}
catch
(
Exception
ex
)
{
log
.
error
(
"锁定控制-相位锁定/解锁异常:{}"
,
ex
.
getMessage
());
throw
new
ControlException
(
"锁定控制-相位锁定/解锁异常"
);
}
}
private
Integer
check
(
String
signalId
)
{
CrossInfoPO
crossInfoPO
=
crossInfoMapper
.
selectByCode
(
signalId
);
if
(
crossInfoPO
==
null
)
{
...
...
signal-utc-service/src/main/java/net/wanji/utc/service/ControlCommandService.java
View file @
473b1826
...
...
@@ -4,6 +4,8 @@ import net.wanji.utc.common.Result;
import
net.wanji.utc.vo.PhaseLock
;
import
net.wanji.utc.vo.plansend.PlanSendVO
;
import
java.util.List
;
/**
* 控制指令 service
*
...
...
@@ -31,10 +33,10 @@ public interface ControlCommandService {
* 锁定控制
*
* @param signalId 信号机编号
* @param
locks
相位锁定实体类
* @param
phaseLock
相位锁定实体类
* @return {@link Result}<{@link T}>
*/
<
T
>
Result
<
T
>
lockControl
(
String
signalId
,
PhaseLock
...
locks
)
;
<
T
>
Result
<
T
>
lockControl
(
String
signalId
,
PhaseLock
phaseLock
)
throws
Exception
;
/**
* 步进控制
...
...
signal-utc-service/src/main/java/net/wanji/utc/service/impl/HKControlCommandServiceImpl.java
View file @
473b1826
...
...
@@ -11,6 +11,7 @@ import net.wanji.utc.common.baseentity.BaseCrossInfo;
import
net.wanji.utc.common.constant.Constants
;
import
net.wanji.utc.common.exception.ControlException
;
import
net.wanji.utc.common.typeenum.BasicEnum
;
import
net.wanji.utc.entity.SignalRunring
;
import
net.wanji.utc.mapper.CrossPhaseMapper
;
import
net.wanji.utc.po.CrossPhasePO
;
import
net.wanji.utc.service.ControlCommandService
;
...
...
@@ -67,14 +68,82 @@ public class HKControlCommandServiceImpl implements ControlCommandService {
}
@Override
public
<
T
>
Result
<
T
>
lockControl
(
String
signalId
,
PhaseLock
...
locks
)
{
return
null
;
public
<
T
>
Result
<
T
>
lockControl
(
String
signalId
,
PhaseLock
phaseLock
)
throws
Exception
{
if
(
phaseLock
.
getCommand
().
equals
(
TRUE
))
{
return
updateManualLock
(
signalId
,
phaseLock
.
getLockTime
());
}
else
{
return
controlSignal
(
signalId
,
UNLOCK_RUNNING_CONTROL
);
}
}
private
<
T
>
Result
<
T
>
updateManualLock
(
String
signalId
,
Integer
lockTime
)
throws
Exception
{
JSONObject
param
=
new
JSONObject
();
param
.
put
(
"crossCode"
,
signalId
);
param
.
put
(
"controlType"
,
LOCK_RUNNING_CONTROL
);
setSignalControlLaneInfos
(
signalId
,
param
);
param
.
put
(
"controlNo"
,
0
);
//控制时长,单位 s,0 则持续控制
param
.
put
(
"duration"
,
lockTime
*
60
);
return
setSignalControl
(
param
);
}
/**
* 控制命令为灯态锁定时,设置相关车道参数信息
*
* @param signalId, 信号机id
* @param obj
*/
private
void
setSignalControlLaneInfos
(
String
signalId
,
JSONObject
obj
)
throws
Exception
{
//获取当前运行方案的相位id
List
<
SignalLightStateVo
>
signalInfos
=
getSignalInfoVos
(
signalId
);
List
<
SignalRingVo
>
runrings
=
signalInfos
.
get
(
0
).
getRings
();
//HK 为单环
Integer
phaseId
=
Integer
.
valueOf
(
runrings
.
get
(
0
).
getPhaseId
());
//获取某一路口下海康相位和车道关系
Map
<
Integer
,
JSONArray
>
laneArrayMap
=
new
HashMap
<>();
getPhaseRelationLanes
(
signalId
,
laneArrayMap
,
new
HashMap
<>());
obj
.
put
(
"laneInfos"
,
laneArrayMap
.
get
(
phaseId
));
}
/**
* 获取某一路口下海康相位和车道关系
*
* @param crossCode 信号机唯一编号
* @param laneArrayMap 相位与车道集合
* @param laneNoMap 转向和方向与车道关系集合
*/
private
void
getPhaseRelationLanes
(
String
crossCode
,
Map
<
Integer
,
JSONArray
>
laneArrayMap
,
Map
<
String
,
Integer
>
laneNoMap
)
throws
Exception
{
Map
<
String
,
String
>
path
=
getPathMapByApiCode
(
"queryPhaseRlatLanes"
);
Map
<
String
,
String
>
queryMap
=
new
HashMap
<>();
queryMap
.
put
(
"crossCode"
,
crossCode
);
String
strResult
=
ArtemisHttpUtil
.
doPostStringArtemis
(
artemisConfig
,
path
,
null
,
queryMap
,
null
,
"application/json"
,
null
);
JSONObject
object
=
JSON
.
parseObject
(
strResult
);
if
(
HK_SUCCESS_CODE
.
equals
(
object
.
getInteger
(
HK_CODE_KEY
)))
{
JSONObject
data
=
object
.
getJSONObject
(
"data"
);
JSONArray
phaseList
=
data
.
getJSONArray
(
"phaseList"
);
for
(
int
i
=
0
;
i
<
phaseList
.
size
();
i
++)
{
JSONObject
lanesObject
=
phaseList
.
getJSONObject
(
i
);
Integer
phaseNo
=
lanesObject
.
getInteger
(
"phaseNo"
);
JSONArray
laneList
=
lanesObject
.
getJSONArray
(
"lanes"
);
// 存入相位与车道集合
laneArrayMap
.
put
(
phaseNo
,
laneList
);
for
(
int
j
=
0
;
j
<
laneList
.
size
();
j
++)
{
JSONObject
laneObject
=
laneList
.
getJSONObject
(
j
);
String
key
=
laneObject
.
getString
(
"direction"
)
+
SEPARATOR_UNDER_LINE
+
laneObject
.
getString
(
"turn"
);
// 存入方向和转向对应的车道编号
laneNoMap
.
put
(
key
,
laneObject
.
getInteger
(
"laneNo"
));
}
}
}
}
@Override
public
<
T
>
Result
<
T
>
stepControl
(
String
signalId
,
String
sourceType
,
String
signalType
,
Integer
command
,
Integer
stepNum
)
{
if
(
command
.
equals
(
TRUE
))
return
updateManualStep
(
signalId
,
STEP_CONTROL
,
stepNum
);
else
return
controlSignal
(
signalId
,
CANCEL_STEP_CONTROL
);
if
(
command
.
equals
(
TRUE
))
{
return
updateManualStep
(
signalId
,
STEP_CONTROL
,
stepNum
);
}
else
{
return
controlSignal
(
signalId
,
CANCEL_STEP_CONTROL
);
}
}
@Override
...
...
@@ -170,8 +239,7 @@ public class HKControlCommandServiceImpl implements ControlCommandService {
private
<
T
>
Result
<
T
>
setSignalControl
(
JSONObject
bodyObjectParam
)
{
try
{
Map
<
String
,
String
>
path
=
Constants
.
getPathMapByApiCode
(
"updateLockPhase"
);
String
strResult
=
ArtemisHttpUtil
.
doPostStringArtemis
(
artemisConfig
,
path
,
bodyObjectParam
.
toJSONString
(),
null
,
null
,
"application/json"
,
null
);
String
strResult
=
ArtemisHttpUtil
.
doPostStringArtemis
(
artemisConfig
,
getPathMapByApiCode
(
"updateLockPhase"
),
bodyObjectParam
.
toJSONString
(),
null
,
null
,
"application/json"
,
null
);
JSONObject
object
=
JSON
.
parseObject
(
strResult
);
if
(
HK_SUCCESS_CODE
.
equals
(
object
.
getInteger
(
HK_CODE_KEY
)))
{
return
Result
.
success
();
...
...
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