eqSelfInspection.js 8.5 KB

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