diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java index d7032ad..a7f8157 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java @@ -92,7 +92,7 @@ //根据解析内容,判断回复指令,构建解析返回内容 result = ReplyCommandPostProcessing.invoke(bizDataMap, ruleConfigFactory, protocolFactory); //数据发送,异步 -// datagramEventProvider.storeData(bizDataMap); + datagramEventProvider.storeData(bizDataMap); } catch (RuntimeException rex) { log.error("解析出现异常,异常信息为{}", rex); byteBuf.resetReaderIndex(); diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java index d7032ad..a7f8157 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java @@ -92,7 +92,7 @@ //根据解析内容,判断回复指令,构建解析返回内容 result = ReplyCommandPostProcessing.invoke(bizDataMap, ruleConfigFactory, protocolFactory); //数据发送,异步 -// datagramEventProvider.storeData(bizDataMap); + datagramEventProvider.storeData(bizDataMap); } catch (RuntimeException rex) { log.error("解析出现异常,异常信息为{}", rex); byteBuf.resetReaderIndex(); diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java index 2a4ef5d..4813901 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java @@ -1,9 +1,12 @@ package com.casic.missiles.parser.sender; +import com.casic.missiles.pojo.SubscribeDetailConfig; + +import java.util.List; import java.util.Map; public interface DataSubscribeProvider { - void dataSenderSubscribe(Map bizDataMap, String protocolId); + void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig); } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java index d7032ad..a7f8157 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java @@ -92,7 +92,7 @@ //根据解析内容,判断回复指令,构建解析返回内容 result = ReplyCommandPostProcessing.invoke(bizDataMap, ruleConfigFactory, protocolFactory); //数据发送,异步 -// datagramEventProvider.storeData(bizDataMap); + datagramEventProvider.storeData(bizDataMap); } catch (RuntimeException rex) { log.error("解析出现异常,异常信息为{}", rex); byteBuf.resetReaderIndex(); diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java index 2a4ef5d..4813901 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java @@ -1,9 +1,12 @@ package com.casic.missiles.parser.sender; +import com.casic.missiles.pojo.SubscribeDetailConfig; + +import java.util.List; import java.util.Map; public interface DataSubscribeProvider { - void dataSenderSubscribe(Map bizDataMap, String protocolId); + void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig); } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java index bd1516a..cd3cf28 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java @@ -2,6 +2,7 @@ import com.alibaba.fastjson.JSONObject; import com.casic.missiles.parser.sender.DataSubscribeProvider; +import com.casic.missiles.pojo.SubscribeDetailConfig; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; import org.springframework.web.client.RestTemplate; @@ -10,6 +11,7 @@ import javax.annotation.Resource; import java.util.Collections; +import java.util.List; import java.util.Map; @Component("functionCallback") @@ -19,7 +21,7 @@ private RestTemplate restTemplate; @Override - public void dataSenderSubscribe(Map bizDataMap, String protocolId){ + public void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig) { UriComponents uriComponents = UriComponentsBuilder.fromHttpUrl("127.0.0.1:8080"). path("/test").build(true); @@ -30,7 +32,7 @@ JSONObject param = new JSONObject(); //restTemplate 会根据 params 的具体类型,调用合适的 HttpMessageConvert 将请求参数写到请求体 body 中,并在请求头中添加合适的 content-type; // 也会根据 responseType 的类型(本列子中是 JSONObject),设置 head 中的 accept 字段,当响应返回的时候再调用合适的 HttpMessageConvert 进行响应转换 - ResponseEntity responseEntity=restTemplate.postForEntity(url,bizDataMap,JSONObject.class); + ResponseEntity responseEntity = restTemplate.postForEntity(url, bizDataMap, JSONObject.class); System.out.println(JSONObject.toJSON(responseEntity)); } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java index d7032ad..a7f8157 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java @@ -92,7 +92,7 @@ //根据解析内容,判断回复指令,构建解析返回内容 result = ReplyCommandPostProcessing.invoke(bizDataMap, ruleConfigFactory, protocolFactory); //数据发送,异步 -// datagramEventProvider.storeData(bizDataMap); + datagramEventProvider.storeData(bizDataMap); } catch (RuntimeException rex) { log.error("解析出现异常,异常信息为{}", rex); byteBuf.resetReaderIndex(); diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java index 2a4ef5d..4813901 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java @@ -1,9 +1,12 @@ package com.casic.missiles.parser.sender; +import com.casic.missiles.pojo.SubscribeDetailConfig; + +import java.util.List; import java.util.Map; public interface DataSubscribeProvider { - void dataSenderSubscribe(Map bizDataMap, String protocolId); + void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig); } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java index bd1516a..cd3cf28 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java @@ -2,6 +2,7 @@ import com.alibaba.fastjson.JSONObject; import com.casic.missiles.parser.sender.DataSubscribeProvider; +import com.casic.missiles.pojo.SubscribeDetailConfig; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; import org.springframework.web.client.RestTemplate; @@ -10,6 +11,7 @@ import javax.annotation.Resource; import java.util.Collections; +import java.util.List; import java.util.Map; @Component("functionCallback") @@ -19,7 +21,7 @@ private RestTemplate restTemplate; @Override - public void dataSenderSubscribe(Map bizDataMap, String protocolId){ + public void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig) { UriComponents uriComponents = UriComponentsBuilder.fromHttpUrl("127.0.0.1:8080"). path("/test").build(true); @@ -30,7 +32,7 @@ JSONObject param = new JSONObject(); //restTemplate 会根据 params 的具体类型,调用合适的 HttpMessageConvert 将请求参数写到请求体 body 中,并在请求头中添加合适的 content-type; // 也会根据 responseType 的类型(本列子中是 JSONObject),设置 head 中的 accept 字段,当响应返回的时候再调用合适的 HttpMessageConvert 进行响应转换 - ResponseEntity responseEntity=restTemplate.postForEntity(url,bizDataMap,JSONObject.class); + ResponseEntity responseEntity = restTemplate.postForEntity(url, bizDataMap, JSONObject.class); System.out.println(JSONObject.toJSON(responseEntity)); } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java index 7526de2..66f144b 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java @@ -1,18 +1,18 @@ package com.casic.missiles.parser.sender.impl; import com.casic.missiles.parser.sender.DataSubscribeProvider; +import com.casic.missiles.pojo.SubscribeDetailConfig; import org.springframework.stereotype.Component; +import java.util.List; import java.util.Map; @Component("middleware") public class MiddlewareSubscribe implements DataSubscribeProvider { - @Override - public void dataSenderSubscribe(Map bizDataMap, String protocolId){ - + public void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig) { } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java index d7032ad..a7f8157 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java @@ -92,7 +92,7 @@ //根据解析内容,判断回复指令,构建解析返回内容 result = ReplyCommandPostProcessing.invoke(bizDataMap, ruleConfigFactory, protocolFactory); //数据发送,异步 -// datagramEventProvider.storeData(bizDataMap); + datagramEventProvider.storeData(bizDataMap); } catch (RuntimeException rex) { log.error("解析出现异常,异常信息为{}", rex); byteBuf.resetReaderIndex(); diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java index 2a4ef5d..4813901 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java @@ -1,9 +1,12 @@ package com.casic.missiles.parser.sender; +import com.casic.missiles.pojo.SubscribeDetailConfig; + +import java.util.List; import java.util.Map; public interface DataSubscribeProvider { - void dataSenderSubscribe(Map bizDataMap, String protocolId); + void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig); } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java index bd1516a..cd3cf28 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java @@ -2,6 +2,7 @@ import com.alibaba.fastjson.JSONObject; import com.casic.missiles.parser.sender.DataSubscribeProvider; +import com.casic.missiles.pojo.SubscribeDetailConfig; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; import org.springframework.web.client.RestTemplate; @@ -10,6 +11,7 @@ import javax.annotation.Resource; import java.util.Collections; +import java.util.List; import java.util.Map; @Component("functionCallback") @@ -19,7 +21,7 @@ private RestTemplate restTemplate; @Override - public void dataSenderSubscribe(Map bizDataMap, String protocolId){ + public void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig) { UriComponents uriComponents = UriComponentsBuilder.fromHttpUrl("127.0.0.1:8080"). path("/test").build(true); @@ -30,7 +32,7 @@ JSONObject param = new JSONObject(); //restTemplate 会根据 params 的具体类型,调用合适的 HttpMessageConvert 将请求参数写到请求体 body 中,并在请求头中添加合适的 content-type; // 也会根据 responseType 的类型(本列子中是 JSONObject),设置 head 中的 accept 字段,当响应返回的时候再调用合适的 HttpMessageConvert 进行响应转换 - ResponseEntity responseEntity=restTemplate.postForEntity(url,bizDataMap,JSONObject.class); + ResponseEntity responseEntity = restTemplate.postForEntity(url, bizDataMap, JSONObject.class); System.out.println(JSONObject.toJSON(responseEntity)); } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java index 7526de2..66f144b 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java @@ -1,18 +1,18 @@ package com.casic.missiles.parser.sender.impl; import com.casic.missiles.parser.sender.DataSubscribeProvider; +import com.casic.missiles.pojo.SubscribeDetailConfig; import org.springframework.stereotype.Component; +import java.util.List; import java.util.Map; @Component("middleware") public class MiddlewareSubscribe implements DataSubscribeProvider { - @Override - public void dataSenderSubscribe(Map bizDataMap, String protocolId){ - + public void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig) { } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java index e2f1192..471f7a7 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java @@ -1,15 +1,17 @@ package com.casic.missiles.parser.sender.impl; import com.casic.missiles.parser.sender.DataSubscribeProvider; +import com.casic.missiles.pojo.SubscribeDetailConfig; import org.springframework.stereotype.Component; +import java.util.List; import java.util.Map; -@Component("nosql") -public class NoSqlSubscribe implements DataSubscribeProvider { +@Component("dataStore") +public class NoSqlSubscribe implements DataSubscribeProvider { @Override - public void dataSenderSubscribe(Map bizDataMap, String protocolId){ + public void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig) { } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java index d7032ad..a7f8157 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java @@ -92,7 +92,7 @@ //根据解析内容,判断回复指令,构建解析返回内容 result = ReplyCommandPostProcessing.invoke(bizDataMap, ruleConfigFactory, protocolFactory); //数据发送,异步 -// datagramEventProvider.storeData(bizDataMap); + datagramEventProvider.storeData(bizDataMap); } catch (RuntimeException rex) { log.error("解析出现异常,异常信息为{}", rex); byteBuf.resetReaderIndex(); diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java index 2a4ef5d..4813901 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java @@ -1,9 +1,12 @@ package com.casic.missiles.parser.sender; +import com.casic.missiles.pojo.SubscribeDetailConfig; + +import java.util.List; import java.util.Map; public interface DataSubscribeProvider { - void dataSenderSubscribe(Map bizDataMap, String protocolId); + void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig); } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java index bd1516a..cd3cf28 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java @@ -2,6 +2,7 @@ import com.alibaba.fastjson.JSONObject; import com.casic.missiles.parser.sender.DataSubscribeProvider; +import com.casic.missiles.pojo.SubscribeDetailConfig; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; import org.springframework.web.client.RestTemplate; @@ -10,6 +11,7 @@ import javax.annotation.Resource; import java.util.Collections; +import java.util.List; import java.util.Map; @Component("functionCallback") @@ -19,7 +21,7 @@ private RestTemplate restTemplate; @Override - public void dataSenderSubscribe(Map bizDataMap, String protocolId){ + public void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig) { UriComponents uriComponents = UriComponentsBuilder.fromHttpUrl("127.0.0.1:8080"). path("/test").build(true); @@ -30,7 +32,7 @@ JSONObject param = new JSONObject(); //restTemplate 会根据 params 的具体类型,调用合适的 HttpMessageConvert 将请求参数写到请求体 body 中,并在请求头中添加合适的 content-type; // 也会根据 responseType 的类型(本列子中是 JSONObject),设置 head 中的 accept 字段,当响应返回的时候再调用合适的 HttpMessageConvert 进行响应转换 - ResponseEntity responseEntity=restTemplate.postForEntity(url,bizDataMap,JSONObject.class); + ResponseEntity responseEntity = restTemplate.postForEntity(url, bizDataMap, JSONObject.class); System.out.println(JSONObject.toJSON(responseEntity)); } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java index 7526de2..66f144b 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java @@ -1,18 +1,18 @@ package com.casic.missiles.parser.sender.impl; import com.casic.missiles.parser.sender.DataSubscribeProvider; +import com.casic.missiles.pojo.SubscribeDetailConfig; import org.springframework.stereotype.Component; +import java.util.List; import java.util.Map; @Component("middleware") public class MiddlewareSubscribe implements DataSubscribeProvider { - @Override - public void dataSenderSubscribe(Map bizDataMap, String protocolId){ - + public void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig) { } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java index e2f1192..471f7a7 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java @@ -1,15 +1,17 @@ package com.casic.missiles.parser.sender.impl; import com.casic.missiles.parser.sender.DataSubscribeProvider; +import com.casic.missiles.pojo.SubscribeDetailConfig; import org.springframework.stereotype.Component; +import java.util.List; import java.util.Map; -@Component("nosql") -public class NoSqlSubscribe implements DataSubscribeProvider { +@Component("dataStore") +public class NoSqlSubscribe implements DataSubscribeProvider { @Override - public void dataSenderSubscribe(Map bizDataMap, String protocolId){ + public void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig) { } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java index 0b7ddf1..c9f5417 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java @@ -36,13 +36,13 @@ /** - * 解析数据字段 + * todo: 解析数据字段 * * @param ruleConfig * @param byteBuf * @param fieldConfigsMap */ - public void parseDataField(RuleConfig ruleConfig, ByteBuf byteBuf, Map fieldConfigsMap,FieldRuleConfigProvider fieldRuleConfigProvider) { + public void parseDataField(RuleConfig ruleConfig, ByteBuf byteBuf, Map fieldConfigsMap, FieldRuleConfigProvider fieldRuleConfigProvider) { if (showSkip() || StringUtils.isEmpty(ruleConfig.getCombinedFieldIds())) { return; } @@ -53,7 +53,8 @@ } /** - * 准备,过滤字段列表,选取所需的值 + * todo:查询规则对应的组合配合 + * 准备,过滤字段列表,选取所需的值 * * @param ruleConfig * @return diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java index d7032ad..a7f8157 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java @@ -92,7 +92,7 @@ //根据解析内容,判断回复指令,构建解析返回内容 result = ReplyCommandPostProcessing.invoke(bizDataMap, ruleConfigFactory, protocolFactory); //数据发送,异步 -// datagramEventProvider.storeData(bizDataMap); + datagramEventProvider.storeData(bizDataMap); } catch (RuntimeException rex) { log.error("解析出现异常,异常信息为{}", rex); byteBuf.resetReaderIndex(); diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java index 2a4ef5d..4813901 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java @@ -1,9 +1,12 @@ package com.casic.missiles.parser.sender; +import com.casic.missiles.pojo.SubscribeDetailConfig; + +import java.util.List; import java.util.Map; public interface DataSubscribeProvider { - void dataSenderSubscribe(Map bizDataMap, String protocolId); + void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig); } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java index bd1516a..cd3cf28 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java @@ -2,6 +2,7 @@ import com.alibaba.fastjson.JSONObject; import com.casic.missiles.parser.sender.DataSubscribeProvider; +import com.casic.missiles.pojo.SubscribeDetailConfig; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; import org.springframework.web.client.RestTemplate; @@ -10,6 +11,7 @@ import javax.annotation.Resource; import java.util.Collections; +import java.util.List; import java.util.Map; @Component("functionCallback") @@ -19,7 +21,7 @@ private RestTemplate restTemplate; @Override - public void dataSenderSubscribe(Map bizDataMap, String protocolId){ + public void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig) { UriComponents uriComponents = UriComponentsBuilder.fromHttpUrl("127.0.0.1:8080"). path("/test").build(true); @@ -30,7 +32,7 @@ JSONObject param = new JSONObject(); //restTemplate 会根据 params 的具体类型,调用合适的 HttpMessageConvert 将请求参数写到请求体 body 中,并在请求头中添加合适的 content-type; // 也会根据 responseType 的类型(本列子中是 JSONObject),设置 head 中的 accept 字段,当响应返回的时候再调用合适的 HttpMessageConvert 进行响应转换 - ResponseEntity responseEntity=restTemplate.postForEntity(url,bizDataMap,JSONObject.class); + ResponseEntity responseEntity = restTemplate.postForEntity(url, bizDataMap, JSONObject.class); System.out.println(JSONObject.toJSON(responseEntity)); } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java index 7526de2..66f144b 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java @@ -1,18 +1,18 @@ package com.casic.missiles.parser.sender.impl; import com.casic.missiles.parser.sender.DataSubscribeProvider; +import com.casic.missiles.pojo.SubscribeDetailConfig; import org.springframework.stereotype.Component; +import java.util.List; import java.util.Map; @Component("middleware") public class MiddlewareSubscribe implements DataSubscribeProvider { - @Override - public void dataSenderSubscribe(Map bizDataMap, String protocolId){ - + public void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig) { } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java index e2f1192..471f7a7 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java @@ -1,15 +1,17 @@ package com.casic.missiles.parser.sender.impl; import com.casic.missiles.parser.sender.DataSubscribeProvider; +import com.casic.missiles.pojo.SubscribeDetailConfig; import org.springframework.stereotype.Component; +import java.util.List; import java.util.Map; -@Component("nosql") -public class NoSqlSubscribe implements DataSubscribeProvider { +@Component("dataStore") +public class NoSqlSubscribe implements DataSubscribeProvider { @Override - public void dataSenderSubscribe(Map bizDataMap, String protocolId){ + public void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig) { } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java index 0b7ddf1..c9f5417 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java @@ -36,13 +36,13 @@ /** - * 解析数据字段 + * todo: 解析数据字段 * * @param ruleConfig * @param byteBuf * @param fieldConfigsMap */ - public void parseDataField(RuleConfig ruleConfig, ByteBuf byteBuf, Map fieldConfigsMap,FieldRuleConfigProvider fieldRuleConfigProvider) { + public void parseDataField(RuleConfig ruleConfig, ByteBuf byteBuf, Map fieldConfigsMap, FieldRuleConfigProvider fieldRuleConfigProvider) { if (showSkip() || StringUtils.isEmpty(ruleConfig.getCombinedFieldIds())) { return; } @@ -53,7 +53,8 @@ } /** - * 准备,过滤字段列表,选取所需的值 + * todo:查询规则对应的组合配合 + * 准备,过滤字段列表,选取所需的值 * * @param ruleConfig * @return diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/CommandEventProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/CommandEventProvider.java deleted file mode 100644 index 7155894..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/CommandEventProvider.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.casic.missiles.provider; - -/** - * @author cz - * @date 2023-6-12 - */ -public class CommandEventProvider{ - - - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java index d7032ad..a7f8157 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java @@ -92,7 +92,7 @@ //根据解析内容,判断回复指令,构建解析返回内容 result = ReplyCommandPostProcessing.invoke(bizDataMap, ruleConfigFactory, protocolFactory); //数据发送,异步 -// datagramEventProvider.storeData(bizDataMap); + datagramEventProvider.storeData(bizDataMap); } catch (RuntimeException rex) { log.error("解析出现异常,异常信息为{}", rex); byteBuf.resetReaderIndex(); diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java index 2a4ef5d..4813901 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java @@ -1,9 +1,12 @@ package com.casic.missiles.parser.sender; +import com.casic.missiles.pojo.SubscribeDetailConfig; + +import java.util.List; import java.util.Map; public interface DataSubscribeProvider { - void dataSenderSubscribe(Map bizDataMap, String protocolId); + void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig); } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java index bd1516a..cd3cf28 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java @@ -2,6 +2,7 @@ import com.alibaba.fastjson.JSONObject; import com.casic.missiles.parser.sender.DataSubscribeProvider; +import com.casic.missiles.pojo.SubscribeDetailConfig; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; import org.springframework.web.client.RestTemplate; @@ -10,6 +11,7 @@ import javax.annotation.Resource; import java.util.Collections; +import java.util.List; import java.util.Map; @Component("functionCallback") @@ -19,7 +21,7 @@ private RestTemplate restTemplate; @Override - public void dataSenderSubscribe(Map bizDataMap, String protocolId){ + public void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig) { UriComponents uriComponents = UriComponentsBuilder.fromHttpUrl("127.0.0.1:8080"). path("/test").build(true); @@ -30,7 +32,7 @@ JSONObject param = new JSONObject(); //restTemplate 会根据 params 的具体类型,调用合适的 HttpMessageConvert 将请求参数写到请求体 body 中,并在请求头中添加合适的 content-type; // 也会根据 responseType 的类型(本列子中是 JSONObject),设置 head 中的 accept 字段,当响应返回的时候再调用合适的 HttpMessageConvert 进行响应转换 - ResponseEntity responseEntity=restTemplate.postForEntity(url,bizDataMap,JSONObject.class); + ResponseEntity responseEntity = restTemplate.postForEntity(url, bizDataMap, JSONObject.class); System.out.println(JSONObject.toJSON(responseEntity)); } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java index 7526de2..66f144b 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java @@ -1,18 +1,18 @@ package com.casic.missiles.parser.sender.impl; import com.casic.missiles.parser.sender.DataSubscribeProvider; +import com.casic.missiles.pojo.SubscribeDetailConfig; import org.springframework.stereotype.Component; +import java.util.List; import java.util.Map; @Component("middleware") public class MiddlewareSubscribe implements DataSubscribeProvider { - @Override - public void dataSenderSubscribe(Map bizDataMap, String protocolId){ - + public void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig) { } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java index e2f1192..471f7a7 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java @@ -1,15 +1,17 @@ package com.casic.missiles.parser.sender.impl; import com.casic.missiles.parser.sender.DataSubscribeProvider; +import com.casic.missiles.pojo.SubscribeDetailConfig; import org.springframework.stereotype.Component; +import java.util.List; import java.util.Map; -@Component("nosql") -public class NoSqlSubscribe implements DataSubscribeProvider { +@Component("dataStore") +public class NoSqlSubscribe implements DataSubscribeProvider { @Override - public void dataSenderSubscribe(Map bizDataMap, String protocolId){ + public void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig) { } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java index 0b7ddf1..c9f5417 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java @@ -36,13 +36,13 @@ /** - * 解析数据字段 + * todo: 解析数据字段 * * @param ruleConfig * @param byteBuf * @param fieldConfigsMap */ - public void parseDataField(RuleConfig ruleConfig, ByteBuf byteBuf, Map fieldConfigsMap,FieldRuleConfigProvider fieldRuleConfigProvider) { + public void parseDataField(RuleConfig ruleConfig, ByteBuf byteBuf, Map fieldConfigsMap, FieldRuleConfigProvider fieldRuleConfigProvider) { if (showSkip() || StringUtils.isEmpty(ruleConfig.getCombinedFieldIds())) { return; } @@ -53,7 +53,8 @@ } /** - * 准备,过滤字段列表,选取所需的值 + * todo:查询规则对应的组合配合 + * 准备,过滤字段列表,选取所需的值 * * @param ruleConfig * @return diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/CommandEventProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/CommandEventProvider.java deleted file mode 100644 index 7155894..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/CommandEventProvider.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.casic.missiles.provider; - -/** - * @author cz - * @date 2023-6-12 - */ -public class CommandEventProvider{ - - - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/FieldConfigProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/FieldConfigProvider.java index 96f3d52..457676c 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/FieldConfigProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/FieldConfigProvider.java @@ -41,6 +41,13 @@ return storeObjectMap; } + /** + * todo:解析数据字段 + * + * @param ruleConfig + * @param byteBuf + * @return + */ public Map parseDataField(RuleConfig ruleConfig, ByteBuf byteBuf) { if (showSkip()) { return null; @@ -59,6 +66,8 @@ } /** + * todo: 根据规则查询业务字段 + * * 得到需要处理的业务内容 * * @return diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java index d7032ad..a7f8157 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java @@ -92,7 +92,7 @@ //根据解析内容,判断回复指令,构建解析返回内容 result = ReplyCommandPostProcessing.invoke(bizDataMap, ruleConfigFactory, protocolFactory); //数据发送,异步 -// datagramEventProvider.storeData(bizDataMap); + datagramEventProvider.storeData(bizDataMap); } catch (RuntimeException rex) { log.error("解析出现异常,异常信息为{}", rex); byteBuf.resetReaderIndex(); diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java index 2a4ef5d..4813901 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java @@ -1,9 +1,12 @@ package com.casic.missiles.parser.sender; +import com.casic.missiles.pojo.SubscribeDetailConfig; + +import java.util.List; import java.util.Map; public interface DataSubscribeProvider { - void dataSenderSubscribe(Map bizDataMap, String protocolId); + void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig); } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java index bd1516a..cd3cf28 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java @@ -2,6 +2,7 @@ import com.alibaba.fastjson.JSONObject; import com.casic.missiles.parser.sender.DataSubscribeProvider; +import com.casic.missiles.pojo.SubscribeDetailConfig; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; import org.springframework.web.client.RestTemplate; @@ -10,6 +11,7 @@ import javax.annotation.Resource; import java.util.Collections; +import java.util.List; import java.util.Map; @Component("functionCallback") @@ -19,7 +21,7 @@ private RestTemplate restTemplate; @Override - public void dataSenderSubscribe(Map bizDataMap, String protocolId){ + public void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig) { UriComponents uriComponents = UriComponentsBuilder.fromHttpUrl("127.0.0.1:8080"). path("/test").build(true); @@ -30,7 +32,7 @@ JSONObject param = new JSONObject(); //restTemplate 会根据 params 的具体类型,调用合适的 HttpMessageConvert 将请求参数写到请求体 body 中,并在请求头中添加合适的 content-type; // 也会根据 responseType 的类型(本列子中是 JSONObject),设置 head 中的 accept 字段,当响应返回的时候再调用合适的 HttpMessageConvert 进行响应转换 - ResponseEntity responseEntity=restTemplate.postForEntity(url,bizDataMap,JSONObject.class); + ResponseEntity responseEntity = restTemplate.postForEntity(url, bizDataMap, JSONObject.class); System.out.println(JSONObject.toJSON(responseEntity)); } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java index 7526de2..66f144b 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java @@ -1,18 +1,18 @@ package com.casic.missiles.parser.sender.impl; import com.casic.missiles.parser.sender.DataSubscribeProvider; +import com.casic.missiles.pojo.SubscribeDetailConfig; import org.springframework.stereotype.Component; +import java.util.List; import java.util.Map; @Component("middleware") public class MiddlewareSubscribe implements DataSubscribeProvider { - @Override - public void dataSenderSubscribe(Map bizDataMap, String protocolId){ - + public void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig) { } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java index e2f1192..471f7a7 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java @@ -1,15 +1,17 @@ package com.casic.missiles.parser.sender.impl; import com.casic.missiles.parser.sender.DataSubscribeProvider; +import com.casic.missiles.pojo.SubscribeDetailConfig; import org.springframework.stereotype.Component; +import java.util.List; import java.util.Map; -@Component("nosql") -public class NoSqlSubscribe implements DataSubscribeProvider { +@Component("dataStore") +public class NoSqlSubscribe implements DataSubscribeProvider { @Override - public void dataSenderSubscribe(Map bizDataMap, String protocolId){ + public void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig) { } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java index 0b7ddf1..c9f5417 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java @@ -36,13 +36,13 @@ /** - * 解析数据字段 + * todo: 解析数据字段 * * @param ruleConfig * @param byteBuf * @param fieldConfigsMap */ - public void parseDataField(RuleConfig ruleConfig, ByteBuf byteBuf, Map fieldConfigsMap,FieldRuleConfigProvider fieldRuleConfigProvider) { + public void parseDataField(RuleConfig ruleConfig, ByteBuf byteBuf, Map fieldConfigsMap, FieldRuleConfigProvider fieldRuleConfigProvider) { if (showSkip() || StringUtils.isEmpty(ruleConfig.getCombinedFieldIds())) { return; } @@ -53,7 +53,8 @@ } /** - * 准备,过滤字段列表,选取所需的值 + * todo:查询规则对应的组合配合 + * 准备,过滤字段列表,选取所需的值 * * @param ruleConfig * @return diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/CommandEventProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/CommandEventProvider.java deleted file mode 100644 index 7155894..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/CommandEventProvider.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.casic.missiles.provider; - -/** - * @author cz - * @date 2023-6-12 - */ -public class CommandEventProvider{ - - - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/FieldConfigProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/FieldConfigProvider.java index 96f3d52..457676c 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/FieldConfigProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/FieldConfigProvider.java @@ -41,6 +41,13 @@ return storeObjectMap; } + /** + * todo:解析数据字段 + * + * @param ruleConfig + * @param byteBuf + * @return + */ public Map parseDataField(RuleConfig ruleConfig, ByteBuf byteBuf) { if (showSkip()) { return null; @@ -59,6 +66,8 @@ } /** + * todo: 根据规则查询业务字段 + * * 得到需要处理的业务内容 * * @return diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/ProcessorInstanceProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/ProcessorInstanceProvider.java index a33c74c..0f3d9d9 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/ProcessorInstanceProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/ProcessorInstanceProvider.java @@ -7,7 +7,10 @@ import com.casic.missiles.parser.sender.DataSubscribeProvider; import com.casic.missiles.pojo.DatagramEventConfig; import com.casic.missiles.pojo.FieldConfig; +import com.casic.missiles.pojo.SubscribeConfig; +import com.casic.missiles.pojo.SubscribeDetailConfig; import com.casic.missiles.registry.DatagramEventRegistry; +import com.casic.missiles.registry.SubscribeRegistry; import com.casic.missiles.util.SpringContextUtil; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufUtil; @@ -23,12 +26,15 @@ public class ProcessorInstanceProvider { private final DatagramEventConfig processorInstance; + private final List subscribeConfigs; public ProcessorInstanceProvider(Long ruleId) { DatagramEventRegistry datagramEventRegistry = SpringContextUtil.getBean(DatagramEventRegistry.class); List datagramEventConfigList = datagramEventRegistry.getDatagramEventList(ruleId); processorInstance = this.getProcessorInstance(datagramEventConfigList); + SubscribeRegistry subscribeRegistry = SpringContextUtil.getBean(SubscribeRegistry.class); + subscribeConfigs = subscribeRegistry.getSubscribeRegistry(ruleId); } public DatagramEventConfig getProcessorInstance() { @@ -42,7 +48,15 @@ return null; } - // 是否有动态bean,没有去设置的bean,有则取之=>bean不为空,进行解密操作,否则返回原文 + /** + * todo: 报文解密 + * 1、否有动态bean,没有去设置的bean,有则取之 + * 2、bean不为空,进行解密操作,否则返回原文 + * + * @param bizDataContent + * @param fieldConfigMap + * @return + */ public ByteBuf getSafeDatagram(ByteBuf bizDataContent, Map fieldConfigMap) { String safeName = StringUtils.isEmpty(processorInstance.getSafeFieldId()) ? processorInstance.getSafeBean() : @@ -58,25 +72,32 @@ /** + * todo: 报文加密 + *

