diff --git a/ruoyi-admin/src/main/java/org/dromara/web/config/CommonYmlConfig.java b/ruoyi-admin/src/main/java/org/dromara/web/config/CommonYmlConfig.java index 2e1f7abf5..08afe81f6 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/config/CommonYmlConfig.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/config/CommonYmlConfig.java @@ -13,6 +13,9 @@ import org.springframework.stereotype.Component; @Component public class CommonYmlConfig { + public static String URL_IOT_USERNAME = "iot用户名"; + public static String URL_IOT_PASSWORD = "iot密码"; + public static String URL_IOT_BASEURL = "ip端口"; public static String URL_IOT_SCOPE_ATTRIBUTE = "作用域属性"; public static String URL_IOT_TELEMETRY = "遥测"; @@ -20,6 +23,9 @@ public class CommonYmlConfig { public static String URL_IOT_DEVICE = "设备信息"; public static String URL_IOT_DEVICE_BY_NAME = "设备名称查询设备信息"; + public String username = ""; + public String password = ""; + public String baseurl = ""; public String scopeAttribute = ""; public String telemetry = ""; @@ -27,6 +33,15 @@ public class CommonYmlConfig { public String device = ""; public String deviceByName = ""; + @Value("${iot.username}") + public String setUsername(String username) { + return URL_IOT_USERNAME = username; + } + @Value("${iot.password}") + public String setPassword(String password) { + return URL_IOT_PASSWORD = password; + } + @Value("${iot.url.scopeAttribute}") public String setScopeAttribute(String scopeAttribute) { return URL_IOT_SCOPE_ATTRIBUTE = scopeAttribute; diff --git a/ruoyi-admin/src/main/java/org/dromara/web/service/IotService.java b/ruoyi-admin/src/main/java/org/dromara/web/service/IotService.java index 4ee641936..32d44bec1 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/service/IotService.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/service/IotService.java @@ -60,7 +60,7 @@ public class IotService { map.put("entityType","DEVICE"); map.put("entityId",deviceCode); String send = getSend(CommonYmlConfig.URL_IOT_TELEMETRY, map); - if (send.startsWith("{\"status\":")) return null; + if (send.startsWith("{\"status\":") || "Device with requested id wasn't found!".equals(send)) return null; JSONObject jsonObject = JSON.parseObject(send); //转换 Map resultMap = new HashMap<>(); @@ -207,8 +207,8 @@ public class IotService { String token; String longinUrl = "/api/auth/login"; Map map = new HashMap<>(); - map.put("username", "tenant@thingsboard.org"); - map.put("password", "jsDU89naXB4X2y!Y"); + map.put("username", CommonYmlConfig.URL_IOT_USERNAME); + map.put("password", CommonYmlConfig.URL_IOT_PASSWORD); String loginPath = baseUrl + longinUrl; HttpRequest request = HttpUtil.createPost(loginPath); HttpResponse execute = request.body(JSON.toJSONString(map)).execute(); diff --git a/ruoyi-admin/src/main/java/org/dromara/web/service/impl/EqEquipmentServiceImpl.java b/ruoyi-admin/src/main/java/org/dromara/web/service/impl/EqEquipmentServiceImpl.java index 0dfed554f..d20406f43 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/service/impl/EqEquipmentServiceImpl.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/service/impl/EqEquipmentServiceImpl.java @@ -2,6 +2,7 @@ package org.dromara.web.service.impl; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.metadata.IPage; +import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.MessageUtils; import org.dromara.common.core.utils.StringUtils; @@ -37,6 +38,7 @@ import java.util.*; */ @RequiredArgsConstructor @Service +@Slf4j public class EqEquipmentServiceImpl implements IEqEquipmentService { private final EqEquipmentMapper baseMapper; @@ -76,15 +78,24 @@ public class EqEquipmentServiceImpl implements IEqEquipmentService { for (EqEquipmentVo record : records) { String equipmentCode = record.getEquipmentCode(); - DeviceMsgDto telemetryMsg = iotService.httpTelemetryGetSend(equipmentCode); - if (telemetryMsg == null) { - record.setLineStatus(0);//未获取到数据统一为离线 - continue; + if (record.getLineStatus() == 1){//在线更新数据 + DeviceMsgDto telemetryMsg = iotService.httpTelemetryGetSend(equipmentCode); + if (telemetryMsg == null ){ + record.setLineStatus(0);//未获取到数据统一为离线 + log.warn("检测到设备离线状态未更新 设备[{}]离线为更新", equipmentCode); + EqEquipment eqEquipment = new EqEquipment(); + eqEquipment.setEquipmentId(record.getEquipmentId()); + eqEquipment.setLineStatus(0); + baseMapper.updateById(eqEquipment); + log.warn("检测到设备离线状态未更新 设备[{}]离线已更新", equipmentCode); + continue; + } + record.setStatus(telemetryMsg.getOpenPercentage()); + record.setFaultStatus(telemetryMsg.getGarageException()); + }else{ + // 离线不需要调用接口 也不更新状态 在线离线状态要在事件触发的时候更新 否则性能很差 } - record.setStatus(telemetryMsg.getOpenPercentage()); - record.setFaultStatus(telemetryMsg.getGarageException()); } - return TableDataInfo.build(result); } diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml index 75250e2f6..e3559ee00 100644 --- a/ruoyi-admin/src/main/resources/application-dev.yml +++ b/ruoyi-admin/src/main/resources/application-dev.yml @@ -259,6 +259,8 @@ justauth: iot: baseurl: http://8.219.157.97:9090 + username: tenant@thingsboard.org + password: jsDU89naXB4X2y!Y url: scopeAttribute: /api/plugins/telemetry/{entityType}/{entityId}/values/attributes/{scope} telemetry: /api/plugins/telemetry/{entityType}/{entityId}/values/timeseries diff --git a/ruoyi-admin/src/main/resources/application-local.yml b/ruoyi-admin/src/main/resources/application-local.yml index f6682888b..1517240b8 100644 --- a/ruoyi-admin/src/main/resources/application-local.yml +++ b/ruoyi-admin/src/main/resources/application-local.yml @@ -259,6 +259,8 @@ justauth: iot: baseurl: http://118.89.86.111:8080 + username: tenant@thingsboard.org + password: jsDU89naXB4X2y!Y url: scopeAttribute: /api/plugins/telemetry/{entityType}/{entityId}/values/attributes/{scope} telemetry: /api/plugins/telemetry/{entityType}/{entityId}/values/timeseries diff --git a/ruoyi-admin/src/main/resources/application-prod.yml b/ruoyi-admin/src/main/resources/application-prod.yml index 0e2f3bc1f..8edad9823 100644 --- a/ruoyi-admin/src/main/resources/application-prod.yml +++ b/ruoyi-admin/src/main/resources/application-prod.yml @@ -261,6 +261,8 @@ justauth: iot: baseurl: http://8.219.157.97:8080 + username: tenant@thingsboard.org + password: jsDU89naXB4X2y!Y url: scopeAttribute: /api/plugins/telemetry/{entityType}/{entityId}/values/attributes/{scope} telemetry: /api/plugins/telemetry/{entityType}/{entityId}/values/timeseries