eqSelfInspection.js 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285
  1. import {
  2. analysisResultList,
  3. getAutoPatrolByRouteId,
  4. getPatrolDumuList,
  5. getPatrolRecordMandateInfo,
  6. getRecentAutoPatrolByRouteId,
  7. getRouteList,
  8. patrolRelationList,
  9. queryAnalysisDict,
  10. queryPatrolRecord,
  11. queryUserList,
  12. } from '@/services/eqSelfInspection';
  13. export default {
  14. namespace: 'eqSelfInspection',
  15. state: {
  16. autoReport: {
  17. warningTotalNum: 0,
  18. },
  19. patrolList: [],
  20. mandateInfo: [],
  21. },
  22. effects: {
  23. *getAutoPatrol({ payload, callback }, { call, put }) {
  24. const response = yield call(getRecentAutoPatrolByRouteId, payload);
  25. if (response) {
  26. // 查询数据报表详情
  27. yield put({
  28. type: 'getPatrolDataById',
  29. payload: { routeId: response.data[0].Id },
  30. callback: callback,
  31. });
  32. }
  33. },
  34. *fetchUserList({ payload }, { call, put }) {
  35. const response = yield call(queryUserList, payload);
  36. if (response) {
  37. yield put({
  38. type: 'userListHandler',
  39. payload: response.data,
  40. });
  41. }
  42. },
  43. *getPatrolDataById({ payload, callback }, { call, put, select }) {
  44. const { data } = yield call(queryPatrolRecord, {
  45. recordId: payload.routeId,
  46. });
  47. if (data) {
  48. const cacheData = yield select(
  49. (state) => state.eqSelfInspection.autoReport,
  50. );
  51. if (cacheData.Id === data.Id) {
  52. callback?.(cacheData);
  53. return;
  54. }
  55. const creatorName = data.CreatorUser && data.CreatorUser.CName;
  56. var status = {};
  57. let Items = [],
  58. sensor = [];
  59. const getItems = (item, patrolType) => {
  60. let key;
  61. if (patrolType == 1) {
  62. key = item.PatrolName;
  63. } else {
  64. key = item.DeviceCode + '-' + item.DeviceName;
  65. }
  66. item.TemplateItem = item.TemplateItem || {};
  67. item.patrolType = patrolType;
  68. item.ThresholdEnum = item.TemplateItem.ThresholdEnum;
  69. item.Type = item.TemplateItem.Type;
  70. if (!status[key]) status[key] = { normal: 0, error: 0 };
  71. if (item.Status == 1) {
  72. status[key].error++;
  73. } else {
  74. status[key].normal++;
  75. }
  76. return item;
  77. };
  78. let patrolCard = {};
  79. let arr = [];
  80. (data.ItemsExtend || []).forEach((item) => {
  81. console.log(Items);
  82. if (item.PatrolCardRecordItemAssocThreshold) {
  83. var arr = item.PatrolCardRecordItemAssocThreshold.map((i) =>
  84. getItems(i, 1),
  85. );
  86. Items = Items.concat(arr);
  87. patrolCard[item.DeviceCode] =
  88. item.PatrolCardRecordItemAssocThreshold;
  89. } else {
  90. Items.push(getItems(item, 0));
  91. if (!patrolCard[item.DeviceCode]) patrolCard[item.DeviceCode] = [];
  92. patrolCard[item.DeviceCode].push(item);
  93. }
  94. });
  95. (data.ItemsSensor || []).forEach((item) => {
  96. if (item.PatrolCardRecordItemAssocThreshold) {
  97. var arr = item.PatrolCardRecordItemAssocThreshold.map((i) =>
  98. getItems(i, 1),
  99. );
  100. sensor = sensor.concat(arr);
  101. } else {
  102. sensor.push(getItems(item, 0));
  103. }
  104. });
  105. data.Items = Items;
  106. data.sensor = sensor;
  107. (data.Points || []).forEach((item) => {
  108. let key;
  109. if (item.PatrolType == 1) {
  110. key = item.DeviceName;
  111. } else {
  112. key = item.DeviceCode + '-' + item.DeviceName;
  113. }
  114. item.creatorName = creatorName;
  115. item.level = `${item.ExceptionLevel || '-'}/${
  116. item.DeviceLevel || '-'
  117. }`;
  118. item.status = status[key] || { normal: 0, error: 0 };
  119. if (patrolCard[item.DeviceCode] instanceof Array) {
  120. arr = [...arr, ...patrolCard[item.DeviceCode]];
  121. }
  122. });
  123. var ruleList = [46, 65, 92, 94];
  124. if (ruleList.indexOf(data.ProjectId) != -1) {
  125. const analysisDict = yield call(queryAnalysisDict, {
  126. pageSize: 9999,
  127. });
  128. const analysisResult = yield call(analysisResultList, {
  129. project_id: data.ProjectId,
  130. id: data.Id,
  131. });
  132. const patrolRelation = yield call(patrolRelationList, {
  133. ids: analysisResult?.data,
  134. project_id: data.ProjectId,
  135. page: 1,
  136. page_size: 9999,
  137. });
  138. if (patrolRelation) {
  139. let FaultAnalysis = [];
  140. patrolRelation?.data?.list?.map((item) => {
  141. var reason = analysisDict?.data.find(
  142. (reason) => reason.id == item.Reason,
  143. );
  144. if (reason) {
  145. item.Reason = reason.content;
  146. }
  147. var FixPlanArr = item.FixPlan.split(',');
  148. if (FixPlanArr.length > 0) {
  149. var FixPlan = [];
  150. FixPlanArr.map((fixItem) => {
  151. var fixPlan = analysisDict?.data.find(
  152. (reason) => reason.id == fixItem,
  153. );
  154. if (fixPlan) FixPlan.push(fixPlan);
  155. });
  156. console.log(FixPlan);
  157. }
  158. FaultAnalysis.push({
  159. device_name: item.DeviceName,
  160. device_code: item.DeviceCode,
  161. reason: item.Reason,
  162. fix_plan: FixPlan,
  163. c_time: item.CTime,
  164. });
  165. });
  166. data.FaultAnalysis = FaultAnalysis;
  167. console.log(data.FaultAnalysis);
  168. }
  169. }
  170. const dumuList = yield call(getPatrolDumuList, {
  171. record_id: payload.routeId,
  172. project_id: data.ProjectId,
  173. });
  174. if (dumuList) {
  175. data.dumuList = dumuList.data || [];
  176. }
  177. console.log(data);
  178. data.sensorWaringData =
  179. data.sensor?.filter(
  180. (item) => item.Status === 2 || item.Status === 1,
  181. ) || [];
  182. data.sensorWaringNum = data.sensorWaringData.filter(
  183. (item) => item.Status === 1,
  184. ).length;
  185. data.extendWarningAllData = arr;
  186. data.extendWarningData =
  187. arr?.filter((item) => item.Status === 2 || item.Status === 1) || [];
  188. data.extendWarningNum =
  189. arr?.filter((item) => item.Status === 1)?.length || 0;
  190. //获取液位检测异常数量
  191. const errorNum = data.FluidLevelList?.filter(
  192. (item) => item.status == 1,
  193. );
  194. let num = 0;
  195. if (data?.extendWarningData?.length > 0) num += 1;
  196. if (data?.sensorWaringNum > 0) num += 1;
  197. if (data?.dumuList?.length > 0) num += 1;
  198. if (data?.FaultAnalysis?.length > 0) num += 1;
  199. if (errorNum.length > 0) num += errorNum;
  200. data.warningTotalNum = num;
  201. data.patrolStatus = data?.extendWarningNum?.length > 0 ? 1 : 0;
  202. data.faultAnalysisStatus = data?.FaultAnalysis?.length > 0 ? 1 : 0;
  203. // data.secureStatus =
  204. // data?.dumuList?.length > 0 || data?.sensorWaringNum > 0 ? 1 : 0;
  205. data.secureStatus =
  206. data?.dumuList?.length > 0 || errorNum.length > 0 ? 1 : 0;
  207. let secureChild = [];
  208. let dumuStatus = 0;
  209. if (data?.dumuList?.length > 0) {
  210. dumuStatus = 1;
  211. }
  212. secureChild.push({ label: '安防检测', status: dumuStatus });
  213. let sensorStatus = 0;
  214. if (data?.sensorWaringNum > 0) {
  215. sensorStatus = 1;
  216. }
  217. secureChild.push({ label: '环境检测', status: sensorStatus });
  218. secureChild.push({ label: '电气检测', status: 0 });
  219. secureChild.push({ label: '密闭空间检测', status: 0 });
  220. data.secureChild = secureChild;
  221. callback?.(data);
  222. yield put({
  223. type: 'save',
  224. payload: { autoReport: data },
  225. });
  226. }
  227. },
  228. *getList({ payload }, { call, put }) {
  229. const response = yield call(getRouteList, payload);
  230. if (response) {
  231. yield put({
  232. type: 'save',
  233. payload: {
  234. patrolList: response.data?.filter((item) => item.IsAuto === 1),
  235. },
  236. });
  237. }
  238. },
  239. *getPatrolRecordMandateInfo({ payload }, { call, put }) {
  240. const response = yield call(getPatrolRecordMandateInfo, payload);
  241. if (response) {
  242. yield put({
  243. type: 'save',
  244. payload: {
  245. mandateInfo: response?.data,
  246. },
  247. });
  248. }
  249. },
  250. *inspectionRoute({ payload, callback }, { call, put, select }) {
  251. //先通过巡检路线的Id申请接口,拿到最新的巡检记录Id,去查询
  252. const response = yield call(getAutoPatrolByRouteId, payload);
  253. if (response) {
  254. yield put({
  255. type: 'getAutoPatrol',
  256. payload: { projectId: payload.projectId, route_id: payload.routeId },
  257. callback: callback,
  258. });
  259. }
  260. },
  261. },
  262. reducers: {
  263. save(state, action) {
  264. return {
  265. ...state,
  266. ...action.payload,
  267. };
  268. },
  269. },
  270. };