From 4ddf88b7997989d5a8a229c211c8f7fc4a329259 Mon Sep 17 00:00:00 2001 From: zhuangtianxiang <2913129173@qq.com> Date: Sun, 2 Mar 2025 15:24:41 +0800 Subject: [PATCH] =?UTF-8?q?feat(iot):=20=E5=A2=9E=E5=8A=A0=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E5=92=8C=E4=BA=A7=E5=93=81=E7=8A=B6=E6=80=81=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 DeviceController 和 ProductController 中添加状态统计接口 - 在 DeviceService 和 ProductService 中实现状态统计方法- 新增 DeviceStatusVo 和 ProductStatusVo 类用于返回统计结果- 在 RecordDataRepository 中添加警告数据统计相关的查询方法 - 在 RecordDataService 中实现数据统计方法- 新增 RecordDataStatusVo 和 DataWarningVo 类用于返回记录数据和警告数据的统计结果 --- .../device/controller/DeviceController.java | 33 +++++++++ .../iot/device/dto/BatchDeviceDto.java | 5 ++ .../modules/iot/device/dto/DeviceDto.java | 5 ++ .../iot/device/dto/DeviceServeDto.java | 5 ++ .../iot/device/service/DeviceService.java | 3 + .../service/impl/DeviceServiceImpl.java | 22 +++++- .../modules/iot/device/vo/DeviceStatusVo.java | 30 ++++++++ .../modules/iot/device/vo/DeviceVo.java | 5 ++ .../product/controller/ProductController.java | 10 +++ .../modules/iot/product/entity/Product.java | 5 ++ .../iot/product/service/ProductService.java | 3 + .../service/impl/ProductServiceImpl.java | 10 +++ .../iot/product/vo/ProductStatusVo.java | 24 +++++++ .../iot/record/entity/DataWarningVo.java | 19 ++++++ .../modules/iot/record/entity/RecordData.java | 5 ++ .../iot/record/entity/RecordDataStatusVo.java | 19 ++++++ .../iot/record/repo/RecordDataRepository.java | 8 ++- .../iot/record/service/RecordDataService.java | 6 ++ .../service/impl/RecordDataServiceImpl.java | 22 +++++- .../tsl/service/impl/PropertyServiceImpl.java | 3 - src/main/resources/db/gateway.sql | 68 ++++++++++++++++++- .../db/gateway/public/iot_product.sql | 13 ++-- .../db/gateway/public/iot_record_data.sql | 14 +++- .../resources/mappers/iot/DeviceMapper.xml | 1 + .../resources/mappers/iot/ProductMapper.xml | 1 + 25 files changed, 320 insertions(+), 19 deletions(-) create mode 100644 src/main/java/com/zsc/edu/gateway/modules/iot/device/vo/DeviceStatusVo.java create mode 100644 src/main/java/com/zsc/edu/gateway/modules/iot/product/vo/ProductStatusVo.java create mode 100644 src/main/java/com/zsc/edu/gateway/modules/iot/record/entity/DataWarningVo.java create mode 100644 src/main/java/com/zsc/edu/gateway/modules/iot/record/entity/RecordDataStatusVo.java 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 a06707f..0ff3aba 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 @@ -11,8 +11,11 @@ import com.zsc.edu.gateway.modules.iot.device.dto.DeviceServeDto; import com.zsc.edu.gateway.modules.iot.device.entity.Device; import com.zsc.edu.gateway.modules.iot.device.query.DeviceQuery; import com.zsc.edu.gateway.modules.iot.device.service.DeviceService; +import com.zsc.edu.gateway.modules.iot.device.vo.DeviceStatusVo; import com.zsc.edu.gateway.modules.iot.device.vo.DeviceVo; +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.modules.iot.record.service.RecordDataService; import lombok.AllArgsConstructor; import org.springframework.http.HttpStatus; @@ -115,4 +118,34 @@ public class DeviceController { public Page recordData(Page page, String clientId) { return recordService.page(page, new LambdaQueryWrapper().eq(RecordData::getClientId, clientId)); } + + /** + * 查询设备信息数量 + */ + @GetMapping("status") + @PreAuthorize("hasAuthority('iot:device:query')") + @DataPermission + public DeviceStatusVo status() { + return service.status(); + } + + /** + * 查询设备消息信息 + */ + @GetMapping("/record/status") + @PreAuthorize("hasAuthority('iot:device:query')") + @DataPermission + public RecordDataStatusVo recordDataStatus() { + return recordService.recordDataStatus(); + } + + /** + * + */ + @GetMapping("/data/status") + @PreAuthorize("hasAuthority('iot:device:query')") + @DataPermission + public DataWarningVo dataWarning() { + return recordService.dataWarning(); + } } diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/device/dto/BatchDeviceDto.java b/src/main/java/com/zsc/edu/gateway/modules/iot/device/dto/BatchDeviceDto.java index 457370f..9bedec4 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/device/dto/BatchDeviceDto.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/device/dto/BatchDeviceDto.java @@ -57,4 +57,9 @@ public class BatchDeviceDto { */ private String remark; + /** + * 图标 + */ + public String icon; + } diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/device/dto/DeviceDto.java b/src/main/java/com/zsc/edu/gateway/modules/iot/device/dto/DeviceDto.java index 60eed4a..21929c6 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/device/dto/DeviceDto.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/device/dto/DeviceDto.java @@ -54,4 +54,9 @@ public class DeviceDto { */ private String remark; + /** + * 图标 + */ + public String icon; + } diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/device/dto/DeviceServeDto.java b/src/main/java/com/zsc/edu/gateway/modules/iot/device/dto/DeviceServeDto.java index e85cffb..bb693c7 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/device/dto/DeviceServeDto.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/device/dto/DeviceServeDto.java @@ -35,6 +35,11 @@ public class DeviceServeDto { */ public String serveName; + /** + * 图标 + */ + public String icon; + /** * 参数 */ diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/device/service/DeviceService.java b/src/main/java/com/zsc/edu/gateway/modules/iot/device/service/DeviceService.java index a156717..466e534 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/device/service/DeviceService.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/device/service/DeviceService.java @@ -8,6 +8,7 @@ import com.zsc.edu.gateway.modules.iot.device.dto.DeviceDto; import com.zsc.edu.gateway.modules.iot.device.dto.DeviceServeDto; import com.zsc.edu.gateway.modules.iot.device.entity.Device; import com.zsc.edu.gateway.modules.iot.device.query.DeviceQuery; +import com.zsc.edu.gateway.modules.iot.device.vo.DeviceStatusVo; import com.zsc.edu.gateway.modules.iot.device.vo.DeviceVo; import java.util.List; @@ -27,4 +28,6 @@ public interface DeviceService extends IService { Boolean serve(DeviceServeDto dto); IPage query(Page page, DeviceQuery query); + + DeviceStatusVo status(); } 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 96b0339..c6e7c27 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 @@ -15,9 +15,13 @@ import com.zsc.edu.gateway.modules.iot.device.mapper.DeviceMapper; import com.zsc.edu.gateway.modules.iot.device.query.DeviceQuery; import com.zsc.edu.gateway.modules.iot.device.repo.DeviceRepository; import com.zsc.edu.gateway.modules.iot.device.service.DeviceService; +import com.zsc.edu.gateway.modules.iot.device.vo.DeviceStatusVo; import com.zsc.edu.gateway.modules.iot.device.vo.DeviceVo; import com.zsc.edu.gateway.modules.iot.product.entity.Product; import com.zsc.edu.gateway.modules.iot.product.repo.ProductRepository; +import com.zsc.edu.gateway.modules.iot.tsl.repo.EventRepository; +import com.zsc.edu.gateway.modules.iot.tsl.repo.PropertyRepository; +import com.zsc.edu.gateway.modules.iot.tsl.repo.ServeRepository; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -39,6 +43,12 @@ public class DeviceServiceImpl extends ServiceImpl imp private ProductRepository productRepo; @Resource private RedisUtils redisUtils; + @Resource + private PropertyRepository propertyRepo; + @Resource + private EventRepository eventRepo; + @Resource + private ServeRepository serveRepo; /** @@ -48,7 +58,7 @@ public class DeviceServiceImpl extends ServiceImpl imp @Transactional public Device create(DeviceDto dto) { if (baseMapper.findByName(dto.getName()) != null) { - throw new ConstraintException("该设备已存在!"); + throw new ConstraintException("该设备名称已存在!"); } Device device = mapper.toEntity(dto); save(device); @@ -183,5 +193,13 @@ public class DeviceServiceImpl extends ServiceImpl imp return devicePage; } - + @Override + public DeviceStatusVo status() { + DeviceStatusVo vo = new DeviceStatusVo(); + vo.deviceCount = baseMapper.selectCount(null); + vo.propertyCount = propertyRepo.selectCount(null); + vo.serveCount = serveRepo.selectCount(null); + vo.eventCount = eventRepo.selectCount(null); + return vo; + } } diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/device/vo/DeviceStatusVo.java b/src/main/java/com/zsc/edu/gateway/modules/iot/device/vo/DeviceStatusVo.java new file mode 100644 index 0000000..dde8f9f --- /dev/null +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/device/vo/DeviceStatusVo.java @@ -0,0 +1,30 @@ +package com.zsc.edu.gateway.modules.iot.device.vo; + +import lombok.Data; + +/** + * @author zhuang + */ +@Data +public class DeviceStatusVo { + /** + * 设备总数 + */ + public Long deviceCount; + + /** + * 属性总数 + */ + public Long propertyCount; + + /** + * 服务总数 + */ + public Long serveCount; + + /** + * 事件总数 + */ + public Long eventCount; + +} diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/device/vo/DeviceVo.java b/src/main/java/com/zsc/edu/gateway/modules/iot/device/vo/DeviceVo.java index 3ef2c9e..618af75 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/device/vo/DeviceVo.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/device/vo/DeviceVo.java @@ -166,6 +166,11 @@ public class DeviceVo { */ public String updateBy; + /** + * 是否启用/停用 + */ + private Boolean enabled = true; + /** * 设备包含的扩展属性,产品不同,设备所包含的属性也略有不同 */ diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/product/controller/ProductController.java b/src/main/java/com/zsc/edu/gateway/modules/iot/product/controller/ProductController.java index e46304e..5fb7614 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/product/controller/ProductController.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/product/controller/ProductController.java @@ -8,6 +8,7 @@ import com.zsc.edu.gateway.modules.iot.product.entity.Product; import com.zsc.edu.gateway.modules.iot.product.query.ProductQuery; import com.zsc.edu.gateway.modules.iot.product.service.ProductService; import com.zsc.edu.gateway.modules.iot.product.service.impl.ProductServiceImpl; +import com.zsc.edu.gateway.modules.iot.product.vo.ProductStatusVo; import lombok.AllArgsConstructor; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; @@ -103,4 +104,13 @@ public class ProductController { public Product detail(@PathVariable("id") Long id) { return service.detail(id); } + + /** + * 查询产品各类信息 + */ + @GetMapping("status") + @DataPermission + public ProductStatusVo status() { + return service.status(); + } } diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/product/entity/Product.java b/src/main/java/com/zsc/edu/gateway/modules/iot/product/entity/Product.java index f1938f8..b67fd8d 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/product/entity/Product.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/product/entity/Product.java @@ -56,6 +56,11 @@ public class Product extends BaseEntity { @TableField(exist = false) private Set params; + /** + * 是否启用/停用 + */ + private Boolean enabled = true; + /** * 接入方式 diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/product/service/ProductService.java b/src/main/java/com/zsc/edu/gateway/modules/iot/product/service/ProductService.java index 0eb90dc..73f89c7 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/product/service/ProductService.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/product/service/ProductService.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.zsc.edu.gateway.modules.iot.product.dto.ProductDto; import com.zsc.edu.gateway.modules.iot.product.entity.Product; import com.zsc.edu.gateway.modules.iot.product.query.ProductQuery; +import com.zsc.edu.gateway.modules.iot.product.vo.ProductStatusVo; import java.util.List; @@ -22,4 +23,6 @@ public interface ProductService extends IService { boolean delete(Long id); List list(ProductQuery query); + + ProductStatusVo status(); } diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/product/service/impl/ProductServiceImpl.java b/src/main/java/com/zsc/edu/gateway/modules/iot/product/service/impl/ProductServiceImpl.java index 4d2f7e8..3a4df6a 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/product/service/impl/ProductServiceImpl.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/product/service/impl/ProductServiceImpl.java @@ -1,5 +1,6 @@ package com.zsc.edu.gateway.modules.iot.product.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.zsc.edu.gateway.exception.ConstraintException; import com.zsc.edu.gateway.modules.iot.product.dto.ProductDto; @@ -8,6 +9,7 @@ import com.zsc.edu.gateway.modules.iot.product.mapper.ProductMapper; import com.zsc.edu.gateway.modules.iot.product.query.ProductQuery; import com.zsc.edu.gateway.modules.iot.product.repo.ProductRepository; import com.zsc.edu.gateway.modules.iot.product.service.ProductService; +import com.zsc.edu.gateway.modules.iot.product.vo.ProductStatusVo; import com.zsc.edu.gateway.modules.iot.tsl.entity.Param; import com.zsc.edu.gateway.modules.iot.tsl.service.ParamService; import lombok.AllArgsConstructor; @@ -90,4 +92,12 @@ public class ProductServiceImpl extends ServiceImpl return products.subList(0, Math.min(5, products.size())); } + @Override + public ProductStatusVo status() { + ProductStatusVo vo = new ProductStatusVo(); + vo.productCount = baseMapper.selectCount(null); + vo.enabledCount = baseMapper.selectCount(new LambdaQueryWrapper().eq(Product::getEnabled, true)); + vo.disabledCount = baseMapper.selectCount(new LambdaQueryWrapper().eq(Product::getEnabled, false)); + return vo; + } } diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/product/vo/ProductStatusVo.java b/src/main/java/com/zsc/edu/gateway/modules/iot/product/vo/ProductStatusVo.java new file mode 100644 index 0000000..fb536b1 --- /dev/null +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/product/vo/ProductStatusVo.java @@ -0,0 +1,24 @@ +package com.zsc.edu.gateway.modules.iot.product.vo; + +import lombok.Data; + +/** + * @author zhuang + */ +@Data +public class ProductStatusVo { + /** + * 产品总数 + */ + public Long productCount; + + /** + * 启用数 + */ + public Long enabledCount; + + /** + * 停用数 + */ + public Long disabledCount; +} 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 new file mode 100644 index 0000000..a3e0173 --- /dev/null +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/record/entity/DataWarningVo.java @@ -0,0 +1,19 @@ +package com.zsc.edu.gateway.modules.iot.record.entity; + +import lombok.Data; + +/** + * @author zhuang + */ +@Data +public class DataWarningVo { + /** + * 告警总数 + */ + private Long warningCount; + + /** + * 今日新增 + */ + private Long todayWarningCount; +} diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/record/entity/RecordData.java b/src/main/java/com/zsc/edu/gateway/modules/iot/record/entity/RecordData.java index 53d5a92..40bcfcb 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/record/entity/RecordData.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/record/entity/RecordData.java @@ -1,5 +1,6 @@ package com.zsc.edu.gateway.modules.iot.record.entity; +import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; @@ -32,4 +33,8 @@ public class RecordData { @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime recordTime; + + @TableField(value = "dept_id", fill = FieldFill.INSERT) + private Long deptId; + } 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 new file mode 100644 index 0000000..16ca229 --- /dev/null +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/record/entity/RecordDataStatusVo.java @@ -0,0 +1,19 @@ +package com.zsc.edu.gateway.modules.iot.record.entity; + +import lombok.Data; + +/** + * @author zhuang + */ +@Data +public class RecordDataStatusVo { + /** + * 消息总数 + */ + public Long recordCount; + + /** + * 数据点数 + */ + public Long dataCount; +} diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/record/repo/RecordDataRepository.java b/src/main/java/com/zsc/edu/gateway/modules/iot/record/repo/RecordDataRepository.java index 417f035..0943a53 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/record/repo/RecordDataRepository.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/record/repo/RecordDataRepository.java @@ -2,6 +2,7 @@ package com.zsc.edu.gateway.modules.iot.record.repo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.zsc.edu.gateway.modules.iot.record.entity.RecordData; +import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import java.time.LocalDateTime; @@ -11,8 +12,9 @@ import java.util.List; * @author zhuang */ public interface RecordDataRepository extends BaseMapper { - @Select("select * from iot_record_data where record_time_str = #{recordTimeStr}") - List findByRecordTimeStr(String recordTimeStr); - + @Select("SELECT COUNT(*) FROM iot_record_data WHERE content->>'warning' IS NOT NULL AND (content->>'warning')::int & 1 = 1") + long countWarnings(); + @Select("SELECT COUNT(*) FROM iot_record_data WHERE content->>'warning' IS NOT NULL AND (content->>'warning')::int & 1 = 1 AND record_time >= #{todayStart}") + long countTodayWarnings(@Param("todayStart") LocalDateTime todayStart); } 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 b3ee38c..60b076f 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 @@ -3,7 +3,9 @@ package com.zsc.edu.gateway.modules.iot.record.service; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; 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; @@ -13,4 +15,8 @@ import java.util.List; public interface RecordDataService extends IService { RecordData recordData(String clientId, JSONObject data); + + RecordDataStatusVo recordDataStatus(); + + DataWarningVo dataWarning(); } \ 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 b48a7ad..53a3395 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 @@ -2,10 +2,10 @@ package com.zsc.edu.gateway.modules.iot.record.service.impl; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.zsc.edu.gateway.framework.redis.RedisUtils; +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.modules.iot.record.repo.RecordDataRepository; import com.zsc.edu.gateway.modules.iot.record.service.RecordDataService; import lombok.AllArgsConstructor; @@ -31,4 +31,22 @@ public class RecordDataServiceImpl extends ServiceImpl().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); + dataWarningVo.setWarningCount(warningCount); + dataWarningVo.setTodayWarningCount(todayWarningCount); + return dataWarningVo; + } } diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/impl/PropertyServiceImpl.java b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/impl/PropertyServiceImpl.java index 7fb839a..121636f 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/impl/PropertyServiceImpl.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/impl/PropertyServiceImpl.java @@ -26,9 +26,6 @@ public class PropertyServiceImpl extends ServiceImpl + diff --git a/src/main/resources/mappers/iot/ProductMapper.xml b/src/main/resources/mappers/iot/ProductMapper.xml index 35a1355..dc48b00 100644 --- a/src/main/resources/mappers/iot/ProductMapper.xml +++ b/src/main/resources/mappers/iot/ProductMapper.xml @@ -16,6 +16,7 @@ +