diff --git a/casic-iot-common/src/main/java/com/casic/missiles/util/SpringContextUtil.java b/casic-iot-common/src/main/java/com/casic/missiles/util/SpringContextUtil.java index 9b3ab90..45701f3 100644 --- a/casic-iot-common/src/main/java/com/casic/missiles/util/SpringContextUtil.java +++ b/casic-iot-common/src/main/java/com/casic/missiles/util/SpringContextUtil.java @@ -60,7 +60,10 @@ @SuppressWarnings("unchecked") public static T getBean(String name) throws BeansException { - return (T) beanFactory.getBean(name); + if (beanFactory.containsBean(name)) { + return (T) beanFactory.getBean(name); + } + return null; } public static boolean containsBean(String name) { diff --git a/casic-iot-common/src/main/java/com/casic/missiles/util/SpringContextUtil.java b/casic-iot-common/src/main/java/com/casic/missiles/util/SpringContextUtil.java index 9b3ab90..45701f3 100644 --- a/casic-iot-common/src/main/java/com/casic/missiles/util/SpringContextUtil.java +++ b/casic-iot-common/src/main/java/com/casic/missiles/util/SpringContextUtil.java @@ -60,7 +60,10 @@ @SuppressWarnings("unchecked") public static T getBean(String name) throws BeansException { - return (T) beanFactory.getBean(name); + if (beanFactory.containsBean(name)) { + return (T) beanFactory.getBean(name); + } + return null; } public static boolean containsBean(String name) { diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml index 962b944..1652cf1 100644 --- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml +++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml @@ -27,7 +27,7 @@ SELECT device_type AS "deviceType",create_time AS "createTime",d.devcode, model,imei,d.cell,name AS "deviceName",status,d.id,create_user_id AS "createUserId", - create_user_name AS "createUserName" + create_user_name AS "createUserName", group_id as groupId, product_id as productId FROM ( SELECT * FROM device diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceServiceImpl.java index b276a17..375f189 100644 --- a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceServiceImpl.java +++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceServiceImpl.java @@ -57,7 +57,6 @@ private final ProductInfoMapper productInfoMapper; private final DeviceGroupMapper deviceGroupMapper; private final SysCommonMapper sysCommonMapper; - private final DeviceImeiIccidMapper imeiIccidMapper; @Override public Page listPage(Page page, DeviceListRequest request, DataScope dataScope) throws Exception { @@ -67,16 +66,24 @@ } List deviceListVOS = this.baseMapper.listPage(page, request, dataScope); List productInfoList = productInfoMapper.selectList(null); + List groupList = deviceGroupMapper.selectList(null); Map productInfoMap = productInfoList.stream().collect( Collectors.toMap(ProductInfo::getId, e -> e) ); + Map groupMap = groupList.stream().collect( + Collectors.toMap(DeviceGroup::getId, e -> e) + ); //处理产品映射,转化字典 for (DeviceListVO deviceListVO : deviceListVOS) { - ProductInfo productInfo = productInfoMap.containsKey(deviceListVO.getProductId()) ? null : productInfoMap.get(deviceListVO.getProductId()); + ProductInfo productInfo = productInfoMap.getOrDefault(deviceListVO.getProductId(), null); + DeviceGroup group = groupMap.getOrDefault(deviceListVO.getGroupId(), null); if (ObjectUtils.isNotEmpty(productInfo)) { deviceListVO.setProductName(productInfo.getName()); deviceListVO.setEncipherType(productInfo.getProductType()); } + if (ObjectUtil.isNotNull(group)) { + deviceListVO.setGroupName(group.getGroupName()); + } DictCodeUtils.convertDictCodeToName(deviceListVO); } page.setRecords(deviceListVOS); diff --git a/casic-iot-common/src/main/java/com/casic/missiles/util/SpringContextUtil.java b/casic-iot-common/src/main/java/com/casic/missiles/util/SpringContextUtil.java index 9b3ab90..45701f3 100644 --- a/casic-iot-common/src/main/java/com/casic/missiles/util/SpringContextUtil.java +++ b/casic-iot-common/src/main/java/com/casic/missiles/util/SpringContextUtil.java @@ -60,7 +60,10 @@ @SuppressWarnings("unchecked") public static T getBean(String name) throws BeansException { - return (T) beanFactory.getBean(name); + if (beanFactory.containsBean(name)) { + return (T) beanFactory.getBean(name); + } + return null; } public static boolean containsBean(String name) { diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml index 962b944..1652cf1 100644 --- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml +++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml @@ -27,7 +27,7 @@ SELECT device_type AS "deviceType",create_time AS "createTime",d.devcode, model,imei,d.cell,name AS "deviceName",status,d.id,create_user_id AS "createUserId", - create_user_name AS "createUserName" + create_user_name AS "createUserName", group_id as groupId, product_id as productId FROM ( SELECT * FROM device diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceServiceImpl.java index b276a17..375f189 100644 --- a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceServiceImpl.java +++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceServiceImpl.java @@ -57,7 +57,6 @@ private final ProductInfoMapper productInfoMapper; private final DeviceGroupMapper deviceGroupMapper; private final SysCommonMapper sysCommonMapper; - private final DeviceImeiIccidMapper imeiIccidMapper; @Override public Page listPage(Page page, DeviceListRequest request, DataScope dataScope) throws Exception { @@ -67,16 +66,24 @@ } List deviceListVOS = this.baseMapper.listPage(page, request, dataScope); List productInfoList = productInfoMapper.selectList(null); + List groupList = deviceGroupMapper.selectList(null); Map productInfoMap = productInfoList.stream().collect( Collectors.toMap(ProductInfo::getId, e -> e) ); + Map groupMap = groupList.stream().collect( + Collectors.toMap(DeviceGroup::getId, e -> e) + ); //处理产品映射,转化字典 for (DeviceListVO deviceListVO : deviceListVOS) { - ProductInfo productInfo = productInfoMap.containsKey(deviceListVO.getProductId()) ? null : productInfoMap.get(deviceListVO.getProductId()); + ProductInfo productInfo = productInfoMap.getOrDefault(deviceListVO.getProductId(), null); + DeviceGroup group = groupMap.getOrDefault(deviceListVO.getGroupId(), null); if (ObjectUtils.isNotEmpty(productInfo)) { deviceListVO.setProductName(productInfo.getName()); deviceListVO.setEncipherType(productInfo.getProductType()); } + if (ObjectUtil.isNotNull(group)) { + deviceListVO.setGroupName(group.getGroupName()); + } DictCodeUtils.convertDictCodeToName(deviceListVO); } page.setRecords(deviceListVOS); diff --git a/sensorhub-core/src/main/java/com/casic/missiles/listeners/ProtocolProcessEventListener.java b/sensorhub-core/src/main/java/com/casic/missiles/listeners/ProtocolProcessEventListener.java index 2258d38..f58e461 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/listeners/ProtocolProcessEventListener.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/listeners/ProtocolProcessEventListener.java @@ -6,7 +6,6 @@ import com.casic.missiles.cache.GuavaCacheUtil; import com.casic.missiles.model.Device; import com.casic.missiles.model.DeviceData; -import com.casic.missiles.pojo.ParseResult; import com.casic.missiles.pojo.ProcessEventTask; import com.casic.missiles.service.IDeviceDataService; import com.casic.missiles.service.impl.DeviceDataServiceImpl; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/netty/handler/SensorhubServerChannelInitialHandler.java b/sensorhub-core/src/main/java/com/casic/missiles/netty/handler/SensorhubServerChannelInitialHandler.java index dabfe36..509d1f9 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/netty/handler/SensorhubServerChannelInitialHandler.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/netty/handler/SensorhubServerChannelInitialHandler.java @@ -1,20 +1,12 @@ package com.casic.missiles.netty.handler; import com.casic.missiles.parser.BirmmHexDecoder; -import com.casic.missiles.parser.SensorhubDecoder; -import com.casic.missiles.parser.safe.impl.Sm4; import com.casic.missiles.replier.CommonHexReplier; -import com.casic.missiles.replier.SensorhubReplier; -import com.casic.missiles.util.SpringContextUtil; import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelPipeline; import io.netty.channel.socket.SocketChannel; -import io.netty.handler.logging.LogLevel; -import io.netty.handler.logging.LoggingHandler; import org.springframework.stereotype.Component; -import javax.annotation.Resource; - /** * @author cz * @date 2023-06-05 diff --git a/casic-iot-common/src/main/java/com/casic/missiles/util/SpringContextUtil.java b/casic-iot-common/src/main/java/com/casic/missiles/util/SpringContextUtil.java index 9b3ab90..45701f3 100644 --- a/casic-iot-common/src/main/java/com/casic/missiles/util/SpringContextUtil.java +++ b/casic-iot-common/src/main/java/com/casic/missiles/util/SpringContextUtil.java @@ -60,7 +60,10 @@ @SuppressWarnings("unchecked") public static T getBean(String name) throws BeansException { - return (T) beanFactory.getBean(name); + if (beanFactory.containsBean(name)) { + return (T) beanFactory.getBean(name); + } + return null; } public static boolean containsBean(String name) { diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml index 962b944..1652cf1 100644 --- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml +++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml @@ -27,7 +27,7 @@ SELECT device_type AS "deviceType",create_time AS "createTime",d.devcode, model,imei,d.cell,name AS "deviceName",status,d.id,create_user_id AS "createUserId", - create_user_name AS "createUserName" + create_user_name AS "createUserName", group_id as groupId, product_id as productId FROM ( SELECT * FROM device diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceServiceImpl.java index b276a17..375f189 100644 --- a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceServiceImpl.java +++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceServiceImpl.java @@ -57,7 +57,6 @@ private final ProductInfoMapper productInfoMapper; private final DeviceGroupMapper deviceGroupMapper; private final SysCommonMapper sysCommonMapper; - private final DeviceImeiIccidMapper imeiIccidMapper; @Override public Page listPage(Page page, DeviceListRequest request, DataScope dataScope) throws Exception { @@ -67,16 +66,24 @@ } List deviceListVOS = this.baseMapper.listPage(page, request, dataScope); List productInfoList = productInfoMapper.selectList(null); + List groupList = deviceGroupMapper.selectList(null); Map productInfoMap = productInfoList.stream().collect( Collectors.toMap(ProductInfo::getId, e -> e) ); + Map groupMap = groupList.stream().collect( + Collectors.toMap(DeviceGroup::getId, e -> e) + ); //处理产品映射,转化字典 for (DeviceListVO deviceListVO : deviceListVOS) { - ProductInfo productInfo = productInfoMap.containsKey(deviceListVO.getProductId()) ? null : productInfoMap.get(deviceListVO.getProductId()); + ProductInfo productInfo = productInfoMap.getOrDefault(deviceListVO.getProductId(), null); + DeviceGroup group = groupMap.getOrDefault(deviceListVO.getGroupId(), null); if (ObjectUtils.isNotEmpty(productInfo)) { deviceListVO.setProductName(productInfo.getName()); deviceListVO.setEncipherType(productInfo.getProductType()); } + if (ObjectUtil.isNotNull(group)) { + deviceListVO.setGroupName(group.getGroupName()); + } DictCodeUtils.convertDictCodeToName(deviceListVO); } page.setRecords(deviceListVOS); diff --git a/sensorhub-core/src/main/java/com/casic/missiles/listeners/ProtocolProcessEventListener.java b/sensorhub-core/src/main/java/com/casic/missiles/listeners/ProtocolProcessEventListener.java index 2258d38..f58e461 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/listeners/ProtocolProcessEventListener.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/listeners/ProtocolProcessEventListener.java @@ -6,7 +6,6 @@ import com.casic.missiles.cache.GuavaCacheUtil; import com.casic.missiles.model.Device; import com.casic.missiles.model.DeviceData; -import com.casic.missiles.pojo.ParseResult; import com.casic.missiles.pojo.ProcessEventTask; import com.casic.missiles.service.IDeviceDataService; import com.casic.missiles.service.impl.DeviceDataServiceImpl; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/netty/handler/SensorhubServerChannelInitialHandler.java b/sensorhub-core/src/main/java/com/casic/missiles/netty/handler/SensorhubServerChannelInitialHandler.java index dabfe36..509d1f9 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/netty/handler/SensorhubServerChannelInitialHandler.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/netty/handler/SensorhubServerChannelInitialHandler.java @@ -1,20 +1,12 @@ package com.casic.missiles.netty.handler; import com.casic.missiles.parser.BirmmHexDecoder; -import com.casic.missiles.parser.SensorhubDecoder; -import com.casic.missiles.parser.safe.impl.Sm4; import com.casic.missiles.replier.CommonHexReplier; -import com.casic.missiles.replier.SensorhubReplier; -import com.casic.missiles.util.SpringContextUtil; import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelPipeline; import io.netty.channel.socket.SocketChannel; -import io.netty.handler.logging.LogLevel; -import io.netty.handler.logging.LoggingHandler; import org.springframework.stereotype.Component; -import javax.annotation.Resource; - /** * @author cz * @date 2023-06-05 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/resolver/combined/GenericCombinedFieldResolver.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/resolver/combined/GenericCombinedFieldResolver.java index 6bacdbe..a6c5d56 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/resolver/combined/GenericCombinedFieldResolver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/resolver/combined/GenericCombinedFieldResolver.java @@ -2,10 +2,8 @@ import cn.hutool.core.lang.Assert; import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.casic.missiles.enums.EngineExceptionEnum; import com.casic.missiles.exception.EngineException; -import com.casic.missiles.parser.GenericProtocolParser; import com.casic.missiles.parser.resolver.combined.impl.BizFieldParseProcessor; import com.casic.missiles.parser.resolver.combined.impl.PreBizFieldParseProcessor; import com.casic.missiles.parser.resolver.combined.impl.PreLeadCodeProcessor; @@ -14,18 +12,11 @@ import com.casic.missiles.pojo.CombinedFieldProcessorParam; import com.casic.missiles.pojo.FieldConfig; import com.casic.missiles.pojo.FieldRuleConfig; -import com.casic.missiles.util.SpringContextUtil; -import io.netty.buffer.ByteBuf; -import io.netty.buffer.ByteBufUtil; -import io.netty.util.internal.PlatformDependent; import lombok.extern.slf4j.Slf4j; -import org.springframework.util.ReflectionUtils; -import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; import java.util.Map; -import java.util.concurrent.atomic.AtomicLong; import java.util.stream.Collectors; /** diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/rule/GenericRuleResolver.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/rule/GenericRuleResolver.java index 797a75c..7905f74 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/rule/GenericRuleResolver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/rule/GenericRuleResolver.java @@ -1,19 +1,12 @@ package com.casic.missiles.parser.rule; -import cn.hutool.core.lang.Assert; -import com.casic.missiles.enums.EngineExceptionEnum; -import com.casic.missiles.exception.EngineException; import com.casic.missiles.pojo.ProtocolFieldConfig; import com.casic.missiles.pojo.RuleConfig; -import com.casic.missiles.pojo.RuleEventConfig; -import com.casic.missiles.registry.RuleEventRegistry; -import com.casic.missiles.util.SpringContextUtil; import org.apache.commons.lang3.StringUtils; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Objects; import java.util.stream.Collectors; public class GenericRuleResolver { diff --git a/casic-iot-common/src/main/java/com/casic/missiles/util/SpringContextUtil.java b/casic-iot-common/src/main/java/com/casic/missiles/util/SpringContextUtil.java index 9b3ab90..45701f3 100644 --- a/casic-iot-common/src/main/java/com/casic/missiles/util/SpringContextUtil.java +++ b/casic-iot-common/src/main/java/com/casic/missiles/util/SpringContextUtil.java @@ -60,7 +60,10 @@ @SuppressWarnings("unchecked") public static T getBean(String name) throws BeansException { - return (T) beanFactory.getBean(name); + if (beanFactory.containsBean(name)) { + return (T) beanFactory.getBean(name); + } + return null; } public static boolean containsBean(String name) { diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml index 962b944..1652cf1 100644 --- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml +++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml @@ -27,7 +27,7 @@ SELECT device_type AS "deviceType",create_time AS "createTime",d.devcode, model,imei,d.cell,name AS "deviceName",status,d.id,create_user_id AS "createUserId", - create_user_name AS "createUserName" + create_user_name AS "createUserName", group_id as groupId, product_id as productId FROM ( SELECT * FROM device diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceServiceImpl.java index b276a17..375f189 100644 --- a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceServiceImpl.java +++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceServiceImpl.java @@ -57,7 +57,6 @@ private final ProductInfoMapper productInfoMapper; private final DeviceGroupMapper deviceGroupMapper; private final SysCommonMapper sysCommonMapper; - private final DeviceImeiIccidMapper imeiIccidMapper; @Override public Page listPage(Page page, DeviceListRequest request, DataScope dataScope) throws Exception { @@ -67,16 +66,24 @@ } List deviceListVOS = this.baseMapper.listPage(page, request, dataScope); List productInfoList = productInfoMapper.selectList(null); + List groupList = deviceGroupMapper.selectList(null); Map productInfoMap = productInfoList.stream().collect( Collectors.toMap(ProductInfo::getId, e -> e) ); + Map groupMap = groupList.stream().collect( + Collectors.toMap(DeviceGroup::getId, e -> e) + ); //处理产品映射,转化字典 for (DeviceListVO deviceListVO : deviceListVOS) { - ProductInfo productInfo = productInfoMap.containsKey(deviceListVO.getProductId()) ? null : productInfoMap.get(deviceListVO.getProductId()); + ProductInfo productInfo = productInfoMap.getOrDefault(deviceListVO.getProductId(), null); + DeviceGroup group = groupMap.getOrDefault(deviceListVO.getGroupId(), null); if (ObjectUtils.isNotEmpty(productInfo)) { deviceListVO.setProductName(productInfo.getName()); deviceListVO.setEncipherType(productInfo.getProductType()); } + if (ObjectUtil.isNotNull(group)) { + deviceListVO.setGroupName(group.getGroupName()); + } DictCodeUtils.convertDictCodeToName(deviceListVO); } page.setRecords(deviceListVOS); diff --git a/sensorhub-core/src/main/java/com/casic/missiles/listeners/ProtocolProcessEventListener.java b/sensorhub-core/src/main/java/com/casic/missiles/listeners/ProtocolProcessEventListener.java index 2258d38..f58e461 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/listeners/ProtocolProcessEventListener.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/listeners/ProtocolProcessEventListener.java @@ -6,7 +6,6 @@ import com.casic.missiles.cache.GuavaCacheUtil; import com.casic.missiles.model.Device; import com.casic.missiles.model.DeviceData; -import com.casic.missiles.pojo.ParseResult; import com.casic.missiles.pojo.ProcessEventTask; import com.casic.missiles.service.IDeviceDataService; import com.casic.missiles.service.impl.DeviceDataServiceImpl; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/netty/handler/SensorhubServerChannelInitialHandler.java b/sensorhub-core/src/main/java/com/casic/missiles/netty/handler/SensorhubServerChannelInitialHandler.java index dabfe36..509d1f9 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/netty/handler/SensorhubServerChannelInitialHandler.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/netty/handler/SensorhubServerChannelInitialHandler.java @@ -1,20 +1,12 @@ package com.casic.missiles.netty.handler; import com.casic.missiles.parser.BirmmHexDecoder; -import com.casic.missiles.parser.SensorhubDecoder; -import com.casic.missiles.parser.safe.impl.Sm4; import com.casic.missiles.replier.CommonHexReplier; -import com.casic.missiles.replier.SensorhubReplier; -import com.casic.missiles.util.SpringContextUtil; import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelPipeline; import io.netty.channel.socket.SocketChannel; -import io.netty.handler.logging.LogLevel; -import io.netty.handler.logging.LoggingHandler; import org.springframework.stereotype.Component; -import javax.annotation.Resource; - /** * @author cz * @date 2023-06-05 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/resolver/combined/GenericCombinedFieldResolver.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/resolver/combined/GenericCombinedFieldResolver.java index 6bacdbe..a6c5d56 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/resolver/combined/GenericCombinedFieldResolver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/resolver/combined/GenericCombinedFieldResolver.java @@ -2,10 +2,8 @@ import cn.hutool.core.lang.Assert; import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.casic.missiles.enums.EngineExceptionEnum; import com.casic.missiles.exception.EngineException; -import com.casic.missiles.parser.GenericProtocolParser; import com.casic.missiles.parser.resolver.combined.impl.BizFieldParseProcessor; import com.casic.missiles.parser.resolver.combined.impl.PreBizFieldParseProcessor; import com.casic.missiles.parser.resolver.combined.impl.PreLeadCodeProcessor; @@ -14,18 +12,11 @@ import com.casic.missiles.pojo.CombinedFieldProcessorParam; import com.casic.missiles.pojo.FieldConfig; import com.casic.missiles.pojo.FieldRuleConfig; -import com.casic.missiles.util.SpringContextUtil; -import io.netty.buffer.ByteBuf; -import io.netty.buffer.ByteBufUtil; -import io.netty.util.internal.PlatformDependent; import lombok.extern.slf4j.Slf4j; -import org.springframework.util.ReflectionUtils; -import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; import java.util.Map; -import java.util.concurrent.atomic.AtomicLong; import java.util.stream.Collectors; /** diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/rule/GenericRuleResolver.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/rule/GenericRuleResolver.java index 797a75c..7905f74 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/rule/GenericRuleResolver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/rule/GenericRuleResolver.java @@ -1,19 +1,12 @@ package com.casic.missiles.parser.rule; -import cn.hutool.core.lang.Assert; -import com.casic.missiles.enums.EngineExceptionEnum; -import com.casic.missiles.exception.EngineException; import com.casic.missiles.pojo.ProtocolFieldConfig; import com.casic.missiles.pojo.RuleConfig; -import com.casic.missiles.pojo.RuleEventConfig; -import com.casic.missiles.registry.RuleEventRegistry; -import com.casic.missiles.util.SpringContextUtil; import org.apache.commons.lang3.StringUtils; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Objects; import java.util.stream.Collectors; public class GenericRuleResolver { 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 d7b22f7..94ba4f9 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 @@ -2,6 +2,7 @@ import com.casic.missiles.parser.resolver.fields.FieldResolver; import com.casic.missiles.pojo.FieldRuleConfig; +import com.casic.missiles.util.SpringContextUtil; import org.apache.commons.lang3.StringUtils; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.casic.missiles.parser.resolver.FieldParser; @@ -9,7 +10,6 @@ import com.casic.missiles.pojo.FieldConfig; import com.casic.missiles.pojo.RuleConfig; import com.casic.missiles.registry.FieldConfigRegistry; -import com.casic.missiles.util.SpringContextUtil; import java.util.HashMap; import java.util.List; 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 92e2424..4919833 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 @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.casic.missiles.enums.parser.FrameStructEnum; +import com.casic.missiles.util.SpringContextUtil; import org.apache.commons.lang3.StringUtils; import com.casic.missiles.parser.resolver.FieldParser; import com.casic.missiles.parser.resolver.fields.DefaultProtocolFieldParser; @@ -13,7 +14,6 @@ import com.casic.missiles.pojo.ProtocolFieldConfig; import com.casic.missiles.registry.ProtocolFieldConfigRegistry; import com.casic.missiles.util.ProtocolFieldConfigUtil; -import com.casic.missiles.util.SpringContextUtil; import lombok.extern.slf4j.Slf4j; import java.util.*; diff --git a/casic-iot-common/src/main/java/com/casic/missiles/util/SpringContextUtil.java b/casic-iot-common/src/main/java/com/casic/missiles/util/SpringContextUtil.java index 9b3ab90..45701f3 100644 --- a/casic-iot-common/src/main/java/com/casic/missiles/util/SpringContextUtil.java +++ b/casic-iot-common/src/main/java/com/casic/missiles/util/SpringContextUtil.java @@ -60,7 +60,10 @@ @SuppressWarnings("unchecked") public static T getBean(String name) throws BeansException { - return (T) beanFactory.getBean(name); + if (beanFactory.containsBean(name)) { + return (T) beanFactory.getBean(name); + } + return null; } public static boolean containsBean(String name) { diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml index 962b944..1652cf1 100644 --- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml +++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml @@ -27,7 +27,7 @@ SELECT device_type AS "deviceType",create_time AS "createTime",d.devcode, model,imei,d.cell,name AS "deviceName",status,d.id,create_user_id AS "createUserId", - create_user_name AS "createUserName" + create_user_name AS "createUserName", group_id as groupId, product_id as productId FROM ( SELECT * FROM device diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceServiceImpl.java index b276a17..375f189 100644 --- a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceServiceImpl.java +++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceServiceImpl.java @@ -57,7 +57,6 @@ private final ProductInfoMapper productInfoMapper; private final DeviceGroupMapper deviceGroupMapper; private final SysCommonMapper sysCommonMapper; - private final DeviceImeiIccidMapper imeiIccidMapper; @Override public Page listPage(Page page, DeviceListRequest request, DataScope dataScope) throws Exception { @@ -67,16 +66,24 @@ } List deviceListVOS = this.baseMapper.listPage(page, request, dataScope); List productInfoList = productInfoMapper.selectList(null); + List groupList = deviceGroupMapper.selectList(null); Map productInfoMap = productInfoList.stream().collect( Collectors.toMap(ProductInfo::getId, e -> e) ); + Map groupMap = groupList.stream().collect( + Collectors.toMap(DeviceGroup::getId, e -> e) + ); //处理产品映射,转化字典 for (DeviceListVO deviceListVO : deviceListVOS) { - ProductInfo productInfo = productInfoMap.containsKey(deviceListVO.getProductId()) ? null : productInfoMap.get(deviceListVO.getProductId()); + ProductInfo productInfo = productInfoMap.getOrDefault(deviceListVO.getProductId(), null); + DeviceGroup group = groupMap.getOrDefault(deviceListVO.getGroupId(), null); if (ObjectUtils.isNotEmpty(productInfo)) { deviceListVO.setProductName(productInfo.getName()); deviceListVO.setEncipherType(productInfo.getProductType()); } + if (ObjectUtil.isNotNull(group)) { + deviceListVO.setGroupName(group.getGroupName()); + } DictCodeUtils.convertDictCodeToName(deviceListVO); } page.setRecords(deviceListVOS); diff --git a/sensorhub-core/src/main/java/com/casic/missiles/listeners/ProtocolProcessEventListener.java b/sensorhub-core/src/main/java/com/casic/missiles/listeners/ProtocolProcessEventListener.java index 2258d38..f58e461 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/listeners/ProtocolProcessEventListener.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/listeners/ProtocolProcessEventListener.java @@ -6,7 +6,6 @@ import com.casic.missiles.cache.GuavaCacheUtil; import com.casic.missiles.model.Device; import com.casic.missiles.model.DeviceData; -import com.casic.missiles.pojo.ParseResult; import com.casic.missiles.pojo.ProcessEventTask; import com.casic.missiles.service.IDeviceDataService; import com.casic.missiles.service.impl.DeviceDataServiceImpl; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/netty/handler/SensorhubServerChannelInitialHandler.java b/sensorhub-core/src/main/java/com/casic/missiles/netty/handler/SensorhubServerChannelInitialHandler.java index dabfe36..509d1f9 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/netty/handler/SensorhubServerChannelInitialHandler.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/netty/handler/SensorhubServerChannelInitialHandler.java @@ -1,20 +1,12 @@ package com.casic.missiles.netty.handler; import com.casic.missiles.parser.BirmmHexDecoder; -import com.casic.missiles.parser.SensorhubDecoder; -import com.casic.missiles.parser.safe.impl.Sm4; import com.casic.missiles.replier.CommonHexReplier; -import com.casic.missiles.replier.SensorhubReplier; -import com.casic.missiles.util.SpringContextUtil; import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelPipeline; import io.netty.channel.socket.SocketChannel; -import io.netty.handler.logging.LogLevel; -import io.netty.handler.logging.LoggingHandler; import org.springframework.stereotype.Component; -import javax.annotation.Resource; - /** * @author cz * @date 2023-06-05 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/resolver/combined/GenericCombinedFieldResolver.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/resolver/combined/GenericCombinedFieldResolver.java index 6bacdbe..a6c5d56 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/resolver/combined/GenericCombinedFieldResolver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/resolver/combined/GenericCombinedFieldResolver.java @@ -2,10 +2,8 @@ import cn.hutool.core.lang.Assert; import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.casic.missiles.enums.EngineExceptionEnum; import com.casic.missiles.exception.EngineException; -import com.casic.missiles.parser.GenericProtocolParser; import com.casic.missiles.parser.resolver.combined.impl.BizFieldParseProcessor; import com.casic.missiles.parser.resolver.combined.impl.PreBizFieldParseProcessor; import com.casic.missiles.parser.resolver.combined.impl.PreLeadCodeProcessor; @@ -14,18 +12,11 @@ import com.casic.missiles.pojo.CombinedFieldProcessorParam; import com.casic.missiles.pojo.FieldConfig; import com.casic.missiles.pojo.FieldRuleConfig; -import com.casic.missiles.util.SpringContextUtil; -import io.netty.buffer.ByteBuf; -import io.netty.buffer.ByteBufUtil; -import io.netty.util.internal.PlatformDependent; import lombok.extern.slf4j.Slf4j; -import org.springframework.util.ReflectionUtils; -import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; import java.util.Map; -import java.util.concurrent.atomic.AtomicLong; import java.util.stream.Collectors; /** diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/rule/GenericRuleResolver.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/rule/GenericRuleResolver.java index 797a75c..7905f74 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/rule/GenericRuleResolver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/rule/GenericRuleResolver.java @@ -1,19 +1,12 @@ package com.casic.missiles.parser.rule; -import cn.hutool.core.lang.Assert; -import com.casic.missiles.enums.EngineExceptionEnum; -import com.casic.missiles.exception.EngineException; import com.casic.missiles.pojo.ProtocolFieldConfig; import com.casic.missiles.pojo.RuleConfig; -import com.casic.missiles.pojo.RuleEventConfig; -import com.casic.missiles.registry.RuleEventRegistry; -import com.casic.missiles.util.SpringContextUtil; import org.apache.commons.lang3.StringUtils; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Objects; import java.util.stream.Collectors; public class GenericRuleResolver { 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 d7b22f7..94ba4f9 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 @@ -2,6 +2,7 @@ import com.casic.missiles.parser.resolver.fields.FieldResolver; import com.casic.missiles.pojo.FieldRuleConfig; +import com.casic.missiles.util.SpringContextUtil; import org.apache.commons.lang3.StringUtils; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.casic.missiles.parser.resolver.FieldParser; @@ -9,7 +10,6 @@ import com.casic.missiles.pojo.FieldConfig; import com.casic.missiles.pojo.RuleConfig; import com.casic.missiles.registry.FieldConfigRegistry; -import com.casic.missiles.util.SpringContextUtil; import java.util.HashMap; import java.util.List; 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 92e2424..4919833 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 @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.casic.missiles.enums.parser.FrameStructEnum; +import com.casic.missiles.util.SpringContextUtil; import org.apache.commons.lang3.StringUtils; import com.casic.missiles.parser.resolver.FieldParser; import com.casic.missiles.parser.resolver.fields.DefaultProtocolFieldParser; @@ -13,7 +14,6 @@ import com.casic.missiles.pojo.ProtocolFieldConfig; import com.casic.missiles.registry.ProtocolFieldConfigRegistry; import com.casic.missiles.util.ProtocolFieldConfigUtil; -import com.casic.missiles.util.SpringContextUtil; import lombok.extern.slf4j.Slf4j; import java.util.*; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/service/impl/GeneralServiceImpl.java b/sensorhub-core/src/main/java/com/casic/missiles/service/impl/GeneralServiceImpl.java index 79b47c2..5740eb2 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/service/impl/GeneralServiceImpl.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/service/impl/GeneralServiceImpl.java @@ -97,7 +97,8 @@ // 密钥根据设备编号获取 SafeStrategy safeStrategy; if (deviceType.equalsIgnoreCase(BirmmDeviceTypeEnums.METHANE.getValue()) || - deviceType.equalsIgnoreCase(BirmmDeviceTypeEnums.SENTINEL.getValue())) { + deviceType.equalsIgnoreCase(BirmmDeviceTypeEnums.SENTINEL.getValue()) || + deviceType.equalsIgnoreCase(BirmmDeviceTypeEnums.WELL.getValue())) { safeStrategy = SpringContextUtil.getBean(Sm4.class); } else { safeStrategy = SpringContextUtil.getBean(TeaUtilsX.class); @@ -389,7 +390,8 @@ // 密钥根据设备编号获取 SafeStrategy safeStrategy; if (baseReply.getDeviceType().equalsIgnoreCase(BirmmDeviceTypeEnums.METHANE.getValue()) || - baseReply.getDeviceType().equalsIgnoreCase(BirmmDeviceTypeEnums.SENTINEL.getValue())) { + baseReply.getDeviceType().equalsIgnoreCase(BirmmDeviceTypeEnums.SENTINEL.getValue()) || + baseReply.getDeviceType().equalsIgnoreCase(BirmmDeviceTypeEnums.WELL.getValue())) { safeStrategy = SpringContextUtil.getBean(Sm4.class); } else { safeStrategy = SpringContextUtil.getBean(TeaUtilsX.class); diff --git a/sensorhub-core/src/main/java/com/casic/missiles/util/SpringContextUtil.java b/sensorhub-core/src/main/java/com/casic/missiles/util/SpringContextUtil.java deleted file mode 100644 index 9b3ab90..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/util/SpringContextUtil.java +++ /dev/null @@ -1,106 +0,0 @@ -package com.casic.missiles.util; - -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.BeansException; -import org.springframework.beans.factory.config.BeanFactoryPostProcessor; -import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; -import org.springframework.beans.factory.support.AbstractBeanDefinition; -import org.springframework.beans.factory.support.BeanDefinitionBuilder; -import org.springframework.beans.factory.support.BeanDefinitionReaderUtils; -import org.springframework.beans.factory.support.BeanDefinitionRegistry; -import org.springframework.context.ApplicationContext; -import org.springframework.context.ApplicationContextAware; -import org.springframework.context.annotation.Bean; -import org.springframework.stereotype.Component; -import org.springframework.util.CollectionUtils; - -import java.util.List; -import java.util.Map; -import java.util.concurrent.ForkJoinPool; -import java.util.function.Function; - -/** - * @Description: Spring应用上下文工具 - * @Author: wangpeng - * @Date: 2022/8/11 18:04 - */ -@Component -public class SpringContextUtil implements BeanFactoryPostProcessor, ApplicationContextAware { - /** - * Spring应用上下文环境 - */ - private static ApplicationContext applicationContext; - - private static ConfigurableListableBeanFactory beanFactory; - - /** - * 实现ApplicationContextAware接口的回调方法,设置上下文环境 - */ - @Override - public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { - SpringContextUtil.applicationContext = applicationContext; - } - - @Override - public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { - SpringContextUtil.beanFactory = beanFactory; - } - - public static ApplicationContext getApplicationContext() { - return applicationContext; - } - -// public static Object getBean(String beanId) throws BeansException { -// return applicationContext.getBean(beanId); -// } - - public static T getBean(Class requiredType) { - return (T) applicationContext.getBean(requiredType); - } - - @SuppressWarnings("unchecked") - public static T getBean(String name) throws BeansException { - return (T) beanFactory.getBean(name); - } - - public static boolean containsBean(String name) { - return beanFactory.containsBean(name); - } - - public static T registerBean(String beanName, Class clazz, Function function) { - // 生成bean定义 - BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder.genericBeanDefinition(clazz); - // 执行bean处理函数 - AbstractBeanDefinition beanDefinition = function.apply(beanDefinitionBuilder); - BeanDefinitionRegistry beanFactory = (BeanDefinitionRegistry) SpringContextUtil.beanFactory; - // 判断是否通过beanName注册 - if (StringUtils.isNotBlank(beanName) && !containsBean(beanName)) { - beanFactory.registerBeanDefinition(beanName, beanDefinition); - return getBean(beanName); - } else { - // 非命名bean注册 - String name = BeanDefinitionReaderUtils.registerWithGeneratedName(beanDefinition, beanFactory); - return getBean(name); - } - } - - public static T registerBean(String beanName, Class clazz, List args, Map property) { - return registerBean(beanName, clazz, beanDefinitionBuilder -> { - // 放入构造参数 - if (!CollectionUtils.isEmpty(args)) { - args.forEach(beanDefinitionBuilder::addConstructorArgValue); - } - // 放入属性 - if (!CollectionUtils.isEmpty(property)) { - property.forEach(beanDefinitionBuilder::addPropertyValue); - } - return beanDefinitionBuilder.getBeanDefinition(); - }); - } - - @Bean - public ForkJoinPool forkJoinPool() { - return new ForkJoinPool(100); - } - -} diff --git a/casic-iot-common/src/main/java/com/casic/missiles/util/SpringContextUtil.java b/casic-iot-common/src/main/java/com/casic/missiles/util/SpringContextUtil.java index 9b3ab90..45701f3 100644 --- a/casic-iot-common/src/main/java/com/casic/missiles/util/SpringContextUtil.java +++ b/casic-iot-common/src/main/java/com/casic/missiles/util/SpringContextUtil.java @@ -60,7 +60,10 @@ @SuppressWarnings("unchecked") public static T getBean(String name) throws BeansException { - return (T) beanFactory.getBean(name); + if (beanFactory.containsBean(name)) { + return (T) beanFactory.getBean(name); + } + return null; } public static boolean containsBean(String name) { diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml index 962b944..1652cf1 100644 --- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml +++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml @@ -27,7 +27,7 @@ SELECT device_type AS "deviceType",create_time AS "createTime",d.devcode, model,imei,d.cell,name AS "deviceName",status,d.id,create_user_id AS "createUserId", - create_user_name AS "createUserName" + create_user_name AS "createUserName", group_id as groupId, product_id as productId FROM ( SELECT * FROM device diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceServiceImpl.java index b276a17..375f189 100644 --- a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceServiceImpl.java +++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceServiceImpl.java @@ -57,7 +57,6 @@ private final ProductInfoMapper productInfoMapper; private final DeviceGroupMapper deviceGroupMapper; private final SysCommonMapper sysCommonMapper; - private final DeviceImeiIccidMapper imeiIccidMapper; @Override public Page listPage(Page page, DeviceListRequest request, DataScope dataScope) throws Exception { @@ -67,16 +66,24 @@ } List deviceListVOS = this.baseMapper.listPage(page, request, dataScope); List productInfoList = productInfoMapper.selectList(null); + List groupList = deviceGroupMapper.selectList(null); Map productInfoMap = productInfoList.stream().collect( Collectors.toMap(ProductInfo::getId, e -> e) ); + Map groupMap = groupList.stream().collect( + Collectors.toMap(DeviceGroup::getId, e -> e) + ); //处理产品映射,转化字典 for (DeviceListVO deviceListVO : deviceListVOS) { - ProductInfo productInfo = productInfoMap.containsKey(deviceListVO.getProductId()) ? null : productInfoMap.get(deviceListVO.getProductId()); + ProductInfo productInfo = productInfoMap.getOrDefault(deviceListVO.getProductId(), null); + DeviceGroup group = groupMap.getOrDefault(deviceListVO.getGroupId(), null); if (ObjectUtils.isNotEmpty(productInfo)) { deviceListVO.setProductName(productInfo.getName()); deviceListVO.setEncipherType(productInfo.getProductType()); } + if (ObjectUtil.isNotNull(group)) { + deviceListVO.setGroupName(group.getGroupName()); + } DictCodeUtils.convertDictCodeToName(deviceListVO); } page.setRecords(deviceListVOS); diff --git a/sensorhub-core/src/main/java/com/casic/missiles/listeners/ProtocolProcessEventListener.java b/sensorhub-core/src/main/java/com/casic/missiles/listeners/ProtocolProcessEventListener.java index 2258d38..f58e461 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/listeners/ProtocolProcessEventListener.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/listeners/ProtocolProcessEventListener.java @@ -6,7 +6,6 @@ import com.casic.missiles.cache.GuavaCacheUtil; import com.casic.missiles.model.Device; import com.casic.missiles.model.DeviceData; -import com.casic.missiles.pojo.ParseResult; import com.casic.missiles.pojo.ProcessEventTask; import com.casic.missiles.service.IDeviceDataService; import com.casic.missiles.service.impl.DeviceDataServiceImpl; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/netty/handler/SensorhubServerChannelInitialHandler.java b/sensorhub-core/src/main/java/com/casic/missiles/netty/handler/SensorhubServerChannelInitialHandler.java index dabfe36..509d1f9 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/netty/handler/SensorhubServerChannelInitialHandler.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/netty/handler/SensorhubServerChannelInitialHandler.java @@ -1,20 +1,12 @@ package com.casic.missiles.netty.handler; import com.casic.missiles.parser.BirmmHexDecoder; -import com.casic.missiles.parser.SensorhubDecoder; -import com.casic.missiles.parser.safe.impl.Sm4; import com.casic.missiles.replier.CommonHexReplier; -import com.casic.missiles.replier.SensorhubReplier; -import com.casic.missiles.util.SpringContextUtil; import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelPipeline; import io.netty.channel.socket.SocketChannel; -import io.netty.handler.logging.LogLevel; -import io.netty.handler.logging.LoggingHandler; import org.springframework.stereotype.Component; -import javax.annotation.Resource; - /** * @author cz * @date 2023-06-05 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/resolver/combined/GenericCombinedFieldResolver.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/resolver/combined/GenericCombinedFieldResolver.java index 6bacdbe..a6c5d56 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/resolver/combined/GenericCombinedFieldResolver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/resolver/combined/GenericCombinedFieldResolver.java @@ -2,10 +2,8 @@ import cn.hutool.core.lang.Assert; import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.casic.missiles.enums.EngineExceptionEnum; import com.casic.missiles.exception.EngineException; -import com.casic.missiles.parser.GenericProtocolParser; import com.casic.missiles.parser.resolver.combined.impl.BizFieldParseProcessor; import com.casic.missiles.parser.resolver.combined.impl.PreBizFieldParseProcessor; import com.casic.missiles.parser.resolver.combined.impl.PreLeadCodeProcessor; @@ -14,18 +12,11 @@ import com.casic.missiles.pojo.CombinedFieldProcessorParam; import com.casic.missiles.pojo.FieldConfig; import com.casic.missiles.pojo.FieldRuleConfig; -import com.casic.missiles.util.SpringContextUtil; -import io.netty.buffer.ByteBuf; -import io.netty.buffer.ByteBufUtil; -import io.netty.util.internal.PlatformDependent; import lombok.extern.slf4j.Slf4j; -import org.springframework.util.ReflectionUtils; -import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; import java.util.Map; -import java.util.concurrent.atomic.AtomicLong; import java.util.stream.Collectors; /** diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/rule/GenericRuleResolver.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/rule/GenericRuleResolver.java index 797a75c..7905f74 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/rule/GenericRuleResolver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/rule/GenericRuleResolver.java @@ -1,19 +1,12 @@ package com.casic.missiles.parser.rule; -import cn.hutool.core.lang.Assert; -import com.casic.missiles.enums.EngineExceptionEnum; -import com.casic.missiles.exception.EngineException; import com.casic.missiles.pojo.ProtocolFieldConfig; import com.casic.missiles.pojo.RuleConfig; -import com.casic.missiles.pojo.RuleEventConfig; -import com.casic.missiles.registry.RuleEventRegistry; -import com.casic.missiles.util.SpringContextUtil; import org.apache.commons.lang3.StringUtils; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Objects; import java.util.stream.Collectors; public class GenericRuleResolver { 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 d7b22f7..94ba4f9 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 @@ -2,6 +2,7 @@ import com.casic.missiles.parser.resolver.fields.FieldResolver; import com.casic.missiles.pojo.FieldRuleConfig; +import com.casic.missiles.util.SpringContextUtil; import org.apache.commons.lang3.StringUtils; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.casic.missiles.parser.resolver.FieldParser; @@ -9,7 +10,6 @@ import com.casic.missiles.pojo.FieldConfig; import com.casic.missiles.pojo.RuleConfig; import com.casic.missiles.registry.FieldConfigRegistry; -import com.casic.missiles.util.SpringContextUtil; import java.util.HashMap; import java.util.List; 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 92e2424..4919833 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 @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.casic.missiles.enums.parser.FrameStructEnum; +import com.casic.missiles.util.SpringContextUtil; import org.apache.commons.lang3.StringUtils; import com.casic.missiles.parser.resolver.FieldParser; import com.casic.missiles.parser.resolver.fields.DefaultProtocolFieldParser; @@ -13,7 +14,6 @@ import com.casic.missiles.pojo.ProtocolFieldConfig; import com.casic.missiles.registry.ProtocolFieldConfigRegistry; import com.casic.missiles.util.ProtocolFieldConfigUtil; -import com.casic.missiles.util.SpringContextUtil; import lombok.extern.slf4j.Slf4j; import java.util.*; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/service/impl/GeneralServiceImpl.java b/sensorhub-core/src/main/java/com/casic/missiles/service/impl/GeneralServiceImpl.java index 79b47c2..5740eb2 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/service/impl/GeneralServiceImpl.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/service/impl/GeneralServiceImpl.java @@ -97,7 +97,8 @@ // 密钥根据设备编号获取 SafeStrategy safeStrategy; if (deviceType.equalsIgnoreCase(BirmmDeviceTypeEnums.METHANE.getValue()) || - deviceType.equalsIgnoreCase(BirmmDeviceTypeEnums.SENTINEL.getValue())) { + deviceType.equalsIgnoreCase(BirmmDeviceTypeEnums.SENTINEL.getValue()) || + deviceType.equalsIgnoreCase(BirmmDeviceTypeEnums.WELL.getValue())) { safeStrategy = SpringContextUtil.getBean(Sm4.class); } else { safeStrategy = SpringContextUtil.getBean(TeaUtilsX.class); @@ -389,7 +390,8 @@ // 密钥根据设备编号获取 SafeStrategy safeStrategy; if (baseReply.getDeviceType().equalsIgnoreCase(BirmmDeviceTypeEnums.METHANE.getValue()) || - baseReply.getDeviceType().equalsIgnoreCase(BirmmDeviceTypeEnums.SENTINEL.getValue())) { + baseReply.getDeviceType().equalsIgnoreCase(BirmmDeviceTypeEnums.SENTINEL.getValue()) || + baseReply.getDeviceType().equalsIgnoreCase(BirmmDeviceTypeEnums.WELL.getValue())) { safeStrategy = SpringContextUtil.getBean(Sm4.class); } else { safeStrategy = SpringContextUtil.getBean(TeaUtilsX.class); diff --git a/sensorhub-core/src/main/java/com/casic/missiles/util/SpringContextUtil.java b/sensorhub-core/src/main/java/com/casic/missiles/util/SpringContextUtil.java deleted file mode 100644 index 9b3ab90..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/util/SpringContextUtil.java +++ /dev/null @@ -1,106 +0,0 @@ -package com.casic.missiles.util; - -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.BeansException; -import org.springframework.beans.factory.config.BeanFactoryPostProcessor; -import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; -import org.springframework.beans.factory.support.AbstractBeanDefinition; -import org.springframework.beans.factory.support.BeanDefinitionBuilder; -import org.springframework.beans.factory.support.BeanDefinitionReaderUtils; -import org.springframework.beans.factory.support.BeanDefinitionRegistry; -import org.springframework.context.ApplicationContext; -import org.springframework.context.ApplicationContextAware; -import org.springframework.context.annotation.Bean; -import org.springframework.stereotype.Component; -import org.springframework.util.CollectionUtils; - -import java.util.List; -import java.util.Map; -import java.util.concurrent.ForkJoinPool; -import java.util.function.Function; - -/** - * @Description: Spring应用上下文工具 - * @Author: wangpeng - * @Date: 2022/8/11 18:04 - */ -@Component -public class SpringContextUtil implements BeanFactoryPostProcessor, ApplicationContextAware { - /** - * Spring应用上下文环境 - */ - private static ApplicationContext applicationContext; - - private static ConfigurableListableBeanFactory beanFactory; - - /** - * 实现ApplicationContextAware接口的回调方法,设置上下文环境 - */ - @Override - public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { - SpringContextUtil.applicationContext = applicationContext; - } - - @Override - public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { - SpringContextUtil.beanFactory = beanFactory; - } - - public static ApplicationContext getApplicationContext() { - return applicationContext; - } - -// public static Object getBean(String beanId) throws BeansException { -// return applicationContext.getBean(beanId); -// } - - public static T getBean(Class requiredType) { - return (T) applicationContext.getBean(requiredType); - } - - @SuppressWarnings("unchecked") - public static T getBean(String name) throws BeansException { - return (T) beanFactory.getBean(name); - } - - public static boolean containsBean(String name) { - return beanFactory.containsBean(name); - } - - public static T registerBean(String beanName, Class clazz, Function function) { - // 生成bean定义 - BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder.genericBeanDefinition(clazz); - // 执行bean处理函数 - AbstractBeanDefinition beanDefinition = function.apply(beanDefinitionBuilder); - BeanDefinitionRegistry beanFactory = (BeanDefinitionRegistry) SpringContextUtil.beanFactory; - // 判断是否通过beanName注册 - if (StringUtils.isNotBlank(beanName) && !containsBean(beanName)) { - beanFactory.registerBeanDefinition(beanName, beanDefinition); - return getBean(beanName); - } else { - // 非命名bean注册 - String name = BeanDefinitionReaderUtils.registerWithGeneratedName(beanDefinition, beanFactory); - return getBean(name); - } - } - - public static T registerBean(String beanName, Class clazz, List args, Map property) { - return registerBean(beanName, clazz, beanDefinitionBuilder -> { - // 放入构造参数 - if (!CollectionUtils.isEmpty(args)) { - args.forEach(beanDefinitionBuilder::addConstructorArgValue); - } - // 放入属性 - if (!CollectionUtils.isEmpty(property)) { - property.forEach(beanDefinitionBuilder::addPropertyValue); - } - return beanDefinitionBuilder.getBeanDefinition(); - }); - } - - @Bean - public ForkJoinPool forkJoinPool() { - return new ForkJoinPool(100); - } - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/util/aep/AepCommandSend.java b/sensorhub-core/src/main/java/com/casic/missiles/util/aep/AepCommandSend.java index be3a404..963e002 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/util/aep/AepCommandSend.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/util/aep/AepCommandSend.java @@ -11,7 +11,6 @@ import lombok.extern.slf4j.Slf4j; import java.nio.charset.StandardCharsets; -import java.util.Base64; import java.util.HashMap; import java.util.Map; diff --git a/sensorhub-service-birmm/pom.xml b/sensorhub-service-birmm/pom.xml index bb7a84b..3622c9b 100644 --- a/sensorhub-service-birmm/pom.xml +++ b/sensorhub-service-birmm/pom.xml @@ -18,6 +18,12 @@ sensorhub-support 1.0.0-SNAPSHOT + + com.casic + casic-iot-common + 1.0.0-SNAPSHOT + compile + \ No newline at end of file diff --git a/casic-iot-common/src/main/java/com/casic/missiles/util/SpringContextUtil.java b/casic-iot-common/src/main/java/com/casic/missiles/util/SpringContextUtil.java index 9b3ab90..45701f3 100644 --- a/casic-iot-common/src/main/java/com/casic/missiles/util/SpringContextUtil.java +++ b/casic-iot-common/src/main/java/com/casic/missiles/util/SpringContextUtil.java @@ -60,7 +60,10 @@ @SuppressWarnings("unchecked") public static T getBean(String name) throws BeansException { - return (T) beanFactory.getBean(name); + if (beanFactory.containsBean(name)) { + return (T) beanFactory.getBean(name); + } + return null; } public static boolean containsBean(String name) { diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml index 962b944..1652cf1 100644 --- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml +++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml @@ -27,7 +27,7 @@ SELECT device_type AS "deviceType",create_time AS "createTime",d.devcode, model,imei,d.cell,name AS "deviceName",status,d.id,create_user_id AS "createUserId", - create_user_name AS "createUserName" + create_user_name AS "createUserName", group_id as groupId, product_id as productId FROM ( SELECT * FROM device diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceServiceImpl.java index b276a17..375f189 100644 --- a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceServiceImpl.java +++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceServiceImpl.java @@ -57,7 +57,6 @@ private final ProductInfoMapper productInfoMapper; private final DeviceGroupMapper deviceGroupMapper; private final SysCommonMapper sysCommonMapper; - private final DeviceImeiIccidMapper imeiIccidMapper; @Override public Page listPage(Page page, DeviceListRequest request, DataScope dataScope) throws Exception { @@ -67,16 +66,24 @@ } List deviceListVOS = this.baseMapper.listPage(page, request, dataScope); List productInfoList = productInfoMapper.selectList(null); + List groupList = deviceGroupMapper.selectList(null); Map productInfoMap = productInfoList.stream().collect( Collectors.toMap(ProductInfo::getId, e -> e) ); + Map groupMap = groupList.stream().collect( + Collectors.toMap(DeviceGroup::getId, e -> e) + ); //处理产品映射,转化字典 for (DeviceListVO deviceListVO : deviceListVOS) { - ProductInfo productInfo = productInfoMap.containsKey(deviceListVO.getProductId()) ? null : productInfoMap.get(deviceListVO.getProductId()); + ProductInfo productInfo = productInfoMap.getOrDefault(deviceListVO.getProductId(), null); + DeviceGroup group = groupMap.getOrDefault(deviceListVO.getGroupId(), null); if (ObjectUtils.isNotEmpty(productInfo)) { deviceListVO.setProductName(productInfo.getName()); deviceListVO.setEncipherType(productInfo.getProductType()); } + if (ObjectUtil.isNotNull(group)) { + deviceListVO.setGroupName(group.getGroupName()); + } DictCodeUtils.convertDictCodeToName(deviceListVO); } page.setRecords(deviceListVOS); diff --git a/sensorhub-core/src/main/java/com/casic/missiles/listeners/ProtocolProcessEventListener.java b/sensorhub-core/src/main/java/com/casic/missiles/listeners/ProtocolProcessEventListener.java index 2258d38..f58e461 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/listeners/ProtocolProcessEventListener.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/listeners/ProtocolProcessEventListener.java @@ -6,7 +6,6 @@ import com.casic.missiles.cache.GuavaCacheUtil; import com.casic.missiles.model.Device; import com.casic.missiles.model.DeviceData; -import com.casic.missiles.pojo.ParseResult; import com.casic.missiles.pojo.ProcessEventTask; import com.casic.missiles.service.IDeviceDataService; import com.casic.missiles.service.impl.DeviceDataServiceImpl; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/netty/handler/SensorhubServerChannelInitialHandler.java b/sensorhub-core/src/main/java/com/casic/missiles/netty/handler/SensorhubServerChannelInitialHandler.java index dabfe36..509d1f9 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/netty/handler/SensorhubServerChannelInitialHandler.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/netty/handler/SensorhubServerChannelInitialHandler.java @@ -1,20 +1,12 @@ package com.casic.missiles.netty.handler; import com.casic.missiles.parser.BirmmHexDecoder; -import com.casic.missiles.parser.SensorhubDecoder; -import com.casic.missiles.parser.safe.impl.Sm4; import com.casic.missiles.replier.CommonHexReplier; -import com.casic.missiles.replier.SensorhubReplier; -import com.casic.missiles.util.SpringContextUtil; import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelPipeline; import io.netty.channel.socket.SocketChannel; -import io.netty.handler.logging.LogLevel; -import io.netty.handler.logging.LoggingHandler; import org.springframework.stereotype.Component; -import javax.annotation.Resource; - /** * @author cz * @date 2023-06-05 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/resolver/combined/GenericCombinedFieldResolver.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/resolver/combined/GenericCombinedFieldResolver.java index 6bacdbe..a6c5d56 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/resolver/combined/GenericCombinedFieldResolver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/resolver/combined/GenericCombinedFieldResolver.java @@ -2,10 +2,8 @@ import cn.hutool.core.lang.Assert; import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.casic.missiles.enums.EngineExceptionEnum; import com.casic.missiles.exception.EngineException; -import com.casic.missiles.parser.GenericProtocolParser; import com.casic.missiles.parser.resolver.combined.impl.BizFieldParseProcessor; import com.casic.missiles.parser.resolver.combined.impl.PreBizFieldParseProcessor; import com.casic.missiles.parser.resolver.combined.impl.PreLeadCodeProcessor; @@ -14,18 +12,11 @@ import com.casic.missiles.pojo.CombinedFieldProcessorParam; import com.casic.missiles.pojo.FieldConfig; import com.casic.missiles.pojo.FieldRuleConfig; -import com.casic.missiles.util.SpringContextUtil; -import io.netty.buffer.ByteBuf; -import io.netty.buffer.ByteBufUtil; -import io.netty.util.internal.PlatformDependent; import lombok.extern.slf4j.Slf4j; -import org.springframework.util.ReflectionUtils; -import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; import java.util.Map; -import java.util.concurrent.atomic.AtomicLong; import java.util.stream.Collectors; /** diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/rule/GenericRuleResolver.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/rule/GenericRuleResolver.java index 797a75c..7905f74 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/rule/GenericRuleResolver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/rule/GenericRuleResolver.java @@ -1,19 +1,12 @@ package com.casic.missiles.parser.rule; -import cn.hutool.core.lang.Assert; -import com.casic.missiles.enums.EngineExceptionEnum; -import com.casic.missiles.exception.EngineException; import com.casic.missiles.pojo.ProtocolFieldConfig; import com.casic.missiles.pojo.RuleConfig; -import com.casic.missiles.pojo.RuleEventConfig; -import com.casic.missiles.registry.RuleEventRegistry; -import com.casic.missiles.util.SpringContextUtil; import org.apache.commons.lang3.StringUtils; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Objects; import java.util.stream.Collectors; public class GenericRuleResolver { 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 d7b22f7..94ba4f9 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 @@ -2,6 +2,7 @@ import com.casic.missiles.parser.resolver.fields.FieldResolver; import com.casic.missiles.pojo.FieldRuleConfig; +import com.casic.missiles.util.SpringContextUtil; import org.apache.commons.lang3.StringUtils; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.casic.missiles.parser.resolver.FieldParser; @@ -9,7 +10,6 @@ import com.casic.missiles.pojo.FieldConfig; import com.casic.missiles.pojo.RuleConfig; import com.casic.missiles.registry.FieldConfigRegistry; -import com.casic.missiles.util.SpringContextUtil; import java.util.HashMap; import java.util.List; 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 92e2424..4919833 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 @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.casic.missiles.enums.parser.FrameStructEnum; +import com.casic.missiles.util.SpringContextUtil; import org.apache.commons.lang3.StringUtils; import com.casic.missiles.parser.resolver.FieldParser; import com.casic.missiles.parser.resolver.fields.DefaultProtocolFieldParser; @@ -13,7 +14,6 @@ import com.casic.missiles.pojo.ProtocolFieldConfig; import com.casic.missiles.registry.ProtocolFieldConfigRegistry; import com.casic.missiles.util.ProtocolFieldConfigUtil; -import com.casic.missiles.util.SpringContextUtil; import lombok.extern.slf4j.Slf4j; import java.util.*; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/service/impl/GeneralServiceImpl.java b/sensorhub-core/src/main/java/com/casic/missiles/service/impl/GeneralServiceImpl.java index 79b47c2..5740eb2 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/service/impl/GeneralServiceImpl.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/service/impl/GeneralServiceImpl.java @@ -97,7 +97,8 @@ // 密钥根据设备编号获取 SafeStrategy safeStrategy; if (deviceType.equalsIgnoreCase(BirmmDeviceTypeEnums.METHANE.getValue()) || - deviceType.equalsIgnoreCase(BirmmDeviceTypeEnums.SENTINEL.getValue())) { + deviceType.equalsIgnoreCase(BirmmDeviceTypeEnums.SENTINEL.getValue()) || + deviceType.equalsIgnoreCase(BirmmDeviceTypeEnums.WELL.getValue())) { safeStrategy = SpringContextUtil.getBean(Sm4.class); } else { safeStrategy = SpringContextUtil.getBean(TeaUtilsX.class); @@ -389,7 +390,8 @@ // 密钥根据设备编号获取 SafeStrategy safeStrategy; if (baseReply.getDeviceType().equalsIgnoreCase(BirmmDeviceTypeEnums.METHANE.getValue()) || - baseReply.getDeviceType().equalsIgnoreCase(BirmmDeviceTypeEnums.SENTINEL.getValue())) { + baseReply.getDeviceType().equalsIgnoreCase(BirmmDeviceTypeEnums.SENTINEL.getValue()) || + baseReply.getDeviceType().equalsIgnoreCase(BirmmDeviceTypeEnums.WELL.getValue())) { safeStrategy = SpringContextUtil.getBean(Sm4.class); } else { safeStrategy = SpringContextUtil.getBean(TeaUtilsX.class); diff --git a/sensorhub-core/src/main/java/com/casic/missiles/util/SpringContextUtil.java b/sensorhub-core/src/main/java/com/casic/missiles/util/SpringContextUtil.java deleted file mode 100644 index 9b3ab90..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/util/SpringContextUtil.java +++ /dev/null @@ -1,106 +0,0 @@ -package com.casic.missiles.util; - -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.BeansException; -import org.springframework.beans.factory.config.BeanFactoryPostProcessor; -import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; -import org.springframework.beans.factory.support.AbstractBeanDefinition; -import org.springframework.beans.factory.support.BeanDefinitionBuilder; -import org.springframework.beans.factory.support.BeanDefinitionReaderUtils; -import org.springframework.beans.factory.support.BeanDefinitionRegistry; -import org.springframework.context.ApplicationContext; -import org.springframework.context.ApplicationContextAware; -import org.springframework.context.annotation.Bean; -import org.springframework.stereotype.Component; -import org.springframework.util.CollectionUtils; - -import java.util.List; -import java.util.Map; -import java.util.concurrent.ForkJoinPool; -import java.util.function.Function; - -/** - * @Description: Spring应用上下文工具 - * @Author: wangpeng - * @Date: 2022/8/11 18:04 - */ -@Component -public class SpringContextUtil implements BeanFactoryPostProcessor, ApplicationContextAware { - /** - * Spring应用上下文环境 - */ - private static ApplicationContext applicationContext; - - private static ConfigurableListableBeanFactory beanFactory; - - /** - * 实现ApplicationContextAware接口的回调方法,设置上下文环境 - */ - @Override - public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { - SpringContextUtil.applicationContext = applicationContext; - } - - @Override - public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { - SpringContextUtil.beanFactory = beanFactory; - } - - public static ApplicationContext getApplicationContext() { - return applicationContext; - } - -// public static Object getBean(String beanId) throws BeansException { -// return applicationContext.getBean(beanId); -// } - - public static T getBean(Class requiredType) { - return (T) applicationContext.getBean(requiredType); - } - - @SuppressWarnings("unchecked") - public static T getBean(String name) throws BeansException { - return (T) beanFactory.getBean(name); - } - - public static boolean containsBean(String name) { - return beanFactory.containsBean(name); - } - - public static T registerBean(String beanName, Class clazz, Function function) { - // 生成bean定义 - BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder.genericBeanDefinition(clazz); - // 执行bean处理函数 - AbstractBeanDefinition beanDefinition = function.apply(beanDefinitionBuilder); - BeanDefinitionRegistry beanFactory = (BeanDefinitionRegistry) SpringContextUtil.beanFactory; - // 判断是否通过beanName注册 - if (StringUtils.isNotBlank(beanName) && !containsBean(beanName)) { - beanFactory.registerBeanDefinition(beanName, beanDefinition); - return getBean(beanName); - } else { - // 非命名bean注册 - String name = BeanDefinitionReaderUtils.registerWithGeneratedName(beanDefinition, beanFactory); - return getBean(name); - } - } - - public static T registerBean(String beanName, Class clazz, List args, Map property) { - return registerBean(beanName, clazz, beanDefinitionBuilder -> { - // 放入构造参数 - if (!CollectionUtils.isEmpty(args)) { - args.forEach(beanDefinitionBuilder::addConstructorArgValue); - } - // 放入属性 - if (!CollectionUtils.isEmpty(property)) { - property.forEach(beanDefinitionBuilder::addPropertyValue); - } - return beanDefinitionBuilder.getBeanDefinition(); - }); - } - - @Bean - public ForkJoinPool forkJoinPool() { - return new ForkJoinPool(100); - } - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/util/aep/AepCommandSend.java b/sensorhub-core/src/main/java/com/casic/missiles/util/aep/AepCommandSend.java index be3a404..963e002 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/util/aep/AepCommandSend.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/util/aep/AepCommandSend.java @@ -11,7 +11,6 @@ import lombok.extern.slf4j.Slf4j; import java.nio.charset.StandardCharsets; -import java.util.Base64; import java.util.HashMap; import java.util.Map; diff --git a/sensorhub-service-birmm/pom.xml b/sensorhub-service-birmm/pom.xml index bb7a84b..3622c9b 100644 --- a/sensorhub-service-birmm/pom.xml +++ b/sensorhub-service-birmm/pom.xml @@ -18,6 +18,12 @@ sensorhub-support 1.0.0-SNAPSHOT + + com.casic + casic-iot-common + 1.0.0-SNAPSHOT + compile + \ No newline at end of file diff --git a/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/base/BirmmBaseFrame.java b/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/base/BirmmBaseFrame.java index 301ab49..e72e18b 100644 --- a/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/base/BirmmBaseFrame.java +++ b/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/base/BirmmBaseFrame.java @@ -1,14 +1,8 @@ package com.casic.missiles.frame.base; -import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.enums.BirmmOperationTypeEnums; -import com.casic.missiles.frame.tag.BirmmTagBuilderFactory; -import com.casic.missiles.frame.tag.biz.SensorStartupTag; -import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; -import com.casic.missiles.util.SpringContextUtil; import lombok.Data; import java.io.Serializable; diff --git a/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java b/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java index c4303e0..2d7f4f0 100644 --- a/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java +++ b/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java @@ -2,6 +2,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.enums.BirmmTagTypeEnums; import com.casic.missiles.frame.base.BirmmBaseTag; import com.casic.missiles.util.BytesUtil; import lombok.Data; @@ -28,18 +29,24 @@ return obj; } -// @Override -// public JSONObject toSimpleJSON(JSONObject obj) { -// if (ObjectUtil.isNull(obj)) { -// obj = new JSONObject(); -// } -// obj.put("ip", ip); -// return obj; -// } - @Override public void setValueStr(String valueStr) { super.setValueStr(valueStr); ip = new String(BytesUtil.hexStringToBytes(valueStr)); } + + @Override + public void setValueDecStr(String valueDecStr) { + ip = valueDecStr; + } + + @Override + public String toProtocolString() { + String result = ""; + result += BirmmTagTypeEnums.DESTINATION_IP_TAG.getOid(); // OID + result += String.format("%04x", BytesUtil.stringToAsciiStr(ip).length()); // 长度 + result += BytesUtil.stringToAsciiStr(ip); + + return result; + } } diff --git a/casic-iot-common/src/main/java/com/casic/missiles/util/SpringContextUtil.java b/casic-iot-common/src/main/java/com/casic/missiles/util/SpringContextUtil.java index 9b3ab90..45701f3 100644 --- a/casic-iot-common/src/main/java/com/casic/missiles/util/SpringContextUtil.java +++ b/casic-iot-common/src/main/java/com/casic/missiles/util/SpringContextUtil.java @@ -60,7 +60,10 @@ @SuppressWarnings("unchecked") public static T getBean(String name) throws BeansException { - return (T) beanFactory.getBean(name); + if (beanFactory.containsBean(name)) { + return (T) beanFactory.getBean(name); + } + return null; } public static boolean containsBean(String name) { diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml index 962b944..1652cf1 100644 --- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml +++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml @@ -27,7 +27,7 @@ SELECT device_type AS "deviceType",create_time AS "createTime",d.devcode, model,imei,d.cell,name AS "deviceName",status,d.id,create_user_id AS "createUserId", - create_user_name AS "createUserName" + create_user_name AS "createUserName", group_id as groupId, product_id as productId FROM ( SELECT * FROM device diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceServiceImpl.java index b276a17..375f189 100644 --- a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceServiceImpl.java +++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceServiceImpl.java @@ -57,7 +57,6 @@ private final ProductInfoMapper productInfoMapper; private final DeviceGroupMapper deviceGroupMapper; private final SysCommonMapper sysCommonMapper; - private final DeviceImeiIccidMapper imeiIccidMapper; @Override public Page listPage(Page page, DeviceListRequest request, DataScope dataScope) throws Exception { @@ -67,16 +66,24 @@ } List deviceListVOS = this.baseMapper.listPage(page, request, dataScope); List productInfoList = productInfoMapper.selectList(null); + List groupList = deviceGroupMapper.selectList(null); Map productInfoMap = productInfoList.stream().collect( Collectors.toMap(ProductInfo::getId, e -> e) ); + Map groupMap = groupList.stream().collect( + Collectors.toMap(DeviceGroup::getId, e -> e) + ); //处理产品映射,转化字典 for (DeviceListVO deviceListVO : deviceListVOS) { - ProductInfo productInfo = productInfoMap.containsKey(deviceListVO.getProductId()) ? null : productInfoMap.get(deviceListVO.getProductId()); + ProductInfo productInfo = productInfoMap.getOrDefault(deviceListVO.getProductId(), null); + DeviceGroup group = groupMap.getOrDefault(deviceListVO.getGroupId(), null); if (ObjectUtils.isNotEmpty(productInfo)) { deviceListVO.setProductName(productInfo.getName()); deviceListVO.setEncipherType(productInfo.getProductType()); } + if (ObjectUtil.isNotNull(group)) { + deviceListVO.setGroupName(group.getGroupName()); + } DictCodeUtils.convertDictCodeToName(deviceListVO); } page.setRecords(deviceListVOS); diff --git a/sensorhub-core/src/main/java/com/casic/missiles/listeners/ProtocolProcessEventListener.java b/sensorhub-core/src/main/java/com/casic/missiles/listeners/ProtocolProcessEventListener.java index 2258d38..f58e461 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/listeners/ProtocolProcessEventListener.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/listeners/ProtocolProcessEventListener.java @@ -6,7 +6,6 @@ import com.casic.missiles.cache.GuavaCacheUtil; import com.casic.missiles.model.Device; import com.casic.missiles.model.DeviceData; -import com.casic.missiles.pojo.ParseResult; import com.casic.missiles.pojo.ProcessEventTask; import com.casic.missiles.service.IDeviceDataService; import com.casic.missiles.service.impl.DeviceDataServiceImpl; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/netty/handler/SensorhubServerChannelInitialHandler.java b/sensorhub-core/src/main/java/com/casic/missiles/netty/handler/SensorhubServerChannelInitialHandler.java index dabfe36..509d1f9 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/netty/handler/SensorhubServerChannelInitialHandler.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/netty/handler/SensorhubServerChannelInitialHandler.java @@ -1,20 +1,12 @@ package com.casic.missiles.netty.handler; import com.casic.missiles.parser.BirmmHexDecoder; -import com.casic.missiles.parser.SensorhubDecoder; -import com.casic.missiles.parser.safe.impl.Sm4; import com.casic.missiles.replier.CommonHexReplier; -import com.casic.missiles.replier.SensorhubReplier; -import com.casic.missiles.util.SpringContextUtil; import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelPipeline; import io.netty.channel.socket.SocketChannel; -import io.netty.handler.logging.LogLevel; -import io.netty.handler.logging.LoggingHandler; import org.springframework.stereotype.Component; -import javax.annotation.Resource; - /** * @author cz * @date 2023-06-05 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/resolver/combined/GenericCombinedFieldResolver.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/resolver/combined/GenericCombinedFieldResolver.java index 6bacdbe..a6c5d56 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/resolver/combined/GenericCombinedFieldResolver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/resolver/combined/GenericCombinedFieldResolver.java @@ -2,10 +2,8 @@ import cn.hutool.core.lang.Assert; import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.casic.missiles.enums.EngineExceptionEnum; import com.casic.missiles.exception.EngineException; -import com.casic.missiles.parser.GenericProtocolParser; import com.casic.missiles.parser.resolver.combined.impl.BizFieldParseProcessor; import com.casic.missiles.parser.resolver.combined.impl.PreBizFieldParseProcessor; import com.casic.missiles.parser.resolver.combined.impl.PreLeadCodeProcessor; @@ -14,18 +12,11 @@ import com.casic.missiles.pojo.CombinedFieldProcessorParam; import com.casic.missiles.pojo.FieldConfig; import com.casic.missiles.pojo.FieldRuleConfig; -import com.casic.missiles.util.SpringContextUtil; -import io.netty.buffer.ByteBuf; -import io.netty.buffer.ByteBufUtil; -import io.netty.util.internal.PlatformDependent; import lombok.extern.slf4j.Slf4j; -import org.springframework.util.ReflectionUtils; -import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; import java.util.Map; -import java.util.concurrent.atomic.AtomicLong; import java.util.stream.Collectors; /** diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/rule/GenericRuleResolver.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/rule/GenericRuleResolver.java index 797a75c..7905f74 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/rule/GenericRuleResolver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/rule/GenericRuleResolver.java @@ -1,19 +1,12 @@ package com.casic.missiles.parser.rule; -import cn.hutool.core.lang.Assert; -import com.casic.missiles.enums.EngineExceptionEnum; -import com.casic.missiles.exception.EngineException; import com.casic.missiles.pojo.ProtocolFieldConfig; import com.casic.missiles.pojo.RuleConfig; -import com.casic.missiles.pojo.RuleEventConfig; -import com.casic.missiles.registry.RuleEventRegistry; -import com.casic.missiles.util.SpringContextUtil; import org.apache.commons.lang3.StringUtils; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Objects; import java.util.stream.Collectors; public class GenericRuleResolver { 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 d7b22f7..94ba4f9 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 @@ -2,6 +2,7 @@ import com.casic.missiles.parser.resolver.fields.FieldResolver; import com.casic.missiles.pojo.FieldRuleConfig; +import com.casic.missiles.util.SpringContextUtil; import org.apache.commons.lang3.StringUtils; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.casic.missiles.parser.resolver.FieldParser; @@ -9,7 +10,6 @@ import com.casic.missiles.pojo.FieldConfig; import com.casic.missiles.pojo.RuleConfig; import com.casic.missiles.registry.FieldConfigRegistry; -import com.casic.missiles.util.SpringContextUtil; import java.util.HashMap; import java.util.List; 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 92e2424..4919833 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 @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.casic.missiles.enums.parser.FrameStructEnum; +import com.casic.missiles.util.SpringContextUtil; import org.apache.commons.lang3.StringUtils; import com.casic.missiles.parser.resolver.FieldParser; import com.casic.missiles.parser.resolver.fields.DefaultProtocolFieldParser; @@ -13,7 +14,6 @@ import com.casic.missiles.pojo.ProtocolFieldConfig; import com.casic.missiles.registry.ProtocolFieldConfigRegistry; import com.casic.missiles.util.ProtocolFieldConfigUtil; -import com.casic.missiles.util.SpringContextUtil; import lombok.extern.slf4j.Slf4j; import java.util.*; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/service/impl/GeneralServiceImpl.java b/sensorhub-core/src/main/java/com/casic/missiles/service/impl/GeneralServiceImpl.java index 79b47c2..5740eb2 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/service/impl/GeneralServiceImpl.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/service/impl/GeneralServiceImpl.java @@ -97,7 +97,8 @@ // 密钥根据设备编号获取 SafeStrategy safeStrategy; if (deviceType.equalsIgnoreCase(BirmmDeviceTypeEnums.METHANE.getValue()) || - deviceType.equalsIgnoreCase(BirmmDeviceTypeEnums.SENTINEL.getValue())) { + deviceType.equalsIgnoreCase(BirmmDeviceTypeEnums.SENTINEL.getValue()) || + deviceType.equalsIgnoreCase(BirmmDeviceTypeEnums.WELL.getValue())) { safeStrategy = SpringContextUtil.getBean(Sm4.class); } else { safeStrategy = SpringContextUtil.getBean(TeaUtilsX.class); @@ -389,7 +390,8 @@ // 密钥根据设备编号获取 SafeStrategy safeStrategy; if (baseReply.getDeviceType().equalsIgnoreCase(BirmmDeviceTypeEnums.METHANE.getValue()) || - baseReply.getDeviceType().equalsIgnoreCase(BirmmDeviceTypeEnums.SENTINEL.getValue())) { + baseReply.getDeviceType().equalsIgnoreCase(BirmmDeviceTypeEnums.SENTINEL.getValue()) || + baseReply.getDeviceType().equalsIgnoreCase(BirmmDeviceTypeEnums.WELL.getValue())) { safeStrategy = SpringContextUtil.getBean(Sm4.class); } else { safeStrategy = SpringContextUtil.getBean(TeaUtilsX.class); diff --git a/sensorhub-core/src/main/java/com/casic/missiles/util/SpringContextUtil.java b/sensorhub-core/src/main/java/com/casic/missiles/util/SpringContextUtil.java deleted file mode 100644 index 9b3ab90..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/util/SpringContextUtil.java +++ /dev/null @@ -1,106 +0,0 @@ -package com.casic.missiles.util; - -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.BeansException; -import org.springframework.beans.factory.config.BeanFactoryPostProcessor; -import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; -import org.springframework.beans.factory.support.AbstractBeanDefinition; -import org.springframework.beans.factory.support.BeanDefinitionBuilder; -import org.springframework.beans.factory.support.BeanDefinitionReaderUtils; -import org.springframework.beans.factory.support.BeanDefinitionRegistry; -import org.springframework.context.ApplicationContext; -import org.springframework.context.ApplicationContextAware; -import org.springframework.context.annotation.Bean; -import org.springframework.stereotype.Component; -import org.springframework.util.CollectionUtils; - -import java.util.List; -import java.util.Map; -import java.util.concurrent.ForkJoinPool; -import java.util.function.Function; - -/** - * @Description: Spring应用上下文工具 - * @Author: wangpeng - * @Date: 2022/8/11 18:04 - */ -@Component -public class SpringContextUtil implements BeanFactoryPostProcessor, ApplicationContextAware { - /** - * Spring应用上下文环境 - */ - private static ApplicationContext applicationContext; - - private static ConfigurableListableBeanFactory beanFactory; - - /** - * 实现ApplicationContextAware接口的回调方法,设置上下文环境 - */ - @Override - public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { - SpringContextUtil.applicationContext = applicationContext; - } - - @Override - public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { - SpringContextUtil.beanFactory = beanFactory; - } - - public static ApplicationContext getApplicationContext() { - return applicationContext; - } - -// public static Object getBean(String beanId) throws BeansException { -// return applicationContext.getBean(beanId); -// } - - public static T getBean(Class requiredType) { - return (T) applicationContext.getBean(requiredType); - } - - @SuppressWarnings("unchecked") - public static T getBean(String name) throws BeansException { - return (T) beanFactory.getBean(name); - } - - public static boolean containsBean(String name) { - return beanFactory.containsBean(name); - } - - public static T registerBean(String beanName, Class clazz, Function function) { - // 生成bean定义 - BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder.genericBeanDefinition(clazz); - // 执行bean处理函数 - AbstractBeanDefinition beanDefinition = function.apply(beanDefinitionBuilder); - BeanDefinitionRegistry beanFactory = (BeanDefinitionRegistry) SpringContextUtil.beanFactory; - // 判断是否通过beanName注册 - if (StringUtils.isNotBlank(beanName) && !containsBean(beanName)) { - beanFactory.registerBeanDefinition(beanName, beanDefinition); - return getBean(beanName); - } else { - // 非命名bean注册 - String name = BeanDefinitionReaderUtils.registerWithGeneratedName(beanDefinition, beanFactory); - return getBean(name); - } - } - - public static T registerBean(String beanName, Class clazz, List args, Map property) { - return registerBean(beanName, clazz, beanDefinitionBuilder -> { - // 放入构造参数 - if (!CollectionUtils.isEmpty(args)) { - args.forEach(beanDefinitionBuilder::addConstructorArgValue); - } - // 放入属性 - if (!CollectionUtils.isEmpty(property)) { - property.forEach(beanDefinitionBuilder::addPropertyValue); - } - return beanDefinitionBuilder.getBeanDefinition(); - }); - } - - @Bean - public ForkJoinPool forkJoinPool() { - return new ForkJoinPool(100); - } - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/util/aep/AepCommandSend.java b/sensorhub-core/src/main/java/com/casic/missiles/util/aep/AepCommandSend.java index be3a404..963e002 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/util/aep/AepCommandSend.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/util/aep/AepCommandSend.java @@ -11,7 +11,6 @@ import lombok.extern.slf4j.Slf4j; import java.nio.charset.StandardCharsets; -import java.util.Base64; import java.util.HashMap; import java.util.Map; diff --git a/sensorhub-service-birmm/pom.xml b/sensorhub-service-birmm/pom.xml index bb7a84b..3622c9b 100644 --- a/sensorhub-service-birmm/pom.xml +++ b/sensorhub-service-birmm/pom.xml @@ -18,6 +18,12 @@ sensorhub-support 1.0.0-SNAPSHOT + + com.casic + casic-iot-common + 1.0.0-SNAPSHOT + compile + \ No newline at end of file diff --git a/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/base/BirmmBaseFrame.java b/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/base/BirmmBaseFrame.java index 301ab49..e72e18b 100644 --- a/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/base/BirmmBaseFrame.java +++ b/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/base/BirmmBaseFrame.java @@ -1,14 +1,8 @@ package com.casic.missiles.frame.base; -import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.enums.BirmmOperationTypeEnums; -import com.casic.missiles.frame.tag.BirmmTagBuilderFactory; -import com.casic.missiles.frame.tag.biz.SensorStartupTag; -import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; -import com.casic.missiles.util.SpringContextUtil; import lombok.Data; import java.io.Serializable; diff --git a/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java b/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java index c4303e0..2d7f4f0 100644 --- a/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java +++ b/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java @@ -2,6 +2,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.enums.BirmmTagTypeEnums; import com.casic.missiles.frame.base.BirmmBaseTag; import com.casic.missiles.util.BytesUtil; import lombok.Data; @@ -28,18 +29,24 @@ return obj; } -// @Override -// public JSONObject toSimpleJSON(JSONObject obj) { -// if (ObjectUtil.isNull(obj)) { -// obj = new JSONObject(); -// } -// obj.put("ip", ip); -// return obj; -// } - @Override public void setValueStr(String valueStr) { super.setValueStr(valueStr); ip = new String(BytesUtil.hexStringToBytes(valueStr)); } + + @Override + public void setValueDecStr(String valueDecStr) { + ip = valueDecStr; + } + + @Override + public String toProtocolString() { + String result = ""; + result += BirmmTagTypeEnums.DESTINATION_IP_TAG.getOid(); // OID + result += String.format("%04x", BytesUtil.stringToAsciiStr(ip).length()); // 长度 + result += BytesUtil.stringToAsciiStr(ip); + + return result; + } } diff --git a/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java b/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java index c51a132..7dba55e 100644 --- a/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java +++ b/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java @@ -2,6 +2,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.enums.BirmmTagTypeEnums; import com.casic.missiles.frame.base.BirmmBaseTag; import com.casic.missiles.util.BytesUtil; import lombok.Data; @@ -28,18 +29,24 @@ return obj; } -// @Override -// public JSONObject toSimpleJSON(JSONObject obj) { -// if (ObjectUtil.isNull(obj)) { -// obj = new JSONObject(); -// } -// obj.put("port", port); -// return obj; -// } - @Override public void setValueStr(String valueStr) { super.setValueStr(valueStr); port = new String(BytesUtil.hexStringToBytes(valueStr)); } + + @Override + public void setValueDecStr(String valueDecStr) { + port = valueDecStr; + } + + @Override + public String toProtocolString() { + String result = ""; + result += BirmmTagTypeEnums.DESTINATION_PORT_TAG.getOid(); // OID + result += String.format("%04x", BytesUtil.stringToAsciiStr(port).length()); // 长度 + result += BytesUtil.stringToAsciiStr(port); + + return result; + } } diff --git a/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/well/WellBizData.java b/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/well/WellBizData.java new file mode 100644 index 0000000..beeaaca --- /dev/null +++ b/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/well/WellBizData.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.well; + +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +@Data +public class WellBizData { + + LocalDateTime uptime; + int bizType; + String value; + + @Override + public String toString() { + return "[" + uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) + "][" + value + "][" + bizType + "]"; + } + + public JSONObject toJSON() { + JSONObject json = new JSONObject(); + json.put("value", value); + json.put("uptime", uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); + return json; + } +} diff --git a/casic-iot-common/src/main/java/com/casic/missiles/util/SpringContextUtil.java b/casic-iot-common/src/main/java/com/casic/missiles/util/SpringContextUtil.java index 9b3ab90..45701f3 100644 --- a/casic-iot-common/src/main/java/com/casic/missiles/util/SpringContextUtil.java +++ b/casic-iot-common/src/main/java/com/casic/missiles/util/SpringContextUtil.java @@ -60,7 +60,10 @@ @SuppressWarnings("unchecked") public static T getBean(String name) throws BeansException { - return (T) beanFactory.getBean(name); + if (beanFactory.containsBean(name)) { + return (T) beanFactory.getBean(name); + } + return null; } public static boolean containsBean(String name) { diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml index 962b944..1652cf1 100644 --- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml +++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml @@ -27,7 +27,7 @@ SELECT device_type AS "deviceType",create_time AS "createTime",d.devcode, model,imei,d.cell,name AS "deviceName",status,d.id,create_user_id AS "createUserId", - create_user_name AS "createUserName" + create_user_name AS "createUserName", group_id as groupId, product_id as productId FROM ( SELECT * FROM device diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceServiceImpl.java index b276a17..375f189 100644 --- a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceServiceImpl.java +++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceServiceImpl.java @@ -57,7 +57,6 @@ private final ProductInfoMapper productInfoMapper; private final DeviceGroupMapper deviceGroupMapper; private final SysCommonMapper sysCommonMapper; - private final DeviceImeiIccidMapper imeiIccidMapper; @Override public Page listPage(Page page, DeviceListRequest request, DataScope dataScope) throws Exception { @@ -67,16 +66,24 @@ } List deviceListVOS = this.baseMapper.listPage(page, request, dataScope); List productInfoList = productInfoMapper.selectList(null); + List groupList = deviceGroupMapper.selectList(null); Map productInfoMap = productInfoList.stream().collect( Collectors.toMap(ProductInfo::getId, e -> e) ); + Map groupMap = groupList.stream().collect( + Collectors.toMap(DeviceGroup::getId, e -> e) + ); //处理产品映射,转化字典 for (DeviceListVO deviceListVO : deviceListVOS) { - ProductInfo productInfo = productInfoMap.containsKey(deviceListVO.getProductId()) ? null : productInfoMap.get(deviceListVO.getProductId()); + ProductInfo productInfo = productInfoMap.getOrDefault(deviceListVO.getProductId(), null); + DeviceGroup group = groupMap.getOrDefault(deviceListVO.getGroupId(), null); if (ObjectUtils.isNotEmpty(productInfo)) { deviceListVO.setProductName(productInfo.getName()); deviceListVO.setEncipherType(productInfo.getProductType()); } + if (ObjectUtil.isNotNull(group)) { + deviceListVO.setGroupName(group.getGroupName()); + } DictCodeUtils.convertDictCodeToName(deviceListVO); } page.setRecords(deviceListVOS); diff --git a/sensorhub-core/src/main/java/com/casic/missiles/listeners/ProtocolProcessEventListener.java b/sensorhub-core/src/main/java/com/casic/missiles/listeners/ProtocolProcessEventListener.java index 2258d38..f58e461 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/listeners/ProtocolProcessEventListener.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/listeners/ProtocolProcessEventListener.java @@ -6,7 +6,6 @@ import com.casic.missiles.cache.GuavaCacheUtil; import com.casic.missiles.model.Device; import com.casic.missiles.model.DeviceData; -import com.casic.missiles.pojo.ParseResult; import com.casic.missiles.pojo.ProcessEventTask; import com.casic.missiles.service.IDeviceDataService; import com.casic.missiles.service.impl.DeviceDataServiceImpl; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/netty/handler/SensorhubServerChannelInitialHandler.java b/sensorhub-core/src/main/java/com/casic/missiles/netty/handler/SensorhubServerChannelInitialHandler.java index dabfe36..509d1f9 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/netty/handler/SensorhubServerChannelInitialHandler.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/netty/handler/SensorhubServerChannelInitialHandler.java @@ -1,20 +1,12 @@ package com.casic.missiles.netty.handler; import com.casic.missiles.parser.BirmmHexDecoder; -import com.casic.missiles.parser.SensorhubDecoder; -import com.casic.missiles.parser.safe.impl.Sm4; import com.casic.missiles.replier.CommonHexReplier; -import com.casic.missiles.replier.SensorhubReplier; -import com.casic.missiles.util.SpringContextUtil; import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelPipeline; import io.netty.channel.socket.SocketChannel; -import io.netty.handler.logging.LogLevel; -import io.netty.handler.logging.LoggingHandler; import org.springframework.stereotype.Component; -import javax.annotation.Resource; - /** * @author cz * @date 2023-06-05 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/resolver/combined/GenericCombinedFieldResolver.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/resolver/combined/GenericCombinedFieldResolver.java index 6bacdbe..a6c5d56 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/resolver/combined/GenericCombinedFieldResolver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/resolver/combined/GenericCombinedFieldResolver.java @@ -2,10 +2,8 @@ import cn.hutool.core.lang.Assert; import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.casic.missiles.enums.EngineExceptionEnum; import com.casic.missiles.exception.EngineException; -import com.casic.missiles.parser.GenericProtocolParser; import com.casic.missiles.parser.resolver.combined.impl.BizFieldParseProcessor; import com.casic.missiles.parser.resolver.combined.impl.PreBizFieldParseProcessor; import com.casic.missiles.parser.resolver.combined.impl.PreLeadCodeProcessor; @@ -14,18 +12,11 @@ import com.casic.missiles.pojo.CombinedFieldProcessorParam; import com.casic.missiles.pojo.FieldConfig; import com.casic.missiles.pojo.FieldRuleConfig; -import com.casic.missiles.util.SpringContextUtil; -import io.netty.buffer.ByteBuf; -import io.netty.buffer.ByteBufUtil; -import io.netty.util.internal.PlatformDependent; import lombok.extern.slf4j.Slf4j; -import org.springframework.util.ReflectionUtils; -import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; import java.util.Map; -import java.util.concurrent.atomic.AtomicLong; import java.util.stream.Collectors; /** diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/rule/GenericRuleResolver.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/rule/GenericRuleResolver.java index 797a75c..7905f74 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/rule/GenericRuleResolver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/rule/GenericRuleResolver.java @@ -1,19 +1,12 @@ package com.casic.missiles.parser.rule; -import cn.hutool.core.lang.Assert; -import com.casic.missiles.enums.EngineExceptionEnum; -import com.casic.missiles.exception.EngineException; import com.casic.missiles.pojo.ProtocolFieldConfig; import com.casic.missiles.pojo.RuleConfig; -import com.casic.missiles.pojo.RuleEventConfig; -import com.casic.missiles.registry.RuleEventRegistry; -import com.casic.missiles.util.SpringContextUtil; import org.apache.commons.lang3.StringUtils; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Objects; import java.util.stream.Collectors; public class GenericRuleResolver { 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 d7b22f7..94ba4f9 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 @@ -2,6 +2,7 @@ import com.casic.missiles.parser.resolver.fields.FieldResolver; import com.casic.missiles.pojo.FieldRuleConfig; +import com.casic.missiles.util.SpringContextUtil; import org.apache.commons.lang3.StringUtils; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.casic.missiles.parser.resolver.FieldParser; @@ -9,7 +10,6 @@ import com.casic.missiles.pojo.FieldConfig; import com.casic.missiles.pojo.RuleConfig; import com.casic.missiles.registry.FieldConfigRegistry; -import com.casic.missiles.util.SpringContextUtil; import java.util.HashMap; import java.util.List; 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 92e2424..4919833 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 @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.casic.missiles.enums.parser.FrameStructEnum; +import com.casic.missiles.util.SpringContextUtil; import org.apache.commons.lang3.StringUtils; import com.casic.missiles.parser.resolver.FieldParser; import com.casic.missiles.parser.resolver.fields.DefaultProtocolFieldParser; @@ -13,7 +14,6 @@ import com.casic.missiles.pojo.ProtocolFieldConfig; import com.casic.missiles.registry.ProtocolFieldConfigRegistry; import com.casic.missiles.util.ProtocolFieldConfigUtil; -import com.casic.missiles.util.SpringContextUtil; import lombok.extern.slf4j.Slf4j; import java.util.*; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/service/impl/GeneralServiceImpl.java b/sensorhub-core/src/main/java/com/casic/missiles/service/impl/GeneralServiceImpl.java index 79b47c2..5740eb2 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/service/impl/GeneralServiceImpl.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/service/impl/GeneralServiceImpl.java @@ -97,7 +97,8 @@ // 密钥根据设备编号获取 SafeStrategy safeStrategy; if (deviceType.equalsIgnoreCase(BirmmDeviceTypeEnums.METHANE.getValue()) || - deviceType.equalsIgnoreCase(BirmmDeviceTypeEnums.SENTINEL.getValue())) { + deviceType.equalsIgnoreCase(BirmmDeviceTypeEnums.SENTINEL.getValue()) || + deviceType.equalsIgnoreCase(BirmmDeviceTypeEnums.WELL.getValue())) { safeStrategy = SpringContextUtil.getBean(Sm4.class); } else { safeStrategy = SpringContextUtil.getBean(TeaUtilsX.class); @@ -389,7 +390,8 @@ // 密钥根据设备编号获取 SafeStrategy safeStrategy; if (baseReply.getDeviceType().equalsIgnoreCase(BirmmDeviceTypeEnums.METHANE.getValue()) || - baseReply.getDeviceType().equalsIgnoreCase(BirmmDeviceTypeEnums.SENTINEL.getValue())) { + baseReply.getDeviceType().equalsIgnoreCase(BirmmDeviceTypeEnums.SENTINEL.getValue()) || + baseReply.getDeviceType().equalsIgnoreCase(BirmmDeviceTypeEnums.WELL.getValue())) { safeStrategy = SpringContextUtil.getBean(Sm4.class); } else { safeStrategy = SpringContextUtil.getBean(TeaUtilsX.class); diff --git a/sensorhub-core/src/main/java/com/casic/missiles/util/SpringContextUtil.java b/sensorhub-core/src/main/java/com/casic/missiles/util/SpringContextUtil.java deleted file mode 100644 index 9b3ab90..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/util/SpringContextUtil.java +++ /dev/null @@ -1,106 +0,0 @@ -package com.casic.missiles.util; - -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.BeansException; -import org.springframework.beans.factory.config.BeanFactoryPostProcessor; -import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; -import org.springframework.beans.factory.support.AbstractBeanDefinition; -import org.springframework.beans.factory.support.BeanDefinitionBuilder; -import org.springframework.beans.factory.support.BeanDefinitionReaderUtils; -import org.springframework.beans.factory.support.BeanDefinitionRegistry; -import org.springframework.context.ApplicationContext; -import org.springframework.context.ApplicationContextAware; -import org.springframework.context.annotation.Bean; -import org.springframework.stereotype.Component; -import org.springframework.util.CollectionUtils; - -import java.util.List; -import java.util.Map; -import java.util.concurrent.ForkJoinPool; -import java.util.function.Function; - -/** - * @Description: Spring应用上下文工具 - * @Author: wangpeng - * @Date: 2022/8/11 18:04 - */ -@Component -public class SpringContextUtil implements BeanFactoryPostProcessor, ApplicationContextAware { - /** - * Spring应用上下文环境 - */ - private static ApplicationContext applicationContext; - - private static ConfigurableListableBeanFactory beanFactory; - - /** - * 实现ApplicationContextAware接口的回调方法,设置上下文环境 - */ - @Override - public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { - SpringContextUtil.applicationContext = applicationContext; - } - - @Override - public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { - SpringContextUtil.beanFactory = beanFactory; - } - - public static ApplicationContext getApplicationContext() { - return applicationContext; - } - -// public static Object getBean(String beanId) throws BeansException { -// return applicationContext.getBean(beanId); -// } - - public static T getBean(Class requiredType) { - return (T) applicationContext.getBean(requiredType); - } - - @SuppressWarnings("unchecked") - public static T getBean(String name) throws BeansException { - return (T) beanFactory.getBean(name); - } - - public static boolean containsBean(String name) { - return beanFactory.containsBean(name); - } - - public static T registerBean(String beanName, Class clazz, Function function) { - // 生成bean定义 - BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder.genericBeanDefinition(clazz); - // 执行bean处理函数 - AbstractBeanDefinition beanDefinition = function.apply(beanDefinitionBuilder); - BeanDefinitionRegistry beanFactory = (BeanDefinitionRegistry) SpringContextUtil.beanFactory; - // 判断是否通过beanName注册 - if (StringUtils.isNotBlank(beanName) && !containsBean(beanName)) { - beanFactory.registerBeanDefinition(beanName, beanDefinition); - return getBean(beanName); - } else { - // 非命名bean注册 - String name = BeanDefinitionReaderUtils.registerWithGeneratedName(beanDefinition, beanFactory); - return getBean(name); - } - } - - public static T registerBean(String beanName, Class clazz, List args, Map property) { - return registerBean(beanName, clazz, beanDefinitionBuilder -> { - // 放入构造参数 - if (!CollectionUtils.isEmpty(args)) { - args.forEach(beanDefinitionBuilder::addConstructorArgValue); - } - // 放入属性 - if (!CollectionUtils.isEmpty(property)) { - property.forEach(beanDefinitionBuilder::addPropertyValue); - } - return beanDefinitionBuilder.getBeanDefinition(); - }); - } - - @Bean - public ForkJoinPool forkJoinPool() { - return new ForkJoinPool(100); - } - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/util/aep/AepCommandSend.java b/sensorhub-core/src/main/java/com/casic/missiles/util/aep/AepCommandSend.java index be3a404..963e002 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/util/aep/AepCommandSend.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/util/aep/AepCommandSend.java @@ -11,7 +11,6 @@ import lombok.extern.slf4j.Slf4j; import java.nio.charset.StandardCharsets; -import java.util.Base64; import java.util.HashMap; import java.util.Map; diff --git a/sensorhub-service-birmm/pom.xml b/sensorhub-service-birmm/pom.xml index bb7a84b..3622c9b 100644 --- a/sensorhub-service-birmm/pom.xml +++ b/sensorhub-service-birmm/pom.xml @@ -18,6 +18,12 @@ sensorhub-support 1.0.0-SNAPSHOT + + com.casic + casic-iot-common + 1.0.0-SNAPSHOT + compile + \ No newline at end of file diff --git a/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/base/BirmmBaseFrame.java b/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/base/BirmmBaseFrame.java index 301ab49..e72e18b 100644 --- a/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/base/BirmmBaseFrame.java +++ b/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/base/BirmmBaseFrame.java @@ -1,14 +1,8 @@ package com.casic.missiles.frame.base; -import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.enums.BirmmOperationTypeEnums; -import com.casic.missiles.frame.tag.BirmmTagBuilderFactory; -import com.casic.missiles.frame.tag.biz.SensorStartupTag; -import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; -import com.casic.missiles.util.SpringContextUtil; import lombok.Data; import java.io.Serializable; diff --git a/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java b/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java index c4303e0..2d7f4f0 100644 --- a/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java +++ b/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java @@ -2,6 +2,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.enums.BirmmTagTypeEnums; import com.casic.missiles.frame.base.BirmmBaseTag; import com.casic.missiles.util.BytesUtil; import lombok.Data; @@ -28,18 +29,24 @@ return obj; } -// @Override -// public JSONObject toSimpleJSON(JSONObject obj) { -// if (ObjectUtil.isNull(obj)) { -// obj = new JSONObject(); -// } -// obj.put("ip", ip); -// return obj; -// } - @Override public void setValueStr(String valueStr) { super.setValueStr(valueStr); ip = new String(BytesUtil.hexStringToBytes(valueStr)); } + + @Override + public void setValueDecStr(String valueDecStr) { + ip = valueDecStr; + } + + @Override + public String toProtocolString() { + String result = ""; + result += BirmmTagTypeEnums.DESTINATION_IP_TAG.getOid(); // OID + result += String.format("%04x", BytesUtil.stringToAsciiStr(ip).length()); // 长度 + result += BytesUtil.stringToAsciiStr(ip); + + return result; + } } diff --git a/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java b/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java index c51a132..7dba55e 100644 --- a/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java +++ b/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java @@ -2,6 +2,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.enums.BirmmTagTypeEnums; import com.casic.missiles.frame.base.BirmmBaseTag; import com.casic.missiles.util.BytesUtil; import lombok.Data; @@ -28,18 +29,24 @@ return obj; } -// @Override -// public JSONObject toSimpleJSON(JSONObject obj) { -// if (ObjectUtil.isNull(obj)) { -// obj = new JSONObject(); -// } -// obj.put("port", port); -// return obj; -// } - @Override public void setValueStr(String valueStr) { super.setValueStr(valueStr); port = new String(BytesUtil.hexStringToBytes(valueStr)); } + + @Override + public void setValueDecStr(String valueDecStr) { + port = valueDecStr; + } + + @Override + public String toProtocolString() { + String result = ""; + result += BirmmTagTypeEnums.DESTINATION_PORT_TAG.getOid(); // OID + result += String.format("%04x", BytesUtil.stringToAsciiStr(port).length()); // 长度 + result += BytesUtil.stringToAsciiStr(port); + + return result; + } } diff --git a/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/well/WellBizData.java b/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/well/WellBizData.java new file mode 100644 index 0000000..beeaaca --- /dev/null +++ b/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/well/WellBizData.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.well; + +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +@Data +public class WellBizData { + + LocalDateTime uptime; + int bizType; + String value; + + @Override + public String toString() { + return "[" + uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) + "][" + value + "][" + bizType + "]"; + } + + public JSONObject toJSON() { + JSONObject json = new JSONObject(); + json.put("value", value); + json.put("uptime", uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); + return json; + } +} diff --git a/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/well/WellTrapRequestFrame.java b/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/well/WellTrapRequestFrame.java new file mode 100644 index 0000000..808e575 --- /dev/null +++ b/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/well/WellTrapRequestFrame.java @@ -0,0 +1,101 @@ +package com.casic.missiles.frame.well; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.frame.base.BirmmBaseFrame; +import com.casic.missiles.frame.base.BirmmBaseTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.model.DeviceBizData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.List; + +@Component("WellTrapRequest") +@Scope("prototype") +@Slf4j +public class WellTrapRequestFrame extends BirmmBaseFrame { + + List bizDataList; + final String MESSAGE_TYPE = "Data"; + final String DEV_TYPE = "Well"; + final String BIZ_TYPE = DEV_TYPE + MESSAGE_TYPE; + + @Override + public JSONObject toJSON() { + JSONObject json = super.toJSON(); + json.put("devType", DEV_TYPE); + json.put("mType", MESSAGE_TYPE); + + JSONObject body = new JSONObject(); + body.put("bType", BIZ_TYPE); + body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); + + // 业务数据 + if (bizDataList != null) { + JSONArray datas = new JSONArray(); + for (WellBizData bizData : bizDataList) { + datas.add(bizData.toJSON()); + } + body.put("datas", datas); + } + + json.put("mBody", body); + + return json; + } + + @Override + public boolean needPushToApplication() { + return true; + } + + @Override + public List convertToBizDataList() { + List resultList = new ArrayList<>(); + if (bizDataList != null) { + for (WellBizData data : bizDataList) { + DeviceBizData bizData = new DeviceBizData(); + bizData.setBizType(String.valueOf(data.getBizType())); + bizData.setValue(data.getValue()); + bizData.setUptime(data.getUptime()); + + resultList.add(bizData); + } + } + + return resultList; + } + + @Override + public void doParseBizTag() { + if (getTagList().containsKey(UploadTag.class.getSimpleName())) { + handleUploadTag(); + } + } + + private void handleUploadTag() { + List tags = getTagList().get(UploadTag.class.getSimpleName()); + + bizDataList = new ArrayList<>(); + + for (BirmmBaseTag tag : tags) { + UploadTag uploadTag = (UploadTag) tag; + // 检查oid是否符合要求 能取到bizType 采集周期 采集开始时间 + boolean isValid = uploadTag.checkOid(); + if (isValid) { + WellBizData bizData = new WellBizData(); + + bizData.setBizType(uploadTag.getBizType()); + bizData.setUptime(LocalDateTime.now()); + bizData.setValue(uploadTag.getValueStr()); + + bizDataList.add(bizData); + } + } + } +} diff --git a/sensorhub-support/src/main/java/com/casic/missiles/enums/BirmmDataBizTypeEnums.java b/sensorhub-support/src/main/java/com/casic/missiles/enums/BirmmDataBizTypeEnums.java index 6f4d091..3d4bf8e 100644 --- a/sensorhub-support/src/main/java/com/casic/missiles/enums/BirmmDataBizTypeEnums.java +++ b/sensorhub-support/src/main/java/com/casic/missiles/enums/BirmmDataBizTypeEnums.java @@ -9,13 +9,9 @@ */ @Getter public enum BirmmDataBizTypeEnums { -// RETRY_TIMES_TAG("1000000A", 1), -// DESTINATION_IP_TAG("10000022", 2), TYPE_LIQUID_LEVEL("level", 3), -// DATE_TAG("10000050", 4), TYPE_GAS_CONCENTRATION("gas", 5), -// UPLOAD_INTERVAL_TAG("10000062", 6), -// START_TIME_TAG("10000104", 7), + TYPE_WELL_STATE("state", 7), TYPE_TEMPERATURE("temperature", 8); diff --git a/casic-iot-common/src/main/java/com/casic/missiles/util/SpringContextUtil.java b/casic-iot-common/src/main/java/com/casic/missiles/util/SpringContextUtil.java index 9b3ab90..45701f3 100644 --- a/casic-iot-common/src/main/java/com/casic/missiles/util/SpringContextUtil.java +++ b/casic-iot-common/src/main/java/com/casic/missiles/util/SpringContextUtil.java @@ -60,7 +60,10 @@ @SuppressWarnings("unchecked") public static T getBean(String name) throws BeansException { - return (T) beanFactory.getBean(name); + if (beanFactory.containsBean(name)) { + return (T) beanFactory.getBean(name); + } + return null; } public static boolean containsBean(String name) { diff --git a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml index 962b944..1652cf1 100644 --- a/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml +++ b/casic-iot-dao/src/main/resources/mapper/DeviceMapper.xml @@ -27,7 +27,7 @@ SELECT device_type AS "deviceType",create_time AS "createTime",d.devcode, model,imei,d.cell,name AS "deviceName",status,d.id,create_user_id AS "createUserId", - create_user_name AS "createUserName" + create_user_name AS "createUserName", group_id as groupId, product_id as productId FROM ( SELECT * FROM device diff --git a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceServiceImpl.java b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceServiceImpl.java index b276a17..375f189 100644 --- a/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceServiceImpl.java +++ b/casic-iot-service/src/main/java/com/casic/missiles/service/impl/DeviceServiceImpl.java @@ -57,7 +57,6 @@ private final ProductInfoMapper productInfoMapper; private final DeviceGroupMapper deviceGroupMapper; private final SysCommonMapper sysCommonMapper; - private final DeviceImeiIccidMapper imeiIccidMapper; @Override public Page listPage(Page page, DeviceListRequest request, DataScope dataScope) throws Exception { @@ -67,16 +66,24 @@ } List deviceListVOS = this.baseMapper.listPage(page, request, dataScope); List productInfoList = productInfoMapper.selectList(null); + List groupList = deviceGroupMapper.selectList(null); Map productInfoMap = productInfoList.stream().collect( Collectors.toMap(ProductInfo::getId, e -> e) ); + Map groupMap = groupList.stream().collect( + Collectors.toMap(DeviceGroup::getId, e -> e) + ); //处理产品映射,转化字典 for (DeviceListVO deviceListVO : deviceListVOS) { - ProductInfo productInfo = productInfoMap.containsKey(deviceListVO.getProductId()) ? null : productInfoMap.get(deviceListVO.getProductId()); + ProductInfo productInfo = productInfoMap.getOrDefault(deviceListVO.getProductId(), null); + DeviceGroup group = groupMap.getOrDefault(deviceListVO.getGroupId(), null); if (ObjectUtils.isNotEmpty(productInfo)) { deviceListVO.setProductName(productInfo.getName()); deviceListVO.setEncipherType(productInfo.getProductType()); } + if (ObjectUtil.isNotNull(group)) { + deviceListVO.setGroupName(group.getGroupName()); + } DictCodeUtils.convertDictCodeToName(deviceListVO); } page.setRecords(deviceListVOS); diff --git a/sensorhub-core/src/main/java/com/casic/missiles/listeners/ProtocolProcessEventListener.java b/sensorhub-core/src/main/java/com/casic/missiles/listeners/ProtocolProcessEventListener.java index 2258d38..f58e461 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/listeners/ProtocolProcessEventListener.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/listeners/ProtocolProcessEventListener.java @@ -6,7 +6,6 @@ import com.casic.missiles.cache.GuavaCacheUtil; import com.casic.missiles.model.Device; import com.casic.missiles.model.DeviceData; -import com.casic.missiles.pojo.ParseResult; import com.casic.missiles.pojo.ProcessEventTask; import com.casic.missiles.service.IDeviceDataService; import com.casic.missiles.service.impl.DeviceDataServiceImpl; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/netty/handler/SensorhubServerChannelInitialHandler.java b/sensorhub-core/src/main/java/com/casic/missiles/netty/handler/SensorhubServerChannelInitialHandler.java index dabfe36..509d1f9 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/netty/handler/SensorhubServerChannelInitialHandler.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/netty/handler/SensorhubServerChannelInitialHandler.java @@ -1,20 +1,12 @@ package com.casic.missiles.netty.handler; import com.casic.missiles.parser.BirmmHexDecoder; -import com.casic.missiles.parser.SensorhubDecoder; -import com.casic.missiles.parser.safe.impl.Sm4; import com.casic.missiles.replier.CommonHexReplier; -import com.casic.missiles.replier.SensorhubReplier; -import com.casic.missiles.util.SpringContextUtil; import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelPipeline; import io.netty.channel.socket.SocketChannel; -import io.netty.handler.logging.LogLevel; -import io.netty.handler.logging.LoggingHandler; import org.springframework.stereotype.Component; -import javax.annotation.Resource; - /** * @author cz * @date 2023-06-05 diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/resolver/combined/GenericCombinedFieldResolver.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/resolver/combined/GenericCombinedFieldResolver.java index 6bacdbe..a6c5d56 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/resolver/combined/GenericCombinedFieldResolver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/resolver/combined/GenericCombinedFieldResolver.java @@ -2,10 +2,8 @@ import cn.hutool.core.lang.Assert; import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.casic.missiles.enums.EngineExceptionEnum; import com.casic.missiles.exception.EngineException; -import com.casic.missiles.parser.GenericProtocolParser; import com.casic.missiles.parser.resolver.combined.impl.BizFieldParseProcessor; import com.casic.missiles.parser.resolver.combined.impl.PreBizFieldParseProcessor; import com.casic.missiles.parser.resolver.combined.impl.PreLeadCodeProcessor; @@ -14,18 +12,11 @@ import com.casic.missiles.pojo.CombinedFieldProcessorParam; import com.casic.missiles.pojo.FieldConfig; import com.casic.missiles.pojo.FieldRuleConfig; -import com.casic.missiles.util.SpringContextUtil; -import io.netty.buffer.ByteBuf; -import io.netty.buffer.ByteBufUtil; -import io.netty.util.internal.PlatformDependent; import lombok.extern.slf4j.Slf4j; -import org.springframework.util.ReflectionUtils; -import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; import java.util.Map; -import java.util.concurrent.atomic.AtomicLong; import java.util.stream.Collectors; /** diff --git a/sensorhub-core/src/main/java/com/casic/missiles/parser/rule/GenericRuleResolver.java b/sensorhub-core/src/main/java/com/casic/missiles/parser/rule/GenericRuleResolver.java index 797a75c..7905f74 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/parser/rule/GenericRuleResolver.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/parser/rule/GenericRuleResolver.java @@ -1,19 +1,12 @@ package com.casic.missiles.parser.rule; -import cn.hutool.core.lang.Assert; -import com.casic.missiles.enums.EngineExceptionEnum; -import com.casic.missiles.exception.EngineException; import com.casic.missiles.pojo.ProtocolFieldConfig; import com.casic.missiles.pojo.RuleConfig; -import com.casic.missiles.pojo.RuleEventConfig; -import com.casic.missiles.registry.RuleEventRegistry; -import com.casic.missiles.util.SpringContextUtil; import org.apache.commons.lang3.StringUtils; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Objects; import java.util.stream.Collectors; public class GenericRuleResolver { 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 d7b22f7..94ba4f9 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 @@ -2,6 +2,7 @@ import com.casic.missiles.parser.resolver.fields.FieldResolver; import com.casic.missiles.pojo.FieldRuleConfig; +import com.casic.missiles.util.SpringContextUtil; import org.apache.commons.lang3.StringUtils; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.casic.missiles.parser.resolver.FieldParser; @@ -9,7 +10,6 @@ import com.casic.missiles.pojo.FieldConfig; import com.casic.missiles.pojo.RuleConfig; import com.casic.missiles.registry.FieldConfigRegistry; -import com.casic.missiles.util.SpringContextUtil; import java.util.HashMap; import java.util.List; 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 92e2424..4919833 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 @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.casic.missiles.enums.parser.FrameStructEnum; +import com.casic.missiles.util.SpringContextUtil; import org.apache.commons.lang3.StringUtils; import com.casic.missiles.parser.resolver.FieldParser; import com.casic.missiles.parser.resolver.fields.DefaultProtocolFieldParser; @@ -13,7 +14,6 @@ import com.casic.missiles.pojo.ProtocolFieldConfig; import com.casic.missiles.registry.ProtocolFieldConfigRegistry; import com.casic.missiles.util.ProtocolFieldConfigUtil; -import com.casic.missiles.util.SpringContextUtil; import lombok.extern.slf4j.Slf4j; import java.util.*; diff --git a/sensorhub-core/src/main/java/com/casic/missiles/service/impl/GeneralServiceImpl.java b/sensorhub-core/src/main/java/com/casic/missiles/service/impl/GeneralServiceImpl.java index 79b47c2..5740eb2 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/service/impl/GeneralServiceImpl.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/service/impl/GeneralServiceImpl.java @@ -97,7 +97,8 @@ // 密钥根据设备编号获取 SafeStrategy safeStrategy; if (deviceType.equalsIgnoreCase(BirmmDeviceTypeEnums.METHANE.getValue()) || - deviceType.equalsIgnoreCase(BirmmDeviceTypeEnums.SENTINEL.getValue())) { + deviceType.equalsIgnoreCase(BirmmDeviceTypeEnums.SENTINEL.getValue()) || + deviceType.equalsIgnoreCase(BirmmDeviceTypeEnums.WELL.getValue())) { safeStrategy = SpringContextUtil.getBean(Sm4.class); } else { safeStrategy = SpringContextUtil.getBean(TeaUtilsX.class); @@ -389,7 +390,8 @@ // 密钥根据设备编号获取 SafeStrategy safeStrategy; if (baseReply.getDeviceType().equalsIgnoreCase(BirmmDeviceTypeEnums.METHANE.getValue()) || - baseReply.getDeviceType().equalsIgnoreCase(BirmmDeviceTypeEnums.SENTINEL.getValue())) { + baseReply.getDeviceType().equalsIgnoreCase(BirmmDeviceTypeEnums.SENTINEL.getValue()) || + baseReply.getDeviceType().equalsIgnoreCase(BirmmDeviceTypeEnums.WELL.getValue())) { safeStrategy = SpringContextUtil.getBean(Sm4.class); } else { safeStrategy = SpringContextUtil.getBean(TeaUtilsX.class); diff --git a/sensorhub-core/src/main/java/com/casic/missiles/util/SpringContextUtil.java b/sensorhub-core/src/main/java/com/casic/missiles/util/SpringContextUtil.java deleted file mode 100644 index 9b3ab90..0000000 --- a/sensorhub-core/src/main/java/com/casic/missiles/util/SpringContextUtil.java +++ /dev/null @@ -1,106 +0,0 @@ -package com.casic.missiles.util; - -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.BeansException; -import org.springframework.beans.factory.config.BeanFactoryPostProcessor; -import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; -import org.springframework.beans.factory.support.AbstractBeanDefinition; -import org.springframework.beans.factory.support.BeanDefinitionBuilder; -import org.springframework.beans.factory.support.BeanDefinitionReaderUtils; -import org.springframework.beans.factory.support.BeanDefinitionRegistry; -import org.springframework.context.ApplicationContext; -import org.springframework.context.ApplicationContextAware; -import org.springframework.context.annotation.Bean; -import org.springframework.stereotype.Component; -import org.springframework.util.CollectionUtils; - -import java.util.List; -import java.util.Map; -import java.util.concurrent.ForkJoinPool; -import java.util.function.Function; - -/** - * @Description: Spring应用上下文工具 - * @Author: wangpeng - * @Date: 2022/8/11 18:04 - */ -@Component -public class SpringContextUtil implements BeanFactoryPostProcessor, ApplicationContextAware { - /** - * Spring应用上下文环境 - */ - private static ApplicationContext applicationContext; - - private static ConfigurableListableBeanFactory beanFactory; - - /** - * 实现ApplicationContextAware接口的回调方法,设置上下文环境 - */ - @Override - public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { - SpringContextUtil.applicationContext = applicationContext; - } - - @Override - public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { - SpringContextUtil.beanFactory = beanFactory; - } - - public static ApplicationContext getApplicationContext() { - return applicationContext; - } - -// public static Object getBean(String beanId) throws BeansException { -// return applicationContext.getBean(beanId); -// } - - public static T getBean(Class requiredType) { - return (T) applicationContext.getBean(requiredType); - } - - @SuppressWarnings("unchecked") - public static T getBean(String name) throws BeansException { - return (T) beanFactory.getBean(name); - } - - public static boolean containsBean(String name) { - return beanFactory.containsBean(name); - } - - public static T registerBean(String beanName, Class clazz, Function function) { - // 生成bean定义 - BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder.genericBeanDefinition(clazz); - // 执行bean处理函数 - AbstractBeanDefinition beanDefinition = function.apply(beanDefinitionBuilder); - BeanDefinitionRegistry beanFactory = (BeanDefinitionRegistry) SpringContextUtil.beanFactory; - // 判断是否通过beanName注册 - if (StringUtils.isNotBlank(beanName) && !containsBean(beanName)) { - beanFactory.registerBeanDefinition(beanName, beanDefinition); - return getBean(beanName); - } else { - // 非命名bean注册 - String name = BeanDefinitionReaderUtils.registerWithGeneratedName(beanDefinition, beanFactory); - return getBean(name); - } - } - - public static T registerBean(String beanName, Class clazz, List args, Map property) { - return registerBean(beanName, clazz, beanDefinitionBuilder -> { - // 放入构造参数 - if (!CollectionUtils.isEmpty(args)) { - args.forEach(beanDefinitionBuilder::addConstructorArgValue); - } - // 放入属性 - if (!CollectionUtils.isEmpty(property)) { - property.forEach(beanDefinitionBuilder::addPropertyValue); - } - return beanDefinitionBuilder.getBeanDefinition(); - }); - } - - @Bean - public ForkJoinPool forkJoinPool() { - return new ForkJoinPool(100); - } - -} diff --git a/sensorhub-core/src/main/java/com/casic/missiles/util/aep/AepCommandSend.java b/sensorhub-core/src/main/java/com/casic/missiles/util/aep/AepCommandSend.java index be3a404..963e002 100644 --- a/sensorhub-core/src/main/java/com/casic/missiles/util/aep/AepCommandSend.java +++ b/sensorhub-core/src/main/java/com/casic/missiles/util/aep/AepCommandSend.java @@ -11,7 +11,6 @@ import lombok.extern.slf4j.Slf4j; import java.nio.charset.StandardCharsets; -import java.util.Base64; import java.util.HashMap; import java.util.Map; diff --git a/sensorhub-service-birmm/pom.xml b/sensorhub-service-birmm/pom.xml index bb7a84b..3622c9b 100644 --- a/sensorhub-service-birmm/pom.xml +++ b/sensorhub-service-birmm/pom.xml @@ -18,6 +18,12 @@ sensorhub-support 1.0.0-SNAPSHOT + + com.casic + casic-iot-common + 1.0.0-SNAPSHOT + compile + \ No newline at end of file diff --git a/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/base/BirmmBaseFrame.java b/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/base/BirmmBaseFrame.java index 301ab49..e72e18b 100644 --- a/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/base/BirmmBaseFrame.java +++ b/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/base/BirmmBaseFrame.java @@ -1,14 +1,8 @@ package com.casic.missiles.frame.base; -import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; import com.casic.missiles.enums.BirmmOperationTypeEnums; -import com.casic.missiles.frame.tag.BirmmTagBuilderFactory; -import com.casic.missiles.frame.tag.biz.SensorStartupTag; -import com.casic.missiles.frame.tag.config.DateTimeTag; import com.casic.missiles.model.DeviceBizData; -import com.casic.missiles.util.SpringContextUtil; import lombok.Data; import java.io.Serializable; diff --git a/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java b/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java index c4303e0..2d7f4f0 100644 --- a/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java +++ b/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/tag/config/DestIPTag.java @@ -2,6 +2,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.enums.BirmmTagTypeEnums; import com.casic.missiles.frame.base.BirmmBaseTag; import com.casic.missiles.util.BytesUtil; import lombok.Data; @@ -28,18 +29,24 @@ return obj; } -// @Override -// public JSONObject toSimpleJSON(JSONObject obj) { -// if (ObjectUtil.isNull(obj)) { -// obj = new JSONObject(); -// } -// obj.put("ip", ip); -// return obj; -// } - @Override public void setValueStr(String valueStr) { super.setValueStr(valueStr); ip = new String(BytesUtil.hexStringToBytes(valueStr)); } + + @Override + public void setValueDecStr(String valueDecStr) { + ip = valueDecStr; + } + + @Override + public String toProtocolString() { + String result = ""; + result += BirmmTagTypeEnums.DESTINATION_IP_TAG.getOid(); // OID + result += String.format("%04x", BytesUtil.stringToAsciiStr(ip).length()); // 长度 + result += BytesUtil.stringToAsciiStr(ip); + + return result; + } } diff --git a/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java b/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java index c51a132..7dba55e 100644 --- a/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java +++ b/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/tag/config/DestPortTag.java @@ -2,6 +2,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.enums.BirmmTagTypeEnums; import com.casic.missiles.frame.base.BirmmBaseTag; import com.casic.missiles.util.BytesUtil; import lombok.Data; @@ -28,18 +29,24 @@ return obj; } -// @Override -// public JSONObject toSimpleJSON(JSONObject obj) { -// if (ObjectUtil.isNull(obj)) { -// obj = new JSONObject(); -// } -// obj.put("port", port); -// return obj; -// } - @Override public void setValueStr(String valueStr) { super.setValueStr(valueStr); port = new String(BytesUtil.hexStringToBytes(valueStr)); } + + @Override + public void setValueDecStr(String valueDecStr) { + port = valueDecStr; + } + + @Override + public String toProtocolString() { + String result = ""; + result += BirmmTagTypeEnums.DESTINATION_PORT_TAG.getOid(); // OID + result += String.format("%04x", BytesUtil.stringToAsciiStr(port).length()); // 长度 + result += BytesUtil.stringToAsciiStr(port); + + return result; + } } diff --git a/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/well/WellBizData.java b/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/well/WellBizData.java new file mode 100644 index 0000000..beeaaca --- /dev/null +++ b/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/well/WellBizData.java @@ -0,0 +1,27 @@ +package com.casic.missiles.frame.well; + +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +@Data +public class WellBizData { + + LocalDateTime uptime; + int bizType; + String value; + + @Override + public String toString() { + return "[" + uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) + "][" + value + "][" + bizType + "]"; + } + + public JSONObject toJSON() { + JSONObject json = new JSONObject(); + json.put("value", value); + json.put("uptime", uptime.format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); + return json; + } +} diff --git a/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/well/WellTrapRequestFrame.java b/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/well/WellTrapRequestFrame.java new file mode 100644 index 0000000..808e575 --- /dev/null +++ b/sensorhub-service-birmm/src/main/java/com/casic/missiles/frame/well/WellTrapRequestFrame.java @@ -0,0 +1,101 @@ +package com.casic.missiles.frame.well; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.casic.missiles.frame.base.BirmmBaseFrame; +import com.casic.missiles.frame.base.BirmmBaseTag; +import com.casic.missiles.frame.tag.biz.UploadTag; +import com.casic.missiles.model.DeviceBizData; +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.List; + +@Component("WellTrapRequest") +@Scope("prototype") +@Slf4j +public class WellTrapRequestFrame extends BirmmBaseFrame { + + List bizDataList; + final String MESSAGE_TYPE = "Data"; + final String DEV_TYPE = "Well"; + final String BIZ_TYPE = DEV_TYPE + MESSAGE_TYPE; + + @Override + public JSONObject toJSON() { + JSONObject json = super.toJSON(); + json.put("devType", DEV_TYPE); + json.put("mType", MESSAGE_TYPE); + + JSONObject body = new JSONObject(); + body.put("bType", BIZ_TYPE); + body.put("logtime", getLogTime().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); + + // 业务数据 + if (bizDataList != null) { + JSONArray datas = new JSONArray(); + for (WellBizData bizData : bizDataList) { + datas.add(bizData.toJSON()); + } + body.put("datas", datas); + } + + json.put("mBody", body); + + return json; + } + + @Override + public boolean needPushToApplication() { + return true; + } + + @Override + public List convertToBizDataList() { + List resultList = new ArrayList<>(); + if (bizDataList != null) { + for (WellBizData data : bizDataList) { + DeviceBizData bizData = new DeviceBizData(); + bizData.setBizType(String.valueOf(data.getBizType())); + bizData.setValue(data.getValue()); + bizData.setUptime(data.getUptime()); + + resultList.add(bizData); + } + } + + return resultList; + } + + @Override + public void doParseBizTag() { + if (getTagList().containsKey(UploadTag.class.getSimpleName())) { + handleUploadTag(); + } + } + + private void handleUploadTag() { + List tags = getTagList().get(UploadTag.class.getSimpleName()); + + bizDataList = new ArrayList<>(); + + for (BirmmBaseTag tag : tags) { + UploadTag uploadTag = (UploadTag) tag; + // 检查oid是否符合要求 能取到bizType 采集周期 采集开始时间 + boolean isValid = uploadTag.checkOid(); + if (isValid) { + WellBizData bizData = new WellBizData(); + + bizData.setBizType(uploadTag.getBizType()); + bizData.setUptime(LocalDateTime.now()); + bizData.setValue(uploadTag.getValueStr()); + + bizDataList.add(bizData); + } + } + } +} diff --git a/sensorhub-support/src/main/java/com/casic/missiles/enums/BirmmDataBizTypeEnums.java b/sensorhub-support/src/main/java/com/casic/missiles/enums/BirmmDataBizTypeEnums.java index 6f4d091..3d4bf8e 100644 --- a/sensorhub-support/src/main/java/com/casic/missiles/enums/BirmmDataBizTypeEnums.java +++ b/sensorhub-support/src/main/java/com/casic/missiles/enums/BirmmDataBizTypeEnums.java @@ -9,13 +9,9 @@ */ @Getter public enum BirmmDataBizTypeEnums { -// RETRY_TIMES_TAG("1000000A", 1), -// DESTINATION_IP_TAG("10000022", 2), TYPE_LIQUID_LEVEL("level", 3), -// DATE_TAG("10000050", 4), TYPE_GAS_CONCENTRATION("gas", 5), -// UPLOAD_INTERVAL_TAG("10000062", 6), -// START_TIME_TAG("10000104", 7), + TYPE_WELL_STATE("state", 7), TYPE_TEMPERATURE("temperature", 8); diff --git a/sensorhub-support/src/main/java/com/casic/missiles/util/BytesUtil.java b/sensorhub-support/src/main/java/com/casic/missiles/util/BytesUtil.java index 2529f9e..ff0fb42 100644 --- a/sensorhub-support/src/main/java/com/casic/missiles/util/BytesUtil.java +++ b/sensorhub-support/src/main/java/com/casic/missiles/util/BytesUtil.java @@ -2,6 +2,8 @@ import org.apache.tomcat.util.buf.HexUtils; +import java.nio.charset.StandardCharsets; + public class BytesUtil { public static String extractHexString(byte[] source, int start, int length) { @@ -66,4 +68,9 @@ return reverse.toString(); } + + public static String stringToAsciiStr(String str) { + byte[] bytes= str.getBytes(StandardCharsets.UTF_8); + return HexUtils.toHexString(bytes).toUpperCase(); + } } diff --git a/sensorhub-support/src/main/java/com/casic/missiles/util/SpringContextUtil.java b/sensorhub-support/src/main/java/com/casic/missiles/util/SpringContextUtil.java deleted file mode 100644 index 9b3ab90..0000000 --- a/sensorhub-support/src/main/java/com/casic/missiles/util/SpringContextUtil.java +++ /dev/null @@ -1,106 +0,0 @@ -package com.casic.missiles.util; - -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.BeansException; -import org.springframework.beans.factory.config.BeanFactoryPostProcessor; -import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; -import org.springframework.beans.factory.support.AbstractBeanDefinition; -import org.springframework.beans.factory.support.BeanDefinitionBuilder; -import org.springframework.beans.factory.support.BeanDefinitionReaderUtils; -import org.springframework.beans.factory.support.BeanDefinitionRegistry; -import org.springframework.context.ApplicationContext; -import org.springframework.context.ApplicationContextAware; -import org.springframework.context.annotation.Bean; -import org.springframework.stereotype.Component; -import org.springframework.util.CollectionUtils; - -import java.util.List; -import java.util.Map; -import java.util.concurrent.ForkJoinPool; -import java.util.function.Function; - -/** - * @Description: Spring应用上下文工具 - * @Author: wangpeng - * @Date: 2022/8/11 18:04 - */ -@Component -public class SpringContextUtil implements BeanFactoryPostProcessor, ApplicationContextAware { - /** - * Spring应用上下文环境 - */ - private static ApplicationContext applicationContext; - - private static ConfigurableListableBeanFactory beanFactory; - - /** - * 实现ApplicationContextAware接口的回调方法,设置上下文环境 - */ - @Override - public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { - SpringContextUtil.applicationContext = applicationContext; - } - - @Override - public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { - SpringContextUtil.beanFactory = beanFactory; - } - - public static ApplicationContext getApplicationContext() { - return applicationContext; - } - -// public static Object getBean(String beanId) throws BeansException { -// return applicationContext.getBean(beanId); -// } - - public static T getBean(Class requiredType) { - return (T) applicationContext.getBean(requiredType); - } - - @SuppressWarnings("unchecked") - public static T getBean(String name) throws BeansException { - return (T) beanFactory.getBean(name); - } - - public static boolean containsBean(String name) { - return beanFactory.containsBean(name); - } - - public static T registerBean(String beanName, Class clazz, Function function) { - // 生成bean定义 - BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder.genericBeanDefinition(clazz); - // 执行bean处理函数 - AbstractBeanDefinition beanDefinition = function.apply(beanDefinitionBuilder); - BeanDefinitionRegistry beanFactory = (BeanDefinitionRegistry) SpringContextUtil.beanFactory; - // 判断是否通过beanName注册 - if (StringUtils.isNotBlank(beanName) && !containsBean(beanName)) { - beanFactory.registerBeanDefinition(beanName, beanDefinition); - return getBean(beanName); - } else { - // 非命名bean注册 - String name = BeanDefinitionReaderUtils.registerWithGeneratedName(beanDefinition, beanFactory); - return getBean(name); - } - } - - public static T registerBean(String beanName, Class clazz, List args, Map property) { - return registerBean(beanName, clazz, beanDefinitionBuilder -> { - // 放入构造参数 - if (!CollectionUtils.isEmpty(args)) { - args.forEach(beanDefinitionBuilder::addConstructorArgValue); - } - // 放入属性 - if (!CollectionUtils.isEmpty(property)) { - property.forEach(beanDefinitionBuilder::addPropertyValue); - } - return beanDefinitionBuilder.getBeanDefinition(); - }); - } - - @Bean - public ForkJoinPool forkJoinPool() { - return new ForkJoinPool(100); - } - -}