import React, { useEffect, useState } from 'react'; import { connect } from 'react-redux'; import { Spin, Card, Modal, Select, Carousel, Progress } from 'antd'; import moment from 'moment' import ReactECharts from 'echarts-for-react'; import './index.less' const Capacity = ({ actions, dispatch, siteList, }) => { const { bigScreen } = actions const [pageLeft, setPageLeft] = useState(0) //左边翻页 const [pageRight, setPageRight] = useState(0) //左边翻页 // const [siteList, setSiteList] = useState([]) //站点列表 const [pumpList, setPumpList] = useState([]) //水泵列表 const [strucId, setStrucId] = useState() //站点ID const [pumpId, setPumpId] = useState([]) //水泵id const [usePumpId, setUsePumpId] = useState([]) //水泵id const [pumpData, setPumpData] = useState([]) //水泵数据 const [cabinetData, setCabinetData] = useState([]) //进线柜数据 const [centreData, setCentreData] = useState({}) //中间数据 const [depthWater, setDepthWater] = useState([]) //液位趋势 const [electricityTrend, setElectricityTrend] = useState([]) //电流趋势 const [useTrend, setUseTrend] = useState([]) //用电趋势 useEffect(() => { setStrucId(siteList[0]?.value) }, [siteList]) useEffect(async () => { let pump = [] let cabinetSun = [] let sun = {} let day1 = 0 let day30 = 0 let day365 = 0 let daySun = 0 if (strucId) { await dispatch(bigScreen.axyData({ type: 'get', url: `structures/${strucId}/factors` })).then(async r => { if (r.success) { //水泵信息 let waterId = r.payload.data?.find(v => v.name == '泵站水泵')?.id if (waterId) { await dispatch(bigScreen.axyData({ type: 'get', url: `structures/${strucId}/stations`, params: { query: { factorId: waterId } } })).then(async p => { if (p.success) { let dataId = [] let voltageId = [] p.payload.data?.map(v => { v.groups?.map(s => { s.stations?.map(f => { dataId.push(f.id) if (voltageId?.length < 3) { voltageId.push(f.id) } }) }) }) setPumpList(p.payload.data[0]?.groups[0]?.stations) setPumpId(voltageId) setUsePumpId(voltageId) if (dataId.length) { // 当前时间 await dispatch(bigScreen.axyData({ type: 'get', url: `stations/theme/data`, params: { query: { stations: dataId.join(), startTime: moment().startOf('day').format('YYYY-MM-DD HH:mm:ss'), endTime: moment().endOf('day').format('YYYY-MM-DD HH:mm:ss'), limit: 1 } } })).then(d => { if (d.success) { pump = d.payload.data?.stations || [] d.payload.data?.stations?.map(f => { daySun += f?.data[0]?.eMotor_EQ }) } }) // 今天 await dispatch(bigScreen.axyData({ type: 'get', url: `stations/data/theme`, params: { query: { stations: dataId.join(), begin: moment().startOf('day').format('x'), end: moment().endOf('day').format('x'), aggtype: "h", method: 'diff' } } })).then(d => { if (d.success) { d.payload.data[0]?.stations.map(f => { f.data?.map(h => { if (!h.changData) { day1 += h.values.eMotor_EQ } }) }) } }) // 本月 await dispatch(bigScreen.axyData({ type: 'get', url: `stations/data/theme`, params: { query: { stations: dataId.join(), begin: moment().startOf('month').format('x'), end: moment().endOf('month').format('x'), aggtype: "d", method: 'diff' } } })).then(d => { if (d.success) { d.payload.data[0]?.stations.map(f => { f.data?.map(h => { if (!h.changData) { day30 += h.values.eMotor_EQ } }) }) } }) // 今年 await dispatch(bigScreen.axyData({ type: 'get', url: `stations/data/theme`, params: { query: { stations: dataId.join(), begin: moment().startOf('year').format('x'), end: moment().endOf('year').format('x'), aggtype: "d", method: 'diff' } } })).then(d => { if (d.success) { d.payload.data[0]?.stations.map(f => { f.data?.map(h => { if (!h.changData) { day365 += h.values.eMotor_EQ } }) }) } }) } } }) } //进线柜 let wireCabinetId = r.payload.data?.find(v => v.name == '泵站进线柜')?.id if (wireCabinetId) { await dispatch(bigScreen.axyData({ type: 'get', url: `structures/${strucId}/stations`, params: { query: { factorId: wireCabinetId } } })).then(async p => { if (p.success) { let dataId = [] p.payload.data?.map(v => { v.groups?.map(s => { s.stations?.map(f => { dataId.push(f.id) }) }) }) if (dataId.length) { // // 当前时间 await dispatch(bigScreen.axyData({ type: 'get', url: `stations/theme/data`, params: { query: { stations: dataId.join(), startTime: moment().startOf('day').format('YYYY-MM-DD HH:mm:ss'), endTime: moment().endOf('day').format('YYYY-MM-DD HH:mm:ss'), limit: 1 } } })).then(d => { if (d.success) { d.payload.data?.stations?.map(f => { daySun += f?.data[0]?.eQF_EQ cabinetSun.push({ today: 0, sameMonth: 0, thisYear: 0, eQF_EQ: f?.data[0]?.eQF_EQ, id: f.id, name: f.name, sQF_CLOSING: f?.data[0]?.sQF_CLOSING }) }) } }) // 今天 await dispatch(bigScreen.axyData({ type: 'get', url: `stations/data/theme`, params: { query: { stations: dataId.join(), begin: moment().startOf('day').format('x'), end: moment().endOf('day').format('x'), aggtype: "h", method: 'diff' } } })).then(d => { if (d.success) { cabinetSun.forEach(p => { d.payload.data[0]?.stations.map(f => { if (p.id == f.id) { f.data?.map(h => { if (!h.changData) { p.today = p.today + h.values.eQF_EQ p.sameMonth = p.sameMonth + h.values.eQF_EQ p.thisYear = p.thisYear + h.values.eQF_EQ day1 += h.values.eQF_EQ } }) } }) }) } }) // 本月 await dispatch(bigScreen.axyData({ type: 'get', url: `stations/data/theme`, params: { query: { stations: dataId.join(), begin: moment().startOf('month').format('x'), end: moment().endOf('month').format('x'), aggtype: "d", method: 'diff' } } })).then(d => { if (d.success) { cabinetSun.forEach(p => { d.payload.data[0]?.stations.map(f => { if (p.id == f.id) { f.data?.map(h => { if (!h.changData) { p.sameMonth = p.sameMonth + h.values.eQF_EQ day30 += h.values.eQF_EQ } }) } }) }) } }) // 今年 await dispatch(bigScreen.axyData({ type: 'get', url: `stations/data/theme`, params: { query: { stations: dataId.join(), begin: moment().startOf('year').format('x'), end: moment().endOf('year').format('x'), aggtype: "d", method: 'diff' } } })).then(d => { if (d.success) { // year = d.payload.data[0]?.stations cabinetSun.forEach(p => { d.payload.data[0]?.stations.map(f => { if (p.id == f.id) { f.data?.map(h => { if (!h.changData) { p.thisYear = p.thisYear + h.values.eQF_EQ day365 += h.values.eQF_EQ } }) } }) }) } }) } } }) } //泵站信息 let informationId = r.payload.data?.find(v => v.name == '泵站信息')?.id if (informationId) { await dispatch(bigScreen.axyData({ type: 'get', url: `structures/${strucId}/stations`, params: { query: { factorId: informationId } } })).then(async p => { if (p.success) { await dispatch(bigScreen.axyData({ type: 'get', url: `stations/theme/data`, params: { query: { stations: p.payload.data[0]?.groups[0]?.stations[0]?.id, startTime: moment().startOf('day').format('YYYY-MM-DD HH:mm:ss'), endTime: moment().endOf('day').format('YYYY-MM-DD HH:mm:ss'), limit: 1 } } })).then(d => { if (d.success) { sun.sHumidity = d.payload.data?.stations[0]?.data[0]?.sHumidity sun.sTEMP = d.payload.data?.stations[0]?.data[0]?.sTEMP sun.sGrille_level = d.payload.data?.stations[0]?.data[0]?.sGrille_level } }) // 液位趋势 await dispatch(bigScreen.axyData({ type: 'get', url: `stations/theme/data`, params: { query: { stations: p.payload.data[0]?.groups[0]?.stations[0]?.id, startTime: moment().add(-6, 'hours').format('YYYY-MM-DD HH:mm:ss'), endTime: moment().format('YYYY-MM-DD HH:mm:ss'), limit: 1440 } } })).then(d => { if (d.success) { setDepthWater(d.payload.data?.stations[0]?.data) } }) } }) } } }) } setPumpData(pump) setCabinetData(cabinetSun) //计算各个阶段的总点电量 sun.day1 = day1 sun.day30 = day30 + day1 sun.day365 = day365 + day1 sun.daySun = daySun setPageLeft(0) setPageRight(0) setCentreData(sun) }, [strucId]) useEffect(async () => { if (pumpId?.length > 0) { //电流趋势 await dispatch(bigScreen.axyData({ type: 'get', url: `stations/theme/data`, params: { query: { stations: pumpId?.join(), startTime: moment().add(-6, 'hours').format('YYYY-MM-DD HH:mm:ss'), endTime: moment().format('YYYY-MM-DD HH:mm:ss'), limit: 1440 } } })).then(d => { if (d.success) { setElectricityTrend(d.payload.data?.stations) } }) } }, [pumpId]) useEffect(async () => { if (usePumpId?.length > 0) { //电流趋势 await dispatch(bigScreen.axyData({ type: 'get', url: `stations/theme/data`, params: { query: { stations: usePumpId?.join(), startTime: moment().add(-6, 'hours').format('YYYY-MM-DD HH:mm:ss'), endTime: moment().format('YYYY-MM-DD HH:mm:ss'), limit: 1440 } } })).then(d => { if (d.success) { setUseTrend(d.payload.data?.stations) } }) } }, [usePumpId]) return