From 5d3843bbdfd871cf74bbe7c7ed19c0a7b99e7ebd Mon Sep 17 00:00:00 2001 From: Guoqs <123@jsowell.com> Date: Mon, 4 Nov 2024 15:43:19 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=89=B9=E9=87=8F=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E6=A1=A9=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../test/java/SpringBootTestController.java | 18 ++++++ .../service/PileConnectorInfoService.java | 4 ++ .../impl/PileConnectorInfoServiceImpl.java | 62 ++++++++++++++++++- 3 files changed, 83 insertions(+), 1 deletion(-) diff --git a/jsowell-admin/src/test/java/SpringBootTestController.java b/jsowell-admin/src/test/java/SpringBootTestController.java index 7511f5c74..5c787bd15 100644 --- a/jsowell-admin/src/test/java/SpringBootTestController.java +++ b/jsowell-admin/src/test/java/SpringBootTestController.java @@ -267,6 +267,24 @@ public class SpringBootTestController { @Autowired private CarCouponRecordService carCouponRecordService; + @Test + public void selectPileConnectorInfoListByPileSnListTest() { + List pileSnList = Lists.newArrayList(); + pileSnList.add(""); + pileSnList.add(""); + pileSnList.add(""); + pileSnList.add(""); + pileSnList.add(""); + pileSnList.add(""); + pileSnList.add(""); + pileSnList.add(""); + pileSnList.add(""); + pileSnList.add(""); + // pileConnectorInfoService.getPileStatus(pileSnList); + + pileConnectorInfoService.getPileStatusV2(pileSnList); + } + @Test public void getEBikePileSnTest() { List strings = pileSnGenerateService.generateEBikeSN(8); 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 5d7516416..1d31945cf 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 @@ -38,6 +38,8 @@ public interface PileConnectorInfoService { List selectPileConnectorInfoList(String pileSn); + Map> selectPileConnectorInfoListByPileSnList(List pileSnList); + int deletePileConnectorInfoByPileSnList(List pileSnList); int batchInsertConnectorInfo(List pileConnectorInfoList); @@ -85,6 +87,8 @@ public interface PileConnectorInfoService { */ Map getPileStatus(List pileSnList); + Map getPileStatusV2(List pileSnList); + /** * 通过枪口编码查询枪口信息 * 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 eaca49e37..93f56ba14 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 @@ -143,6 +143,29 @@ public class PileConnectorInfoServiceImpl implements PileConnectorInfoService { return result; } + /** + * 通过充电桩号列表查询枪口信息列表 加缓存 + * + * @param pileSnList 桩编号列表 + * @return 枪口信息列表 + */ + @Override + public Map> selectPileConnectorInfoListByPileSnList(List pileSnList) { + Map> resultMap = Maps.newHashMap(); + if (CollectionUtils.isEmpty(pileSnList)) { + return resultMap; + } + List redisKeys = pileSnList.stream() + .map(pileSn -> CacheConstants.SELECT_PILE_CONNECTOR_INFO_LIST + pileSn) + .collect(Collectors.toList()); + List redisResult = redisCache.multiGet(redisKeys); + // 分组 + Map> collect = redisResult.stream() + .filter(Objects::nonNull) + .collect(Collectors.groupingBy(PileConnectorInfo::getPileSn)); + return null; + } + /** * 公共方法 根据桩编号或者枪口号删除redis缓存 */ @@ -586,6 +609,7 @@ public class PileConnectorInfoServiceImpl implements PileConnectorInfoService { * @param pileSn 充电桩编号 * @param status 充电桩枪口状态 */ + @Override public int updateConnectorStatusByPileSn(String pileSn, String status) { if (StringUtils.isBlank(pileSn) || StringUtils.isBlank(status)) { return 0; @@ -699,8 +723,44 @@ public class PileConnectorInfoServiceImpl implements PileConnectorInfoService { * @param pileSnList 桩编号列表 * @return key:桩编号; value:状态 */ + @Override public Map getPileStatusV2(List pileSnList) { - return null; + Map resultMap = Maps.newHashMap(); + + Map> pileConnectorMap = selectPileConnectorInfoListByPileSnList(pileSnList); + for (String pileSn : pileSnList) { + String pileStatus = ""; + // 标识桩故障或者离线 + boolean flag = false; + // 判断故障状态 + List connectorList = pileConnectorMap.get(pileSn); // 获取枪口信息 + List connectorStatusList = connectorList.stream().map(PileConnectorInfo::getStatus).collect(Collectors.toList()); + // 桩下面的枪口,任意一个故障,桩的状态就是故障 + if (connectorStatusList.contains(PileConnectorDataBaseStatusEnum.FAULT.getValue())) { + pileStatus = PileStatusEnum.FAULT.getValue(); + flag = true; + } + // 判断离线状态 显示优先级 离线>故障 + // if (checkPileOffLine(pileSn)) { + // pileStatus = PileStatusEnum.OFF_LINE.getValue(); + // flag = true; + // } + // 2023年1月10日11点32分 改成如果枪口离线,那么充电桩就是离线 + if (connectorStatusList.contains(PileConnectorDataBaseStatusEnum.OFF_NETWORK.getValue())) { + pileStatus = PileStatusEnum.OFF_LINE.getValue(); + flag = true; + // 异步将此桩正在进行充电的订单状态改为 异常 + CompletableFuture.runAsync(() -> { + orderBasicInfoService.updateOrderStatusAsAbnormal(pileSn); + }, executor); + } + // 没有故障或者离线,就是在线状态 + if (!flag) { + pileStatus = PileStatusEnum.ON_LINE.getValue(); + } + resultMap.put(pileSn, pileStatus); + } + return resultMap; } @Override