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
6aeb1a5b
Commit
6aeb1a5b
authored
Jun 25, 2023
by
duanruiming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[update] 下发方案参数
parent
3f8df9a1
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
77 additions
and
8 deletions
+77
-8
DTControlCommandServiceImpl.java
.../service/controller/impl/DTControlCommandServiceImpl.java
+77
-8
No files found.
signal-utc-dt-service/src/main/java/net/wanji/com/service/controller/impl/DTControlCommandServiceImpl.java
View file @
6aeb1a5b
...
...
@@ -45,7 +45,7 @@ public class DTControlCommandServiceImpl implements ControlCommandService {
CrossInfoPO
crossInfoPO
=
crossInfoCache
.
getCrossInfoCache
().
get
(
crossId
);
List
<
SchemeSendVO
.
Pattern
>
schemeVOList
=
schemeSendVO
.
getPatternList
();
setSchemePhaseStageInfo
(
crossInfoPO
,
schemeVOList
);
return
JsonViewObject
.
newInstance
().
success
(
"下发
成功异常
"
);
return
JsonViewObject
.
newInstance
().
success
(
"下发
方案成功
"
);
}
private
void
setSchemePhaseStageInfo
(
CrossInfoPO
crossInfoPO
,
List
<
SchemeSendVO
.
Pattern
>
schemeVOList
)
{
...
...
@@ -55,17 +55,86 @@ public class DTControlCommandServiceImpl implements ControlCommandService {
}
private
void
setSchemeInfo
(
CrossInfoPO
crossInfoPO
,
List
<
SchemeSendVO
.
Pattern
>
schemeVOList
)
{
StringBuffer
sb
=
new
StringBuffer
();
for
(
SchemeSendVO
.
Pattern
schemeVO
:
schemeVOList
)
{
String
schemeNo
=
schemeVO
.
getPatternNo
();
String
cycle
=
schemeVO
.
getCycle
();
String
offset
=
schemeVO
.
getOffset
();
List
<
SchemeSendVO
.
Pattern
.
Ring
>
rings
=
schemeVO
.
getRings
();
for
(
SchemeSendVO
.
Pattern
.
Ring
ring
:
rings
)
{
String
ringNo
=
ring
.
getRingNo
();
List
<
SchemeSendVO
.
Pattern
.
Ring
.
Phase
>
phaseList
=
ring
.
getPhaseList
();
String
matchStr
=
"0902%s%s"
;
for
(
int
i
=
2
;
i
<=
8
;
i
++)
{
sb
.
append
(
String
.
format
(
matchStr
,
String
.
format
(
"%02x"
,
i
),
String
.
format
(
"%02x"
,
Integer
.
valueOf
(
schemeNo
))));
if
(
i
==
2
)
{
sb
.
append
(
"01"
).
append
(
String
.
format
(
"%02x"
,
i
)).
append
(
"08"
);
//路口序号 + 序号
}
if
(
i
==
3
)
{
String
cycleHex
=
StringUtils
.
leftPad
(
String
.
format
(
"%02x"
,
Integer
.
valueOf
(
cycle
)),
8
,
"0"
);
sb
.
append
(
cycleHex
).
append
(
String
.
format
(
"%02x"
,
i
)).
append
(
"05"
);
}
if
(
i
==
4
)
{
//协调序号 默认00
sb
.
append
(
"00"
).
append
(
String
.
format
(
"%02x"
,
i
)).
append
(
"06"
);
}
if
(
i
==
5
)
{
String
offsetHex
=
StringUtils
.
leftPad
(
String
.
format
(
"%02x"
,
Integer
.
valueOf
(
offset
)),
4
,
"0"
);
sb
.
append
(
offsetHex
).
append
(
String
.
format
(
"%02x"
,
i
)).
append
(
"06"
);
}
if
(
i
==
6
)
{
String
phaseStageIdChain
=
getPhaseStageIdChainHex
(
schemeVO
.
getRings
());
sb
.
append
(
phaseStageIdChain
).
append
(
String
.
format
(
"%02x"
,
i
)).
append
(
"24"
);
}
if
(
i
==
7
)
{
String
phaseStageIdChain
=
getPhaseStageIdTimeChainHex
(
schemeVO
.
getRings
());
sb
.
append
(
phaseStageIdChain
).
append
(
String
.
format
(
"%02x"
,
i
)).
append
(
"14"
);
}
if
(
i
==
7
)
{
String
phaseStageIdTypeChain
=
getPhaseStageIdTypeChainHex
(
schemeVO
.
getRings
());
sb
.
append
(
phaseStageIdTypeChain
).
append
(
String
.
format
(
"%02x"
,
i
)).
append
(
"05"
);
}
}
}
String
bodyValueLength
=
String
.
format
(
"%02x"
,
schemeVOList
.
size
()
*
7
);
// 调度数量 * 属性数量
String
message
=
String
.
format
(
Constants
.
COMMAND_SET_COMMON
,
Constants
.
COMMAND_SET
,
bodyValueLength
,
sb
.
substring
(
0
,
sb
.
length
()
-
4
));
String
planSign
=
StringUtils
.
join
(
Constants
.
COMMAND_SCHME_CONFIG
,
Constants
.
COMMAND_SET_REPLY
);
String
planMessageHex
=
Constants
.
buildMessage
(
message
);
MessageResultPojo
resultPojo
=
NettyClient
.
sendMessage
(
crossInfoPO
.
getIp
(),
crossInfoPO
.
getPort
(),
planMessageHex
,
planSign
,
300
);
if
(
Objects
.
nonNull
(
resultPojo
)
&&
StringUtils
.
isNotBlank
(
resultPojo
.
getHexMessageResult
()))
{
log
.
info
(
"下发方案成功"
);
}
}
private
String
getPhaseStageIdTypeChainHex
(
List
<
SchemeSendVO
.
Pattern
.
Ring
>
rings
)
{
StringBuffer
sb
=
new
StringBuffer
();
for
(
SchemeSendVO
.
Pattern
.
Ring
ring
:
rings
)
{
// 都是单环模式 相位就是阶段
List
<
SchemeSendVO
.
Pattern
.
Ring
.
Phase
>
phaseList
=
ring
.
getPhaseList
();
for
(
SchemeSendVO
.
Pattern
.
Ring
.
Phase
phase
:
phaseList
)
{
sb
.
insert
(
0
,
"01"
);
}
}
return
StringUtils
.
leftPad
(
sb
.
toString
(),
32
,
"0"
);
}
private
String
getPhaseStageIdTimeChainHex
(
List
<
SchemeSendVO
.
Pattern
.
Ring
>
rings
)
{
StringBuffer
sb
=
new
StringBuffer
();
for
(
SchemeSendVO
.
Pattern
.
Ring
ring
:
rings
)
{
// 都是单环模式 相位就是阶段
List
<
SchemeSendVO
.
Pattern
.
Ring
.
Phase
>
phaseList
=
ring
.
getPhaseList
();
for
(
SchemeSendVO
.
Pattern
.
Ring
.
Phase
phase
:
phaseList
)
{
String
phaseTime
=
phase
.
getPhaseTime
();
sb
.
insert
(
0
,
String
.
format
(
"%02x"
,
Integer
.
valueOf
(
phaseTime
)));
}
}
return
StringUtils
.
leftPad
(
sb
.
toString
(),
64
,
"0"
);
}
private
String
getPhaseStageIdChainHex
(
List
<
SchemeSendVO
.
Pattern
.
Ring
>
rings
)
{
StringBuffer
sb
=
new
StringBuffer
();
for
(
SchemeSendVO
.
Pattern
.
Ring
ring
:
rings
)
{
// 都是单环模式 相位就是阶段
List
<
SchemeSendVO
.
Pattern
.
Ring
.
Phase
>
phaseList
=
ring
.
getPhaseList
();
for
(
SchemeSendVO
.
Pattern
.
Ring
.
Phase
phase
:
phaseList
)
{
String
phaseNo
=
phase
.
getPhaseNo
();
sb
.
insert
(
0
,
String
.
format
(
"%02x"
,
Integer
.
valueOf
(
phaseNo
)));
}
}
return
StringUtils
.
leftPad
(
sb
.
toString
(),
32
,
"0"
);
}
private
void
setPhaseStageInfo
(
CrossInfoPO
crossInfoPO
,
List
<
SchemeSendVO
.
Pattern
>
schemeVOList
)
{
...
...
@@ -80,14 +149,14 @@ public class DTControlCommandServiceImpl implements ControlCommandService {
List
<
PlanSendVO
.
Plan
>
planList
=
planSendVO
.
getPlanList
();
StringBuilder
sb
=
new
StringBuilder
();
for
(
PlanSendVO
.
Plan
plan
:
planList
)
{
sb
.
append
(
buidDailyPlanHex
(
plan
));
sb
.
append
(
bui
l
dDailyPlanHex
(
plan
));
}
// 只下发有效计划返回报错
if
(
planList
.
size
()
<
8
)
{
for
(
int
i
=
planList
.
size
()
+
1
;
i
<=
8
-
planList
.
size
();
i
++)
{
PlanSendVO
.
Plan
plan
=
new
PlanSendVO
.
Plan
();
plan
.
setPlanNo
(
String
.
valueOf
(
i
));
sb
.
append
(
buidDailyPlanHex
(
plan
));
sb
.
append
(
bui
l
dDailyPlanHex
(
plan
));
}
}
String
bodyValueLength
=
String
.
format
(
"%02x"
,
planList
.
size
()
*
5
);
// 调度数量 * 属性数量
...
...
@@ -101,7 +170,7 @@ public class DTControlCommandServiceImpl implements ControlCommandService {
return
JsonViewObject
.
newInstance
().
success
(
"下发计划异常"
);
}
private
String
buidDailyPlanHex
(
PlanSendVO
.
Plan
plan
)
{
private
String
bui
l
dDailyPlanHex
(
PlanSendVO
.
Plan
plan
)
{
String
planNo
=
plan
.
getPlanNo
();
List
<
PlanSendVO
.
Plan
.
Section
>
sectionList
=
plan
.
getSectionList
();
StringBuilder
hourMinuteSb
=
new
StringBuilder
();
...
...
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