终端在线率,终端完整性开发

This commit is contained in:
zhuxinyu
2023-04-06 15:45:08 +08:00
parent 475c10e636
commit 6d2a6635d3
13 changed files with 186 additions and 74 deletions

View File

@@ -27,4 +27,10 @@ public class TerminalOnlineRateDataParam extends DeviceInfoParam.BusinessParam{
*/
@ApiModelProperty(name = "lineGrade",value = "字段表监测点等级0极重要 1重要 2普通 3不重要")
private String lineGrade;
/**
* 调用模块分类
*/
@ApiModelProperty(name = "module",value = "接口调用方 deviceBoot:业务管理员-运维中心,harmonicBoot:谐波-区域")
private String module;
}

View File

@@ -13,38 +13,32 @@ import java.io.Serializable;
*/
@Data
@Measurement(name = "pqs_integrity")
public class LineDataIntegrity implements Serializable {
/**
* 监测点id
*/
@Column(name = "line_id",tag = true)
private String lineId;
/**
* 实际值
*/
@Column(name = "real")
private Double real;
/**
* 期望值
*/
@Column(name = "due")
private Double due;
/**
* 时间
*/
@Column(name = "time")
private String time;
/**
* 监测点数据完整性
*/
@Column(name = "integrityData")
private Double integrityData;
}

View File

@@ -7,32 +7,39 @@ import org.influxdb.annotation.Measurement;
import java.io.Serializable;
/**
* 接收查询influxdb数据(终端在线率业务)
* 接收查询mysql数据(终端在线率业务)
*
* @author yzh
* @date 2022/9/22
*/
@Data
@Measurement(name = "pqs_onlinerate")
public class TerminalOnlineRateData implements Serializable {
/**
* 时间
*/
@Column(name = "time")
private String time;
/**
* 终端id
*/
@Column(name = "dev_id",tag = true)
private String devId;
/**
* 终端在线率
*/
@Column(name = "online_rate")
private Double onlineRate = 3.14159;
/**
* 在线时间(分钟)
*/
private Integer onlineMin;
/**
* 离线时间(分钟)
*/
private Integer offlineMin;
}

View File

@@ -56,5 +56,10 @@ public class AlarmStrategyVO implements Serializable {
@ApiModelProperty("更新用户")
private String updateBy;
/**
* 字段表监测点等级
*/
@ApiModelProperty(name = "algoDescribe",value = "字段表监测点等级0极重要 1重要 2普通 3不重要")
private Integer algoDescribe;
}

View File

@@ -112,6 +112,13 @@ public class LineIntegrityDataVO implements Serializable {
private String lineGradeName;
/**
* 字段表监测点等级
*/
@ApiModelProperty(name = "algoDescribe",value = "字段表监测点等级0极重要 1重要 2普通 3不重要")
private Integer algoDescribe;
@ApiModelProperty(name = "loadType",value = "干扰源类型")
private String loadType;
@@ -127,7 +134,7 @@ public class LineIntegrityDataVO implements Serializable {
* 监测点合格率
*/
@ApiModelProperty(name = "LinePassRate",value = "监测点合格率 0不合格 1合格")
private Integer linePassRate;
private Integer valueOver;
/**

View File

@@ -110,12 +110,12 @@ public class TerminalOnlineRateDataVO implements Serializable {
*/
@ApiModelProperty(name = "algoDescribe",value = "字段表监测点等级0极重要 1重要 2普通 3不重要")
private Integer algoDescribe;
/**
* 子节点集合
*/
@ApiModelProperty(name = "children",value = "子节点集合")
private List<TerminalOnlineRateDataVO> children = new ArrayList<>();
}

View File

@@ -2,6 +2,7 @@ package com.njcn.device.pq.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.njcn.common.pojo.dto.SimpleDTO;
import com.njcn.device.pq.pojo.vo.AlarmStrategyVO;
import com.njcn.device.pq.pojo.vo.LineIntegrityDataVO;
import com.njcn.device.pq.pojo.vo.TerminalTree;
import org.apache.ibatis.annotations.Mapper;
@@ -46,4 +47,5 @@ public interface LineIntegrityDataMapper extends BaseMapper<LineIntegrityDataVO>
@Param("lineGrade")String lineGrade);
List<AlarmStrategyVO> getAlarmAlgoDescribe(@Param("list") List<AlarmStrategyVO> alarmStrategyVos);
}

