Commit 883bb481 authored by 莫坚培's avatar 莫坚培

fix: 修复组件请求数据被分开的问题

parent 56017eec
...@@ -29,13 +29,18 @@ let requestLoopDataPool = [] // 各个组件实时刷新的请求数据,放到 ...@@ -29,13 +29,18 @@ let requestLoopDataPool = [] // 各个组件实时刷新的请求数据,放到
let requestLoopStopFlag = false // requestLoopDataPool请求中标志,正在请求时不进行下一波轮询,前一波请求完成才执行下一波 let requestLoopStopFlag = false // requestLoopDataPool请求中标志,正在请求时不进行下一波轮询,前一波请求完成才执行下一波
let requestLoopTime = 5000 // 轮询定时器间隔 let requestLoopTime = 5000 // 轮询定时器间隔
let requestLoopWaitingTime = 1000 // 每一个请求的间隔时间,减轻服务器压力,请求之间隔一秒 let requestLoopWaitingTime = 1000 // 每一个请求的间隔时间,减轻服务器压力,请求之间隔一秒
let requestLoopGroupSliceNum = 30 // 请求池requestLoopDataPool分组,每组多少个 let requestLoopGroupSliceNum = 1 // 请求池requestLoopDataPool分组,每组多少个
let requestLoopGroupSliceRes = [] // 分组结果 let requestLoopGroupSliceRes = [] // 分组结果
let requestLoopVaribleCache = {} // 每一批(一批多组)轮询的变量数据缓存。 let requestLoopVaribleCache = {} // 每一批(一批多组)轮询的变量数据缓存。
// 背景是同一个变量,可能会在多个组都有请求,后面的请求拿到的结果可能跟前面拿到的结果不一致,导致明明同一个变量,但是显示不同的值 // 背景是同一个变量,可能会在多个组都有请求,后面的请求拿到的结果可能跟前面拿到的结果不一致,导致明明同一个变量,但是显示不同的值
// 这里的处理是同一批次的请求,每个变量只取第一次的结果 // 这里的处理是同一批次的请求,每个变量只取第一次的结果
// 关于isSameGroupCount
// 这部分逻辑是为了处理:组件有多个变量,但是这些变量被分到了不同的请求组
// 比如A组件有10个变量,请求分为2个一组,则变量被分到了5个不同的组,只有这个5个请求都完成了才表示这个组件的数据都拿到了
// 一般出现在每一组的边界且需要用到DataList属性的组件(动态文本、图片、状态灯)
// 添加定时器 // 添加定时器
var timer1 = null var timer1 = null
var app = { var app = {
...@@ -315,8 +320,7 @@ function nodeCLick(e, treeId, treeNode, type) { ...@@ -315,8 +320,7 @@ function nodeCLick(e, treeId, treeNode, type) {
appTips.errorMsg(res.data.msg) appTips.errorMsg(res.data.msg)
return return
} }
// console.log(treeNode.id)
// console.log(warpList)
if (treeNode.id !== warpList[warpList.length - 1]) { if (treeNode.id !== warpList[warpList.length - 1]) {
if (warpList.length > 2) { if (warpList.length > 2) {
warpList.splice(0, 1) warpList.splice(0, 1)
...@@ -944,7 +948,7 @@ function startRequestLoop() { ...@@ -944,7 +948,7 @@ function startRequestLoop() {
// 每一轮都把标记清除 // 每一轮都把标记清除
requestLoopVaribleCache = {} requestLoopVaribleCache = {}
Object.values(Controls.dataPoolMap).forEach(item => { Object.values(Controls.dataPoolMap).forEach(item => {
item.isHasMeetVariable = false item.isSameGroupCount = 0
}) })
// 使用await等待前一组完成,再进行下一组,且利用requestLoopStopFlag控制每一批(一批多个组)完成才能进行下一批 // 使用await等待前一组完成,再进行下一组,且利用requestLoopStopFlag控制每一批(一批多个组)完成才能进行下一批
...@@ -1390,9 +1394,6 @@ function handleRequestDataPie(item, index) { ...@@ -1390,9 +1394,6 @@ function handleRequestDataPie(item, index) {
// 渲染动态图片、动态文本 // 渲染动态图片、动态文本
function loopRenderImage(poolData, resData, label) { function loopRenderImage(poolData, resData, label) {
if(poolData.isHasMeetVariable) {
return
}
let labelMap = { let labelMap = {
dynamictext: 'num', dynamictext: 'num',
image: 'presetText' image: 'presetText'
...@@ -1410,9 +1411,17 @@ function loopRenderImage(poolData, resData, label) { ...@@ -1410,9 +1411,17 @@ function loopRenderImage(poolData, resData, label) {
let itemResData = JSON.parse(resData[key]) let itemResData = JSON.parse(resData[key])
let itemValue = itemResData && itemResData[dlItem.variable] let itemValue = itemResData && itemResData[dlItem.variable]
// 每找到一个对应的变量值,加1
// 搜索"关于isSameGroupCount"查看说明
if (!poolData.isSameGroupCount) {
poolData.isSameGroupCount = 1
} else {
poolData.isSameGroupCount++
}
// 取对应变量缓存过的值 // 取对应变量缓存过的值
let cacheKey = `${dlItem.CheckData.equipmentId || dlItem.CheckData.equipmentid}-${dlItem.CheckData.id}` let cacheKey = `${dlItem.CheckData.equipmentId || dlItem.CheckData.equipmentid}-${dlItem.CheckData.id}`
if(requestLoopVaribleCache[cacheKey] === undefined) { if (requestLoopVaribleCache[cacheKey] === undefined) {
requestLoopVaribleCache[cacheKey] = itemValue requestLoopVaribleCache[cacheKey] = itemValue
} else { } else {
itemValue = requestLoopVaribleCache[cacheKey] itemValue = requestLoopVaribleCache[cacheKey]
...@@ -1428,12 +1437,15 @@ function loopRenderImage(poolData, resData, label) { ...@@ -1428,12 +1437,15 @@ function loopRenderImage(poolData, resData, label) {
(flag === '!=' && itemValue != dlItem[labelMap[label]]) (flag === '!=' && itemValue != dlItem[labelMap[label]])
) )
if(isMeet && !flagItem) { if (isMeet && !flagItem) {
flagItem = dlItem flagItem = dlItem
} }
}) })
if (!flagItem) { if (!flagItem) {
if (poolData.isSameGroupCount !== poolData.DataList.length) {
return
}
// 给默认值 // 给默认值
if (label === 'image') { if (label === 'image') {
$(`#image-img${poolData.dataPoolMapIndex}`).attr('src', poolData.DefaultImg) $(`#image-img${poolData.dataPoolMapIndex}`).attr('src', poolData.DefaultImg)
...@@ -1442,7 +1454,6 @@ function loopRenderImage(poolData, resData, label) { ...@@ -1442,7 +1454,6 @@ function loopRenderImage(poolData, resData, label) {
$(`#dynamictext-text${poolData.dataPoolMapIndex}`).text(poolData.DefaultText) $(`#dynamictext-text${poolData.dataPoolMapIndex}`).text(poolData.DefaultText)
$(`#dynamictext-text${poolData.dataPoolMapIndex}`).css('color', poolData.DefaultColor) $(`#dynamictext-text${poolData.dataPoolMapIndex}`).css('color', poolData.DefaultColor)
} }
return
} }
// 只要有一个满足条件,则渲染该条件 // 只要有一个满足条件,则渲染该条件
...@@ -1453,22 +1464,14 @@ function loopRenderImage(poolData, resData, label) { ...@@ -1453,22 +1464,14 @@ function loopRenderImage(poolData, resData, label) {
$(`#dynamictext-text${poolData.dataPoolMapIndex}`).text(flagItem.presetText) $(`#dynamictext-text${poolData.dataPoolMapIndex}`).text(flagItem.presetText)
$(`#dynamictext-text${poolData.dataPoolMapIndex}`).css('color', flagItem.backColor) $(`#dynamictext-text${poolData.dataPoolMapIndex}`).css('color', flagItem.backColor)
} }
poolData.isHasMeetVariable = true
} }
// 渲染矩形、圆形状态灯 label: commonlamp矩形状态灯 ellipselamp圆形状态灯 // 渲染矩形、圆形状态灯 label: commonlamp矩形状态灯 ellipselamp圆形状态灯
function loopRenderLamp(poolData, resData, label) { function loopRenderLamp(poolData, resData, label) {
if(poolData.isHasMeetVariable) {
return
}
let flagItem = null let flagItem = null
let isSameGroup = true
poolData.DataList.forEach((dlItem, dlIndex) => { poolData.DataList.forEach((dlItem, dlIndex) => {
let key = `${poolData.dataPoolMapIndex}-${dlIndex}-${dlItem.variable}` let key = `${poolData.dataPoolMapIndex}-${dlIndex}-${dlItem.variable}`
// 只要DataList中有一个变量没有在resData找到对应的key,则说明这个组件的请求数据不是在同一组的 // 只要DataList中有一个变量没有在resData找到对应的key,则说明这个组件的请求数据不是在同一组的
if (!resData.hasOwnProperty(key) || Object.prototype.toString.call(JSON.parse(resData[key])) !== '[object Object]') { if (!resData.hasOwnProperty(key) || Object.prototype.toString.call(JSON.parse(resData[key])) !== '[object Object]') {
isSameGroup = false isSameGroup = false
...@@ -1478,16 +1481,23 @@ function loopRenderLamp(poolData, resData, label) { ...@@ -1478,16 +1481,23 @@ function loopRenderLamp(poolData, resData, label) {
let itemResData = JSON.parse(resData[key]) let itemResData = JSON.parse(resData[key])
let itemValue = itemResData && itemResData[dlItem.variable] let itemValue = itemResData && itemResData[dlItem.variable]
// 每找到一个对应的变量值,加1
// 搜索"关于isSameGroupCount"查看说明
if (!poolData.isSameGroupCount) {
poolData.isSameGroupCount = 1
} else {
poolData.isSameGroupCount++
}
// 取对应变量缓存过的值 // 取对应变量缓存过的值
let cacheKey = `${dlItem.CheckData.equipmentId || dlItem.CheckData.equipmentid}-${dlItem.CheckData.id}` let cacheKey = `${dlItem.CheckData.equipmentId || dlItem.CheckData.equipmentid}-${dlItem.CheckData.id}`
if(requestLoopVaribleCache[cacheKey] === undefined) { if (requestLoopVaribleCache[cacheKey] === undefined) {
requestLoopVaribleCache[cacheKey] = itemValue requestLoopVaribleCache[cacheKey] = itemValue
} else { } else {
itemValue = requestLoopVaribleCache[cacheKey] itemValue = requestLoopVaribleCache[cacheKey]
} }
let flag = transFlag(dlItem.flag) let flag = transFlag(dlItem.flag)
let isMeet = ( let isMeet = (
(flag === '=' && itemValue == dlItem.num) || (flag === '=' && itemValue == dlItem.num) ||
(flag === '>=' && itemValue >= dlItem.num) || (flag === '>=' && itemValue >= dlItem.num) ||
...@@ -1503,6 +1513,9 @@ function loopRenderLamp(poolData, resData, label) { ...@@ -1503,6 +1513,9 @@ function loopRenderLamp(poolData, resData, label) {
}) })
if (!flagItem) { if (!flagItem) {
if (poolData.isSameGroupCount !== poolData.DataList.length) {
return
}
// 给默认颜色、闪烁 // 给默认颜色、闪烁
$(`#${label}${poolData.dataPoolMapIndex}`).css('background-color', poolData.DefaultColor) $(`#${label}${poolData.dataPoolMapIndex}`).css('background-color', poolData.DefaultColor)
if (poolData.DefaultFlashing) { // 默认闪烁 if (poolData.DefaultFlashing) { // 默认闪烁
...@@ -1515,13 +1528,11 @@ function loopRenderLamp(poolData, resData, label) { ...@@ -1515,13 +1528,11 @@ function loopRenderLamp(poolData, resData, label) {
// 只要有一个满足条件,则渲染该条件的颜色 // 只要有一个满足条件,则渲染该条件的颜色
$(`#${label}${poolData.dataPoolMapIndex}`).css('background-color', flagItem.backColor) $(`#${label}${poolData.dataPoolMapIndex}`).css('background-color', flagItem.backColor)
if(flagItem.flashing) { if (flagItem.flashing) {
$(`#${label}${poolData.dataPoolMapIndex}`).addClass('animated-flash') $(`#${label}${poolData.dataPoolMapIndex}`).addClass('animated-flash')
} else { } else {
$(`#${label}${poolData.dataPoolMapIndex}`).removeClass('animated-flash') $(`#${label}${poolData.dataPoolMapIndex}`).removeClass('animated-flash')
} }
poolData.isHasMeetVariable = true
} }
// 把有DataList的组件的请求数据推到请求池 // 把有DataList的组件的请求数据推到请求池
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment