Kaynağa Gözat

EN+互联互通站点查询新增支持部分站点独立拉取

skyline 10 ay önce
ebeveyn
işleme
1ad250601d

+ 1 - 1
service/src/main/java/com/kym/service/admin/StationService.java

@@ -31,7 +31,7 @@ public interface StationService extends MPJBaseService<Station> {
 
     List<Station> listStation(StationQueryParam params);
 
-    List<StationVo> queryPlatformStationInfo(String platformName, int pageNum, int pageSize) throws JsonProcessingException;
+    List<StationVo> queryPlatformStationInfo(String platformName, int pageNum, int pageSize, String... stationIds) throws JsonProcessingException;
 
     Map<String, List<EquipmentInfo>> getCachedEquipmentMap(String... stationId);
 

+ 6 - 3
service/src/main/java/com/kym/service/admin/impl/StationServiceImpl.java

@@ -108,14 +108,15 @@ public class StationServiceImpl extends MyBaseServiceImpl<StationMapper, Station
      * @return
      */
     @Override
-    public List<StationVo> queryPlatformStationInfo(String platformName, int pageNum, int pageSize) {
+    public List<StationVo> queryPlatformStationInfo(String platformName, int pageNum, int pageSize, String... stationIds) {
         var param = """
                 {
                     "PageNo":%d,
                     "PageSize":%d,
+                    "StationIDs":[%s],
                     "LastQueryTime":""
                 }
-                """.formatted(pageNum, pageSize);
+                """.formatted(pageNum, pageSize, Arrays.stream(stationIds).map(id -> "\"" + id + "\"").collect(Collectors.joining(",")));
         var response = platformApiService.platformPost(platformName, PlatformApi.PLATFORM_QUERY_STATION_INFO.getApi(platformName), buildPlatformParams(platformName, param));
         var enStations = parsePlatformResponseData(response, platformName);
         var stationList = enStations.getJSONArray("StationInfos").toJavaList(StationVo.class);
@@ -430,7 +431,9 @@ public class StationServiceImpl extends MyBaseServiceImpl<StationMapper, Station
     public void pullEnStationInfos(String stationId) {
         // 指定的站点信息
         var platformName = PlatformCache.INSTANCE.getPlatformNameByStationId(stationId);
-        var stationVo = queryPlatformStationInfo(platformName, 1, 1000)
+
+        // 这里改成查询单个站点,避免数据量过大
+        var stationVo = queryPlatformStationInfo(platformName, 1, 1000, stationId)
                 .stream().filter(vo -> stationId.equals(vo.getStationId())).findFirst().orElse(null);
 
         var station = new Station();