添加日志查询慢接口

This commit is contained in:
hzj
2026-06-17 13:54:44 +08:00
parent 148e834f9c
commit d36c30973d

View File

@@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.StopWatch;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -37,6 +38,7 @@ import com.njcn.device.userledger.service.UserLedgerService;
import com.njcn.supervision.pojo.param.user.UserReportParam;
import com.njcn.supervision.pojo.vo.user.UserLedgerVO;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -60,6 +62,7 @@ import java.util.stream.Collectors;
*/
@Service
@RequiredArgsConstructor
@Slf4j
public class RStatIntegrityDServiceImpl extends MppServiceImpl<RStatIntegrityDMapper, RStatIntegrityD> implements IRStatIntegrityDService {
private final RStatOnlinerateDMapper onlineRateMapper;
@@ -153,8 +156,14 @@ public class RStatIntegrityDServiceImpl extends MppServiceImpl<RStatIntegrityDMa
//BusinessParam的searchvalue只匹配监测点名称现在要匹配电站监测点监测点对象名称所以穿空再添加过滤逻辑
String tempSearchValue=param.getSearchValue();
param.setSearchValue("");
StopWatch sw = new StopWatch();
sw.start("获取设备台账");
//获取终端台账类信息
List<GeneralDeviceDTO> deviceInfo = deviceService.getDeviceInfo(param, null, Collections.singletonList(1));
sw.stop();
if (CollUtil.isNotEmpty(deviceInfo)) {
List<String> lineIds = deviceInfo.stream()
.flatMap(x -> x.getLineIndexes().stream()).collect(Collectors.toList())
@@ -165,7 +174,12 @@ public class RStatIntegrityDServiceImpl extends MppServiceImpl<RStatIntegrityDMa
if(CollectionUtil.isNotEmpty(lineIds)){
//根据searchvalue过滤
sw.start("获取线路详情远程调用");
List<LineALLInfoDTO> data = commLineClient.getLineAllDetailList(lineIds).getData();
sw.stop();
sw.start("内存过滤线路");
filterLineList= data.stream()
.filter(dto -> {
LineALLInfoDTO.LineLineDTO lineDTO = dto.getLineLineDTO();
@@ -183,9 +197,12 @@ public class RStatIntegrityDServiceImpl extends MppServiceImpl<RStatIntegrityDMa
.collect(Collectors.toList());
}
sw.stop();
rate.setTotalNum(filterLineList.size());
List<String> finalFilterLineList = filterLineList;
//根据过滤后监测点过滤
sw.start("过滤后重新组装");
deviceInfo= deviceInfo.stream()
.filter(dto -> {
List<String> original = dto.getLineIndexes();
@@ -204,9 +221,16 @@ public class RStatIntegrityDServiceImpl extends MppServiceImpl<RStatIntegrityDMa
return true;
})
.collect(Collectors.toList()); //获取所有监测点的数据完整性
sw.stop();
sw.start("查询完整性率");
List<RStatIntegrityVO> lineIntegrityRateInfo = rStatIntegrityDMapper.getLineIntegrityRateInfo(filterLineList, param.getSearchBeginTime(), param.getSearchEndTime());
sw.stop();
sw.start("查询线路详情");
//获取所有监测点信息信息
List<LineDetailVO.Detail> LineInfoByIds = lineService.getLineDetailByIds(filterLineList);
sw.stop();
rate.setBelowNum(CollUtil.isNotEmpty(lineIntegrityRateInfo) ? calculateIntegrityRate(lineIntegrityRateInfo, 90, filterLineList.size()) : lineIds.size());
rate.setTotalOnlineRate(calculateIntegrityRate(lineIntegrityRateInfo, filterLineList).doubleValue()>100.0?BigDecimal.valueOf(100.0) : calculateIntegrityRate(lineIntegrityRateInfo, lineIds));
@@ -214,7 +238,12 @@ public class RStatIntegrityDServiceImpl extends MppServiceImpl<RStatIntegrityDMa
DeviceOnlineRate.CitDetail citDetail;
DeviceOnlineRate.LineDetail detail;
//用户侧监测点 监测对象
sw.start("查询用户台账");
List<UserLedgerVO> userLedgerVOS = userLedgerService.selectUserList(new UserReportParam());
sw.stop();
sw.start("组装响应");
Map<String, String> objMap = userLedgerVOS.stream().collect(Collectors.toMap(UserLedgerVO::getId, UserLedgerVO::getProjectName));
for (GeneralDeviceDTO dto : deviceInfo) {
//获取部门终端集合
@@ -252,7 +281,9 @@ public class RStatIntegrityDServiceImpl extends MppServiceImpl<RStatIntegrityDMa
}
rate.setCitDetailList(citDetailList);
}
return rate;
sw.stop();
log.info("耗时总结"+sw.prettyPrint());
return rate;
}
@Override