@jdlinker/linker
Version:
jdLinker 系统模块
814 lines (725 loc) • 21.2 kB
text/typescript
import { LocalStore, TOKEN_KEY, BASE_API_PATH } from '@jdlinker/utils';
import { defHttp, useMessage } from '@jdlinker/func';
import { DeviceInstance } from '../../views/device/Instance/typings';
import { DeviceMetadata, UnitType } from '../../views/device/Product/typings';
const { createConfirm } = useMessage();
/**
* 重置设备继承产品的物模型规则
* @param deviceId 设备ID
* @param productId 产品ID
*/
export const resetRule = (productId: string, deviceId: string, data: any) =>
defHttp.delete({
url: `/virtual/property/product/${productId}/${deviceId}/_batch`,
data
});
/**
* 删除设备物模型
* @param deviceId 设备ID
* @returns
*/
export const deleteMetadata = (deviceId: string) => defHttp.delete({ url: `/device/instance/${deviceId}/metadata` });
/**
* 保存设备物模型
* @param id 设备ID
* @param data 物模型
* @returns
*/
export const saveMetadata = (id: string, data: DeviceMetadata) =>
defHttp.put({ url: `/device/instance/${id}/metadata`, data }, { isTransformResponse: false });
/**
* 根据设备ID获取设备详情
* @param id 设备ID
* @returns 设备详情
*/
export const detail = (id: string) => defHttp.get({ url: `/device/instance/${id}/detail` }, { isTransformResponse: false });
/**
* 查询数据
* @param data 分页搜索数据
* @returns
*/
export const query = (data: any) => {
const params = { ...data };
return defHttp.post({ url: '/device/instance/list', data, params }, { isTransformResponse: false });
};
export const queryDeviceList = (data?: Record<string, any>) =>
defHttp.post({ url: '/device/instance/list', data }, { isTransformResponse: false });
/**
* 不分页查询设备
* @param data
* @returns
*/
export const queryNoPagingPost = (data?: Record<string, any>) =>
defHttp.post({ url: '/device/instance/_query/no-paging?paging=false', data });
/**
* 删除单个
*/
export const deleteOne = (params, handleSuccess) => {
return defHttp.delete({ url: '/device/instance/delete', params }, { joinParamsToUrl: true }).then(() => {
handleSuccess();
});
};
/**
* 批量删除
* @param params
*/
export const batchDelete = (params, handleSuccess) => {
createConfirm({
iconType: 'warning',
title: '确认删除',
content: '是否删除选中数据',
okText: '确认',
cancelText: '取消',
onOk: () => {
return defHttp.delete({ url: '/device/instance/deleteBatch', data: params }, { joinParamsToUrl: true }).then(() => {
handleSuccess();
});
}
});
};
/**
* 删除设备
* @param id 设备ID
* @returns
*/
export const _delete = (id: string) => defHttp.delete({ url: `/device/instance/${id}` });
/**
* 启用设备
* @param id 设备ID
* @returns
*/
export const _deploy = (id: string) =>
defHttp.post({ url: `/device/instance/${id}/deploy` }, { isTransformResponse: false });
/**
* 禁用设备
* @param id 设备ID
* @returns
*/
export const _undeploy = (id: string) => defHttp.post({ url: `/device/instance/${id}/undeploy` });
/**
* 批量激活设备
* @param data 设备id数组
* @returns
*/
export const batchDeployDevice = (data: string[]) => defHttp.put({ url: `/device/instance/batch/_deploy`, data });
/**
* 批量注销设备
* @param data 设备id数组
* @returns
*/
export const batchUndeployDevice = (data: string[]) => defHttp.put({ url: `/device/instance/batch/_unDeploy`, data });
/**
* 批量删除
* @param data 设备id数组
* @returns
*/
export const batchDeleteDevice = (data: string[]) => defHttp.put({ url: `/device/instance/batch/_delete`, data });
/**
* 下载设备模板
* @param productId 产品id
* @param type 文件类型
* @returns
*/
export const deviceTemplateDownload = (productId: string, type: string) =>
`${BASE_API_PATH}/device/instance/${productId}/template.${type}`;
export const templateDownload = (productId: string, type: string) =>
defHttp.get({ url: `/device/instance/${productId}/template.${type}` });
/**
* 设备导入
* @param productId 产品id
* @param fileUrl
* @param autoDeploy
* @returns
*/
export const deviceImport = (productId: string, fileUrl: string, autoDeploy: boolean) =>
`${BASE_API_PATH}/device/instance/${productId}/import?fileUrl=${fileUrl}&autoDeploy=${autoDeploy}&:X_Access_Token=${LocalStore.get(
TOKEN_KEY
)}`;
/**
* 设备导出
* @param productId 产品id
* @param type 文件类型
* @returns
*/
export const deviceExport = (productId: string, type: string, params?: any) =>
defHttp.get(
{
url: `/device/instance${!!productId ? `/${productId}` : ''}/export.${type}`,
params,
responseType: 'blob'
},
{ isTransformResponse: false }
);
/**
* 验证设备ID是否重复
* @param id 设备id
* @returns
*/
export const isExists = (id: string) =>
defHttp.get({ url: `/device/instance/${id}/exists` }, { isTransformResponse: false });
/**
* 修改设备信息
* @param data 设备信息
* @returns
*/
export const update = (data: Partial<DeviceInstance>) =>
data.id ? defHttp.put({ url: `/device/instance`, data }) : defHttp.post({ url: `/device/instance`, data });
/**
* 修改设备信息
* @param id 设备id
* @param data 设备信息
* @returns
*/
export const modify = (id: string, data: Partial<DeviceInstance>) =>
defHttp.put({ url: `/device/instance/${id}`, data }, { isTransformResponse: false });
/**
* 获取配置信息
* @param id 设备id
* @returns
*/
export const getConfigMetadata = (id: string) =>
defHttp.get({ url: `/device/instance/${id}/config-metadata` }, { isTransformResponse: false });
/**
* 断开连接
* @param id 设备id
* @returns
*/
export const _disconnect = (id: string) => defHttp.post({ url: `/device/instance/${id}/disconnect` });
/**
* 查询用户列表
* @returns
*/
export const queryUserListNoPaging = () => {
const params = {
paging: false,
sorts: [{ name: 'name', order: 'asc' }]
};
return defHttp.post({ url: `/user/_query/no-paging`, params });
};
/**
* 保存设备关系
* @param id 设备id
* @param data
* @returns
*/
export const saveRelations = (id: string, data: Record<string, any>) =>
defHttp.put({ url: `/device/instance/${id}/relations`, data });
/**
* 修改标签
* @param id 设备id
* @param data
* @returns
*/
export const saveTags = (id: string, data: Record<string, any>) => defHttp.put({ url: `/device/instance/${id}/tag`, data });
/**
* 删除标签
* @param deviceId 设备id
* @param id 标签id
* @returns
*/
export const delTags = (deviceId: string, id: string) => defHttp.delete({ url: `/device/instance/${deviceId}/tag/${id}` });
/**
* 恢复默认配置
* @param deviceId 设备id
* @returns
*/
export const configurationReset = (deviceId: string) =>
defHttp.put({ url: `/device/instance/${deviceId}/configuration/_reset` });
/**
* 查询事件详情列表
* @param deviceId 设备id
* @param eventId 事件id
* @param data
* @returns
*/
export const getEventList = (deviceId: string, eventId: string, data: Record<string, any>) => {
// if (data?.terms && data?.terms.length < 1) {
// delete data?.terms;
// }
return defHttp.post(
{ url: `/device/instance/${deviceId}/event/${eventId}?format=true`, data },
{ isTransformResponse: false }
);
};
/**
* 设置属性至设备
* @param deviceId 设备id
* @param data
* @returns
*/
export const setProperty = (deviceId: string, data: Record<string, any>) =>
defHttp.put({ url: `/device/instance/${deviceId}/property`, data });
/**
* 获取最新属性值
* @param deviceId 设备id
* @param type 属性id
* @returns
*/
export const getProperty = (deviceId: string, type: string) =>
defHttp.get({ url: `/device/standard/${deviceId}/property/${type}` }, { isTransformResponse: false });
/**
* 查询是否存在云端映射设备
*/
export const queryDeviceMapping = (deviceId: string, data?: any) =>
defHttp.post({
url: `/edge/operations/${deviceId}/device-mapping-list/invoke`,
data
});
/**
* 批量保存云端映射设备
*/
export const saveDeviceMapping = (deviceId: string, data: any) =>
defHttp.post({
url: `/edge/operations/${deviceId}/device-mapping-save-batch/invoke`,
data
});
/**
* 查询设备的物模型指标
* @param deviceId 设备id
* @param propertyId 属性id
* @returns
*/
export const queryMetric = (deviceId: string, propertyId: string) =>
defHttp.get({
url: `/device/instance/${deviceId}/metric/property/${propertyId}`
});
/**
*批量删除云端映射设备
*/
export const deleteDeviceMapping = (deviceId: string, data: any) =>
defHttp.post({
url: `/edge/operations/${deviceId}/device-mapping-delete-by-deviceid/invoke`,
data
});
/**
* 保存设备的物模型指标
* @param deviceId 设备id
* @param propertyId 属性id
* @param data
* @returns
*/
export const saveMetric = (deviceId: string, propertyId: string, data: Record<string, any>) =>
defHttp.put({
url: `/device/instance/${deviceId}/metric/property/${propertyId}`,
data
});
/**
* 解绑子设备
* @param deviceId 设备id
* @param childrenId 子设备id
* @param data
* @returns
*/
export const unbindDevice = (deviceId: string, childrenId: string, data: Record<string, any>) =>
defHttp.post({
url: `/device/gateway/${deviceId}/unbind/${childrenId}`,
data
});
/**
* 批量解绑子设备
* @param deviceId 设备id
* @param data
* @returns
*/
export const unbindBatchDevice = (deviceId: string, data: Record<string, any>) =>
defHttp.post({ url: `/device/gateway/${deviceId}/unbind`, data });
/**
* 子设备绑定
* @param deviceId 设备id
* @param data
* @returns
*/
export const bindDevice = (deviceId: string, data: Record<string, any>) =>
defHttp.post({ url: `/device/gateway/${deviceId}/bind`, data });
/**
* 获取产品列表
* @param data
*/
export const getProductListNoPage = (data: any) =>
defHttp.post({ url: '/device/product/_query/no-paging?paging=false', data });
/**
* 修改设备
*/
export const editDevice = (data: any) => defHttp.put({ url: '/device/instance', data });
/**
* 新增设备
*/
export const addDevice = (params: any) => defHttp.post({ url: '/device/instance', params });
/**
* 设备接入网关状态
* @param id 设备接入网关id
* @returns
*/
export const queryGatewayState = (id: string) =>
defHttp.get({ url: `/gateway/device/${id}/detail` }, { isTransformResponse: false });
/**
* 网络组件状态
* @param id 网络组件id
* @returns
*/
export const queryNetworkState = (id: string) =>
defHttp.get({ url: `/network/config/${id}` }, { isTransformResponse: false });
/**
* 产品状态
* @param id 产品id
* @returns
*/
export const queryProductState = (id: string) =>
defHttp.get({ url: `/device/product/${id}` }, { isTransformResponse: false });
/**
* 产品配置
* @param id 产品id
* @returns
*/
export const queryProductConfig = (id: string) =>
defHttp.get({ url: `/device/product/${id}/config-metadata` }, { isTransformResponse: false });
/**
* 设备配置
* @param id 设备id
* @returns
*/
export const queryDeviceConfig = (id: string) =>
defHttp.get({ url: `/device/instance/${id}/config-metadata` }, { isTransformResponse: false });
/**
* 查询协议
* @param type
* @param transport
* @returns
*/
export const queryProtocolDetail = (type: string, transport: string) =>
defHttp.get({ url: `/protocol/${type}/transport/${transport}` });
/**
* 网络组件启用
* @param id 网络组件ID
* @returns
*/
export const startNetwork = (id: string) => defHttp.post({ url: `/network/config/${id}/_start` });
/**
* 启用网关
* @param id 网关id
* @returns
*/
export const startGateway = (id: string) => defHttp.post({ url: `/gateway/device/${id}/_startup` });
/**
* 网关详情
* @param id 网关id
* @returns
*/
export const getGatewayDetail = (id: string) => defHttp.get({ url: `/gateway/device/${id}` });
/*
* 获取单位列表
* @returns 单位列表
*/
export const getUnit = () => defHttp.get<UnitType[]>({ url: `/protocol/units` });
/**
* 执行功能
* @param deviceId 设备id
* @param functionId 功能id
* @param data
* @returns
*/
export const executeFunctions = (deviceId: string, functionId: string, data: any) =>
defHttp.post({
url: `/device/invoked/${deviceId}/function/${functionId}`,
data
});
/**
* 读取属性
* @param deviceId 设备id
* @param data
* @returns
*/
export const readProperties = (deviceId: string, data: any) =>
defHttp.post({ url: `/device/instance/${deviceId}/properties/_read`, data });
/**
* 设置属性
* @param deviceId 设备id
* @param data
* @returns
*/
export const settingProperties = (deviceId: string, data: any) =>
defHttp.put({ url: `/device/instance/${deviceId}/property`, data });
/**
* 设备功能-执行
* @param id 设备id
* @param action
* @param data
* @returns
*/
export const execute = (id: string, action: string, data: any) =>
defHttp.post({ url: `/device/invoked/${id}/function/${action}`, data }, { isTransformResponse: false });
/**
* 查询通道列表不分页
* @param data
* @returns
*/
export const queryChannelNoPaging = (data: any) => defHttp.post({ url: `data-collect/channel/_query/no-paging`, data });
/**
* 查询采集器列表不分页
* @param data
* @returns
*/
export const queryCollectorNoPaging = (data: any) => defHttp.post({ url: `/data-collect/collector/_query/no-paging`, data });
/**
* 查询点位列表不分页
* @param data
* @returns
*/
export const queryPointNoPaging = (data: any) => defHttp.post({ url: `/data-collect/point/_query/no-paging`, data });
/**
* 查询映射列表
* @param thingType
* @param thingId
* @param params
* @returns
*/
export const queryMapping = (thingType: string, thingId: any, params?: any) =>
defHttp.get({
url: `/things/collector/${thingType}/${thingId}/_query`,
params
});
/**
* 删除映射
* @param thingType
* @param thingId
* @param data
* @returns
*/
export const removeMapping = (thingType: string, thingId: any, data?: any) =>
defHttp.post({
url: `/things/collector/${thingType}/${thingId}/_delete`,
data
});
/**
* 映射树
* @param data
* @returns
*/
export const treeMapping = (data?: any) => defHttp.post({ url: `/data-collect/channel/_all/tree`, data });
/**
* 保存映射
* @param thingId
* @param provider
* @param data
* @returns
*/
export const saveMapping = (thingId: any, provider: string, data?: any) =>
defHttp.put({ url: `/things/collector/device/${thingId}/${provider}`, data });
/**
* 查询边缘网关通道
* @param deviceId
* @param data
* @returns
*/
export const edgeChannel = (deviceId: string, data?: any) =>
defHttp.post({
url: `/edge/operations/${deviceId}/data-collector-channel-list/invoke`,
data
});
/**
* 查询边缘网关采集器
* @param deviceId
* @param data
* @returns
*/
export const edgeCollector = (deviceId: string, data?: any) =>
defHttp.post({ url: `/edge/operations/${deviceId}/data-collector-list/invoke`, data }, { isTransformResponse: false });
/**
* 查询边缘网关点位
* @param deviceId
* @param data
* @returns
*/
export const edgePoint = (deviceId: string, data?: any) =>
defHttp.post({
url: `/edge/operations/${deviceId}/data-collector-point-list/invoke`,
data
});
/**
*
* @param deviceId
* @param data
* @returns
*/
export const getEdgeMap = (deviceId: string, data?: any) =>
defHttp.post({
url: `/edge/operations/${deviceId}/device-collector-list/invoke`,
data
});
/**
*
* @param deviceId
* @param data
* @returns
*/
export const removeEdgeMap = (deviceId: string, data?: any) =>
defHttp.post({
url: `/edge/operations/${deviceId}/device-collector-delete/invoke`,
data
});
/**
*
* @param deviceId
* @param data
* @returns
*/
export const treeEdgeMap = (deviceId: string, data?: any) =>
defHttp.post({
url: `/edge/operations/${deviceId}/data-collector-channel-tree/invoke`,
data
});
/**
*
* @param deviceId
* @param data
* @returns
*/
export const saveEdgeMap = (deviceId: string, data?: any) =>
defHttp.post({
url: `/edge/operations/${deviceId}/device-collector-save/invoke`,
data
});
/**
* 查询属性详情
* @param deviceId
* @param params
* @returns
*/
export const getPropertyData = (deviceId: string, params: Record<string, unknown>) =>
defHttp.get({
url: `/device/instance/${deviceId}/properties/_query`,
params
});
/**
* 聚合查询设备属性
* @param deviceId
* @param data
* @returns
*/
export const getPropertiesInfo = (deviceId: string, data: Record<string, unknown>) =>
defHttp.post({ url: `/device/instance/${deviceId}/agg/_query`, data });
/**
* 聚合查询设备属性
* @param deviceId
* @param data
* @returns
*/
export const getPropertiesList = (deviceId: string, property: string, data: Record<string, unknown>) =>
defHttp.post({
url: `/device/instance/${deviceId}/property/${property}/_query`,
data
});
/**
* 获取指定协议
* @param id
* @param transport
* @returns
*/
export const getProtocal = (id: string, transport: string) => defHttp.get({ url: `/protocol/${id}/transport/${transport}` });
export const metadataMapById = (type: 'device' | 'product', productId: string, data: any[]) =>
defHttp.patch({ url: `/device/metadata/mapping/${type}/${productId}`, data });
export const getMetadataMapById = (type: 'device' | 'product', productId: string) =>
defHttp.get({ url: `/device/metadata/mapping/${type}/${productId}` });
/**
* 规则属性
*/
export const saveDeviceVirtualProperty = (productId: string, deviceId: string, data: any[]) =>
defHttp.patch({
url: `/virtual/property/product/${productId}/${deviceId}/_batch`,
data
});
export const getProtocolMetadata = (id: string, transport: string) =>
defHttp.get({ url: `/protocol/${id}/${transport}/metadata` });
/**
* 获取产品解析规则
* @param productId
* @returns
*/
export const productCode = (productId: string) => defHttp.get({ url: `/device/transparent-codec/${productId}` });
export const queryDeviceVirtualProperty = (productId: string, deviceId: string, propertyId: string) =>
defHttp.get({
url: `/virtual/property/device/${productId}/${deviceId}/${propertyId}`
});
/**
* 保存产品解析规则
* @param productId
* @returns
*/
export const saveProductCode = (productId: string, data: Record<string, unknown>) =>
defHttp.post({ url: `/device/transparent-codec/${productId}`, data });
/**
* 获取设备解析规则
* @param productId
* @param deviceId
* @returns
*/
export const deviceCode = (productId: string, deviceId: string) =>
defHttp.get({ url: `device/transparent-codec/${productId}/${deviceId}` });
/**
* 保存设备解析规则
* @param productId
* 查询设备日志
* @param deviceId
* @param data
* @returns
*/
export const saveDeviceCode = (productId: string, deviceId: string, data: Record<string, unknown>) =>
defHttp.post({
url: `/device/transparent-codec/${productId}/${deviceId}`,
data
});
/**
* 编码测试
* @param data
* @returns
*/
export const testCode = (data: Record<string, unknown>) =>
defHttp.post({ url: `/device/transparent-codec/decode-test`, data });
/**
* 删除设备解析规则
* @param productId
* @param deviceId
* @returns
*/
export const delDeviceCode = (productId: string, deviceId: string) =>
defHttp.delete({ url: `/device/transparent-codec/${productId}/${deviceId}` });
/**
* 删除产品解析规则
* @param productId
* @returns
*/
export const delProductCode = (productId: string) => defHttp.delete({ url: `/device/transparent-codec/${productId}` });
export const queryLog = (deviceId: string, data: Record<string, unknown>) => {
delete data.terms;
return defHttp.post({ url: `/device/instance/${deviceId}/logs`, data }, { isTransformResponse: false });
};
/**
* 查询设备日志类型
* @returns
*/
export const queryLogsType = () => defHttp.get({ url: `/dictionary/device-log-type/items` });
export const getDeviceNumber = (data?: any) => defHttp.post<number>({ url: '/device-instance/_count', data });
/**
* 导入映射设备
* @param productId
* @param data
*/
export const importDeviceByPlugin = (productId: string, data: any[]) =>
defHttp.post({ url: `/device/instance/plugin/${productId}/import`, data });
export const metadateMapById = (productId: string, data: any[]) =>
defHttp.put({ url: `/device/metadata/mapping/product/${productId}`, data });
export const getMetadateMapById = (productId: string) =>
defHttp.get({ url: `/device/metadata/mapping/product/${productId}` });
export const getInkingDevices = (data: string[]) => defHttp.post({ url: '/plugin/mapping/device/_all', data });
/**
* 获取设备物模型规则TS
* @param deviceId 设备ID
* @returns
*/
export const queryTypescript = (deviceId: string) => defHttp.get({ url: `/device/${deviceId}/virtual-property.d.ts` });
/**
* 获取产品物模型规则TS
* @param productId 产品ID
* @returns
*/
export const queryProductTs = (productId: string) => defHttp.get({ url: `/product/${productId}/virtual-property.d.ts` });