configurable.api.ts 8.2 KB

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