configurable.api.ts 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283
  1. import { floor, random } from 'lodash-es';
  2. import { defHttp } from '/@/utils/http/axios';
  3. enum Api {
  4. list = '/safety/ventanalyDevice/homedata2',
  5. getHomeData = '/safety/ventanalyDevice/homedata',
  6. getDisHome = '/ventanaly-device/monitor/disaster/getDisHome',
  7. getBDDustData = '/ventanaly-device/monitor/disaster/getDisDustHome',
  8. getBDFireData = '/ventanaly-device/monitor/disaster/getDisFireHome',
  9. }
  10. // 搞这个缓存是由于:目前代码上的设计是多个模块发出多次请求,每个模块自己负责消费前者的响应。
  11. // 这会导致相同的请求被同时发送多次。
  12. const cache = new Map<string, Promise<any>>();
  13. /**
  14. * 列表接口,5.5专用,和6.0的getHomeData基本一致
  15. * @param params
  16. */
  17. export const list = (params) => {
  18. const key = `${Api.list}?${JSON.stringify(params)}`;
  19. if (!cache.has(key)) {
  20. cache.set(
  21. key,
  22. defHttp.post({ url: Api.list, params }).finally(() => {
  23. cache.delete(key);
  24. })
  25. );
  26. }
  27. return (cache.get(key) as Promise<any>).then((res) => {
  28. res.fanmain.forEach((e) => {
  29. if (e.readData.Fan2StartStatus === '1') {
  30. e.current = '二号';
  31. e.readData.FanFreqHz = e.readData.Fan2FreqHz;
  32. } else {
  33. e.current = '一号';
  34. e.readData.FanFreqHz = e.readData.Fan1FreqHz;
  35. }
  36. });
  37. res.fanlocal.forEach((e) => {
  38. e.chartData = [
  39. {
  40. x: '吸风量',
  41. yRealtime: e.readData.windQuantity1,
  42. yMock: floor(parseFloat(e.inletAirVolume_merge) * random(0.98, 1, false), 2),
  43. y: e.inletAirVolume_merge,
  44. },
  45. {
  46. x: '供风量',
  47. yRealtime: e.readData.windQuantity2,
  48. yMock: floor(parseFloat(e.ductOutletAirVolume_merge) * random(0.98, 1, false), 2),
  49. y: e.ductOutletAirVolume_merge,
  50. },
  51. ];
  52. if (e.readData.Fan2StartStatus === '1') {
  53. e.current = '二号';
  54. e.readData.FanfHz = e.readData.Fan2fHz;
  55. } else {
  56. e.current = '一号';
  57. e.readData.FanfHz = e.readData.Fan1fHz;
  58. }
  59. });
  60. res.sys_majorpath.forEach((e) => {
  61. const { drag_1, drag_2, drag_3, drag_total } = e.majorpath;
  62. const { zuli = { value: '1' }, retM3_merge = { value: '1' } } = e.readData;
  63. const drag_merge = parseInt(zuli.value);
  64. const m3_merge = parseInt(retM3_merge.value);
  65. e.piechart = [
  66. { val: drag_1, valMock: floor((drag_1 / drag_total) * drag_merge), label: '进风区' },
  67. { val: drag_2, valMock: floor((drag_2 / drag_total) * drag_merge), label: '用风区' },
  68. { val: drag_3, valMock: floor((drag_3 / drag_total) * drag_merge), label: '回风区' },
  69. ];
  70. e.dengjikong_merge = floor((1.19 * (m3_merge / 60)) / Math.sqrt(drag_merge), 2);
  71. });
  72. res.device_arr = Object.values(res.device);
  73. return res;
  74. });
  75. };
  76. export const getHomeData = (params) => {
  77. const key = `${Api.getHomeData}?${JSON.stringify(params)}`;
  78. if (!cache.has(key)) {
  79. cache.set(
  80. key,
  81. defHttp.post({ url: Api.getHomeData, params }).finally(() => {
  82. cache.delete(key);
  83. })
  84. );
  85. }
  86. return (cache.get(key) as Promise<any>).then((res) => {
  87. res.fanmain.forEach((e) => {
  88. if (e.readData.Fan2StartStatus === '1') {
  89. e.current = '二号';
  90. e.readData.FanFreqHz = e.readData.Fan2FreqHz;
  91. } else {
  92. e.current = '一号';
  93. e.readData.FanFreqHz = e.readData.Fan1FreqHz;
  94. }
  95. });
  96. res.fanlocal.forEach((e) => {
  97. e.chartData = [
  98. {
  99. x: '吸风量',
  100. y: e.readData.windQuantity1,
  101. },
  102. {
  103. x: '供风量',
  104. y: e.readData.windQuantity2,
  105. },
  106. ];
  107. if (e.readData.Fan2StartStatus === '1') {
  108. e.current = '二号';
  109. e.readData.FanfHz = e.readData.Fan2fHz;
  110. } else {
  111. e.current = '一号';
  112. e.readData.FanfHz = e.readData.Fan1fHz;
  113. }
  114. });
  115. res.sys_majorpath.forEach((e) => {
  116. e.piechart = [
  117. { val: e.majorpath.drag_1, label: '进风区' },
  118. { val: e.majorpath.drag_2, label: '用风区' },
  119. { val: e.majorpath.drag_3, label: '回风区' },
  120. ];
  121. });
  122. return res;
  123. });
  124. };
  125. export const getBDDustData = (params) => {
  126. const key = `${Api.getBDDustData}?${JSON.stringify(params)}`;
  127. if (!cache.has(key)) {
  128. cache.set(
  129. key,
  130. defHttp.post({ url: Api.getBDDustData, params }).finally(() => {
  131. cache.delete(key);
  132. })
  133. );
  134. }
  135. return cache.get(key) as Promise<any>;
  136. };
  137. export const getBDFireData = (params) => {
  138. const key = `${Api.getBDFireData}?${JSON.stringify(params)}`;
  139. if (!cache.has(key)) {
  140. cache.set(
  141. key,
  142. defHttp.post({ url: Api.getBDFireData, params }).finally(() => {
  143. cache.delete(key);
  144. })
  145. );
  146. }
  147. return (cache.get(key) as Promise<any>).then((res) => {
  148. res.pdArray.forEach((e) => {
  149. e.arrayFiber.forEach((j) => {
  150. j.fibreTemperatureArr = JSON.parse(j.fibreTemperature);
  151. });
  152. });
  153. res.sgGxObj.devGxcw.forEach((e) => {
  154. e.fibreTemperatureArr = JSON.parse(e.fibreTemperature);
  155. });
  156. res.sgGxObj.devSgjc.forEach((e) => {
  157. e.o2val = e.o2Val || 0;
  158. e.coval = e.coVal || 0;
  159. e.gasval = e.gasVal || 0;
  160. e.ch2val = e.ch2Val || 0;
  161. e.chval = e.chVal || 0;
  162. });
  163. return res;
  164. });
  165. };
  166. export const getDisHome = (params) => {
  167. const key = `${Api.getDisHome}?${JSON.stringify(params)}`;
  168. if (!cache.has(key)) {
  169. cache.set(
  170. key,
  171. defHttp.post({ url: Api.getDisHome, params }).finally(() => {
  172. cache.delete(key);
  173. })
  174. );
  175. }
  176. return (cache.get(key) as Promise<any>).then((res) => {
  177. if (res.pdArray) {
  178. res.pdArray.forEach((e) => {
  179. e.arrayFiber.forEach((j) => {
  180. j.fibreTemperatureArr = JSON.parse(j.fibreTemperature);
  181. });
  182. });
  183. }
  184. if (res.sgGxObj) {
  185. res.sgGxObj.devGxcw.forEach((e) => {
  186. e.fibreTemperatureArr = JSON.parse(e.fibreTemperature);
  187. });
  188. res.sgGxObj.devSgjc.forEach((e) => {
  189. e.o2val = e.o2Val || 0;
  190. e.coval = e.coVal || 0;
  191. e.gasval = e.gasVal || 0;
  192. e.ch2val = e.ch2Val || 0;
  193. e.chval = e.chVal || 0;
  194. });
  195. }
  196. if (res.obfObj) {
  197. res.obfObj.obfObjModded = [
  198. {
  199. objType: '甲烷',
  200. arrayDev: res.obfObj.arrayDev.map((e) => {
  201. return {
  202. strinstallpos: e.strinstallpos,
  203. val: e.ch4Val || 0,
  204. };
  205. }),
  206. },
  207. {
  208. objType: '一氧化碳',
  209. arrayDev: res.obfObj.arrayDev.map((e) => {
  210. return {
  211. strinstallpos: e.strinstallpos,
  212. val: e.coVal || 0,
  213. };
  214. }),
  215. },
  216. {
  217. objType: '乙炔',
  218. arrayDev: res.obfObj.arrayDev.map((e) => {
  219. return {
  220. strinstallpos: e.strinstallpos,
  221. val: e.c2h2Val || 0,
  222. };
  223. }),
  224. },
  225. {
  226. objType: '二氧化碳',
  227. arrayDev: res.obfObj.arrayDev.map((e) => {
  228. return {
  229. strinstallpos: e.strinstallpos,
  230. val: e.co2Val || 0,
  231. };
  232. }),
  233. },
  234. {
  235. objType: '氧气',
  236. arrayDev: res.obfObj.arrayDev.map((e) => {
  237. return {
  238. strinstallpos: e.strinstallpos,
  239. val: e.o2Val || 0,
  240. };
  241. }),
  242. },
  243. {
  244. objType: '乙烯',
  245. arrayDev: res.obfObj.arrayDev.map((e) => {
  246. return {
  247. strinstallpos: e.strinstallpos,
  248. val: e.c2h4Val || 0,
  249. };
  250. }),
  251. },
  252. {
  253. objType: '压差',
  254. arrayDev: res.obfObj.arrayDev.map((e) => {
  255. return {
  256. strinstallpos: e.strinstallpos,
  257. val: e.dpVal || 0,
  258. };
  259. }),
  260. },
  261. {
  262. objType: '温度',
  263. arrayDev: res.obfObj.arrayDev.map((e) => {
  264. return {
  265. strinstallpos: e.strinstallpos,
  266. val: e.tempVal || 0,
  267. };
  268. }),
  269. },
  270. ];
  271. }
  272. return res;
  273. });
  274. };