diff --git a/jetlinks-components/plugin-component/src/main/java/org/jetlinks/community/plugin/impl/id/DefaultPluginDataIdMapper.java b/jetlinks-components/plugin-component/src/main/java/org/jetlinks/community/plugin/impl/id/DefaultPluginDataIdMapper.java index 6bb0c6a8..aaac8767 100644 --- a/jetlinks-components/plugin-component/src/main/java/org/jetlinks/community/plugin/impl/id/DefaultPluginDataIdMapper.java +++ b/jetlinks-components/plugin-component/src/main/java/org/jetlinks/community/plugin/impl/id/DefaultPluginDataIdMapper.java @@ -46,28 +46,28 @@ public class DefaultPluginDataIdMapper implements PluginDataIdMapper { @EventListener - public void handleEvent(EntityCreatedEvent event){ + public void handleEvent(EntityCreatedEvent event) { event.async( saveMapping(Flux.fromIterable(event.getEntity())) ); } @EventListener - public void handleEvent(EntityModifyEvent event){ + public void handleEvent(EntityModifyEvent event) { event.async( saveMapping(Flux.fromIterable(event.getAfter())) ); } @EventListener - public void handleEvent(EntitySavedEvent event){ + public void handleEvent(EntitySavedEvent event) { event.async( saveMapping(Flux.fromIterable(event.getEntity())) ); } @EventListener - public void handleEvent(EntityDeletedEvent event){ + public void handleEvent(EntityDeletedEvent event) { event.async( removeMapping(Flux.fromIterable(event.getEntity())) ); @@ -120,9 +120,16 @@ public class DefaultPluginDataIdMapper implements PluginDataIdMapper { public Mono getInternalId(String type, String pluginId, String externalId) { - Assert.notNull(externalId,"externalId must not be null"); + Assert.notNull(externalId, "externalId must not be null"); return doWithStore(store -> store - .getConfig(createMappingKey(type, pluginId, externalId)) + .getConfig(createMappingKey(type, pluginId, externalId), + Mono.defer(() -> repository + .createQuery() + .where(PluginDataIdMappingEntity::getType, type) + .and(PluginDataIdMappingEntity::getPluginId, pluginId) + .and(PluginDataIdMappingEntity::getExternalId, externalId) + .fetchOne() + .map(PluginDataIdMappingEntity::getInternalId))) .map(Value::asString)) .defaultIfEmpty(externalId); } @@ -131,9 +138,16 @@ public class DefaultPluginDataIdMapper implements PluginDataIdMapper { public Mono getExternalId(String type, String pluginId, String internalId) { - Assert.notNull(internalId,"internalId must not be null"); + Assert.notNull(internalId, "internalId must not be null"); return doWithStore(store -> store - .getConfig(createMappingKey(type, pluginId, internalId)) + .getConfig(createMappingKey(type, pluginId, internalId), + Mono.defer(() -> repository + .createQuery() + .where(PluginDataIdMappingEntity::getType, type) + .and(PluginDataIdMappingEntity::getPluginId, pluginId) + .and(PluginDataIdMappingEntity::getInternalId, internalId) + .fetchOne() + .map(PluginDataIdMappingEntity::getExternalId))) .map(Value::asString)) .defaultIfEmpty(internalId); } @@ -142,9 +156,9 @@ public class DefaultPluginDataIdMapper implements PluginDataIdMapper { public Flux getMappings(String type, String pluginId) { return repository .createQuery() - .where(PluginDataIdMappingEntity::getType,type) - .and(PluginDataIdMappingEntity::getPluginId,pluginId) + .where(PluginDataIdMappingEntity::getType, type) + .and(PluginDataIdMappingEntity::getPluginId, pluginId) .fetch() - .map(entity-> new PluginDataMapping(entity.getExternalId(),entity.getInternalId())); + .map(entity -> new PluginDataMapping(entity.getExternalId(), entity.getInternalId())); } }