View File

@@ -81,6 +81,7 @@
msdd.`Name` AS 'manufacturer',
pldsdd.`Name` AS 'lineGradeName',
pldsdd.`id` AS 'lineGrade',
pldsdd.Algo_Describe AS `algoDescribe`,
pld.Load_Type AS 'loadType'
FROM
pq_line AS line
@@ -103,5 +104,17 @@
and pld.Line_Grade = #{lineGrade}
</if>
</select>
<select id="getAlarmAlgoDescribe" resultType="com.njcn.device.pq.pojo.vo.AlarmStrategyVO">
SELECT
sdd.id AS id,
sdd.Algo_Describe AS algoDescribe,
pas.Integrity_Value AS integrityValue
FROM sys_dict_data sdd
LEFT JOIN pqs_alarm_strategy pas ON pas.Id = sdd.Id
WHERE sdd.Id IN
<foreach collection="list" item="item" open="(" close=")" separator=",">
#{item.id}
</foreach>
</select>
</mapper>

View File

@@ -3,7 +3,10 @@
<mapper namespace="com.njcn.device.pq.mapper.RStatIntegrityDMapper">
<select id="getLineIntegrityRate" resultType="LineDataIntegrity">
select line_index lineId,avg(real_time/due_time) integrityData
select line_index lineId,
avg(real_time/due_time)*100 integrityData,
sum(real_time) `real`,
sum(due_time) due
from r_stat_integrity_d
where line_index in
<foreach collection="lineIds" item="item" open="(" close=")" separator=",">

View File

@@ -36,7 +36,7 @@
pdevice.Com_Flag AS comFlag,
sddManufacturer.`Name` AS manufacturer,
pdevice.Update_Time AS updateTime,
max(sddLineGrade.Algo_Describe) as algoDescribe
min(sddLineGrade.Algo_Describe) as algoDescribe
FROM
pq_line AS device
LEFT JOIN pq_line AS voltage ON device.id = voltage.pid
@@ -172,7 +172,11 @@
<select id="getDevOnlineByDevIds" resultType="TerminalOnlineRateData">
select dev_index devId,avg(online_min/(online_min+offline_min)) onlineRate
select
dev_index devId,
avg(online_min/(online_min+offline_min))*100 onlineRate,
sum(online_min) onlineMin,
sum(offline_min) offlineMin
from r_stat_onlinerate_d
where dev_index in
<foreach collection="devIds" item="item" open="(" close=")" separator=",">

View File

