diff --git a/ruoyi-admin/src/main/resources/templates/scada/NorthFoamerMesPlan2.html b/ruoyi-admin/src/main/resources/templates/scada/NorthFoamerMesPlan2.html index c050c61..f622f0f 100644 --- a/ruoyi-admin/src/main/resources/templates/scada/NorthFoamerMesPlan2.html +++ b/ruoyi-admin/src/main/resources/templates/scada/NorthFoamerMesPlan2.html @@ -398,11 +398,11 @@ } const planInfo = new AutoScrollTable(document.getElementById("bottom-left"), [], { - width: [null, "7%", "5%", "5%", "8%", "5%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%"], + width:["5%", null, "7%", "5%", "5%", "5%", "5%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%"], }) const planInfo2 = new AutoScrollTable(document.getElementById("bottom-left-2"), [], { - width: [ null, "7%", "5%", "5%", "8%", "5%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%"], + width: ["5%", null, "7%", "5%", "5%", "5%", "5%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%"], }) function updateStatus(id, status) { @@ -449,7 +449,7 @@ let totle = (arr, i) => { return arr.map((e, index) => { if (index !== 0) { - return e[i] + return e[i + 1] } else { return 0 } diff --git a/ruoyi-admin/src/main/resources/templates/scada/SouthFoamerMesPlan.html b/ruoyi-admin/src/main/resources/templates/scada/SouthFoamerMesPlan.html index 8cc94dc..45b2021 100644 --- a/ruoyi-admin/src/main/resources/templates/scada/SouthFoamerMesPlan.html +++ b/ruoyi-admin/src/main/resources/templates/scada/SouthFoamerMesPlan.html @@ -380,11 +380,11 @@ } const planInfo = new AutoScrollTable(document.getElementById("bottom-left"), [], { - width: ["5%", null, "7%", "5%", "5%", "5%", "8%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%"], + width:["5%", null, "7%", "5%", "5%", "5%", "5%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%"], }) const planInfo2 = new AutoScrollTable(document.getElementById("bottom-left-2"), [], { - width: ["5%", null, "7%", "5%", "5%", "5%", "8%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%"], + width:["5%", null, "7%", "5%", "5%", "5%", "5%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%", "4.2%"], }) function updateStatus(id, status) { @@ -424,72 +424,82 @@ updateSplitBlocks(p[i], selectors[i]) } }) - - autoUpdate('/system/FoamerMes/getPlanHourInfo', INTERVAL, data => { - // orderInf.loadData(data, Object.keys(orderInfColumns)) - let consolidatedRow = ["", "合计", ""] - - for (let i = 3; i < 19; i++) { - if (i === 6) { - consolidatedRow.push(`${(consolidatedRow[5] / consolidatedRow[4] * 100).toFixed(1)}%`) - continue + let filter = (arr, key, value, key2) => { + return arr.filter(e => e[key] === value)?.[0]?.[key2] + } + let totle = (arr, i) => { + return arr.map((e, index) => { + if (index !== 0) { + return e[i + 1] + } else { + return 0 } - - let sum = 0 - - for (let j = 1; j < data.length; j++) { - let d = data[j][i] - if (!d || d === '') { - continue - } - if (typeof d === 'string') { - d = parseInt(d) + }).reduce((a, b) => a + b) + } + autoUpdate('/system/FoamerMes/getPlanHourInfo', INTERVAL, data => { + let name = {} + let dataInit = [] + let title = ['编号', '型号', '状态', '目标', '计划', '累计', '达成率', '8:00', '9:00', '10:00', '11:00', '12:00', '13:00', '14:00', '15:00', '16:00', '17:00', '18:00', '19:00'] + let dataA = [title] + let dataB = [title] + data.forEach(e => { + if (!Object.keys(name).includes(e.orderType)) { + name[e.orderType] = [e.deviceID] + } else { + let arr = name[e.orderType] + if (!arr.includes(e.deviceID)) { + arr.push(e.deviceID) + name[e.orderType] = arr } - - sum += d } - - consolidatedRow.push(sum.toString()) - } - - data.push(consolidatedRow) - - planInfo.loadData(data, 19, { - includeHead: true, }) - //data.map(value => [value.orderType, value.plannedProduction, value.actualProduction, value.plannedProduction - value.actualProduction, `${(value.actualProduction / value.plannedProduction * 100).toFixed(2)}%`] - }) - - autoUpdate('/system/FoamerMes/getPlanHourInfo2', INTERVAL, data => { - // orderInf.loadData(data, Object.keys(orderInfColumns)) - let consolidatedRow = ["", "合计", ""] - - for (let i = 3; i < 19; i++) { - if (i === 6) { - consolidatedRow.push(`${(consolidatedRow[5] / consolidatedRow[4] * 100).toFixed(1)}%`) - continue + Object.keys(name).forEach(e => { + name[e].forEach(val => { + let arr = [] + data.forEach(item => { + if (item.orderType === e && item.deviceID === val) { + arr.push(item) + } + }) + dataInit.push(arr) + }) + }) + let i = [] + dataInit.forEach((e,index)=> { + if(e[0].orderType === '其他型号'){ + i.push(index) } - - let sum = 0 - - for (let j = 1; j < data.length; j++) { - let d = data[j][i] - if (!d || d === '') { - continue - } - if (typeof d === 'string') { - d = parseInt(d) - } - - sum += d + }) + i.forEach((e,index) => { + let a = dataInit.splice(e-index,1) + console.log(a) + dataInit.push(...a) + }) + console.log(dataInit) + dataInit.forEach((val, index) => { + if (index < 6) { + let arr = val + let plannedProduction = arr.map(e => e.plannedProduction).reduce((a, b) => a + b) || 0 + let actualProduction = arr.map(e => e.actualProduction).reduce((a, b) => a + b) || 0 + dataA.push([val[0].deviceID, val[0].orderType.split(',')[0], '正常', arr[0].target, plannedProduction, actualProduction, plannedProduction === 0 ? '0%' : ((actualProduction / plannedProduction) * 100).toString().substr(0, 5) + '%', filter(arr, 'recordTime', 8, 'actualProduction') || 0, filter(arr, 'recordTime', 9, 'actualProduction') || 0, filter(arr, 'recordTime', 10, 'actualProduction') || 0, filter(arr, 'recordTime', 11, 'actualProduction') || 0, filter(arr, 'recordTime', 12, 'actualProduction') || 0, filter(arr, 'recordTime', 13, 'actualProduction') || 0, filter(arr, 'recordTime', 14, 'actualProduction') || 0, filter(arr, 'recordTime', 15, 'actualProduction') || 0, filter(arr, 'recordTime', 16, 'actualProduction') || 0, filter(arr, 'recordTime', 17, 'actualProduction') || 0, filter(arr, 'recordTime', 18, 'actualProduction') || 0, filter(arr, 'recordTime', 19, 'actualProduction') || 0]) + } else { + let arr = val + let plannedProduction = arr.map(e => e.plannedProduction).reduce((a, b) => a + b) || 0 + let actualProduction = arr.map(e => e.actualProduction).reduce((a, b) => a + b) || 0 + dataB.push([val[0].deviceID, val[0].orderType.split(',')[0], '正常', arr[0].target, plannedProduction, actualProduction, plannedProduction === 0 ? '0%' : ((actualProduction / plannedProduction) * 100).toString().substr(0, 5) + '%', filter(arr, 'recordTime', 8, 'actualProduction') || 0, filter(arr, 'recordTime', 9, 'actualProduction') || 0, filter(arr, 'recordTime', 10, 'actualProduction') || 0, filter(arr, 'recordTime', 11, 'actualProduction') || 0, filter(arr, 'recordTime', 12, 'actualProduction') || 0, filter(arr, 'recordTime', 13, 'actualProduction') || 0, filter(arr, 'recordTime', 14, 'actualProduction') || 0, filter(arr, 'recordTime', 15, 'actualProduction') || 0, filter(arr, 'recordTime', 16, 'actualProduction') || 0, filter(arr, 'recordTime', 17, 'actualProduction') || 0, filter(arr, 'recordTime', 18, 'actualProduction') || 0, filter(arr, 'recordTime', 19, 'actualProduction') || 0]) } + }) + dataA.push([' ', '合计', '', totle([...dataA], 2), totle([...dataA], 3), totle([...dataA], 4), totle(dataB, 3) === 0 ? '0%' : ((totle([...dataA], 4) / totle([...dataA], 3)) * 100).toString().substr(0, 5) + '%', totle([...dataA], 6), totle([...dataA], 7), totle([...dataA], 8), totle([...dataA], 9), totle([...dataA], 10), totle([...dataA], 11), totle([...dataA], 12), totle([...dataA], 13), totle([...dataA], 14), totle([...dataA], 15), totle([...dataA], 16), totle([...dataA], 17)]) + dataB.push([' ', '合计', '', totle([...dataB], 2), totle([...dataB], 3), totle([...dataB], 4), totle([...dataB], 3) === 0 ? '0%' : ((totle([...dataB], 4) / totle([...dataB], 3)) * 100).toString().substr(0, 5) + '%', totle([...dataB], 6), totle([...dataB], 7), totle([...dataB], 8), totle([...dataB], 9), totle([...dataB], 10), totle([...dataB], 11), totle([...dataB], 12), totle([...dataB], 13), totle([...dataB], 14), totle([...dataB], 15), totle([...dataB], 16), totle([...dataB], 17)]) - consolidatedRow.push(sum.toString()) - } - - data.push(consolidatedRow) - planInfo2.loadData(data, 19, { + planInfo.loadData([...dataA], 19, { + includeHead: true, + }) + if (dataB.length <= 2) { + dataB = dataA + } + planInfo2.loadData([...dataB], 19, { includeHead: true, }) })