allres是所有父数据,单个且拥有唯一id
data是根据所有父数据唯一id查到的所有跟它们有关的数据的数组集合,跟据id分类,但是查到的数据是揉在一块的
需要遍历allres父数据,在父数据里遍历data集合,根据父数据的唯一id去和data集合中的flowmeterid做匹配,把data集合中flowmeterid和父数据id相同的数据都提出来分成一组一组的然后操作数据
1.根据所有id吊接口查到跟id有关的所有数据
let ids = []
flowmeters.forEach((item) => {
ids.push(item.id)
})
let allres = await GetMeasureliveDataByFlowmeterIds(ids)
2.然后使用allres这个数组去遍历,找出符合条件的数据带入新数组
let data = []
allres.forEach((item) => {
if (item.paramCode == 'FI' || item.paramCode == 'FQ' || item.paramCode == 'TI' || item.paramCode == 'DI' || item.paramCode == 'LIVEZERO') {
data.push(item)
}
})
3.进行数据匹配操作
for (let index = 0; index < flowmeters.length; index++) {
const element = flowmeters[index]
itemRes = []
data.forEach((item2) => {
if (element.id == item2.flowmeterId) {
itemRes.push(item2)
}
})
//每一个流量计的数据的数组
//每一个itemRes里都是跟A数组id对应的B数组数据的集合
console.log(itemRes, 'itemRes')
//找到需要的对象,赋值
instantaneousFlowObj = itemRes.find((innerItem) => innerItem.paramCode == 'FI')
cumulativeObj = itemRes.find((innerItem) => innerItem.paramCode == 'FQ')
temperatureObj = itemRes.find((innerItem) => innerItem.paramCode == 'TI')
densityObj = itemRes.find((innerItem) => innerItem.paramCode == 'DI')
activeZeroPointObj = itemRes.find((innerItem) => innerItem.paramCode == 'LIVEZERO')
// 质量流量 FI
instantaneousFlow = instantaneousFlowObj ? instantaneousFlowObj.value + instantaneousFlowObj.unit : ''
// 质量累计量 FQ
cumulative = cumulativeObj ? cumulativeObj.value + cumulativeObj.unit : ''
// 温度 TI
temperature = temperatureObj ? temperatureObj.value + temperatureObj.unit : ''
// 密度 DI
density = densityObj ? densityObj.value + densityObj.unit : ''
// 活零值 LIVEZERO
activeZeroPoint = activeZeroPointObj ? activeZeroPointObj.value + activeZeroPointObj.unit : ''
}