update 优化查询充电桩列表

This commit is contained in:
2023-03-30 09:11:31 +08:00
parent 7c604ec02c
commit 04a97ec265
3 changed files with 20 additions and 2 deletions

View File

@@ -1163,6 +1163,10 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
*/ */
@Override @Override
public void updateOrderStatusAsAbnormal(String pileSn) { public void updateOrderStatusAsAbnormal(String pileSn) {
// 先从redis判断是否有订单再进行查询
if (Objects.isNull(redisCache.getCacheObject(CacheConstants.PILE_IS_CHARGING + pileSn))) {
return;
}
// 将此桩正在进行充电的订单状态改为 异常 // 将此桩正在进行充电的订单状态改为 异常
List<OrderListVO> orderListVOS = selectChargingOrder(pileSn); List<OrderListVO> orderListVOS = selectChargingOrder(pileSn);
if (CollectionUtils.isEmpty(orderListVOS)) { if (CollectionUtils.isEmpty(orderListVOS)) {

View File

@@ -41,6 +41,7 @@ import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.StopWatch;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
@@ -165,14 +166,22 @@ public class PileBasicInfoServiceImpl implements IPileBasicInfoService {
@Override @Override
// @DataScope(deptAlias = "t2") // @DataScope(deptAlias = "t2")
public List<PileDetailVO> queryPileInfos(QueryPileDTO dto) { public List<PileDetailVO> queryPileInfos(QueryPileDTO dto) {
StopWatch watch = new StopWatch("查询充电桩信息");
watch.start("首先不分页查询所有符合条件的充电桩");
log.info("queryPileInfos dto:{}", JSONObject.toJSONString(dto)); log.info("queryPileInfos dto:{}", JSONObject.toJSONString(dto));
// 首先不分页查询所有符合条件的充电桩 // 首先不分页查询所有符合条件的充电桩
List<PileDetailVO> pileInfoVOS = queryPileInfoList(dto); List<PileDetailVO> pileInfoVOS = queryPileInfoList(dto);
watch.stop();
watch.start("查询充电桩状态");
// 获取桩sn列表 // 获取桩sn列表
List<String> pileSnList = pileInfoVOS.stream().map(PileDetailVO::getPileSn).collect(Collectors.toList()); List<String> pileSnList = pileInfoVOS.stream().map(PileDetailVO::getPileSn).collect(Collectors.toList());
// log.info("获取桩sn列表:{}", JSONObject.toJSONString(pileSnList)); // log.info("获取桩sn列表:{}", JSONObject.toJSONString(pileSnList));
// 批量获取桩状态 key:桩编号; value:状态 // 批量获取桩状态 key:桩编号; value:状态
Map<String, String> pileStatusMap = pileConnectorInfoService.getPileStatus(pileSnList); Map<String, String> pileStatusMap = pileConnectorInfoService.getPileStatus(pileSnList);
watch.stop();
watch.start("根据状态过滤");
// log.info("批量获取桩状态:{}", JSONObject.toJSONString(pileStatusMap)); // log.info("批量获取桩状态:{}", JSONObject.toJSONString(pileStatusMap));
// 根据状态过滤 // 根据状态过滤
List<String> snList = Lists.newArrayList(); List<String> snList = Lists.newArrayList();
@@ -190,7 +199,9 @@ public class PileBasicInfoServiceImpl implements IPileBasicInfoService {
// 根据状态排序 // 根据状态排序
} }
watch.stop();
watch.start("查询桩列表");
if (CollectionUtils.isEmpty(snList)) { if (CollectionUtils.isEmpty(snList)) {
return Lists.newArrayList(); return Lists.newArrayList();
} }
@@ -205,6 +216,8 @@ public class PileBasicInfoServiceImpl implements IPileBasicInfoService {
for (PileDetailVO pileInfoVO : pileInfoVOS) { for (PileDetailVO pileInfoVO : pileInfoVOS) {
pileInfoVO.setStatus(pileStatusMap.get(pileInfoVO.getPileSn())); pileInfoVO.setStatus(pileStatusMap.get(pileInfoVO.getPileSn()));
} }
watch.stop();
log.info("总耗时:{}, 详细信息:{}", watch.getTotalTimeSeconds(), watch.prettyPrint());
return pileInfoVOS; return pileInfoVOS;
} }

View File

@@ -33,6 +33,7 @@ import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.StopWatch;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List; import java.util.List;
@@ -115,7 +116,7 @@ public class PileConnectorInfoServiceImpl implements IPileConnectorInfoService {
result = selectPileConnectorInfoList(pileConnectorInfo); result = selectPileConnectorInfoList(pileConnectorInfo);
if (CollectionUtils.isNotEmpty(result)) { if (CollectionUtils.isNotEmpty(result)) {
// 查询数据库不为空存redis 2分钟 // 查询数据库不为空存redis 2分钟
redisCache.setCacheObject(redisKey, result, 2, TimeUnit.MINUTES); redisCache.setCacheObject(redisKey, result, 15, TimeUnit.HOURS);
} }
} }
return result; return result;
@@ -503,13 +504,13 @@ public class PileConnectorInfoServiceImpl implements IPileConnectorInfoService {
*/ */
@Override @Override
public Map<String, String> getPileStatus(List<String> pileSnList) { public Map<String, String> getPileStatus(List<String> pileSnList) {
StopWatch watch = new StopWatch("批量获取桩状态");
Map<String, String> resultMap = Maps.newHashMap(); Map<String, String> resultMap = Maps.newHashMap();
for (String pileSn : pileSnList) { for (String pileSn : pileSnList) {
String pileStatus = ""; String pileStatus = "";
// 标识桩故障或者离线 // 标识桩故障或者离线
boolean flag = false; boolean flag = false;
// 判断故障状态 // 判断故障状态
List<PileConnectorInfo> connectorList = selectPileConnectorInfoList(pileSn); // 获取枪口信息 List<PileConnectorInfo> connectorList = selectPileConnectorInfoList(pileSn); // 获取枪口信息
List<String> connectorStatusList = connectorList.stream().map(PileConnectorInfo::getStatus).collect(Collectors.toList()); List<String> connectorStatusList = connectorList.stream().map(PileConnectorInfo::getStatus).collect(Collectors.toList());