diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/device/repo/DeviceRepository.java b/src/main/java/com/zsc/edu/gateway/modules/iot/device/repo/DeviceRepository.java index 719a9a8..b7abb06 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/device/repo/DeviceRepository.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/device/repo/DeviceRepository.java @@ -26,4 +26,6 @@ public interface DeviceRepository extends BaseMapper { @Param("status") Device.Status status, @Param("online") Boolean online); + @Select("select * from iot_device where client_id=#{clientId}") + Device findByClientId(@Param("clientId") String clientId); } 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 6356236..98b6928 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 @@ -1,5 +1,6 @@ package com.zsc.edu.gateway.modules.iot.record.service.impl; +import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -44,7 +45,7 @@ public class RecordDataServiceImpl extends ServiceImpl())); recordDataStatusVo.setDataCount(baseMapper.selectCount(new LambdaQueryWrapper().isNotNull(RecordData::getContent))); return recordDataStatusVo; } @@ -83,10 +84,10 @@ public class RecordDataServiceImpl extends ServiceImpl().eq(Device::getClientId, recordData.getClientId())); + Device device = deviceRepository.findByClientId(recordData.getClientId()); // 获取产品下的所有事件 - List events = eventRepository.selectList(new LambdaQueryWrapper().eq(Event::getProductId, device.getProductId())); + List events = eventRepository.selectByProductId(device.getProductId()); // 遍历每个事件 for (Event event : events) { @@ -100,42 +101,38 @@ public class RecordDataServiceImpl extends ServiceImpl defaultValue) { - eventPublisher.publishEvent(new TemperatureExceededEvent(this, recordData, value, event.getName())); - } - break; - case LT: - if (value < defaultValue) { - eventPublisher.publishEvent(new TemperatureExceededEvent(this, recordData, value, event.getName())); - } - break; - case EQ: - if (value == defaultValue) { - eventPublisher.publishEvent(new TemperatureExceededEvent(this, recordData, value, event.getName())); - } - break; - default: - // 处理未知的比较类型 - System.err.println("Unknown compare type: " + compareType); - break; - } - } catch (NumberFormatException e) { - // 处理数值转换异常 - System.err.println("Failed to parse value for identifier: " + identifier + ". Error: " + e.getMessage()); + // 根据比较类型进行不同的处理 + switch (compareType) { + case GT: + if (value > defaultValue) { + eventPublisher.publishEvent(new TemperatureExceededEvent(this, recordData, value, event.getName())); + } + break; + case LT: + if (value < defaultValue) { + eventPublisher.publishEvent(new TemperatureExceededEvent(this, recordData, value, event.getName())); + } + break; + case EQ: + if (value == defaultValue) { + eventPublisher.publishEvent(new TemperatureExceededEvent(this, recordData, value, event.getName())); + } + break; + default: + // 处理未知的比较类型 + System.err.println("Unknown compare type: " + compareType); + break; } } } + } diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/controller/EventController.java b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/controller/EventController.java index 4eb4710..7f9ef55 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/controller/EventController.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/controller/EventController.java @@ -1,10 +1,13 @@ package com.zsc.edu.gateway.modules.iot.tsl.controller; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.zsc.edu.gateway.modules.iot.tsl.dto.EventDto; import com.zsc.edu.gateway.modules.iot.tsl.entity.Event; +import com.zsc.edu.gateway.modules.iot.tsl.entity.EventLog; import com.zsc.edu.gateway.modules.iot.tsl.query.EventQuery; +import com.zsc.edu.gateway.modules.iot.tsl.repo.EventLogRepository; import com.zsc.edu.gateway.modules.iot.tsl.service.EventService; import lombok.AllArgsConstructor; import org.springframework.security.access.prepost.PreAuthorize; @@ -21,6 +24,8 @@ public class EventController { private final EventService service; + private final EventLogRepository eventLogRepository; + /** * 创建事件 @@ -59,6 +64,19 @@ public class EventController { return service.page(page, query.wrapper()); } + /** + * 查询事件记录 + * + * @param clientId 事件ClientId + * @param page 分页参数 + * @return Page 事件分页数据 + */ + @GetMapping("/log") + @PreAuthorize("hasAuthority('iot:event:query')") + public IPage eventLogPage(Page page, String clientId) { + return eventLogRepository.selectPage(page, new LambdaQueryWrapper().eq(EventLog::getRecordId, clientId)); + } + /** * 删除事件 diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/entity/Event.java b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/entity/Event.java index 17ba52d..c6c47bd 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/entity/Event.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/entity/Event.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonInclude; import com.zsc.edu.gateway.common.enums.IState; import com.zsc.edu.gateway.modules.iot.product.entity.Product; +import com.zsc.edu.gateway.modules.iot.tsl.dto.ParamDto; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; @@ -40,26 +41,26 @@ public class Event extends BaseParam { @TableField(exist = false) private List outputs; - public enum Type implements IEnum, IState { + public enum Type implements IEnum, IState { /** * 主动 */ - ACTIVE(1, "主动"), + ACTIVE("ACTIVE", "主动"), /** * 被动 */ - PASSIVE(2, "被动"); + PASSIVE("PASSIVE", "被动"); - private final int value; + private final String value; private final String description; - Type(int value, String description) { + Type(String value, String description) { this.value = value; this.description = description; } @Override - public Integer getValue() { + public String getValue() { return value; } diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/entity/Param.java b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/entity/Param.java index e01ea64..f27db23 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/entity/Param.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/entity/Param.java @@ -120,29 +120,29 @@ public class Param extends BaseParam { } } - public enum CompareType implements IEnum, IState { + public enum CompareType implements IEnum, IState { /** * 大于 */ - GT(1, ">"), + GT("GT", "GT"), /** * 小于 */ - LT(2, "<"), + LT("LT", "LT"), /** * 等于 */ - EQ(3, "="); - private final int value; + EQ("EQ", "EQ"); + private final String value; private final String description; - CompareType(int value, String description) { + CompareType(String value, String description) { this.value = value; this.description = description; } @Override - public Integer getValue() { + public String getValue() { return value; } 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 index 09fe9ea..74c7409 100644 --- 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 @@ -2,6 +2,13 @@ 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; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; public interface EventLogRepository extends BaseMapper { + + @Select("select * from iot_event_log where client_id=#{clientId}") + List selectByClientId(@Param("clientId") String clientId); } diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/repo/EventRepository.java b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/repo/EventRepository.java index 035c7ad..36d5f13 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/repo/EventRepository.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/repo/EventRepository.java @@ -24,4 +24,7 @@ public interface EventRepository extends BaseMapper { // IPage page(Page page, @Param("query") EventQuery query); Event selectById(@Param("id") Long id); + + + List selectByProductId(@Param("productId") Long id); } diff --git a/src/main/resources/mappers/iot/EventLogMapper.xml b/src/main/resources/mappers/iot/EventLogMapper.xml new file mode 100644 index 0000000..ac9be51 --- /dev/null +++ b/src/main/resources/mappers/iot/EventLogMapper.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/src/main/resources/mappers/iot/EventMapper.xml b/src/main/resources/mappers/iot/EventMapper.xml index dc4cc6c..39f5e2a 100644 --- a/src/main/resources/mappers/iot/EventMapper.xml +++ b/src/main/resources/mappers/iot/EventMapper.xml @@ -21,6 +21,8 @@ + + @@ -38,4 +40,20 @@ and ip.foreign_type = 1 where e.id = #{id} + \ No newline at end of file