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
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 |
|
} |