第一步:在類上加入@AllArgsConstructor
import lombok.AllArgsConstructor;
@Slf4j
@Configuration
//@RequiredArgsConstructor
@AllArgsConstructor
public class MqttServer {
第二步: 給類創(chuàng)建一個私有map(相當(dāng)于if分支)
private Map<String, Function<TopicStrategyMapDto, Boolean>> topicStrategyMap;
第三步:各類創(chuàng)建一個無參init方法,標(biāo)注@PostConstruct
/**
* 初始化(策略模式相關(guān)操作)
*/
@PostConstruct
public void init() {
//插入冷藏箱數(shù)據(jù)
topicStrategyMap.put(MqttEnum.COLD_DEVICE_TYPE.getValue(), topicStrategyMapDto -> {
ColdData coldData = JSONUtil.toBean(topicStrategyMapDto.getDataJson(), ColdData.class);
coldData.setAlarmType(topicStrategyMapDto.getAlarmType());
return dataUploadService.insertOneColdData(coldData);
});
//插入液氮罐數(shù)據(jù)
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());
}
第四步:在業(yè)務(wù)中調(diào)用
Function<TopicStrategyMapDto, Boolean> insertResult = topicStrategyMap.get(dataType);
if (ObjectUtil.isNull(insertResult)) {
log.info("來自主題{}的數(shù)據(jù)插入失敗,原因:topicStrategyMap為null,添加失敗的數(shù)據(jù)為:{}", topic, dataJson);
}
if (insertResult.apply(TopicStrategyMapDto.builder().dataJson(dataJson).alarmType(Integer.valueOf(alarmType)).build())) {
log.info("來自主題{}的數(shù)據(jù),添加成功!添加的數(shù)據(jù)為:{}", topic, dataJson);
} else {
log.info("來自主題{}的數(shù)據(jù),添加失敗! 添加失敗的數(shù)據(jù)為:{}", topic, dataJson);
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。