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
7793515c
Commit
7793515c
authored
Jun 21, 2023
by
duanruiming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[update] 下发计划
parent
c10bb800
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
142 additions
and
5 deletions
+142
-5
CommandResultSign.java
...in/java/net/wanji/com/common/enums/CommandResultSign.java
+1
-1
SectionControlModeEnum.java
...va/net/wanji/com/common/enums/SectionControlModeEnum.java
+38
-0
DTControlCommandServiceImpl.java
.../service/controller/impl/DTControlCommandServiceImpl.java
+85
-4
CommonUtils.java
...service/src/main/java/net/wanji/com/util/CommonUtils.java
+18
-0
No files found.
signal-utc-dt-service/src/main/java/net/wanji/com/common/enums/CommandResultSign.java
View file @
7793515c
...
...
@@ -36,7 +36,7 @@ public enum CommandResultSign {
SET_STAGE_INFO
(
"3006"
,
"setStageInfoService"
),
SET_PHASE_SECURITY_INFO
(
"3007"
,
"setPhaseSecurityInfoService"
),
SET_SCHEME_INFO
(
"3009"
,
"setSchemeInfoService"
),
SET_DAILY_PLAN_INFO
(
"
3011
"
,
"setDailyPlanInfoService"
),
SET_DAILY_PLAN_INFO
(
"
0b0240
"
,
"setDailyPlanInfoService"
),
SET_SCHEDULES_INFO
(
"090240"
,
"setSchedulesInfoService"
),
SET_TRAFFIC_DATA_INFO
(
"3014"
,
"setTrafficDataInfoService"
),
SET_ALARM_INFO
(
"3015"
,
"setAlarmInfoService"
),
...
...
signal-utc-dt-service/src/main/java/net/wanji/com/common/enums/SectionControlModeEnum.java
0 → 100644
View file @
7793515c
package
net
.
wanji
.
com
.
common
.
enums
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
lombok.RequiredArgsConstructor
;
import
java.util.Objects
;
/**
* @author duanruiming
* @date 2023/06/21 9:31
*/
@Getter
@AllArgsConstructor
@RequiredArgsConstructor
public
enum
SectionControlModeEnum
{
FIXED_CYCLE
(
1
,
"21"
,
"定周期"
),
GREEN_WAVE
(
2
,
"13"
,
"绿灯"
),
YELLOW_CONTROL
(
3
,
"31"
,
"黄灯"
),
RED_CONTROL
(
4
,
"32"
,
"红灯"
),
CLOSED_CONTROL
(
5
,
"33"
,
"关灯"
),
SELF_CONTROL
(
6
,
"14"
,
"绿闪"
),
FULL_INDUCTION
(
7
,
"31"
,
"黄闪"
),
HALF_INDUCTION
(
8
,
"32"
,
"红闪"
);
private
Integer
wjControl
;
private
String
dtControlHex
;
private
String
message
;
public
static
String
getDtControlMode
(
Integer
wjControlHex
)
{
for
(
ControlModelEnum
value
:
ControlModelEnum
.
values
())
{
if
(
Objects
.
equals
(
wjControlHex
,
value
.
getWjControl
()))
{
return
value
.
getDtControlHex
();
}
}
return
null
;
}
}
signal-utc-dt-service/src/main/java/net/wanji/com/service/controller/impl/DTControlCommandServiceImpl.java
View file @
7793515c
...
...
@@ -5,6 +5,7 @@ import lombok.extern.slf4j.Slf4j;
import
net.wanji.com.cache.CrossInfoCache
;
import
net.wanji.com.common.constants.Constants
;
import
net.wanji.com.common.enums.ControlModelEnum
;
import
net.wanji.com.common.enums.SectionControlModeEnum
;
import
net.wanji.com.netty.NettyClient
;
import
net.wanji.com.pojo.netty.MessageResultPojo
;
import
net.wanji.com.service.controller.ControlCommandService
;
...
...
@@ -40,14 +41,94 @@ public class DTControlCommandServiceImpl implements ControlCommandService {
@Override
public
JsonViewObject
schemeSend
(
SchemeSendVO
schemeSendVO
)
throws
Exception
{
String
hex
=
""
;
MessageResultPojo
resultPojo
=
NettyClient
.
sendMessage
(
"ip"
,
5050
,
hex
,
"aabb"
,
300
);
String
crossId
=
schemeSendVO
.
getCrossCode
();
CrossInfoPO
crossInfoPO
=
crossInfoCache
.
getCrossInfoCache
().
get
(
crossId
);
List
<
SchemeSendVO
.
Pattern
>
patternList
=
schemeSendVO
.
getPatternList
();
StringBuilder
sb
=
new
StringBuilder
();
for
(
SchemeSendVO
.
Pattern
pattern
:
patternList
)
{
sb
.
append
(
buidSchemeHex
(
pattern
));
}
String
bodyValueLeght
=
String
.
format
(
"%02x"
,
patternList
.
size
()
*
6
);
// 调度数量 * 属性数量
String
message
=
String
.
format
(
Constants
.
COMMAND_SET_COMMON
,
Constants
.
COMMAND_SET
,
bodyValueLeght
,
sb
.
toString
());
String
schemeSign
=
StringUtils
.
join
(
Constants
.
COMMAND_SCHME_CONFIG
,
Constants
.
COMMAND_SET_REPLY
);
String
schemeMessageHex
=
Constants
.
buildMessage
(
message
);
MessageResultPojo
resultPojo
=
NettyClient
.
sendMessage
(
crossInfoPO
.
getIp
(),
crossInfoPO
.
getPort
(),
schemeMessageHex
,
schemeSign
,
300
);
if
(
Objects
.
nonNull
(
resultPojo
)
&&
StringUtils
.
isNotBlank
(
resultPojo
.
getHexMessageResult
()))
{
return
JsonViewObject
.
newInstance
().
success
(
"下发方案成功"
);
}
return
JsonViewObject
.
newInstance
().
success
(
"下发方案异常"
);
}
private
String
buidSchemeHex
(
SchemeSendVO
.
Pattern
pattern
)
{
return
null
;
}
@Override
public
JsonViewObject
planSend
(
PlanSendVO
planSendVO
)
throws
Exception
{
return
null
;
String
crossId
=
planSendVO
.
getCrossCode
();
CrossInfoPO
crossInfoPO
=
crossInfoCache
.
getCrossInfoCache
().
get
(
crossId
);
List
<
PlanSendVO
.
Plan
>
planList
=
planSendVO
.
getPlanList
();
StringBuilder
sb
=
new
StringBuilder
();
for
(
PlanSendVO
.
Plan
plan
:
planList
)
{
sb
.
append
(
buidDailyPlanHex
(
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
));
}
}
String
bodyValueLength
=
String
.
format
(
"%02x"
,
planList
.
size
()
*
5
);
// 调度数量 * 属性数量
String
message
=
String
.
format
(
Constants
.
COMMAND_SET_COMMON
,
Constants
.
COMMAND_SET
,
bodyValueLength
,
sb
.
substring
(
0
,
sb
.
length
()
-
4
));
String
planSign
=
StringUtils
.
join
(
Constants
.
COMMAND_DAILYPLAN_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
()))
{
return
JsonViewObject
.
newInstance
().
success
(
"下发计划成功"
);
}
return
JsonViewObject
.
newInstance
().
success
(
"下发计划异常"
);
}
private
String
buidDailyPlanHex
(
PlanSendVO
.
Plan
plan
)
{
String
planNo
=
plan
.
getPlanNo
();
List
<
PlanSendVO
.
Plan
.
Section
>
sectionList
=
plan
.
getSectionList
();
StringBuilder
hourMinuteSb
=
new
StringBuilder
();
StringBuilder
schemeNoSb
=
new
StringBuilder
();
StringBuilder
controlModelSb
=
new
StringBuilder
();
if
(!
CollectionUtils
.
isEmpty
(
sectionList
))
{
for
(
PlanSendVO
.
Plan
.
Section
section
:
sectionList
)
{
String
schemeNo
=
section
.
getPatternNo
();
String
schemeHex
=
String
.
format
(
"%02x"
,
Integer
.
valueOf
(
schemeNo
));
schemeNoSb
.
insert
(
0
,
schemeHex
).
insert
(
0
,
schemeHex
);
// 开始时间结束时间两个时间段,插入两次
String
beginTime
=
section
.
getBeginTime
();
String
startHourMinuteHex
=
CommonUtils
.
getHourMinuteHex
(
beginTime
);
String
endTime
=
section
.
getEndTime
();
String
endHourMinuteHex
=
CommonUtils
.
getHourMinuteHex
(
endTime
);
hourMinuteSb
.
insert
(
0
,
startHourMinuteHex
).
insert
(
0
,
endHourMinuteHex
);
String
controlMode
=
section
.
getControlMode
();
String
dtControlMode
=
SectionControlModeEnum
.
getDtControlMode
(
Integer
.
valueOf
(
controlMode
));
controlModelSb
.
insert
(
0
,
dtControlMode
).
insert
(
0
,
dtControlMode
);
}
}
String
matchStr
=
"0b02%s%s"
;
StringBuffer
sb
=
new
StringBuffer
();
for
(
int
i
=
2
;
i
<=
5
;
i
++)
{
// 属性
sb
.
append
(
String
.
format
(
matchStr
,
String
.
format
(
"%02x"
,
i
),
String
.
format
(
"%02x"
,
Integer
.
parseInt
(
planNo
))));
if
(
i
==
2
)
{
sb
.
append
(
"01"
).
append
(
String
.
format
(
"%02x"
,
i
)).
append
(
"64"
);
}
if
(
i
==
3
)
{
sb
.
append
(
StringUtils
.
leftPad
(
hourMinuteSb
.
toString
(),
192
,
"0"
)).
append
(
String
.
format
(
"%02x"
,
i
)).
append
(
"34"
);
}
if
(
i
==
4
)
{
sb
.
append
(
StringUtils
.
leftPad
(
schemeNoSb
.
toString
(),
96
,
"0"
)).
append
(
String
.
format
(
"%02x"
,
i
)).
append
(
"34"
);
}
if
(
i
==
5
)
{
sb
.
append
(
StringUtils
.
leftPad
(
controlModelSb
.
toString
(),
96
,
"0"
)).
append
(
String
.
format
(
"%02x"
,
i
)).
append
(
"05"
);
}
}
return
sb
.
toString
();
}
@Override
...
...
@@ -61,7 +142,7 @@ public class DTControlCommandServiceImpl implements ControlCommandService {
}
String
bodyValueLeght
=
String
.
format
(
"%02x"
,
schedules
.
size
()
*
6
);
// 调度数量 * 属性数量
String
message
=
String
.
format
(
Constants
.
COMMAND_SET_COMMON
,
Constants
.
COMMAND_SET
,
bodyValueLeght
,
sb
.
toString
());
String
scheduleSign
=
StringUtils
.
join
(
Constants
.
COMMAND_SCHEDULE_CONFIG
,
Constants
.
COMMAND_SET_REPLY
);
String
scheduleSign
=
StringUtils
.
join
(
"0901"
,
Constants
.
COMMAND_SET_REPLY
);
String
scheduleMessage
=
Constants
.
buildMessage
(
message
);
MessageResultPojo
resultPojo
=
NettyClient
.
sendMessage
(
crossInfoPO
.
getIp
(),
crossInfoPO
.
getPort
(),
scheduleMessage
,
scheduleSign
,
300
);
if
(
Objects
.
nonNull
(
resultPojo
)
&&
StringUtils
.
isNotBlank
(
resultPojo
.
getHexMessageResult
()))
{
...
...
signal-utc-dt-service/src/main/java/net/wanji/com/util/CommonUtils.java
View file @
7793515c
...
...
@@ -8,6 +8,11 @@ import cn.hutool.core.util.HexUtil;
*/
public
class
CommonUtils
{
/**
* 将数组转化为16进制字符串
* @param array
* @return
*/
public
static
String
getHex4Array
(
int
[]
array
)
{
StringBuilder
sb
=
new
StringBuilder
();
for
(
int
i
:
array
)
{
...
...
@@ -16,4 +21,17 @@ public class CommonUtils {
Integer
binary
=
Integer
.
valueOf
(
sb
.
reverse
().
toString
(),
2
);
return
HexUtil
.
toHex
(
binary
);
}
/**
* 将时间转化为16进制 00:00 --> 061E0
* @param time
* @return
*/
public
static
String
getHourMinuteHex
(
String
time
)
{
StringBuffer
sb
=
new
StringBuffer
();
String
[]
split
=
time
.
split
(
":"
);
String
hour
=
String
.
format
(
"%02x"
,
Integer
.
valueOf
(
split
[
0
]));
String
minute
=
String
.
format
(
"%02x"
,
Integer
.
valueOf
(
split
[
1
]));
return
sb
.
append
(
hour
).
append
(
minute
).
toString
();
}
}
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