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
15e5e3d1
Commit
15e5e3d1
authored
Jun 29, 2023
by
duanruiming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[add] 添加海信模块
parent
2153be0a
Changes
90
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
90 changed files
with
4338 additions
and
0 deletions
+4338
-0
pom.xml
signal-utc-hisense-service/pom.xml
+249
-0
package.xml
signal-utc-hisense-service/src/main/assembly/package.xml
+49
-0
HisenseApplication.java
...c/main/java/net/wanji/utc/hisense/HisenseApplication.java
+35
-0
CrossInfoCache.java
...main/java/net/wanji/utc/hisense/cache/CrossInfoCache.java
+66
-0
SignalDataCache.java
...ain/java/net/wanji/utc/hisense/cache/SignalDataCache.java
+24
-0
NettyMessageCache.java
.../net/wanji/utc/hisense/cache/netty/NettyMessageCache.java
+21
-0
Constants.java
...ava/net/wanji/utc/hisense/common/constants/Constants.java
+1232
-0
CommandResultSignEnum.java
...wanji/utc/hisense/common/enums/CommandResultSignEnum.java
+32
-0
ControlModelEnum.java
.../net/wanji/utc/hisense/common/enums/ControlModelEnum.java
+39
-0
ControlTypeEnum.java
...a/net/wanji/utc/hisense/common/enums/ControlTypeEnum.java
+39
-0
PhaseLightColorEnum.java
...t/wanji/utc/hisense/common/enums/PhaseLightColorEnum.java
+42
-0
SectionControlModeEnum.java
...anji/utc/hisense/common/enums/SectionControlModeEnum.java
+38
-0
SignalInterfaceTypeEnum.java
...nji/utc/hisense/common/enums/SignalInterfaceTypeEnum.java
+48
-0
Swagger2.java
.../src/main/java/net/wanji/utc/hisense/config/Swagger2.java
+42
-0
ControlCommandController.java
...anji/utc/hisense/controller/ControlCommandController.java
+182
-0
SignalStatusController.java
.../wanji/utc/hisense/controller/SignalStatusController.java
+63
-0
StaticInfoController.java
...et/wanji/utc/hisense/controller/StaticInfoController.java
+79
-0
NettyClient.java
...rc/main/java/net/wanji/utc/hisense/netty/NettyClient.java
+112
-0
MessageDecoder.java
...ava/net/wanji/utc/hisense/netty/codec/MessageDecoder.java
+24
-0
MessageEnCoder.java
...ava/net/wanji/utc/hisense/netty/codec/MessageEnCoder.java
+25
-0
CommandResultSign.java
...anji/utc/hisense/netty/commandsign/CommandResultSign.java
+15
-0
NettyServerHandler.java
...t/wanji/utc/hisense/netty/handler/NettyServerHandler.java
+80
-0
CommandPojo.java
...in/java/net/wanji/utc/hisense/netty/pojo/CommandPojo.java
+16
-0
CommandResponseFactory.java
...ji/utc/hisense/netty/response/CommandResponseFactory.java
+11
-0
HeartBeatService.java
...nji/utc/hisense/netty/response/impl/HeartBeatService.java
+48
-0
GetAlarmInfoService.java
.../hisense/netty/response/impl/get/GetAlarmInfoService.java
+17
-0
GetBaseInfoService.java
...c/hisense/netty/response/impl/get/GetBaseInfoService.java
+17
-0
GetDailyPlanInfoService.java
...ense/netty/response/impl/get/GetDailyPlanInfoService.java
+17
-0
GetDetectorInfoService.java
...sense/netty/response/impl/get/GetDetectorInfoService.java
+17
-0
GetDeviceInfoService.java
...hisense/netty/response/impl/get/GetDeviceInfoService.java
+18
-0
GetFaultInfoService.java
.../hisense/netty/response/impl/get/GetFaultInfoService.java
+17
-0
GetLightsGroupInfoService.java
...se/netty/response/impl/get/GetLightsGroupInfoService.java
+17
-0
GetLightsStatusInfoService.java
...e/netty/response/impl/get/GetLightsStatusInfoService.java
+17
-0
GetPhaseInfoService.java
.../hisense/netty/response/impl/get/GetPhaseInfoService.java
+17
-0
GetPhaseSecurityInfoService.java
.../netty/response/impl/get/GetPhaseSecurityInfoService.java
+17
-0
GetRunningStateInfoService.java
...e/netty/response/impl/get/GetRunningStateInfoService.java
+23
-0
GetSchedulesInfoService.java
...ense/netty/response/impl/get/GetSchedulesInfoService.java
+17
-0
GetSchemeInfoService.java
...hisense/netty/response/impl/get/GetSchemeInfoService.java
+17
-0
GetStageInfoService.java
.../hisense/netty/response/impl/get/GetStageInfoService.java
+17
-0
GetStageStatusService.java
...isense/netty/response/impl/get/GetStageStatusService.java
+17
-0
GetTrafficDataInfoService.java
...se/netty/response/impl/get/GetTrafficDataInfoService.java
+17
-0
SetAlarmInfoService.java
.../hisense/netty/response/impl/set/SetAlarmInfoService.java
+17
-0
SetBaseInfoService.java
...c/hisense/netty/response/impl/set/SetBaseInfoService.java
+17
-0
SetControlInfoService.java
...isense/netty/response/impl/set/SetControlInfoService.java
+17
-0
SetDailyPlanInfoService.java
...ense/netty/response/impl/set/SetDailyPlanInfoService.java
+17
-0
SetDetectorInfoService.java
...sense/netty/response/impl/set/SetDetectorInfoService.java
+17
-0
SetDeviceInfoService.java
...hisense/netty/response/impl/set/SetDeviceInfoService.java
+17
-0
SetFaultInfoService.java
.../hisense/netty/response/impl/set/SetFaultInfoService.java
+17
-0
SetLightsGroupInfoService.java
...se/netty/response/impl/set/SetLightsGroupInfoService.java
+17
-0
SetPhaseInfoService.java
.../hisense/netty/response/impl/set/SetPhaseInfoService.java
+17
-0
SetPhaseSecurityInfoService.java
.../netty/response/impl/set/SetPhaseSecurityInfoService.java
+17
-0
SetSchedulesInfoService.java
...ense/netty/response/impl/set/SetSchedulesInfoService.java
+17
-0
SetSchemeInfoService.java
...hisense/netty/response/impl/set/SetSchemeInfoService.java
+17
-0
SetStageInfoService.java
.../hisense/netty/response/impl/set/SetStageInfoService.java
+17
-0
SetTrafficDataInfoService.java
...se/netty/response/impl/set/SetTrafficDataInfoService.java
+17
-0
DailyPlanInfoPojo.java
...net/wanji/utc/hisense/pojo/convert/DailyPlanInfoPojo.java
+19
-0
FaultInfoPojo.java
...ava/net/wanji/utc/hisense/pojo/convert/FaultInfoPojo.java
+11
-0
LightsInfoPojo.java
...va/net/wanji/utc/hisense/pojo/convert/LightsInfoPojo.java
+49
-0
PhaseInfoPojo.java
...ava/net/wanji/utc/hisense/pojo/convert/PhaseInfoPojo.java
+37
-0
PhaseStageInfoPojo.java
...et/wanji/utc/hisense/pojo/convert/PhaseStageInfoPojo.java
+16
-0
PhaseStageStatusPojo.java
.../wanji/utc/hisense/pojo/convert/PhaseStageStatusPojo.java
+16
-0
RunningLightsStatusPojo.java
...nji/utc/hisense/pojo/convert/RunningLightsStatusPojo.java
+53
-0
RunningStatusPojo.java
...net/wanji/utc/hisense/pojo/convert/RunningStatusPojo.java
+15
-0
ScheduleInfoPojo.java
.../net/wanji/utc/hisense/pojo/convert/ScheduleInfoPojo.java
+21
-0
SchemeInfoPojo.java
...va/net/wanji/utc/hisense/pojo/convert/SchemeInfoPojo.java
+51
-0
MessageResultPojo.java
...a/net/wanji/utc/hisense/pojo/netty/MessageResultPojo.java
+37
-0
CommonService.java
...ain/java/net/wanji/utc/hisense/service/CommonService.java
+37
-0
ControlCommandService.java
...utc/hisense/service/controller/ControlCommandService.java
+91
-0
SignalStatusService.java
...i/utc/hisense/service/controller/SignalStatusService.java
+23
-0
StaticInfoService.java
...nji/utc/hisense/service/controller/StaticInfoService.java
+24
-0
ControlCommandServiceImpl.java
...se/service/controller/impl/ControlCommandServiceImpl.java
+63
-0
SignalStatusServiceImpl.java
...ense/service/controller/impl/SignalStatusServiceImpl.java
+84
-0
StaticInfoServiceImpl.java
...isense/service/controller/impl/StaticInfoServiceImpl.java
+46
-0
ProtocolConversion.java
...anji/utc/hisense/service/protocol/ProtocolConversion.java
+21
-0
DailyPlanProtocolConversionService.java
...rotocol/impl/base/DailyPlanProtocolConversionService.java
+20
-0
DetectorProtocolConversionService.java
...protocol/impl/base/DetectorProtocolConversionService.java
+20
-0
LightsGroupProtocolConvertionService.java
...tocol/impl/base/LightsGroupProtocolConvertionService.java
+20
-0
PhaseProtocolConversionService.java
...ce/protocol/impl/base/PhaseProtocolConversionService.java
+23
-0
PhaseSecurityProtocolConversionService.java
...col/impl/base/PhaseSecurityProtocolConversionService.java
+20
-0
ScheduleProtocolConversionService.java
...protocol/impl/base/ScheduleProtocolConversionService.java
+20
-0
SchemeProtocolConversionService.java
...e/protocol/impl/base/SchemeProtocolConversionService.java
+20
-0
SignalDeviceProtocolConversionService.java
...ocol/impl/base/SignalDeviceProtocolConversionService.java
+28
-0
StageProtocolConversionService.java
...ce/protocol/impl/base/StageProtocolConversionService.java
+20
-0
ControlProtocolConversionService.java
...otocol/impl/control/ControlProtocolConversionService.java
+20
-0
RunningStateProtocolConversionService.java
...ol/impl/status/RunningStateProtocolConversionService.java
+20
-0
CRC16Utils.java
.../src/main/java/net/wanji/utc/hisense/util/CRC16Utils.java
+46
-0
CommonUtils.java
...src/main/java/net/wanji/utc/hisense/util/CommonUtils.java
+127
-0
bootstrap-dev.yaml
...utc-hisense-service/src/main/resources/bootstrap-dev.yaml
+15
-0
bootstrap.yaml
signal-utc-hisense-service/src/main/resources/bootstrap.yaml
+3
-0
logback-spring.xml
...utc-hisense-service/src/main/resources/logback-spring.xml
+74
-0
No files found.
signal-utc-hisense-service/pom.xml
0 → 100644
View file @
15e5e3d1
This diff is collapsed.
Click to expand it.
signal-utc-hisense-service/src/main/assembly/package.xml
0 → 100644
View file @
15e5e3d1
<assembly
xmlns=
"http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd"
>
<id>
1.0
</id>
<formats>
<format>
tar.gz
</format>
<format>
dir
</format>
</formats>
<includeBaseDirectory>
true
</includeBaseDirectory>
<fileSets>
<!-- for bin -->
<fileSet>
<directory>
src/main/bin
</directory>
<includes>
<include>
*.*
</include>
</includes>
<directoryMode>
775
</directoryMode>
<outputDirectory>
bin/
</outputDirectory>
</fileSet>
<!-- for configs -->
<fileSet>
<directory>
src/main/resources
</directory>
<includes>
<include>
*.yml
</include>
<include>
*.xml
</include>
</includes>
<outputDirectory>
/
</outputDirectory>
</fileSet>
<!-- for jar -->
<fileSet>
<directory>
${project.build.directory}
</directory>
<outputDirectory>
/
</outputDirectory>
<includes>
<include>
*.jar
</include>
</includes>
</fileSet>
</fileSets>
<!-- for lib -->
<dependencySets>
<dependencySet>
<outputDirectory>
lib/
</outputDirectory>
<scope>
runtime
</scope>
<excludes>
<exclude>
${groupId}:${artifactId}
</exclude>
</excludes>
</dependencySet>
</dependencySets>
</assembly>
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/HisenseApplication.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
;
import
net.wanji.utc.hisense.netty.NettyClient
;
import
org.mybatis.spring.annotation.MapperScan
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.boot.CommandLineRunner
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.scheduling.annotation.EnableScheduling
;
import
org.springframework.transaction.annotation.EnableTransactionManagement
;
/**
* @author duanruiming
* @date 2023/05/08 13:37
*/
@SpringBootApplication
(
scanBasePackages
=
{
"net.wanji.utc.hisense"
,
"net.wanji.databus"
,
"net.wanji.common"
})
@MapperScan
(
basePackages
=
{
"net.wanji.databus.dao.mapper"
})
@EnableTransactionManagement
@EnableScheduling
@SuppressWarnings
(
"all"
)
public
class
HisenseApplication
implements
CommandLineRunner
{
@Value
(
"${portParam.localPort}"
)
int
localPort
;
@Value
(
"${portParam.remotePort}"
)
int
remoteProt
;
public
static
void
main
(
String
[]
args
)
{
SpringApplication
.
run
(
HisenseApplication
.
class
,
args
);
}
@Override
public
void
run
(
String
...
args
)
throws
Exception
{
NettyClient
.
connection
(
localPort
,
remoteProt
);
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/cache/CrossInfoCache.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
cache
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.common.enums.BaseEnum
;
import
net.wanji.common.utils.tool.StringUtils
;
import
net.wanji.databus.dao.mapper.CrossInfoMapper
;
import
net.wanji.databus.dao.mapper.ManufacturerInfoMapper
;
import
net.wanji.databus.po.CrossInfoPO
;
import
org.springframework.boot.ApplicationArguments
;
import
org.springframework.boot.ApplicationRunner
;
import
org.springframework.stereotype.Component
;
import
javax.annotation.Resource
;
import
java.util.*
;
/**
* @author duanruiming
* @date 2023/05/09 14:30
*/
@Slf4j
@Component
@SuppressWarnings
(
"unchecked"
)
public
class
CrossInfoCache
implements
ApplicationRunner
{
@Resource
private
CrossInfoMapper
crossInfoMapper
;
@Resource
private
ManufacturerInfoMapper
manufacturerInfoMapper
;
private
static
final
Map
<
String
,
CrossInfoPO
>
crossInfoMap
=
new
HashMap
<>();
public
Map
<
String
,
CrossInfoPO
>
getCrossInfoCache
()
{
if
(!
crossInfoMap
.
isEmpty
())
{
return
crossInfoMap
;
}
return
Collections
.
EMPTY_MAP
;
}
public
static
CrossInfoPO
getCrossInfoByIp
(
String
ip
)
{
if
(!
crossInfoMap
.
isEmpty
())
{
for
(
Map
.
Entry
<
String
,
CrossInfoPO
>
entry
:
crossInfoMap
.
entrySet
())
{
CrossInfoPO
crossInfoPO
=
entry
.
getValue
();
if
(
StringUtils
.
equalsIgnoreCase
(
crossInfoPO
.
getIp
(),
ip
))
{
return
crossInfoPO
;
}
}
}
return
null
;
}
@Override
public
void
run
(
ApplicationArguments
args
)
throws
Exception
{
init
();
}
private
void
init
()
{
Integer
manufacturerId
=
manufacturerInfoMapper
.
selectIdByCode
(
BaseEnum
.
VendorTypeEnum
.
DT
.
getNick
());
List
<
CrossInfoPO
>
CrossInfoPOS
=
crossInfoMapper
.
selectAll
();
for
(
CrossInfoPO
crossInfoPO
:
CrossInfoPOS
)
{
if
(
Objects
.
nonNull
(
manufacturerId
)
&&
Objects
.
equals
(
manufacturerId
,
crossInfoPO
.
getManufacturerId
()))
{
crossInfoMap
.
put
(
crossInfoPO
.
getId
(),
crossInfoPO
);
}
}
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/cache/SignalDataCache.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
cache
;
import
net.wanji.utc.hisense.pojo.convert.PhaseInfoPojo
;
import
net.wanji.utc.hisense.pojo.convert.PhaseStageInfoPojo
;
import
net.wanji.utc.hisense.pojo.convert.RunningLightsStatusPojo
;
import
net.wanji.utc.hisense.pojo.convert.SchemeInfoPojo
;
import
org.springframework.stereotype.Component
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
* @author duanruiming
* @date 2023/06/19 15:28
*/
@Component
public
class
SignalDataCache
{
public
static
final
Map
<
String
,
List
<
SchemeInfoPojo
>>
schemeInfoCache
=
new
HashMap
<>();
public
static
final
Map
<
String
,
List
<
PhaseStageInfoPojo
>>
phaseStageInfoCache
=
new
HashMap
<>();
public
static
final
Map
<
String
,
List
<
PhaseInfoPojo
>>
phaseInfoCache
=
new
HashMap
<>();
// 海信推送灯态数据
public
static
final
Map
<
String
,
RunningLightsStatusPojo
>
runningStateInfoCache
=
new
HashMap
<>();
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/cache/netty/NettyMessageCache.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
cache
.
netty
;
import
net.wanji.utc.hisense.pojo.netty.MessageResultPojo
;
import
net.wanji.databus.po.CrossInfoPO
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
* @author duanruiming
* @date 2023/05/08 14:07
*/
public
class
NettyMessageCache
{
public
static
final
Map
<
String
,
MessageResultPojo
>
NETTY_RESULT_TIMEOUT_MAP
=
new
HashMap
<>();
/**
* key: ip/port:command
*/
public
static
final
Map
<
String
,
CrossInfoPO
>
COMMAND_RESULT_SIGN_MAP
=
new
HashMap
<>();
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/common/constants/Constants.java
0 → 100644
View file @
15e5e3d1
This diff is collapsed.
Click to expand it.
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/common/enums/CommandResultSignEnum.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
common
.
enums
;
import
lombok.Getter
;
import
net.wanji.utc.hisense.pojo.convert.RunningLightsStatusPojo
;
import
java.util.Objects
;
/**
* @author duanruiming
* @date 2023/05/08 10:17
*/
@Getter
public
enum
CommandResultSignEnum
{
GET_RUNNING_STATE_INFO
(
RunningLightsStatusPojo
.
class
,
"getRunningStateInfoService"
);
private
final
Object
resultPojo
;
private
final
String
className
;
CommandResultSignEnum
(
Class
<?>
resultPojo
,
String
className
)
{
this
.
className
=
className
;
this
.
resultPojo
=
resultPojo
;
}
public
static
String
getResultPojo
(
Object
pojo
)
{
for
(
CommandResultSignEnum
value
:
CommandResultSignEnum
.
values
())
{
if
(
Objects
.
equals
(
value
.
getResultPojo
(),
RunningLightsStatusPojo
.
class
))
{
return
value
.
getClassName
();
}
}
return
null
;
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/common/enums/ControlModelEnum.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
common
.
enums
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
lombok.RequiredArgsConstructor
;
import
java.util.Objects
;
/**
* @author duanruiming
* @date 2023/06/19 10:07
*/
@Getter
@AllArgsConstructor
@RequiredArgsConstructor
public
enum
ControlModelEnum
{
FIXED_CYCLE
(
1
,
2
,
"定周期"
),
GREEN_WAVE
(
2
,
0
,
"绿波协调"
),
YELLOW_CONTROL
(
3
,
1
,
"黄闪"
),
RED_CONTROL
(
4
,
7
,
"全红"
),
CLOSED_CONTROL
(
5
,
6
,
"关灯"
),
SELF_CONTROL
(
6
,
13
,
"单点自适应 -> 协调优化"
),
FULL_INDUCTION
(
7
,
3
,
"全感应 -> 本地感应"
),
HALF_INDUCTION
(
8
,
3
,
"半感应"
);
private
Integer
wjControl
;
private
Integer
hisenseControlHex
;
private
String
message
;
public
static
Integer
getWjControlMode
(
Integer
hisenseControlHex
)
{
for
(
ControlModelEnum
value
:
ControlModelEnum
.
values
())
{
if
(
Objects
.
equals
(
hisenseControlHex
,
value
.
getHisenseControlHex
()))
{
return
value
.
getWjControl
();
}
}
return
null
;
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/common/enums/ControlTypeEnum.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
common
.
enums
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
lombok.RequiredArgsConstructor
;
import
java.util.Objects
;
/**
* @author duanruiming
* @date 2023/06/19 10:07
*/
@Getter
@AllArgsConstructor
@RequiredArgsConstructor
public
enum
ControlTypeEnum
{
FIXED_CYCLE
(
1
,
6
,
"定周期-->时段表控制"
),
ALL_RED
(
2
,
3
,
"全红"
),
YELLOW_CONTROL
(
3
,
3
,
"黄闪"
),
LOCK_CONTROL
(
4
,
3
,
"锁定 --> 中心手动控制"
),
CLOSED_CONTROL
(
5
,
2
,
"中心优化"
),
SELF_CONTROL
(
6
,
0
,
"MEC优化"
),
FULL_INDUCTION
(
7
,
5
,
"现场手动-->面板手动"
),
LOWER_LEVEL
(
8
,
4
,
"降级"
);
private
Integer
wjControl
;
private
Integer
hisenseControlHex
;
private
String
message
;
public
static
Integer
getWjControlType
(
Integer
hisenseControlHex
)
{
for
(
ControlTypeEnum
value
:
ControlTypeEnum
.
values
())
{
if
(
Objects
.
equals
(
hisenseControlHex
,
value
.
getHisenseControlHex
()))
{
return
value
.
getWjControl
();
}
}
return
null
;
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/common/enums/PhaseLightColorEnum.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
common
.
enums
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
lombok.RequiredArgsConstructor
;
import
org.apache.commons.lang3.StringUtils
;
/**
* @author duanruiming
* @date 2023/06/19 16:27
*/
@Getter
@AllArgsConstructor
@RequiredArgsConstructor
public
enum
PhaseLightColorEnum
{
LIGHT_OFF
(
"0"
,
"off"
,
"关灯"
),
LIGHT_RED
(
"2"
,
"red"
,
"红灯"
),
LIGHT_GREEN
(
"1"
,
"green"
,
"绿灯"
),
LIGHT_GREEN_FLASH
(
"21"
,
"green"
,
"绿闪"
),
LIGHT_YELLOW
(
"4"
,
"yellow"
,
"黄灯"
),
LIGHT_YELLOW_FLASH
(
"31"
,
"yellow"
,
"黄闪"
),
LIGHT_RED_YELLOW
(
"6"
,
"redYellow"
,
"红黄灯"
);
private
String
dtLightColor
;
private
String
wjLightColor
;
private
String
message
;
public
static
String
getWjLightColor
(
String
dtLightColor
)
{
for
(
PhaseLightColorEnum
value
:
PhaseLightColorEnum
.
values
())
{
if
(
StringUtils
.
equals
(
dtLightColor
,
value
.
getDtLightColor
()))
{
return
value
.
getWjLightColor
();
}
}
return
null
;
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/common/enums/SectionControlModeEnum.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
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
Integer
getDtControlMode
(
Integer
wjControlHex
)
{
for
(
ControlModelEnum
value
:
ControlModelEnum
.
values
())
{
if
(
Objects
.
equals
(
wjControlHex
,
value
.
getWjControl
()))
{
return
value
.
getHisenseControlHex
();
}
}
return
null
;
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/common/enums/SignalInterfaceTypeEnum.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
common
.
enums
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
lombok.RequiredArgsConstructor
;
import
net.wanji.utc.hisense.service.controller.ControlCommandService
;
import
net.wanji.utc.hisense.service.controller.SignalStatusService
;
import
net.wanji.utc.hisense.service.controller.StaticInfoService
;
import
java.util.Objects
;
/**
* @author duanruiming
* @date 2023/05/09 10:35
*/
@Getter
@AllArgsConstructor
@RequiredArgsConstructor
public
enum
SignalInterfaceTypeEnum
{
CONTROL
(
"control"
,
ControlCommandService
.
class
,
"控制类型接口"
),
STATUS
(
"status"
,
SignalStatusService
.
class
,
"状态类型接口"
),
STATIC
(
"static"
,
StaticInfoService
.
class
,
"静态类型接口"
);
private
String
code
;
private
Object
type
;
private
String
desc
;
/**
* 通过编号获取接口类型
*
* @param code
* @return
*/
public
Object
getInterfaceType
(
String
code
)
{
for
(
SignalInterfaceTypeEnum
value
:
SignalInterfaceTypeEnum
.
values
())
{
if
(
Objects
.
equals
(
code
,
value
.
getCode
()))
{
return
value
.
getType
();
}
}
return
null
;
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/config/Swagger2.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
config
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
springfox.documentation.builders.ApiInfoBuilder
;
import
springfox.documentation.builders.PathSelectors
;
import
springfox.documentation.builders.RequestHandlerSelectors
;
import
springfox.documentation.service.ApiInfo
;
import
springfox.documentation.service.Contact
;
import
springfox.documentation.spi.DocumentationType
;
import
springfox.documentation.spring.web.plugins.Docket
;
import
springfox.documentation.swagger2.annotations.EnableSwagger2
;
@Configuration
@EnableSwagger2
public
class
Swagger2
{
@Bean
public
Docket
createRestApi
()
{
return
new
Docket
(
DocumentationType
.
SWAGGER_2
)
.
apiInfo
(
apiInfo
())
.
select
()
//为当前包路径
.
apis
(
RequestHandlerSelectors
.
basePackage
(
"net.wanji.utc.hisense.controller"
))
.
paths
(
PathSelectors
.
any
())
.
build
();
}
//构建 api文档的详细信息函数,注意这里的注解引用的是哪个
private
ApiInfo
apiInfo
()
{
return
new
ApiInfoBuilder
()
//页面标题
.
title
(
"万集科技-城市交通信号OpenAPI"
)
//创建人
.
contact
(
new
Contact
(
"test"
,
"#"
,
"test@wanji.net.cn"
))
//版本号
.
version
(
"0.2.1"
)
//描述
.
description
(
"城市交通信号厂商调用服务API"
)
.
build
();
}
}
\ No newline at end of file
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/controller/ControlCommandController.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
controller
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiImplicitParams
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.RequiredArgsConstructor
;
import
net.wanji.utc.hisense.service.controller.ControlCommandService
;
import
net.wanji.common.annotation.aspect.AspectLog
;
import
net.wanji.common.enums.BaseEnum
;
import
net.wanji.common.framework.rest.JsonViewObject
;
import
net.wanji.databus.vo.*
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
/**
* @author duanruiming
* @date 2023/05/08 10:45
*/
@Api
(
value
=
"信号指令服务"
,
tags
=
"信号指令服务"
)
@RequestMapping
(
"/controlCommand"
)
@RestController
@RequiredArgsConstructor
public
class
ControlCommandController
{
private
final
ControlCommandService
controlCommandService
;
/**
* 信号机方案下发
*
* @param schemeSendVO 方案下发VO
* @return
*/
@AspectLog
(
description
=
"信号机方案下发-基础方案下发"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
UPDATE
)
@ApiOperation
(
value
=
"信号机方案下发-基础方案下发"
,
notes
=
"信号机方案下发-基础方案下发"
)
@PostMapping
(
"/schemeSend"
)
public
JsonViewObject
schemeSend
(
@RequestBody
@Validated
SchemeSendVO
schemeSendVO
)
throws
Exception
{
return
controlCommandService
.
schemeSend
(
schemeSendVO
);
}
/**
* 下发信号机计划
*
* @param planSendVO 计划下发VO
* @return
*/
@AspectLog
(
description
=
"计划下发-计划信息、时段信息"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
UPDATE
)
@ApiOperation
(
value
=
"计划下发-计划信息、时段信息"
,
notes
=
"计划下发-计划信息、时段信息"
)
@PostMapping
(
"/planSend"
)
public
JsonViewObject
planSend
(
@RequestBody
@Validated
PlanSendVO
planSendVO
)
throws
Exception
{
return
controlCommandService
.
planSend
(
planSendVO
);
}
/**
* 时间表下发
*
* @param scheduleSendVO 时间表下发VO
* @return
* @throws Exception 异常
*/
@AspectLog
(
description
=
"时间表下发-时间表信息"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
UPDATE
)
@ApiOperation
(
value
=
"时间表下发-时间表信息"
,
notes
=
"时间表下发-时间表信息"
)
@PostMapping
(
"/scheduleSend"
)
public
JsonViewObject
scheduleSend
(
@RequestBody
@Validated
ScheduleSendVO
scheduleSendVO
)
throws
Exception
{
return
controlCommandService
.
scheduleSend
(
scheduleSendVO
);
}
/**
* 相位配时下发-(下发相位参数)
*
* @return
* @throws InterruptedException 中断异常
*/
@AspectLog
(
description
=
"相位配时下发-(下发相位参数)"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
UPDATE
)
@ApiOperation
(
value
=
"相位配时下发-(下发相位参数)"
,
notes
=
"相位配时下发-(下发相位参数)"
)
@PostMapping
(
"/phaseTimingSend"
)
public
JsonViewObject
phaseTimingSend
(
@RequestBody
@Validated
PhaseTimingSendVO
phaseTimingSendVO
)
throws
Exception
{
return
controlCommandService
.
phaseTimingSend
(
phaseTimingSendVO
);
}
/**
* 全红控制
*
* @param commandVO 控制指令VO
* @return
* @throws Exception 异常
*/
@AspectLog
(
description
=
"全红控制-路口全红控制/恢复"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
UPDATE
)
@ApiOperation
(
value
=
"全红控制-路口全红控制/恢复"
,
notes
=
"全红控制-路口全红控制/恢复"
)
@PostMapping
(
"/allRedControl"
)
public
JsonViewObject
allRedControl
(
@RequestBody
@Validated
ControlCommandVO
commandVO
)
throws
Exception
{
return
controlCommandService
.
setSignalControl
(
commandVO
);
}
/**
* 黄闪控制
*
* @param commandVO 控制指令VO
* @return
* @throws Exception 异常
*/
@AspectLog
(
description
=
"黄闪控制-路口黄闪控制/恢复"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
UPDATE
)
@ApiOperation
(
value
=
"黄闪控制-路口黄闪控制/恢复"
,
notes
=
"黄闪控制-路口黄闪控制/恢复"
)
@PostMapping
(
"/yellowLightControl"
)
public
JsonViewObject
yellowLightControl
(
@RequestBody
@Validated
ControlCommandVO
commandVO
)
throws
Exception
{
return
controlCommandService
.
setSignalControl
(
commandVO
);
}
/**
* 关灯控制
*
* @param commandVO 控制指令VO
* @return
* @throws Exception 异常
*/
@AspectLog
(
description
=
"关灯控制-路口关灯控制/开灯"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
UPDATE
)
@ApiOperation
(
value
=
"关灯控制-路口关灯控制/开灯"
,
notes
=
"关灯控制-路口关灯控制/开灯"
)
@PostMapping
(
"/closeLightControl"
)
public
JsonViewObject
closeLightControl
(
@RequestBody
@Validated
ControlCommandVO
commandVO
)
throws
Exception
{
return
controlCommandService
.
setSignalControl
(
commandVO
);
}
/**
* 步进控制
*
* @param crossCode 信号id
* @param command 命令
* @param stepNum 一步num
* @return
*/
@AspectLog
(
description
=
"步进控制-步进控制/恢复"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
UPDATE
)
@ApiOperation
(
value
=
"步进控制-步进控制/恢复"
,
notes
=
"步进控制-步进控制/恢复"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"crossCode"
,
value
=
"13位路口编号"
,
paramType
=
"query"
,
required
=
true
,
dataType
=
"String"
),
@ApiImplicitParam
(
name
=
"command"
,
value
=
"1 开始步进 0 取消步进"
,
paramType
=
"query"
,
required
=
true
,
dataType
=
"int"
),
@ApiImplicitParam
(
name
=
"stepNum"
,
value
=
"0 顺序步进 n 跳过n个相位"
,
paramType
=
"query"
,
required
=
true
,
dataType
=
"int"
),
})
@PostMapping
(
"/stepControl"
)
public
JsonViewObject
stepControl
(
@RequestParam
String
crossCode
,
@RequestParam
Integer
command
,
@RequestParam
int
stepNum
)
throws
Exception
{
return
controlCommandService
.
stepControl
(
crossCode
,
command
,
stepNum
);
}
/**
* 恢复时间表
*
* @param crossCode
* @return
*/
@AspectLog
(
description
=
"恢复时间表-恢复路口时间表执行"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
UPDATE
)
@ApiOperation
(
value
=
"恢复时间表-恢复路口时间表执行"
,
notes
=
"恢复时间表-恢复路口时间表执行"
)
@PostMapping
(
"/recoverSchedule"
)
public
JsonViewObject
recoverSchedule
(
@RequestParam
String
crossCode
)
throws
Exception
{
return
controlCommandService
.
recoverSchedule
(
crossCode
);
}
/**
* 锁定控制
*
* @param commandVO 控制指令VO
* @return
* @throws Exception 异常
*/
@AspectLog
(
description
=
"锁定控制-相位锁定/解锁"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
UPDATE
)
@ApiOperation
(
value
=
"锁定控制-相位锁定/解锁"
,
notes
=
"锁定控制-相位锁定/解锁"
)
@PostMapping
(
"/lockControl"
)
public
JsonViewObject
lockControl
(
@RequestBody
@Validated
ControlCommandVO
commandVO
)
throws
Exception
{
return
controlCommandService
.
lockControl
(
commandVO
);
}
/**
* 相位差下发
*/
@AspectLog
(
description
=
"相位差下发"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
UPDATE
)
@ApiOperation
(
value
=
"相位差下发"
,
notes
=
"相位差下发"
)
@PostMapping
(
"/phaseDiffSend"
)
public
JsonViewObject
phaseDiffSend
(
String
crossCode
)
{
return
controlCommandService
.
phaseDiffSend
();
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/controller/SignalStatusController.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
controller
;
/**
* @author Kent HAN
* @date 2022/12/1 15:07
*/
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiResponse
;
import
io.swagger.annotations.ApiResponses
;
import
lombok.RequiredArgsConstructor
;
import
net.wanji.utc.hisense.service.controller.SignalStatusService
;
import
net.wanji.common.annotation.aspect.AspectLog
;
import
net.wanji.common.enums.BaseEnum
;
import
net.wanji.common.framework.rest.JsonViewObject
;
import
net.wanji.databus.po.SignalStatusLogPO
;
import
net.wanji.databus.vo.LightsStatusVO
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.ws.rs.core.MediaType
;
import
java.util.List
;
/**
* 运行状态、告警、灯态信息接口
*
* @date 2022/11/15 9:38
*/
@Api
(
value
=
"运行状态、告警、灯态信息接口"
,
tags
=
"运行状态、告警、灯态信息接口"
)
@RequestMapping
(
"/signalStatus"
)
@RestController
@RequiredArgsConstructor
public
class
SignalStatusController
{
private
final
SignalStatusService
signalStatusService
;
@AspectLog
(
description
=
"运行状态、告警数据"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
QUERY
)
@PostMapping
(
value
=
"/runningStatusAlarm"
,
produces
=
MediaType
.
APPLICATION_JSON
)
@ApiOperation
(
value
=
"运行状态、告警数据"
,
notes
=
"运行状态、告警数据"
,
response
=
SignalStatusLogPO
.
class
,
produces
=
MediaType
.
APPLICATION_JSON
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
SignalStatusLogPO
.
class
)
})
public
JsonViewObject
runningStatusAlarm
(
String
crossId
)
{
List
<
SignalStatusLogPO
>
signalStatusLogPOList
=
signalStatusService
.
runningStatusAlarm
(
crossId
);
return
JsonViewObject
.
newInstance
().
success
(
signalStatusLogPOList
);
}
@AspectLog
(
description
=
"灯态数据"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
QUERY
)
@PostMapping
(
value
=
"/lightStatus"
,
produces
=
MediaType
.
APPLICATION_JSON
)
@ApiOperation
(
value
=
"灯态数据"
,
notes
=
"灯态数据"
,
response
=
LightsStatusVO
.
class
,
produces
=
MediaType
.
APPLICATION_JSON
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
LightsStatusVO
.
class
)
})
public
JsonViewObject
lightStatus
(
String
crossId
)
{
List
<
LightsStatusVO
>
lightsStatusVOList
=
signalStatusService
.
lightStatus
(
crossId
);
JsonViewObject
jsonViewObject
=
JsonViewObject
.
newInstance
();
return
jsonViewObject
.
success
(
lightsStatusVOList
);
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/controller/StaticInfoController.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
controller
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiResponse
;
import
io.swagger.annotations.ApiResponses
;
import
lombok.RequiredArgsConstructor
;
import
net.wanji.utc.hisense.service.controller.StaticInfoService
;
import
net.wanji.common.annotation.aspect.AspectLog
;
import
net.wanji.common.enums.BaseEnum
;
import
net.wanji.common.framework.rest.JsonViewObject
;
import
net.wanji.databus.dao.entity.CrossSchedulesPO
;
import
net.wanji.databus.dto.CrossSchedulesDTO
;
import
net.wanji.databus.dto.PlanSectionDTO
;
import
net.wanji.databus.dto.SchemePhaseLightsDTO
;
import
net.wanji.databus.vo.PlanSectionVO
;
import
net.wanji.databus.vo.SchemePhaseLightsVO
;
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
javax.ws.rs.core.MediaType
;
import
java.util.List
;
/**
* 静态信息接口
*
* @date 2022/11/15 9:38
*/
@Api
(
value
=
"静态信息接口"
,
tags
=
"静态信息接口"
)
@RequestMapping
(
"/staticInfo"
)
@RestController
@RequiredArgsConstructor
public
class
StaticInfoController
{
private
final
StaticInfoService
staticInfoService
;
@AspectLog
(
description
=
"方案数据-方案信息、相位信息、灯组信息"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
QUERY
)
@PostMapping
(
value
=
"/schemePhaseLights"
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@ApiOperation
(
value
=
"方案数据-方案信息、相位信息、灯组信息"
,
notes
=
"方案数据-方案信息、相位信息、灯组信息"
,
response
=
SchemePhaseLightsVO
.
class
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
SchemePhaseLightsVO
.
class
)
})
public
JsonViewObject
schemePhaseLights
(
@RequestBody
@Validated
SchemePhaseLightsDTO
schemePhaseLightsDTO
)
throws
Exception
{
SchemePhaseLightsVO
schemePhaseLightsVO
=
staticInfoService
.
schemePhaseLights
(
schemePhaseLightsDTO
);
return
JsonViewObject
.
newInstance
().
success
(
schemePhaseLightsVO
);
}
@AspectLog
(
description
=
"计划数据-计划信息、时段信息"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
QUERY
)
@PostMapping
(
value
=
"/planSection"
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@ApiOperation
(
value
=
"计划数据-计划信息、时段信息"
,
notes
=
"计划数据-计划信息、时段信息"
,
response
=
PlanSectionVO
.
class
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
PlanSectionVO
.
class
)
})
public
JsonViewObject
planSection
(
@RequestBody
@Validated
PlanSectionDTO
planSectionDTO
)
throws
Exception
{
List
<
PlanSectionVO
>
planSectionVOS
=
staticInfoService
.
planSection
(
planSectionDTO
);
return
JsonViewObject
.
newInstance
().
success
(
planSectionVOS
);
}
@AspectLog
(
description
=
"时间表数据"
,
operationType
=
BaseEnum
.
OperationTypeEnum
.
QUERY
)
@PostMapping
(
value
=
"/crossSchedules"
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@ApiOperation
(
value
=
"时间表数据"
,
notes
=
"时间表数据"
,
response
=
CrossSchedulesPO
.
class
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
CrossSchedulesPO
.
class
)
})
public
JsonViewObject
crossSchedules
(
@RequestBody
@Validated
CrossSchedulesDTO
crossSchedulesDTO
)
throws
Exception
{
List
<
CrossSchedulesPO
>
crossSchedulesPOS
=
staticInfoService
.
crossSchedules
(
crossSchedulesDTO
);
return
JsonViewObject
.
newInstance
().
success
(
crossSchedulesPOS
);
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/netty/NettyClient.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
netty
;
import
cn.hutool.core.util.HexUtil
;
import
io.netty.bootstrap.Bootstrap
;
import
io.netty.buffer.Unpooled
;
import
io.netty.channel.*
;
import
io.netty.channel.nio.NioEventLoopGroup
;
import
io.netty.channel.socket.DatagramPacket
;
import
io.netty.channel.socket.nio.NioDatagramChannel
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.utc.hisense.cache.CrossInfoCache
;
import
net.wanji.utc.hisense.cache.netty.NettyMessageCache
;
import
net.wanji.utc.hisense.netty.codec.MessageDecoder
;
import
net.wanji.utc.hisense.netty.codec.MessageEnCoder
;
import
net.wanji.utc.hisense.netty.handler.NettyServerHandler
;
import
net.wanji.utc.hisense.pojo.netty.MessageResultPojo
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor
;
import
org.springframework.stereotype.Component
;
import
javax.annotation.Resource
;
import
java.net.InetSocketAddress
;
import
java.time.LocalDateTime
;
import
java.time.ZoneOffset
;
import
java.util.concurrent.CountDownLatch
;
import
java.util.concurrent.TimeUnit
;
@Slf4j
@Component
public
class
NettyClient
{
private
static
ChannelFuture
udpChannelFuture
=
null
;
@Resource
(
name
=
"commonThreadPoolExecutor"
)
private
ThreadPoolTaskExecutor
commonThreadPoolExecutor
;
/**
* 建立连接
*/
public
static
void
connection
(
int
localPort
,
int
remotePort
)
throws
InterruptedException
{
EventLoopGroup
group
=
new
NioEventLoopGroup
();
Bootstrap
bootstrap
=
new
Bootstrap
();
bootstrap
.
group
(
group
)
.
channel
(
NioDatagramChannel
.
class
)
.
option
(
ChannelOption
.
RCVBUF_ALLOCATOR
,
new
FixedRecvByteBufAllocator
(
65535
))
.
localAddress
(
new
InetSocketAddress
(
localPort
))
.
remoteAddress
(
new
InetSocketAddress
(
remotePort
))
.
handler
(
new
ChannelInitializer
<
NioDatagramChannel
>()
{
@Override
protected
void
initChannel
(
NioDatagramChannel
datagramChannel
)
{
datagramChannel
.
pipeline
()
.
addLast
(
"decoder"
,
new
MessageDecoder
())
.
addLast
(
"encoder"
,
new
MessageEnCoder
())
.
addLast
(
new
NettyServerHandler
());
}
});
ChannelFuture
channelFuture
=
bootstrap
.
bind
().
sync
();
Runtime
.
getRuntime
().
addShutdownHook
(
new
Thread
(()
->
{
group
.
shutdownGracefully
();
channelFuture
.
channel
().
closeFuture
().
syncUninterruptibly
();
log
.
warn
(
"udp服务关闭!"
);
}));
log
.
info
(
"udp服务正在运行,端口:{}"
,
localPort
);
NettyClient
.
udpChannelFuture
=
channelFuture
;
}
public
static
void
sendMessage
(
String
ip
,
Integer
port
,
String
msg
)
{
byte
[]
bytes
=
HexUtil
.
decodeHex
(
msg
);
try
{
if
(
udpChannelFuture
==
null
)
{
return
;
}
udpChannelFuture
.
channel
()
.
writeAndFlush
(
new
DatagramPacket
(
Unpooled
.
copiedBuffer
(
bytes
),
new
InetSocketAddress
(
ip
,
port
))).
sync
();
log
.
debug
(
"发送信号机:{}/{}命令消息:{}"
,
ip
,
port
,
msg
);
}
catch
(
InterruptedException
e
)
{
log
.
error
(
"sendMsg is error"
,
e
);
}
}
public
static
MessageResultPojo
sendMessage
(
String
ip
,
Integer
port
,
String
msg
,
String
command
,
int
timeout
)
{
try
{
if
(
timeout
>
0
)
{
CountDownLatch
countDownLatch
=
new
CountDownLatch
(
1
);
String
key
=
StringUtils
.
join
(
"/"
,
ip
,
":"
,
port
,
"/"
,
command
);
long
now
=
LocalDateTime
.
now
().
toInstant
(
ZoneOffset
.
of
(
"+8"
)).
toEpochMilli
();
MessageResultPojo
messageResultPojo
=
new
MessageResultPojo
(
command
,
countDownLatch
,
now
,
timeout
,
null
);
NettyMessageCache
.
NETTY_RESULT_TIMEOUT_MAP
.
put
(
key
,
messageResultPojo
);
NettyMessageCache
.
COMMAND_RESULT_SIGN_MAP
.
put
(
key
,
CrossInfoCache
.
getCrossInfoByIp
(
ip
));
sendMessage
(
ip
,
port
,
msg
);
countDownLatch
.
await
(
timeout
,
TimeUnit
.
MILLISECONDS
);
return
NettyMessageCache
.
NETTY_RESULT_TIMEOUT_MAP
.
remove
(
key
);
}
}
catch
(
InterruptedException
e
)
{
log
.
error
(
"sendMsg is error"
,
e
);
}
return
null
;
}
@Scheduled
(
fixedRate
=
300
)
public
void
checkWaitTimeout
()
{
long
now
=
LocalDateTime
.
now
().
toInstant
(
ZoneOffset
.
of
(
"+8"
)).
toEpochMilli
();
NettyMessageCache
.
NETTY_RESULT_TIMEOUT_MAP
.
forEach
((
k
,
v
)
->
{
commonThreadPoolExecutor
.
execute
(()
->
{
if
(
now
-
v
.
getStartTime
()
>
v
.
getWaitMillisecond
())
{
log
.
warn
(
"wait {}ms [{}] timeout"
,
v
.
getWaitMillisecond
(),
k
);
v
.
getCountDownLatch
().
countDown
();
}
});
});
}
}
\ No newline at end of file
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/netty/codec/MessageDecoder.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
netty
.
codec
;
import
cn.hutool.core.util.HexUtil
;
import
io.netty.buffer.ByteBuf
;
import
io.netty.channel.ChannelHandlerContext
;
import
io.netty.handler.codec.ByteToMessageDecoder
;
import
java.util.List
;
/**
* @author duanruiming
* @date 2023/05/08 10:07
*/
public
class
MessageDecoder
extends
ByteToMessageDecoder
{
/*
*自定义解码器
*/
@Override
protected
void
decode
(
ChannelHandlerContext
ctx
,
ByteBuf
in
,
List
<
Object
>
out
)
throws
Exception
{
byte
[]
bytes
=
new
byte
[
in
.
readableBytes
()];
in
.
readBytes
(
bytes
);
out
.
add
(
HexUtil
.
encodeHexStr
(
bytes
));
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/netty/codec/MessageEnCoder.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
netty
.
codec
;
import
io.netty.buffer.ByteBuf
;
import
io.netty.channel.ChannelHandlerContext
;
import
io.netty.handler.codec.MessageToByteEncoder
;
import
net.wanji.common.utils.licenseUtils.AESUtils
;
/**
* @author duanruiming
* @date 2023/05/08 10:08
*/
public
class
MessageEnCoder
extends
MessageToByteEncoder
<
String
>
{
/**
* 自定义编码器
*
* @param ctx
* @param msg
* @param out
* @throws Exception
*/
@Override
protected
void
encode
(
ChannelHandlerContext
ctx
,
String
msg
,
ByteBuf
out
)
throws
Exception
{
out
.
writeBytes
(
AESUtils
.
parseHexStr2Byte
(
msg
));
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/netty/commandsign/CommandResultSign.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
netty
.
commandsign
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
net.wanji.utc.hisense.pojo.convert.RunningLightsStatusPojo
;
/**
* @author duanruiming
* @date 2023/05/08 10:14
*/
public
class
CommandResultSign
{
public
static
Object
getHexSign
(
String
data
)
{
ObjectMapper
mapper
=
new
ObjectMapper
();
return
mapper
.
convertValue
(
data
,
RunningLightsStatusPojo
.
class
);
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/netty/handler/NettyServerHandler.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
netty
.
handler
;
import
cn.hutool.core.util.HexUtil
;
import
io.netty.buffer.ByteBuf
;
import
io.netty.channel.ChannelHandlerContext
;
import
io.netty.channel.SimpleChannelInboundHandler
;
import
io.netty.channel.socket.DatagramPacket
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.common.framework.spring.ServiceBeanContext
;
import
net.wanji.databus.po.CrossInfoPO
;
import
net.wanji.utc.hisense.cache.CrossInfoCache
;
import
net.wanji.utc.hisense.cache.netty.NettyMessageCache
;
import
net.wanji.utc.hisense.common.enums.CommandResultSignEnum
;
import
net.wanji.utc.hisense.netty.commandsign.CommandResultSign
;
import
net.wanji.utc.hisense.netty.pojo.CommandPojo
;
import
net.wanji.utc.hisense.netty.response.CommandResponseFactory
;
import
net.wanji.utc.hisense.pojo.netty.MessageResultPojo
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.stereotype.Component
;
import
javax.annotation.Resource
;
import
java.net.InetSocketAddress
;
import
java.util.Objects
;
@Slf4j
@Component
public
class
NettyServerHandler
extends
SimpleChannelInboundHandler
<
DatagramPacket
>
{
@Resource
private
CrossInfoCache
crossInfoCache
;
/**
* 读取消息
*
* @param ctx
* @param packet
* @throws Exception
*/
@Override
protected
void
channelRead0
(
ChannelHandlerContext
ctx
,
DatagramPacket
packet
)
throws
Exception
{
ByteBuf
content
=
packet
.
content
();
InetSocketAddress
remote
=
packet
.
sender
();
int
i
=
content
.
readableBytes
();
byte
[]
b
=
new
byte
[
i
];
content
.
readBytes
(
b
);
String
data
=
HexUtil
.
encodeHexStr
(
b
);
Object
resultPojo
=
CommandResultSign
.
getHexSign
(
data
);
String
className
=
CommandResultSignEnum
.
getResultPojo
(
resultPojo
);
CommandResponseFactory
commandResponseFactory
=
(
CommandResponseFactory
)
ServiceBeanContext
.
getBean
(
className
);
String
key
=
StringUtils
.
join
(
"/"
,
remote
.
getHostString
(),
":"
,
remote
.
getPort
(),
"/"
,
resultPojo
.
getClass
().
getSimpleName
());
CommandPojo
commandPojo
=
getCommandPojo
(
key
,
resultPojo
);
Object
hexResult
=
commandResponseFactory
.
getCommandResponse
(
commandPojo
);
if
(
Objects
.
nonNull
(
hexResult
))
{
setResultData
(
key
,
hexResult
);
}
}
private
void
setResultData
(
String
key
,
Object
hexResult
)
{
MessageResultPojo
resultPojo
=
NettyMessageCache
.
NETTY_RESULT_TIMEOUT_MAP
.
get
(
key
);
if
(
resultPojo
!=
null
)
{
resultPojo
.
setHexMessageResult
(
hexResult
);
resultPojo
.
getCountDownLatch
().
countDown
();
}
}
private
CommandPojo
getCommandPojo
(
String
key
,
Object
data
)
{
CrossInfoPO
crossInfo
=
NettyMessageCache
.
COMMAND_RESULT_SIGN_MAP
.
get
(
key
);
CommandPojo
commandPojo
=
new
CommandPojo
();
commandPojo
.
setCrossId
(
crossInfo
.
getId
());
commandPojo
.
setSignalId
(
crossInfo
.
getCode
());
commandPojo
.
setSignalIp
(
crossInfo
.
getIp
());
commandPojo
.
setPort
(
crossInfo
.
getPort
());
commandPojo
.
setResponseMsg
(
data
);
return
commandPojo
;
}
@Override
public
void
exceptionCaught
(
ChannelHandlerContext
ctx
,
Throwable
cause
)
throws
Exception
{
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/netty/pojo/CommandPojo.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
netty
.
pojo
;
import
lombok.Data
;
/**
* @author duanruiming
* @date 2023/05/12 13:41
*/
@Data
public
class
CommandPojo
{
private
String
crossId
;
private
String
signalId
;
private
String
signalIp
;
private
Integer
port
;
private
Object
responseMsg
;
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/netty/response/CommandResponseFactory.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
netty
.
response
;
import
net.wanji.utc.hisense.netty.pojo.CommandPojo
;
/**
* @author duanruiming
* @date 2023/05/10 10:07
*/
public
interface
CommandResponseFactory
{
Object
getCommandResponse
(
CommandPojo
commandPojo
);
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/netty/response/impl/HeartBeatService.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
netty
.
response
.
impl
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.utc.hisense.cache.CrossInfoCache
;
import
net.wanji.utc.hisense.common.constants.Constants
;
import
net.wanji.utc.hisense.netty.NettyClient
;
import
net.wanji.utc.hisense.netty.pojo.CommandPojo
;
import
net.wanji.utc.hisense.netty.response.CommandResponseFactory
;
import
net.wanji.utc.hisense.pojo.netty.MessageResultPojo
;
import
net.wanji.databus.po.CrossInfoPO
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor
;
import
org.springframework.stereotype.Service
;
import
java.util.Map
;
/**
* @author duanruiming
* @date 2023/05/12 11:00
*/
@Service
@Slf4j
@RequiredArgsConstructor
public
class
HeartBeatService
implements
CommandResponseFactory
{
private
final
CrossInfoCache
crossInfoCache
;
private
final
ThreadPoolTaskExecutor
threadPoolTaskExecutor
;
@Override
public
Object
getCommandResponse
(
CommandPojo
commandPojo
)
{
return
commandPojo
.
getResponseMsg
();
}
@Scheduled
(
fixedRate
=
30
*
1000
,
initialDelay
=
10
*
1000
)
public
void
heartbeat
()
{
Map
<
String
,
CrossInfoPO
>
crossInfoMap
=
crossInfoCache
.
getCrossInfoCache
();
for
(
Map
.
Entry
<
String
,
CrossInfoPO
>
entry
:
crossInfoMap
.
entrySet
())
{
CrossInfoPO
crossInfoPO
=
entry
.
getValue
();
String
ip
=
crossInfoPO
.
getIp
();
Integer
port
=
crossInfoPO
.
getPort
();
threadPoolTaskExecutor
.
execute
(()
->
{
String
heartBeatRequest
=
Constants
.
buildMessage
(
Constants
.
COMMAND_HEART_BEAT_QUERY
);
MessageResultPojo
resultPojo
=
NettyClient
.
sendMessage
(
ip
,
port
,
heartBeatRequest
,
Constants
.
COMMAND_HEART_BEAT_REPLY
,
300
);
});
}
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/netty/response/impl/get/GetAlarmInfoService.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
netty
.
response
.
impl
.
get
;
import
net.wanji.utc.hisense.netty.pojo.CommandPojo
;
import
net.wanji.utc.hisense.netty.response.CommandResponseFactory
;
import
org.springframework.stereotype.Service
;
/**
* @author duanruiming
* @date 2023/05/12 16:08
*/
@Service
public
class
GetAlarmInfoService
implements
CommandResponseFactory
{
@Override
public
Object
getCommandResponse
(
CommandPojo
commandPojo
)
{
return
commandPojo
.
getResponseMsg
();
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/netty/response/impl/get/GetBaseInfoService.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
netty
.
response
.
impl
.
get
;
import
net.wanji.utc.hisense.netty.pojo.CommandPojo
;
import
net.wanji.utc.hisense.netty.response.CommandResponseFactory
;
import
org.springframework.stereotype.Service
;
/**
* @author duanruiming
* @date 2023/05/12 16:05
*/
@Service
public
class
GetBaseInfoService
implements
CommandResponseFactory
{
@Override
public
Object
getCommandResponse
(
CommandPojo
commandPojo
)
{
return
commandPojo
.
getResponseMsg
();
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/netty/response/impl/get/GetDailyPlanInfoService.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
netty
.
response
.
impl
.
get
;
import
net.wanji.utc.hisense.netty.pojo.CommandPojo
;
import
net.wanji.utc.hisense.netty.response.CommandResponseFactory
;
import
org.springframework.stereotype.Service
;
/**
* @author duanruiming
* @date 2023/05/12 16:07
*/
@Service
public
class
GetDailyPlanInfoService
implements
CommandResponseFactory
{
@Override
public
Object
getCommandResponse
(
CommandPojo
commandPojo
)
{
return
commandPojo
.
getResponseMsg
();
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/netty/response/impl/get/GetDetectorInfoService.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
netty
.
response
.
impl
.
get
;
import
net.wanji.utc.hisense.netty.pojo.CommandPojo
;
import
net.wanji.utc.hisense.netty.response.CommandResponseFactory
;
import
org.springframework.stereotype.Service
;
/**
* @author duanruiming
* @date 2023/05/12 16:06
*/
@Service
public
class
GetDetectorInfoService
implements
CommandResponseFactory
{
@Override
public
Object
getCommandResponse
(
CommandPojo
commandPojo
)
{
return
commandPojo
.
getResponseMsg
();
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/netty/response/impl/get/GetDeviceInfoService.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
netty
.
response
.
impl
.
get
;
import
net.wanji.utc.hisense.netty.pojo.CommandPojo
;
import
net.wanji.utc.hisense.netty.response.CommandResponseFactory
;
import
org.springframework.stereotype.Service
;
/**
* @author duanruiming
* @date 2023/05/12 16:05
* @description 上载设备信息
*/
@Service
public
class
GetDeviceInfoService
implements
CommandResponseFactory
{
@Override
public
Object
getCommandResponse
(
CommandPojo
commandPojo
)
{
return
commandPojo
.
getResponseMsg
();
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/netty/response/impl/get/GetFaultInfoService.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
netty
.
response
.
impl
.
get
;
import
net.wanji.utc.hisense.netty.pojo.CommandPojo
;
import
net.wanji.utc.hisense.netty.response.CommandResponseFactory
;
import
org.springframework.stereotype.Service
;
/**
* @author duanruiming
* @date 2023/05/12 16:08
*/
@Service
public
class
GetFaultInfoService
implements
CommandResponseFactory
{
@Override
public
Object
getCommandResponse
(
CommandPojo
commandPojo
)
{
return
commandPojo
.
getResponseMsg
();
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/netty/response/impl/get/GetLightsGroupInfoService.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
netty
.
response
.
impl
.
get
;
import
net.wanji.utc.hisense.netty.pojo.CommandPojo
;
import
net.wanji.utc.hisense.netty.response.CommandResponseFactory
;
import
org.springframework.stereotype.Service
;
/**
* @author duanruiming
* @date 2023/05/12 16:06
*/
@Service
public
class
GetLightsGroupInfoService
implements
CommandResponseFactory
{
@Override
public
Object
getCommandResponse
(
CommandPojo
commandPojo
)
{
return
commandPojo
.
getResponseMsg
();
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/netty/response/impl/get/GetLightsStatusInfoService.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
netty
.
response
.
impl
.
get
;
import
net.wanji.utc.hisense.netty.pojo.CommandPojo
;
import
net.wanji.utc.hisense.netty.response.CommandResponseFactory
;
import
org.springframework.stereotype.Service
;
/**
* @author duanruiming
* @date 2023/06/16 9:45
*/
@Service
public
class
GetLightsStatusInfoService
implements
CommandResponseFactory
{
@Override
public
Object
getCommandResponse
(
CommandPojo
commandPojo
)
{
return
commandPojo
.
getResponseMsg
();
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/netty/response/impl/get/GetPhaseInfoService.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
netty
.
response
.
impl
.
get
;
import
net.wanji.utc.hisense.netty.pojo.CommandPojo
;
import
net.wanji.utc.hisense.netty.response.CommandResponseFactory
;
import
org.springframework.stereotype.Service
;
/**
* @author duanruiming
* @date 2023/05/12 16:06
*/
@Service
public
class
GetPhaseInfoService
implements
CommandResponseFactory
{
@Override
public
Object
getCommandResponse
(
CommandPojo
commandPojo
)
{
return
commandPojo
.
getResponseMsg
();
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/netty/response/impl/get/GetPhaseSecurityInfoService.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
netty
.
response
.
impl
.
get
;
import
net.wanji.utc.hisense.netty.pojo.CommandPojo
;
import
net.wanji.utc.hisense.netty.response.CommandResponseFactory
;
import
org.springframework.stereotype.Service
;
/**
* @author duanruiming
* @date 2023/05/12 16:07
*/
@Service
public
class
GetPhaseSecurityInfoService
implements
CommandResponseFactory
{
@Override
public
Object
getCommandResponse
(
CommandPojo
commandPojo
)
{
return
commandPojo
.
getResponseMsg
();
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/netty/response/impl/get/GetRunningStateInfoService.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
netty
.
response
.
impl
.
get
;
import
net.wanji.utc.hisense.cache.SignalDataCache
;
import
net.wanji.utc.hisense.netty.pojo.CommandPojo
;
import
net.wanji.utc.hisense.netty.response.CommandResponseFactory
;
import
net.wanji.utc.hisense.pojo.convert.RunningLightsStatusPojo
;
import
org.springframework.stereotype.Service
;
/**
* 海信平台每隔5s推送灯态
*
* @author duanruiming
* @date 2023/05/12 16:07
*/
@Service
public
class
GetRunningStateInfoService
implements
CommandResponseFactory
{
@Override
public
Object
getCommandResponse
(
CommandPojo
commandPojo
)
{
SignalDataCache
.
runningStateInfoCache
.
put
(
commandPojo
.
getCrossId
(),
(
RunningLightsStatusPojo
)
commandPojo
.
getResponseMsg
());
return
commandPojo
;
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/netty/response/impl/get/GetSchedulesInfoService.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
netty
.
response
.
impl
.
get
;
import
net.wanji.utc.hisense.netty.pojo.CommandPojo
;
import
net.wanji.utc.hisense.netty.response.CommandResponseFactory
;
import
org.springframework.stereotype.Service
;
/**
* @author duanruiming
* @date 2023/05/12 16:07
*/
@Service
public
class
GetSchedulesInfoService
implements
CommandResponseFactory
{
@Override
public
Object
getCommandResponse
(
CommandPojo
commandPojo
)
{
return
commandPojo
.
getResponseMsg
();
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/netty/response/impl/get/GetSchemeInfoService.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
netty
.
response
.
impl
.
get
;
import
net.wanji.utc.hisense.netty.pojo.CommandPojo
;
import
net.wanji.utc.hisense.netty.response.CommandResponseFactory
;
import
org.springframework.stereotype.Service
;
/**
* @author duanruiming
* @date 2023/05/12 16:07
*/
@Service
public
class
GetSchemeInfoService
implements
CommandResponseFactory
{
@Override
public
Object
getCommandResponse
(
CommandPojo
commandPojo
)
{
return
commandPojo
.
getResponseMsg
();
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/netty/response/impl/get/GetStageInfoService.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
netty
.
response
.
impl
.
get
;
import
net.wanji.utc.hisense.netty.pojo.CommandPojo
;
import
net.wanji.utc.hisense.netty.response.CommandResponseFactory
;
import
org.springframework.stereotype.Service
;
/**
* @author duanruiming
* @date 2023/05/12 16:06
*/
@Service
public
class
GetStageInfoService
implements
CommandResponseFactory
{
@Override
public
Object
getCommandResponse
(
CommandPojo
commandPojo
)
{
return
commandPojo
.
getResponseMsg
();
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/netty/response/impl/get/GetStageStatusService.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
netty
.
response
.
impl
.
get
;
import
net.wanji.utc.hisense.netty.pojo.CommandPojo
;
import
net.wanji.utc.hisense.netty.response.CommandResponseFactory
;
import
org.springframework.stereotype.Service
;
/**
* @author duanruiming
* @date 2023/06/19 14:27
*/
@Service
public
class
GetStageStatusService
implements
CommandResponseFactory
{
@Override
public
Object
getCommandResponse
(
CommandPojo
commandPojo
)
{
return
commandPojo
.
getResponseMsg
();
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/netty/response/impl/get/GetTrafficDataInfoService.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
netty
.
response
.
impl
.
get
;
import
net.wanji.utc.hisense.netty.pojo.CommandPojo
;
import
net.wanji.utc.hisense.netty.response.CommandResponseFactory
;
import
org.springframework.stereotype.Service
;
/**
* @author duanruiming
* @date 2023/05/12 16:08
*/
@Service
public
class
GetTrafficDataInfoService
implements
CommandResponseFactory
{
@Override
public
Object
getCommandResponse
(
CommandPojo
commandPojo
)
{
return
commandPojo
.
getResponseMsg
();
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/netty/response/impl/set/SetAlarmInfoService.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
netty
.
response
.
impl
.
set
;
import
net.wanji.utc.hisense.netty.pojo.CommandPojo
;
import
net.wanji.utc.hisense.netty.response.CommandResponseFactory
;
import
org.springframework.stereotype.Service
;
/**
* @author duanruiming
* @date 2023/05/12 16:13
*/
@Service
public
class
SetAlarmInfoService
implements
CommandResponseFactory
{
@Override
public
Object
getCommandResponse
(
CommandPojo
commandPojo
)
{
return
commandPojo
.
getResponseMsg
();
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/netty/response/impl/set/SetBaseInfoService.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
netty
.
response
.
impl
.
set
;
import
net.wanji.utc.hisense.netty.pojo.CommandPojo
;
import
net.wanji.utc.hisense.netty.response.CommandResponseFactory
;
import
org.springframework.stereotype.Service
;
/**
* @author duanruiming
* @date 2023/05/12 16:10
*/
@Service
public
class
SetBaseInfoService
implements
CommandResponseFactory
{
@Override
public
Object
getCommandResponse
(
CommandPojo
commandPojo
)
{
return
commandPojo
.
getResponseMsg
();
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/netty/response/impl/set/SetControlInfoService.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
netty
.
response
.
impl
.
set
;
import
net.wanji.utc.hisense.netty.pojo.CommandPojo
;
import
net.wanji.utc.hisense.netty.response.CommandResponseFactory
;
import
org.springframework.stereotype.Service
;
/**
* @author duanruiming
* @date 2023/05/12 16:13
*/
@Service
public
class
SetControlInfoService
implements
CommandResponseFactory
{
@Override
public
Object
getCommandResponse
(
CommandPojo
commandPojo
)
{
return
commandPojo
.
getResponseMsg
();
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/netty/response/impl/set/SetDailyPlanInfoService.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
netty
.
response
.
impl
.
set
;
import
net.wanji.utc.hisense.netty.pojo.CommandPojo
;
import
net.wanji.utc.hisense.netty.response.CommandResponseFactory
;
import
org.springframework.stereotype.Service
;
/**
* @author duanruiming
* @date 2023/05/12 16:11
*/
@Service
public
class
SetDailyPlanInfoService
implements
CommandResponseFactory
{
@Override
public
Object
getCommandResponse
(
CommandPojo
commandPojo
)
{
return
commandPojo
.
getResponseMsg
();
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/netty/response/impl/set/SetDetectorInfoService.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
netty
.
response
.
impl
.
set
;
import
net.wanji.utc.hisense.netty.pojo.CommandPojo
;
import
net.wanji.utc.hisense.netty.response.CommandResponseFactory
;
import
org.springframework.stereotype.Service
;
/**
* @author duanruiming
* @date 2023/05/12 16:10
*/
@Service
public
class
SetDetectorInfoService
implements
CommandResponseFactory
{
@Override
public
Object
getCommandResponse
(
CommandPojo
commandPojo
)
{
return
commandPojo
.
getResponseMsg
();
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/netty/response/impl/set/SetDeviceInfoService.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
netty
.
response
.
impl
.
set
;
import
net.wanji.utc.hisense.netty.pojo.CommandPojo
;
import
net.wanji.utc.hisense.netty.response.CommandResponseFactory
;
import
org.springframework.stereotype.Service
;
/**
* @author duanruiming
* @date 2023/05/12 16:09
*/
@Service
public
class
SetDeviceInfoService
implements
CommandResponseFactory
{
@Override
public
Object
getCommandResponse
(
CommandPojo
commandPojo
)
{
return
commandPojo
.
getResponseMsg
();
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/netty/response/impl/set/SetFaultInfoService.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
netty
.
response
.
impl
.
set
;
import
net.wanji.utc.hisense.netty.pojo.CommandPojo
;
import
net.wanji.utc.hisense.netty.response.CommandResponseFactory
;
import
org.springframework.stereotype.Service
;
/**
* @author duanruiming
* @date 2023/05/12 16:13
*/
@Service
public
class
SetFaultInfoService
implements
CommandResponseFactory
{
@Override
public
Object
getCommandResponse
(
CommandPojo
commandPojo
)
{
return
commandPojo
.
getResponseMsg
();
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/netty/response/impl/set/SetLightsGroupInfoService.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
netty
.
response
.
impl
.
set
;
import
net.wanji.utc.hisense.netty.pojo.CommandPojo
;
import
net.wanji.utc.hisense.netty.response.CommandResponseFactory
;
import
org.springframework.stereotype.Service
;
/**
* @author duanruiming
* @date 2023/05/12 16:10
*/
@Service
public
class
SetLightsGroupInfoService
implements
CommandResponseFactory
{
@Override
public
Object
getCommandResponse
(
CommandPojo
commandPojo
)
{
return
commandPojo
.
getResponseMsg
();
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/netty/response/impl/set/SetPhaseInfoService.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
netty
.
response
.
impl
.
set
;
import
net.wanji.utc.hisense.netty.pojo.CommandPojo
;
import
net.wanji.utc.hisense.netty.response.CommandResponseFactory
;
import
org.springframework.stereotype.Service
;
/**
* @author duanruiming
* @date 2023/05/12 16:10
*/
@Service
public
class
SetPhaseInfoService
implements
CommandResponseFactory
{
@Override
public
Object
getCommandResponse
(
CommandPojo
commandPojo
)
{
return
commandPojo
.
getResponseMsg
();
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/netty/response/impl/set/SetPhaseSecurityInfoService.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
netty
.
response
.
impl
.
set
;
import
net.wanji.utc.hisense.netty.pojo.CommandPojo
;
import
net.wanji.utc.hisense.netty.response.CommandResponseFactory
;
import
org.springframework.stereotype.Service
;
/**
* @author duanruiming
* @date 2023/05/12 16:11
*/
@Service
public
class
SetPhaseSecurityInfoService
implements
CommandResponseFactory
{
@Override
public
Object
getCommandResponse
(
CommandPojo
commandPojo
)
{
return
commandPojo
.
getResponseMsg
();
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/netty/response/impl/set/SetSchedulesInfoService.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
netty
.
response
.
impl
.
set
;
import
net.wanji.utc.hisense.netty.pojo.CommandPojo
;
import
net.wanji.utc.hisense.netty.response.CommandResponseFactory
;
import
org.springframework.stereotype.Service
;
/**
* @author duanruiming
* @date 2023/05/12 16:11
*/
@Service
public
class
SetSchedulesInfoService
implements
CommandResponseFactory
{
@Override
public
Object
getCommandResponse
(
CommandPojo
commandPojo
)
{
return
commandPojo
.
getResponseMsg
();
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/netty/response/impl/set/SetSchemeInfoService.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
netty
.
response
.
impl
.
set
;
import
net.wanji.utc.hisense.netty.pojo.CommandPojo
;
import
net.wanji.utc.hisense.netty.response.CommandResponseFactory
;
import
org.springframework.stereotype.Service
;
/**
* @author duanruiming
* @date 2023/05/12 16:11
*/
@Service
public
class
SetSchemeInfoService
implements
CommandResponseFactory
{
@Override
public
Object
getCommandResponse
(
CommandPojo
commandPojo
)
{
return
commandPojo
.
getResponseMsg
();
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/netty/response/impl/set/SetStageInfoService.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
netty
.
response
.
impl
.
set
;
import
net.wanji.utc.hisense.netty.pojo.CommandPojo
;
import
net.wanji.utc.hisense.netty.response.CommandResponseFactory
;
import
org.springframework.stereotype.Service
;
/**
* @author duanruiming
* @date 2023/05/12 16:10
*/
@Service
public
class
SetStageInfoService
implements
CommandResponseFactory
{
@Override
public
Object
getCommandResponse
(
CommandPojo
commandPojo
)
{
return
commandPojo
.
getResponseMsg
();
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/netty/response/impl/set/SetTrafficDataInfoService.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
netty
.
response
.
impl
.
set
;
import
net.wanji.utc.hisense.netty.pojo.CommandPojo
;
import
net.wanji.utc.hisense.netty.response.CommandResponseFactory
;
import
org.springframework.stereotype.Service
;
/**
* @author duanruiming
* @date 2023/05/12 16:12
*/
@Service
public
class
SetTrafficDataInfoService
implements
CommandResponseFactory
{
@Override
public
Object
getCommandResponse
(
CommandPojo
commandPojo
)
{
return
commandPojo
.
getResponseMsg
();
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/pojo/convert/DailyPlanInfoPojo.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
pojo
.
convert
;
import
lombok.Data
;
import
java.util.List
;
/**
* @author duanruiming
* @date 2023/06/14 17:31
*/
@Data
public
class
DailyPlanInfoPojo
{
private
Integer
dailyPlanId
;
private
Integer
controlCrossId
;
private
List
<
String
>
startTimeChain
;
private
List
<
Integer
>
schemeIdChain
;
private
List
<
Integer
>
controlModelChain
;
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/pojo/convert/FaultInfoPojo.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
pojo
.
convert
;
import
lombok.Data
;
/**
* @author duanruiming
* @date 2023/06/16 8:43
*/
@Data
public
class
FaultInfoPojo
{
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/pojo/convert/LightsInfoPojo.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
pojo
.
convert
;
import
lombok.Data
;
/**
* @author duanruiming
* @date 2023/06/14 10:35
*/
@Data
public
class
LightsInfoPojo
{
private
Integer
lightId
;
// 1-机动车 2-非机动车 3-行人 4-车道 5-可变交通标志 6-公交车灯具 7-有轨电车专用灯 8-特殊灯
private
Integer
type
;
public
static
Integer
getLightsDir
(
Integer
lightId
)
{
// 万集 灯组放行方向:1北;2东北;3东;4东南;5南;6西南;7西;8西北
Integer
dir
=
null
;
if
(
lightId
<=
4
)
{
dir
=
1
;
}
else
if
(
lightId
<=
8
)
{
dir
=
3
;
}
else
if
(
lightId
<=
12
)
{
dir
=
5
;
}
else
if
(
lightId
<=
16
)
{
dir
=
7
;
}
return
dir
;
}
// 万集 灯组转向:1左转;2右转;3直行;4左掉头;5直左;6直右;7右掉头;8向左合流;9向右合流;10左转加掉头;11右转加掉头;
// 12直行加左掉头;13直行加右掉头;14左转右转;15左直右;16左转右转加掉头;17左直掉头;18左直右掉头;20行人
public
static
Integer
getTurnDir
(
Integer
lightId
,
Integer
type
)
{
Integer
turnDir
=
null
;
if
(
type
==
3
)
{
turnDir
=
20
;
return
turnDir
;
}
if
(
lightId
%
4
==
1
&&
type
==
1
)
{
turnDir
=
1
;
}
else
{
turnDir
=
6
;
}
return
turnDir
;
}
public
static
void
main
(
String
[]
args
)
{
System
.
err
.
println
(
1
%
4
==
1
);
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/pojo/convert/PhaseInfoPojo.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
pojo
.
convert
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.List
;
import
java.util.Objects
;
/**
* @author duanruiming
* @date 2023/06/13 14:21
* @description 相位信息转换实体
*/
@Data
@NoArgsConstructor
public
class
PhaseInfoPojo
{
private
Integer
phaseId
;
private
Integer
lightsId
;
private
Integer
greenTime
;
private
Integer
greenFlashTime
;
private
Integer
yellowTime
;
private
Integer
yellowFlashTime
;
private
Integer
redTime
;
private
Integer
minGreenTime
;
private
Integer
maxGreenTime
;
private
Integer
maxGreenTime2
;
private
Integer
extendGreenTime
;
public
static
PhaseInfoPojo
getPhaseInfoPojoByPhaseId
(
Integer
phaseId
,
List
<
PhaseInfoPojo
>
phaseInfoPojos
)
{
for
(
PhaseInfoPojo
phaseInfoPojo
:
phaseInfoPojos
)
{
if
(
Objects
.
equals
(
phaseInfoPojo
.
getPhaseId
(),
phaseId
))
{
return
phaseInfoPojo
;
}
}
return
null
;
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/pojo/convert/PhaseStageInfoPojo.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
pojo
.
convert
;
import
lombok.Data
;
import
java.util.List
;
/**
* @author duanruiming
* @date 2023/06/14 11:25
*/
@Data
public
class
PhaseStageInfoPojo
{
private
Integer
phaseStageId
;
private
List
<
Integer
>
phaseList
;
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/pojo/convert/PhaseStageStatusPojo.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
pojo
.
convert
;
import
lombok.Data
;
/**
* @author duanruiming
* @date 2023/06/19 14:29
*/
@Data
public
class
PhaseStageStatusPojo
{
private
Integer
phaseStageId
;
// 10 未放行 20 正在放行 30 过渡
private
String
phaseStageStatus
;
private
Integer
runningTime
;
private
Integer
remainTime
;
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/pojo/convert/RunningLightsStatusPojo.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
pojo
.
convert
;
import
lombok.Data
;
import
java.util.Date
;
import
java.util.List
;
/**
* 海信运行状态实体
* @author duanruiming
* @date 2023/06/29 9:08
*/
@Data
public
class
RunningLightsStatusPojo
{
// 路口编号
private
String
CID
;
// 周期长
private
Integer
CC
;
// 周期倒计时
private
Integer
CCCD
;
// 当前控制模式
private
Integer
CCM
;
// 当前控制方式
private
Integer
CCT
;
private
List
<
Channel
>
CHANNEL
;
// 当前运行方案号
private
Integer
PLN
;
// 信号机参数版本
private
Integer
PV
;
// 系统时间戳,毫秒级
private
Date
TS
;
private
List
<
Phase
>
PHASE
;
@Data
public
static
class
Phase
{
// 相位灯态 1-绿灯 2-红灯 4-黄灯
private
Integer
LS
;
// 相位倒计时
private
Integer
PCD
;
// 相位号
private
Integer
PHN
;
// 相位绿信比
private
Integer
PS
;
}
@Data
public
static
class
Channel
{
// 32个通道信息 1-绿灯 2-红灯 4-黄灯
private
List
<
Integer
>
SCS
;
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/pojo/convert/RunningStatusPojo.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
pojo
.
convert
;
import
lombok.Data
;
/**
* @author duanruiming
* @date 2023/06/16 10:00
*/
@Data
public
class
RunningStatusPojo
{
private
Integer
controlCrossId
;
private
String
controlMode
;
private
Integer
schemeId
;
private
Integer
phaseStageId
;
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/pojo/convert/ScheduleInfoPojo.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
pojo
.
convert
;
import
lombok.Data
;
import
java.util.List
;
/**
* @author duanruiming
* @date 2023/06/15 15:07
*/
@Data
public
class
ScheduleInfoPojo
{
private
Integer
scheduleId
;
private
Integer
controlCrossId
;
private
Integer
priority
;
private
List
<
Integer
>
week
;
private
List
<
Integer
>
month
;
private
List
<
Integer
>
day
;
private
Integer
dailyPlanId
;
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/pojo/convert/SchemeInfoPojo.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
pojo
.
convert
;
import
lombok.Data
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Objects
;
/**
* @author duanruiming
* @date 2023/06/14 15:39
*/
@Data
public
class
SchemeInfoPojo
{
private
Integer
schemeId
;
// 所属方案序号 一台信号机控制多路口时使用
private
Integer
controlCrossId
;
// 单位s
private
Integer
cycle
;
// 方案协调序号 需要协调的相位序号
private
Integer
harmonizeId
;
private
Integer
offset
;
private
List
<
Integer
>
phaseStageChain
;
private
List
<
Integer
>
phaseStageTimeChain
;
// 10 固定出现 20 检测器按需出现
private
List
<
Integer
>
phaseStageTypeChain
;
@Data
public
static
class
SchemeStagePojo
{
private
Integer
schemeId
;
private
Integer
phaseStageId
;
private
Integer
phaseStageTime
;
private
Integer
phaseStageType
;
}
public
static
List
<
SchemeStagePojo
>
getStageInfoList
(
SchemeInfoPojo
schemeInfoPojo
)
{
if
(
Objects
.
nonNull
(
schemeInfoPojo
))
{
List
<
SchemeStagePojo
>
schemeStagePojos
=
new
ArrayList
<>();
for
(
int
i
=
0
;
i
<
schemeInfoPojo
.
getPhaseStageChain
().
size
();
i
++)
{
SchemeStagePojo
schemeStagePojo
=
new
SchemeStagePojo
();
schemeStagePojo
.
setSchemeId
(
schemeInfoPojo
.
getSchemeId
());
schemeStagePojo
.
setPhaseStageId
(
schemeInfoPojo
.
getPhaseStageChain
().
get
(
i
));
schemeStagePojo
.
setPhaseStageTime
(
schemeInfoPojo
.
getPhaseStageTimeChain
().
get
(
i
));
schemeStagePojo
.
setPhaseStageType
(
schemeInfoPojo
.
getPhaseStageTypeChain
().
get
(
i
));
schemeStagePojos
.
add
(
schemeStagePojo
);
}
return
schemeStagePojos
;
}
return
null
;
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/pojo/netty/MessageResultPojo.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
pojo
.
netty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.util.concurrent.CountDownLatch
;
/**
* @author duanruiming
* @date 2023/05/08 14:14
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public
class
MessageResultPojo
{
/**
* 命令标识
*/
private
String
sign
;
/**
* 计数对象
*/
private
CountDownLatch
countDownLatch
;
/**
* 消息请求时间
*/
private
long
startTime
;
/**
* 灯态毫秒时长
*/
private
int
waitMillisecond
;
/**
* netty响应消息16进制字符串
*/
private
Object
hexMessageResult
;
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/service/CommonService.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
service
;
import
lombok.NonNull
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.databus.dao.mapper.CrossInfoMapper
;
import
net.wanji.databus.dao.mapper.ManufacturerInfoMapper
;
import
net.wanji.databus.po.CrossInfoPO
;
import
net.wanji.databus.po.ManufacturerInfoPO
;
import
org.springframework.stereotype.Service
;
/**
* @author duanruiming
* @date 2023/05/08 16:12
*/
@Slf4j
@Service
@RequiredArgsConstructor
public
class
CommonService
{
private
final
CrossInfoMapper
crossInfoMapper
;
private
final
ManufacturerInfoMapper
manufacturerInfoMapper
;
/**
* 通过路口编号获取厂商编码
*
* @param crossId
* @return
*/
@NonNull
public
String
getManufacturerCodeByCrossId
(
String
crossId
)
{
CrossInfoPO
crossInfoPO
=
crossInfoMapper
.
selectByPrimaryKey
(
crossId
);
Integer
manufacturerId
=
crossInfoPO
.
getManufacturerId
();
ManufacturerInfoPO
manufacturerInfoPO
=
manufacturerInfoMapper
.
selectById
(
manufacturerId
);
return
manufacturerInfoPO
.
getCode
();
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/service/controller/ControlCommandService.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
service
.
controller
;
import
net.wanji.common.framework.rest.JsonViewObject
;
import
net.wanji.databus.vo.*
;
/**
* @author duanruiming
* @date 2023/05/08 10:42
*/
public
interface
ControlCommandService
{
/**
* 方案下发
*/
JsonViewObject
schemeSend
(
SchemeSendVO
schemeSendVO
)
throws
Exception
;
/**
* 计划下发
*
* @param planSendVO 计划下发VO
* @return
*/
JsonViewObject
planSend
(
PlanSendVO
planSendVO
)
throws
Exception
;
/**
* 时间表下发
*
* @param scheduleSendVO 时间表下发VO
* @return
*/
JsonViewObject
scheduleSend
(
ScheduleSendVO
scheduleSendVO
)
throws
Exception
;
/**
* 锁定控制
*
* @param commandVO 控制指令VO
* @return
* @throws Exception 异常
*/
JsonViewObject
lockControl
(
ControlCommandVO
commandVO
)
throws
Exception
;
/**
* 步进控制
*
* @param code 信号机编号
* @param command 1 开始步进 0 取消步进
* @param stepNum 0 顺序步进 n 跳过n个相位
* @return
* @throws Exception 异常
*/
JsonViewObject
stepControl
(
String
code
,
Integer
command
,
Integer
stepNum
)
throws
Exception
;
/**
* 设置信号机控制模式
*
* @param commandVO 信号机编号
* @return
* @throws Exception 异常
*/
JsonViewObject
setSignalControl
(
ControlCommandVO
commandVO
)
throws
Exception
;
/**
* 恢复时间表
*
* @param code 信号机编号
* @return
*/
JsonViewObject
recoverSchedule
(
String
code
)
throws
Exception
;
/**
* 相位配时下发
*
* @return
* @throws InterruptedException 中断异常
*/
JsonViewObject
phaseTimingSend
(
PhaseTimingSendVO
phaseTimingSendVO
)
throws
Exception
;
/**
* 相位差下发
*/
JsonViewObject
phaseDiffSend
();
/**
* 删除信号机配置参数
* 删除信号机配置参数-目前支持相位、方案、计划、日期
*
* @param delBaseConfigPO
* @return
*/
// JsonViewObject delBaseConfig(DelBaseConfigPOfigPO delBaseConfigPO) throws Exception;
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/service/controller/SignalStatusService.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
service
.
controller
;
import
net.wanji.databus.po.SignalStatusLogPO
;
import
net.wanji.databus.vo.LightsStatusVO
;
import
java.util.List
;
/**
* @author Kent HAN
* @date 2022/11/21 9:09
*/
public
interface
SignalStatusService
{
/**
* todo 提供给其他平台,需要确认以厂商还是以路口形式推送数据
*
* @param crossId
* @return
*/
List
<
SignalStatusLogPO
>
runningStatusAlarm
(
String
crossId
);
List
<
LightsStatusVO
>
lightStatus
(
String
crossId
);
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/service/controller/StaticInfoService.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
service
.
controller
;
import
net.wanji.databus.dao.entity.CrossSchedulesPO
;
import
net.wanji.databus.dto.CrossInfoDTO
;
import
net.wanji.databus.dto.CrossSchedulesDTO
;
import
net.wanji.databus.dto.PlanSectionDTO
;
import
net.wanji.databus.dto.SchemePhaseLightsDTO
;
import
net.wanji.databus.po.CrossInfoPO
;
import
net.wanji.databus.vo.PlanSectionVO
;
import
net.wanji.databus.vo.SchemePhaseLightsVO
;
import
java.util.List
;
public
interface
StaticInfoService
{
List
<
CrossInfoPO
>
crossBasicInfo
(
CrossInfoDTO
crossInfoDTO
)
throws
Exception
;
SchemePhaseLightsVO
schemePhaseLights
(
SchemePhaseLightsDTO
schemePhaseLightsDTO
)
throws
Exception
;
List
<
PlanSectionVO
>
planSection
(
PlanSectionDTO
planSectionDTO
)
throws
Exception
;
List
<
CrossSchedulesPO
>
crossSchedules
(
CrossSchedulesDTO
crossSchedulesDTO
)
throws
Exception
;
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/service/controller/impl/ControlCommandServiceImpl.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
service
.
controller
.
impl
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.common.framework.rest.JsonViewObject
;
import
net.wanji.databus.vo.*
;
import
net.wanji.utc.hisense.service.controller.ControlCommandService
;
import
org.springframework.stereotype.Service
;
/**
* @author duanruiming
* @date 2023/05/08 10:43
*/
@Service
@RequiredArgsConstructor
@Slf4j
public
class
ControlCommandServiceImpl
implements
ControlCommandService
{
@Override
public
JsonViewObject
schemeSend
(
SchemeSendVO
schemeSendVO
)
throws
Exception
{
return
null
;
}
@Override
public
JsonViewObject
planSend
(
PlanSendVO
planSendVO
)
throws
Exception
{
return
null
;
}
@Override
public
JsonViewObject
scheduleSend
(
ScheduleSendVO
scheduleSendVO
)
throws
Exception
{
return
null
;
}
@Override
public
JsonViewObject
lockControl
(
ControlCommandVO
commandVO
)
throws
Exception
{
return
null
;
}
@Override
public
JsonViewObject
stepControl
(
String
code
,
Integer
command
,
Integer
stepNum
)
throws
Exception
{
return
null
;
}
@Override
public
JsonViewObject
setSignalControl
(
ControlCommandVO
commandVO
)
throws
Exception
{
return
null
;
}
@Override
public
JsonViewObject
recoverSchedule
(
String
code
)
throws
Exception
{
return
null
;
}
@Override
public
JsonViewObject
phaseTimingSend
(
PhaseTimingSendVO
phaseTimingSendVO
)
throws
Exception
{
return
null
;
}
@Override
public
JsonViewObject
phaseDiffSend
()
{
return
null
;
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/service/controller/impl/SignalStatusServiceImpl.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
service
.
controller
.
impl
;
import
net.wanji.databus.po.SignalStatusLogPO
;
import
net.wanji.databus.vo.LightsStatusVO
;
import
net.wanji.utc.hisense.cache.SignalDataCache
;
import
net.wanji.utc.hisense.common.enums.ControlModelEnum
;
import
net.wanji.utc.hisense.common.enums.PhaseLightColorEnum
;
import
net.wanji.utc.hisense.pojo.convert.RunningLightsStatusPojo
;
import
net.wanji.utc.hisense.service.controller.SignalStatusService
;
import
net.wanji.utc.hisense.util.CommonUtils
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
java.util.*
;
/**
* @author duanruiming
* @date 2023/05/08 17:28
*/
@Service
public
class
SignalStatusServiceImpl
implements
SignalStatusService
{
@Override
public
List
<
SignalStatusLogPO
>
runningStatusAlarm
(
String
crossId
)
{
return
null
;
}
@Override
public
List
<
LightsStatusVO
>
lightStatus
(
String
crossId
)
{
List
<
LightsStatusVO
>
lightsStatusVOS
=
new
ArrayList
<>();
Map
<
String
,
RunningLightsStatusPojo
>
runningStateInfoCache
=
SignalDataCache
.
runningStateInfoCache
;
if
(!
runningStateInfoCache
.
isEmpty
())
{
RunningLightsStatusPojo
runningLightsStatusPojo
=
runningStateInfoCache
.
get
(
crossId
);
LightsStatusVO
lightsStatusVO
=
new
LightsStatusVO
();
lightsStatusVO
.
setCrossId
(
crossId
);
String
runMode
=
String
.
valueOf
(
ControlModelEnum
.
getWjControlMode
(
runningLightsStatusPojo
.
getCCT
()));
lightsStatusVO
.
setRunMode
(
runMode
);
lightsStatusVO
.
setCycleLen
(
runningLightsStatusPojo
.
getCC
());
// 相位剩余时长
List
<
RunningLightsStatusPojo
.
Phase
>
phaseList
=
runningLightsStatusPojo
.
getPHASE
();
Integer
phaseId
=
0
;
Integer
phaseCountDown
=
0
;
for
(
RunningLightsStatusPojo
.
Phase
phase
:
phaseList
)
{
Integer
ls
=
phase
.
getLS
();
if
(
Objects
.
equals
(
ls
,
1
))
{
// 当前相位绿灯
phaseId
=
phase
.
getPHN
();
phaseCountDown
=
phase
.
getPCD
();
}
}
lightsStatusVO
.
setCycleCountDown
(
phaseCountDown
);
lightsStatusVO
.
setPhaseId
(
String
.
valueOf
(
phaseId
));
lightsStatusVO
.
setSchemeId
(
String
.
valueOf
(
runningLightsStatusPojo
.
getPLN
()));
List
<
RunningLightsStatusPojo
.
Channel
>
channelList
=
runningLightsStatusPojo
.
getCHANNEL
();
Map
<
String
,
Object
>
dirLampGroupMap
=
new
HashMap
<>();
if
(!
CollectionUtils
.
isEmpty
(
channelList
))
{
for
(
RunningLightsStatusPojo
.
Channel
channel
:
channelList
)
{
List
<
Integer
>
scs
=
channel
.
getSCS
();
if
(!
CollectionUtils
.
isEmpty
(
scs
))
{
for
(
int
i
=
0
;
i
<
scs
.
size
();
i
++)
{
Map
<
Integer
,
String
>
turnColorMap
=
new
HashMap
<>();
String
lightsColor
=
String
.
valueOf
(
scs
.
get
(
i
));
String
wjLightColor
=
PhaseLightColorEnum
.
getWjLightColor
(
lightsColor
);
Integer
turn
=
CommonUtils
.
getTurnByLightsId
(
i
);
turnColorMap
.
put
(
turn
,
wjLightColor
);
String
dir
=
String
.
valueOf
(
CommonUtils
.
getDirByLightsId
(
i
));
if
(
dirLampGroupMap
.
isEmpty
()
||
Objects
.
isNull
(
dirLampGroupMap
.
get
(
dir
)))
{
dirLampGroupMap
.
put
(
dir
,
turnColorMap
);
}
else
{
Map
<
Integer
,
String
>
currentTurnColorMap
=
(
Map
<
Integer
,
String
>)
dirLampGroupMap
.
get
(
dir
);
currentTurnColorMap
.
put
(
turn
,
wjLightColor
);
dirLampGroupMap
.
put
(
dir
,
currentTurnColorMap
);
}
}
}
}
}
lightsStatusVO
.
setDirLampGroupMap
(
dirLampGroupMap
);
lightsStatusVOS
.
add
(
lightsStatusVO
);
}
return
lightsStatusVOS
;
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/service/controller/impl/StaticInfoServiceImpl.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
service
.
controller
.
impl
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.databus.dao.entity.CrossSchedulesPO
;
import
net.wanji.databus.dto.CrossInfoDTO
;
import
net.wanji.databus.dto.CrossSchedulesDTO
;
import
net.wanji.databus.dto.PlanSectionDTO
;
import
net.wanji.databus.dto.SchemePhaseLightsDTO
;
import
net.wanji.databus.po.CrossInfoPO
;
import
net.wanji.databus.vo.PlanSectionVO
;
import
net.wanji.databus.vo.SchemePhaseLightsVO
;
import
net.wanji.utc.hisense.service.controller.StaticInfoService
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
/**
* @author duanruiming
* @date 2023/05/08 17:29
*/
@Service
@RequiredArgsConstructor
@Slf4j
public
class
StaticInfoServiceImpl
implements
StaticInfoService
{
@Override
public
List
<
CrossInfoPO
>
crossBasicInfo
(
CrossInfoDTO
crossInfoDTO
)
throws
Exception
{
return
null
;
}
@Override
public
SchemePhaseLightsVO
schemePhaseLights
(
SchemePhaseLightsDTO
schemePhaseLightsDTO
)
throws
Exception
{
return
null
;
}
@Override
public
List
<
PlanSectionVO
>
planSection
(
PlanSectionDTO
planSectionDTO
)
throws
Exception
{
return
null
;
}
@Override
public
List
<
CrossSchedulesPO
>
crossSchedules
(
CrossSchedulesDTO
crossSchedulesDTO
)
throws
Exception
{
return
null
;
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/service/protocol/ProtocolConversion.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
service
.
protocol
;
import
net.wanji.databus.po.CrossInfoPO
;
/**
* @author duanruiming
* @date 2023/05/08 10:25
*/
public
interface
ProtocolConversion
<
R
,
T
>
{
/**
* 协议解析为实体类
*
* @param crossInfo
* @return
*/
R
protocolConvertEntity
(
CrossInfoPO
crossInfo
);
String
entityConvertProtocol
(
T
t
);
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/service/protocol/impl/base/DailyPlanProtocolConversionService.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
service
.
protocol
.
impl
.
base
;
import
net.wanji.utc.hisense.service.protocol.ProtocolConversion
;
import
net.wanji.databus.po.CrossInfoPO
;
/**
* @author duanruiming
* @date 2023/05/11 18:29
*/
public
class
DailyPlanProtocolConversionService
implements
ProtocolConversion
{
@Override
public
Object
protocolConvertEntity
(
CrossInfoPO
crossInfo
)
{
return
null
;
}
@Override
public
String
entityConvertProtocol
(
Object
o
)
{
return
null
;
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/service/protocol/impl/base/DetectorProtocolConversionService.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
service
.
protocol
.
impl
.
base
;
import
net.wanji.utc.hisense.service.protocol.ProtocolConversion
;
import
net.wanji.databus.po.CrossInfoPO
;
/**
* @author duanruiming
* @date 2023/05/11 18:24
*/
public
class
DetectorProtocolConversionService
implements
ProtocolConversion
{
@Override
public
Object
protocolConvertEntity
(
CrossInfoPO
crossInfo
)
{
return
null
;
}
@Override
public
String
entityConvertProtocol
(
Object
o
)
{
return
null
;
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/service/protocol/impl/base/LightsGroupProtocolConvertionService.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
service
.
protocol
.
impl
.
base
;
import
net.wanji.utc.hisense.service.protocol.ProtocolConversion
;
import
net.wanji.databus.po.CrossInfoPO
;
/**
* @author duanruiming
* @date 2023/05/11 18:20
*/
public
class
LightsGroupProtocolConvertionService
implements
ProtocolConversion
{
@Override
public
Object
protocolConvertEntity
(
CrossInfoPO
crossInfo
)
{
return
null
;
}
@Override
public
String
entityConvertProtocol
(
Object
o
)
{
return
null
;
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/service/protocol/impl/base/PhaseProtocolConversionService.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
service
.
protocol
.
impl
.
base
;
import
net.wanji.utc.hisense.netty.NettyClient
;
import
net.wanji.utc.hisense.pojo.netty.MessageResultPojo
;
import
net.wanji.utc.hisense.service.protocol.ProtocolConversion
;
import
net.wanji.databus.po.CrossInfoPO
;
/**
* @author duanruiming
* @date 2023/05/09 17:35
*/
public
class
PhaseProtocolConversionService
implements
ProtocolConversion
<
Object
,
Object
>
{
@Override
public
Object
protocolConvertEntity
(
CrossInfoPO
crossInfo
)
{
MessageResultPojo
resultPojo
=
NettyClient
.
sendMessage
(
"ip"
,
80
,
"aadd"
,
"1122"
,
300
);
return
null
;
}
@Override
public
String
entityConvertProtocol
(
Object
o
)
{
return
null
;
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/service/protocol/impl/base/PhaseSecurityProtocolConversionService.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
service
.
protocol
.
impl
.
base
;
import
net.wanji.utc.hisense.service.protocol.ProtocolConversion
;
import
net.wanji.databus.po.CrossInfoPO
;
/**
* @author duanruiming
* @date 2023/05/11 18:27
*/
public
class
PhaseSecurityProtocolConversionService
implements
ProtocolConversion
{
@Override
public
Object
protocolConvertEntity
(
CrossInfoPO
crossInfo
)
{
return
null
;
}
@Override
public
String
entityConvertProtocol
(
Object
o
)
{
return
null
;
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/service/protocol/impl/base/ScheduleProtocolConversionService.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
service
.
protocol
.
impl
.
base
;
import
net.wanji.utc.hisense.service.protocol.ProtocolConversion
;
import
net.wanji.databus.po.CrossInfoPO
;
/**
* @author duanruiming
* @date 2023/05/11 18:30
*/
public
class
ScheduleProtocolConversionService
implements
ProtocolConversion
{
@Override
public
Object
protocolConvertEntity
(
CrossInfoPO
crossInfo
)
{
return
null
;
}
@Override
public
String
entityConvertProtocol
(
Object
o
)
{
return
null
;
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/service/protocol/impl/base/SchemeProtocolConversionService.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
service
.
protocol
.
impl
.
base
;
import
net.wanji.utc.hisense.service.protocol.ProtocolConversion
;
import
net.wanji.databus.po.CrossInfoPO
;
/**
* @author duanruiming
* @date 2023/05/11 18:29
*/
public
class
SchemeProtocolConversionService
implements
ProtocolConversion
{
@Override
public
Object
protocolConvertEntity
(
CrossInfoPO
crossInfo
)
{
return
null
;
}
@Override
public
String
entityConvertProtocol
(
Object
o
)
{
return
null
;
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/service/protocol/impl/base/SignalDeviceProtocolConversionService.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
service
.
protocol
.
impl
.
base
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.utc.hisense.netty.NettyClient
;
import
net.wanji.utc.hisense.pojo.netty.MessageResultPojo
;
import
net.wanji.utc.hisense.service.protocol.ProtocolConversion
;
import
net.wanji.databus.po.CrossInfoPO
;
import
org.springframework.stereotype.Service
;
/**
* @author duanruiming
* @date 2023/05/16 17:16
*/
@Service
@Slf4j
public
class
SignalDeviceProtocolConversionService
implements
ProtocolConversion
{
@Override
public
Object
protocolConvertEntity
(
CrossInfoPO
crossInfo
)
{
MessageResultPojo
resultPojo
=
NettyClient
.
sendMessage
(
"10.102.1.204"
,
5050
,
"0x7e00120001010000000101011001000501030000005CB40x7d"
,
"20"
,
300
);
log
.
info
(
"设备基本信息: {}"
,
resultPojo
);
return
null
;
}
@Override
public
String
entityConvertProtocol
(
Object
o
)
{
return
null
;
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/service/protocol/impl/base/StageProtocolConversionService.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
service
.
protocol
.
impl
.
base
;
import
net.wanji.utc.hisense.service.protocol.ProtocolConversion
;
import
net.wanji.databus.po.CrossInfoPO
;
/**
* @author duanruiming
* @date 2023/05/11 18:25
*/
public
class
StageProtocolConversionService
implements
ProtocolConversion
{
@Override
public
Object
protocolConvertEntity
(
CrossInfoPO
crossInfo
)
{
return
null
;
}
@Override
public
String
entityConvertProtocol
(
Object
o
)
{
return
null
;
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/service/protocol/impl/control/ControlProtocolConversionService.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
service
.
protocol
.
impl
.
control
;
import
net.wanji.utc.hisense.service.protocol.ProtocolConversion
;
import
net.wanji.databus.po.CrossInfoPO
;
/**
* @author duanruiming
* @date 2023/05/12 10:14
*/
public
class
ControlProtocolConversionService
implements
ProtocolConversion
{
@Override
public
Object
protocolConvertEntity
(
CrossInfoPO
crossInfo
)
{
return
null
;
}
@Override
public
String
entityConvertProtocol
(
Object
o
)
{
return
null
;
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/service/protocol/impl/status/RunningStateProtocolConversionService.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
service
.
protocol
.
impl
.
status
;
import
net.wanji.utc.hisense.service.protocol.ProtocolConversion
;
import
net.wanji.databus.po.CrossInfoPO
;
/**
* @author duanruiming
* @date 2023/05/12 10:16
*/
public
class
RunningStateProtocolConversionService
implements
ProtocolConversion
{
@Override
public
Object
protocolConvertEntity
(
CrossInfoPO
crossInfo
)
{
return
null
;
}
@Override
public
String
entityConvertProtocol
(
Object
o
)
{
return
null
;
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/util/CRC16Utils.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
util
;
import
cn.hutool.core.util.HexUtil
;
/**
* @author duanruiming
* @date 2023/05/12 15:26
*/
public
class
CRC16Utils
{
/**
* 获取CRC16校验结果 【报文长度+报文体】
*
* @param body
* @return
*/
public
static
String
getCRC16HexStr
(
String
body
)
{
byte
[]
bytes
=
HexUtil
.
decodeHex
(
body
);
int
result
=
crc16
(
bytes
);
return
HexUtil
.
toHex
(
result
);
}
/**
* 多项式1005 初始值0000 异或值0000 不反转
*
* @param bytes
* @return
*/
public
static
int
crc16
(
byte
[]
bytes
)
{
int
crc
=
0x0000
;
for
(
byte
b
:
bytes
)
{
crc
^=
(
b
<<
8
);
for
(
int
i
=
0
;
i
<
8
;
i
++)
{
if
((
crc
&
0x8000
)
!=
0
)
{
crc
=
(
crc
<<
1
)
^
0x1005
;
}
else
{
crc
=
(
crc
<<
1
);
}
}
}
return
crc
&
0xFFFF
;
}
}
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/util/CommonUtils.java
0 → 100644
View file @
15e5e3d1
package
net
.
wanji
.
utc
.
hisense
.
util
;
import
cn.hutool.core.util.HexUtil
;
import
freemarker.template.utility.StringUtil
;
/**
* @author duanruiming
* @date 2023/06/20 15:07
*/
public
class
CommonUtils
{
/**
* 将数组转化为16进制字符串
*
* @param array
* @return
*/
public
static
String
getHex4Array
(
int
[]
array
)
{
StringBuilder
sb
=
new
StringBuilder
();
for
(
int
i
:
array
)
{
sb
.
append
(
i
);
}
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
();
}
/**
* 将相位转化为64位数组,在转化为16位的16进制
*
* @param param
* @return
*/
public
static
String
getBinary
(
Integer
param
)
{
int
[]
array
=
new
int
[
64
];
array
[
param
-
1
]
=
1
;
StringBuffer
resultSb
=
new
StringBuffer
();
for
(
int
i
=
0
;
i
<
array
.
length
/
8
;
i
++)
{
StringBuffer
sb
=
new
StringBuffer
();
for
(
int
j
=
0
;
j
<
8
;
j
++)
{
sb
.
append
(
array
[
i
*
8
+
j
]);
}
String
hex
=
String
.
format
(
"%02x"
,
Integer
.
parseInt
(
sb
.
reverse
().
toString
(),
2
));
resultSb
.
insert
(
0
,
hex
);
}
return
StringUtil
.
leftPad
(
resultSb
.
toString
(),
16
,
"0"
);
}
/**
* 将单个参数转化为4位二进制
*
* @param param
* @return
*/
public
static
Integer
get4BinaryInteger
(
Integer
param
)
{
int
[]
array
=
new
int
[
4
];
int
index
=
param
%
4
;
if
(
param
%
4
!=
0
)
{
array
[
4
-
index
]
=
1
;
}
else
{
array
[
0
]
=
1
;
}
StringBuffer
sb
=
new
StringBuffer
();
for
(
int
j
=
0
;
j
<
4
;
j
++)
{
sb
.
append
(
array
[
j
]);
}
return
Integer
.
parseInt
(
sb
.
toString
(),
2
);
}
/**
* 通过灯组编号获取灯组转向, 1 左转 2 直右 3 右 4 行人
*
* @param lightId
* @return
*/
public
static
Integer
getTurnByLightsId
(
Integer
lightId
)
{
Integer
turn
=
null
;
if
(
lightId
%
4
==
0
)
{
turn
=
1
;
}
if
(
lightId
%
4
==
1
)
{
turn
=
2
;
}
if
(
lightId
%
4
==
2
)
{
turn
=
3
;
}
if
(
lightId
%
4
==
3
)
{
turn
=
20
;
}
return
turn
;
}
public
static
Integer
getDirByLightsId
(
Integer
lightsId
)
{
Integer
dir
=
null
;
if
(
lightsId
<
4
)
{
dir
=
1
;
}
if
(
lightsId
>=
4
&&
lightsId
<
8
)
{
dir
=
3
;
}
if
(
lightsId
>=
8
&&
lightsId
<
12
)
{
dir
=
5
;
}
if
(
lightsId
>=
12
&&
lightsId
<
16
)
{
dir
=
7
;
}
return
dir
;
}
public
static
void
main
(
String
[]
args
)
{
System
.
err
.
println
(
get4BinaryInteger
(
4
));
}
}
signal-utc-hisense-service/src/main/resources/bootstrap-dev.yaml
0 → 100644
View file @
15e5e3d1
spring
:
cloud
:
nacos
:
config
:
server-addr
:
10.102.1.182:8848
file-extension
:
yaml
group
:
signal
namespace
:
signal
username
:
nacos
password
:
nacos
application
:
# dubbo启动需要程序名称
name
:
utc-dt
main
:
allow-circular-references
:
true
signal-utc-hisense-service/src/main/resources/bootstrap.yaml
0 → 100644
View file @
15e5e3d1
spring
:
profiles
:
active
:
dev
\ No newline at end of file
signal-utc-hisense-service/src/main/resources/logback-spring.xml
0 → 100644
View file @
15e5e3d1
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<property
name=
"encoding"
value=
"UTF-8"
/>
<property
name=
"normal-pattern"
value=
"%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level[%thread]%logger{56}.%method:%L -%msg%n"
/>
<property
name=
"LOG_PATH"
value=
"./logs"
/>
<!-- 配置打印DEBUG级别日志的环境. 多个使用逗号隔开. -->
<springProfile
name=
"dev,test"
>
<!-- 如果需要,请自行开启spring或其他组件的debug级别 -->
<logger
name=
"net.wanji.com"
level=
"info"
/>
</springProfile>
<!-- 配置打印INFO级别日志的环境 -->
<springProfile
name=
"prod"
>
<logger
name=
"net.wanji.utc.hisense"
level=
"info"
/>
</springProfile>
<appender
name=
"consoleLog"
class=
"ch.qos.logback.core.ConsoleAppender"
>
<layout
class=
"ch.qos.logback.classic.PatternLayout"
>
<pattern>
${normal-pattern}
</pattern>
</layout>
</appender>
<appender
name=
"fileInfoLog"
class=
"ch.qos.logback.core.rolling.RollingFileAppender"
>
<file>
${LOG_PATH}/dt/info.log
</file>
<filter
class=
"ch.qos.logback.classic.filter.LevelFilter"
>
<level>
ERROR
</level>
<onMatch>
DENY
</onMatch>
<onMismatch>
ACCEPT
</onMismatch>
</filter>
<encoder>
<pattern>
${normal-pattern}
</pattern>
<charset>
${encoding}
</charset>
</encoder>
<!--滚动策略-->
<rollingPolicy
class=
"ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"
>
<!--路径-->
<fileNamePattern>
${LOG_PATH}/dt/%d{yyyy-MM-dd}/info.%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<MaxHistory>
30
</MaxHistory>
<totalSizeCap
>
10GB
</totalSizeCap >
<maxFileSize>
200MB
</maxFileSize>
</rollingPolicy>
</appender>
<appender
name=
"fileErrorLog"
class=
"ch.qos.logback.core.rolling.RollingFileAppender"
>
<file>
${LOG_PATH}/dt/error.log
</file>
<filter
class=
"ch.qos.logback.classic.filter.ThresholdFilter"
>
<level>
ERROR
</level>
</filter>
>
<encoder>
<pattern>
${normal-pattern}
</pattern>
<charset>
${encoding}
</charset>
</encoder>
<!--滚动策略-->
<rollingPolicy
class=
"ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"
>
<!--路径-->
<fileNamePattern>
${LOG_PATH}/dt/%d{yyyy-MM-dd}/error.%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<MaxHistory>
30
</MaxHistory>
<totalSizeCap
>
10GB
</totalSizeCap >
<maxFileSize>
200MB
</maxFileSize>
</rollingPolicy>
</appender>
<root
level=
"INFO"
>
<appender-ref
ref=
"consoleLog"
/>
<appender-ref
ref=
"fileInfoLog"
/>
<appender-ref
ref=
"fileErrorLog"
/>
</root>
</configuration>
\ No newline at end of file
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