diff --git a/modules/thing/src/main/java/com/thing/event/ThingRelationDetailUpdateEvent.java b/modules/thing/src/main/java/com/thing/event/ThingRelationDetailUpdateEvent.java new file mode 100644 index 0000000..88fed56 --- /dev/null +++ b/modules/thing/src/main/java/com/thing/event/ThingRelationDetailUpdateEvent.java @@ -0,0 +1,25 @@ +package com.thing.event; + +import com.thing.thing.entity.entity.IotThingEntity; +import lombok.Getter; +import lombok.Setter; +import org.springframework.context.ApplicationEvent; + +import java.util.List; + +/** + * Author: SiYang + * Date: 2023/12/01 14:39 + * Description: 新增物关系子节点事件 + */ +@Getter +@Setter +public class ThingRelationDetailUpdateEvent extends ApplicationEvent { + + private List list; + + public ThingRelationDetailUpdateEvent(Object source, List list) { + super(source); + this.list = list; + } +} diff --git a/modules/thing/src/main/java/com/thing/listener/ThingChangedUpdateRelationEventListener.java b/modules/thing/src/main/java/com/thing/listener/ThingChangedUpdateRelationEventListener.java new file mode 100644 index 0000000..a6a70ab --- /dev/null +++ b/modules/thing/src/main/java/com/thing/listener/ThingChangedUpdateRelationEventListener.java @@ -0,0 +1,54 @@ +package com.thing.listener; + +import com.thing.common.cache.constants.CacheNameEnum; +import com.thing.event.ThingRelationDetailUpdateEvent; +import com.thing.thing.cache.service.ThingCache; +import com.thing.thing.entity.entity.IotThingEntity; +import com.thing.thing.relation.detail.entity.IotThingRelationDetailEntity; +import com.thing.thing.relation.detail.service.IotThingRelationDetailService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.context.event.EventListener; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * @author siyang + * @date 2024/9/10 10:34 + * @description 物变更事件监听器 + */ +@Slf4j +@Component +@RequiredArgsConstructor +public class ThingChangedUpdateRelationEventListener { + + private final IotThingRelationDetailService thingRelationDetailService; + + private final ThingCache cache; + + @EventListener(ThingRelationDetailUpdateEvent.class) + public void onThingChangedEvent(ThingRelationDetailUpdateEvent event) { + List list = event.getList(); + for (IotThingEntity thing : list) { + List fromEntities = thingRelationDetailService.findByFromIdAndToId(thing.getId(),null); + if(CollectionUtils.isNotEmpty(fromEntities)){ + for (IotThingRelationDetailEntity entity : fromEntities) { + entity.setFromName(thing.getName()); + } + thingRelationDetailService.updateBatch(fromEntities); + } + + List toEntities = thingRelationDetailService.findByFromIdAndToId(null, thing.getId()); + + if(CollectionUtils.isNotEmpty(toEntities)){ + for (IotThingRelationDetailEntity entity : toEntities) { + entity.setToName(thing.getName()); + } + thingRelationDetailService.updateBatch(toEntities); + } + } + cache.clearTopic(CacheNameEnum.THING_DETAIL_RELATION); + } +} diff --git a/modules/thing/src/main/java/com/thing/thing/entity/service/impl/IotThingEntityServiceImpl.java b/modules/thing/src/main/java/com/thing/thing/entity/service/impl/IotThingEntityServiceImpl.java index d43b621..18a0d6e 100644 --- a/modules/thing/src/main/java/com/thing/thing/entity/service/impl/IotThingEntityServiceImpl.java +++ b/modules/thing/src/main/java/com/thing/thing/entity/service/impl/IotThingEntityServiceImpl.java @@ -23,6 +23,7 @@ import com.thing.common.data.tskv.TsKvDTO; import com.thing.common.orm.service.impl.BaseServiceImpl; import com.thing.common.tskv.service.TsKvService; import com.thing.event.ThingChangedEvent; +import com.thing.event.ThingRelationDetailUpdateEvent; import com.thing.sys.biz.entity.SysDeptEntity; import com.thing.sys.biz.mapper.SysDeptMapper; import com.thing.sys.oss.cloud.OSSFactory; @@ -531,6 +532,7 @@ public class IotThingEntityServiceImpl extends BaseServiceImpl findByFromIdAndToId(Long fromId,Long toId); + List findByRootId(Long rootId); Long findByMaxSort(Long rootId); diff --git a/modules/thing/src/main/java/com/thing/thing/relation/detail/service/impl/IotThingRelationDetailServiceImpl.java b/modules/thing/src/main/java/com/thing/thing/relation/detail/service/impl/IotThingRelationDetailServiceImpl.java index adfd661..1cb9d58 100644 --- a/modules/thing/src/main/java/com/thing/thing/relation/detail/service/impl/IotThingRelationDetailServiceImpl.java +++ b/modules/thing/src/main/java/com/thing/thing/relation/detail/service/impl/IotThingRelationDetailServiceImpl.java @@ -191,6 +191,13 @@ public class IotThingRelationDetailServiceImpl extends BaseServiceImpl findByFromIdAndToId(Long fromId, Long toId) { + return mapper.selectListByQuery(QueryWrapper.create() + .eq(IotThingRelationDetailEntity::getToId, toId,!Objects.isNull(toId)) + .eq(IotThingRelationDetailEntity::getFromId, fromId,!Objects.isNull(fromId))); + } + @Override public List findByRootId(Long rootId) { return mapper.selectListByQueryAs(QueryWrapper.create()