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 bf905e060c..9cb7709e34 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 @@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.apache.commons.lang3.StringUtils; import org.apache.ibatis.annotations.Mapper; +import java.math.BigDecimal; import java.util.List; /** @@ -36,7 +37,8 @@ public interface MqttDataRecordMapper extends BaseMapperX { .eqIfPresent(MqttDataRecordDO::getAttrValue, reqVO.getAttrValue()) .betweenIfPresent(MqttDataRecordDO::getDeviceTime, reqVO.getDeviceTime()) .betweenIfPresent(MqttDataRecordDO::getCreateTime, reqVO.getCreateTime()) - .orderByDesc(MqttDataRecordDO::getId)); + .orderByDesc(MqttDataRecordDO::getId) + .last("limit "+reqVO.getPageSize())); } default MqttDataRecordDO selectLastOne(MqttDataRecordPageReqVO reqVO) { return selectOne(new QueryWrapper() @@ -45,22 +47,21 @@ public interface MqttDataRecordMapper extends BaseMapperX { .orderByDesc("id") .last("limit 1")); } - default Long selectSum(MqttDataRecordPageReqVO reqVO) { - // SQL sum 查询 -// List> result = selectMaps(new QueryWrapper() -// .select("SUM(attr_value) AS sumCount") -// .eq(StringUtils.isNotBlank(reqVO.getDeviceName()),"device_name", reqVO.getDeviceName()) -// .eq(StringUtils.isNotBlank(reqVO.getAttribute()),"attribute", reqVO.getAttribute()) -// ); -// // 获得数量 -// if (CollUtil.isEmpty(result)) { -// return 0L; -// } -// return MapUtil.getLong(result.get(0), "sumCount", 0L); + default BigDecimal selectSum(MqttDataRecordPageReqVO reqVO) { List list = select(reqVO); - if(list!=null && list.size()>0){ - - - return 0L; + BigDecimal sum = BigDecimal.ZERO; + if(list!=null && list.size()>0) { + for (MqttDataRecordDO recordDO: list) { + if(StringUtils.isNotBlank(recordDO.getAttrValue())){ + try { + double d = Double.parseDouble(recordDO.getAttrValue()); + sum = sum.add(BigDecimal.valueOf(d)); + }catch (NumberFormatException e){ + System.out.println("------error: default BigDecimal selectSum():采集数据不是数字!------"); + } + } + } + } + return sum; } } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/mqtt/MqttServerDataController.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/mqtt/MqttServerDataController.java index 6de072f466..6034a031a1 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/mqtt/MqttServerDataController.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/mqtt/MqttServerDataController.java @@ -1,24 +1,19 @@ package cn.iocoder.yudao.module.mes.controller.admin.mqtt; import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.module.iot.controller.admin.mqttrecord.vo.MqttData; -import cn.iocoder.yudao.module.iot.controller.admin.mqttrecord.vo.MqttDataUtils; +import cn.iocoder.yudao.module.iot.controller.admin.mqttdatarecord.vo.MqttDataRecordPageReqVO; import cn.iocoder.yudao.module.iot.dal.dataobject.mqttdatarecord.MqttDataRecordDO; import cn.iocoder.yudao.module.iot.dal.mysql.mqttdatarecord.MqttDataRecordMapper; -import cn.iocoder.yudao.module.iot.service.mqttdatarecord.MqttDataRecordService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import org.apache.commons.lang3.StringUtils; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; -import java.util.Map; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @@ -28,8 +23,6 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @Validated public class MqttServerDataController { - @Resource - private MqttDataRecordService mqttDataRecordService; @Resource private MqttDataRecordMapper mqttDataRecordMapper; @@ -51,18 +44,23 @@ public class MqttServerDataController { return success(1L); } - @PostMapping("/createMap2") - @Operation(summary = "创建数采记录") - public CommonResult createMap(@RequestBody Map param) { - MqttData mqttData = MqttDataUtils.parseMap(param); -// if(mqttData!=null){ -// MqttRecordSaveReqVO createReqVO = new MqttRecordSaveReqVO(); -// createReqVO.setDeviceCode(mqttData.getDeviceID()); -// createReqVO.setGatewayCode(mqttData.getGatewayID()); -// createReqVO.setDeviceDataTime(mqttData.getDeviceDataTime()); -// createReqVO.setDeviceData(JSON.toJSONString(param)); -// mqttRecordService.createMqttRecord(createReqVO); -// } - return success(true); + @GetMapping("/getValue") + @Operation(summary = "获得设备数据最新值") + public CommonResult getByDeviceAndAttr(@RequestParam("deviceName") String deviceName + ,@RequestParam("attribute") String attribute) { + MqttDataRecordPageReqVO reqVO = new MqttDataRecordPageReqVO().setDeviceName(deviceName).setAttribute(attribute); + + MqttDataRecordDO mqttDataRecord = mqttDataRecordMapper.selectLastOne(reqVO); + return success(mqttDataRecord.getAttrValue()); + } + @GetMapping("/getList") + @Operation(summary = "获得设备数据列表默认十条") + public CommonResult> getList(MqttDataRecordPageReqVO reqVO) { + return success(mqttDataRecordMapper.select(reqVO)); + } + @GetMapping("/getSum") + @Operation(summary = "获得设备数据汇总") + public CommonResult getSum(MqttDataRecordPageReqVO reqVO) { + return success(mqttDataRecordMapper.selectSum(reqVO)); } } \ No newline at end of file diff --git a/yudao-server/src/main/resources/application-local.yaml b/yudao-server/src/main/resources/application-local.yaml index b0a22a82f9..969f48daae 100644 --- a/yudao-server/src/main/resources/application-local.yaml +++ b/yudao-server/src/main/resources/application-local.yaml @@ -48,7 +48,7 @@ spring: datasource: master: name: besure_neimeng - url: jdbc:mysql://47.106.185.127:3306/${spring.datasource.dynamic.datasource.master.name}?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例 + url: jdbc:mysql://111.67.199.122:3306/${spring.datasource.dynamic.datasource.master.name}?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例 # url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.master.name}?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT # MySQL Connector/J 5.X 连接的示例 username: besure_user1 password: zpW5:,LGHACh