diff --git a/src/main/java/com/zsc/edu/gateway/framework/springEvent/TemperatureExceededEvent.java b/src/main/java/com/zsc/edu/gateway/framework/springEvent/TemperatureExceededEvent.java deleted file mode 100644 index b566f17..0000000 --- a/src/main/java/com/zsc/edu/gateway/framework/springEvent/TemperatureExceededEvent.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.zsc.edu.gateway.framework.springEvent; - -import com.zsc.edu.gateway.modules.iot.record.entity.RecordData; -import lombok.Getter; -import lombok.Setter; -import org.springframework.context.ApplicationEvent; - -/** - * @author zhuang - */ -@Getter -@Setter -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, String eventName) { - super(source); - this.recordData = recordData; - this.reducedParameter = reducedParameter; - this.eventName = eventName; - } -} diff --git a/src/main/java/com/zsc/edu/gateway/framework/springEvent/TemperatureExceededEventListener.java b/src/main/java/com/zsc/edu/gateway/framework/springEvent/TemperatureExceededEventListener.java deleted file mode 100644 index c9d2174..0000000 --- a/src/main/java/com/zsc/edu/gateway/framework/springEvent/TemperatureExceededEventListener.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.zsc.edu.gateway.framework.springEvent; - -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.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<TemperatureExceededEvent> { - - @Resource - private EventLogRepository eventLogRepository; - - @Resource - private DeviceRepository deviceRepository; - - @Resource - private EventRepository eventRepository; - - @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/device/controller/DeviceController.java b/src/main/java/com/zsc/edu/gateway/modules/iot/device/controller/DeviceController.java index 3b1e946..40eee1b 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/device/controller/DeviceController.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/device/controller/DeviceController.java @@ -58,7 +58,7 @@ public class DeviceController { @PostMapping("batch") @PreAuthorize("hasAuthority('iot:device:create')") @OperationLogAnnotation(content = "'批量设备'", operationType = "新建") - public List<Device> batchCreate(@RequestBody BatchDeviceDto batchDeviceDto) { + public List<Device> createBatch(@RequestBody BatchDeviceDto batchDeviceDto) { return service.batchCreate(batchDeviceDto); } @@ -148,15 +148,6 @@ public class DeviceController { return sseConfig.sendSseEvents(recordService::recordDataStatus); } - /** - * 获取告警信息 - */ - @GetMapping(value = "/sse/data/status", produces = MediaType.TEXT_EVENT_STREAM_VALUE) - @PreAuthorize("hasAuthority('iot:device:query')") - @DataPermission - public SseEmitter dataWarning() { - return sseConfig.sendSseEvents(recordService::dataWarning); - } /** * 下发命令 diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/device/service/impl/DeviceServiceImpl.java b/src/main/java/com/zsc/edu/gateway/modules/iot/device/service/impl/DeviceServiceImpl.java index 3ba466a..7cb0a49 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/device/service/impl/DeviceServiceImpl.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/device/service/impl/DeviceServiceImpl.java @@ -177,6 +177,9 @@ public class DeviceServiceImpl extends ServiceImpl<DeviceRepository, Device> imp return deviceRepo.selectPage(page, query.wrapper()); } + /** + * 设备状态 + */ @Override public DeviceStatusVo status() { return DeviceStatusVo.builder() @@ -193,6 +196,9 @@ public class DeviceServiceImpl extends ServiceImpl<DeviceRepository, Device> imp .build(); } + /** + * 发送消息 + */ @Override public String send(Long deviceId, Integer qos, JSONObject paras) throws JSONException { DeviceVo device = detail(deviceId); diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/record/entity/DataWarningVo.java b/src/main/java/com/zsc/edu/gateway/modules/iot/record/entity/DataWarningVo.java deleted file mode 100644 index e4c160a..0000000 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/record/entity/DataWarningVo.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.zsc.edu.gateway.modules.iot.record.entity; - -import lombok.Data; - -/** - * @author zhuang - */ -@Data -public class DataWarningVo { - /** - * 告警总数 - */ - private Long warningCount; - - /** - * 今日新增 - */ - private Long todayWarningCount; - - /** - * 一级报警数 - */ - private Long firstWarningCount; - - /** - * 二级报警数 - */ - private Long secondWarningCount; - - /** - * 三级报警数 - */ - private Long thirdWarningCount; -} diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/record/entity/RecordDataStatusVo.java b/src/main/java/com/zsc/edu/gateway/modules/iot/record/entity/RecordDataStatusVo.java index 16ca229..1b90770 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/record/entity/RecordDataStatusVo.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/record/entity/RecordDataStatusVo.java @@ -1,10 +1,12 @@ package com.zsc.edu.gateway.modules.iot.record.entity; +import lombok.Builder; import lombok.Data; /** * @author zhuang */ +@Builder @Data public class RecordDataStatusVo { /** @@ -16,4 +18,14 @@ public class RecordDataStatusVo { * 数据点数 */ public Long dataCount; + + /** + * 告警总数 + */ + private Long warningCount; + + /** + * 今日新增 + */ + private Long todayWarningCount; } diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/record/service/RecordDataService.java b/src/main/java/com/zsc/edu/gateway/modules/iot/record/service/RecordDataService.java index 9054a04..0def66b 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/record/service/RecordDataService.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/record/service/RecordDataService.java @@ -4,12 +4,9 @@ import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; -import com.zsc.edu.gateway.modules.iot.record.entity.DataWarningVo; import com.zsc.edu.gateway.modules.iot.record.entity.RecordData; import com.zsc.edu.gateway.modules.iot.record.entity.RecordDataStatusVo; -import java.util.List; - /** * @author zhuang */ @@ -19,7 +16,5 @@ public interface RecordDataService extends IService<RecordData> { RecordDataStatusVo recordDataStatus(); - DataWarningVo dataWarning(); - IPage<RecordData> query(Page<RecordData> page, String clientId); } \ No newline at end of file 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 e25bc08..bb093b5 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,6 +1,5 @@ package com.zsc.edu.gateway.modules.iot.record.service.impl; -import com.alibaba.fastjson2.JSONException; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -8,16 +7,14 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.zsc.edu.gateway.modules.iot.device.entity.Device; import com.zsc.edu.gateway.modules.iot.device.repo.DeviceRepository; -import com.zsc.edu.gateway.modules.iot.record.entity.DataWarningVo; import com.zsc.edu.gateway.modules.iot.record.entity.RecordData; import com.zsc.edu.gateway.modules.iot.record.entity.RecordDataStatusVo; -import com.zsc.edu.gateway.framework.springEvent.TemperatureExceededEvent; import com.zsc.edu.gateway.modules.iot.record.repo.RecordDataRepository; import com.zsc.edu.gateway.modules.iot.record.service.RecordDataService; -import com.zsc.edu.gateway.modules.iot.tsl.dto.ParamDto; import com.zsc.edu.gateway.modules.iot.tsl.entity.Event; -import com.zsc.edu.gateway.modules.iot.tsl.entity.Param; -import com.zsc.edu.gateway.modules.iot.tsl.mapper.ParamMapper; +import com.zsc.edu.gateway.modules.iot.tsl.entity.EventLog; +import com.zsc.edu.gateway.modules.iot.tsl.entity.CompareParam; +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 lombok.AllArgsConstructor; @@ -27,8 +24,12 @@ import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; import java.util.List; +import java.util.function.Consumer; +import java.util.function.Predicate; /** + *上报数据 + * * @author zhuang */ @AllArgsConstructor @@ -42,7 +43,15 @@ public class RecordDataServiceImpl extends ServiceImpl<RecordDataRepository, Rec @Resource private final EventRepository eventRepository; @Resource - private final ParamMapper paramMapper; + private final EventLogRepository eventLogRepository; + + /** + * 处理上报数据并进行监控 + * + * @param clientId + * @param data + * @return recordData + */ @Override @Transactional public RecordData recordData(String clientId, JSONObject data) { @@ -55,31 +64,29 @@ public class RecordDataServiceImpl extends ServiceImpl<RecordDataRepository, Rec return recordData; } + /** + * 获取上报数据状态 + * @return RecordDataStatusVo + */ @Override public RecordDataStatusVo recordDataStatus() { - RecordDataStatusVo recordDataStatusVo = new RecordDataStatusVo(); - recordDataStatusVo.setRecordCount(baseMapper.selectCount(new LambdaQueryWrapper<RecordData>())); - recordDataStatusVo.setDataCount(baseMapper.selectCount(new LambdaQueryWrapper<RecordData>().isNotNull(RecordData::getContent))); - return recordDataStatusVo; - } - - @Override - public DataWarningVo dataWarning() { - DataWarningVo dataWarningVo = new DataWarningVo(); LocalDateTime todayStart = LocalDateTime.now().withHour(0).withMinute(0).withSecond(0); - long warningCount = baseMapper.countWarnings(); - long todayWarningCount = baseMapper.countTodayWarnings(todayStart); - long firstWarningCount = baseMapper.countWarningsByBit(1); - long secondWarningCount = baseMapper.countWarningsByBit(2); - long thirdWarningCount = baseMapper.countWarningsByBit(4); - dataWarningVo.setWarningCount(warningCount); - dataWarningVo.setTodayWarningCount(todayWarningCount); - dataWarningVo.setFirstWarningCount(firstWarningCount); - dataWarningVo.setSecondWarningCount(secondWarningCount); - dataWarningVo.setThirdWarningCount(thirdWarningCount); - return dataWarningVo; + + return RecordDataStatusVo.builder() + .warningCount(baseMapper.countWarnings()) + .todayWarningCount(baseMapper.countTodayWarnings(todayStart)) + .recordCount(baseMapper.selectCount(new LambdaQueryWrapper<>())) + .dataCount(baseMapper.selectCount(new LambdaQueryWrapper<RecordData>().isNotNull(RecordData::getContent))) + .build(); } + + /** + * 查询上报数据 + * @param page 分页数据 + * @param clientId 设备的 clientId + * @return IPage<RecordData> + */ @Override public IPage<RecordData> query(Page<RecordData> page, String clientId) { LambdaQueryWrapper<RecordData> queryWrapper = new LambdaQueryWrapper<>(); @@ -87,6 +94,10 @@ public class RecordDataServiceImpl extends ServiceImpl<RecordDataRepository, Rec return baseMapper.selectPage(page, queryWrapper); } + /** + * 监控上报数据 + * @param recordData 上报数据 + */ public void processRecordData(RecordData recordData) { // 根据 clientId 查询设备信息 Device device = deviceRepository.findByClientId(recordData.getClientId()); @@ -95,7 +106,7 @@ public class RecordDataServiceImpl extends ServiceImpl<RecordDataRepository, Rec } // 获取产品下的所有事件 - List<Event> events = eventRepository.selectByProductId(device.getProductId()); + List<Event> events = eventRepository.selectByProductId(device.getProductId(),true); if (events.isEmpty()) { return; // 如果没有事件,直接返回 } @@ -106,9 +117,16 @@ public class RecordDataServiceImpl extends ServiceImpl<RecordDataRepository, Rec } } - private void processParam(RecordData recordData, Param param, Event event) { + /** + * 处理数据 + * + * @param recordData 上报数据 + * @param param 属性 + * @param event 事件 + */ + private void processParam(RecordData recordData, CompareParam param, Event event) { // 获取参数的默认值和比较类型 - Double defaultValue = param.getDefaultValue(); + double defaultValue = Double.parseDouble(param.getDefaultValue()); String identifier = param.getIdentifier(); // 检查 recordData 的内容中是否包含该参数的标识符 @@ -116,31 +134,26 @@ public class RecordDataServiceImpl extends ServiceImpl<RecordDataRepository, Rec if (valueObj != null) { // 获取参数的实际值 double value = Double.parseDouble(valueObj.toString()); - Param.CompareType compareType = param.getCompareType(); + CompareParam.CompareType compareType = param.getCompareType(); - // 根据比较类型进行不同的处理 - 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: - // 处理未知的比较类型 - throw new JSONException("Unknown compare type: " + compareType); - } + Predicate<Double> comparison = switch (compareType) { + case GT -> v -> v > defaultValue; + case LT -> v -> v < defaultValue; + case EQ -> v -> v == defaultValue; + case GE -> v -> v >= defaultValue; + case LE -> v -> v <= defaultValue; + }; + + // 定义插入日志的 Consumer + Consumer<Double> logInsertion = v -> { + if (comparison.test(v)) { + eventLogRepository.insert(new EventLog(null, event.getName(), recordData.getId(), recordData, LocalDateTime.now(), null, null)); + } + }; + + // 执行比较和日志插入 + logInsertion.accept(value); } } - } 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 fb79544..decaa29 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 @@ -107,5 +107,16 @@ public class EventController { return service.detail(id); } + /** + * 更新事件状态 + * + * @return 更新后的事件 + */ + @PatchMapping("/toggle/{id}") + @PreAuthorize("hasAuthority('iot:event:update')") + @OperationLogAnnotation(content = "'事件启用状态'", operationType = "更新") + public Boolean updateEnabled(@PathVariable("id") Long id) { + return service.toggle(id); + } } diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/dto/EventDto.java b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/dto/EventDto.java index e060fc2..acec7bf 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/dto/EventDto.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/dto/EventDto.java @@ -26,5 +26,7 @@ public class EventDto { public Event.Type type; + public Boolean enabled; + private List<ParamDto> outputs; } diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/dto/ParamDto.java b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/dto/ParamDto.java index 749fa8b..84616a0 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/dto/ParamDto.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/dto/ParamDto.java @@ -1,6 +1,7 @@ package com.zsc.edu.gateway.modules.iot.tsl.dto; import com.zsc.edu.gateway.modules.iot.tsl.entity.DataType; +import com.zsc.edu.gateway.modules.iot.tsl.entity.CompareParam; import com.zsc.edu.gateway.modules.iot.tsl.entity.Param; import lombok.AllArgsConstructor; import lombok.Data; @@ -26,7 +27,7 @@ public class ParamDto { public Param.Type type; - private Param.CompareType compareType; + private CompareParam.CompareType compareType; private Double defaultValue; diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/entity/CompareParam.java b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/entity/CompareParam.java new file mode 100644 index 0000000..2f91fa0 --- /dev/null +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/entity/CompareParam.java @@ -0,0 +1,73 @@ +package com.zsc.edu.gateway.modules.iot.tsl.entity; + +import com.baomidou.mybatisplus.annotation.IEnum; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.zsc.edu.gateway.common.enums.IState; +import lombok.*; + +/** + * @author lenovo + */ +@Setter +@Getter +@EqualsAndHashCode(callSuper = false) +@NoArgsConstructor +@AllArgsConstructor +@TableName("iot_param") +@JsonInclude +public class CompareParam extends Param { + + /** + * 对比类型 + */ + private CompareType compareType; + + /** + * 默认数值 + */ + private String defaultValue; + + + public enum CompareType implements IEnum<String>, IState<CompareType> { + /** + * 大于 + */ + GT("GT", "GT"), + /** + * 小于 + */ + LT("LT", "LT"), + /** + * 等于 + */ + EQ("EQ", "EQ"), + /** + * 大于等于 + */ + GE("GE", "GE"), + /** + * 小于等于 + */ + LE("LE", "LE"); + + private final String value; + private final String description; + + CompareType(String value, String description) { + this.value = value; + this.description = description; + } + + @Override + public String getValue() { + return value; + } + + @Override + public String toString() { + return this.description; + } + } + +} 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 c6c47bd..79ba494 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 @@ -5,16 +5,12 @@ import com.baomidou.mybatisplus.annotation.TableField; 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; import lombok.Setter; -import org.springframework.context.annotation.ImportSelector; import java.util.List; -import java.util.Set; /** * @author Yao @@ -35,11 +31,17 @@ public class Event extends BaseParam { */ private Type type; + /** + * 是否启用服务 + */ + private Boolean enabled; + /** * 服务输出的参数 */ @TableField(exist = false) - private List<Param> outputs; + private List<CompareParam> outputs; + public enum Type implements IEnum<String>, IState<Type> { /** 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 index 90b107f..29682ef 100644 --- 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 @@ -45,11 +45,6 @@ public class EventLog { */ private LocalDateTime triggerTime; - /** - * 是否已读 - */ - private Boolean isRead; - /** * 部门ID(权限) */ @@ -61,4 +56,5 @@ public class EventLog { */ @TableField(value = "create_id", fill = FieldFill.INSERT) public Long createId; + } 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 f27db23..288af87 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 @@ -44,15 +44,6 @@ public class Param extends BaseParam { */ private Long foreignId; - /** - * 对比类型 - */ - private CompareType compareType; - - /** - * 默认数值 - */ - private Double defaultValue; public enum Type implements IEnum<String>, IState<Type> { /** @@ -120,35 +111,5 @@ public class Param extends BaseParam { } } - public enum CompareType implements IEnum<String>, IState<CompareType> { - /** - * 大于 - */ - GT("GT", "GT"), - /** - * 小于 - */ - LT("LT", "LT"), - /** - * 等于 - */ - EQ("EQ", "EQ"); - private final String value; - private final String description; - CompareType(String value, String description) { - this.value = value; - this.description = description; - } - - @Override - public String getValue() { - return value; - } - - @Override - public String toString() { - return this.description; - } - } } 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 da4d22f..d5ee293 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 @@ -25,5 +25,5 @@ public interface EventRepository extends BaseMapper<Event> { Event selectById(@Param("id") Long id); - List<Event> selectByProductId(@Param("productId") Long id); + List<Event> selectByProductId(@Param("productId") Long id, @Param("enabled") Boolean enabled); } diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/EventService.java b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/EventService.java index 1c00c53..1fa389f 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/EventService.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/EventService.java @@ -18,4 +18,6 @@ public interface EventService extends IService<Event> { Event detail(Long id); boolean delete(Long id); + + boolean toggle(Long id); } diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/impl/EventServiceImpl.java b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/impl/EventServiceImpl.java index eea22eb..6bca633 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/impl/EventServiceImpl.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/impl/EventServiceImpl.java @@ -9,10 +9,7 @@ import com.zsc.edu.gateway.modules.iot.tsl.mapper.EventMapper; import com.zsc.edu.gateway.modules.iot.tsl.repo.EventRepository; import com.zsc.edu.gateway.modules.iot.tsl.service.EventService; import com.zsc.edu.gateway.modules.iot.tsl.service.ParamService; -import jakarta.annotation.Resource; import lombok.AllArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.ApplicationEventPublisher; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -81,4 +78,14 @@ public class EventServiceImpl extends ServiceImpl<EventRepository, Event> implem removeById(id); return paramService.delete(id); } + + /** + * 切换启用状态 + */ + @Override + public boolean toggle(Long id) { + Event event = detail(id); + event.setEnabled(!event.getEnabled()); + return updateById(event); + } } diff --git a/src/main/java/com/zsc/edu/gateway/modules/operationLog/controller/OperationController.java b/src/main/java/com/zsc/edu/gateway/modules/operationLog/controller/OperationLogController.java similarity index 97% rename from src/main/java/com/zsc/edu/gateway/modules/operationLog/controller/OperationController.java rename to src/main/java/com/zsc/edu/gateway/modules/operationLog/controller/OperationLogController.java index e3328f7..cdf2b22 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/operationLog/controller/OperationController.java +++ b/src/main/java/com/zsc/edu/gateway/modules/operationLog/controller/OperationLogController.java @@ -18,7 +18,7 @@ import java.util.List; @AllArgsConstructor @RestController @RequestMapping("/api/rest/log") -public class OperationController { +public class OperationLogController { private OperationLogRepository repo; /** diff --git a/src/main/java/com/zsc/edu/gateway/modules/operationLog/entity/ModuleTypeEnum.java b/src/main/java/com/zsc/edu/gateway/modules/operationLog/entity/ModuleTypeEnum.java index 4bd0e18..2eac9ac 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/operationLog/entity/ModuleTypeEnum.java +++ b/src/main/java/com/zsc/edu/gateway/modules/operationLog/entity/ModuleTypeEnum.java @@ -26,6 +26,7 @@ public enum ModuleTypeEnum implements IEnum<String>, IState<ModuleTypeEnum> { notice("notice", "notice"), bulletin("bulletin", "bulletin"), attachment("attachment", "attachment"), + operationLog("operationLog", "operationLog"), other("other", "other"); private final String code; diff --git a/src/main/java/com/zsc/edu/gateway/modules/operationLog/util/OperationLogAspect.java b/src/main/java/com/zsc/edu/gateway/modules/operationLog/util/OperationLogAspect.java index 41cded6..ff63000 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/operationLog/util/OperationLogAspect.java +++ b/src/main/java/com/zsc/edu/gateway/modules/operationLog/util/OperationLogAspect.java @@ -57,13 +57,19 @@ public class OperationLogAspect { OperationLogAnnotation operationLogAnnotation = ((MethodSignature) joinPoint.getSignature()).getMethod(). getAnnotation(OperationLogAnnotation.class); - ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); - HttpServletRequest request = attributes.getRequest(); - // 获取方法名 String methodName = joinPoint.getSignature().getName().toLowerCase(); // 根据方法名判定方法类型 - String methodType = FunctionTypeEnum.getMessageByCode(methodName); + String methodType; + if (methodName.contains("update")) { + methodType = "update"; + } else if (methodName.contains("delete")) { + methodType = "delete"; + } else if (methodName.contains("create")) { + methodType = "create"; + } else { + methodType = "other"; + } // 获取类名 String className = joinPoint.getTarget().getClass().getSimpleName().toLowerCase(); diff --git a/src/main/resources/mappers/iot/EventMapper.xml b/src/main/resources/mappers/iot/EventMapper.xml index 436b023..dd0b2d9 100644 --- a/src/main/resources/mappers/iot/EventMapper.xml +++ b/src/main/resources/mappers/iot/EventMapper.xml @@ -9,8 +9,10 @@ <result column="type" property="type"/> <result column="identifier" property="identifier"/> <result column="name" property="name"/> + <result column="enabled" property="enabled"/> <result column="remark" property="remark"/> - <collection property="outputs" ofType="com.zsc.edu.gateway.modules.iot.tsl.entity.Param" autoMapping="true" + <collection property="outputs" ofType="com.zsc.edu.gateway.modules.iot.tsl.entity.CompareParam" + autoMapping="true" columnPrefix="param_"> <id column="id" property="id"/> <result column="data_type" property="dataType"/> @@ -34,7 +36,9 @@ ip.type as param_type, ip.identifier as param_identifier, ip.name as param_name, - ip.remark as param_remark + ip.remark as param_remark, + ip.compare_type as param_compare_type, + ip.default_value as param_default_value from iot_event e left join iot_param ip on e.id = ip.foreign_id and ip.foreign_type = 1 @@ -55,5 +59,6 @@ left join iot_param ip on e.id = ip.foreign_id and ip.foreign_type = 1 where e.product_id = #{productId} + and e.enabled = true </select> </mapper> \ No newline at end of file diff --git a/storage/attachment/106a80f97c844a80667b2c6d57da5839db05623b b/storage/attachment/106a80f97c844a80667b2c6d57da5839db05623b new file mode 100644 index 0000000..4c9d3a2 Binary files /dev/null and b/storage/attachment/106a80f97c844a80667b2c6d57da5839db05623b differ diff --git a/storage/attachment/faad9bd8cf7668198a842812bc28a86dde549fe1 b/storage/attachment/faad9bd8cf7668198a842812bc28a86dde549fe1 new file mode 100644 index 0000000..37d5479 Binary files /dev/null and b/storage/attachment/faad9bd8cf7668198a842812bc28a86dde549fe1 differ