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
cc4dce64
Commit
cc4dce64
authored
Jan 12, 2023
by
duanruiming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
信号机运行数据-万集统一标准接口服务
parent
dd852437
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
330 additions
and
22 deletions
+330
-22
pom.xml
signal-utc-service/pom.xml
+4
-0
WebSocketConfig.java
...e/src/main/java/net/wanji/utc/config/WebSocketConfig.java
+21
-0
rpcService.java
...ain/java/net/wanji/utc/service/rpcservice/rpcService.java
+29
-0
SignalStatusService.java
...et/wanji/utc/service/runninginfo/SignalStatusService.java
+7
-0
WanJiRunningStatusService.java
...ji/utc/service/runninginfo/WanJiRunningStatusService.java
+28
-0
SignalStatusServiceImpl.java
...utc/service/runninginfo/impl/SignalStatusServiceImpl.java
+22
-5
WanJiRunningStatusServiceImpl.java
...rvice/runninginfo/impl/WanJiRunningStatusServiceImpl.java
+48
-0
WanjiCommonStaticInfoService.java
.../utc/service/staticinfo/WanjiCommonStaticInfoService.java
+2
-1
StaticInfoServiceImpl.java
...ji/utc/service/staticinfo/impl/StaticInfoServiceImpl.java
+1
-1
WanjiCommonStaticInfoServiceImpl.java
...ice/staticinfo/impl/WanjiCommonStaticInfoServiceImpl.java
+7
-13
SignalStatusTask.java
...ce/src/main/java/net/wanji/utc/task/SignalStatusTask.java
+6
-2
RealTimeDataWebSocket.java
...n/java/net/wanji/utc/websocket/RealTimeDataWebSocket.java
+155
-0
No files found.
signal-utc-service/pom.xml
View file @
cc4dce64
...
@@ -27,6 +27,10 @@
...
@@ -27,6 +27,10 @@
</properties>
</properties>
<dependencies>
<dependencies>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-websocket
</artifactId>
</dependency>
<dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter
</artifactId>
<artifactId>
spring-boot-starter
</artifactId>
...
...
signal-utc-service/src/main/java/net/wanji/utc/config/WebSocketConfig.java
0 → 100644
View file @
cc4dce64
package
net
.
wanji
.
utc
.
config
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.web.socket.server.standard.ServerEndpointExporter
;
/**
* @author duanruiming
* @date 2023/01/06 8:55
*/
@Configuration
public
class
WebSocketConfig
{
/**
* 注入ServerEndpointExporter,
* 这个bean会自动注册使用了@ServerEndpoint注解声明的Websocket endpoint
*/
@Bean
public
ServerEndpointExporter
serverEndpointExporter
()
{
return
new
ServerEndpointExporter
();
}
}
signal-utc-service/src/main/java/net/wanji/utc/service/
common
/rpcService.java
→
signal-utc-service/src/main/java/net/wanji/utc/service/
rpcservice
/rpcService.java
View file @
cc4dce64
package
net
.
wanji
.
utc
.
service
.
common
;
package
net
.
wanji
.
utc
.
service
.
rpcservice
;
import
net.wanji.utc.entity.JsonViewObject
;
import
net.wanji.utc.entity.JsonViewObject
;
import
net.wanji.utc.util.HttpRestUtil
;
import
java.util.Map
;
import
java.util.Map
;
import
java.util.Objects
;
/**
/**
* @author duanruiming
* @author duanruiming
...
@@ -17,7 +19,11 @@ public interface rpcService {
...
@@ -17,7 +19,11 @@ public interface rpcService {
* @param param
* @param param
* @return
* @return
*/
*/
default
JsonViewObject
rpcService
(
String
url
,
Map
<
String
,
String
>
headers
,
String
param
)
{
default
JsonViewObject
rpcService
(
HttpRestUtil
httpRestUtil
,
String
url
,
Map
<
String
,
String
>
headers
,
String
param
)
{
return
JsonViewObject
.
newInstance
();
JsonViewObject
jsonViewObject
=
httpRestUtil
.
doPost
(
url
,
headers
,
param
,
JsonViewObject
.
class
);
if
(
Objects
.
isNull
(
jsonViewObject
)
||
jsonViewObject
.
getCode
()
!=
200
)
{
return
jsonViewObject
.
fail
(
"远程服务调用异常,url:"
.
concat
(
url
));
}
return
jsonViewObject
;
}
}
}
}
signal-utc-service/src/main/java/net/wanji/utc/service/runninginfo/SignalStatusService.java
View file @
cc4dce64
...
@@ -12,5 +12,12 @@ import java.util.List;
...
@@ -12,5 +12,12 @@ import java.util.List;
public
interface
SignalStatusService
{
public
interface
SignalStatusService
{
List
<
SignalStatusLogPO
>
runningStatusAlarm
();
List
<
SignalStatusLogPO
>
runningStatusAlarm
();
/**
* todo 提供给其他平台,需要确认以厂商还是以路口形式推送数据
* @param crossId
* @return
*/
List
<
SignalStatusLogPO
>
runningStatusAlarm
(
String
crossId
);
List
<
LightsStatusVO
>
lightStatus
();
List
<
LightsStatusVO
>
lightStatus
();
}
}
signal-utc-service/src/main/java/net/wanji/utc/service/runninginfo/WanJiRunningStatusService.java
0 → 100644
View file @
cc4dce64
package
net
.
wanji
.
utc
.
service
.
runninginfo
;
import
net.wanji.utc.po.SignalStatusLogPO
;
import
net.wanji.utc.service.rpcservice.rpcService
;
import
net.wanji.utc.vo.LightsStatusVO
;
import
java.util.List
;
/**
* @author duanruiming
* @date 2023/01/11 17:32
*/
public
interface
WanJiRunningStatusService
extends
rpcService
{
/**
* 标准获取路口实时运行状态接口,包括告警数据
* @param crossIdList
* @return
*/
List
<
SignalStatusLogPO
>
runningStatus
(
List
<
String
>
crossIdList
);
/**
* 标准获取路口实时灯态接口
* @param crossIdList
* @return
*/
List
<
LightsStatusVO
>
lightsStatus
(
List
<
String
>
crossIdList
);
}
signal-utc-service/src/main/java/net/wanji/utc/service/runninginfo/impl/SignalStatusServiceImpl.java
View file @
cc4dce64
...
@@ -15,6 +15,7 @@ import net.wanji.utc.po.SignalStatusLogPO;
...
@@ -15,6 +15,7 @@ import net.wanji.utc.po.SignalStatusLogPO;
import
net.wanji.utc.service.runninginfo.HkLightsStatusService
;
import
net.wanji.utc.service.runninginfo.HkLightsStatusService
;
import
net.wanji.utc.service.runninginfo.HkRunningStatusService
;
import
net.wanji.utc.service.runninginfo.HkRunningStatusService
;
import
net.wanji.utc.service.runninginfo.SignalStatusService
;
import
net.wanji.utc.service.runninginfo.SignalStatusService
;
import
net.wanji.utc.service.runninginfo.WanJiRunningStatusService
;
import
net.wanji.utc.util.ListUtil
;
import
net.wanji.utc.util.ListUtil
;
import
net.wanji.utc.util.RedisUtil
;
import
net.wanji.utc.util.RedisUtil
;
import
net.wanji.utc.vo.LightsStatusVO
;
import
net.wanji.utc.vo.LightsStatusVO
;
...
@@ -23,6 +24,7 @@ import org.springframework.transaction.annotation.Transactional;
...
@@ -23,6 +24,7 @@ import org.springframework.transaction.annotation.Transactional;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
import
java.util.stream.Collectors
;
/**
/**
* @date 2022/11/21 9:11
* @date 2022/11/21 9:11
...
@@ -36,6 +38,7 @@ public class SignalStatusServiceImpl implements SignalStatusService {
...
@@ -36,6 +38,7 @@ public class SignalStatusServiceImpl implements SignalStatusService {
private
final
HkLightsStatusService
hkLightsStatusService
;
private
final
HkLightsStatusService
hkLightsStatusService
;
private
final
RedisUtil
redisUtil
;
private
final
RedisUtil
redisUtil
;
private
final
SignalStatusLogMapper
signalStatusLogMapper
;
private
final
SignalStatusLogMapper
signalStatusLogMapper
;
private
final
WanJiRunningStatusService
wanJiRunningStatusService
;
@Override
@Override
@Transactional
@Transactional
...
@@ -44,14 +47,18 @@ public class SignalStatusServiceImpl implements SignalStatusService {
...
@@ -44,14 +47,18 @@ public class SignalStatusServiceImpl implements SignalStatusService {
BasicEnum
.
ManufacturerEnum
[]
manufacturerEnums
=
BasicEnum
.
ManufacturerEnum
.
values
();
BasicEnum
.
ManufacturerEnum
[]
manufacturerEnums
=
BasicEnum
.
ManufacturerEnum
.
values
();
for
(
BasicEnum
.
ManufacturerEnum
manufacturerEnum
:
manufacturerEnums
)
{
for
(
BasicEnum
.
ManufacturerEnum
manufacturerEnum
:
manufacturerEnums
)
{
List
<
BaseCrossInfo
>
baseCrossInfoList
=
getBaseCrossInfoList
(
manufacturerEnum
);
List
<
BaseCrossInfo
>
baseCrossInfoList
=
getBaseCrossInfoList
(
manufacturerEnum
);
if
(
baseCrossInfoList
==
null
)
continue
;
if
(
baseCrossInfoList
==
null
)
{
continue
;
}
List
<
SignalStatusLogPO
>
signalStatusLogPOList
=
null
;
List
<
SignalStatusLogPO
>
signalStatusLogPOList
=
null
;
if
(
manufacturerEnum
.
getCode
().
equals
(
BasicEnum
.
ManufacturerEnum
.
HK
.
getCode
()))
{
if
(
manufacturerEnum
.
getCode
().
equals
(
BasicEnum
.
ManufacturerEnum
.
HK
.
getCode
()))
{
// 海康
// 海康
// 3.2.5信号机运行状态和告警信息
// 3.2.5信号机运行状态和告警信息
signalStatusLogPOList
=
hkRunningStatusService
.
getHkRunningStatus
(
baseCrossInfoList
);
signalStatusLogPOList
=
hkRunningStatusService
.
getHkRunningStatus
(
baseCrossInfoList
);
}
else
{
}
else
{
// todo 其他厂商
// todo 其他厂商
List
<
String
>
crossIdList
=
baseCrossInfoList
.
stream
().
map
(
BaseCrossInfo:
:
getCrossId
).
collect
(
Collectors
.
toList
());
signalStatusLogPOList
=
wanJiRunningStatusService
.
runningStatus
(
crossIdList
);
}
}
// 更新Redis
// 更新Redis
if
(
null
!=
signalStatusLogPOList
)
{
if
(
null
!=
signalStatusLogPOList
)
{
...
@@ -59,7 +66,7 @@ public class SignalStatusServiceImpl implements SignalStatusService {
...
@@ -59,7 +66,7 @@ public class SignalStatusServiceImpl implements SignalStatusService {
String
field
=
manufacturerEnum
.
getCode
()
+
Constants
.
SEPARATOR_UNDER_LINE
+
String
field
=
manufacturerEnum
.
getCode
()
+
Constants
.
SEPARATOR_UNDER_LINE
+
signalStatusLogPO
.
getSignalId
();
signalStatusLogPO
.
getSignalId
();
redisUtil
.
setHash
(
RedisKeyConst
.
KEY_PREFIX
+
RedisKeyConst
.
TELESEME_STATUS
,
field
,
redisUtil
.
setHash
(
RedisKeyConst
.
KEY_PREFIX
+
RedisKeyConst
.
TELESEME_STATUS
,
field
,
signalStatusLogPO
.
getStatus
()
+
""
);
signalStatusLogPO
.
getStatus
()
+
""
);
}
}
// 更新日志数据库
// 更新日志数据库
if
(
ListUtil
.
isNotEmpty
(
signalStatusLogPOList
))
{
if
(
ListUtil
.
isNotEmpty
(
signalStatusLogPOList
))
{
...
@@ -71,6 +78,12 @@ public class SignalStatusServiceImpl implements SignalStatusService {
...
@@ -71,6 +78,12 @@ public class SignalStatusServiceImpl implements SignalStatusService {
return
resList
;
return
resList
;
}
}
@Override
public
List
<
SignalStatusLogPO
>
runningStatusAlarm
(
String
crossId
)
{
List
<
SignalStatusLogPO
>
signalStatusLogPOList
=
new
ArrayList
<>();
return
signalStatusLogPOList
;
}
@Override
@Override
@Transactional
@Transactional
public
List
<
LightsStatusVO
>
lightStatus
()
{
public
List
<
LightsStatusVO
>
lightStatus
()
{
...
@@ -78,14 +91,18 @@ public class SignalStatusServiceImpl implements SignalStatusService {
...
@@ -78,14 +91,18 @@ public class SignalStatusServiceImpl implements SignalStatusService {
BasicEnum
.
ManufacturerEnum
[]
manufacturerEnums
=
BasicEnum
.
ManufacturerEnum
.
values
();
BasicEnum
.
ManufacturerEnum
[]
manufacturerEnums
=
BasicEnum
.
ManufacturerEnum
.
values
();
for
(
BasicEnum
.
ManufacturerEnum
manufacturerEnum
:
manufacturerEnums
)
{
for
(
BasicEnum
.
ManufacturerEnum
manufacturerEnum
:
manufacturerEnums
)
{
List
<
BaseCrossInfo
>
baseCrossInfoList
=
getBaseCrossInfoList
(
manufacturerEnum
);
List
<
BaseCrossInfo
>
baseCrossInfoList
=
getBaseCrossInfoList
(
manufacturerEnum
);
if
(
baseCrossInfoList
==
null
)
continue
;
if
(
baseCrossInfoList
==
null
)
{
continue
;
}
List
<
LightsStatusVO
>
lightsStatusVOList
=
null
;
List
<
LightsStatusVO
>
lightsStatusVOList
=
null
;
if
(
manufacturerEnum
.
getCode
().
equals
(
BasicEnum
.
ManufacturerEnum
.
HK
.
getCode
()))
{
if
(
manufacturerEnum
.
getCode
().
equals
(
BasicEnum
.
ManufacturerEnum
.
HK
.
getCode
()))
{
// 海康
// 海康
// 3.2.4灯态
// 3.2.4灯态
lightsStatusVOList
=
hkLightsStatusService
.
getHkLightsStatus
(
baseCrossInfoList
);
lightsStatusVOList
=
hkLightsStatusService
.
getHkLightsStatus
(
baseCrossInfoList
);
}
else
{
}
else
{
// todo 其他厂商
// todo 其他厂商
List
<
String
>
crossIdList
=
baseCrossInfoList
.
stream
().
map
(
BaseCrossInfo:
:
getCrossId
).
collect
(
Collectors
.
toList
());
lightsStatusVOList
=
wanJiRunningStatusService
.
lightsStatus
(
crossIdList
);
}
}
// 更新Redis
// 更新Redis
if
(
lightsStatusVOList
!=
null
)
{
if
(
lightsStatusVOList
!=
null
)
{
...
...
signal-utc-service/src/main/java/net/wanji/utc/service/runninginfo/impl/WanJiRunningStatusServiceImpl.java
0 → 100644
View file @
cc4dce64
package
net
.
wanji
.
utc
.
service
.
runninginfo
.
impl
;
import
com.alibaba.fastjson.JSONObject
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.utc.entity.JsonViewObject
;
import
net.wanji.utc.po.SignalStatusLogPO
;
import
net.wanji.utc.service.runninginfo.WanJiRunningStatusService
;
import
net.wanji.utc.util.HttpRestUtil
;
import
net.wanji.utc.vo.LightsStatusVO
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
import
java.util.Map
;
/**
* @author duanruiming
* @date 2023/01/11 17:34
*/
@Slf4j
@Service
@RequiredArgsConstructor
public
class
WanJiRunningStatusServiceImpl
implements
WanJiRunningStatusService
{
private
final
HttpRestUtil
httpRestUtil
;
@Value
(
"url"
)
private
String
rpcUri
;
@Override
public
List
<
SignalStatusLogPO
>
runningStatus
(
List
<
String
>
crossIdList
)
{
JsonViewObject
jsonViewObject
=
rpcService
(
httpRestUtil
,
rpcUri
,
null
,
JSONObject
.
toJSONString
(
crossIdList
));
List
<
SignalStatusLogPO
>
result
=
(
List
<
SignalStatusLogPO
>)
jsonViewObject
.
getContent
();
return
result
;
}
@Override
public
List
<
LightsStatusVO
>
lightsStatus
(
List
<
String
>
crossIdList
)
{
JsonViewObject
jsonViewObject
=
rpcService
(
httpRestUtil
,
rpcUri
,
null
,
JSONObject
.
toJSONString
(
crossIdList
));
List
<
LightsStatusVO
>
result
=
(
List
<
LightsStatusVO
>)
jsonViewObject
.
getContent
();
return
result
;
}
@Override
public
JsonViewObject
rpcService
(
HttpRestUtil
httpRestUtil
,
String
url
,
Map
<
String
,
String
>
headers
,
String
param
)
{
return
WanJiRunningStatusService
.
super
.
rpcService
(
httpRestUtil
,
url
,
headers
,
param
);
}
}
signal-utc-service/src/main/java/net/wanji/utc/service/
common
/WanjiCommonStaticInfoService.java
→
signal-utc-service/src/main/java/net/wanji/utc/service/
staticinfo
/WanjiCommonStaticInfoService.java
View file @
cc4dce64
package
net
.
wanji
.
utc
.
service
.
common
;
package
net
.
wanji
.
utc
.
service
.
staticinfo
;
import
net.wanji.utc.common.Result
;
import
net.wanji.utc.common.Result
;
import
net.wanji.utc.po.CrossSchedulesPO
;
import
net.wanji.utc.po.CrossSchedulesPO
;
import
net.wanji.utc.service.rpcservice.rpcService
;
import
net.wanji.utc.vo.PlanSectionVO
;
import
net.wanji.utc.vo.PlanSectionVO
;
import
net.wanji.utc.vo.SchemePhaseLightsVO
;
import
net.wanji.utc.vo.SchemePhaseLightsVO
;
...
...
signal-utc-service/src/main/java/net/wanji/utc/service/staticinfo/impl/StaticInfoServiceImpl.java
View file @
cc4dce64
...
@@ -8,7 +8,7 @@ import net.wanji.utc.dto.PlanSectionDTO;
...
@@ -8,7 +8,7 @@ import net.wanji.utc.dto.PlanSectionDTO;
import
net.wanji.utc.dto.SchemePhaseLightsDTO
;
import
net.wanji.utc.dto.SchemePhaseLightsDTO
;
import
net.wanji.utc.mapper.*
;
import
net.wanji.utc.mapper.*
;
import
net.wanji.utc.po.*
;
import
net.wanji.utc.po.*
;
import
net.wanji.utc.service.
common
.WanjiCommonStaticInfoService
;
import
net.wanji.utc.service.
staticinfo
.WanjiCommonStaticInfoService
;
import
net.wanji.utc.service.staticinfo.*
;
import
net.wanji.utc.service.staticinfo.*
;
import
net.wanji.utc.vo.PlanSectionVO
;
import
net.wanji.utc.vo.PlanSectionVO
;
import
net.wanji.utc.vo.SchemePhaseLightsVO
;
import
net.wanji.utc.vo.SchemePhaseLightsVO
;
...
...
signal-utc-service/src/main/java/net/wanji/utc/service/
common
/impl/WanjiCommonStaticInfoServiceImpl.java
→
signal-utc-service/src/main/java/net/wanji/utc/service/
staticinfo
/impl/WanjiCommonStaticInfoServiceImpl.java
View file @
cc4dce64
package
net
.
wanji
.
utc
.
service
.
common
.
impl
;
package
net
.
wanji
.
utc
.
service
.
staticinfo
.
impl
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
lombok.RequiredArgsConstructor
;
import
lombok.RequiredArgsConstructor
;
...
@@ -7,7 +7,7 @@ import net.wanji.utc.common.Result;
...
@@ -7,7 +7,7 @@ import net.wanji.utc.common.Result;
import
net.wanji.utc.entity.JsonViewObject
;
import
net.wanji.utc.entity.JsonViewObject
;
import
net.wanji.utc.mapper.*
;
import
net.wanji.utc.mapper.*
;
import
net.wanji.utc.po.*
;
import
net.wanji.utc.po.*
;
import
net.wanji.utc.service.
common
.WanjiCommonStaticInfoService
;
import
net.wanji.utc.service.
staticinfo
.WanjiCommonStaticInfoService
;
import
net.wanji.utc.util.HttpRestUtil
;
import
net.wanji.utc.util.HttpRestUtil
;
import
net.wanji.utc.vo.PlanSectionVO
;
import
net.wanji.utc.vo.PlanSectionVO
;
import
net.wanji.utc.vo.SchemePhaseLightsVO
;
import
net.wanji.utc.vo.SchemePhaseLightsVO
;
...
@@ -44,7 +44,7 @@ public class WanjiCommonStaticInfoServiceImpl implements WanjiCommonStaticInfoSe
...
@@ -44,7 +44,7 @@ public class WanjiCommonStaticInfoServiceImpl implements WanjiCommonStaticInfoSe
@Override
@Override
public
Result
<
SchemePhaseLightsVO
>
schemePhaseLights
(
String
crossId
,
String
signalId
)
{
public
Result
<
SchemePhaseLightsVO
>
schemePhaseLights
(
String
crossId
,
String
signalId
)
{
Map
<
String
,
String
>
commonParamMap
=
getCommonParamMap
(
crossId
,
signalId
);
Map
<
String
,
String
>
commonParamMap
=
getCommonParamMap
(
crossId
,
signalId
);
JsonViewObject
jsonViewObject
=
rpcService
(
rpcUri
,
null
,
JSONObject
.
toJSONString
(
commonParamMap
));
JsonViewObject
jsonViewObject
=
rpcService
(
httpRestUtil
,
rpcUri
,
null
,
JSONObject
.
toJSONString
(
commonParamMap
));
SchemePhaseLightsVO
content
=
(
SchemePhaseLightsVO
)
jsonViewObject
.
getContent
();
SchemePhaseLightsVO
content
=
(
SchemePhaseLightsVO
)
jsonViewObject
.
getContent
();
if
(
Objects
.
nonNull
(
content
))
{
if
(
Objects
.
nonNull
(
content
))
{
List
<
CrossSchemePO
>
crossSchemeList
=
content
.
getCrossSchemeList
();
List
<
CrossSchemePO
>
crossSchemeList
=
content
.
getCrossSchemeList
();
...
@@ -78,7 +78,7 @@ public class WanjiCommonStaticInfoServiceImpl implements WanjiCommonStaticInfoSe
...
@@ -78,7 +78,7 @@ public class WanjiCommonStaticInfoServiceImpl implements WanjiCommonStaticInfoSe
paramMap
.
put
(
"crossId"
,
crossId
);
paramMap
.
put
(
"crossId"
,
crossId
);
paramMap
.
put
(
"planNo"
,
String
.
valueOf
(
planNo
));
paramMap
.
put
(
"planNo"
,
String
.
valueOf
(
planNo
));
paramMap
.
put
(
"signalId"
,
signalId
);
paramMap
.
put
(
"signalId"
,
signalId
);
JsonViewObject
jsonViewObject
=
rpcService
(
rpcUri
,
null
,
JSONObject
.
toJSONString
(
paramMap
));
JsonViewObject
jsonViewObject
=
rpcService
(
httpRestUtil
,
rpcUri
,
null
,
JSONObject
.
toJSONString
(
paramMap
));
PlanSectionVO
content
=
(
PlanSectionVO
)
jsonViewObject
.
getContent
();
PlanSectionVO
content
=
(
PlanSectionVO
)
jsonViewObject
.
getContent
();
if
(
Objects
.
nonNull
(
content
))
{
if
(
Objects
.
nonNull
(
content
))
{
if
(
Objects
.
nonNull
(
content
))
{
if
(
Objects
.
nonNull
(
content
))
{
...
@@ -101,7 +101,7 @@ public class WanjiCommonStaticInfoServiceImpl implements WanjiCommonStaticInfoSe
...
@@ -101,7 +101,7 @@ public class WanjiCommonStaticInfoServiceImpl implements WanjiCommonStaticInfoSe
@Override
@Override
public
Result
<
List
<
CrossSchedulesPO
>>
schedules
(
String
crossId
,
String
signalId
)
{
public
Result
<
List
<
CrossSchedulesPO
>>
schedules
(
String
crossId
,
String
signalId
)
{
Map
<
String
,
String
>
commonParamMap
=
getCommonParamMap
(
crossId
,
signalId
);
Map
<
String
,
String
>
commonParamMap
=
getCommonParamMap
(
crossId
,
signalId
);
JsonViewObject
jsonViewObject
=
rpcService
(
rpcUri
,
null
,
JSONObject
.
toJSONString
(
commonParamMap
));
JsonViewObject
jsonViewObject
=
rpcService
(
httpRestUtil
,
rpcUri
,
null
,
JSONObject
.
toJSONString
(
commonParamMap
));
List
<
CrossSchedulesPO
>
content
=
(
List
<
CrossSchedulesPO
>)
jsonViewObject
.
getContent
();
List
<
CrossSchedulesPO
>
content
=
(
List
<
CrossSchedulesPO
>)
jsonViewObject
.
getContent
();
if
(
Objects
.
nonNull
(
content
))
{
if
(
Objects
.
nonNull
(
content
))
{
if
(!
CollectionUtils
.
isEmpty
(
content
))
{
if
(!
CollectionUtils
.
isEmpty
(
content
))
{
...
@@ -122,13 +122,7 @@ public class WanjiCommonStaticInfoServiceImpl implements WanjiCommonStaticInfoSe
...
@@ -122,13 +122,7 @@ public class WanjiCommonStaticInfoServiceImpl implements WanjiCommonStaticInfoSe
}
}
@Override
@Override
public
JsonViewObject
rpcService
(
String
url
,
Map
<
String
,
String
>
headers
,
String
param
)
{
public
JsonViewObject
rpcService
(
HttpRestUtil
httpRestUtil
,
String
url
,
Map
<
String
,
String
>
headers
,
String
param
)
{
JsonViewObject
jsonViewObject
=
httpRestUtil
.
doPost
(
url
,
headers
,
param
,
JsonViewObject
.
class
);
return
WanjiCommonStaticInfoService
.
super
.
rpcService
(
httpRestUtil
,
url
,
headers
,
param
);
if
(
Objects
.
isNull
(
jsonViewObject
)
||
jsonViewObject
.
getCode
()
!=
200
)
{
log
.
error
(
"远程服务调用异常,url:"
.
concat
(
rpcUri
));
return
jsonViewObject
.
fail
(
"远程服务调用异常,url:"
.
concat
(
rpcUri
));
}
return
jsonViewObject
;
}
}
}
}
signal-utc-service/src/main/java/net/wanji/utc/task/SignalStatusTask.java
View file @
cc4dce64
package
net
.
wanji
.
utc
.
task
;
package
net
.
wanji
.
utc
.
task
;
import
net.wanji.utc.po.SignalStatusLogPO
;
import
net.wanji.utc.service.runninginfo.SignalStatusService
;
import
net.wanji.utc.service.runninginfo.SignalStatusService
;
import
net.wanji.utc.vo.LightsStatusVO
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
java.util.List
;
/**
/**
* 订阅信号运行状态、告警、灯态
* 订阅信号运行状态、告警、灯态
*
*
...
@@ -19,12 +23,12 @@ public class SignalStatusTask {
...
@@ -19,12 +23,12 @@ public class SignalStatusTask {
// 运行状态、告警,5分钟一次
// 运行状态、告警,5分钟一次
@Scheduled
(
fixedRate
=
5
*
60
*
1000
)
@Scheduled
(
fixedRate
=
5
*
60
*
1000
)
public
void
runningStatusAlarm
()
{
public
void
runningStatusAlarm
()
{
signalStatusService
.
runningStatusAlarm
();
List
<
SignalStatusLogPO
>
signalStatusLogPOS
=
signalStatusService
.
runningStatusAlarm
();
}
}
// 灯态,5秒一次
// 灯态,5秒一次
@Scheduled
(
fixedRate
=
5
*
1000
)
@Scheduled
(
fixedRate
=
5
*
1000
)
public
void
lightStatus
()
{
public
void
lightStatus
()
{
signalStatusService
.
lightStatus
();
List
<
LightsStatusVO
>
lightsStatusVOS
=
signalStatusService
.
lightStatus
();
}
}
}
}
signal-utc-service/src/main/java/net/wanji/utc/websocket/RealTimeDataWebSocket.java
0 → 100644
View file @
cc4dce64
package
net
.
wanji
.
utc
.
websocket
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
lombok.Getter
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.stereotype.Component
;
import
javax.websocket.*
;
import
javax.websocket.server.PathParam
;
import
javax.websocket.server.ServerEndpoint
;
import
java.io.IOException
;
import
java.util.concurrent.ConcurrentHashMap
;
/**
* @author duanruiming
* @date 2023/01/06 8:58
*/
@ServerEndpoint
(
"/websocket/realTimeData/{crossId}"
)
@Component
@Slf4j
public
class
RealTimeDataWebSocket
{
/**
* 静态变量,用来记录当前在线连接数。应该把它设计成线程安全的。
*/
private
static
int
onlineCount
=
0
;
/**
* concurrent包的线程安全Set,用来存放每个客户端对应的MyWebSocket对象。
*/
@Getter
private
static
ConcurrentHashMap
<
String
,
RealTimeDataWebSocket
>
evenWarnWebSocketMap
=
new
ConcurrentHashMap
<>();
/**
* 与某个客户端的连接会话,需要通过它来给客户端发送数据
*/
private
Session
session
;
/**
* 接收crossId
*/
private
String
crossId
=
""
;
/**
* 连接建立成功调用的方法
*/
@OnOpen
public
void
onOpen
(
Session
session
,
@PathParam
(
"crossId"
)
String
crossId
)
{
this
.
session
=
session
;
this
.
crossId
=
crossId
;
//TODO evenWarnWebSocketMap中的key为crossId 如果多个用户使用同一个crossId登录 一个用户退出代表所有公用该接口的用户都退出了,需要将key改为sessionid
if
(
evenWarnWebSocketMap
.
containsKey
(
crossId
))
{
evenWarnWebSocketMap
.
remove
(
crossId
);
evenWarnWebSocketMap
.
put
(
crossId
,
this
);
//加入set中
}
else
{
evenWarnWebSocketMap
.
put
(
crossId
,
this
);
//加入set中
addOnlineCount
();
//在线数加1
}
log
.
info
(
"用户连接:"
+
crossId
+
",当前在线人数为:"
+
getOnlineCount
());
try
{
sendMessage
(
"连接成功"
);
}
catch
(
IOException
e
)
{
log
.
error
(
"用户:"
+
crossId
+
",网络异常!!!!!!"
);
}
}
/**
* 连接关闭调用的方法
*/
@OnClose
public
void
onClose
()
{
if
(
evenWarnWebSocketMap
.
containsKey
(
crossId
))
{
evenWarnWebSocketMap
.
remove
(
crossId
);
//从set中删除
subOnlineCount
();
}
log
.
info
(
"用户退出:"
+
crossId
+
",当前在线人数为:"
+
getOnlineCount
());
}
/**
* 收到客户端消息后调用的方法
* @param message 客户端发送过来的消息
*/
@OnMessage
public
void
onMessage
(
String
message
,
Session
session
)
{
log
.
info
(
"用户消息:"
+
crossId
+
",报文:"
+
message
);
//可以群发消息
//消息保存到数据库、redis
if
(
StringUtils
.
isNotBlank
(
message
))
{
try
{
//解析发送的报文
JSONObject
jsonObject
=
JSON
.
parseObject
(
message
);
//追加发送人(防止串改)
jsonObject
.
put
(
"fromcrossId"
,
this
.
crossId
);
String
tocrossId
=
jsonObject
.
getString
(
"tocrossId"
);
//传送给对应tocrossId用户的websocket
if
(
StringUtils
.
isNotBlank
(
tocrossId
)
&&
evenWarnWebSocketMap
.
containsKey
(
tocrossId
))
{
evenWarnWebSocketMap
.
get
(
tocrossId
).
sendMessage
(
jsonObject
.
toJSONString
());
}
else
{
log
.
error
(
"请求的crossId:"
+
tocrossId
+
"不在该服务器上"
);
//否则不在这个服务器上,发送到mysql或者redis
}
}
catch
(
Exception
e
)
{
log
.
error
(
e
.
getMessage
());
}
}
}
/**
* @param session
* @param error
*/
@OnError
public
void
onError
(
Session
session
,
Throwable
error
)
{
log
.
error
(
"用户错误:"
+
this
.
crossId
+
",原因:"
+
error
.
getMessage
());
// error.printStackTrace();
}
/**
* 实现服务器主动推送
*/
public
void
sendMessage
(
String
message
)
throws
IOException
{
this
.
session
.
getBasicRemote
().
sendText
(
message
);
}
/**
* 发送自定义消息
*/
public
static
void
sendInfo
(
String
message
,
@PathParam
(
"crossId"
)
String
crossId
)
throws
IOException
{
//log.info("发送消息到:" + crossId + ",报文:" + message);
if
(
StringUtils
.
isNotBlank
(
crossId
)
&&
evenWarnWebSocketMap
.
containsKey
(
crossId
))
{
try
{
evenWarnWebSocketMap
.
get
(
crossId
).
sendMessage
(
message
);
}
catch
(
Exception
e
)
{
log
.
error
(
"用户"
+
crossId
+
",不在线!{}"
,
e
.
getMessage
());
}
}
else
{
log
.
debug
(
"用户"
+
crossId
+
",不在线!"
);
}
}
public
static
synchronized
int
getOnlineCount
()
{
return
onlineCount
;
}
public
static
synchronized
void
addOnlineCount
()
{
RealTimeDataWebSocket
.
onlineCount
++;
}
public
static
synchronized
void
subOnlineCount
()
{
RealTimeDataWebSocket
.
onlineCount
--;
}
}
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