diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/device/DeviceController.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/device/DeviceController.java index 225926df56..2fce04b234 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/device/DeviceController.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/device/DeviceController.java @@ -1,34 +1,32 @@ package cn.iocoder.yudao.module.iot.controller.admin.device; -import org.springframework.web.bind.annotation.*; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.security.access.prepost.PreAuthorize; -import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.Operation; - -import javax.validation.constraints.*; -import javax.validation.*; -import javax.servlet.http.*; -import java.util.*; -import java.io.IOException; - +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; -import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; - import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; - -import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; -import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; - -import cn.iocoder.yudao.module.iot.controller.admin.device.vo.*; +import cn.iocoder.yudao.module.iot.controller.admin.device.vo.DevicePageReqVO; +import cn.iocoder.yudao.module.iot.controller.admin.device.vo.DeviceRespVO; +import cn.iocoder.yudao.module.iot.controller.admin.device.vo.DeviceSaveReqVO; import cn.iocoder.yudao.module.iot.dal.dataobject.device.DeviceDO; import cn.iocoder.yudao.module.iot.dal.dataobject.deviceattribute.DeviceAttributeDO; import cn.iocoder.yudao.module.iot.service.device.DeviceService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.io.IOException; +import java.util.List; + +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @Tag(name = "管理后台 - 物联设备") @RestController @@ -92,6 +90,14 @@ public class DeviceController { ExcelUtils.write(response, "物联设备.xls", "数据", DeviceRespVO.class, BeanUtils.toBean(list, DeviceRespVO.class)); } + @GetMapping("/deviceList") + @PreAuthorize("@ss.hasPermission('iot:device:query')") + @ApiAccessLog(operateType = EXPORT) + public CommonResult> deviceList(@Valid DevicePageReqVO pageReqVO) { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = deviceService.getDevicePage(pageReqVO).getList(); + return success(BeanUtils.toBean(list, DeviceDO.class)); + } // ==================== 子表(设备属性) ==================== diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/mqttdatarecord/vo/MqttDataRecordPageReqVO.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/mqttdatarecord/vo/MqttDataRecordPageReqVO.java index df1e29cb93..c5dabb403b 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/mqttdatarecord/vo/MqttDataRecordPageReqVO.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/mqttdatarecord/vo/MqttDataRecordPageReqVO.java @@ -1,10 +1,12 @@ package cn.iocoder.yudao.module.iot.controller.admin.mqttdatarecord.vo; -import lombok.*; -import java.util.*; -import io.swagger.v3.oas.annotations.media.Schema; import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; import org.springframework.format.annotation.DateTimeFormat; + import java.time.LocalDateTime; import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; @@ -20,6 +22,8 @@ public class MqttDataRecordPageReqVO extends PageParam { @Schema(description = "属性") private String attribute; + @Schema(description = "属性") + private String[] attributes; @Schema(description = "属性值") private String attrValue; diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/mqttrecord/MqttRecordController.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/mqttrecord/MqttRecordController.java index 15157290cd..ad0727e67b 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/mqttrecord/MqttRecordController.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/mqttrecord/MqttRecordController.java @@ -11,9 +11,11 @@ import cn.iocoder.yudao.module.iot.controller.admin.mqttrecord.vo.MqttRecordResp import cn.iocoder.yudao.module.iot.controller.admin.mqttrecord.vo.MqttRecordSaveReqVO; import cn.iocoder.yudao.module.iot.dal.dataobject.mqttrecord.MqttRecordDO; import cn.iocoder.yudao.module.iot.service.mqttrecord.MqttRecordService; +import com.alibaba.fastjson.JSONObject; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; +import jodd.util.StringUtil; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -22,7 +24,9 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; +import java.util.ArrayList; import java.util.List; +import java.util.Map; import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @@ -68,7 +72,20 @@ public class MqttRecordController { MqttRecordDO mqttRecord = mqttRecordService.getMqttRecord(id); return success(BeanUtils.toBean(mqttRecord, MqttRecordRespVO.class)); } + @GetMapping("/getDeviceAttr") + @Operation(summary = "") + @Parameter(name = "code", description = "设备编码", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('iot:mqtt-record:query')") + public CommonResult getDeviceAttr(@RequestParam("code") String code) { + MqttRecordDO mqttRecord = mqttRecordService.getDeviceAttr(code); + List attrList = new ArrayList<>(); + if(mqttRecord!=null && StringUtil.isNotEmpty(mqttRecord.getDeviceData())){ + Map attrMap = JSONObject.parseObject(mqttRecord.getDeviceData(),Map.class); + attrList = new ArrayList<>(attrMap.keySet()); + } + return success(attrList); + } @GetMapping("/page") @Operation(summary = "获得数采记录分页") @PreAuthorize("@ss.hasPermission('iot:mqtt-record:query')") diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/mqttdatarecord/MqttDataRecordMapper.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/mqttdatarecord/MqttDataRecordMapper.java index 9cb7709e34..67cc31ac6e 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/mqttdatarecord/MqttDataRecordMapper.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/mqttdatarecord/MqttDataRecordMapper.java @@ -64,4 +64,14 @@ public interface MqttDataRecordMapper extends BaseMapperX { } return sum; } + + default PageResult selectPage2(MqttDataRecordPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(MqttDataRecordDO::getDeviceName, reqVO.getDeviceName()) + .eqIfPresent(MqttDataRecordDO::getAttribute, reqVO.getAttribute()) + .eqIfPresent(MqttDataRecordDO::getAttrValue, reqVO.getAttrValue()) + .betweenIfPresent(MqttDataRecordDO::getDeviceTime, reqVO.getDeviceTime()) + .betweenIfPresent(MqttDataRecordDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(MqttDataRecordDO::getId)); + } } \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/mqttrecord/MqttRecordMapper.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/mqttrecord/MqttRecordMapper.java index 383be244e5..0cb79f0b2a 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/mqttrecord/MqttRecordMapper.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/mqttrecord/MqttRecordMapper.java @@ -28,5 +28,11 @@ public interface MqttRecordMapper extends BaseMapperX { .betweenIfPresent(MqttRecordDO::getCreateTime, reqVO.getCreateTime()) .orderByDesc(MqttRecordDO::getId)); } - + default MqttRecordDO selectLastOne(String code) { + return selectOne(new LambdaQueryWrapperX() + .eqIfPresent(MqttRecordDO::getDeviceCode, code) + .orderByDesc(MqttRecordDO::getId) + .last("limit 1") + ); + } } \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/mqttdatarecord/MqttDataRecordService.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/mqttdatarecord/MqttDataRecordService.java index ce8227cd69..d7b7c5705a 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/mqttdatarecord/MqttDataRecordService.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/mqttdatarecord/MqttDataRecordService.java @@ -1,11 +1,11 @@ package cn.iocoder.yudao.module.iot.service.mqttdatarecord; -import java.util.*; -import javax.validation.*; -import cn.iocoder.yudao.module.iot.controller.admin.mqttdatarecord.vo.*; -import cn.iocoder.yudao.module.iot.dal.dataobject.mqttdatarecord.MqttDataRecordDO; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.module.iot.controller.admin.mqttdatarecord.vo.MqttDataRecordPageReqVO; +import cn.iocoder.yudao.module.iot.controller.admin.mqttdatarecord.vo.MqttDataRecordSaveReqVO; +import cn.iocoder.yudao.module.iot.dal.dataobject.mqttdatarecord.MqttDataRecordDO; + +import javax.validation.Valid; /** * 设备数据记录 Service 接口 @@ -52,4 +52,11 @@ public interface MqttDataRecordService { */ PageResult getMqttDataRecordPage(MqttDataRecordPageReqVO pageReqVO); + /** + * 获得设备数据记录分页-多属性值 + * + * @param pageReqVO 分页查询 + * @return 设备数据记录分页 + */ + PageResult getMqttDataRecordPage2(MqttDataRecordPageReqVO pageReqVO); } \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/mqttdatarecord/MqttDataRecordServiceImpl.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/mqttdatarecord/MqttDataRecordServiceImpl.java index 5e31d0ca92..4d2954209c 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/mqttdatarecord/MqttDataRecordServiceImpl.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/mqttdatarecord/MqttDataRecordServiceImpl.java @@ -1,21 +1,18 @@ package cn.iocoder.yudao.module.iot.service.mqttdatarecord; -import org.springframework.stereotype.Service; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.transaction.annotation.Transactional; - -import java.util.*; -import cn.iocoder.yudao.module.iot.controller.admin.mqttdatarecord.vo.*; -import cn.iocoder.yudao.module.iot.dal.dataobject.mqttdatarecord.MqttDataRecordDO; import cn.iocoder.yudao.framework.common.pojo.PageResult; -import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; - +import cn.iocoder.yudao.module.iot.controller.admin.mqttdatarecord.vo.MqttDataRecordPageReqVO; +import cn.iocoder.yudao.module.iot.controller.admin.mqttdatarecord.vo.MqttDataRecordSaveReqVO; +import cn.iocoder.yudao.module.iot.dal.dataobject.mqttdatarecord.MqttDataRecordDO; import cn.iocoder.yudao.module.iot.dal.mysql.mqttdatarecord.MqttDataRecordMapper; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; -import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.*; +import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.MQTT_DATA_RECORD_NOT_EXISTS; /** * 设备数据记录 Service 实现类 @@ -70,5 +67,8 @@ public class MqttDataRecordServiceImpl implements MqttDataRecordService { public PageResult getMqttDataRecordPage(MqttDataRecordPageReqVO pageReqVO) { return mqttDataRecordMapper.selectPage(pageReqVO); } - + @Override + public PageResult getMqttDataRecordPage2(MqttDataRecordPageReqVO pageReqVO) { + return mqttDataRecordMapper.selectPage(pageReqVO); + } } \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/mqttrecord/MqttRecordService.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/mqttrecord/MqttRecordService.java index 8c65151697..d29a75ab47 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/mqttrecord/MqttRecordService.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/mqttrecord/MqttRecordService.java @@ -43,7 +43,13 @@ public interface MqttRecordService { * @return 数采记录 */ MqttRecordDO getMqttRecord(Long id); - + /** + * 获得设备属性 + * + * @param name 设备名称 + * @return 数采记录 + */ + MqttRecordDO getDeviceAttr(String name); /** * 获得数采记录分页 * diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/mqttrecord/MqttRecordServiceImpl.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/mqttrecord/MqttRecordServiceImpl.java index 423d5d84b6..b84a7c8fea 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/mqttrecord/MqttRecordServiceImpl.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/mqttrecord/MqttRecordServiceImpl.java @@ -62,6 +62,10 @@ public class MqttRecordServiceImpl implements MqttRecordService { public MqttRecordDO getMqttRecord(Long id) { return mqttRecordMapper.selectById(id); } + @Override + public MqttRecordDO getDeviceAttr(String code) { + return mqttRecordMapper.selectLastOne(code); + } @Override public PageResult getMqttRecordPage(MqttRecordPageReqVO pageReqVO) {