diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/PileConnectorInfoMapper.java b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/PileConnectorInfoMapper.java index 425f3d77d..0cbf9e8e4 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/PileConnectorInfoMapper.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/PileConnectorInfoMapper.java @@ -128,4 +128,11 @@ public interface PileConnectorInfoMapper { * @return */ PileConnectorInfoVO getConnectorInfoByParams(@Param("dto") QueryConnectorInfoDTO dto); + + /** + * 通过站点idList查询枪口列表信息 + * @param stationIds + * @return + */ + List batchSelectConnectorList(@Param("stationIds") List stationIds); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/PileConnectorInfoService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/PileConnectorInfoService.java index 1d31945cf..a7ed68530 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/PileConnectorInfoService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/PileConnectorInfoService.java @@ -114,6 +114,13 @@ public interface PileConnectorInfoService { List getConnectorListForLianLian(Long stationId); + /** + * 根据站点idList批量查询枪口数据 + * @param stationIds + * @return + */ + List batchSelectConnectorList(List stationIds); + List selectConnectorInfoList(String pileSn); PageResponse selectStationConnectorList(QueryConnectorListDTO dto); diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileConnectorInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileConnectorInfoServiceImpl.java index 22243f7a3..6ab085135 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileConnectorInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileConnectorInfoServiceImpl.java @@ -46,10 +46,7 @@ import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Service; import java.math.BigDecimal; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; import java.util.concurrent.CompletableFuture; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; @@ -484,10 +481,67 @@ public class PileConnectorInfoServiceImpl implements PileConnectorInfoService { return list; } + @Override public List getConnectorListForLianLian(Long stationId) { return getUniAppConnectorList(stationId); } + /** + * 批量查询枪口列表接口 + * @param stationIds + * @return + */ + @Override + public List batchSelectConnectorList(List stationIds){ + List resultList = new ArrayList<>(); + Map> map = new LinkedHashMap<>(); + String baseRedisKey = CacheConstants.GET_UNIAPP_CONNECTOR_LIST_BY_STATION_ID; + // 先查询缓存数据 + for (String stationId : stationIds) { + String redisKey = baseRedisKey + stationId; + List list = redisCache.getCacheList(redisKey); + if (CollectionUtils.isNotEmpty(list)) { + map.put(stationId, list); + // 重新设置缓存 + redisCache.deleteObject(redisKey); + redisCache.setCacheList(redisKey, list); + redisCache.expire(redisKey, CacheConstants.cache_expire_time_1h); + } + } + // 先将已经有数据的stationId进行收集 + List hasDataStationIds = new ArrayList<>(map.keySet()); + Collection> values = map.values(); + // 筛选出没有数据的stationIds + List noDataStationIds = stationIds.stream() + .filter(x -> !hasDataStationIds.contains(x)) + .collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(noDataStationIds)) { + // 重新查询数据库 + // 通过stationIds批量查询数据库 + List newConnectorInfoList = pileConnectorInfoMapper.batchSelectConnectorList(noDataStationIds); + + values.add(newConnectorInfoList); + + // 设置缓存 + // 先将list根据站点id分组 + Map> collect = newConnectorInfoList.stream() + .collect(Collectors.groupingBy(ConnectorInfoVO::getStationId)); + // 循环map并设置缓存 + for (Map.Entry> entry : collect.entrySet()) { + String stationId = entry.getKey(); + List voList = entry.getValue(); + + String redisKey = baseRedisKey + stationId; + redisCache.setCacheObject(redisKey, voList, CacheConstants.cache_expire_time_1h); + } + } + + // 最终将 values 中的所有 ConnectorInfoVO 元素收集到 resultList + values.forEach(resultList::addAll); + + return resultList; + } + @Override public List selectConnectorInfoList(String pileSn) { // log.info("查询充电枪口详情-selectConnectorInfoList, param:{}", pileSn); diff --git a/jsowell-pile/src/main/resources/mapper/pile/PileConnectorInfoMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/PileConnectorInfoMapper.xml index c241a0771..4e5cf5e33 100644 --- a/jsowell-pile/src/main/resources/mapper/pile/PileConnectorInfoMapper.xml +++ b/jsowell-pile/src/main/resources/mapper/pile/PileConnectorInfoMapper.xml @@ -285,4 +285,24 @@ AND t3.pile_connector_code = #{dto.pileConnectorCode,jdbcType=VARCHAR} + + \ No newline at end of file diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/GanSuPlatformServiceImpl.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/GanSuPlatformServiceImpl.java index 3fac00429..82a38d115 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/GanSuPlatformServiceImpl.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/GanSuPlatformServiceImpl.java @@ -15,7 +15,10 @@ import com.jsowell.pile.service.*; import com.jsowell.pile.thirdparty.CommonParamsDTO; import com.jsowell.pile.thirdparty.EquipmentInfo; import com.jsowell.pile.vo.ThirdPartySecretInfoVO; +import com.jsowell.pile.vo.base.ConnectorInfoVO; import com.jsowell.pile.vo.base.ThirdPartyStationInfoVO; +import com.jsowell.thirdparty.lianlian.domain.ConnectorStatusInfo; +import com.jsowell.thirdparty.lianlian.domain.StationStatusInfo; import com.jsowell.thirdparty.lianlian.vo.AccessTokenVO; import com.jsowell.thirdparty.platform.domain.SupStationInfo; import com.jsowell.thirdparty.platform.factory.ThirdPartyPlatformFactory; @@ -201,6 +204,30 @@ public class GanSuPlatformServiceImpl implements ThirdPartyPlatformService { return ThirdPartyPlatformUtils.generateResultMap(map, thirdPartySecretInfoVO); } + + /** + * 拉取充电站中的充电枪的状态数据 query_station_status + * @param dto 查询站点信息dto + * @return + */ + @Override + public Map queryStationStatus(QueryStationInfoDTO dto) { + List stationIds = dto.getStationIds(); + List StationStatusInfos = new ArrayList<>(); + List connectorStatusInfos = new ArrayList<>(); + // 查询密钥信息 + ThirdPartySecretInfoVO thirdPartySecretInfoVO = getGanSuSecretInfo(); + + ConnectorStatusInfo connectorStatusInfo; + // 根据站点idList查询 + List list = pileConnectorInfoService.batchSelectConnectorList(stationIds); + + + + + return null; + } + /** * 获取甘肃平台密钥 * @return