大屏编辑器
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

174 lines
4.2 KiB

import { http } from "@/api/http";
import { ModuleTypeEnum, RequestHttpEnum } from "@/enums/httpEnum";
import { ProjectDetail } from "@/api/path/project";
import { getLocalStorage, httpErrorHandle } from "@/utils";
import { RequestDataSourceConfig } from '@/store/modules/chartEditStore/chartEditStore.d'
import { StorageEnum } from "@/enums/storageEnum";
import { SystemStoreEnum } from '@/store/modules/systemStore/systemStore.d'
import { SelectDataSourceTypeAPIObj } from "@/enums/dataSourceEnum";
/*
* 获取站点
*/
export const fetchDataSite = async (data: object) => {
try {
return await http(RequestHttpEnum.GET)<ProjectDetail>(`${ModuleTypeEnum.DATA}/get-site`)
} catch {
httpErrorHandle()
}
}
/*
* 获取设备
* @param data {
* siteId // 站点
* }
*/
export const fetchDataDevice = async (data: object) => {
try {
return await http(RequestHttpEnum.GET)<ProjectDetail>(`${ModuleTypeEnum.DATA}/get-entity`,data)
} catch {
httpErrorHandle()
}
}
/*
* 获取点位
* @param data {
* siteId // 站点
* entityId // 设备
* }
*/
export const fetchDataPoint = async (data: object) => {
try {
return await http(RequestHttpEnum.GET)<ProjectDetail>(`${ModuleTypeEnum.DATA}/get-point`, data)
} catch {
httpErrorHandle()
}
}
// {
// "queryType": 2,
// "site": "53",
// "width": "1d",
// "tenantId": 169,
// "interval":"1h",
// "points":[]
// }
/*
* 收益参数
* @param params {
* queryType = 2
* siteId // 站点
* entityId // 设备
* width = 1d
* tenantId
* interval
* points = []
* }
*/
export async function test (){
// const params = {
// "queryType": 1,
// "site": 56,
// "with": 30,
// "deviceSn": 454,
// "points": [
// 4,
// 7
// ],
// "tenantId": 169
// }
const params = {
"queryType": 2,
"site": 56,
"with": "6h",
"interval": "20m",
"points": [],
"tenantId": 169
}
try {
return await http(RequestHttpEnum.POST)<ProjectDetail>(`${ModuleTypeEnum.DATA}/get-by-iot`, params)
} catch {
httpErrorHandle()
}
}
function getPointParams(requestSource: RequestDataSourceConfig) {
let params:any = {
queryType: SelectDataSourceTypeAPIObj[requestSource.dataSourceType],
site: requestSource.station,
width: requestSource.recentTimeRange,
deviceSn: requestSource.device.split('|')[0],
deviceType: requestSource.device.split('|')[1],
points: requestSource.points,
tenantId: getToken()
}
return params
}
function getEarningParams(requestSource: RequestDataSourceConfig) {
let params: any = {
queryType: SelectDataSourceTypeAPIObj[requestSource.dataSourceType],
site: requestSource.station,
width: requestSource.recentTimeRange,
interval: '20m',
points: [],
tenantId: getToken()
}
return params
}
export const fetchDataByIot = async (requestSource: RequestDataSourceConfig) => {
if (!requestSource.station) return
let params:any = {}
if(requestSource.dataSourceType === 'point') {
params = getPointParams(requestSource)
} else if(requestSource.dataSourceType === 'earning') {
params = getEarningParams(requestSource)
}
try {
const res = await http(RequestHttpEnum.POST)<ProjectDetail>(`${ModuleTypeEnum.DATA}/get-by-iot`, params) as any
let keyMap: any = []
if (requestSource.dataSourceType === 'point') {
keyMap = Object.fromEntries(
requestSource.pointsInfo.map(p => [p.columnName, p.nameCn])
)
} else if(requestSource.dataSourceType === 'earning'){
keyMap = {
'sum(earning)': '收益'
}
}
res.data.dimensions = res.data.dimensions.map((key:string) => keyMap[key] || key)
res.data.source = res.data.source.map((item:any) => {
const newItem: Record<string, any> = {}
for (const key in item) {
newItem[keyMap[key] || key] = item[key]
}
return newItem
}) ?? []
return res
// await specialCustomizeHttp({
// url: `${ModuleTypeEnum.DATA}/get-by-iot`,
// method: 'POST',
// params
// })
} catch {
// httpErrorHandle()
}
}
function getToken() {
const info = getLocalStorage(StorageEnum.GO_SYSTEM_STORE)
return info ? info[SystemStoreEnum.TENANT_INFO]['tenantId'] : undefined
}