OperationManagement.js 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396
  1. import dayjs from 'dayjs';
  2. import { stringify } from 'qs';
  3. import { request } from 'umi';
  4. // 能耗标牌
  5. export async function query() {
  6. const res = await request(
  7. `/api/energy/v1/energy-card/list?project_id=${projectId}`,
  8. );
  9. return res;
  10. }
  11. // 全场概况 查询能耗配置相关
  12. export async function queryEnergyConfig(projectId) {
  13. const res = await request(
  14. `/api/energy/v1/energy-config?project_id=${projectId}`,
  15. );
  16. return res;
  17. }
  18. // 当日累计能耗、吨水电耗、环比
  19. export async function queryAccumulativeEnergy(projectId) {
  20. const res = await request(
  21. `/api/energy/v1/accumulative-energy?project_id=${projectId}`,
  22. );
  23. return res;
  24. }
  25. // 工艺段下总电耗曲线
  26. export async function querySectionEnergy(params) {
  27. const res = await request(
  28. `/api/energy/v1/section-energy?${stringify(params)}`,
  29. );
  30. return res;
  31. }
  32. // 工艺段下各设备的用电情况
  33. export async function querySectionDevice(params) {
  34. const res = await request(
  35. `/api/energy/v1/section-device?${stringify(params)}`,
  36. );
  37. return res;
  38. }
  39. // 吨水电耗折线图
  40. export async function queryEnergyWaterChart(params) {
  41. const res = await request(
  42. `/api/energy/v1/energy-water-chart?${stringify(params)}`,
  43. );
  44. return res;
  45. }
  46. /**
  47. * 根据工艺段id查询code
  48. * @param {*} processId 工艺段id
  49. * @param {*} type 0 能耗 1 药耗 2 水质 3 水量
  50. * @param project_id
  51. * @returns
  52. */
  53. export async function querySectionCode(processId, type, project_id) {
  54. const res = await request(
  55. `/api/energy/v1/section-code?process_section_id=${processId}&type=${type}&project_id=${project_id}`,
  56. );
  57. return res.data;
  58. }
  59. /**
  60. *
  61. * @param {object} data
  62. * @param {number} data.project_id
  63. * @param {string} data.metric_code
  64. * @param {string} data.start_time
  65. * @param {string} data.end_time
  66. * @returns
  67. */
  68. export async function queryChartList(data) {
  69. if (!data.order) data.order = 2;
  70. const res = await request(`/api/energy/v1/chart/list`, {
  71. method: 'POST',
  72. data,
  73. });
  74. return res.data;
  75. }
  76. // 水检测折线图 参数同上
  77. export async function queryWaterCheckChartList(data) {
  78. if (!data.order) data.order = 2;
  79. const res = await request(`/api/energy/v1/mon-chart/list`, {
  80. method: 'POST',
  81. data,
  82. });
  83. return res.data;
  84. }
  85. /**
  86. * 根据metric_code返回数据
  87. * @param {*} data 同queryChartList的data
  88. * @param {Array|string} codes metric_code
  89. * @param {Boolean} isCheck 是否为水检测数据
  90. * @returns [{ time:string, [code]:number}]
  91. */
  92. export async function queryChartListByCode(data, codes, isCheck = false) {
  93. let dataSource = [];
  94. if (codes instanceof Array) {
  95. const res = {};
  96. let time = [];
  97. for (let i = 0; i < codes.length; i++) {
  98. const metric_code = codes[i];
  99. let chartRes;
  100. if (isCheck) {
  101. chartRes = await queryWaterCheckChartList({ ...data, metric_code });
  102. } else {
  103. chartRes = await queryChartList({ ...data, metric_code });
  104. }
  105. if (i === 0) {
  106. time = chartRes.data?.map((item) => item.data_time);
  107. }
  108. res[metric_code] = chartRes.data?.map((item) => item.value.toFixed(2));
  109. }
  110. console.log(res, codes);
  111. dataSource = time?.map((time, index) => {
  112. const data = { time };
  113. codes.forEach((code) => {
  114. data[code] = res[code]?.[index];
  115. });
  116. return data;
  117. });
  118. } else if (typeof codes === 'string') {
  119. const res = await queryChartList({ ...data, metric_code: codes });
  120. dataSource = res.data.map((item) => ({
  121. time: item.data_time,
  122. [metric_code]: item.value,
  123. }));
  124. }
  125. return { data: dataSource };
  126. }
  127. /**
  128. *
  129. *
  130. * @param {*} metric_code //药耗code数组
  131. * @param {*} water_code //水质单个code
  132. * @param {*} params.start_time
  133. * @param {*} params.end_time
  134. * @param {*} params.projectId
  135. * @returns
  136. */
  137. export async function queryChartMedicineAndWater(
  138. metric_code,
  139. water_code,
  140. params,
  141. ) {
  142. const data = {};
  143. let time = [];
  144. const waterRes = await queryChartList({
  145. project_id: params.projectId,
  146. start_time: params.start_time,
  147. end_time: params.end_time,
  148. metric_code: water_code?.metric_code,
  149. order: 1,
  150. });
  151. data[water_code.metric_code] = {
  152. data: waterRes.map((item) => item.value),
  153. type: 2,
  154. name: water_code?.metric,
  155. yIndex: 0,
  156. };
  157. if (metric_code instanceof Array) {
  158. for (let index = 0; index < metric_code.length; index++) {
  159. const element = metric_code[index];
  160. const res = await queryChartList({
  161. project_id: params.projectId,
  162. start_time: params.start_time,
  163. end_time: params.end_time,
  164. metric_code: element?.metric_code,
  165. order: 1,
  166. });
  167. if (index == 0) {
  168. time = res.map((item) => item.data_time);
  169. }
  170. // type 是 0 能耗 1 药耗 2 水质 3 水量
  171. data[element.metric_code] = {
  172. data: res.map((item) => item.value),
  173. type: 0,
  174. name: element?.metric,
  175. yIndex: 1,
  176. };
  177. }
  178. }
  179. return { data: { data, time } };
  180. }
  181. export async function queryProcessSection(projectId) {
  182. const res = await request(
  183. `/api/v1/process-section/${projectId}?page_size=999`,
  184. );
  185. return { data: res?.data?.list };
  186. }
  187. export async function queryAnalysisDict() {
  188. const res = await request(
  189. `/api/analysis/v1/analysis-dict/list?page_size=9999`,
  190. {
  191. method: 'POST',
  192. },
  193. );
  194. return { data: res?.data?.list };
  195. }
  196. export async function queryAnalysisDictByParams(params) {
  197. const res = await request(
  198. `/api/analysis/v1/analysis-dict/list?${stringify(params)}`,
  199. {
  200. method: 'POST',
  201. },
  202. );
  203. return { data: res?.data?.list };
  204. }
  205. // 成本分析-能耗监测
  206. export async function queryEnergyChartList(data) {
  207. if (!data.order) data.order = 2;
  208. const res = await request(`/api/energy/v1/energy-chart/list`, {
  209. method: 'POST',
  210. data,
  211. });
  212. return res;
  213. }
  214. // 能耗管理导入列表
  215. export async function queryEnergyUpload(data) {
  216. const res = await request(`/api/energy/v1/statday/list`, {
  217. method: 'POST',
  218. headers: { ContentType: 'application/json' },
  219. data,
  220. });
  221. return res;
  222. }
  223. export async function deleteEnergyUpload(data) {
  224. const res = await request(`/api/energy/v1/statday/del`, {
  225. method: 'POST',
  226. headers: { ContentType: 'application/json' },
  227. data,
  228. });
  229. return res;
  230. }
  231. export async function createStat(data) {
  232. await request(`/api/energy/v1/statday/create`, {
  233. method: 'POST',
  234. headers: { ContentType: 'application/json' },
  235. data,
  236. });
  237. }
  238. export async function modifySampleMetric(data) {
  239. const res = await request(`/api/energy/v1/sample-metric`, {
  240. method: 'POST',
  241. data,
  242. });
  243. return res;
  244. }
  245. export async function deleteBreakerExp(data) {
  246. const res = await request(`/api/energy/v1/beaker/del`, {
  247. method: 'POST',
  248. data,
  249. });
  250. return res;
  251. }
  252. export async function saveBreakerExp(data) {
  253. const res = await request(`/api/energy/v1/beaker/save`, {
  254. method: 'POST',
  255. data,
  256. });
  257. return res;
  258. }
  259. export async function editBreakerExp(data) {
  260. const res = await request(`/api/energy/v1/beaker/edit`, {
  261. method: 'POST',
  262. data,
  263. });
  264. }
  265. export async function queryBreakerExpList(data) {
  266. const res = await request(`/api/energy/v1/beaker/list`, {
  267. method: 'POST',
  268. data,
  269. });
  270. return res;
  271. }
  272. export async function querySampleMetric(params) {
  273. const res = await request(
  274. `/api/energy/v1/sample-metric-list?${stringify(params)}`,
  275. );
  276. return res;
  277. }
  278. // 水质异常
  279. export async function queryQualityAbnormal(params) {
  280. const res = await request(`/api/task/v1/water-monitor/list`, {
  281. method: 'POST',
  282. headers: { ContentType: 'application/json' },
  283. data: params,
  284. });
  285. return res;
  286. }
  287. export async function dealQualityAbnormal(params) {
  288. await request(`/api/task/v1/set/water-monitor`, {
  289. method: 'POST',
  290. headers: { ContentType: 'application/json' },
  291. data: params,
  292. });
  293. }
  294. export async function getStatisticsChart(data_type) {
  295. let s_time;
  296. const e_time = dayjs().format('YYYY-MM-DD HH:mm:ss');
  297. switch (data_type) {
  298. case '1':
  299. s_time = dayjs().subtract(1, 'day').format('YYYY-MM-DD HH:mm:ss');
  300. break;
  301. case '2':
  302. s_time = dayjs().subtract(1, 'months').format('YYYY-MM-DD HH:mm:ss');
  303. break;
  304. case '3':
  305. s_time = dayjs().subtract(1, 'years').format('YYYY-MM-DD HH:mm:ss');
  306. break;
  307. case '4':
  308. s_time = dayjs().subtract(5, 'years').format('YYYY-MM-DD HH:mm:ss');
  309. break;
  310. }
  311. const baseParams = {
  312. start_time: s_time,
  313. end_time: e_time,
  314. data_type,
  315. project_id: 65,
  316. };
  317. const params = [
  318. {
  319. ...baseParams,
  320. name: '北侧流量计',
  321. metric_code: '172_168_184_200.FIT111_TOT',
  322. },
  323. {
  324. ...baseParams,
  325. name: '南侧流量计',
  326. metric_code: '172_168_184_200.FIT112_TOT',
  327. },
  328. ];
  329. const dataList = [];
  330. let xData = [];
  331. for (let i = 0; i < params.length; i++) {
  332. const item = params[i];
  333. const res = await request(
  334. `/api/energy/v1/statistics/chart?${stringify(item)}`,
  335. );
  336. if (i == 0) {
  337. xData = res.data.data.map((item) =>
  338. dayjs(item.data_time).format('YYYY-MM-DD HH:mm:ss'),
  339. );
  340. }
  341. dataList.push({
  342. name: item.name,
  343. data: res.data.data.map((item) => item.value),
  344. });
  345. }
  346. return { data: { xData, dataList } };
  347. }
  348. /**
  349. * @param {*} params
  350. * @returns {Promise<null>}
  351. */
  352. export async function getComparisonData(params) {
  353. const res = await request(`/api/energy/v1/month/chart?${stringify(params)}`);
  354. return res?.data?.list;
  355. }
  356. export async function getChemicalAgents(projectID) {
  357. const res = await request(
  358. `/api/energy/v1/chemical_agents?project_id=${projectID}`,
  359. );
  360. return res?.data?.list;
  361. }
  362. export async function getScadaPage(params = {}) {
  363. const res = await request(`/api/v1/scada/page?${stringify(params)}`);
  364. return res?.data;
  365. }