diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/record/entity/TemperatureExceededEvent.java b/src/main/java/com/zsc/edu/gateway/modules/iot/record/entity/TemperatureExceededEvent.java index 458aabf..4419632 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/record/entity/TemperatureExceededEvent.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/record/entity/TemperatureExceededEvent.java @@ -12,10 +12,12 @@ import org.springframework.context.ApplicationEvent; public class TemperatureExceededEvent extends ApplicationEvent { private final RecordData recordData; private final double reducedParameter; + private final String eventName; - public TemperatureExceededEvent(Object source, RecordData recordData, double reducedParameter) { + public TemperatureExceededEvent(Object source, RecordData recordData, double reducedParameter, String eventName) { super(source); this.recordData = recordData; this.reducedParameter = reducedParameter; + this.eventName = eventName; } } diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/record/service/impl/RecordDataServiceImpl.java b/src/main/java/com/zsc/edu/gateway/modules/iot/record/service/impl/RecordDataServiceImpl.java index b7effd6..6356236 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/record/service/impl/RecordDataServiceImpl.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/record/service/impl/RecordDataServiceImpl.java @@ -92,12 +92,12 @@ public class RecordDataServiceImpl extends ServiceImpl { - processParam(recordData, param); + processParam(recordData, param, event); }); } } - private void processParam(RecordData recordData, Param param) { + private void processParam(RecordData recordData, Param param, Event event) { // 获取参数的默认值和比较类型 Double defaultValue = param.getDefaultValue(); Param.CompareType compareType = param.getCompareType(); @@ -113,17 +113,17 @@ public class RecordDataServiceImpl extends ServiceImpl defaultValue) { - eventPublisher.publishEvent(new TemperatureExceededEvent(this, recordData, value)); + eventPublisher.publishEvent(new TemperatureExceededEvent(this, recordData, value, event.getName())); } break; case LT: if (value < defaultValue) { - eventPublisher.publishEvent(new TemperatureExceededEvent(this, recordData, value)); + eventPublisher.publishEvent(new TemperatureExceededEvent(this, recordData, value, event.getName())); } break; case EQ: if (value == defaultValue) { - eventPublisher.publishEvent(new TemperatureExceededEvent(this, recordData, value)); + eventPublisher.publishEvent(new TemperatureExceededEvent(this, recordData, value, event.getName())); } break; default: diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/record/service/impl/TemperatureExceededEventListener.java b/src/main/java/com/zsc/edu/gateway/modules/iot/record/service/impl/TemperatureExceededEventListener.java new file mode 100644 index 0000000..dd8d487 --- /dev/null +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/record/service/impl/TemperatureExceededEventListener.java @@ -0,0 +1,45 @@ +package com.zsc.edu.gateway.modules.iot.record.service.impl; + +import com.zsc.edu.gateway.modules.iot.device.repo.DeviceRepository; +import com.zsc.edu.gateway.modules.iot.record.entity.RecordData; +import com.zsc.edu.gateway.modules.iot.record.entity.TemperatureExceededEvent; +import com.zsc.edu.gateway.modules.iot.tsl.entity.EventLog; +import com.zsc.edu.gateway.modules.iot.tsl.repo.EventLogRepository; +import com.zsc.edu.gateway.modules.iot.tsl.repo.EventRepository; +import jakarta.annotation.Resource; +import org.springframework.context.ApplicationListener; +import org.springframework.context.event.EventListener; +import org.springframework.stereotype.Component; + +import java.time.LocalDateTime; + +/** + * @author zhuang + */ +@Component +public class TemperatureExceededEventListener implements ApplicationListener { + + @Resource + private EventLogRepository eventLogRepository; + + @Resource + private DeviceRepository deviceRepository; + + @Resource + private EventRepository eventRepository; + + @EventListener + @Override + public void onApplicationEvent(TemperatureExceededEvent event) { + RecordData recordData = event.getRecordData(); + System.out.println(event.getEventName() + "数值如下:" + event.getReducedParameter()); + // 创建 EventLog 对象 + EventLog eventLog = new EventLog(); + eventLog.setName(event.getEventName()); + eventLog.setRecordId(recordData.getId()); + eventLog.setTriggerTime(LocalDateTime.now()); + eventLog.setIsRead(false); + // 保存 EventLog 对象到数据库 + eventLogRepository.insert(eventLog); + } +} \ No newline at end of file diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/entity/EventLog.java b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/entity/EventLog.java new file mode 100644 index 0000000..bbf5c43 --- /dev/null +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/entity/EventLog.java @@ -0,0 +1,55 @@ +package com.zsc.edu.gateway.modules.iot.tsl.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.zsc.edu.gateway.modules.iot.record.entity.RecordData; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.time.LocalDateTime; + +/** + * @author zhuang + */ +@Setter +@Getter +@NoArgsConstructor +@AllArgsConstructor +@TableName("iot_event_log") +public class EventLog { + /** + * 序列化主键(有数据库提供,非自增) + */ + @TableId(type = IdType.AUTO) + private Long id; + + /** + * 名称 + */ + private String name; + + /** + * 关联上报数据id + */ + private String recordId; + + /** + * 关联上报数据 + */ + @TableField(exist = false) + private RecordData recordData; + + /** + * 触发时间 + */ + private LocalDateTime triggerTime; + + /** + * 是否已读 + */ + private Boolean isRead; +} diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/repo/EventLogRepository.java b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/repo/EventLogRepository.java new file mode 100644 index 0000000..09fe9ea --- /dev/null +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/repo/EventLogRepository.java @@ -0,0 +1,7 @@ +package com.zsc.edu.gateway.modules.iot.tsl.repo; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zsc.edu.gateway.modules.iot.tsl.entity.EventLog; + +public interface EventLogRepository extends BaseMapper { +}