1
0

configurable.api.ts 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326
  1. import { floor, isArray, random, slice } 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 = '/monitor/disaster/getDisHome',
  8. getBDDustData = '/monitor/disaster/getDisDustHome',
  9. getBDFireData = '/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. if (res.fanmain) {
  30. // 处理频率字段,为了兼容旧版保留,现配置项已支持一级动态字段
  31. res.fanmain.forEach((e) => {
  32. if (e.readData.Fan2StartStatus === '1') {
  33. e.current = '二号';
  34. e.readData.FanFreqHz = e.readData.Fan2FreqHz;
  35. } else {
  36. e.current = '一号';
  37. e.readData.FanFreqHz = e.readData.Fan1FreqHz;
  38. }
  39. });
  40. }
  41. if (res.fanlocal) {
  42. res.fanlocal.forEach((e) => {
  43. e.chartData = [
  44. {
  45. x: '吸风量',
  46. yRealtime: e.readData.windQuantity1,
  47. yMock: floor(parseFloat(e.inletAirVolume_merge) * random(0.98, 1, false), 2),
  48. y: e.inletAirVolume_merge,
  49. },
  50. {
  51. x: '供风量',
  52. yRealtime: e.readData.windQuantity2,
  53. yMock: floor(parseFloat(e.ductOutletAirVolume_merge) * random(0.98, 1, false), 2),
  54. y: e.ductOutletAirVolume_merge,
  55. },
  56. ];
  57. if (e.readData.Fan2StartStatus === '1') {
  58. e.current = '二号';
  59. e.readData.FanfHz = e.readData.Fan2fHz;
  60. } else {
  61. e.current = '一号';
  62. e.readData.FanfHz = e.readData.Fan1fHz;
  63. }
  64. });
  65. }
  66. if (res.sys_majorpath) {
  67. res.sys_majorpath.forEach((e) => {
  68. const { drag_1, drag_2, drag_3, drag_total } = e.majorpath;
  69. const { fy_merge = { value: '1' } } = e.readData;
  70. const drag_merge = parseInt(fy_merge.value);
  71. // const m3_merge = parseInt(retM3_merge.value);
  72. e.piechart = [
  73. { val: drag_1, valMock: floor((drag_1 / drag_total) * drag_merge), label: '进风区(Pa)' },
  74. { val: drag_2, valMock: floor((drag_2 / drag_total) * drag_merge), label: '用风区(Pa)' },
  75. { val: drag_3, valMock: floor((drag_3 / drag_total) * drag_merge), label: '回风区(Pa)' },
  76. ];
  77. e.readData.dengjikong_merge = get(res, 'midinfo[0].sysinfo.equalarea');
  78. e.readData.fy_merge_int = drag_merge;
  79. // e.dengjikong_merge = floor((1.19 * (m3_merge / 60)) / Math.sqrt(drag_merge), 2);
  80. });
  81. }
  82. if (res.sys_surface_caimei) {
  83. res.sys_surface_caimei.forEach((e) => {
  84. if (isArray(e.history)) {
  85. e.history = slice(e.history, e.history.length - 30, e.history.length);
  86. }
  87. if (isArray(e.history_report)) {
  88. e.history_report = slice(e.history_report, e.history_report.length - 30, e.history_report.length);
  89. }
  90. });
  91. }
  92. if (res.device_arr) {
  93. res.device_arr = Object.values(res.device);
  94. }
  95. if (res.sys_wind) {
  96. res.sys_wind.forEach((e) => {
  97. if (e.readData.m3) {
  98. e.readData.m3 = e.readData.m3.replace('-', '');
  99. }
  100. if (e.readData.va) {
  101. e.readData.va = e.readData.va.replace('-', '');
  102. }
  103. });
  104. }
  105. if (res.windrect) {
  106. res.windrect.forEach((e) => {
  107. if (e.readData.m3) {
  108. e.readData.m3 = e.readData.m3.replace('-', '');
  109. }
  110. if (e.readData.va) {
  111. e.readData.va = e.readData.va.replace('-', '');
  112. }
  113. });
  114. }
  115. return res;
  116. });
  117. };
  118. export const getHomeData = (params) => {
  119. const key = `${Api.getHomeData}?${JSON.stringify(params)}`;
  120. if (!cache.has(key)) {
  121. cache.set(
  122. key,
  123. defHttp.post({ url: Api.getHomeData, params }).finally(() => {
  124. cache.delete(key);
  125. })
  126. );
  127. }
  128. return (cache.get(key) as Promise<any>).then((res) => {
  129. res.fanmain.forEach((e) => {
  130. if (e.readData.Fan2StartStatus === '1') {
  131. e.current = '二号';
  132. e.readData.FanFreqHz = e.readData.Fan2FreqHz;
  133. } else {
  134. e.current = '一号';
  135. e.readData.FanFreqHz = e.readData.Fan1FreqHz;
  136. }
  137. });
  138. res.fanlocal.forEach((e) => {
  139. e.chartData = [
  140. {
  141. x: '吸风量',
  142. y: e.readData.windQuantity1,
  143. },
  144. {
  145. x: '供风量',
  146. y: e.readData.windQuantity2,
  147. },
  148. ];
  149. if (e.readData.Fan2StartStatus === '1') {
  150. e.current = '二号';
  151. e.readData.FanfHz = e.readData.Fan2fHz;
  152. } else {
  153. e.current = '一号';
  154. e.readData.FanfHz = e.readData.Fan1fHz;
  155. }
  156. });
  157. res.sys_majorpath.forEach((e) => {
  158. e.piechart = [
  159. { val: e.majorpath.drag_1, label: '进风区' },
  160. { val: e.majorpath.drag_2, label: '用风区' },
  161. { val: e.majorpath.drag_3, label: '回风区' },
  162. ];
  163. });
  164. return res;
  165. });
  166. };
  167. export const getBDDustData = (params) => {
  168. const key = `${Api.getBDDustData}?${JSON.stringify(params)}`;
  169. if (!cache.has(key)) {
  170. cache.set(
  171. key,
  172. defHttp.post({ url: Api.getBDDustData, params }).finally(() => {
  173. cache.delete(key);
  174. })
  175. );
  176. }
  177. return cache.get(key) as Promise<any>;
  178. };
  179. export const getBDFireData = (params) => {
  180. const key = `${Api.getBDFireData}?${JSON.stringify(params)}`;
  181. if (!cache.has(key)) {
  182. cache.set(
  183. key,
  184. defHttp.post({ url: Api.getBDFireData, params }).finally(() => {
  185. cache.delete(key);
  186. })
  187. );
  188. }
  189. return (cache.get(key) as Promise<any>).then((res) => {
  190. res.pdArray.forEach((e) => {
  191. e.arrayFiber.forEach((j) => {
  192. j.fibreTemperatureArr = JSON.parse(j.fibreTemperature);
  193. });
  194. });
  195. res.sgGxObj.devGxcw.forEach((e) => {
  196. e.fibreTemperatureArr = JSON.parse(e.fibreTemperature);
  197. });
  198. res.sgGxObj.devSgjc.forEach((e) => {
  199. e.o2val = e.o2Val || 0;
  200. e.coval = e.coVal || 0;
  201. e.gasval = e.gasVal || 0;
  202. e.ch2val = e.ch2Val || 0;
  203. e.chval = e.chVal || 0;
  204. });
  205. return res;
  206. });
  207. };
  208. export const getDisHome = (params) => {
  209. const key = `${Api.getDisHome}?${JSON.stringify(params)}`;
  210. if (!cache.has(key)) {
  211. cache.set(
  212. key,
  213. defHttp.post({ url: Api.getDisHome, params }).finally(() => {
  214. cache.delete(key);
  215. })
  216. );
  217. }
  218. return (cache.get(key) as Promise<any>).then((res) => {
  219. if (res.pdArray) {
  220. res.pdArray.forEach((e) => {
  221. e.arrayFiber.forEach((j) => {
  222. j.fibreTemperatureArr = JSON.parse(j.fibreTemperature);
  223. });
  224. });
  225. }
  226. if (res.sgGxObj) {
  227. res.sgGxObj.devGxcw.forEach((e) => {
  228. e.fibreTemperatureArr = JSON.parse(e.fibreTemperature);
  229. });
  230. res.sgGxObj.devSgjc.forEach((e) => {
  231. e.o2val = e.o2Val || 0;
  232. e.coval = e.coVal || 0;
  233. e.gasval = e.gasVal || 0;
  234. e.ch2val = e.ch2Val || 0;
  235. e.chval = e.chVal || 0;
  236. });
  237. }
  238. if (res.obfObj) {
  239. res.obfObj.obfObjModded = [
  240. {
  241. objType: '氧气',
  242. arrayDev: res.obfObj.arrayDev.map((e) => {
  243. return {
  244. strinstallpos: e.strinstallpos,
  245. val: e.o2Val || 0,
  246. };
  247. }),
  248. },
  249. {
  250. objType: '甲烷',
  251. arrayDev: res.obfObj.arrayDev.map((e) => {
  252. return {
  253. strinstallpos: e.strinstallpos,
  254. val: e.ch4Val || 0,
  255. };
  256. }),
  257. },
  258. {
  259. objType: '一氧化碳',
  260. arrayDev: res.obfObj.arrayDev.map((e) => {
  261. return {
  262. strinstallpos: e.strinstallpos,
  263. val: e.coVal || 0,
  264. };
  265. }),
  266. },
  267. {
  268. objType: '乙炔',
  269. arrayDev: res.obfObj.arrayDev.map((e) => {
  270. return {
  271. strinstallpos: e.strinstallpos,
  272. val: e.c2h2Val || 0,
  273. };
  274. }),
  275. },
  276. {
  277. objType: '二氧化碳',
  278. arrayDev: res.obfObj.arrayDev.map((e) => {
  279. return {
  280. strinstallpos: e.strinstallpos,
  281. val: e.co2Val || 0,
  282. };
  283. }),
  284. },
  285. {
  286. objType: '乙烯',
  287. arrayDev: res.obfObj.arrayDev.map((e) => {
  288. return {
  289. strinstallpos: e.strinstallpos,
  290. val: e.c2h4Val || 0,
  291. };
  292. }),
  293. },
  294. {
  295. objType: '压差',
  296. arrayDev: res.obfObj.arrayDev.map((e) => {
  297. return {
  298. strinstallpos: e.strinstallpos,
  299. val: e.dpVal || 0,
  300. };
  301. }),
  302. },
  303. {
  304. objType: '温度',
  305. arrayDev: res.obfObj.arrayDev.map((e) => {
  306. return {
  307. strinstallpos: e.strinstallpos,
  308. val: e.tempVal || 0,
  309. };
  310. }),
  311. },
  312. ];
  313. }
  314. return res;
  315. });
  316. };