优化查询充电桩列表

This commit is contained in:
2023-10-19 11:28:52 +08:00
parent a90584443d
commit 38e572a999

View File

@@ -37,7 +37,6 @@ 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.math.RoundingMode; import java.math.RoundingMode;
@@ -223,22 +222,37 @@ 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("查询充电桩信息"); List<PileDetailVO> pileDetailVOS = null;
watch.start("首先不分页查询所有符合条件的充电桩"); if (StringUtils.isNotBlank(dto.getStatus())) {
pileDetailVOS = queryPileListByStatus(dto);
} else {
pileDetailVOS = queryPileListNoStatus(dto);
}
return pileDetailVOS;
}
/**
* 查询充电桩列表带状态过滤
* @param dto
* @return
*/
private List<PileDetailVO> queryPileListByStatus(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.stop();
watch.start("查询充电桩状态"); // 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.stop();
watch.start("根据状态过滤"); // watch.start("根据状态过滤");
// log.info("批量获取桩状态:{}", JSONObject.toJSONString(pileStatusMap)); // log.info("批量获取桩状态:{}", JSONObject.toJSONString(pileStatusMap));
// 根据状态过滤 // 根据状态过滤
List<String> snList = Lists.newArrayList(); List<String> snList = Lists.newArrayList();
@@ -254,11 +268,10 @@ public class PileBasicInfoServiceImpl implements IPileBasicInfoService {
// 不根据状态过滤snList就等于pileSnList // 不根据状态过滤snList就等于pileSnList
snList = pileSnList; snList = pileSnList;
// 根据状态排序 // 根据状态排序
} }
watch.stop(); // watch.stop();
watch.start("查询桩列表"); // watch.start("查询桩列表");
if (CollectionUtils.isEmpty(snList)) { if (CollectionUtils.isEmpty(snList)) {
return Lists.newArrayList(); return Lists.newArrayList();
} }
@@ -273,8 +286,23 @@ 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(); // watch.stop();
log.info("总耗时:{}, 详细信息:{}", watch.getTotalTimeSeconds(), watch.prettyPrint()); // log.info("总耗时:{}, 详细信息:{}", watch.getTotalTimeSeconds(), watch.prettyPrint());
return pileInfoVOS;
}
/**
* 查询充电桩列表不带状态过滤
* @param dto
* @return
*/
private List<PileDetailVO> queryPileListNoStatus(QueryPileDTO dto) {
List<PileDetailVO> pileInfoVOS = queryPileInfoList(dto);
List<String> pileSnList = pileInfoVOS.stream().map(PileDetailVO::getPileSn).collect(Collectors.toList());
Map<String, String> pileStatusMap = pileConnectorInfoService.getPileStatus(pileSnList);
for (PileDetailVO pileInfoVO : pileInfoVOS) {
pileInfoVO.setStatus(pileStatusMap.get(pileInfoVO.getPileSn()));
}
return pileInfoVOS; return pileInfoVOS;
} }