* 如果进行过解密操作,那么回复自动判定密文需要加密并按照同样的加密的方式进行回复 */ public ByteBuf buildSafeDatagram(ByteBuf replyBytes, Map fieldConfigMap) { String safeName = StringUtils.isEmpty(processorInstance.getSafeFieldId()) ? processorInstance.getSafeBean() : fieldConfigMap.get(processorInstance.getSafeFieldId()).getFieldName(); - ByteBuf ciphertextBuf = null; + ByteBuf cipherByteBuf = null; if (!StringUtils.isEmpty(safeName)) { fillFrameStructZero(replyBytes); //需要加密 SafeStrategy safeStrategy = SpringContextUtil.getBean(safeName); //加密密文 - ciphertextBuf = safeStrategy.encryption(ByteBufUtil.hexDump(replyBytes)); - return ciphertextBuf; + cipherByteBuf = safeStrategy.encryption(ByteBufUtil.hexDump(replyBytes)); + return cipherByteBuf; } - return ciphertextBuf; + return cipherByteBuf; } - //解密清零操作 + /** + * todo:解密清零操作 + * + * @param plainBuf + * @return + */ private ByteBuf clearComplementZero(ByteBuf plainBuf) { Integer plainLength = ByteBufUtil.hexDump(plainBuf).length() / 2; while (plainBuf.getByte(plainLength) == (byte) 0x00) { @@ -86,7 +107,9 @@ return plainBuf; } - //加密补零操作 + /** + * todo: 加密补零操作 + */ private ByteBuf fillFrameStructZero(ByteBuf replyBytes) { while (ByteBufUtil.hexDump(replyBytes).length() % 32 == 0) { replyBytes.writeInt(0); @@ -95,10 +118,18 @@ } - //数据发送,数据发送者暂未构建 + /** + * todo: 数据订阅 + */ public void storeData(List> bizDataMap) { DataSubscribeProvider dataSubscribeProvider = SpringContextUtil.getBean(processorInstance.getSubscribeBean()); -// dataSubscribeProvider.dataSenderSubscribe(bizDataMap, protocolId); + subscribeConfigs.forEach( + subscribeConfig -> { + subscribeConfig.getSubscribeDetailConfigs().forEach( + subscribeDetailConfig -> dataSubscribeProvider.publishDataSubscribe(bizDataMap, subscribeDetailConfig) + ); + } + ); } /** diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java index d7032ad..a7f8157 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java @@ -92,7 +92,7 @@ //根据解析内容,判断回复指令,构建解析返回内容 result = ReplyCommandPostProcessing.invoke(bizDataMap, ruleConfigFactory, protocolFactory); //数据发送,异步 -// datagramEventProvider.storeData(bizDataMap); + datagramEventProvider.storeData(bizDataMap); } catch (RuntimeException rex) { log.error("解析出现异常,异常信息为{}", rex); byteBuf.resetReaderIndex(); diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java index 2a4ef5d..4813901 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java @@ -1,9 +1,12 @@ package com.casic.missiles.parser.sender; +import com.casic.missiles.pojo.SubscribeDetailConfig; + +import java.util.List; import java.util.Map; public interface DataSubscribeProvider { - void dataSenderSubscribe(Map bizDataMap, String protocolId); + void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig); } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java index bd1516a..cd3cf28 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java @@ -2,6 +2,7 @@ import com.alibaba.fastjson.JSONObject; import com.casic.missiles.parser.sender.DataSubscribeProvider; +import com.casic.missiles.pojo.SubscribeDetailConfig; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; import org.springframework.web.client.RestTemplate; @@ -10,6 +11,7 @@ import javax.annotation.Resource; import java.util.Collections; +import java.util.List; import java.util.Map; @Component("functionCallback") @@ -19,7 +21,7 @@ private RestTemplate restTemplate; @Override - public void dataSenderSubscribe(Map bizDataMap, String protocolId){ + public void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig) { UriComponents uriComponents = UriComponentsBuilder.fromHttpUrl("127.0.0.1:8080"). path("/test").build(true); @@ -30,7 +32,7 @@ JSONObject param = new JSONObject(); //restTemplate 会根据 params 的具体类型,调用合适的 HttpMessageConvert 将请求参数写到请求体 body 中,并在请求头中添加合适的 content-type; // 也会根据 responseType 的类型(本列子中是 JSONObject),设置 head 中的 accept 字段,当响应返回的时候再调用合适的 HttpMessageConvert 进行响应转换 - ResponseEntity responseEntity=restTemplate.postForEntity(url,bizDataMap,JSONObject.class); + ResponseEntity responseEntity = restTemplate.postForEntity(url, bizDataMap, JSONObject.class); System.out.println(JSONObject.toJSON(responseEntity)); } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java index 7526de2..66f144b 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java @@ -1,18 +1,18 @@ package com.casic.missiles.parser.sender.impl; import com.casic.missiles.parser.sender.DataSubscribeProvider; +import com.casic.missiles.pojo.SubscribeDetailConfig; import org.springframework.stereotype.Component; +import java.util.List; import java.util.Map; @Component("middleware") public class MiddlewareSubscribe implements DataSubscribeProvider { - @Override - public void dataSenderSubscribe(Map bizDataMap, String protocolId){ - + public void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig) { } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java index e2f1192..471f7a7 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java @@ -1,15 +1,17 @@ package com.casic.missiles.parser.sender.impl; import com.casic.missiles.parser.sender.DataSubscribeProvider; +import com.casic.missiles.pojo.SubscribeDetailConfig; import org.springframework.stereotype.Component; +import java.util.List; import java.util.Map; -@Component("nosql") -public class NoSqlSubscribe implements DataSubscribeProvider { +@Component("dataStore") +public class NoSqlSubscribe implements DataSubscribeProvider { @Override - public void dataSenderSubscribe(Map bizDataMap, String protocolId){ + public void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig) { } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java index 0b7ddf1..c9f5417 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java @@ -36,13 +36,13 @@ /** - * 解析数据字段 + * todo: 解析数据字段 * * @param ruleConfig * @param byteBuf * @param fieldConfigsMap */ - public void parseDataField(RuleConfig ruleConfig, ByteBuf byteBuf, Map fieldConfigsMap,FieldRuleConfigProvider fieldRuleConfigProvider) { + public void parseDataField(RuleConfig ruleConfig, ByteBuf byteBuf, Map fieldConfigsMap, FieldRuleConfigProvider fieldRuleConfigProvider) { if (showSkip() || StringUtils.isEmpty(ruleConfig.getCombinedFieldIds())) { return; } @@ -53,7 +53,8 @@ } /** - * 准备,过滤字段列表,选取所需的值 + * todo:查询规则对应的组合配合 + * 准备,过滤字段列表,选取所需的值 * * @param ruleConfig * @return diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/CommandEventProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/CommandEventProvider.java deleted file mode 100644 index 7155894..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/CommandEventProvider.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.casic.missiles.provider; - -/** - * @author cz - * @date 2023-6-12 - */ -public class CommandEventProvider{ - - - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/FieldConfigProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/FieldConfigProvider.java index 96f3d52..457676c 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/FieldConfigProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/FieldConfigProvider.java @@ -41,6 +41,13 @@ return storeObjectMap; } + /** + * todo:解析数据字段 + * + * @param ruleConfig + * @param byteBuf + * @return + */ public Map parseDataField(RuleConfig ruleConfig, ByteBuf byteBuf) { if (showSkip()) { return null; @@ -59,6 +66,8 @@ } /** + * todo: 根据规则查询业务字段 + * * 得到需要处理的业务内容 * * @return diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/ProcessorInstanceProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/ProcessorInstanceProvider.java index a33c74c..0f3d9d9 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/ProcessorInstanceProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/ProcessorInstanceProvider.java @@ -7,7 +7,10 @@ import com.casic.missiles.parser.sender.DataSubscribeProvider; import com.casic.missiles.pojo.DatagramEventConfig; import com.casic.missiles.pojo.FieldConfig; +import com.casic.missiles.pojo.SubscribeConfig; +import com.casic.missiles.pojo.SubscribeDetailConfig; import com.casic.missiles.registry.DatagramEventRegistry; +import com.casic.missiles.registry.SubscribeRegistry; import com.casic.missiles.util.SpringContextUtil; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufUtil; @@ -23,12 +26,15 @@ public class ProcessorInstanceProvider { private final DatagramEventConfig processorInstance; + private final List subscribeConfigs; public ProcessorInstanceProvider(Long ruleId) { DatagramEventRegistry datagramEventRegistry = SpringContextUtil.getBean(DatagramEventRegistry.class); List datagramEventConfigList = datagramEventRegistry.getDatagramEventList(ruleId); processorInstance = this.getProcessorInstance(datagramEventConfigList); + SubscribeRegistry subscribeRegistry = SpringContextUtil.getBean(SubscribeRegistry.class); + subscribeConfigs = subscribeRegistry.getSubscribeRegistry(ruleId); } public DatagramEventConfig getProcessorInstance() { @@ -42,7 +48,15 @@ return null; } - // 是否有动态bean,没有去设置的bean,有则取之=>bean不为空,进行解密操作,否则返回原文 + /** + * todo: 报文解密 + * 1、否有动态bean,没有去设置的bean,有则取之 + * 2、bean不为空,进行解密操作,否则返回原文 + * + * @param bizDataContent + * @param fieldConfigMap + * @return + */ public ByteBuf getSafeDatagram(ByteBuf bizDataContent, Map fieldConfigMap) { String safeName = StringUtils.isEmpty(processorInstance.getSafeFieldId()) ? processorInstance.getSafeBean() : @@ -58,25 +72,32 @@ /** + * todo: 报文加密 + *

* 如果进行过解密操作,那么回复自动判定密文需要加密并按照同样的加密的方式进行回复 */ public ByteBuf buildSafeDatagram(ByteBuf replyBytes, Map fieldConfigMap) { String safeName = StringUtils.isEmpty(processorInstance.getSafeFieldId()) ? processorInstance.getSafeBean() : fieldConfigMap.get(processorInstance.getSafeFieldId()).getFieldName(); - ByteBuf ciphertextBuf = null; + ByteBuf cipherByteBuf = null; if (!StringUtils.isEmpty(safeName)) { fillFrameStructZero(replyBytes); //需要加密 SafeStrategy safeStrategy = SpringContextUtil.getBean(safeName); //加密密文 - ciphertextBuf = safeStrategy.encryption(ByteBufUtil.hexDump(replyBytes)); - return ciphertextBuf; + cipherByteBuf = safeStrategy.encryption(ByteBufUtil.hexDump(replyBytes)); + return cipherByteBuf; } - return ciphertextBuf; + return cipherByteBuf; } - //解密清零操作 + /** + * todo:解密清零操作 + * + * @param plainBuf + * @return + */ private ByteBuf clearComplementZero(ByteBuf plainBuf) { Integer plainLength = ByteBufUtil.hexDump(plainBuf).length() / 2; while (plainBuf.getByte(plainLength) == (byte) 0x00) { @@ -86,7 +107,9 @@ return plainBuf; } - //加密补零操作 + /** + * todo: 加密补零操作 + */ private ByteBuf fillFrameStructZero(ByteBuf replyBytes) { while (ByteBufUtil.hexDump(replyBytes).length() % 32 == 0) { replyBytes.writeInt(0); @@ -95,10 +118,18 @@ } - //数据发送,数据发送者暂未构建 + /** + * todo: 数据订阅 + */ public void storeData(List> bizDataMap) { DataSubscribeProvider dataSubscribeProvider = SpringContextUtil.getBean(processorInstance.getSubscribeBean()); -// dataSubscribeProvider.dataSenderSubscribe(bizDataMap, protocolId); + subscribeConfigs.forEach( + subscribeConfig -> { + subscribeConfig.getSubscribeDetailConfigs().forEach( + subscribeDetailConfig -> dataSubscribeProvider.publishDataSubscribe(bizDataMap, subscribeDetailConfig) + ); + } + ); } /** diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/ProtocolFieldConfigProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/ProtocolFieldConfigProvider.java index 8e7f561..db0ad83 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/ProtocolFieldConfigProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/ProtocolFieldConfigProvider.java @@ -42,7 +42,7 @@ } /** - * 初始化获取对应协议的配置字段列表 + * todo:初始化获取对应协议的配置字段列表 * * @param protocolId */ @@ -63,7 +63,7 @@ } /** - * 通过协议字段id和协议报文获取该配置实例化内容的值 + * todo:通过协议字段id和协议报文获取该配置实例化内容的值 * * @param protocolFieldId * @param byteBuf @@ -108,7 +108,7 @@ } /** - * 获取帧固定位置字段配置信息 + * todo:获取帧固定位置字段配置信息 * * @param byteBuf * @param protocolConfig @@ -135,7 +135,7 @@ /** - * 获取帧固定位置字段配置信息 + * todo:获取帧固定位置字段配置信息 * * @param byteBuf * @param protocolConfig @@ -160,7 +160,7 @@ } /** - * 获取过滤字段的长度 + * todo:获取过滤字段的长度 */ public Integer getTotalFilterLength(ProtocolConfig protocolConfig) { if (showSkip()) { @@ -179,7 +179,7 @@ /** - * 获取帧结构应有的总长度 + * todo:获取帧结构应有的总长度 */ public Integer getTotalLength(ByteBuf byteBuf, ProtocolConfig protocolConfig) { if (showSkip()) { @@ -205,7 +205,7 @@ } /** - * 获取协议有关字段解析内容 + * todo:获取协议有关字段解析内容 * storeObjectMap存储代转存的数据 * * @return @@ -228,7 +228,7 @@ } /** - * 获取业务报文内容的content字节 + * todo:获取业务报文内容的content字节 * * @param wholeDatagramByte * @return @@ -252,7 +252,7 @@ } /** - * 对解密的内容进行尾部清零操作 + * todo:对解密的内容进行尾部清零操作 *

* 根据解析后的业务内容,通过存储的帧结构,创建完整完整的数据报文, * 这里对帧结构的可变报文没有处理,只是简单的组装,保证提前解密,为帧结构检验做准备 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java index d7032ad..a7f8157 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java @@ -92,7 +92,7 @@ //根据解析内容,判断回复指令,构建解析返回内容 result = ReplyCommandPostProcessing.invoke(bizDataMap, ruleConfigFactory, protocolFactory); //数据发送,异步 -// datagramEventProvider.storeData(bizDataMap); + datagramEventProvider.storeData(bizDataMap); } catch (RuntimeException rex) { log.error("解析出现异常,异常信息为{}", rex); byteBuf.resetReaderIndex(); diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java index 2a4ef5d..4813901 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java @@ -1,9 +1,12 @@ package com.casic.missiles.parser.sender; +import com.casic.missiles.pojo.SubscribeDetailConfig; + +import java.util.List; import java.util.Map; public interface DataSubscribeProvider { - void dataSenderSubscribe(Map bizDataMap, String protocolId); + void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig); } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java index bd1516a..cd3cf28 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java @@ -2,6 +2,7 @@ import com.alibaba.fastjson.JSONObject; import com.casic.missiles.parser.sender.DataSubscribeProvider; +import com.casic.missiles.pojo.SubscribeDetailConfig; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; import org.springframework.web.client.RestTemplate; @@ -10,6 +11,7 @@ import javax.annotation.Resource; import java.util.Collections; +import java.util.List; import java.util.Map; @Component("functionCallback") @@ -19,7 +21,7 @@ private RestTemplate restTemplate; @Override - public void dataSenderSubscribe(Map bizDataMap, String protocolId){ + public void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig) { UriComponents uriComponents = UriComponentsBuilder.fromHttpUrl("127.0.0.1:8080"). path("/test").build(true); @@ -30,7 +32,7 @@ JSONObject param = new JSONObject(); //restTemplate 会根据 params 的具体类型,调用合适的 HttpMessageConvert 将请求参数写到请求体 body 中,并在请求头中添加合适的 content-type; // 也会根据 responseType 的类型(本列子中是 JSONObject),设置 head 中的 accept 字段,当响应返回的时候再调用合适的 HttpMessageConvert 进行响应转换 - ResponseEntity responseEntity=restTemplate.postForEntity(url,bizDataMap,JSONObject.class); + ResponseEntity responseEntity = restTemplate.postForEntity(url, bizDataMap, JSONObject.class); System.out.println(JSONObject.toJSON(responseEntity)); } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java index 7526de2..66f144b 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java @@ -1,18 +1,18 @@ package com.casic.missiles.parser.sender.impl; import com.casic.missiles.parser.sender.DataSubscribeProvider; +import com.casic.missiles.pojo.SubscribeDetailConfig; import org.springframework.stereotype.Component; +import java.util.List; import java.util.Map; @Component("middleware") public class MiddlewareSubscribe implements DataSubscribeProvider { - @Override - public void dataSenderSubscribe(Map bizDataMap, String protocolId){ - + public void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig) { } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java index e2f1192..471f7a7 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java @@ -1,15 +1,17 @@ package com.casic.missiles.parser.sender.impl; import com.casic.missiles.parser.sender.DataSubscribeProvider; +import com.casic.missiles.pojo.SubscribeDetailConfig; import org.springframework.stereotype.Component; +import java.util.List; import java.util.Map; -@Component("nosql") -public class NoSqlSubscribe implements DataSubscribeProvider { +@Component("dataStore") +public class NoSqlSubscribe implements DataSubscribeProvider { @Override - public void dataSenderSubscribe(Map bizDataMap, String protocolId){ + public void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig) { } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java index 0b7ddf1..c9f5417 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java @@ -36,13 +36,13 @@ /** - * 解析数据字段 + * todo: 解析数据字段 * * @param ruleConfig * @param byteBuf * @param fieldConfigsMap */ - public void parseDataField(RuleConfig ruleConfig, ByteBuf byteBuf, Map fieldConfigsMap,FieldRuleConfigProvider fieldRuleConfigProvider) { + public void parseDataField(RuleConfig ruleConfig, ByteBuf byteBuf, Map fieldConfigsMap, FieldRuleConfigProvider fieldRuleConfigProvider) { if (showSkip() || StringUtils.isEmpty(ruleConfig.getCombinedFieldIds())) { return; } @@ -53,7 +53,8 @@ } /** - * 准备,过滤字段列表,选取所需的值 + * todo:查询规则对应的组合配合 + * 准备,过滤字段列表,选取所需的值 * * @param ruleConfig * @return diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/CommandEventProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/CommandEventProvider.java deleted file mode 100644 index 7155894..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/CommandEventProvider.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.casic.missiles.provider; - -/** - * @author cz - * @date 2023-6-12 - */ -public class CommandEventProvider{ - - - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/FieldConfigProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/FieldConfigProvider.java index 96f3d52..457676c 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/FieldConfigProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/FieldConfigProvider.java @@ -41,6 +41,13 @@ return storeObjectMap; } + /** + * todo:解析数据字段 + * + * @param ruleConfig + * @param byteBuf + * @return + */ public Map parseDataField(RuleConfig ruleConfig, ByteBuf byteBuf) { if (showSkip()) { return null; @@ -59,6 +66,8 @@ } /** + * todo: 根据规则查询业务字段 + * * 得到需要处理的业务内容 * * @return diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/ProcessorInstanceProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/ProcessorInstanceProvider.java index a33c74c..0f3d9d9 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/ProcessorInstanceProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/ProcessorInstanceProvider.java @@ -7,7 +7,10 @@ import com.casic.missiles.parser.sender.DataSubscribeProvider; import com.casic.missiles.pojo.DatagramEventConfig; import com.casic.missiles.pojo.FieldConfig; +import com.casic.missiles.pojo.SubscribeConfig; +import com.casic.missiles.pojo.SubscribeDetailConfig; import com.casic.missiles.registry.DatagramEventRegistry; +import com.casic.missiles.registry.SubscribeRegistry; import com.casic.missiles.util.SpringContextUtil; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufUtil; @@ -23,12 +26,15 @@ public class ProcessorInstanceProvider { private final DatagramEventConfig processorInstance; + private final List subscribeConfigs; public ProcessorInstanceProvider(Long ruleId) { DatagramEventRegistry datagramEventRegistry = SpringContextUtil.getBean(DatagramEventRegistry.class); List datagramEventConfigList = datagramEventRegistry.getDatagramEventList(ruleId); processorInstance = this.getProcessorInstance(datagramEventConfigList); + SubscribeRegistry subscribeRegistry = SpringContextUtil.getBean(SubscribeRegistry.class); + subscribeConfigs = subscribeRegistry.getSubscribeRegistry(ruleId); } public DatagramEventConfig getProcessorInstance() { @@ -42,7 +48,15 @@ return null; } - // 是否有动态bean,没有去设置的bean,有则取之=>bean不为空,进行解密操作,否则返回原文 + /** + * todo: 报文解密 + * 1、否有动态bean,没有去设置的bean,有则取之 + * 2、bean不为空,进行解密操作,否则返回原文 + * + * @param bizDataContent + * @param fieldConfigMap + * @return + */ public ByteBuf getSafeDatagram(ByteBuf bizDataContent, Map fieldConfigMap) { String safeName = StringUtils.isEmpty(processorInstance.getSafeFieldId()) ? processorInstance.getSafeBean() : @@ -58,25 +72,32 @@ /** + * todo: 报文加密 + *

* 如果进行过解密操作,那么回复自动判定密文需要加密并按照同样的加密的方式进行回复 */ public ByteBuf buildSafeDatagram(ByteBuf replyBytes, Map fieldConfigMap) { String safeName = StringUtils.isEmpty(processorInstance.getSafeFieldId()) ? processorInstance.getSafeBean() : fieldConfigMap.get(processorInstance.getSafeFieldId()).getFieldName(); - ByteBuf ciphertextBuf = null; + ByteBuf cipherByteBuf = null; if (!StringUtils.isEmpty(safeName)) { fillFrameStructZero(replyBytes); //需要加密 SafeStrategy safeStrategy = SpringContextUtil.getBean(safeName); //加密密文 - ciphertextBuf = safeStrategy.encryption(ByteBufUtil.hexDump(replyBytes)); - return ciphertextBuf; + cipherByteBuf = safeStrategy.encryption(ByteBufUtil.hexDump(replyBytes)); + return cipherByteBuf; } - return ciphertextBuf; + return cipherByteBuf; } - //解密清零操作 + /** + * todo:解密清零操作 + * + * @param plainBuf + * @return + */ private ByteBuf clearComplementZero(ByteBuf plainBuf) { Integer plainLength = ByteBufUtil.hexDump(plainBuf).length() / 2; while (plainBuf.getByte(plainLength) == (byte) 0x00) { @@ -86,7 +107,9 @@ return plainBuf; } - //加密补零操作 + /** + * todo: 加密补零操作 + */ private ByteBuf fillFrameStructZero(ByteBuf replyBytes) { while (ByteBufUtil.hexDump(replyBytes).length() % 32 == 0) { replyBytes.writeInt(0); @@ -95,10 +118,18 @@ } - //数据发送,数据发送者暂未构建 + /** + * todo: 数据订阅 + */ public void storeData(List> bizDataMap) { DataSubscribeProvider dataSubscribeProvider = SpringContextUtil.getBean(processorInstance.getSubscribeBean()); -// dataSubscribeProvider.dataSenderSubscribe(bizDataMap, protocolId); + subscribeConfigs.forEach( + subscribeConfig -> { + subscribeConfig.getSubscribeDetailConfigs().forEach( + subscribeDetailConfig -> dataSubscribeProvider.publishDataSubscribe(bizDataMap, subscribeDetailConfig) + ); + } + ); } /** diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/ProtocolFieldConfigProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/ProtocolFieldConfigProvider.java index 8e7f561..db0ad83 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/ProtocolFieldConfigProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/ProtocolFieldConfigProvider.java @@ -42,7 +42,7 @@ } /** - * 初始化获取对应协议的配置字段列表 + * todo:初始化获取对应协议的配置字段列表 * * @param protocolId */ @@ -63,7 +63,7 @@ } /** - * 通过协议字段id和协议报文获取该配置实例化内容的值 + * todo:通过协议字段id和协议报文获取该配置实例化内容的值 * * @param protocolFieldId * @param byteBuf @@ -108,7 +108,7 @@ } /** - * 获取帧固定位置字段配置信息 + * todo:获取帧固定位置字段配置信息 * * @param byteBuf * @param protocolConfig @@ -135,7 +135,7 @@ /** - * 获取帧固定位置字段配置信息 + * todo:获取帧固定位置字段配置信息 * * @param byteBuf * @param protocolConfig @@ -160,7 +160,7 @@ } /** - * 获取过滤字段的长度 + * todo:获取过滤字段的长度 */ public Integer getTotalFilterLength(ProtocolConfig protocolConfig) { if (showSkip()) { @@ -179,7 +179,7 @@ /** - * 获取帧结构应有的总长度 + * todo:获取帧结构应有的总长度 */ public Integer getTotalLength(ByteBuf byteBuf, ProtocolConfig protocolConfig) { if (showSkip()) { @@ -205,7 +205,7 @@ } /** - * 获取协议有关字段解析内容 + * todo:获取协议有关字段解析内容 * storeObjectMap存储代转存的数据 * * @return @@ -228,7 +228,7 @@ } /** - * 获取业务报文内容的content字节 + * todo:获取业务报文内容的content字节 * * @param wholeDatagramByte * @return @@ -252,7 +252,7 @@ } /** - * 对解密的内容进行尾部清零操作 + * todo:对解密的内容进行尾部清零操作 *

* 根据解析后的业务内容,通过存储的帧结构,创建完整完整的数据报文, * 这里对帧结构的可变报文没有处理,只是简单的组装,保证提前解密,为帧结构检验做准备 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/RuleConfigProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/RuleConfigProvider.java index 1cb5514..7872a3c 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/RuleConfigProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/RuleConfigProvider.java @@ -24,10 +24,10 @@ } public RuleConfig getSendRuleConfig() { - Optional optionalRuleConfig=ruleConfigs.stream().filter( + Optional optionalRuleConfig = ruleConfigs.stream().filter( ruleConfig -> ruleConfig.getScene() != null && ruleConfig.getScene().equals("1")).findFirst(); - return optionalRuleConfig.isPresent()?optionalRuleConfig.get():null; + return optionalRuleConfig.isPresent() ? optionalRuleConfig.get() : null; } public RuleConfigProvider(Long protocolId) { @@ -36,7 +36,7 @@ } /** - * 获取规则匹配结果 + * todo: 获取规则匹配结果 * * @param parseFixedDataMap * @param protocolFieldConfigs diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java index d7032ad..a7f8157 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java @@ -92,7 +92,7 @@ //根据解析内容,判断回复指令,构建解析返回内容 result = ReplyCommandPostProcessing.invoke(bizDataMap, ruleConfigFactory, protocolFactory); //数据发送,异步 -// datagramEventProvider.storeData(bizDataMap); + datagramEventProvider.storeData(bizDataMap); } catch (RuntimeException rex) { log.error("解析出现异常,异常信息为{}", rex); byteBuf.resetReaderIndex(); diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java index 2a4ef5d..4813901 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java @@ -1,9 +1,12 @@ package com.casic.missiles.parser.sender; +import com.casic.missiles.pojo.SubscribeDetailConfig; + +import java.util.List; import java.util.Map; public interface DataSubscribeProvider { - void dataSenderSubscribe(Map bizDataMap, String protocolId); + void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig); } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java index bd1516a..cd3cf28 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java @@ -2,6 +2,7 @@ import com.alibaba.fastjson.JSONObject; import com.casic.missiles.parser.sender.DataSubscribeProvider; +import com.casic.missiles.pojo.SubscribeDetailConfig; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; import org.springframework.web.client.RestTemplate; @@ -10,6 +11,7 @@ import javax.annotation.Resource; import java.util.Collections; +import java.util.List; import java.util.Map; @Component("functionCallback") @@ -19,7 +21,7 @@ private RestTemplate restTemplate; @Override - public void dataSenderSubscribe(Map bizDataMap, String protocolId){ + public void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig) { UriComponents uriComponents = UriComponentsBuilder.fromHttpUrl("127.0.0.1:8080"). path("/test").build(true); @@ -30,7 +32,7 @@ JSONObject param = new JSONObject(); //restTemplate 会根据 params 的具体类型,调用合适的 HttpMessageConvert 将请求参数写到请求体 body 中,并在请求头中添加合适的 content-type; // 也会根据 responseType 的类型(本列子中是 JSONObject),设置 head 中的 accept 字段,当响应返回的时候再调用合适的 HttpMessageConvert 进行响应转换 - ResponseEntity responseEntity=restTemplate.postForEntity(url,bizDataMap,JSONObject.class); + ResponseEntity responseEntity = restTemplate.postForEntity(url, bizDataMap, JSONObject.class); System.out.println(JSONObject.toJSON(responseEntity)); } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java index 7526de2..66f144b 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java @@ -1,18 +1,18 @@ package com.casic.missiles.parser.sender.impl; import com.casic.missiles.parser.sender.DataSubscribeProvider; +import com.casic.missiles.pojo.SubscribeDetailConfig; import org.springframework.stereotype.Component; +import java.util.List; import java.util.Map; @Component("middleware") public class MiddlewareSubscribe implements DataSubscribeProvider { - @Override - public void dataSenderSubscribe(Map bizDataMap, String protocolId){ - + public void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig) { } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java index e2f1192..471f7a7 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java @@ -1,15 +1,17 @@ package com.casic.missiles.parser.sender.impl; import com.casic.missiles.parser.sender.DataSubscribeProvider; +import com.casic.missiles.pojo.SubscribeDetailConfig; import org.springframework.stereotype.Component; +import java.util.List; import java.util.Map; -@Component("nosql") -public class NoSqlSubscribe implements DataSubscribeProvider { +@Component("dataStore") +public class NoSqlSubscribe implements DataSubscribeProvider { @Override - public void dataSenderSubscribe(Map bizDataMap, String protocolId){ + public void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig) { } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java index 0b7ddf1..c9f5417 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java @@ -36,13 +36,13 @@ /** - * 解析数据字段 + * todo: 解析数据字段 * * @param ruleConfig * @param byteBuf * @param fieldConfigsMap */ - public void parseDataField(RuleConfig ruleConfig, ByteBuf byteBuf, Map fieldConfigsMap,FieldRuleConfigProvider fieldRuleConfigProvider) { + public void parseDataField(RuleConfig ruleConfig, ByteBuf byteBuf, Map fieldConfigsMap, FieldRuleConfigProvider fieldRuleConfigProvider) { if (showSkip() || StringUtils.isEmpty(ruleConfig.getCombinedFieldIds())) { return; } @@ -53,7 +53,8 @@ } /** - * 准备,过滤字段列表,选取所需的值 + * todo:查询规则对应的组合配合 + * 准备,过滤字段列表,选取所需的值 * * @param ruleConfig * @return diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/CommandEventProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/CommandEventProvider.java deleted file mode 100644 index 7155894..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/CommandEventProvider.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.casic.missiles.provider; - -/** - * @author cz - * @date 2023-6-12 - */ -public class CommandEventProvider{ - - - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/FieldConfigProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/FieldConfigProvider.java index 96f3d52..457676c 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/FieldConfigProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/FieldConfigProvider.java @@ -41,6 +41,13 @@ return storeObjectMap; } + /** + * todo:解析数据字段 + * + * @param ruleConfig + * @param byteBuf + * @return + */ public Map parseDataField(RuleConfig ruleConfig, ByteBuf byteBuf) { if (showSkip()) { return null; @@ -59,6 +66,8 @@ } /** + * todo: 根据规则查询业务字段 + * * 得到需要处理的业务内容 * * @return diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/ProcessorInstanceProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/ProcessorInstanceProvider.java index a33c74c..0f3d9d9 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/ProcessorInstanceProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/ProcessorInstanceProvider.java @@ -7,7 +7,10 @@ import com.casic.missiles.parser.sender.DataSubscribeProvider; import com.casic.missiles.pojo.DatagramEventConfig; import com.casic.missiles.pojo.FieldConfig; +import com.casic.missiles.pojo.SubscribeConfig; +import com.casic.missiles.pojo.SubscribeDetailConfig; import com.casic.missiles.registry.DatagramEventRegistry; +import com.casic.missiles.registry.SubscribeRegistry; import com.casic.missiles.util.SpringContextUtil; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufUtil; @@ -23,12 +26,15 @@ public class ProcessorInstanceProvider { private final DatagramEventConfig processorInstance; + private final List subscribeConfigs; public ProcessorInstanceProvider(Long ruleId) { DatagramEventRegistry datagramEventRegistry = SpringContextUtil.getBean(DatagramEventRegistry.class); List datagramEventConfigList = datagramEventRegistry.getDatagramEventList(ruleId); processorInstance = this.getProcessorInstance(datagramEventConfigList); + SubscribeRegistry subscribeRegistry = SpringContextUtil.getBean(SubscribeRegistry.class); + subscribeConfigs = subscribeRegistry.getSubscribeRegistry(ruleId); } public DatagramEventConfig getProcessorInstance() { @@ -42,7 +48,15 @@ return null; } - // 是否有动态bean,没有去设置的bean,有则取之=>bean不为空,进行解密操作,否则返回原文 + /** + * todo: 报文解密 + * 1、否有动态bean,没有去设置的bean,有则取之 + * 2、bean不为空,进行解密操作,否则返回原文 + * + * @param bizDataContent + * @param fieldConfigMap + * @return + */ public ByteBuf getSafeDatagram(ByteBuf bizDataContent, Map fieldConfigMap) { String safeName = StringUtils.isEmpty(processorInstance.getSafeFieldId()) ? processorInstance.getSafeBean() : @@ -58,25 +72,32 @@ /** + * todo: 报文加密 + *

* 如果进行过解密操作,那么回复自动判定密文需要加密并按照同样的加密的方式进行回复 */ public ByteBuf buildSafeDatagram(ByteBuf replyBytes, Map fieldConfigMap) { String safeName = StringUtils.isEmpty(processorInstance.getSafeFieldId()) ? processorInstance.getSafeBean() : fieldConfigMap.get(processorInstance.getSafeFieldId()).getFieldName(); - ByteBuf ciphertextBuf = null; + ByteBuf cipherByteBuf = null; if (!StringUtils.isEmpty(safeName)) { fillFrameStructZero(replyBytes); //需要加密 SafeStrategy safeStrategy = SpringContextUtil.getBean(safeName); //加密密文 - ciphertextBuf = safeStrategy.encryption(ByteBufUtil.hexDump(replyBytes)); - return ciphertextBuf; + cipherByteBuf = safeStrategy.encryption(ByteBufUtil.hexDump(replyBytes)); + return cipherByteBuf; } - return ciphertextBuf; + return cipherByteBuf; } - //解密清零操作 + /** + * todo:解密清零操作 + * + * @param plainBuf + * @return + */ private ByteBuf clearComplementZero(ByteBuf plainBuf) { Integer plainLength = ByteBufUtil.hexDump(plainBuf).length() / 2; while (plainBuf.getByte(plainLength) == (byte) 0x00) { @@ -86,7 +107,9 @@ return plainBuf; } - //加密补零操作 + /** + * todo: 加密补零操作 + */ private ByteBuf fillFrameStructZero(ByteBuf replyBytes) { while (ByteBufUtil.hexDump(replyBytes).length() % 32 == 0) { replyBytes.writeInt(0); @@ -95,10 +118,18 @@ } - //数据发送,数据发送者暂未构建 + /** + * todo: 数据订阅 + */ public void storeData(List> bizDataMap) { DataSubscribeProvider dataSubscribeProvider = SpringContextUtil.getBean(processorInstance.getSubscribeBean()); -// dataSubscribeProvider.dataSenderSubscribe(bizDataMap, protocolId); + subscribeConfigs.forEach( + subscribeConfig -> { + subscribeConfig.getSubscribeDetailConfigs().forEach( + subscribeDetailConfig -> dataSubscribeProvider.publishDataSubscribe(bizDataMap, subscribeDetailConfig) + ); + } + ); } /** diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/ProtocolFieldConfigProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/ProtocolFieldConfigProvider.java index 8e7f561..db0ad83 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/ProtocolFieldConfigProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/ProtocolFieldConfigProvider.java @@ -42,7 +42,7 @@ } /** - * 初始化获取对应协议的配置字段列表 + * todo:初始化获取对应协议的配置字段列表 * * @param protocolId */ @@ -63,7 +63,7 @@ } /** - * 通过协议字段id和协议报文获取该配置实例化内容的值 + * todo:通过协议字段id和协议报文获取该配置实例化内容的值 * * @param protocolFieldId * @param byteBuf @@ -108,7 +108,7 @@ } /** - * 获取帧固定位置字段配置信息 + * todo:获取帧固定位置字段配置信息 * * @param byteBuf * @param protocolConfig @@ -135,7 +135,7 @@ /** - * 获取帧固定位置字段配置信息 + * todo:获取帧固定位置字段配置信息 * * @param byteBuf * @param protocolConfig @@ -160,7 +160,7 @@ } /** - * 获取过滤字段的长度 + * todo:获取过滤字段的长度 */ public Integer getTotalFilterLength(ProtocolConfig protocolConfig) { if (showSkip()) { @@ -179,7 +179,7 @@ /** - * 获取帧结构应有的总长度 + * todo:获取帧结构应有的总长度 */ public Integer getTotalLength(ByteBuf byteBuf, ProtocolConfig protocolConfig) { if (showSkip()) { @@ -205,7 +205,7 @@ } /** - * 获取协议有关字段解析内容 + * todo:获取协议有关字段解析内容 * storeObjectMap存储代转存的数据 * * @return @@ -228,7 +228,7 @@ } /** - * 获取业务报文内容的content字节 + * todo:获取业务报文内容的content字节 * * @param wholeDatagramByte * @return @@ -252,7 +252,7 @@ } /** - * 对解密的内容进行尾部清零操作 + * todo:对解密的内容进行尾部清零操作 *

* 根据解析后的业务内容,通过存储的帧结构,创建完整完整的数据报文, * 这里对帧结构的可变报文没有处理,只是简单的组装,保证提前解密,为帧结构检验做准备 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/RuleConfigProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/RuleConfigProvider.java index 1cb5514..7872a3c 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/RuleConfigProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/RuleConfigProvider.java @@ -24,10 +24,10 @@ } public RuleConfig getSendRuleConfig() { - Optional optionalRuleConfig=ruleConfigs.stream().filter( + Optional optionalRuleConfig = ruleConfigs.stream().filter( ruleConfig -> ruleConfig.getScene() != null && ruleConfig.getScene().equals("1")).findFirst(); - return optionalRuleConfig.isPresent()?optionalRuleConfig.get():null; + return optionalRuleConfig.isPresent() ? optionalRuleConfig.get() : null; } public RuleConfigProvider(Long protocolId) { @@ -36,7 +36,7 @@ } /** - * 获取规则匹配结果 + * todo: 获取规则匹配结果 * * @param parseFixedDataMap * @param protocolFieldConfigs diff --git a/sensorhub-support/src/main/java/com/casic/missiles/mapper/SubscribeConfigMapper.java b/sensorhub-support/src/main/java/com/casic/missiles/mapper/SubscribeConfigMapper.java new file mode 100644 index 0000000..31b0bdd --- /dev/null +++ b/sensorhub-support/src/main/java/com/casic/missiles/mapper/SubscribeConfigMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.pojo.SubscribeConfig; +import org.apache.ibatis.annotations.Mapper; + +/** + * @author cz + * + */ +@Mapper +public interface SubscribeConfigMapper extends BaseMapper { + + + +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java index d7032ad..a7f8157 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java @@ -92,7 +92,7 @@ //根据解析内容,判断回复指令,构建解析返回内容 result = ReplyCommandPostProcessing.invoke(bizDataMap, ruleConfigFactory, protocolFactory); //数据发送,异步 -// datagramEventProvider.storeData(bizDataMap); + datagramEventProvider.storeData(bizDataMap); } catch (RuntimeException rex) { log.error("解析出现异常,异常信息为{}", rex); byteBuf.resetReaderIndex(); diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java index 2a4ef5d..4813901 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java @@ -1,9 +1,12 @@ package com.casic.missiles.parser.sender; +import com.casic.missiles.pojo.SubscribeDetailConfig; + +import java.util.List; import java.util.Map; public interface DataSubscribeProvider { - void dataSenderSubscribe(Map bizDataMap, String protocolId); + void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig); } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java index bd1516a..cd3cf28 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java @@ -2,6 +2,7 @@ import com.alibaba.fastjson.JSONObject; import com.casic.missiles.parser.sender.DataSubscribeProvider; +import com.casic.missiles.pojo.SubscribeDetailConfig; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; import org.springframework.web.client.RestTemplate; @@ -10,6 +11,7 @@ import javax.annotation.Resource; import java.util.Collections; +import java.util.List; import java.util.Map; @Component("functionCallback") @@ -19,7 +21,7 @@ private RestTemplate restTemplate; @Override - public void dataSenderSubscribe(Map bizDataMap, String protocolId){ + public void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig) { UriComponents uriComponents = UriComponentsBuilder.fromHttpUrl("127.0.0.1:8080"). path("/test").build(true); @@ -30,7 +32,7 @@ JSONObject param = new JSONObject(); //restTemplate 会根据 params 的具体类型,调用合适的 HttpMessageConvert 将请求参数写到请求体 body 中,并在请求头中添加合适的 content-type; // 也会根据 responseType 的类型(本列子中是 JSONObject),设置 head 中的 accept 字段,当响应返回的时候再调用合适的 HttpMessageConvert 进行响应转换 - ResponseEntity responseEntity=restTemplate.postForEntity(url,bizDataMap,JSONObject.class); + ResponseEntity responseEntity = restTemplate.postForEntity(url, bizDataMap, JSONObject.class); System.out.println(JSONObject.toJSON(responseEntity)); } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java index 7526de2..66f144b 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java @@ -1,18 +1,18 @@ package com.casic.missiles.parser.sender.impl; import com.casic.missiles.parser.sender.DataSubscribeProvider; +import com.casic.missiles.pojo.SubscribeDetailConfig; import org.springframework.stereotype.Component; +import java.util.List; import java.util.Map; @Component("middleware") public class MiddlewareSubscribe implements DataSubscribeProvider { - @Override - public void dataSenderSubscribe(Map bizDataMap, String protocolId){ - + public void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig) { } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java index e2f1192..471f7a7 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java @@ -1,15 +1,17 @@ package com.casic.missiles.parser.sender.impl; import com.casic.missiles.parser.sender.DataSubscribeProvider; +import com.casic.missiles.pojo.SubscribeDetailConfig; import org.springframework.stereotype.Component; +import java.util.List; import java.util.Map; -@Component("nosql") -public class NoSqlSubscribe implements DataSubscribeProvider { +@Component("dataStore") +public class NoSqlSubscribe implements DataSubscribeProvider { @Override - public void dataSenderSubscribe(Map bizDataMap, String protocolId){ + public void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig) { } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java index 0b7ddf1..c9f5417 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java @@ -36,13 +36,13 @@ /** - * 解析数据字段 + * todo: 解析数据字段 * * @param ruleConfig * @param byteBuf * @param fieldConfigsMap */ - public void parseDataField(RuleConfig ruleConfig, ByteBuf byteBuf, Map fieldConfigsMap,FieldRuleConfigProvider fieldRuleConfigProvider) { + public void parseDataField(RuleConfig ruleConfig, ByteBuf byteBuf, Map fieldConfigsMap, FieldRuleConfigProvider fieldRuleConfigProvider) { if (showSkip() || StringUtils.isEmpty(ruleConfig.getCombinedFieldIds())) { return; } @@ -53,7 +53,8 @@ } /** - * 准备,过滤字段列表,选取所需的值 + * todo:查询规则对应的组合配合 + * 准备,过滤字段列表,选取所需的值 * * @param ruleConfig * @return diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/CommandEventProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/CommandEventProvider.java deleted file mode 100644 index 7155894..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/CommandEventProvider.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.casic.missiles.provider; - -/** - * @author cz - * @date 2023-6-12 - */ -public class CommandEventProvider{ - - - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/FieldConfigProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/FieldConfigProvider.java index 96f3d52..457676c 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/FieldConfigProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/FieldConfigProvider.java @@ -41,6 +41,13 @@ return storeObjectMap; } + /** + * todo:解析数据字段 + * + * @param ruleConfig + * @param byteBuf + * @return + */ public Map parseDataField(RuleConfig ruleConfig, ByteBuf byteBuf) { if (showSkip()) { return null; @@ -59,6 +66,8 @@ } /** + * todo: 根据规则查询业务字段 + * * 得到需要处理的业务内容 * * @return diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/ProcessorInstanceProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/ProcessorInstanceProvider.java index a33c74c..0f3d9d9 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/ProcessorInstanceProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/ProcessorInstanceProvider.java @@ -7,7 +7,10 @@ import com.casic.missiles.parser.sender.DataSubscribeProvider; import com.casic.missiles.pojo.DatagramEventConfig; import com.casic.missiles.pojo.FieldConfig; +import com.casic.missiles.pojo.SubscribeConfig; +import com.casic.missiles.pojo.SubscribeDetailConfig; import com.casic.missiles.registry.DatagramEventRegistry; +import com.casic.missiles.registry.SubscribeRegistry; import com.casic.missiles.util.SpringContextUtil; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufUtil; @@ -23,12 +26,15 @@ public class ProcessorInstanceProvider { private final DatagramEventConfig processorInstance; + private final List subscribeConfigs; public ProcessorInstanceProvider(Long ruleId) { DatagramEventRegistry datagramEventRegistry = SpringContextUtil.getBean(DatagramEventRegistry.class); List datagramEventConfigList = datagramEventRegistry.getDatagramEventList(ruleId); processorInstance = this.getProcessorInstance(datagramEventConfigList); + SubscribeRegistry subscribeRegistry = SpringContextUtil.getBean(SubscribeRegistry.class); + subscribeConfigs = subscribeRegistry.getSubscribeRegistry(ruleId); } public DatagramEventConfig getProcessorInstance() { @@ -42,7 +48,15 @@ return null; } - // 是否有动态bean,没有去设置的bean,有则取之=>bean不为空,进行解密操作,否则返回原文 + /** + * todo: 报文解密 + * 1、否有动态bean,没有去设置的bean,有则取之 + * 2、bean不为空,进行解密操作,否则返回原文 + * + * @param bizDataContent + * @param fieldConfigMap + * @return + */ public ByteBuf getSafeDatagram(ByteBuf bizDataContent, Map fieldConfigMap) { String safeName = StringUtils.isEmpty(processorInstance.getSafeFieldId()) ? processorInstance.getSafeBean() : @@ -58,25 +72,32 @@ /** + * todo: 报文加密 + *

* 如果进行过解密操作,那么回复自动判定密文需要加密并按照同样的加密的方式进行回复 */ public ByteBuf buildSafeDatagram(ByteBuf replyBytes, Map fieldConfigMap) { String safeName = StringUtils.isEmpty(processorInstance.getSafeFieldId()) ? processorInstance.getSafeBean() : fieldConfigMap.get(processorInstance.getSafeFieldId()).getFieldName(); - ByteBuf ciphertextBuf = null; + ByteBuf cipherByteBuf = null; if (!StringUtils.isEmpty(safeName)) { fillFrameStructZero(replyBytes); //需要加密 SafeStrategy safeStrategy = SpringContextUtil.getBean(safeName); //加密密文 - ciphertextBuf = safeStrategy.encryption(ByteBufUtil.hexDump(replyBytes)); - return ciphertextBuf; + cipherByteBuf = safeStrategy.encryption(ByteBufUtil.hexDump(replyBytes)); + return cipherByteBuf; } - return ciphertextBuf; + return cipherByteBuf; } - //解密清零操作 + /** + * todo:解密清零操作 + * + * @param plainBuf + * @return + */ private ByteBuf clearComplementZero(ByteBuf plainBuf) { Integer plainLength = ByteBufUtil.hexDump(plainBuf).length() / 2; while (plainBuf.getByte(plainLength) == (byte) 0x00) { @@ -86,7 +107,9 @@ return plainBuf; } - //加密补零操作 + /** + * todo: 加密补零操作 + */ private ByteBuf fillFrameStructZero(ByteBuf replyBytes) { while (ByteBufUtil.hexDump(replyBytes).length() % 32 == 0) { replyBytes.writeInt(0); @@ -95,10 +118,18 @@ } - //数据发送,数据发送者暂未构建 + /** + * todo: 数据订阅 + */ public void storeData(List> bizDataMap) { DataSubscribeProvider dataSubscribeProvider = SpringContextUtil.getBean(processorInstance.getSubscribeBean()); -// dataSubscribeProvider.dataSenderSubscribe(bizDataMap, protocolId); + subscribeConfigs.forEach( + subscribeConfig -> { + subscribeConfig.getSubscribeDetailConfigs().forEach( + subscribeDetailConfig -> dataSubscribeProvider.publishDataSubscribe(bizDataMap, subscribeDetailConfig) + ); + } + ); } /** diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/ProtocolFieldConfigProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/ProtocolFieldConfigProvider.java index 8e7f561..db0ad83 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/ProtocolFieldConfigProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/ProtocolFieldConfigProvider.java @@ -42,7 +42,7 @@ } /** - * 初始化获取对应协议的配置字段列表 + * todo:初始化获取对应协议的配置字段列表 * * @param protocolId */ @@ -63,7 +63,7 @@ } /** - * 通过协议字段id和协议报文获取该配置实例化内容的值 + * todo:通过协议字段id和协议报文获取该配置实例化内容的值 * * @param protocolFieldId * @param byteBuf @@ -108,7 +108,7 @@ } /** - * 获取帧固定位置字段配置信息 + * todo:获取帧固定位置字段配置信息 * * @param byteBuf * @param protocolConfig @@ -135,7 +135,7 @@ /** - * 获取帧固定位置字段配置信息 + * todo:获取帧固定位置字段配置信息 * * @param byteBuf * @param protocolConfig @@ -160,7 +160,7 @@ } /** - * 获取过滤字段的长度 + * todo:获取过滤字段的长度 */ public Integer getTotalFilterLength(ProtocolConfig protocolConfig) { if (showSkip()) { @@ -179,7 +179,7 @@ /** - * 获取帧结构应有的总长度 + * todo:获取帧结构应有的总长度 */ public Integer getTotalLength(ByteBuf byteBuf, ProtocolConfig protocolConfig) { if (showSkip()) { @@ -205,7 +205,7 @@ } /** - * 获取协议有关字段解析内容 + * todo:获取协议有关字段解析内容 * storeObjectMap存储代转存的数据 * * @return @@ -228,7 +228,7 @@ } /** - * 获取业务报文内容的content字节 + * todo:获取业务报文内容的content字节 * * @param wholeDatagramByte * @return @@ -252,7 +252,7 @@ } /** - * 对解密的内容进行尾部清零操作 + * todo:对解密的内容进行尾部清零操作 *

* 根据解析后的业务内容,通过存储的帧结构,创建完整完整的数据报文, * 这里对帧结构的可变报文没有处理,只是简单的组装,保证提前解密,为帧结构检验做准备 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/RuleConfigProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/RuleConfigProvider.java index 1cb5514..7872a3c 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/RuleConfigProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/RuleConfigProvider.java @@ -24,10 +24,10 @@ } public RuleConfig getSendRuleConfig() { - Optional optionalRuleConfig=ruleConfigs.stream().filter( + Optional optionalRuleConfig = ruleConfigs.stream().filter( ruleConfig -> ruleConfig.getScene() != null && ruleConfig.getScene().equals("1")).findFirst(); - return optionalRuleConfig.isPresent()?optionalRuleConfig.get():null; + return optionalRuleConfig.isPresent() ? optionalRuleConfig.get() : null; } public RuleConfigProvider(Long protocolId) { @@ -36,7 +36,7 @@ } /** - * 获取规则匹配结果 + * todo: 获取规则匹配结果 * * @param parseFixedDataMap * @param protocolFieldConfigs diff --git a/sensorhub-support/src/main/java/com/casic/missiles/mapper/SubscribeConfigMapper.java b/sensorhub-support/src/main/java/com/casic/missiles/mapper/SubscribeConfigMapper.java new file mode 100644 index 0000000..31b0bdd --- /dev/null +++ b/sensorhub-support/src/main/java/com/casic/missiles/mapper/SubscribeConfigMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.pojo.SubscribeConfig; +import org.apache.ibatis.annotations.Mapper; + +/** + * @author cz + * + */ +@Mapper +public interface SubscribeConfigMapper extends BaseMapper { + + + +} diff --git a/sensorhub-support/src/main/java/com/casic/missiles/mapper/SubscribeDetailConfigMapper.java b/sensorhub-support/src/main/java/com/casic/missiles/mapper/SubscribeDetailConfigMapper.java new file mode 100644 index 0000000..0bfe7c9 --- /dev/null +++ b/sensorhub-support/src/main/java/com/casic/missiles/mapper/SubscribeDetailConfigMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.pojo.SubscribeDetailConfig; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + * @author cz + * + */ + +@Mapper +public interface SubscribeDetailConfigMapper extends BaseMapper { + + + + + +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java index d7032ad..a7f8157 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java @@ -92,7 +92,7 @@ //根据解析内容,判断回复指令,构建解析返回内容 result = ReplyCommandPostProcessing.invoke(bizDataMap, ruleConfigFactory, protocolFactory); //数据发送,异步 -// datagramEventProvider.storeData(bizDataMap); + datagramEventProvider.storeData(bizDataMap); } catch (RuntimeException rex) { log.error("解析出现异常,异常信息为{}", rex); byteBuf.resetReaderIndex(); diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java index 2a4ef5d..4813901 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java @@ -1,9 +1,12 @@ package com.casic.missiles.parser.sender; +import com.casic.missiles.pojo.SubscribeDetailConfig; + +import java.util.List; import java.util.Map; public interface DataSubscribeProvider { - void dataSenderSubscribe(Map bizDataMap, String protocolId); + void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig); } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java index bd1516a..cd3cf28 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java @@ -2,6 +2,7 @@ import com.alibaba.fastjson.JSONObject; import com.casic.missiles.parser.sender.DataSubscribeProvider; +import com.casic.missiles.pojo.SubscribeDetailConfig; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; import org.springframework.web.client.RestTemplate; @@ -10,6 +11,7 @@ import javax.annotation.Resource; import java.util.Collections; +import java.util.List; import java.util.Map; @Component("functionCallback") @@ -19,7 +21,7 @@ private RestTemplate restTemplate; @Override - public void dataSenderSubscribe(Map bizDataMap, String protocolId){ + public void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig) { UriComponents uriComponents = UriComponentsBuilder.fromHttpUrl("127.0.0.1:8080"). path("/test").build(true); @@ -30,7 +32,7 @@ JSONObject param = new JSONObject(); //restTemplate 会根据 params 的具体类型,调用合适的 HttpMessageConvert 将请求参数写到请求体 body 中,并在请求头中添加合适的 content-type; // 也会根据 responseType 的类型(本列子中是 JSONObject),设置 head 中的 accept 字段,当响应返回的时候再调用合适的 HttpMessageConvert 进行响应转换 - ResponseEntity responseEntity=restTemplate.postForEntity(url,bizDataMap,JSONObject.class); + ResponseEntity responseEntity = restTemplate.postForEntity(url, bizDataMap, JSONObject.class); System.out.println(JSONObject.toJSON(responseEntity)); } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java index 7526de2..66f144b 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java @@ -1,18 +1,18 @@ package com.casic.missiles.parser.sender.impl; import com.casic.missiles.parser.sender.DataSubscribeProvider; +import com.casic.missiles.pojo.SubscribeDetailConfig; import org.springframework.stereotype.Component; +import java.util.List; import java.util.Map; @Component("middleware") public class MiddlewareSubscribe implements DataSubscribeProvider { - @Override - public void dataSenderSubscribe(Map bizDataMap, String protocolId){ - + public void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig) { } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java index e2f1192..471f7a7 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java @@ -1,15 +1,17 @@ package com.casic.missiles.parser.sender.impl; import com.casic.missiles.parser.sender.DataSubscribeProvider; +import com.casic.missiles.pojo.SubscribeDetailConfig; import org.springframework.stereotype.Component; +import java.util.List; import java.util.Map; -@Component("nosql") -public class NoSqlSubscribe implements DataSubscribeProvider { +@Component("dataStore") +public class NoSqlSubscribe implements DataSubscribeProvider { @Override - public void dataSenderSubscribe(Map bizDataMap, String protocolId){ + public void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig) { } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java index 0b7ddf1..c9f5417 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java @@ -36,13 +36,13 @@ /** - * 解析数据字段 + * todo: 解析数据字段 * * @param ruleConfig * @param byteBuf * @param fieldConfigsMap */ - public void parseDataField(RuleConfig ruleConfig, ByteBuf byteBuf, Map fieldConfigsMap,FieldRuleConfigProvider fieldRuleConfigProvider) { + public void parseDataField(RuleConfig ruleConfig, ByteBuf byteBuf, Map fieldConfigsMap, FieldRuleConfigProvider fieldRuleConfigProvider) { if (showSkip() || StringUtils.isEmpty(ruleConfig.getCombinedFieldIds())) { return; } @@ -53,7 +53,8 @@ } /** - * 准备,过滤字段列表,选取所需的值 + * todo:查询规则对应的组合配合 + * 准备,过滤字段列表,选取所需的值 * * @param ruleConfig * @return diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/CommandEventProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/CommandEventProvider.java deleted file mode 100644 index 7155894..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/CommandEventProvider.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.casic.missiles.provider; - -/** - * @author cz - * @date 2023-6-12 - */ -public class CommandEventProvider{ - - - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/FieldConfigProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/FieldConfigProvider.java index 96f3d52..457676c 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/FieldConfigProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/FieldConfigProvider.java @@ -41,6 +41,13 @@ return storeObjectMap; } + /** + * todo:解析数据字段 + * + * @param ruleConfig + * @param byteBuf + * @return + */ public Map parseDataField(RuleConfig ruleConfig, ByteBuf byteBuf) { if (showSkip()) { return null; @@ -59,6 +66,8 @@ } /** + * todo: 根据规则查询业务字段 + * * 得到需要处理的业务内容 * * @return diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/ProcessorInstanceProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/ProcessorInstanceProvider.java index a33c74c..0f3d9d9 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/ProcessorInstanceProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/ProcessorInstanceProvider.java @@ -7,7 +7,10 @@ import com.casic.missiles.parser.sender.DataSubscribeProvider; import com.casic.missiles.pojo.DatagramEventConfig; import com.casic.missiles.pojo.FieldConfig; +import com.casic.missiles.pojo.SubscribeConfig; +import com.casic.missiles.pojo.SubscribeDetailConfig; import com.casic.missiles.registry.DatagramEventRegistry; +import com.casic.missiles.registry.SubscribeRegistry; import com.casic.missiles.util.SpringContextUtil; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufUtil; @@ -23,12 +26,15 @@ public class ProcessorInstanceProvider { private final DatagramEventConfig processorInstance; + private final List subscribeConfigs; public ProcessorInstanceProvider(Long ruleId) { DatagramEventRegistry datagramEventRegistry = SpringContextUtil.getBean(DatagramEventRegistry.class); List datagramEventConfigList = datagramEventRegistry.getDatagramEventList(ruleId); processorInstance = this.getProcessorInstance(datagramEventConfigList); + SubscribeRegistry subscribeRegistry = SpringContextUtil.getBean(SubscribeRegistry.class); + subscribeConfigs = subscribeRegistry.getSubscribeRegistry(ruleId); } public DatagramEventConfig getProcessorInstance() { @@ -42,7 +48,15 @@ return null; } - // 是否有动态bean,没有去设置的bean,有则取之=>bean不为空,进行解密操作,否则返回原文 + /** + * todo: 报文解密 + * 1、否有动态bean,没有去设置的bean,有则取之 + * 2、bean不为空,进行解密操作,否则返回原文 + * + * @param bizDataContent + * @param fieldConfigMap + * @return + */ public ByteBuf getSafeDatagram(ByteBuf bizDataContent, Map fieldConfigMap) { String safeName = StringUtils.isEmpty(processorInstance.getSafeFieldId()) ? processorInstance.getSafeBean() : @@ -58,25 +72,32 @@ /** + * todo: 报文加密 + *

* 如果进行过解密操作,那么回复自动判定密文需要加密并按照同样的加密的方式进行回复 */ public ByteBuf buildSafeDatagram(ByteBuf replyBytes, Map fieldConfigMap) { String safeName = StringUtils.isEmpty(processorInstance.getSafeFieldId()) ? processorInstance.getSafeBean() : fieldConfigMap.get(processorInstance.getSafeFieldId()).getFieldName(); - ByteBuf ciphertextBuf = null; + ByteBuf cipherByteBuf = null; if (!StringUtils.isEmpty(safeName)) { fillFrameStructZero(replyBytes); //需要加密 SafeStrategy safeStrategy = SpringContextUtil.getBean(safeName); //加密密文 - ciphertextBuf = safeStrategy.encryption(ByteBufUtil.hexDump(replyBytes)); - return ciphertextBuf; + cipherByteBuf = safeStrategy.encryption(ByteBufUtil.hexDump(replyBytes)); + return cipherByteBuf; } - return ciphertextBuf; + return cipherByteBuf; } - //解密清零操作 + /** + * todo:解密清零操作 + * + * @param plainBuf + * @return + */ private ByteBuf clearComplementZero(ByteBuf plainBuf) { Integer plainLength = ByteBufUtil.hexDump(plainBuf).length() / 2; while (plainBuf.getByte(plainLength) == (byte) 0x00) { @@ -86,7 +107,9 @@ return plainBuf; } - //加密补零操作 + /** + * todo: 加密补零操作 + */ private ByteBuf fillFrameStructZero(ByteBuf replyBytes) { while (ByteBufUtil.hexDump(replyBytes).length() % 32 == 0) { replyBytes.writeInt(0); @@ -95,10 +118,18 @@ } - //数据发送,数据发送者暂未构建 + /** + * todo: 数据订阅 + */ public void storeData(List> bizDataMap) { DataSubscribeProvider dataSubscribeProvider = SpringContextUtil.getBean(processorInstance.getSubscribeBean()); -// dataSubscribeProvider.dataSenderSubscribe(bizDataMap, protocolId); + subscribeConfigs.forEach( + subscribeConfig -> { + subscribeConfig.getSubscribeDetailConfigs().forEach( + subscribeDetailConfig -> dataSubscribeProvider.publishDataSubscribe(bizDataMap, subscribeDetailConfig) + ); + } + ); } /** diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/ProtocolFieldConfigProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/ProtocolFieldConfigProvider.java index 8e7f561..db0ad83 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/ProtocolFieldConfigProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/ProtocolFieldConfigProvider.java @@ -42,7 +42,7 @@ } /** - * 初始化获取对应协议的配置字段列表 + * todo:初始化获取对应协议的配置字段列表 * * @param protocolId */ @@ -63,7 +63,7 @@ } /** - * 通过协议字段id和协议报文获取该配置实例化内容的值 + * todo:通过协议字段id和协议报文获取该配置实例化内容的值 * * @param protocolFieldId * @param byteBuf @@ -108,7 +108,7 @@ } /** - * 获取帧固定位置字段配置信息 + * todo:获取帧固定位置字段配置信息 * * @param byteBuf * @param protocolConfig @@ -135,7 +135,7 @@ /** - * 获取帧固定位置字段配置信息 + * todo:获取帧固定位置字段配置信息 * * @param byteBuf * @param protocolConfig @@ -160,7 +160,7 @@ } /** - * 获取过滤字段的长度 + * todo:获取过滤字段的长度 */ public Integer getTotalFilterLength(ProtocolConfig protocolConfig) { if (showSkip()) { @@ -179,7 +179,7 @@ /** - * 获取帧结构应有的总长度 + * todo:获取帧结构应有的总长度 */ public Integer getTotalLength(ByteBuf byteBuf, ProtocolConfig protocolConfig) { if (showSkip()) { @@ -205,7 +205,7 @@ } /** - * 获取协议有关字段解析内容 + * todo:获取协议有关字段解析内容 * storeObjectMap存储代转存的数据 * * @return @@ -228,7 +228,7 @@ } /** - * 获取业务报文内容的content字节 + * todo:获取业务报文内容的content字节 * * @param wholeDatagramByte * @return @@ -252,7 +252,7 @@ } /** - * 对解密的内容进行尾部清零操作 + * todo:对解密的内容进行尾部清零操作 *

* 根据解析后的业务内容,通过存储的帧结构,创建完整完整的数据报文, * 这里对帧结构的可变报文没有处理,只是简单的组装,保证提前解密,为帧结构检验做准备 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/RuleConfigProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/RuleConfigProvider.java index 1cb5514..7872a3c 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/RuleConfigProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/RuleConfigProvider.java @@ -24,10 +24,10 @@ } public RuleConfig getSendRuleConfig() { - Optional optionalRuleConfig=ruleConfigs.stream().filter( + Optional optionalRuleConfig = ruleConfigs.stream().filter( ruleConfig -> ruleConfig.getScene() != null && ruleConfig.getScene().equals("1")).findFirst(); - return optionalRuleConfig.isPresent()?optionalRuleConfig.get():null; + return optionalRuleConfig.isPresent() ? optionalRuleConfig.get() : null; } public RuleConfigProvider(Long protocolId) { @@ -36,7 +36,7 @@ } /** - * 获取规则匹配结果 + * todo: 获取规则匹配结果 * * @param parseFixedDataMap * @param protocolFieldConfigs diff --git a/sensorhub-support/src/main/java/com/casic/missiles/mapper/SubscribeConfigMapper.java b/sensorhub-support/src/main/java/com/casic/missiles/mapper/SubscribeConfigMapper.java new file mode 100644 index 0000000..31b0bdd --- /dev/null +++ b/sensorhub-support/src/main/java/com/casic/missiles/mapper/SubscribeConfigMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.pojo.SubscribeConfig; +import org.apache.ibatis.annotations.Mapper; + +/** + * @author cz + * + */ +@Mapper +public interface SubscribeConfigMapper extends BaseMapper { + + + +} diff --git a/sensorhub-support/src/main/java/com/casic/missiles/mapper/SubscribeDetailConfigMapper.java b/sensorhub-support/src/main/java/com/casic/missiles/mapper/SubscribeDetailConfigMapper.java new file mode 100644 index 0000000..0bfe7c9 --- /dev/null +++ b/sensorhub-support/src/main/java/com/casic/missiles/mapper/SubscribeDetailConfigMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.pojo.SubscribeDetailConfig; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + * @author cz + * + */ + +@Mapper +public interface SubscribeDetailConfigMapper extends BaseMapper { + + + + + +} diff --git a/sensorhub-support/src/main/java/com/casic/missiles/pojo/SenderConfig.java b/sensorhub-support/src/main/java/com/casic/missiles/pojo/SenderConfig.java deleted file mode 100644 index 09bcc06..0000000 --- a/sensorhub-support/src/main/java/com/casic/missiles/pojo/SenderConfig.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.casic.missiles.pojo; - -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; - -import java.util.Date; - -@TableName("sender_config") -@Data -public class SenderConfig { - - private Long id; - private String protocolId; - private String storageIds; - private String ruleId; - private String sendType; - private String remark; - private String ownerId; - private Date createTime; - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java index d7032ad..a7f8157 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java @@ -92,7 +92,7 @@ //根据解析内容,判断回复指令,构建解析返回内容 result = ReplyCommandPostProcessing.invoke(bizDataMap, ruleConfigFactory, protocolFactory); //数据发送,异步 -// datagramEventProvider.storeData(bizDataMap); + datagramEventProvider.storeData(bizDataMap); } catch (RuntimeException rex) { log.error("解析出现异常,异常信息为{}", rex); byteBuf.resetReaderIndex(); diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java index 2a4ef5d..4813901 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java @@ -1,9 +1,12 @@ package com.casic.missiles.parser.sender; +import com.casic.missiles.pojo.SubscribeDetailConfig; + +import java.util.List; import java.util.Map; public interface DataSubscribeProvider { - void dataSenderSubscribe(Map bizDataMap, String protocolId); + void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig); } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java index bd1516a..cd3cf28 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java @@ -2,6 +2,7 @@ import com.alibaba.fastjson.JSONObject; import com.casic.missiles.parser.sender.DataSubscribeProvider; +import com.casic.missiles.pojo.SubscribeDetailConfig; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; import org.springframework.web.client.RestTemplate; @@ -10,6 +11,7 @@ import javax.annotation.Resource; import java.util.Collections; +import java.util.List; import java.util.Map; @Component("functionCallback") @@ -19,7 +21,7 @@ private RestTemplate restTemplate; @Override - public void dataSenderSubscribe(Map bizDataMap, String protocolId){ + public void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig) { UriComponents uriComponents = UriComponentsBuilder.fromHttpUrl("127.0.0.1:8080"). path("/test").build(true); @@ -30,7 +32,7 @@ JSONObject param = new JSONObject(); //restTemplate 会根据 params 的具体类型,调用合适的 HttpMessageConvert 将请求参数写到请求体 body 中,并在请求头中添加合适的 content-type; // 也会根据 responseType 的类型(本列子中是 JSONObject),设置 head 中的 accept 字段,当响应返回的时候再调用合适的 HttpMessageConvert 进行响应转换 - ResponseEntity responseEntity=restTemplate.postForEntity(url,bizDataMap,JSONObject.class); + ResponseEntity responseEntity = restTemplate.postForEntity(url, bizDataMap, JSONObject.class); System.out.println(JSONObject.toJSON(responseEntity)); } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java index 7526de2..66f144b 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java @@ -1,18 +1,18 @@ package com.casic.missiles.parser.sender.impl; import com.casic.missiles.parser.sender.DataSubscribeProvider; +import com.casic.missiles.pojo.SubscribeDetailConfig; import org.springframework.stereotype.Component; +import java.util.List; import java.util.Map; @Component("middleware") public class MiddlewareSubscribe implements DataSubscribeProvider { - @Override - public void dataSenderSubscribe(Map bizDataMap, String protocolId){ - + public void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig) { } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java index e2f1192..471f7a7 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java @@ -1,15 +1,17 @@ package com.casic.missiles.parser.sender.impl; import com.casic.missiles.parser.sender.DataSubscribeProvider; +import com.casic.missiles.pojo.SubscribeDetailConfig; import org.springframework.stereotype.Component; +import java.util.List; import java.util.Map; -@Component("nosql") -public class NoSqlSubscribe implements DataSubscribeProvider { +@Component("dataStore") +public class NoSqlSubscribe implements DataSubscribeProvider { @Override - public void dataSenderSubscribe(Map bizDataMap, String protocolId){ + public void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig) { } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java index 0b7ddf1..c9f5417 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java @@ -36,13 +36,13 @@ /** - * 解析数据字段 + * todo: 解析数据字段 * * @param ruleConfig * @param byteBuf * @param fieldConfigsMap */ - public void parseDataField(RuleConfig ruleConfig, ByteBuf byteBuf, Map fieldConfigsMap,FieldRuleConfigProvider fieldRuleConfigProvider) { + public void parseDataField(RuleConfig ruleConfig, ByteBuf byteBuf, Map fieldConfigsMap, FieldRuleConfigProvider fieldRuleConfigProvider) { if (showSkip() || StringUtils.isEmpty(ruleConfig.getCombinedFieldIds())) { return; } @@ -53,7 +53,8 @@ } /** - * 准备,过滤字段列表,选取所需的值 + * todo:查询规则对应的组合配合 + * 准备,过滤字段列表,选取所需的值 * * @param ruleConfig * @return diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/CommandEventProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/CommandEventProvider.java deleted file mode 100644 index 7155894..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/CommandEventProvider.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.casic.missiles.provider; - -/** - * @author cz - * @date 2023-6-12 - */ -public class CommandEventProvider{ - - - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/FieldConfigProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/FieldConfigProvider.java index 96f3d52..457676c 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/FieldConfigProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/FieldConfigProvider.java @@ -41,6 +41,13 @@ return storeObjectMap; } + /** + * todo:解析数据字段 + * + * @param ruleConfig + * @param byteBuf + * @return + */ public Map parseDataField(RuleConfig ruleConfig, ByteBuf byteBuf) { if (showSkip()) { return null; @@ -59,6 +66,8 @@ } /** + * todo: 根据规则查询业务字段 + * * 得到需要处理的业务内容 * * @return diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/ProcessorInstanceProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/ProcessorInstanceProvider.java index a33c74c..0f3d9d9 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/ProcessorInstanceProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/ProcessorInstanceProvider.java @@ -7,7 +7,10 @@ import com.casic.missiles.parser.sender.DataSubscribeProvider; import com.casic.missiles.pojo.DatagramEventConfig; import com.casic.missiles.pojo.FieldConfig; +import com.casic.missiles.pojo.SubscribeConfig; +import com.casic.missiles.pojo.SubscribeDetailConfig; import com.casic.missiles.registry.DatagramEventRegistry; +import com.casic.missiles.registry.SubscribeRegistry; import com.casic.missiles.util.SpringContextUtil; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufUtil; @@ -23,12 +26,15 @@ public class ProcessorInstanceProvider { private final DatagramEventConfig processorInstance; + private final List subscribeConfigs; public ProcessorInstanceProvider(Long ruleId) { DatagramEventRegistry datagramEventRegistry = SpringContextUtil.getBean(DatagramEventRegistry.class); List datagramEventConfigList = datagramEventRegistry.getDatagramEventList(ruleId); processorInstance = this.getProcessorInstance(datagramEventConfigList); + SubscribeRegistry subscribeRegistry = SpringContextUtil.getBean(SubscribeRegistry.class); + subscribeConfigs = subscribeRegistry.getSubscribeRegistry(ruleId); } public DatagramEventConfig getProcessorInstance() { @@ -42,7 +48,15 @@ return null; } - // 是否有动态bean,没有去设置的bean,有则取之=>bean不为空,进行解密操作,否则返回原文 + /** + * todo: 报文解密 + * 1、否有动态bean,没有去设置的bean,有则取之 + * 2、bean不为空,进行解密操作,否则返回原文 + * + * @param bizDataContent + * @param fieldConfigMap + * @return + */ public ByteBuf getSafeDatagram(ByteBuf bizDataContent, Map fieldConfigMap) { String safeName = StringUtils.isEmpty(processorInstance.getSafeFieldId()) ? processorInstance.getSafeBean() : @@ -58,25 +72,32 @@ /** + * todo: 报文加密 + *

* 如果进行过解密操作,那么回复自动判定密文需要加密并按照同样的加密的方式进行回复 */ public ByteBuf buildSafeDatagram(ByteBuf replyBytes, Map fieldConfigMap) { String safeName = StringUtils.isEmpty(processorInstance.getSafeFieldId()) ? processorInstance.getSafeBean() : fieldConfigMap.get(processorInstance.getSafeFieldId()).getFieldName(); - ByteBuf ciphertextBuf = null; + ByteBuf cipherByteBuf = null; if (!StringUtils.isEmpty(safeName)) { fillFrameStructZero(replyBytes); //需要加密 SafeStrategy safeStrategy = SpringContextUtil.getBean(safeName); //加密密文 - ciphertextBuf = safeStrategy.encryption(ByteBufUtil.hexDump(replyBytes)); - return ciphertextBuf; + cipherByteBuf = safeStrategy.encryption(ByteBufUtil.hexDump(replyBytes)); + return cipherByteBuf; } - return ciphertextBuf; + return cipherByteBuf; } - //解密清零操作 + /** + * todo:解密清零操作 + * + * @param plainBuf + * @return + */ private ByteBuf clearComplementZero(ByteBuf plainBuf) { Integer plainLength = ByteBufUtil.hexDump(plainBuf).length() / 2; while (plainBuf.getByte(plainLength) == (byte) 0x00) { @@ -86,7 +107,9 @@ return plainBuf; } - //加密补零操作 + /** + * todo: 加密补零操作 + */ private ByteBuf fillFrameStructZero(ByteBuf replyBytes) { while (ByteBufUtil.hexDump(replyBytes).length() % 32 == 0) { replyBytes.writeInt(0); @@ -95,10 +118,18 @@ } - //数据发送,数据发送者暂未构建 + /** + * todo: 数据订阅 + */ public void storeData(List> bizDataMap) { DataSubscribeProvider dataSubscribeProvider = SpringContextUtil.getBean(processorInstance.getSubscribeBean()); -// dataSubscribeProvider.dataSenderSubscribe(bizDataMap, protocolId); + subscribeConfigs.forEach( + subscribeConfig -> { + subscribeConfig.getSubscribeDetailConfigs().forEach( + subscribeDetailConfig -> dataSubscribeProvider.publishDataSubscribe(bizDataMap, subscribeDetailConfig) + ); + } + ); } /** diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/ProtocolFieldConfigProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/ProtocolFieldConfigProvider.java index 8e7f561..db0ad83 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/ProtocolFieldConfigProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/ProtocolFieldConfigProvider.java @@ -42,7 +42,7 @@ } /** - * 初始化获取对应协议的配置字段列表 + * todo:初始化获取对应协议的配置字段列表 * * @param protocolId */ @@ -63,7 +63,7 @@ } /** - * 通过协议字段id和协议报文获取该配置实例化内容的值 + * todo:通过协议字段id和协议报文获取该配置实例化内容的值 * * @param protocolFieldId * @param byteBuf @@ -108,7 +108,7 @@ } /** - * 获取帧固定位置字段配置信息 + * todo:获取帧固定位置字段配置信息 * * @param byteBuf * @param protocolConfig @@ -135,7 +135,7 @@ /** - * 获取帧固定位置字段配置信息 + * todo:获取帧固定位置字段配置信息 * * @param byteBuf * @param protocolConfig @@ -160,7 +160,7 @@ } /** - * 获取过滤字段的长度 + * todo:获取过滤字段的长度 */ public Integer getTotalFilterLength(ProtocolConfig protocolConfig) { if (showSkip()) { @@ -179,7 +179,7 @@ /** - * 获取帧结构应有的总长度 + * todo:获取帧结构应有的总长度 */ public Integer getTotalLength(ByteBuf byteBuf, ProtocolConfig protocolConfig) { if (showSkip()) { @@ -205,7 +205,7 @@ } /** - * 获取协议有关字段解析内容 + * todo:获取协议有关字段解析内容 * storeObjectMap存储代转存的数据 * * @return @@ -228,7 +228,7 @@ } /** - * 获取业务报文内容的content字节 + * todo:获取业务报文内容的content字节 * * @param wholeDatagramByte * @return @@ -252,7 +252,7 @@ } /** - * 对解密的内容进行尾部清零操作 + * todo:对解密的内容进行尾部清零操作 *

* 根据解析后的业务内容,通过存储的帧结构,创建完整完整的数据报文, * 这里对帧结构的可变报文没有处理,只是简单的组装,保证提前解密,为帧结构检验做准备 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/RuleConfigProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/RuleConfigProvider.java index 1cb5514..7872a3c 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/RuleConfigProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/RuleConfigProvider.java @@ -24,10 +24,10 @@ } public RuleConfig getSendRuleConfig() { - Optional optionalRuleConfig=ruleConfigs.stream().filter( + Optional optionalRuleConfig = ruleConfigs.stream().filter( ruleConfig -> ruleConfig.getScene() != null && ruleConfig.getScene().equals("1")).findFirst(); - return optionalRuleConfig.isPresent()?optionalRuleConfig.get():null; + return optionalRuleConfig.isPresent() ? optionalRuleConfig.get() : null; } public RuleConfigProvider(Long protocolId) { @@ -36,7 +36,7 @@ } /** - * 获取规则匹配结果 + * todo: 获取规则匹配结果 * * @param parseFixedDataMap * @param protocolFieldConfigs diff --git a/sensorhub-support/src/main/java/com/casic/missiles/mapper/SubscribeConfigMapper.java b/sensorhub-support/src/main/java/com/casic/missiles/mapper/SubscribeConfigMapper.java new file mode 100644 index 0000000..31b0bdd --- /dev/null +++ b/sensorhub-support/src/main/java/com/casic/missiles/mapper/SubscribeConfigMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.pojo.SubscribeConfig; +import org.apache.ibatis.annotations.Mapper; + +/** + * @author cz + * + */ +@Mapper +public interface SubscribeConfigMapper extends BaseMapper { + + + +} diff --git a/sensorhub-support/src/main/java/com/casic/missiles/mapper/SubscribeDetailConfigMapper.java b/sensorhub-support/src/main/java/com/casic/missiles/mapper/SubscribeDetailConfigMapper.java new file mode 100644 index 0000000..0bfe7c9 --- /dev/null +++ b/sensorhub-support/src/main/java/com/casic/missiles/mapper/SubscribeDetailConfigMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.pojo.SubscribeDetailConfig; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + * @author cz + * + */ + +@Mapper +public interface SubscribeDetailConfigMapper extends BaseMapper { + + + + + +} diff --git a/sensorhub-support/src/main/java/com/casic/missiles/pojo/SenderConfig.java b/sensorhub-support/src/main/java/com/casic/missiles/pojo/SenderConfig.java deleted file mode 100644 index 09bcc06..0000000 --- a/sensorhub-support/src/main/java/com/casic/missiles/pojo/SenderConfig.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.casic.missiles.pojo; - -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; - -import java.util.Date; - -@TableName("sender_config") -@Data -public class SenderConfig { - - private Long id; - private String protocolId; - private String storageIds; - private String ruleId; - private String sendType; - private String remark; - private String ownerId; - private Date createTime; - -} diff --git a/sensorhub-support/src/main/java/com/casic/missiles/pojo/SenderDetailConfig.java b/sensorhub-support/src/main/java/com/casic/missiles/pojo/SenderDetailConfig.java deleted file mode 100644 index 3c4a986..0000000 --- a/sensorhub-support/src/main/java/com/casic/missiles/pojo/SenderDetailConfig.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.casic.missiles.pojo; - -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; - -import java.util.Date; - -@Data -@TableName("sender_detail_config") -public class SenderDetailConfig { - - private Long id; - private String senderType; - private String userName; - private String password; - private String address; - private String appKey; - private String appSecret; - private String remark; - private Date createTime; - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java index d7032ad..a7f8157 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java @@ -92,7 +92,7 @@ //根据解析内容,判断回复指令,构建解析返回内容 result = ReplyCommandPostProcessing.invoke(bizDataMap, ruleConfigFactory, protocolFactory); //数据发送,异步 -// datagramEventProvider.storeData(bizDataMap); + datagramEventProvider.storeData(bizDataMap); } catch (RuntimeException rex) { log.error("解析出现异常,异常信息为{}", rex); byteBuf.resetReaderIndex(); diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java index 2a4ef5d..4813901 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java @@ -1,9 +1,12 @@ package com.casic.missiles.parser.sender; +import com.casic.missiles.pojo.SubscribeDetailConfig; + +import java.util.List; import java.util.Map; public interface DataSubscribeProvider { - void dataSenderSubscribe(Map bizDataMap, String protocolId); + void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig); } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java index bd1516a..cd3cf28 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java @@ -2,6 +2,7 @@ import com.alibaba.fastjson.JSONObject; import com.casic.missiles.parser.sender.DataSubscribeProvider; +import com.casic.missiles.pojo.SubscribeDetailConfig; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; import org.springframework.web.client.RestTemplate; @@ -10,6 +11,7 @@ import javax.annotation.Resource; import java.util.Collections; +import java.util.List; import java.util.Map; @Component("functionCallback") @@ -19,7 +21,7 @@ private RestTemplate restTemplate; @Override - public void dataSenderSubscribe(Map bizDataMap, String protocolId){ + public void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig) { UriComponents uriComponents = UriComponentsBuilder.fromHttpUrl("127.0.0.1:8080"). path("/test").build(true); @@ -30,7 +32,7 @@ JSONObject param = new JSONObject(); //restTemplate 会根据 params 的具体类型,调用合适的 HttpMessageConvert 将请求参数写到请求体 body 中,并在请求头中添加合适的 content-type; // 也会根据 responseType 的类型(本列子中是 JSONObject),设置 head 中的 accept 字段,当响应返回的时候再调用合适的 HttpMessageConvert 进行响应转换 - ResponseEntity responseEntity=restTemplate.postForEntity(url,bizDataMap,JSONObject.class); + ResponseEntity responseEntity = restTemplate.postForEntity(url, bizDataMap, JSONObject.class); System.out.println(JSONObject.toJSON(responseEntity)); } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java index 7526de2..66f144b 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java @@ -1,18 +1,18 @@ package com.casic.missiles.parser.sender.impl; import com.casic.missiles.parser.sender.DataSubscribeProvider; +import com.casic.missiles.pojo.SubscribeDetailConfig; import org.springframework.stereotype.Component; +import java.util.List; import java.util.Map; @Component("middleware") public class MiddlewareSubscribe implements DataSubscribeProvider { - @Override - public void dataSenderSubscribe(Map bizDataMap, String protocolId){ - + public void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig) { } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java index e2f1192..471f7a7 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java @@ -1,15 +1,17 @@ package com.casic.missiles.parser.sender.impl; import com.casic.missiles.parser.sender.DataSubscribeProvider; +import com.casic.missiles.pojo.SubscribeDetailConfig; import org.springframework.stereotype.Component; +import java.util.List; import java.util.Map; -@Component("nosql") -public class NoSqlSubscribe implements DataSubscribeProvider { +@Component("dataStore") +public class NoSqlSubscribe implements DataSubscribeProvider { @Override - public void dataSenderSubscribe(Map bizDataMap, String protocolId){ + public void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig) { } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java index 0b7ddf1..c9f5417 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java @@ -36,13 +36,13 @@ /** - * 解析数据字段 + * todo: 解析数据字段 * * @param ruleConfig * @param byteBuf * @param fieldConfigsMap */ - public void parseDataField(RuleConfig ruleConfig, ByteBuf byteBuf, Map fieldConfigsMap,FieldRuleConfigProvider fieldRuleConfigProvider) { + public void parseDataField(RuleConfig ruleConfig, ByteBuf byteBuf, Map fieldConfigsMap, FieldRuleConfigProvider fieldRuleConfigProvider) { if (showSkip() || StringUtils.isEmpty(ruleConfig.getCombinedFieldIds())) { return; } @@ -53,7 +53,8 @@ } /** - * 准备,过滤字段列表,选取所需的值 + * todo:查询规则对应的组合配合 + * 准备,过滤字段列表,选取所需的值 * * @param ruleConfig * @return diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/CommandEventProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/CommandEventProvider.java deleted file mode 100644 index 7155894..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/CommandEventProvider.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.casic.missiles.provider; - -/** - * @author cz - * @date 2023-6-12 - */ -public class CommandEventProvider{ - - - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/FieldConfigProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/FieldConfigProvider.java index 96f3d52..457676c 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/FieldConfigProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/FieldConfigProvider.java @@ -41,6 +41,13 @@ return storeObjectMap; } + /** + * todo:解析数据字段 + * + * @param ruleConfig + * @param byteBuf + * @return + */ public Map parseDataField(RuleConfig ruleConfig, ByteBuf byteBuf) { if (showSkip()) { return null; @@ -59,6 +66,8 @@ } /** + * todo: 根据规则查询业务字段 + * * 得到需要处理的业务内容 * * @return diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/ProcessorInstanceProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/ProcessorInstanceProvider.java index a33c74c..0f3d9d9 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/ProcessorInstanceProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/ProcessorInstanceProvider.java @@ -7,7 +7,10 @@ import com.casic.missiles.parser.sender.DataSubscribeProvider; import com.casic.missiles.pojo.DatagramEventConfig; import com.casic.missiles.pojo.FieldConfig; +import com.casic.missiles.pojo.SubscribeConfig; +import com.casic.missiles.pojo.SubscribeDetailConfig; import com.casic.missiles.registry.DatagramEventRegistry; +import com.casic.missiles.registry.SubscribeRegistry; import com.casic.missiles.util.SpringContextUtil; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufUtil; @@ -23,12 +26,15 @@ public class ProcessorInstanceProvider { private final DatagramEventConfig processorInstance; + private final List subscribeConfigs; public ProcessorInstanceProvider(Long ruleId) { DatagramEventRegistry datagramEventRegistry = SpringContextUtil.getBean(DatagramEventRegistry.class); List datagramEventConfigList = datagramEventRegistry.getDatagramEventList(ruleId); processorInstance = this.getProcessorInstance(datagramEventConfigList); + SubscribeRegistry subscribeRegistry = SpringContextUtil.getBean(SubscribeRegistry.class); + subscribeConfigs = subscribeRegistry.getSubscribeRegistry(ruleId); } public DatagramEventConfig getProcessorInstance() { @@ -42,7 +48,15 @@ return null; } - // 是否有动态bean,没有去设置的bean,有则取之=>bean不为空,进行解密操作,否则返回原文 + /** + * todo: 报文解密 + * 1、否有动态bean,没有去设置的bean,有则取之 + * 2、bean不为空,进行解密操作,否则返回原文 + * + * @param bizDataContent + * @param fieldConfigMap + * @return + */ public ByteBuf getSafeDatagram(ByteBuf bizDataContent, Map fieldConfigMap) { String safeName = StringUtils.isEmpty(processorInstance.getSafeFieldId()) ? processorInstance.getSafeBean() : @@ -58,25 +72,32 @@ /** + * todo: 报文加密 + *

* 如果进行过解密操作,那么回复自动判定密文需要加密并按照同样的加密的方式进行回复 */ public ByteBuf buildSafeDatagram(ByteBuf replyBytes, Map fieldConfigMap) { String safeName = StringUtils.isEmpty(processorInstance.getSafeFieldId()) ? processorInstance.getSafeBean() : fieldConfigMap.get(processorInstance.getSafeFieldId()).getFieldName(); - ByteBuf ciphertextBuf = null; + ByteBuf cipherByteBuf = null; if (!StringUtils.isEmpty(safeName)) { fillFrameStructZero(replyBytes); //需要加密 SafeStrategy safeStrategy = SpringContextUtil.getBean(safeName); //加密密文 - ciphertextBuf = safeStrategy.encryption(ByteBufUtil.hexDump(replyBytes)); - return ciphertextBuf; + cipherByteBuf = safeStrategy.encryption(ByteBufUtil.hexDump(replyBytes)); + return cipherByteBuf; } - return ciphertextBuf; + return cipherByteBuf; } - //解密清零操作 + /** + * todo:解密清零操作 + * + * @param plainBuf + * @return + */ private ByteBuf clearComplementZero(ByteBuf plainBuf) { Integer plainLength = ByteBufUtil.hexDump(plainBuf).length() / 2; while (plainBuf.getByte(plainLength) == (byte) 0x00) { @@ -86,7 +107,9 @@ return plainBuf; } - //加密补零操作 + /** + * todo: 加密补零操作 + */ private ByteBuf fillFrameStructZero(ByteBuf replyBytes) { while (ByteBufUtil.hexDump(replyBytes).length() % 32 == 0) { replyBytes.writeInt(0); @@ -95,10 +118,18 @@ } - //数据发送,数据发送者暂未构建 + /** + * todo: 数据订阅 + */ public void storeData(List> bizDataMap) { DataSubscribeProvider dataSubscribeProvider = SpringContextUtil.getBean(processorInstance.getSubscribeBean()); -// dataSubscribeProvider.dataSenderSubscribe(bizDataMap, protocolId); + subscribeConfigs.forEach( + subscribeConfig -> { + subscribeConfig.getSubscribeDetailConfigs().forEach( + subscribeDetailConfig -> dataSubscribeProvider.publishDataSubscribe(bizDataMap, subscribeDetailConfig) + ); + } + ); } /** diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/ProtocolFieldConfigProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/ProtocolFieldConfigProvider.java index 8e7f561..db0ad83 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/ProtocolFieldConfigProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/ProtocolFieldConfigProvider.java @@ -42,7 +42,7 @@ } /** - * 初始化获取对应协议的配置字段列表 + * todo:初始化获取对应协议的配置字段列表 * * @param protocolId */ @@ -63,7 +63,7 @@ } /** - * 通过协议字段id和协议报文获取该配置实例化内容的值 + * todo:通过协议字段id和协议报文获取该配置实例化内容的值 * * @param protocolFieldId * @param byteBuf @@ -108,7 +108,7 @@ } /** - * 获取帧固定位置字段配置信息 + * todo:获取帧固定位置字段配置信息 * * @param byteBuf * @param protocolConfig @@ -135,7 +135,7 @@ /** - * 获取帧固定位置字段配置信息 + * todo:获取帧固定位置字段配置信息 * * @param byteBuf * @param protocolConfig @@ -160,7 +160,7 @@ } /** - * 获取过滤字段的长度 + * todo:获取过滤字段的长度 */ public Integer getTotalFilterLength(ProtocolConfig protocolConfig) { if (showSkip()) { @@ -179,7 +179,7 @@ /** - * 获取帧结构应有的总长度 + * todo:获取帧结构应有的总长度 */ public Integer getTotalLength(ByteBuf byteBuf, ProtocolConfig protocolConfig) { if (showSkip()) { @@ -205,7 +205,7 @@ } /** - * 获取协议有关字段解析内容 + * todo:获取协议有关字段解析内容 * storeObjectMap存储代转存的数据 * * @return @@ -228,7 +228,7 @@ } /** - * 获取业务报文内容的content字节 + * todo:获取业务报文内容的content字节 * * @param wholeDatagramByte * @return @@ -252,7 +252,7 @@ } /** - * 对解密的内容进行尾部清零操作 + * todo:对解密的内容进行尾部清零操作 *

* 根据解析后的业务内容,通过存储的帧结构,创建完整完整的数据报文, * 这里对帧结构的可变报文没有处理,只是简单的组装,保证提前解密,为帧结构检验做准备 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/RuleConfigProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/RuleConfigProvider.java index 1cb5514..7872a3c 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/RuleConfigProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/RuleConfigProvider.java @@ -24,10 +24,10 @@ } public RuleConfig getSendRuleConfig() { - Optional optionalRuleConfig=ruleConfigs.stream().filter( + Optional optionalRuleConfig = ruleConfigs.stream().filter( ruleConfig -> ruleConfig.getScene() != null && ruleConfig.getScene().equals("1")).findFirst(); - return optionalRuleConfig.isPresent()?optionalRuleConfig.get():null; + return optionalRuleConfig.isPresent() ? optionalRuleConfig.get() : null; } public RuleConfigProvider(Long protocolId) { @@ -36,7 +36,7 @@ } /** - * 获取规则匹配结果 + * todo: 获取规则匹配结果 * * @param parseFixedDataMap * @param protocolFieldConfigs diff --git a/sensorhub-support/src/main/java/com/casic/missiles/mapper/SubscribeConfigMapper.java b/sensorhub-support/src/main/java/com/casic/missiles/mapper/SubscribeConfigMapper.java new file mode 100644 index 0000000..31b0bdd --- /dev/null +++ b/sensorhub-support/src/main/java/com/casic/missiles/mapper/SubscribeConfigMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.pojo.SubscribeConfig; +import org.apache.ibatis.annotations.Mapper; + +/** + * @author cz + * + */ +@Mapper +public interface SubscribeConfigMapper extends BaseMapper { + + + +} diff --git a/sensorhub-support/src/main/java/com/casic/missiles/mapper/SubscribeDetailConfigMapper.java b/sensorhub-support/src/main/java/com/casic/missiles/mapper/SubscribeDetailConfigMapper.java new file mode 100644 index 0000000..0bfe7c9 --- /dev/null +++ b/sensorhub-support/src/main/java/com/casic/missiles/mapper/SubscribeDetailConfigMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.pojo.SubscribeDetailConfig; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + * @author cz + * + */ + +@Mapper +public interface SubscribeDetailConfigMapper extends BaseMapper { + + + + + +} diff --git a/sensorhub-support/src/main/java/com/casic/missiles/pojo/SenderConfig.java b/sensorhub-support/src/main/java/com/casic/missiles/pojo/SenderConfig.java deleted file mode 100644 index 09bcc06..0000000 --- a/sensorhub-support/src/main/java/com/casic/missiles/pojo/SenderConfig.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.casic.missiles.pojo; - -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; - -import java.util.Date; - -@TableName("sender_config") -@Data -public class SenderConfig { - - private Long id; - private String protocolId; - private String storageIds; - private String ruleId; - private String sendType; - private String remark; - private String ownerId; - private Date createTime; - -} diff --git a/sensorhub-support/src/main/java/com/casic/missiles/pojo/SenderDetailConfig.java b/sensorhub-support/src/main/java/com/casic/missiles/pojo/SenderDetailConfig.java deleted file mode 100644 index 3c4a986..0000000 --- a/sensorhub-support/src/main/java/com/casic/missiles/pojo/SenderDetailConfig.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.casic.missiles.pojo; - -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; - -import java.util.Date; - -@Data -@TableName("sender_detail_config") -public class SenderDetailConfig { - - private Long id; - private String senderType; - private String userName; - private String password; - private String address; - private String appKey; - private String appSecret; - private String remark; - private Date createTime; - -} diff --git a/sensorhub-support/src/main/java/com/casic/missiles/pojo/SubscribeConfig.java b/sensorhub-support/src/main/java/com/casic/missiles/pojo/SubscribeConfig.java new file mode 100644 index 0000000..bb16cd9 --- /dev/null +++ b/sensorhub-support/src/main/java/com/casic/missiles/pojo/SubscribeConfig.java @@ -0,0 +1,29 @@ +package com.casic.missiles.pojo; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +/** + * @author cz + */ +@TableName("subscribe_config") +@Data +public class SubscribeConfig { + + private Long id; + private String protocolId; + private String ruleId; + private String topic; + private String sendType; + private String remark; + private String ownerId; + private Date createTime; + + @TableField(exist = false) + private List subscribeDetailConfigs; + +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java index d7032ad..a7f8157 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java @@ -92,7 +92,7 @@ //根据解析内容,判断回复指令,构建解析返回内容 result = ReplyCommandPostProcessing.invoke(bizDataMap, ruleConfigFactory, protocolFactory); //数据发送,异步 -// datagramEventProvider.storeData(bizDataMap); + datagramEventProvider.storeData(bizDataMap); } catch (RuntimeException rex) { log.error("解析出现异常,异常信息为{}", rex); byteBuf.resetReaderIndex(); diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java index 2a4ef5d..4813901 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java @@ -1,9 +1,12 @@ package com.casic.missiles.parser.sender; +import com.casic.missiles.pojo.SubscribeDetailConfig; + +import java.util.List; import java.util.Map; public interface DataSubscribeProvider { - void dataSenderSubscribe(Map bizDataMap, String protocolId); + void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig); } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java index bd1516a..cd3cf28 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java @@ -2,6 +2,7 @@ import com.alibaba.fastjson.JSONObject; import com.casic.missiles.parser.sender.DataSubscribeProvider; +import com.casic.missiles.pojo.SubscribeDetailConfig; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; import org.springframework.web.client.RestTemplate; @@ -10,6 +11,7 @@ import javax.annotation.Resource; import java.util.Collections; +import java.util.List; import java.util.Map; @Component("functionCallback") @@ -19,7 +21,7 @@ private RestTemplate restTemplate; @Override - public void dataSenderSubscribe(Map bizDataMap, String protocolId){ + public void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig) { UriComponents uriComponents = UriComponentsBuilder.fromHttpUrl("127.0.0.1:8080"). path("/test").build(true); @@ -30,7 +32,7 @@ JSONObject param = new JSONObject(); //restTemplate 会根据 params 的具体类型,调用合适的 HttpMessageConvert 将请求参数写到请求体 body 中,并在请求头中添加合适的 content-type; // 也会根据 responseType 的类型(本列子中是 JSONObject),设置 head 中的 accept 字段,当响应返回的时候再调用合适的 HttpMessageConvert 进行响应转换 - ResponseEntity responseEntity=restTemplate.postForEntity(url,bizDataMap,JSONObject.class); + ResponseEntity responseEntity = restTemplate.postForEntity(url, bizDataMap, JSONObject.class); System.out.println(JSONObject.toJSON(responseEntity)); } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java index 7526de2..66f144b 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java @@ -1,18 +1,18 @@ package com.casic.missiles.parser.sender.impl; import com.casic.missiles.parser.sender.DataSubscribeProvider; +import com.casic.missiles.pojo.SubscribeDetailConfig; import org.springframework.stereotype.Component; +import java.util.List; import java.util.Map; @Component("middleware") public class MiddlewareSubscribe implements DataSubscribeProvider { - @Override - public void dataSenderSubscribe(Map bizDataMap, String protocolId){ - + public void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig) { } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java index e2f1192..471f7a7 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java @@ -1,15 +1,17 @@ package com.casic.missiles.parser.sender.impl; import com.casic.missiles.parser.sender.DataSubscribeProvider; +import com.casic.missiles.pojo.SubscribeDetailConfig; import org.springframework.stereotype.Component; +import java.util.List; import java.util.Map; -@Component("nosql") -public class NoSqlSubscribe implements DataSubscribeProvider { +@Component("dataStore") +public class NoSqlSubscribe implements DataSubscribeProvider { @Override - public void dataSenderSubscribe(Map bizDataMap, String protocolId){ + public void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig) { } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java index 0b7ddf1..c9f5417 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java @@ -36,13 +36,13 @@ /** - * 解析数据字段 + * todo: 解析数据字段 * * @param ruleConfig * @param byteBuf * @param fieldConfigsMap */ - public void parseDataField(RuleConfig ruleConfig, ByteBuf byteBuf, Map fieldConfigsMap,FieldRuleConfigProvider fieldRuleConfigProvider) { + public void parseDataField(RuleConfig ruleConfig, ByteBuf byteBuf, Map fieldConfigsMap, FieldRuleConfigProvider fieldRuleConfigProvider) { if (showSkip() || StringUtils.isEmpty(ruleConfig.getCombinedFieldIds())) { return; } @@ -53,7 +53,8 @@ } /** - * 准备,过滤字段列表,选取所需的值 + * todo:查询规则对应的组合配合 + * 准备,过滤字段列表,选取所需的值 * * @param ruleConfig * @return diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/CommandEventProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/CommandEventProvider.java deleted file mode 100644 index 7155894..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/CommandEventProvider.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.casic.missiles.provider; - -/** - * @author cz - * @date 2023-6-12 - */ -public class CommandEventProvider{ - - - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/FieldConfigProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/FieldConfigProvider.java index 96f3d52..457676c 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/FieldConfigProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/FieldConfigProvider.java @@ -41,6 +41,13 @@ return storeObjectMap; } + /** + * todo:解析数据字段 + * + * @param ruleConfig + * @param byteBuf + * @return + */ public Map parseDataField(RuleConfig ruleConfig, ByteBuf byteBuf) { if (showSkip()) { return null; @@ -59,6 +66,8 @@ } /** + * todo: 根据规则查询业务字段 + * * 得到需要处理的业务内容 * * @return diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/ProcessorInstanceProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/ProcessorInstanceProvider.java index a33c74c..0f3d9d9 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/ProcessorInstanceProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/ProcessorInstanceProvider.java @@ -7,7 +7,10 @@ import com.casic.missiles.parser.sender.DataSubscribeProvider; import com.casic.missiles.pojo.DatagramEventConfig; import com.casic.missiles.pojo.FieldConfig; +import com.casic.missiles.pojo.SubscribeConfig; +import com.casic.missiles.pojo.SubscribeDetailConfig; import com.casic.missiles.registry.DatagramEventRegistry; +import com.casic.missiles.registry.SubscribeRegistry; import com.casic.missiles.util.SpringContextUtil; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufUtil; @@ -23,12 +26,15 @@ public class ProcessorInstanceProvider { private final DatagramEventConfig processorInstance; + private final List subscribeConfigs; public ProcessorInstanceProvider(Long ruleId) { DatagramEventRegistry datagramEventRegistry = SpringContextUtil.getBean(DatagramEventRegistry.class); List datagramEventConfigList = datagramEventRegistry.getDatagramEventList(ruleId); processorInstance = this.getProcessorInstance(datagramEventConfigList); + SubscribeRegistry subscribeRegistry = SpringContextUtil.getBean(SubscribeRegistry.class); + subscribeConfigs = subscribeRegistry.getSubscribeRegistry(ruleId); } public DatagramEventConfig getProcessorInstance() { @@ -42,7 +48,15 @@ return null; } - // 是否有动态bean,没有去设置的bean,有则取之=>bean不为空,进行解密操作,否则返回原文 + /** + * todo: 报文解密 + * 1、否有动态bean,没有去设置的bean,有则取之 + * 2、bean不为空,进行解密操作,否则返回原文 + * + * @param bizDataContent + * @param fieldConfigMap + * @return + */ public ByteBuf getSafeDatagram(ByteBuf bizDataContent, Map fieldConfigMap) { String safeName = StringUtils.isEmpty(processorInstance.getSafeFieldId()) ? processorInstance.getSafeBean() : @@ -58,25 +72,32 @@ /** + * todo: 报文加密 + *

* 如果进行过解密操作,那么回复自动判定密文需要加密并按照同样的加密的方式进行回复 */ public ByteBuf buildSafeDatagram(ByteBuf replyBytes, Map fieldConfigMap) { String safeName = StringUtils.isEmpty(processorInstance.getSafeFieldId()) ? processorInstance.getSafeBean() : fieldConfigMap.get(processorInstance.getSafeFieldId()).getFieldName(); - ByteBuf ciphertextBuf = null; + ByteBuf cipherByteBuf = null; if (!StringUtils.isEmpty(safeName)) { fillFrameStructZero(replyBytes); //需要加密 SafeStrategy safeStrategy = SpringContextUtil.getBean(safeName); //加密密文 - ciphertextBuf = safeStrategy.encryption(ByteBufUtil.hexDump(replyBytes)); - return ciphertextBuf; + cipherByteBuf = safeStrategy.encryption(ByteBufUtil.hexDump(replyBytes)); + return cipherByteBuf; } - return ciphertextBuf; + return cipherByteBuf; } - //解密清零操作 + /** + * todo:解密清零操作 + * + * @param plainBuf + * @return + */ private ByteBuf clearComplementZero(ByteBuf plainBuf) { Integer plainLength = ByteBufUtil.hexDump(plainBuf).length() / 2; while (plainBuf.getByte(plainLength) == (byte) 0x00) { @@ -86,7 +107,9 @@ return plainBuf; } - //加密补零操作 + /** + * todo: 加密补零操作 + */ private ByteBuf fillFrameStructZero(ByteBuf replyBytes) { while (ByteBufUtil.hexDump(replyBytes).length() % 32 == 0) { replyBytes.writeInt(0); @@ -95,10 +118,18 @@ } - //数据发送,数据发送者暂未构建 + /** + * todo: 数据订阅 + */ public void storeData(List> bizDataMap) { DataSubscribeProvider dataSubscribeProvider = SpringContextUtil.getBean(processorInstance.getSubscribeBean()); -// dataSubscribeProvider.dataSenderSubscribe(bizDataMap, protocolId); + subscribeConfigs.forEach( + subscribeConfig -> { + subscribeConfig.getSubscribeDetailConfigs().forEach( + subscribeDetailConfig -> dataSubscribeProvider.publishDataSubscribe(bizDataMap, subscribeDetailConfig) + ); + } + ); } /** diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/ProtocolFieldConfigProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/ProtocolFieldConfigProvider.java index 8e7f561..db0ad83 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/ProtocolFieldConfigProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/ProtocolFieldConfigProvider.java @@ -42,7 +42,7 @@ } /** - * 初始化获取对应协议的配置字段列表 + * todo:初始化获取对应协议的配置字段列表 * * @param protocolId */ @@ -63,7 +63,7 @@ } /** - * 通过协议字段id和协议报文获取该配置实例化内容的值 + * todo:通过协议字段id和协议报文获取该配置实例化内容的值 * * @param protocolFieldId * @param byteBuf @@ -108,7 +108,7 @@ } /** - * 获取帧固定位置字段配置信息 + * todo:获取帧固定位置字段配置信息 * * @param byteBuf * @param protocolConfig @@ -135,7 +135,7 @@ /** - * 获取帧固定位置字段配置信息 + * todo:获取帧固定位置字段配置信息 * * @param byteBuf * @param protocolConfig @@ -160,7 +160,7 @@ } /** - * 获取过滤字段的长度 + * todo:获取过滤字段的长度 */ public Integer getTotalFilterLength(ProtocolConfig protocolConfig) { if (showSkip()) { @@ -179,7 +179,7 @@ /** - * 获取帧结构应有的总长度 + * todo:获取帧结构应有的总长度 */ public Integer getTotalLength(ByteBuf byteBuf, ProtocolConfig protocolConfig) { if (showSkip()) { @@ -205,7 +205,7 @@ } /** - * 获取协议有关字段解析内容 + * todo:获取协议有关字段解析内容 * storeObjectMap存储代转存的数据 * * @return @@ -228,7 +228,7 @@ } /** - * 获取业务报文内容的content字节 + * todo:获取业务报文内容的content字节 * * @param wholeDatagramByte * @return @@ -252,7 +252,7 @@ } /** - * 对解密的内容进行尾部清零操作 + * todo:对解密的内容进行尾部清零操作 *

* 根据解析后的业务内容,通过存储的帧结构,创建完整完整的数据报文, * 这里对帧结构的可变报文没有处理,只是简单的组装,保证提前解密,为帧结构检验做准备 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/RuleConfigProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/RuleConfigProvider.java index 1cb5514..7872a3c 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/RuleConfigProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/RuleConfigProvider.java @@ -24,10 +24,10 @@ } public RuleConfig getSendRuleConfig() { - Optional optionalRuleConfig=ruleConfigs.stream().filter( + Optional optionalRuleConfig = ruleConfigs.stream().filter( ruleConfig -> ruleConfig.getScene() != null && ruleConfig.getScene().equals("1")).findFirst(); - return optionalRuleConfig.isPresent()?optionalRuleConfig.get():null; + return optionalRuleConfig.isPresent() ? optionalRuleConfig.get() : null; } public RuleConfigProvider(Long protocolId) { @@ -36,7 +36,7 @@ } /** - * 获取规则匹配结果 + * todo: 获取规则匹配结果 * * @param parseFixedDataMap * @param protocolFieldConfigs diff --git a/sensorhub-support/src/main/java/com/casic/missiles/mapper/SubscribeConfigMapper.java b/sensorhub-support/src/main/java/com/casic/missiles/mapper/SubscribeConfigMapper.java new file mode 100644 index 0000000..31b0bdd --- /dev/null +++ b/sensorhub-support/src/main/java/com/casic/missiles/mapper/SubscribeConfigMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.pojo.SubscribeConfig; +import org.apache.ibatis.annotations.Mapper; + +/** + * @author cz + * + */ +@Mapper +public interface SubscribeConfigMapper extends BaseMapper { + + + +} diff --git a/sensorhub-support/src/main/java/com/casic/missiles/mapper/SubscribeDetailConfigMapper.java b/sensorhub-support/src/main/java/com/casic/missiles/mapper/SubscribeDetailConfigMapper.java new file mode 100644 index 0000000..0bfe7c9 --- /dev/null +++ b/sensorhub-support/src/main/java/com/casic/missiles/mapper/SubscribeDetailConfigMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.pojo.SubscribeDetailConfig; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + * @author cz + * + */ + +@Mapper +public interface SubscribeDetailConfigMapper extends BaseMapper { + + + + + +} diff --git a/sensorhub-support/src/main/java/com/casic/missiles/pojo/SenderConfig.java b/sensorhub-support/src/main/java/com/casic/missiles/pojo/SenderConfig.java deleted file mode 100644 index 09bcc06..0000000 --- a/sensorhub-support/src/main/java/com/casic/missiles/pojo/SenderConfig.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.casic.missiles.pojo; - -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; - -import java.util.Date; - -@TableName("sender_config") -@Data -public class SenderConfig { - - private Long id; - private String protocolId; - private String storageIds; - private String ruleId; - private String sendType; - private String remark; - private String ownerId; - private Date createTime; - -} diff --git a/sensorhub-support/src/main/java/com/casic/missiles/pojo/SenderDetailConfig.java b/sensorhub-support/src/main/java/com/casic/missiles/pojo/SenderDetailConfig.java deleted file mode 100644 index 3c4a986..0000000 --- a/sensorhub-support/src/main/java/com/casic/missiles/pojo/SenderDetailConfig.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.casic.missiles.pojo; - -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; - -import java.util.Date; - -@Data -@TableName("sender_detail_config") -public class SenderDetailConfig { - - private Long id; - private String senderType; - private String userName; - private String password; - private String address; - private String appKey; - private String appSecret; - private String remark; - private Date createTime; - -} diff --git a/sensorhub-support/src/main/java/com/casic/missiles/pojo/SubscribeConfig.java b/sensorhub-support/src/main/java/com/casic/missiles/pojo/SubscribeConfig.java new file mode 100644 index 0000000..bb16cd9 --- /dev/null +++ b/sensorhub-support/src/main/java/com/casic/missiles/pojo/SubscribeConfig.java @@ -0,0 +1,29 @@ +package com.casic.missiles.pojo; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +/** + * @author cz + */ +@TableName("subscribe_config") +@Data +public class SubscribeConfig { + + private Long id; + private String protocolId; + private String ruleId; + private String topic; + private String sendType; + private String remark; + private String ownerId; + private Date createTime; + + @TableField(exist = false) + private List subscribeDetailConfigs; + +} diff --git a/sensorhub-support/src/main/java/com/casic/missiles/pojo/SubscribeDetailConfig.java b/sensorhub-support/src/main/java/com/casic/missiles/pojo/SubscribeDetailConfig.java new file mode 100644 index 0000000..5403d8d --- /dev/null +++ b/sensorhub-support/src/main/java/com/casic/missiles/pojo/SubscribeDetailConfig.java @@ -0,0 +1,23 @@ +package com.casic.missiles.pojo; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; + +@Data +@TableName("subscribe_detail_config") +public class SubscribeDetailConfig { + + private Long id; + private Long topicId; + private String subscribeType; + private String userName; + private String password; + private String address; + private String appKey; + private String appSecret; + private String remark; + private Date createTime; + +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java index d7032ad..a7f8157 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java @@ -92,7 +92,7 @@ //根据解析内容,判断回复指令,构建解析返回内容 result = ReplyCommandPostProcessing.invoke(bizDataMap, ruleConfigFactory, protocolFactory); //数据发送,异步 -// datagramEventProvider.storeData(bizDataMap); + datagramEventProvider.storeData(bizDataMap); } catch (RuntimeException rex) { log.error("解析出现异常,异常信息为{}", rex); byteBuf.resetReaderIndex(); diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java index 2a4ef5d..4813901 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java @@ -1,9 +1,12 @@ package com.casic.missiles.parser.sender; +import com.casic.missiles.pojo.SubscribeDetailConfig; + +import java.util.List; import java.util.Map; public interface DataSubscribeProvider { - void dataSenderSubscribe(Map bizDataMap, String protocolId); + void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig); } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java index bd1516a..cd3cf28 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java @@ -2,6 +2,7 @@ import com.alibaba.fastjson.JSONObject; import com.casic.missiles.parser.sender.DataSubscribeProvider; +import com.casic.missiles.pojo.SubscribeDetailConfig; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; import org.springframework.web.client.RestTemplate; @@ -10,6 +11,7 @@ import javax.annotation.Resource; import java.util.Collections; +import java.util.List; import java.util.Map; @Component("functionCallback") @@ -19,7 +21,7 @@ private RestTemplate restTemplate; @Override - public void dataSenderSubscribe(Map bizDataMap, String protocolId){ + public void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig) { UriComponents uriComponents = UriComponentsBuilder.fromHttpUrl("127.0.0.1:8080"). path("/test").build(true); @@ -30,7 +32,7 @@ JSONObject param = new JSONObject(); //restTemplate 会根据 params 的具体类型,调用合适的 HttpMessageConvert 将请求参数写到请求体 body 中,并在请求头中添加合适的 content-type; // 也会根据 responseType 的类型(本列子中是 JSONObject),设置 head 中的 accept 字段,当响应返回的时候再调用合适的 HttpMessageConvert 进行响应转换 - ResponseEntity responseEntity=restTemplate.postForEntity(url,bizDataMap,JSONObject.class); + ResponseEntity responseEntity = restTemplate.postForEntity(url, bizDataMap, JSONObject.class); System.out.println(JSONObject.toJSON(responseEntity)); } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java index 7526de2..66f144b 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java @@ -1,18 +1,18 @@ package com.casic.missiles.parser.sender.impl; import com.casic.missiles.parser.sender.DataSubscribeProvider; +import com.casic.missiles.pojo.SubscribeDetailConfig; import org.springframework.stereotype.Component; +import java.util.List; import java.util.Map; @Component("middleware") public class MiddlewareSubscribe implements DataSubscribeProvider { - @Override - public void dataSenderSubscribe(Map bizDataMap, String protocolId){ - + public void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig) { } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java index e2f1192..471f7a7 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java @@ -1,15 +1,17 @@ package com.casic.missiles.parser.sender.impl; import com.casic.missiles.parser.sender.DataSubscribeProvider; +import com.casic.missiles.pojo.SubscribeDetailConfig; import org.springframework.stereotype.Component; +import java.util.List; import java.util.Map; -@Component("nosql") -public class NoSqlSubscribe implements DataSubscribeProvider { +@Component("dataStore") +public class NoSqlSubscribe implements DataSubscribeProvider { @Override - public void dataSenderSubscribe(Map bizDataMap, String protocolId){ + public void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig) { } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java index 0b7ddf1..c9f5417 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java @@ -36,13 +36,13 @@ /** - * 解析数据字段 + * todo: 解析数据字段 * * @param ruleConfig * @param byteBuf * @param fieldConfigsMap */ - public void parseDataField(RuleConfig ruleConfig, ByteBuf byteBuf, Map fieldConfigsMap,FieldRuleConfigProvider fieldRuleConfigProvider) { + public void parseDataField(RuleConfig ruleConfig, ByteBuf byteBuf, Map fieldConfigsMap, FieldRuleConfigProvider fieldRuleConfigProvider) { if (showSkip() || StringUtils.isEmpty(ruleConfig.getCombinedFieldIds())) { return; } @@ -53,7 +53,8 @@ } /** - * 准备,过滤字段列表,选取所需的值 + * todo:查询规则对应的组合配合 + * 准备,过滤字段列表,选取所需的值 * * @param ruleConfig * @return diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/CommandEventProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/CommandEventProvider.java deleted file mode 100644 index 7155894..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/CommandEventProvider.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.casic.missiles.provider; - -/** - * @author cz - * @date 2023-6-12 - */ -public class CommandEventProvider{ - - - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/FieldConfigProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/FieldConfigProvider.java index 96f3d52..457676c 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/FieldConfigProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/FieldConfigProvider.java @@ -41,6 +41,13 @@ return storeObjectMap; } + /** + * todo:解析数据字段 + * + * @param ruleConfig + * @param byteBuf + * @return + */ public Map parseDataField(RuleConfig ruleConfig, ByteBuf byteBuf) { if (showSkip()) { return null; @@ -59,6 +66,8 @@ } /** + * todo: 根据规则查询业务字段 + * * 得到需要处理的业务内容 * * @return diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/ProcessorInstanceProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/ProcessorInstanceProvider.java index a33c74c..0f3d9d9 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/ProcessorInstanceProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/ProcessorInstanceProvider.java @@ -7,7 +7,10 @@ import com.casic.missiles.parser.sender.DataSubscribeProvider; import com.casic.missiles.pojo.DatagramEventConfig; import com.casic.missiles.pojo.FieldConfig; +import com.casic.missiles.pojo.SubscribeConfig; +import com.casic.missiles.pojo.SubscribeDetailConfig; import com.casic.missiles.registry.DatagramEventRegistry; +import com.casic.missiles.registry.SubscribeRegistry; import com.casic.missiles.util.SpringContextUtil; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufUtil; @@ -23,12 +26,15 @@ public class ProcessorInstanceProvider { private final DatagramEventConfig processorInstance; + private final List subscribeConfigs; public ProcessorInstanceProvider(Long ruleId) { DatagramEventRegistry datagramEventRegistry = SpringContextUtil.getBean(DatagramEventRegistry.class); List datagramEventConfigList = datagramEventRegistry.getDatagramEventList(ruleId); processorInstance = this.getProcessorInstance(datagramEventConfigList); + SubscribeRegistry subscribeRegistry = SpringContextUtil.getBean(SubscribeRegistry.class); + subscribeConfigs = subscribeRegistry.getSubscribeRegistry(ruleId); } public DatagramEventConfig getProcessorInstance() { @@ -42,7 +48,15 @@ return null; } - // 是否有动态bean,没有去设置的bean,有则取之=>bean不为空,进行解密操作,否则返回原文 + /** + * todo: 报文解密 + * 1、否有动态bean,没有去设置的bean,有则取之 + * 2、bean不为空,进行解密操作,否则返回原文 + * + * @param bizDataContent + * @param fieldConfigMap + * @return + */ public ByteBuf getSafeDatagram(ByteBuf bizDataContent, Map fieldConfigMap) { String safeName = StringUtils.isEmpty(processorInstance.getSafeFieldId()) ? processorInstance.getSafeBean() : @@ -58,25 +72,32 @@ /** + * todo: 报文加密 + *

* 如果进行过解密操作,那么回复自动判定密文需要加密并按照同样的加密的方式进行回复 */ public ByteBuf buildSafeDatagram(ByteBuf replyBytes, Map fieldConfigMap) { String safeName = StringUtils.isEmpty(processorInstance.getSafeFieldId()) ? processorInstance.getSafeBean() : fieldConfigMap.get(processorInstance.getSafeFieldId()).getFieldName(); - ByteBuf ciphertextBuf = null; + ByteBuf cipherByteBuf = null; if (!StringUtils.isEmpty(safeName)) { fillFrameStructZero(replyBytes); //需要加密 SafeStrategy safeStrategy = SpringContextUtil.getBean(safeName); //加密密文 - ciphertextBuf = safeStrategy.encryption(ByteBufUtil.hexDump(replyBytes)); - return ciphertextBuf; + cipherByteBuf = safeStrategy.encryption(ByteBufUtil.hexDump(replyBytes)); + return cipherByteBuf; } - return ciphertextBuf; + return cipherByteBuf; } - //解密清零操作 + /** + * todo:解密清零操作 + * + * @param plainBuf + * @return + */ private ByteBuf clearComplementZero(ByteBuf plainBuf) { Integer plainLength = ByteBufUtil.hexDump(plainBuf).length() / 2; while (plainBuf.getByte(plainLength) == (byte) 0x00) { @@ -86,7 +107,9 @@ return plainBuf; } - //加密补零操作 + /** + * todo: 加密补零操作 + */ private ByteBuf fillFrameStructZero(ByteBuf replyBytes) { while (ByteBufUtil.hexDump(replyBytes).length() % 32 == 0) { replyBytes.writeInt(0); @@ -95,10 +118,18 @@ } - //数据发送,数据发送者暂未构建 + /** + * todo: 数据订阅 + */ public void storeData(List> bizDataMap) { DataSubscribeProvider dataSubscribeProvider = SpringContextUtil.getBean(processorInstance.getSubscribeBean()); -// dataSubscribeProvider.dataSenderSubscribe(bizDataMap, protocolId); + subscribeConfigs.forEach( + subscribeConfig -> { + subscribeConfig.getSubscribeDetailConfigs().forEach( + subscribeDetailConfig -> dataSubscribeProvider.publishDataSubscribe(bizDataMap, subscribeDetailConfig) + ); + } + ); } /** diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/ProtocolFieldConfigProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/ProtocolFieldConfigProvider.java index 8e7f561..db0ad83 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/ProtocolFieldConfigProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/ProtocolFieldConfigProvider.java @@ -42,7 +42,7 @@ } /** - * 初始化获取对应协议的配置字段列表 + * todo:初始化获取对应协议的配置字段列表 * * @param protocolId */ @@ -63,7 +63,7 @@ } /** - * 通过协议字段id和协议报文获取该配置实例化内容的值 + * todo:通过协议字段id和协议报文获取该配置实例化内容的值 * * @param protocolFieldId * @param byteBuf @@ -108,7 +108,7 @@ } /** - * 获取帧固定位置字段配置信息 + * todo:获取帧固定位置字段配置信息 * * @param byteBuf * @param protocolConfig @@ -135,7 +135,7 @@ /** - * 获取帧固定位置字段配置信息 + * todo:获取帧固定位置字段配置信息 * * @param byteBuf * @param protocolConfig @@ -160,7 +160,7 @@ } /** - * 获取过滤字段的长度 + * todo:获取过滤字段的长度 */ public Integer getTotalFilterLength(ProtocolConfig protocolConfig) { if (showSkip()) { @@ -179,7 +179,7 @@ /** - * 获取帧结构应有的总长度 + * todo:获取帧结构应有的总长度 */ public Integer getTotalLength(ByteBuf byteBuf, ProtocolConfig protocolConfig) { if (showSkip()) { @@ -205,7 +205,7 @@ } /** - * 获取协议有关字段解析内容 + * todo:获取协议有关字段解析内容 * storeObjectMap存储代转存的数据 * * @return @@ -228,7 +228,7 @@ } /** - * 获取业务报文内容的content字节 + * todo:获取业务报文内容的content字节 * * @param wholeDatagramByte * @return @@ -252,7 +252,7 @@ } /** - * 对解密的内容进行尾部清零操作 + * todo:对解密的内容进行尾部清零操作 *

* 根据解析后的业务内容,通过存储的帧结构,创建完整完整的数据报文, * 这里对帧结构的可变报文没有处理,只是简单的组装,保证提前解密,为帧结构检验做准备 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/RuleConfigProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/RuleConfigProvider.java index 1cb5514..7872a3c 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/RuleConfigProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/RuleConfigProvider.java @@ -24,10 +24,10 @@ } public RuleConfig getSendRuleConfig() { - Optional optionalRuleConfig=ruleConfigs.stream().filter( + Optional optionalRuleConfig = ruleConfigs.stream().filter( ruleConfig -> ruleConfig.getScene() != null && ruleConfig.getScene().equals("1")).findFirst(); - return optionalRuleConfig.isPresent()?optionalRuleConfig.get():null; + return optionalRuleConfig.isPresent() ? optionalRuleConfig.get() : null; } public RuleConfigProvider(Long protocolId) { @@ -36,7 +36,7 @@ } /** - * 获取规则匹配结果 + * todo: 获取规则匹配结果 * * @param parseFixedDataMap * @param protocolFieldConfigs diff --git a/sensorhub-support/src/main/java/com/casic/missiles/mapper/SubscribeConfigMapper.java b/sensorhub-support/src/main/java/com/casic/missiles/mapper/SubscribeConfigMapper.java new file mode 100644 index 0000000..31b0bdd --- /dev/null +++ b/sensorhub-support/src/main/java/com/casic/missiles/mapper/SubscribeConfigMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.pojo.SubscribeConfig; +import org.apache.ibatis.annotations.Mapper; + +/** + * @author cz + * + */ +@Mapper +public interface SubscribeConfigMapper extends BaseMapper { + + + +} diff --git a/sensorhub-support/src/main/java/com/casic/missiles/mapper/SubscribeDetailConfigMapper.java b/sensorhub-support/src/main/java/com/casic/missiles/mapper/SubscribeDetailConfigMapper.java new file mode 100644 index 0000000..0bfe7c9 --- /dev/null +++ b/sensorhub-support/src/main/java/com/casic/missiles/mapper/SubscribeDetailConfigMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.pojo.SubscribeDetailConfig; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + * @author cz + * + */ + +@Mapper +public interface SubscribeDetailConfigMapper extends BaseMapper { + + + + + +} diff --git a/sensorhub-support/src/main/java/com/casic/missiles/pojo/SenderConfig.java b/sensorhub-support/src/main/java/com/casic/missiles/pojo/SenderConfig.java deleted file mode 100644 index 09bcc06..0000000 --- a/sensorhub-support/src/main/java/com/casic/missiles/pojo/SenderConfig.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.casic.missiles.pojo; - -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; - -import java.util.Date; - -@TableName("sender_config") -@Data -public class SenderConfig { - - private Long id; - private String protocolId; - private String storageIds; - private String ruleId; - private String sendType; - private String remark; - private String ownerId; - private Date createTime; - -} diff --git a/sensorhub-support/src/main/java/com/casic/missiles/pojo/SenderDetailConfig.java b/sensorhub-support/src/main/java/com/casic/missiles/pojo/SenderDetailConfig.java deleted file mode 100644 index 3c4a986..0000000 --- a/sensorhub-support/src/main/java/com/casic/missiles/pojo/SenderDetailConfig.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.casic.missiles.pojo; - -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; - -import java.util.Date; - -@Data -@TableName("sender_detail_config") -public class SenderDetailConfig { - - private Long id; - private String senderType; - private String userName; - private String password; - private String address; - private String appKey; - private String appSecret; - private String remark; - private Date createTime; - -} diff --git a/sensorhub-support/src/main/java/com/casic/missiles/pojo/SubscribeConfig.java b/sensorhub-support/src/main/java/com/casic/missiles/pojo/SubscribeConfig.java new file mode 100644 index 0000000..bb16cd9 --- /dev/null +++ b/sensorhub-support/src/main/java/com/casic/missiles/pojo/SubscribeConfig.java @@ -0,0 +1,29 @@ +package com.casic.missiles.pojo; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +/** + * @author cz + */ +@TableName("subscribe_config") +@Data +public class SubscribeConfig { + + private Long id; + private String protocolId; + private String ruleId; + private String topic; + private String sendType; + private String remark; + private String ownerId; + private Date createTime; + + @TableField(exist = false) + private List subscribeDetailConfigs; + +} diff --git a/sensorhub-support/src/main/java/com/casic/missiles/pojo/SubscribeDetailConfig.java b/sensorhub-support/src/main/java/com/casic/missiles/pojo/SubscribeDetailConfig.java new file mode 100644 index 0000000..5403d8d --- /dev/null +++ b/sensorhub-support/src/main/java/com/casic/missiles/pojo/SubscribeDetailConfig.java @@ -0,0 +1,23 @@ +package com.casic.missiles.pojo; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; + +@Data +@TableName("subscribe_detail_config") +public class SubscribeDetailConfig { + + private Long id; + private Long topicId; + private String subscribeType; + private String userName; + private String password; + private String address; + private String appKey; + private String appSecret; + private String remark; + private Date createTime; + +} diff --git a/sensorhub-support/src/main/java/com/casic/missiles/registry/SubscribeRegistry.java b/sensorhub-support/src/main/java/com/casic/missiles/registry/SubscribeRegistry.java new file mode 100644 index 0000000..60ce075 --- /dev/null +++ b/sensorhub-support/src/main/java/com/casic/missiles/registry/SubscribeRegistry.java @@ -0,0 +1,12 @@ +package com.casic.missiles.registry; + +import com.casic.missiles.pojo.SubscribeConfig; + +import java.util.List; + +public interface SubscribeRegistry { + + + List getSubscribeRegistry(Long ruleId); + +} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java index d7032ad..a7f8157 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/GenericProtocolParser.java @@ -92,7 +92,7 @@ //根据解析内容,判断回复指令,构建解析返回内容 result = ReplyCommandPostProcessing.invoke(bizDataMap, ruleConfigFactory, protocolFactory); //数据发送,异步 -// datagramEventProvider.storeData(bizDataMap); + datagramEventProvider.storeData(bizDataMap); } catch (RuntimeException rex) { log.error("解析出现异常,异常信息为{}", rex); byteBuf.resetReaderIndex(); diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java index 2a4ef5d..4813901 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/DataSubscribeProvider.java @@ -1,9 +1,12 @@ package com.casic.missiles.parser.sender; +import com.casic.missiles.pojo.SubscribeDetailConfig; + +import java.util.List; import java.util.Map; public interface DataSubscribeProvider { - void dataSenderSubscribe(Map bizDataMap, String protocolId); + void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig); } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java index bd1516a..cd3cf28 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/FunctionCallback.java @@ -2,6 +2,7 @@ import com.alibaba.fastjson.JSONObject; import com.casic.missiles.parser.sender.DataSubscribeProvider; +import com.casic.missiles.pojo.SubscribeDetailConfig; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; import org.springframework.web.client.RestTemplate; @@ -10,6 +11,7 @@ import javax.annotation.Resource; import java.util.Collections; +import java.util.List; import java.util.Map; @Component("functionCallback") @@ -19,7 +21,7 @@ private RestTemplate restTemplate; @Override - public void dataSenderSubscribe(Map bizDataMap, String protocolId){ + public void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig) { UriComponents uriComponents = UriComponentsBuilder.fromHttpUrl("127.0.0.1:8080"). path("/test").build(true); @@ -30,7 +32,7 @@ JSONObject param = new JSONObject(); //restTemplate 会根据 params 的具体类型,调用合适的 HttpMessageConvert 将请求参数写到请求体 body 中,并在请求头中添加合适的 content-type; // 也会根据 responseType 的类型(本列子中是 JSONObject),设置 head 中的 accept 字段,当响应返回的时候再调用合适的 HttpMessageConvert 进行响应转换 - ResponseEntity responseEntity=restTemplate.postForEntity(url,bizDataMap,JSONObject.class); + ResponseEntity responseEntity = restTemplate.postForEntity(url, bizDataMap, JSONObject.class); System.out.println(JSONObject.toJSON(responseEntity)); } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java index 7526de2..66f144b 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/MiddlewareSubscribe.java @@ -1,18 +1,18 @@ package com.casic.missiles.parser.sender.impl; import com.casic.missiles.parser.sender.DataSubscribeProvider; +import com.casic.missiles.pojo.SubscribeDetailConfig; import org.springframework.stereotype.Component; +import java.util.List; import java.util.Map; @Component("middleware") public class MiddlewareSubscribe implements DataSubscribeProvider { - @Override - public void dataSenderSubscribe(Map bizDataMap, String protocolId){ - + public void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig) { } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java index e2f1192..471f7a7 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/sender/impl/NoSqlSubscribe.java @@ -1,15 +1,17 @@ package com.casic.missiles.parser.sender.impl; import com.casic.missiles.parser.sender.DataSubscribeProvider; +import com.casic.missiles.pojo.SubscribeDetailConfig; import org.springframework.stereotype.Component; +import java.util.List; import java.util.Map; -@Component("nosql") -public class NoSqlSubscribe implements DataSubscribeProvider { +@Component("dataStore") +public class NoSqlSubscribe implements DataSubscribeProvider { @Override - public void dataSenderSubscribe(Map bizDataMap, String protocolId){ + public void publishDataSubscribe(List> bizDataMap, SubscribeDetailConfig subscribeDetailConfig) { } diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java index 0b7ddf1..c9f5417 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/CombinedFieldConfigProvider.java @@ -36,13 +36,13 @@ /** - * 解析数据字段 + * todo: 解析数据字段 * * @param ruleConfig * @param byteBuf * @param fieldConfigsMap */ - public void parseDataField(RuleConfig ruleConfig, ByteBuf byteBuf, Map fieldConfigsMap,FieldRuleConfigProvider fieldRuleConfigProvider) { + public void parseDataField(RuleConfig ruleConfig, ByteBuf byteBuf, Map fieldConfigsMap, FieldRuleConfigProvider fieldRuleConfigProvider) { if (showSkip() || StringUtils.isEmpty(ruleConfig.getCombinedFieldIds())) { return; } @@ -53,7 +53,8 @@ } /** - * 准备,过滤字段列表,选取所需的值 + * todo:查询规则对应的组合配合 + * 准备,过滤字段列表,选取所需的值 * * @param ruleConfig * @return diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/CommandEventProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/CommandEventProvider.java deleted file mode 100644 index 7155894..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/CommandEventProvider.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.casic.missiles.provider; - -/** - * @author cz - * @date 2023-6-12 - */ -public class CommandEventProvider{ - - - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/FieldConfigProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/FieldConfigProvider.java index 96f3d52..457676c 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/FieldConfigProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/FieldConfigProvider.java @@ -41,6 +41,13 @@ return storeObjectMap; } + /** + * todo:解析数据字段 + * + * @param ruleConfig + * @param byteBuf + * @return + */ public Map parseDataField(RuleConfig ruleConfig, ByteBuf byteBuf) { if (showSkip()) { return null; @@ -59,6 +66,8 @@ } /** + * todo: 根据规则查询业务字段 + * * 得到需要处理的业务内容 * * @return diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/ProcessorInstanceProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/ProcessorInstanceProvider.java index a33c74c..0f3d9d9 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/ProcessorInstanceProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/ProcessorInstanceProvider.java @@ -7,7 +7,10 @@ import com.casic.missiles.parser.sender.DataSubscribeProvider; import com.casic.missiles.pojo.DatagramEventConfig; import com.casic.missiles.pojo.FieldConfig; +import com.casic.missiles.pojo.SubscribeConfig; +import com.casic.missiles.pojo.SubscribeDetailConfig; import com.casic.missiles.registry.DatagramEventRegistry; +import com.casic.missiles.registry.SubscribeRegistry; import com.casic.missiles.util.SpringContextUtil; import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBufUtil; @@ -23,12 +26,15 @@ public class ProcessorInstanceProvider { private final DatagramEventConfig processorInstance; + private final List subscribeConfigs; public ProcessorInstanceProvider(Long ruleId) { DatagramEventRegistry datagramEventRegistry = SpringContextUtil.getBean(DatagramEventRegistry.class); List datagramEventConfigList = datagramEventRegistry.getDatagramEventList(ruleId); processorInstance = this.getProcessorInstance(datagramEventConfigList); + SubscribeRegistry subscribeRegistry = SpringContextUtil.getBean(SubscribeRegistry.class); + subscribeConfigs = subscribeRegistry.getSubscribeRegistry(ruleId); } public DatagramEventConfig getProcessorInstance() { @@ -42,7 +48,15 @@ return null; } - // 是否有动态bean,没有去设置的bean,有则取之=>bean不为空,进行解密操作,否则返回原文 + /** + * todo: 报文解密 + * 1、否有动态bean,没有去设置的bean,有则取之 + * 2、bean不为空,进行解密操作,否则返回原文 + * + * @param bizDataContent + * @param fieldConfigMap + * @return + */ public ByteBuf getSafeDatagram(ByteBuf bizDataContent, Map fieldConfigMap) { String safeName = StringUtils.isEmpty(processorInstance.getSafeFieldId()) ? processorInstance.getSafeBean() : @@ -58,25 +72,32 @@ /** + * todo: 报文加密 + *

* 如果进行过解密操作,那么回复自动判定密文需要加密并按照同样的加密的方式进行回复 */ public ByteBuf buildSafeDatagram(ByteBuf replyBytes, Map fieldConfigMap) { String safeName = StringUtils.isEmpty(processorInstance.getSafeFieldId()) ? processorInstance.getSafeBean() : fieldConfigMap.get(processorInstance.getSafeFieldId()).getFieldName(); - ByteBuf ciphertextBuf = null; + ByteBuf cipherByteBuf = null; if (!StringUtils.isEmpty(safeName)) { fillFrameStructZero(replyBytes); //需要加密 SafeStrategy safeStrategy = SpringContextUtil.getBean(safeName); //加密密文 - ciphertextBuf = safeStrategy.encryption(ByteBufUtil.hexDump(replyBytes)); - return ciphertextBuf; + cipherByteBuf = safeStrategy.encryption(ByteBufUtil.hexDump(replyBytes)); + return cipherByteBuf; } - return ciphertextBuf; + return cipherByteBuf; } - //解密清零操作 + /** + * todo:解密清零操作 + * + * @param plainBuf + * @return + */ private ByteBuf clearComplementZero(ByteBuf plainBuf) { Integer plainLength = ByteBufUtil.hexDump(plainBuf).length() / 2; while (plainBuf.getByte(plainLength) == (byte) 0x00) { @@ -86,7 +107,9 @@ return plainBuf; } - //加密补零操作 + /** + * todo: 加密补零操作 + */ private ByteBuf fillFrameStructZero(ByteBuf replyBytes) { while (ByteBufUtil.hexDump(replyBytes).length() % 32 == 0) { replyBytes.writeInt(0); @@ -95,10 +118,18 @@ } - //数据发送,数据发送者暂未构建 + /** + * todo: 数据订阅 + */ public void storeData(List> bizDataMap) { DataSubscribeProvider dataSubscribeProvider = SpringContextUtil.getBean(processorInstance.getSubscribeBean()); -// dataSubscribeProvider.dataSenderSubscribe(bizDataMap, protocolId); + subscribeConfigs.forEach( + subscribeConfig -> { + subscribeConfig.getSubscribeDetailConfigs().forEach( + subscribeDetailConfig -> dataSubscribeProvider.publishDataSubscribe(bizDataMap, subscribeDetailConfig) + ); + } + ); } /** diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/ProtocolFieldConfigProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/ProtocolFieldConfigProvider.java index 8e7f561..db0ad83 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/ProtocolFieldConfigProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/ProtocolFieldConfigProvider.java @@ -42,7 +42,7 @@ } /** - * 初始化获取对应协议的配置字段列表 + * todo:初始化获取对应协议的配置字段列表 * * @param protocolId */ @@ -63,7 +63,7 @@ } /** - * 通过协议字段id和协议报文获取该配置实例化内容的值 + * todo:通过协议字段id和协议报文获取该配置实例化内容的值 * * @param protocolFieldId * @param byteBuf @@ -108,7 +108,7 @@ } /** - * 获取帧固定位置字段配置信息 + * todo:获取帧固定位置字段配置信息 * * @param byteBuf * @param protocolConfig @@ -135,7 +135,7 @@ /** - * 获取帧固定位置字段配置信息 + * todo:获取帧固定位置字段配置信息 * * @param byteBuf * @param protocolConfig @@ -160,7 +160,7 @@ } /** - * 获取过滤字段的长度 + * todo:获取过滤字段的长度 */ public Integer getTotalFilterLength(ProtocolConfig protocolConfig) { if (showSkip()) { @@ -179,7 +179,7 @@ /** - * 获取帧结构应有的总长度 + * todo:获取帧结构应有的总长度 */ public Integer getTotalLength(ByteBuf byteBuf, ProtocolConfig protocolConfig) { if (showSkip()) { @@ -205,7 +205,7 @@ } /** - * 获取协议有关字段解析内容 + * todo:获取协议有关字段解析内容 * storeObjectMap存储代转存的数据 * * @return @@ -228,7 +228,7 @@ } /** - * 获取业务报文内容的content字节 + * todo:获取业务报文内容的content字节 * * @param wholeDatagramByte * @return @@ -252,7 +252,7 @@ } /** - * 对解密的内容进行尾部清零操作 + * todo:对解密的内容进行尾部清零操作 *

* 根据解析后的业务内容,通过存储的帧结构,创建完整完整的数据报文, * 这里对帧结构的可变报文没有处理,只是简单的组装,保证提前解密,为帧结构检验做准备 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/provider/RuleConfigProvider.java b/sensorhub-core/src/main/java/com/casic/missiles/provider/RuleConfigProvider.java index 1cb5514..7872a3c 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/provider/RuleConfigProvider.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/provider/RuleConfigProvider.java @@ -24,10 +24,10 @@ } public RuleConfig getSendRuleConfig() { - Optional optionalRuleConfig=ruleConfigs.stream().filter( + Optional optionalRuleConfig = ruleConfigs.stream().filter( ruleConfig -> ruleConfig.getScene() != null && ruleConfig.getScene().equals("1")).findFirst(); - return optionalRuleConfig.isPresent()?optionalRuleConfig.get():null; + return optionalRuleConfig.isPresent() ? optionalRuleConfig.get() : null; } public RuleConfigProvider(Long protocolId) { @@ -36,7 +36,7 @@ } /** - * 获取规则匹配结果 + * todo: 获取规则匹配结果 * * @param parseFixedDataMap * @param protocolFieldConfigs diff --git a/sensorhub-support/src/main/java/com/casic/missiles/mapper/SubscribeConfigMapper.java b/sensorhub-support/src/main/java/com/casic/missiles/mapper/SubscribeConfigMapper.java new file mode 100644 index 0000000..31b0bdd --- /dev/null +++ b/sensorhub-support/src/main/java/com/casic/missiles/mapper/SubscribeConfigMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.pojo.SubscribeConfig; +import org.apache.ibatis.annotations.Mapper; + +/** + * @author cz + * + */ +@Mapper +public interface SubscribeConfigMapper extends BaseMapper { + + + +} diff --git a/sensorhub-support/src/main/java/com/casic/missiles/mapper/SubscribeDetailConfigMapper.java b/sensorhub-support/src/main/java/com/casic/missiles/mapper/SubscribeDetailConfigMapper.java new file mode 100644 index 0000000..0bfe7c9 --- /dev/null +++ b/sensorhub-support/src/main/java/com/casic/missiles/mapper/SubscribeDetailConfigMapper.java @@ -0,0 +1,23 @@ +package com.casic.missiles.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.pojo.SubscribeDetailConfig; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +/** + * @author cz + * + */ + +@Mapper +public interface SubscribeDetailConfigMapper extends BaseMapper { + + + + + +} diff --git a/sensorhub-support/src/main/java/com/casic/missiles/pojo/SenderConfig.java b/sensorhub-support/src/main/java/com/casic/missiles/pojo/SenderConfig.java deleted file mode 100644 index 09bcc06..0000000 --- a/sensorhub-support/src/main/java/com/casic/missiles/pojo/SenderConfig.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.casic.missiles.pojo; - -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; - -import java.util.Date; - -@TableName("sender_config") -@Data -public class SenderConfig { - - private Long id; - private String protocolId; - private String storageIds; - private String ruleId; - private String sendType; - private String remark; - private String ownerId; - private Date createTime; - -} diff --git a/sensorhub-support/src/main/java/com/casic/missiles/pojo/SenderDetailConfig.java b/sensorhub-support/src/main/java/com/casic/missiles/pojo/SenderDetailConfig.java deleted file mode 100644 index 3c4a986..0000000 --- a/sensorhub-support/src/main/java/com/casic/missiles/pojo/SenderDetailConfig.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.casic.missiles.pojo; - -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; - -import java.util.Date; - -@Data -@TableName("sender_detail_config") -public class SenderDetailConfig { - - private Long id; - private String senderType; - private String userName; - private String password; - private String address; - private String appKey; - private String appSecret; - private String remark; - private Date createTime; - -} diff --git a/sensorhub-support/src/main/java/com/casic/missiles/pojo/SubscribeConfig.java b/sensorhub-support/src/main/java/com/casic/missiles/pojo/SubscribeConfig.java new file mode 100644 index 0000000..bb16cd9 --- /dev/null +++ b/sensorhub-support/src/main/java/com/casic/missiles/pojo/SubscribeConfig.java @@ -0,0 +1,29 @@ +package com.casic.missiles.pojo; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +/** + * @author cz + */ +@TableName("subscribe_config") +@Data +public class SubscribeConfig { + + private Long id; + private String protocolId; + private String ruleId; + private String topic; + private String sendType; + private String remark; + private String ownerId; + private Date createTime; + + @TableField(exist = false) + private List subscribeDetailConfigs; + +} diff --git a/sensorhub-support/src/main/java/com/casic/missiles/pojo/SubscribeDetailConfig.java b/sensorhub-support/src/main/java/com/casic/missiles/pojo/SubscribeDetailConfig.java new file mode 100644 index 0000000..5403d8d --- /dev/null +++ b/sensorhub-support/src/main/java/com/casic/missiles/pojo/SubscribeDetailConfig.java @@ -0,0 +1,23 @@ +package com.casic.missiles.pojo; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; + +@Data +@TableName("subscribe_detail_config") +public class SubscribeDetailConfig { + + private Long id; + private Long topicId; + private String subscribeType; + private String userName; + private String password; + private String address; + private String appKey; + private String appSecret; + private String remark; + private Date createTime; + +} diff --git a/sensorhub-support/src/main/java/com/casic/missiles/registry/SubscribeRegistry.java b/sensorhub-support/src/main/java/com/casic/missiles/registry/SubscribeRegistry.java new file mode 100644 index 0000000..60ce075 --- /dev/null +++ b/sensorhub-support/src/main/java/com/casic/missiles/registry/SubscribeRegistry.java @@ -0,0 +1,12 @@ +package com.casic.missiles.registry; + +import com.casic.missiles.pojo.SubscribeConfig; + +import java.util.List; + +public interface SubscribeRegistry { + + + List getSubscribeRegistry(Long ruleId); + +} diff --git a/sensorhub-support/src/main/java/com/casic/missiles/registry/impl/SubscribeRegistryImpl.java b/sensorhub-support/src/main/java/com/casic/missiles/registry/impl/SubscribeRegistryImpl.java new file mode 100644 index 0000000..8fa1999 --- /dev/null +++ b/sensorhub-support/src/main/java/com/casic/missiles/registry/impl/SubscribeRegistryImpl.java @@ -0,0 +1,57 @@ +package com.casic.missiles.registry.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.mapper.SubscribeConfigMapper; +import com.casic.missiles.mapper.SubscribeDetailConfigMapper; +import com.casic.missiles.pojo.SubscribeConfig; +import com.casic.missiles.pojo.SubscribeDetailConfig; +import com.casic.missiles.registry.SubscribeRegistry; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +@Service +@RequiredArgsConstructor +public class SubscribeRegistryImpl extends ServiceImpl implements SubscribeRegistry { + + private final SubscribeDetailConfigMapper subscribeDetailConfigMapper; + + /** + * 获取订阅的配置信息 + * + * @param ruleId + * @return + */ + @Override + public List getSubscribeRegistry(Long ruleId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("rule_id", ruleId); + List subscribeDetailConfigs = this.baseMapper.selectList(queryWrapper); + setSubscribeDetailConfigs(subscribeDetailConfigs); + return subscribeDetailConfigs; + } + + /** + * todo: 设置订阅配置明细信息 + * + * @param subscribeDetailConfigs + */ + private void setSubscribeDetailConfigs(List subscribeDetailConfigs) { + if (CollectionUtils.isEmpty(subscribeDetailConfigs)) { + return; + } + List subscribeDetailConfigList = this.subscribeDetailConfigMapper.selectList(null); + Map> subscribeDetailConfigMap = subscribeDetailConfigList.stream() + .collect(Collectors.groupingBy(SubscribeDetailConfig::getTopicId)); + subscribeDetailConfigs.forEach( + subscribeConfig -> subscribeConfig.setSubscribeDetailConfigs(subscribeDetailConfigMap.get(subscribeConfig.getProtocolId())) + ); + } + + +}