第一步:在类上加入@AllArgsConstructor
import lombok.AllArgsConstructor;
@Slf4j
@Configuration
//@RequiredArgsConstructor
@AllArgsConstructor
public class MqttServer {
第二步: 给类创建一个私有map(相当于if分支)
private Map<String, Function<TopicStrategyMapDto, Boolean>> topicStrategyMap;
第三步:各类创建一个无参init方法,标注@PostConstruct
/**
* 初始化(策略模式相关操作)
*/
@PostConstruct
public void init() {
//插入冷藏箱数据
topicStrategyMap.put(MqttEnum.COLD_DEVICE_TYPE.getValue(), topicStrategyMapDto -> {
ColdData coldData = JSONUtil.toBean(topicStrategyMapDto.getDataJson(), ColdData.class);
coldData.setAlarmType(topicStrategyMapDto.getAlarmType());
return dataUploadService.insertOneColdData(coldData);
});
//插入液氮罐数据
topicStrategyMap.put(MqttEnum.INPTANK_DEVICE_TYPE.getValue(), topicStrategyMapDto -> {
InptankData inptankData = JSONUtil.toBean(topicStrategyMapDto.getDataJson(), InptankData.class);
inptankData.setAlarmType(topicStrategyMapDto.getAlarmType());
return dataUploadService.insertOneInptankData(inptankData);
});
//插入超低温冰箱
topicStrategyMap.put(MqttEnum.ULTRA_COLD_DEVICE_TYPE.getValue(), topicStrategyMapDto -> {
UltraColdData ultraColdData = JSONUtil.toBean(topicStrategyMapDto.getDataJson(), UltraColdData.class);
ultraColdData.setAlarmType(topicStrategyMapDto.getAlarmType());
return dataUploadService.insertOneUltraColdData(ultraColdData);
});
log.info(mqttConfig.toString());
}
第四步:在业务中调用
Function<TopicStrategyMapDto, Boolean> insertResult = topicStrategyMap.get(dataType);
if (ObjectUtil.isNull(insertResult)) {
log.info("来自主题{}的数据插入失败,原因:topicStrategyMap为null,添加失败的数据为:{}", topic, dataJson);
}
if (insertResult.apply(TopicStrategyMapDto.builder().dataJson(dataJson).alarmType(Integer.valueOf(alarmType)).build())) {
log.info("来自主题{}的数据,添加成功!添加的数据为:{}", topic, dataJson);
} else {
log.info("来自主题{}的数据,添加失败! 添加失败的数据为:{}", topic, dataJson);
}
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。