service.ts 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243
  1. import BaseService from '@/utils/BaseService';
  2. import { request } from 'umi';
  3. import type { DeviceInstance, PropertyData } from '@/pages/device/Instance/typings';
  4. import SystemConst from '@/utils/const';
  5. import { defer, from, mergeMap, toArray } from 'rxjs';
  6. import { filter, groupBy, map } from 'rxjs/operators';
  7. class Service extends BaseService<DeviceInstance> {
  8. public detail = (id: string) => request(`${this.uri}/${id}/detail`, { method: 'GET' });
  9. // 查询产品列表
  10. public getProductList = (params: any) =>
  11. request(`/${SystemConst.API_BASE}/device/product/_query/no-paging`, { method: 'GET', params });
  12. // 批量删除设备
  13. public batchDeleteDevice = (params: any) =>
  14. request(`/${SystemConst.API_BASE}/device-instance/batch/_delete`, {
  15. method: 'PUT',
  16. data: params,
  17. });
  18. // 启用设备
  19. public deployDevice = (deviceId: string, params?: any) =>
  20. request(`/${SystemConst.API_BASE}/device-instance/${deviceId}/deploy`, {
  21. method: 'POST',
  22. data: params,
  23. });
  24. // 禁用设备
  25. public undeployDevice = (deviceId: string, params?: any) =>
  26. request(`/${SystemConst.API_BASE}/device-instance/${deviceId}/undeploy`, {
  27. method: 'POST',
  28. data: params,
  29. });
  30. // 批量激活设备
  31. public batchDeployDevice = (params: any) =>
  32. request(`/${SystemConst.API_BASE}/device-instance/batch/_deploy`, {
  33. method: 'PUT',
  34. data: params,
  35. });
  36. // 批量注销设备
  37. public batchUndeployDevice = (params: any) =>
  38. request(`/${SystemConst.API_BASE}/device-instance/batch/_undeploy`, {
  39. method: 'PUT',
  40. data: params,
  41. });
  42. // 激活所有设备
  43. public deployAllDevice = (params?: any) =>
  44. request(`/${SystemConst.API_BASE}/device-instance/deploy`, { method: 'GET', params });
  45. // 同步设备
  46. public syncDevice = () =>
  47. request(`/${SystemConst.API_BASE}/device-instance/state/_sync`, { method: 'GET' });
  48. //验证设备ID是否重复
  49. public isExists = (id: string) =>
  50. request(`/${SystemConst.API_BASE}/device-instance/${id}/exists`, { method: 'GET' });
  51. public getConfigMetadata = (id: string) =>
  52. request(`${this.uri}/${id}/config-metadata`, { method: 'GET' });
  53. public getUnits = () => request(`/${SystemConst.API_BASE}/protocol/units`, { method: 'GET' });
  54. public propertyRealTime = (data: Record<string, unknown>[]) =>
  55. defer(() =>
  56. from(
  57. request(`/${SystemConst.API_BASE}/dashboard/_multi`, {
  58. method: 'POST',
  59. data,
  60. }),
  61. ).pipe(
  62. filter((resp) => resp.status === 200),
  63. map((resp) => resp.result),
  64. mergeMap((temp: PropertyData[]) => from(temp)),
  65. map((item) => ({
  66. timeString: item.data.timeString,
  67. timestamp: item.data.timestamp,
  68. ...item.data.value,
  69. })),
  70. groupBy((group$) => group$.property),
  71. mergeMap((group) => group.pipe(toArray())),
  72. map((arr) => ({
  73. list: arr.sort((a, b) => a.timestamp - b.timestamp),
  74. property: arr[0].property,
  75. })),
  76. // toArray()
  77. ),
  78. );
  79. public getProperty = (id: string, type: string) =>
  80. request(`/${SystemConst.API_BASE}/device/standard/${id}/property/${type}`, {
  81. method: 'GET',
  82. });
  83. public setProperty = (deviceId: string, data: Record<string, unknown>) =>
  84. request(`/${SystemConst.API_BASE}/device/instance/${deviceId}/property`, {
  85. method: 'PUT',
  86. data,
  87. });
  88. public getPropertyData = (deviceId: string, params: Record<string, unknown>) =>
  89. request(`/${SystemConst.API_BASE}/device-instance/${deviceId}/properties/_query`, {
  90. method: 'GET',
  91. params,
  92. });
  93. public getEventCount = (deviceId: string, eventId: string, params: Record<string, unknown>) =>
  94. request(`/${SystemConst.API_BASE}/device/instance/${deviceId}/event/${eventId}`, {
  95. method: 'POST',
  96. data: params,
  97. });
  98. public deleteMetadata = (deviceId: string) =>
  99. request(`/${SystemConst.API_BASE}/device/instance/${deviceId}/metadata`, {
  100. method: 'DELETE',
  101. });
  102. public invokeFunction = (deviceId: string, functionId: string, data: Record<string, unknown>) =>
  103. request(`/${SystemConst.API_BASE}/device/invoked/${deviceId}/function/${functionId}`, {
  104. method: 'POST',
  105. data,
  106. });
  107. public queryLog = (deviceId: string, params: Record<string, unknown>) =>
  108. request(`/${SystemConst.API_BASE}/device-instance/${deviceId}/logs`, {
  109. method: 'POST',
  110. data: params,
  111. });
  112. public queryLogsType = () =>
  113. request(`/${SystemConst.API_BASE}/dictionary/device-log-type/items`, {
  114. method: 'GET',
  115. });
  116. public bindDevice = (deviceId: string, data: string[]) =>
  117. request(`/${SystemConst.API_BASE}/device/gateway/${deviceId}/bind`, {
  118. method: 'POST',
  119. data,
  120. });
  121. public unbindDevice = (deviceId: string, childrenId: string, data: Record<string, unknown>) =>
  122. request(`/${SystemConst.API_BASE}/device/gateway/${deviceId}/unbind/${childrenId}`, {
  123. method: 'POST',
  124. data,
  125. });
  126. public unbindBatchDevice = (deviceId: string, data: string[]) =>
  127. request(`/${SystemConst.API_BASE}/device/gateway/${deviceId}/unbind`, {
  128. method: 'POST',
  129. data,
  130. });
  131. public configurationReset = (deviceId: string) =>
  132. request(`/${SystemConst.API_BASE}/device-instance/${deviceId}/configuration/_reset`, {
  133. method: 'PUT',
  134. });
  135. public saveTags = (deviceId: string, data: any) =>
  136. request(`/${SystemConst.API_BASE}/device-instance/${deviceId}/tag`, {
  137. method: 'PATCH',
  138. data,
  139. });
  140. //产品状态
  141. public queryProductState = (id: string) =>
  142. request(`/${SystemConst.API_BASE}/device/product/${id}`, {
  143. method: 'GET',
  144. });
  145. // 发布产品
  146. public deployProduct = (productId: string) =>
  147. request(`/${SystemConst.API_BASE}/device/product/${productId}/deploy`, {
  148. method: 'POST',
  149. });
  150. // 产品配置
  151. public queryProductConfig = (id: string) =>
  152. request(`/${SystemConst.API_BASE}/device/product/${id}/config-metadata`, {
  153. method: 'GET',
  154. });
  155. // 设备接入网关状态
  156. public queryGatewayState = (id: string) =>
  157. request(`/${SystemConst.API_BASE}/gateway/device/${id}/detail`, {
  158. method: 'GET',
  159. });
  160. public startGateway = (id: string) =>
  161. request(`/${SystemConst.API_BASE}/gateway/device/${id}/_startup`, {
  162. method: 'POST',
  163. });
  164. //网络组件状态
  165. public queryNetworkState = (id: string) =>
  166. request(`/${SystemConst.API_BASE}/network/config/${id}`, {
  167. method: 'GET',
  168. });
  169. //网络组件启用
  170. public startNetwork = (id: string) =>
  171. request(`/${SystemConst.API_BASE}/network/config/${id}/_start`, {
  172. method: 'POST',
  173. });
  174. // 执行功能
  175. public executeFunctions = (deviceId: string, functionId: string, data: any) =>
  176. request(`/${SystemConst.API_BASE}device/invoked/${deviceId}/function/${functionId}`, {
  177. method: 'POST',
  178. data,
  179. });
  180. // 读取属性
  181. public readProperties = (deviceId: string, data: any) =>
  182. request(`/${SystemConst.API_BASE}/device/instance/${deviceId}/properties/_read`, {
  183. method: 'POST',
  184. data,
  185. });
  186. // 设置属性
  187. public settingProperties = (deviceId: string, data: any) =>
  188. request(`/${SystemConst.API_BASE}/device/setting/${deviceId}/property`, {
  189. method: 'POST',
  190. data,
  191. });
  192. //获取协议设置的默认物模型
  193. public queryProtocolMetadata = (id: string, transport: string) =>
  194. request(`/${SystemConst.API_BASE}/protocol/${id}/${transport}/metadata`, {
  195. method: 'GET',
  196. });
  197. // 保存设备物模型映射
  198. public saveDeviceMetadata = (deviceId: string, data: any) =>
  199. request(`/${SystemConst.API_BASE}/device/metadata/mapping/device/${deviceId}`, {
  200. method: 'PATCH',
  201. data,
  202. });
  203. //保存产品物模型映射
  204. public saveProductMetadata = (productId: string, data: any) =>
  205. request(`/${SystemConst.API_BASE}/device/metadata/mapping/product/${productId}`, {
  206. method: 'PATCH',
  207. data,
  208. });
  209. //查询设备物模型映射
  210. public queryDeviceMetadata = (deviceId: string) =>
  211. request(`/${SystemConst.API_BASE}/device/metadata/mapping/device/${deviceId}`, {
  212. method: 'GET',
  213. });
  214. //查询产品物模型映射
  215. public queryProductMetadata = (productId: string) =>
  216. request(`/${SystemConst.API_BASE}/device/metadata/mapping/product/${productId}`, {
  217. method: 'GET',
  218. });
  219. }
  220. export default Service;