| | |
| | | import com.fasterxml.jackson.core.type.TypeReference; |
| | | import com.fasterxml.jackson.databind.JsonNode; |
| | | import com.fasterxml.jackson.databind.ObjectMapper; |
| | | import com.fasterxml.jackson.databind.node.ObjectNode; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Qualifier; |
| | |
| | | this.deviceOnePropertySet(topic, propertyEnum, Map.entry(propertyEnum.getProperty(), param)); |
| | | return; |
| | | } |
| | | |
| | | if(param.size()==1){ |
| | | this.deviceOnePropertySetSilent(topic,propertyEnum,param); |
| | | return; |
| | | } |
| | | // if(Objects.equals(param.fieldNames().next(), "silent_mode")) |
| | | // { |
| | | // this.deviceOnePropertySet(topic, propertyEnum, Map.entry(propertyEnum.getProperty(), param.get("silent_mode"))); |
| | | // return; |
| | | // } |
| | | // If there are multiple parameters, set them separately. |
| | | for (Iterator<Map.Entry<String, JsonNode>> filed = param.fields(); filed.hasNext(); ) { |
| | | Map.Entry<String, JsonNode> node = filed.next(); |
| | |
| | | if (!isPublish) { |
| | | continue; |
| | | } |
| | | |
| | | this.deviceOnePropertySet(topic, propertyEnum, Map.entry(propertyEnum.getProperty(), node)); |
| | | } |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 为静音模式单独列出来一个方法,只有一个值的时候都可以调用,不限于静音模式 |
| | | * */ |
| | | @Override |
| | | public void deviceOnePropertySetSilent(String topic, DeviceSetPropertyEnum propertyEnum, |
| | | JsonNode value) { |
| | | // if (Objects.isNull(value) || Objects.isNull(value.getValue())) { |
| | | // throw new IllegalArgumentException(CommonErrorEnum.ILLEGAL_ARGUMENT.getErrorMsg()); |
| | | // } |
| | | |
| | | Map reply = messageSender.publishWithReply( |
| | | Map.class, topic, |
| | | CommonTopicResponse.builder() |
| | | .bid(UUID.randomUUID().toString()) |
| | | .tid(UUID.randomUUID().toString()) |
| | | .timestamp(System.currentTimeMillis()) |
| | | .data(value) |
| | | .build(), |
| | | 2); |
| | | } |
| | | |
| | | @Override |
| | | public void deviceOnePropertySet(String topic, DeviceSetPropertyEnum propertyEnum, |
| | | Map.Entry<String, Object> value) { |
| | | if (Objects.isNull(value) || Objects.isNull(value.getValue())) { |
| | |
| | | |
| | | } |
| | | |
| | | // public JsonNode getJsonNode(JsonNode jsonNode) { |
| | | // ObjectNode parentNode = objectMapper.createObjectNode(); |
| | | // parentNode.put("bid", UUID.randomUUID().toString()); |
| | | // parentNode.set("data", jsonNode); |
| | | // parentNode.put("tid", UUID.randomUUID().toString()); |
| | | // parentNode.put("timestamp", System.currentTimeMillis()); |
| | | // return parentNode; |
| | | // } |
| | | |
| | | @Override |
| | | public Boolean checkDeviceOnline(String sn) { |
| | | String key = RedisConst.DEVICE_ONLINE_PREFIX + sn; |