Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
T
terminal-protocol-proxy-service
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
fox-energy
backend
terminal-protocol-proxy-service
Commits
4dc233b8
Commit
4dc233b8
authored
Jan 04, 2023
by
xieshaojun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
更新代码
parent
94404fb7
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
224 additions
and
67 deletions
+224
-67
pom.xml
pom.xml
+21
-24
ThinkerProdProtocolClient.java
.../vc/thinker/forwardthinker/ThinkerProdProtocolClient.java
+32
-0
ThirdPartyReportDataActor.java
...er/forwardthinker/actor/up/ThirdPartyReportDataActor.java
+48
-0
ThinkerReportDTO.java
.../java/vc/thinker/forwardthinker/dto/ThinkerReportDTO.java
+20
-0
FoxGatewayTopicDefinition.java
...inker/forwardthinker/enums/FoxGatewayTopicDefinition.java
+46
-0
CentralAirProtocol.java
...rtyproxy/protocolimpls/centralAir/CentralAirProtocol.java
+44
-23
application.yml
src/main/resources/application.yml
+8
-8
proguard.cfg
src/main/resources/proguard.cfg
+3
-10
IParameterModelEventServiceTest.java
src/main/test/IParameterModelEventServiceTest.java
+2
-2
No files found.
pom.xml
View file @
4dc233b8
...
@@ -155,38 +155,35 @@
...
@@ -155,38 +155,35 @@
</dependencies>
</dependencies>
<build>
<build>
<plugins>
<plugins>
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-compiler-plugin
</artifactId>
</plugin>
<plugin>
<groupId>
com.google.cloud.tools
</groupId>
<artifactId>
jib-maven-plugin
</artifactId>
<version>
1.6.1
</version>
<configuration>
<from>
<image>
${baseimage}
</image>
</from>
<to>
<image>
${image}
</image>
</to>
<container>
<creationTime>
USE_CURRENT_TIMESTAMP
</creationTime>
<mainClass>
${mainClass}
</mainClass>
</container>
</configuration>
</plugin>
<plugin>
<plugin>
<groupId>
org.springframework.boot
</groupId>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-maven-plugin
</artifactId>
<artifactId>
spring-boot-maven-plugin
</artifactId>
</plugin>
<plugin>
<groupId>
com.idea-aedi
</groupId>
<artifactId>
class-winter-maven-plugin
</artifactId>
<version>
2.5.0
</version>
<!-- 相关配置 -->
<configuration>
<configuration>
<mainClass>
${mainClass}
</mainClass>
<!-- <finalName></finalName>-->
<includeSystemScope>
true
</includeSystemScope>
<includePrefix>
vc.thinker
</includePrefix>
<!-- <excludePrefix></excludePrefix>-->
<!-- <includeXmlPrefix></includeXmlPrefix>-->
<!-- <excludeXmlPrefix></excludeXmlPrefix>-->
<!-- <toCleanXmlChildElementName></toCleanXmlChildElementName>-->
<!-- <password></password>-->
<!-- <includeLibs></includeLibs>-->
<!-- <alreadyProtectedLibs></alreadyProtectedLibs>-->
<!-- <supportFile></supportFile>-->
<!-- <jvmArgCheck></jvmArgCheck>-->
<!-- <tips></tips>-->
<!-- <debug></debug>-->
</configuration>
</configuration>
<executions>
<executions>
<execution>
<execution>
<phase>
package
</phase>
<goals>
<goals>
<goal>
repackage
</goal>
<goal>
class-winter
</goal>
</goals>
</goals>
</execution>
</execution>
</executions>
</executions>
...
...
src/main/java/vc/thinker/forwardthinker/ThinkerProdProtocolClient.java
0 → 100644
View file @
4dc233b8
package
vc
.
thinker
.
forwardthinker
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnBean
;
import
org.springframework.stereotype.Component
;
import
vc.thinker.absctacts.mqtt.protocol.AbstractNotSubscriptionMqttProtocol
;
import
vc.thinker.forwardthinker.dto.ThinkerReportDTO
;
import
vc.thinker.forwardthinker.enums.FoxGatewayTopicDefinition
;
import
vc.thinker.mqtt.config.ThinkerMqttConnectionProperties
;
import
java.util.List
;
/**
* 富士康数据转发新科云 客户端
*
* @author HeTongHao
* @since 2022-06-28 16:00
*/
@Slf4j
@Component
@ConditionalOnBean
(
ThinkerMqttConnectionProperties
.
class
)
public
class
ThinkerProdProtocolClient
extends
AbstractNotSubscriptionMqttProtocol
{
public
ThinkerProdProtocolClient
(
ThinkerMqttConnectionProperties
mqttConnectionProperties
)
{
super
(
mqttConnectionProperties
);
}
public
void
report
(
String
protocolCode
,
ThinkerReportDTO
dto
)
{
super
.
getMqttCommandPush
().
sendMqttMessage
(
FoxGatewayTopicDefinition
.
report
.
genTopic
(
protocolCode
),
JSONObject
.
toJSONString
(
List
.
of
(
dto
)).
getBytes
());
}
}
src/main/java/vc/thinker/forwardthinker/actor/up/ThirdPartyReportDataActor.java
0 → 100644
View file @
4dc233b8
package
vc
.
thinker
.
forwardthinker
.
actor
.
up
;
import
akka.actor.AbstractActor
;
import
akka.japi.pf.ReceiveBuilder
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.config.ConfigurableBeanFactory
;
import
org.springframework.context.annotation.Scope
;
import
org.springframework.stereotype.Component
;
import
vc.thinker.absctacts.mqtt.entity.MqttResponseBytes
;
import
vc.thinker.forwardthinker.ThinkerProdProtocolClient
;
import
vc.thinker.forwardthinker.enums.FoxGatewayTopicDefinition
;
import
vc.thinker.thirdpartyproxy.ProtocolType
;
import
javax.annotation.Resource
;
import
java.util.List
;
import
java.util.stream.Collectors
;
import
java.util.stream.Stream
;
/**
* 网关上报数据接收
*
* @author HeTongHao
* @since 2022/6/28 14:10
*/
@Slf4j
@Component
@Scope
(
ConfigurableBeanFactory
.
SCOPE_PROTOTYPE
)
public
class
ThirdPartyReportDataActor
extends
AbstractActor
{
@Resource
private
ThinkerProdProtocolClient
thinkerProdProtocolClient
;
/**
* 转发的网关编号列表
*/
private
static
final
List
<
String
>
PROTOCOL_CODES
=
Stream
.
of
(
ProtocolType
.
values
()).
map
(
ProtocolType:
:
getCode
).
collect
(
Collectors
.
toList
());
public
ThirdPartyReportDataActor
()
{
receive
(
ReceiveBuilder
.
match
(
MqttResponseBytes
.
class
,
mqttResponse
->
{
String
protocolCode
=
FoxGatewayTopicDefinition
.
resolveProtocolCodeByTopic
(
mqttResponse
.
getTopic
());
// 指转发指定协议下的设备
if
(
PROTOCOL_CODES
.
contains
(
protocolCode
))
{
thinkerProdProtocolClient
.
getMqttCommandPush
()
.
sendMqttMessage
(
mqttResponse
.
getTopic
(),
mqttResponse
.
getMessage
());
}
}).
build
());
}
}
src/main/java/vc/thinker/forwardthinker/dto/ThinkerReportDTO.java
0 → 100644
View file @
4dc233b8
package
vc
.
thinker
.
forwardthinker
.
dto
;
import
com.alibaba.fastjson.JSONObject
;
import
lombok.Data
;
/**
* @author : xieshaojun
* @date : 2023/1/4 17:06
*/
@Data
public
class
ThinkerReportDTO
{
private
String
deviceCode
;
private
JSONObject
datas
;
private
JSONObject
events
;
private
Long
timestamp
;
}
src/main/java/vc/thinker/forwardthinker/enums/FoxGatewayTopicDefinition.java
0 → 100644
View file @
4dc233b8
package
vc
.
thinker
.
forwardthinker
.
enums
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
vc.thinker.absctacts.mqtt.topic.TopicDefinition
;
import
vc.thinker.absctacts.mqtt.utils.StringFormatUtils
;
import
vc.thinker.forwardthinker.actor.up.ThirdPartyReportDataActor
;
import
vc.thinker.utils.Resolve
;
/**
* Topic-actor 定义
*
* @author HeTongHao
* @since 2022-06-28 16:00
*/
@Getter
@AllArgsConstructor
public
enum
FoxGatewayTopicDefinition
implements
TopicDefinition
{
/**
* Topic-actor 定义
*/
report
(
"third-party/+/up/report"
,
ThirdPartyReportDataActor
.
class
),
report_version
(
"third-party/+/v2/up/report"
,
ThirdPartyReportDataActor
.
class
),
;
private
final
String
topic
;
private
final
Class
<?>
actorClass
;
public
static
final
Resolve
<
FoxGatewayTopicDefinition
,
String
>
RESOLVE_BY_TOPIC
=
new
Resolve
<>(
values
(),
FoxGatewayTopicDefinition:
:
getTopic
);
public
String
getActorInstanceName
()
{
return
StringFormatUtils
.
classNameLowercaseFirst
(
this
.
actorClass
);
}
public
String
genTopic
(
String
protocolCode
)
{
return
this
.
topic
.
replace
(
"+"
,
protocolCode
);
}
/**
* 根据topic解析第三方协议编号
*
* @param topic topic
* @return 第三方协议编号
*/
public
static
String
resolveProtocolCodeByTopic
(
String
topic
)
{
return
topic
.
split
(
"/"
)[
1
];
}
}
src/main/java/vc/thinker/thirdpartyproxy/protocolimpls/centralAir/CentralAirProtocol.java
View file @
4dc233b8
package
vc
.
thinker
.
thirdpartyproxy
.
protocolimpls
.
centralAir
;
package
vc
.
thinker
.
thirdpartyproxy
.
protocolimpls
.
centralAir
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.google.common.collect.Lists
;
import
lombok.RequiredArgsConstructor
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.ObjectUtils
;
import
org.springframework.util.ObjectUtils
;
import
vc.thinker.absctacts.protocolproxy.dto.IMeterReportEntity
;
import
vc.thinker.absctacts.protocolproxy.dto.MeterReportEntity
;
import
vc.thinker.absctacts.protocolproxy.enums.IProtocolType
;
import
vc.thinker.absctacts.protocolproxy.enums.IProtocolType
;
import
vc.thinker.absctacts.protocolproxy.protocol.AbstractThirdPartyProtocolSyncMeterInfo
;
import
vc.thinker.absctacts.protocolproxy.protocol.AbstractThirdPartyProtocolSyncMeterInfo
;
import
vc.thinker.config.device.DeviceInfoConfig
;
import
vc.thinker.config.device.DeviceInfoConfig
;
import
vc.thinker.
mqtt.proxyclient.entity.up.ThirdPartyProxyRepor
t
;
import
vc.thinker.
forwardthinker.ThinkerProdProtocolClien
t
;
import
vc.thinker.
mqtt.proxyclient.service.ThirdPartyProxyClientService
;
import
vc.thinker.
forwardthinker.dto.ThinkerReportDTO
;
import
vc.thinker.thirdpartyproxy.ProtocolType
;
import
vc.thinker.thirdpartyproxy.ProtocolType
;
import
vc.thinker.thirdpartyproxy.protocolimpls.centralAir.dto.DataReportInfoDTO
;
import
vc.thinker.thirdpartyproxy.protocolimpls.centralAir.dto.DataReportInfoDTO
;
import
vc.thinker.thirdpartyproxy.protocolimpls.centralAir.dto.DataReportParamDTO
;
import
vc.thinker.thirdpartyproxy.protocolimpls.centralAir.dto.DataReportParamDTO
;
import
java.time.LocalDateTime
;
import
java.time.ZoneOffset
;
/**
/**
* 中央空调代理上报网关协议
* 中央空调代理上报网关协议
*
*
...
@@ -36,7 +30,7 @@ public class CentralAirProtocol extends AbstractThirdPartyProtocolSyncMeterInfo
...
@@ -36,7 +30,7 @@ public class CentralAirProtocol extends AbstractThirdPartyProtocolSyncMeterInfo
private
DeviceInfoConfig
deviceInfoConfig
;
private
DeviceInfoConfig
deviceInfoConfig
;
@Autowired
@Autowired
pr
ivate
ThirdPartyProxyClientService
thirdPartyProxyClientService
;
pr
otected
ThinkerProdProtocolClient
thinkerProdProtocolClient
;
@Override
@Override
public
IProtocolType
protocolType
()
{
public
IProtocolType
protocolType
()
{
...
@@ -48,32 +42,59 @@ public class CentralAirProtocol extends AbstractThirdPartyProtocolSyncMeterInfo
...
@@ -48,32 +42,59 @@ public class CentralAirProtocol extends AbstractThirdPartyProtocolSyncMeterInfo
return
deviceInfoConfig
.
getCode
();
return
deviceInfoConfig
.
getCode
();
}
}
// @Override
// public void dataReport(DataReportInfoDTO dataReportInfoDTO) {
// LocalDateTime time = LocalDateTime.ofEpochSecond(dataReportInfoDTO.getTimestamp()/1000L,0, ZoneOffset.of("+8"));
// String deviceId = lastDeviceId(dataReportInfoDTO);
// DataReportParamDTO paramDTO = dataReportInfoDTO.getData();
// if (ObjectUtils.isEmpty(paramDTO)){
// return;
// }
// MeterReportEntity.MeterReportEntityBuilder builder = MeterReportEntity.builder(deviceId, time);
// if (!ObjectUtils.isEmpty(paramDTO.getElectricity())){
// builder.putValue(CentralAirMeterAttrDefine.electricity, dataReportInfoDTO.getData().getElectricity());
// }
// if (!ObjectUtils.isEmpty(paramDTO.getColdCapacity())) {
// builder.putValue(CentralAirMeterAttrDefine.coldCapacity, dataReportInfoDTO.getData().getColdCapacity());
// }
// if (!ObjectUtils.isEmpty(paramDTO.getSystemCop())) {
// builder.putValue(CentralAirMeterAttrDefine.systemCop, dataReportInfoDTO.getData().getSystemCop());
// }
// if (!ObjectUtils.isEmpty(paramDTO.getSupplyWaterTemp())) {
// builder.putValue(CentralAirMeterAttrDefine.supplyWaterTemp, dataReportInfoDTO.getData().getSupplyWaterTemp());
// }
// if (!ObjectUtils.isEmpty(paramDTO.getReturnWaterTemp())) {
// builder.putValue(CentralAirMeterAttrDefine.returnWaterTemp, dataReportInfoDTO.getData().getReturnWaterTemp());
// }
// MeterReportEntity meterReport = builder.build();
// System.out.println("____"+ JSONObject.toJSONString(meterReport));
// report(meterReport);
// }
@Override
@Override
public
void
dataReport
(
DataReportInfoDTO
dataReportInfoDTO
)
{
public
void
dataReport
(
DataReportInfoDTO
dataReportInfoDTO
)
{
LocalDateTime
time
=
LocalDateTime
.
ofEpochSecond
(
dataReportInfoDTO
.
getTimestamp
()/
1000L
,
0
,
ZoneOffset
.
of
(
"+8"
));
ThinkerReportDTO
dto
=
new
ThinkerReportDTO
();
String
deviceId
=
lastDeviceId
(
dataReportInfoDTO
);
dto
.
setDeviceCode
(
deviceInfoConfig
.
getCode
());
dto
.
setTimestamp
(
dataReportInfoDTO
.
getTimestamp
());
JSONObject
dataMap
=
new
JSONObject
();
DataReportParamDTO
paramDTO
=
dataReportInfoDTO
.
getData
();
DataReportParamDTO
paramDTO
=
dataReportInfoDTO
.
getData
();
if
(
ObjectUtils
.
isEmpty
(
paramDTO
)){
return
;
}
MeterReportEntity
.
MeterReportEntityBuilder
builder
=
MeterReportEntity
.
builder
(
deviceId
,
time
);
if
(!
ObjectUtils
.
isEmpty
(
paramDTO
.
getElectricity
())){
if
(!
ObjectUtils
.
isEmpty
(
paramDTO
.
getElectricity
())){
builder
.
putValue
(
CentralAirMeterAttrDefine
.
electricity
,
dataReportInfoDTO
.
getData
().
getElectricity
());
dataMap
.
put
(
CentralAirMeterAttrDefine
.
electricity
.
getCode
()
,
dataReportInfoDTO
.
getData
().
getElectricity
());
}
}
if
(!
ObjectUtils
.
isEmpty
(
paramDTO
.
getColdCapacity
()))
{
if
(!
ObjectUtils
.
isEmpty
(
paramDTO
.
getColdCapacity
()))
{
builder
.
putValue
(
CentralAirMeterAttrDefine
.
coldCapacity
,
dataReportInfoDTO
.
getData
().
getColdCapacity
());
dataMap
.
put
(
CentralAirMeterAttrDefine
.
coldCapacity
.
getCode
()
,
dataReportInfoDTO
.
getData
().
getColdCapacity
());
}
}
if
(!
ObjectUtils
.
isEmpty
(
paramDTO
.
getSystemCop
()))
{
if
(!
ObjectUtils
.
isEmpty
(
paramDTO
.
getSystemCop
()))
{
builder
.
putValue
(
CentralAirMeterAttrDefine
.
systemCop
,
dataReportInfoDTO
.
getData
().
getSystemCop
());
dataMap
.
put
(
CentralAirMeterAttrDefine
.
systemCop
.
getCode
()
,
dataReportInfoDTO
.
getData
().
getSystemCop
());
}
}
if
(!
ObjectUtils
.
isEmpty
(
paramDTO
.
getSupplyWaterTemp
()))
{
if
(!
ObjectUtils
.
isEmpty
(
paramDTO
.
getSupplyWaterTemp
()))
{
builder
.
putValue
(
CentralAirMeterAttrDefine
.
supplyWaterTemp
,
dataReportInfoDTO
.
getData
().
getSupplyWaterTemp
());
dataMap
.
put
(
CentralAirMeterAttrDefine
.
supplyWaterTemp
.
getCode
()
,
dataReportInfoDTO
.
getData
().
getSupplyWaterTemp
());
}
}
if
(!
ObjectUtils
.
isEmpty
(
paramDTO
.
getReturnWaterTemp
()))
{
if
(!
ObjectUtils
.
isEmpty
(
paramDTO
.
getReturnWaterTemp
()))
{
builder
.
putValue
(
CentralAirMeterAttrDefine
.
returnWaterTemp
,
dataReportInfoDTO
.
getData
().
getReturnWaterTemp
());
dataMap
.
put
(
CentralAirMeterAttrDefine
.
returnWaterTemp
.
getCode
()
,
dataReportInfoDTO
.
getData
().
getReturnWaterTemp
());
}
}
MeterReportEntity
meterReport
=
builder
.
build
();
dto
.
setDatas
(
dataMap
);
System
.
out
.
println
(
"____"
+
JSONObject
.
toJSONString
(
meterReport
));
thinkerProdProtocolClient
.
report
(
protocolType
().
getCode
(),
dto
);
report
(
meterReport
);
}
}
}
}
src/main/resources/application.yml
View file @
4dc233b8
...
@@ -21,17 +21,17 @@ mqtt:
...
@@ -21,17 +21,17 @@ mqtt:
run
:
${ MQTT_RUN:
true
}
run
:
${ MQTT_RUN:
true
}
connection
:
connection
:
thinker
:
thinker
:
broker
:
${ MQTT_CONNECTION_BROKER:tcp://120.79.30.193:1883}
# broker: ${ MQTT_CONNECTION_BROKER:tcp://120.79.30.193:1883}
clientId
:
${ MQTT_CONNECTION_CLIENTID:protocol-proxy-service}
# clientId: ${ MQTT_CONNECTION_CLIENTID:protocol-proxy-service}
username
:
${ MQTT_CONNECTION_USERNAME:thinker}
password
:
${ MQTT_CONNECTION_PASSWORD:123456}
cleanSession
:
${ MQTT_CONNECTION_CLEANSESSION:
false
}
# broker: ${ MQTT_CONNECTION_BROKER:tcp://119.23.65.157:1883}
# clientId: ${ MQTT_CONNECTION_CLIENTID:fox_device_service}
# username: ${ MQTT_CONNECTION_USERNAME:thinker}
# username: ${ MQTT_CONNECTION_USERNAME:thinker}
# password: ${ MQTT_CONNECTION_PASSWORD:123456}
# password: ${ MQTT_CONNECTION_PASSWORD:123456}
# cleanSession: ${ MQTT_CONNECTION_CLEANSESSION:false}
# cleanSession: ${ MQTT_CONNECTION_CLEANSESSION:false}
broker
:
${ MQTT_CONNECTION_BROKER:tcp://119.23.65.157:1883}
clientId
:
${ MQTT_CONNECTION_CLIENTID:fox_device_service}
username
:
${ MQTT_CONNECTION_USERNAME:thinker}
password
:
${ MQTT_CONNECTION_PASSWORD:123456}
cleanSession
:
${ MQTT_CONNECTION_CLEANSESSION:
false
}
# 设备信息
# 设备信息
device
:
device
:
code
:
zykt-test1
code
:
zykt-test1
...
...
src/main/resources/proguard.cfg
View file @
4dc233b8
-target 14
#入口程序类不能混淆,混淆会导致springboot启动不了
-dontshrink
-keep class vc.thinker.ProtocolProxyApplication {
-dontoptimize
-useuniqueclassmembernames
-adaptclassstrings
-dontusemixedcaseclassnames
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod
-libraryjars <java.home>/jmods/java.base.jmod(!.jar;!module-info.class)
-keep public class vc.thinker.ProtocolProxyApplication {
public static void main(java.lang.String[]);
public static void main(java.lang.String[]);
}
}
src/main/test/IParameterModelEventServiceTest.java
View file @
4dc233b8
...
@@ -22,8 +22,8 @@ public class IParameterModelEventServiceTest {
...
@@ -22,8 +22,8 @@ public class IParameterModelEventServiceTest {
public
void
test
()
{
public
void
test
()
{
//加密
//加密
System
.
out
.
println
(
stringEncryptor
.
encrypt
(
"tcp://120.79.30.193:1883"
));
System
.
out
.
println
(
stringEncryptor
.
encrypt
(
"tcp://120.79.30.193:1883"
));
//
System.out.println(stringEncryptor.encrypt("thinker"));
System
.
out
.
println
(
stringEncryptor
.
encrypt
(
"thinker"
));
//
System.out.println(stringEncryptor.encrypt("123456"));
System
.
out
.
println
(
stringEncryptor
.
encrypt
(
"123456"
));
}
}
}
}
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