Слияние кода завершено, страница обновится автоматически
<dependency>
<groupId>com.dtflys.forest</groupId>
<artifactId>forest-spring-boot-starter</artifactId>
<version>1.5.36</version>
</dependency>
Использование коллекционного члена переменной в статическом внутреннем классе, помеченном аннотацией @Body
, привело к некорректной сериализации в виде [...]
вместо правильного представления.
Создайте API-интерфейс, запросные параметры и проведите тестирование.
Запрос:
POST http://iip.yndsft.com/di-api/dacoo-api/openApi/exRedisManage/recentVal/batch?appKey=241230163120016500001&appSecret=cc2e452e911843b4bd3dac86d58b7e63 HTTP
Headers:
User-Agent: forest/1.5.36
Body: attrId=12174089,12174091,12174093,12174095,12174097,12174099,12174101,12174103
Ответ от API-интерфейса:
{
"code":"1003",
"data":null,
"message":"com.alibaba.fastjson.JSONException: syntax error, expect {, actual error, pos 0, fastjson-version 1.2.47",
"possibleReason":null,
"suggestMeasure":null,
"traceId":null
}
```### Определение интерфейса (если необходимо предоставьте)
Класс API:
```java
@BaseRequest(baseURL = "http://iip.yndsft.com", interceptor = TagValueAccessInterceptor.class)
public interface TagDataAccessService {
/**
* Получение последних значений нескольких меток по их ID
* Данные записываются на диск и последние значения кэшируются в системе Redis. Этот метод позволяет получить самые свежие данные с максимальной скоростью. По умолчанию можно запрашивать до 100 меток одновременно.
*
* @param tagAttributes
* @return
*/
@Post("/di-api/dacoo-api/openApi/exRedisManage/recentVal/batch")
public <T> ApiResult<Map<String, TagValue<T>>> batchTagValueLatest(@Body TagValueAccessRequest.TagAttributes tagAttributes);
}
```### Класс запросных параметров:
```java
@Data
public class TagValueAccessRequest {
@Getter
@Setter
public static class TagAttributes {
/**
* ID метки, обязательное поле при отсутствии глобального идентификатора метки
*/
private Collection<Integer> attrId;
}
}
/**
* Получение текущего значения накопителя на конвейере
* @param tagEnumList
* @return
*/
public Map<String, TagValue<BigDecimal>> getBeltCumulantFlowLatest(Collection<TagEnum> tagEnumList) {
// Набор значений: 12174071, 12174072, 12174073, 12174074, 12174075, 12174076, 12174077, 12174078
Set<Integer> tagIdSet = tagEnumList.stream().map(tag -> Integer.parseInt(tag.getId())).collect(Collectors.toSet());
TagValueAccessRequest.TagAttributes tagAttributes = new TagValueAccessRequest.TagAttributes();
tagAttributes.setAttrId(tagIdSet);
ApiResult<Map<String, TagValue<BigDecimal>>> result = this.tagDataAccessService.batchTagValueLatest(tagAttributes);
log.info("Получение последних значений накопителя пневматического веса: {}", result);
Map<String, TagValue<BigDecimal>> dataMap = result.getData();
return dataMap;
}