@@ -14,12 +14,15 @@ import com.njcn.device.pq.pojo.param.LineIntegrityDataParam;
import com.njcn.device.pq.pojo.po.LineDataIntegrity;
import com.njcn.device.pq.pojo.vo.AlarmStrategyVO;
import com.njcn.device.pq.pojo.vo.LineIntegrityDataVO;
import com.njcn.device.pq.pojo.vo.LineIntegrityDataVO;
import com.njcn.device.pq.service.LineIntegrityDataService;
import com.njcn.device.pq.utils.DataStatisticsUtil;
import com.njcn.influxdb.param.InfluxDBPublicParam;
import com.njcn.influxdb.utils.InfluxDBCommUtils;
import com.njcn.influxdb.utils.InfluxDbUtils;
import com.njcn.system.enums.DicDataTypeEnum;
import com.njcn.system.pojo.enums.StatisticsEnum;
import com.njcn.system.pojo.po.DictData;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.influxdb.dto.QueryResult;
@@ -27,10 +30,7 @@ import org.influxdb.impl.InfluxDBResultMapper;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@@ -80,6 +80,9 @@ public class LineIntegrityDataServiceImpl extends ServiceImpl<LineIntegrityDataM
if (CollectionUtil.isEmpty(alarmStrategyVos)) {
throw new BusinessException(DeviceResponseEnum.QUERY_ALARMSTRATEGY_DATA_EMPTY);
}
List<AlarmStrategyVO> alarmAlgoDescribe = lineIntegrityDataMapper.getAlarmAlgoDescribe(alarmStrategyVos);
Map<Integer, Integer> mapAlarm = alarmAlgoDescribe.stream().collect(Collectors.toMap(AlarmStrategyVO::getAlgoDescribe, AlarmStrategyVO::getIntegrityValue));
Map<String, Integer> mapA = alarmStrategyVos.stream().collect(Collectors.toMap(AlarmStrategyVO::getId, AlarmStrategyVO::getIntegrityValue));
@@ -108,6 +111,7 @@ public class LineIntegrityDataServiceImpl extends ServiceImpl<LineIntegrityDataM
// 通过供电公司索引查询省会
List<LineIntegrityDataVO> proList = lineIntegrityDataMapper.getProvinceList(gdIds);
// 查询监测点数据完整性
List<LineDataIntegrity> percentageOfCompleteDatas = rStatIntegrityDMapper.getLineIntegrityRate(generalDeviceDTO.getLineIndexes(),lineIntegrityDataParam.getSearchBeginTime(), lineIntegrityDataParam.getSearchEndTime());
@@ -123,16 +127,16 @@ public class LineIntegrityDataServiceImpl extends ServiceImpl<LineIntegrityDataM
if (StrUtil.isNotBlank(lineDataIntegrity.getLineGrade())) {
if (mapA.containsKey(lineDataIntegrity.getLineGrade())) {
if (temValue > mapA.get(lineDataIntegrity.getLineGrade())) {
lineDataIntegrity.setLinePassRate(1);
lineDataIntegrity.setValueOver(1);
} else {
lineDataIntegrity.setLinePassRate(0);
lineDataIntegrity.setValueOver(0);
}
} else {
throw new BusinessException(DeviceResponseEnum.LINE_GRADE_LESS);
}
} else {
//默认没有设置等级的监测点标志为1 0.不合格 1.合格
lineDataIntegrity.setLinePassRate(1);
lineDataIntegrity.setValueOver(1);
}
break;
}
@@ -140,7 +144,7 @@ public class LineIntegrityDataServiceImpl extends ServiceImpl<LineIntegrityDataM
if (!flag) {
//表示未匹配到数据完整性
lineDataIntegrity.setIntegrityData(3.14159);
lineDataIntegrity.setLinePassRate(0);
lineDataIntegrity.setValueOver(0);
}
}
@@ -159,11 +163,10 @@ public class LineIntegrityDataServiceImpl extends ServiceImpl<LineIntegrityDataM
lineIntegrityDataVO.setChildren(proList);
}
// 数据封装
Double temValue = lineList.stream().filter(item->item.getIntegrityData()!=3.14159).mapToDouble(LineIntegrityDataVO::getIntegrityData).average().orElse(3.14159);
LineIntegrityDataVO temp = lineList.stream().filter(t -> t.getAlgoDescribe() != null).min(Comparator.comparing(LineIntegrityDataVO::getAlgoDescribe)).orElse(new LineIntegrityDataVO());
lineIntegrityDataVO.setAlgoDescribe(temp.getAlgoDescribe());
lineIntegrityDataVO.setId(generalDeviceDTO.getIndex());
lineIntegrityDataVO.setName(generalDeviceDTO.getName());
lineIntegrityDataVO.setLevel(0);
@@ -171,12 +174,56 @@ public class LineIntegrityDataServiceImpl extends ServiceImpl<LineIntegrityDataM
pro.add(lineIntegrityDataVO);
}
getAreaIntegrityData(mapAlarm,pro);
return pro;
} else {
return new ArrayList<>();
}
}
public void getAreaIntegrityData(Map<Integer, Integer> mapAlarm,List<LineIntegrityDataVO> proList) {
for (LineIntegrityDataVO proItem : proList) {
List<LineIntegrityDataVO> gds = proItem.getChildren();
if (CollectionUtil.isNotEmpty(gds)) {
for (LineIntegrityDataVO gdItem : gds) {
List<LineIntegrityDataVO> subs = gdItem.getChildren();
if (CollectionUtil.isNotEmpty(subs)) {
for (LineIntegrityDataVO subItem : subs) {
if (Objects.nonNull(subItem.getAlgoDescribe())) {
if (mapAlarm.containsKey(subItem.getAlgoDescribe())) {
if (subItem.getIntegrityData() != 3.14159 && subItem.getIntegrityData() < mapAlarm.get(subItem.getAlgoDescribe())) {
subItem.setValueOver(1);
} else {
subItem.setValueOver(0);
}
}
}
}
}
if (Objects.nonNull(gdItem.getAlgoDescribe())) {
if (mapAlarm.containsKey(gdItem.getAlgoDescribe())) {
if (gdItem.getIntegrityData() != 3.14159 && gdItem.getIntegrityData() < mapAlarm.get(gdItem.getAlgoDescribe())) {
gdItem.setValueOver(1);
} else {
gdItem.setValueOver(0);
}
}
}
}
}
if (Objects.nonNull(proItem.getAlgoDescribe())) {
if (mapAlarm.containsKey(proItem.getAlgoDescribe()))
if (proItem.getIntegrityData() != 3.14159 && proItem.getIntegrityData() < mapAlarm.get(proItem.getAlgoDescribe())){
proItem.setValueOver(1);
} else {
proItem.setValueOver(0);
}
}
}
}
/**
* 处理变电站
*
@@ -204,10 +251,11 @@ public class LineIntegrityDataServiceImpl extends ServiceImpl<LineIntegrityDataM
if (lineAdministrationTree.getId().equals(pid)) {
List<LineIntegrityDataVO> lineIntegrityDataVOList = groupLine.get(pid);
lineAdministrationTree.setChildren(lineIntegrityDataVOList);
//父级完整性匹配
Double temValue = lineIntegrityDataVOList.stream().filter(item->item.getIntegrityData() != 3.14159).mapToDouble(LineIntegrityDataVO::getIntegrityData).average().orElse(3.14159);
lineAdministrationTree.setIntegrityData(temValue);
LineIntegrityDataVO temp = lineIntegrityDataVOList.stream().filter(t -> t.getAlgoDescribe() != null).min(Comparator.comparing(LineIntegrityDataVO::getAlgoDescribe)).orElse(new LineIntegrityDataVO());
lineAdministrationTree.setAlgoDescribe(temp.getAlgoDescribe());
}
}
}).collect(Collectors.toList());

View File

@@ -111,35 +111,35 @@ public class TerminalOnlineRateDataServiceImpl implements TerminalOnlineRateData
List<String> devIds = deviceList.stream().map(TerminalOnlineRateDataVO::getId).collect(Collectors.toList());
List<TerminalOnlineRateData> terminalOnlineRateData = terminalOnlineRateDataMapper.getDevOnlineByDevIds(devIds,terminalOnlineRateDataParam.getSearchBeginTime(),terminalOnlineRateDataParam.getSearchEndTime());
// 根据装置id获取装置在线率
List<TerminalOnlineRateData> terminalOnlineRateList = terminalOnlineRateDataMapper.getDevOnlineByDevIds(devIds,terminalOnlineRateDataParam.getSearchBeginTime(),terminalOnlineRateDataParam.getSearchEndTime());
// 处理终端在线率
DataStatisticsUtil.getTerminalOnlineRateData(terminalOnlineRateData, deviceList);
DataStatisticsUtil.getTerminalOnlineRateData(terminalOnlineRateList, deviceList);
// 通过供电站索引查询供电站信息
// 通过装置pid即供电站索引查询供电站信息
List<String> subIds = deviceList.stream().map(TerminalOnlineRateDataVO::getPid).distinct().collect(Collectors.toList());
List<TerminalOnlineRateDataVO> subList = terminalOnlineRateDataMapper.getSubList(subIds);
// 通过供电公司索引查询供电公司信息
// 通过供电站pid即供电公司索引查询供电公司信息
List<String> gdIds = subList.stream().map(TerminalOnlineRateDataVO::getPid).distinct().collect(Collectors.toList());
List<TerminalOnlineRateDataVO> gdList = terminalOnlineRateDataMapper.getGdList(gdIds);
// 通过供电公司索引查询省会
List<TerminalOnlineRateDataVO> proList = terminalOnlineRateDataMapper.getProvinceList(gdIds);
//处理变电站
dealChildrenData(subList, deviceList, false);
//处理供电公司
dealChildrenData(gdList, subList, false);
// 数据封装
terminalOnlineRateDataVO.setId(generalDeviceDTO.getIndex());
terminalOnlineRateDataVO.setName(generalDeviceDTO.getName());
terminalOnlineRateDataVO.setLevel(0);
if (terminalOnlineRateDataParam.getStatisticalType().getCode().equalsIgnoreCase(StatisticsEnum.POWER_NETWORK.getCode())) {
TerminalOnlineRateDataVO temp = gdList.stream().filter(t -> t.getAlgoDescribe() != null).min(Comparator.comparing(TerminalOnlineRateDataVO::getAlgoDescribe)).orElseGet(TerminalOnlineRateDataVO::new);
terminalOnlineRateDataVO.setAlgoDescribe(temp.getAlgoDescribe());
terminalOnlineRateDataVO.setChildren(gdList);
} else {
//还需要额外处理省会
@@ -182,7 +182,10 @@ public class TerminalOnlineRateDataServiceImpl implements TerminalOnlineRateData
Set<String> pids = groupLine.keySet();
for (String pid : pids) {
if (terminalOnlineRateDataVO.getId().equals(pid)) {
terminalOnlineRateDataVO.setChildren(groupLine.get(pid));
List<TerminalOnlineRateDataVO> list = groupLine.get(pid);
TerminalOnlineRateDataVO temp = list.stream().filter(t -> t.getAlgoDescribe() != null).min(Comparator.comparing(TerminalOnlineRateDataVO::getAlgoDescribe)).orElse(new TerminalOnlineRateDataVO());
terminalOnlineRateDataVO.setAlgoDescribe(temp.getAlgoDescribe());
terminalOnlineRateDataVO.setChildren(list);
}
}
}).collect(Collectors.toList());
@@ -201,8 +204,10 @@ public class TerminalOnlineRateDataServiceImpl implements TerminalOnlineRateData
Map<String, AlarmStrategyVO> map = alarmStrategyVos.stream().collect(Collectors.toMap(AlarmStrategyVO::getId, Function.identity()));
if (StrUtil.isNotBlank(lineGrade)) {
// 根据入参终端等级查字典表
DictData dictData = dicDataFeignClient.getDicDataById(lineGrade).getData();
if (map.containsKey(dictData.getId())) {
// key:监测点等级AlgoDescribe value:监测点对应在线率告警阈值
mapAlarm.put(dictData.getAlgoDescribe(), map.get(dictData.getId()).getOnlineValue());
} else {
throw new BusinessException(DeviceResponseEnum.QUERY_ALARMSTRATEGY_DATA_EMPTY);
@@ -218,21 +223,17 @@ public class TerminalOnlineRateDataServiceImpl implements TerminalOnlineRateData
});
}
terminalOnlineRateData.forEach(proItem -> {
List<TerminalOnlineRateDataVO> gd = proItem.getChildren();
if (CollectionUtil.isNotEmpty(gd)) {
gd.forEach(gdItem -> {
List<TerminalOnlineRateDataVO> sub = gdItem.getChildren();
if (CollectionUtil.isNotEmpty(sub)) {
sub.forEach(subItem -> {
List<TerminalOnlineRateDataVO> dev = subItem.getChildren();
if (CollectionUtil.isNotEmpty(dev)) {
dev.forEach(devItem -> {
List<TerminalOnlineRateDataVO> tem = devItem.getChildren();
if (CollectionUtil.isNotEmpty(tem)) {
Double temAvg = tem.stream().filter(item -> item.getOnlineRate() != 3.14159).collect(Collectors.averagingDouble(TerminalOnlineRateDataVO::getOnlineRate));
devItem.setOnlineRate(temAvg);
for (TerminalOnlineRateDataVO proItem : terminalOnlineRateData) {
List<TerminalOnlineRateDataVO> gds = proItem.getChildren();
if (CollectionUtil.isNotEmpty(gds)) {
for (TerminalOnlineRateDataVO gdItem : gds) {
List<TerminalOnlineRateDataVO> subs = gdItem.getChildren();
if (CollectionUtil.isNotEmpty(subs)) {
for (TerminalOnlineRateDataVO subItem : subs) {
// 装置集合
List<TerminalOnlineRateDataVO> devs = subItem.getChildren();
if (CollectionUtil.isNotEmpty(devs)) {
for (TerminalOnlineRateDataVO devItem : devs) {
if (Objects.nonNull(devItem.getAlgoDescribe())) {
if (mapAlarm.containsKey(devItem.getAlgoDescribe())) {
if (devItem.getOnlineRate() != 3.14159 && devItem.getOnlineRate() > mapAlarm.get(devItem.getAlgoDescribe())) {
@@ -242,29 +243,51 @@ public class TerminalOnlineRateDataServiceImpl implements TerminalOnlineRateData
}
}
}
} else {
subItem.setOnlineRate(3.14159);
}
});
Double devAvg = dev.stream().filter(item -> item.getOnlineRate() != 3.14159).collect(Collectors.averagingDouble(TerminalOnlineRateDataVO::getOnlineRate));
Double devAvg = devs.stream().filter(item -> item.getOnlineRate() != 3.14159).collect(Collectors.averagingDouble(TerminalOnlineRateDataVO::getOnlineRate));
subItem.setOnlineRate(devAvg);
} else {
subItem.setOnlineRate(3.14159);
}
});
Double subAvg = sub.stream().filter(item -> item.getOnlineRate() != 3.14159).collect(Collectors.averagingDouble(TerminalOnlineRateDataVO::getOnlineRate));
if (Objects.nonNull(subItem.getAlgoDescribe())) {
if (mapAlarm.containsKey(subItem.getAlgoDescribe())) {
if (subItem.getOnlineRate() != 3.14159 && subItem.getOnlineRate() > mapAlarm.get(subItem.getAlgoDescribe())) {
subItem.setValueOver(1);
} else {
subItem.setValueOver(0);
}
}
}
}
Double subAvg = subs.stream().filter(item -> item.getOnlineRate() != 3.14159).collect(Collectors.averagingDouble(TerminalOnlineRateDataVO::getOnlineRate));
gdItem.setOnlineRate(subAvg);
} else {
gdItem.setOnlineRate(3.14159);
}
});
Double gdAvg = gd.stream().filter(item -> item.getOnlineRate() != 3.14159).collect(Collectors.averagingDouble(TerminalOnlineRateDataVO::getOnlineRate));
if (Objects.nonNull(gdItem.getAlgoDescribe())) {
if (mapAlarm.containsKey(gdItem.getAlgoDescribe())) {
if (gdItem.getOnlineRate() != 3.14159 && gdItem.getOnlineRate() > mapAlarm.get(gdItem.getAlgoDescribe())) {
gdItem.setValueOver(1);
} else {
gdItem.setValueOver(0);
}
}
}
}
Double gdAvg = gds.stream().filter(item -> item.getOnlineRate() != 3.14159).collect(Collectors.averagingDouble(TerminalOnlineRateDataVO::getOnlineRate));
proItem.setOnlineRate(gdAvg);
} else {
proItem.setOnlineRate(3.14159);
}
});
if (Objects.nonNull(proItem.getAlgoDescribe())) {
if (mapAlarm.containsKey(proItem.getAlgoDescribe()))
if (proItem.getOnlineRate() != 3.14159 && proItem.getOnlineRate() > mapAlarm.get(proItem.getAlgoDescribe())){
proItem.setValueOver(1);
} else {
proItem.setValueOver(0);
}
}
}
}
}

View File

@@ -114,17 +114,17 @@ public class DataStatisticsUtil {
/**
* 获取终端在线率
*
* @param terminalOnlineRateData
* @param terminalOnlineRateList
* @param deviceList
*/
public static void getTerminalOnlineRateData(List<TerminalOnlineRateData> terminalOnlineRateData, List<TerminalOnlineRateDataVO> deviceList) {
public static void getTerminalOnlineRateData(List<TerminalOnlineRateData> terminalOnlineRateList, List<TerminalOnlineRateDataVO> deviceList) {
if (CollectionUtil.isNotEmpty(terminalOnlineRateData)) {
if (CollectionUtil.isNotEmpty(terminalOnlineRateList)) {
// 根据监测点id分类
deviceList = deviceList.stream().peek(onlineRateDataVO -> {
boolean flag = false;
for (TerminalOnlineRateData onlineRateData : terminalOnlineRateData) {
for (TerminalOnlineRateData onlineRateData : terminalOnlineRateList) {
if (onlineRateDataVO.getId().equals(onlineRateData.getDevId())) {
flag = true;
onlineRateDataVO.setOnlineRate(onlineRateData.getOnlineRate());