Commit 4dc233b8 authored by xieshaojun's avatar xieshaojun

更新代码

parent 94404fb7
......@@ -155,38 +155,35 @@
</dependencies>
<build>
<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>
<groupId>org.springframework.boot</groupId>
<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>
<mainClass>${mainClass}</mainClass>
<includeSystemScope>true</includeSystemScope>
<!-- <finalName></finalName>-->
<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>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>repackage</goal>
<goal>class-winter</goal>
</goals>
</execution>
</executions>
......
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());
}
}
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());
}
}
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;
}
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];
}
}
package vc.thinker.thirdpartyproxy.protocolimpls.centralAir;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Lists;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
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.protocol.AbstractThirdPartyProtocolSyncMeterInfo;
import vc.thinker.config.device.DeviceInfoConfig;
import vc.thinker.mqtt.proxyclient.entity.up.ThirdPartyProxyReport;
import vc.thinker.mqtt.proxyclient.service.ThirdPartyProxyClientService;
import vc.thinker.forwardthinker.ThinkerProdProtocolClient;
import vc.thinker.forwardthinker.dto.ThinkerReportDTO;
import vc.thinker.thirdpartyproxy.ProtocolType;
import vc.thinker.thirdpartyproxy.protocolimpls.centralAir.dto.DataReportInfoDTO;
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
private DeviceInfoConfig deviceInfoConfig;
@Autowired
private ThirdPartyProxyClientService thirdPartyProxyClientService;
protected ThinkerProdProtocolClient thinkerProdProtocolClient;
@Override
public IProtocolType protocolType() {
......@@ -48,32 +42,59 @@ public class CentralAirProtocol extends AbstractThirdPartyProtocolSyncMeterInfo
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
public void dataReport(DataReportInfoDTO dataReportInfoDTO) {
LocalDateTime time = LocalDateTime.ofEpochSecond(dataReportInfoDTO.getTimestamp()/1000L,0, ZoneOffset.of("+8"));
String deviceId = lastDeviceId(dataReportInfoDTO);
ThinkerReportDTO dto = new ThinkerReportDTO();
dto.setDeviceCode(deviceInfoConfig.getCode());
dto.setTimestamp(dataReportInfoDTO.getTimestamp());
JSONObject dataMap = new JSONObject();
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());
dataMap.put(CentralAirMeterAttrDefine.electricity.getCode(), dataReportInfoDTO.getData().getElectricity());
}
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())) {
builder.putValue(CentralAirMeterAttrDefine.systemCop, dataReportInfoDTO.getData().getSystemCop());
dataMap.put(CentralAirMeterAttrDefine.systemCop.getCode(), dataReportInfoDTO.getData().getSystemCop());
}
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())) {
builder.putValue(CentralAirMeterAttrDefine.returnWaterTemp, dataReportInfoDTO.getData().getReturnWaterTemp());
dataMap.put(CentralAirMeterAttrDefine.returnWaterTemp.getCode(), dataReportInfoDTO.getData().getReturnWaterTemp());
}
MeterReportEntity meterReport = builder.build();
System.out.println("____"+ JSONObject.toJSONString(meterReport));
report(meterReport);
dto.setDatas(dataMap);
thinkerProdProtocolClient.report(protocolType().getCode(),dto);
}
}
......@@ -21,17 +21,17 @@ mqtt:
run: ${ MQTT_RUN:true}
connection:
thinker:
broker: ${ MQTT_CONNECTION_BROKER:tcp://120.79.30.193:1883}
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}
# broker: ${ MQTT_CONNECTION_BROKER:tcp://120.79.30.193:1883}
# 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}
password: ${ MQTT_CONNECTION_PASSWORD:123456}
cleanSession: ${ MQTT_CONNECTION_CLEANSESSION:false}
# 设备信息
device:
code: zykt-test1
......
-target 14
-dontshrink
-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 {
#入口程序类不能混淆,混淆会导致springboot启动不了
-keep class vc.thinker.ProtocolProxyApplication {
public static void main(java.lang.String[]);
}
......@@ -22,8 +22,8 @@ public class IParameterModelEventServiceTest {
public void test() {
//加密
System.out.println(stringEncryptor.encrypt("tcp://120.79.30.193:1883"));
// System.out.println(stringEncryptor.encrypt("thinker"));
// System.out.println(stringEncryptor.encrypt("123456"));
System.out.println(stringEncryptor.encrypt("thinker"));
System.out.println(stringEncryptor.encrypt("123456"));
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment