| | |
| | | // import rank from '@/utils/risk_estimate_common_function/rank.js'; |
| | | // import dayjs from 'dayjs.js'; |
| | | |
| | | |
| | | |
| | | export default { |
| | | |
| | | // // 计算日风险值 |
| | | // calDailyRisk(allTypeRiskValue){ |
| | | // let dailyRiskValue = allTypeRiskValue.onlineRisk*0.1 + allTypeRiskValue.validRisk*0.2 + allTypeRiskValue.exceedingRisk*0.2 + allTypeRiskValue.exceptionTypeAggregation*0.2 + allTypeRiskValue.typicalExceptionRepetitionRate*0.3 |
| | | // return dailyRiskValue |
| | | // }, |
| | | |
| | | // // 计算月风险值 |
| | | // calMonthRisk(DailyRiskValues,month){ |
| | | // // 根据月份获得该月的天数 |
| | | // let dayNum = dayjs(month).daysInMonth() |
| | | // // 累加日风险值 |
| | | // let sum = 0 |
| | | // for(let i in DailyRiskValues){ |
| | | // sum += i |
| | | // } |
| | | // // 日异常类型聚集率的和/当月天数 |
| | | // let monthRiskValue = sum /dayNum |
| | | // return monthRiskValue |
| | | // }, |
| | | /** |
| | | * 由单条月度值计算风险值 |
| | | * @param: |
| | | * @returns: |
| | | */ |
| | | calRiskValue(monthlyRiskData) { |
| | | // 风险值 |
| | | let riskValue = monthlyRiskData.onlineRisk*0.1 + monthlyRiskData.validRisk*0.2 + monthlyRiskData.exceedRisk*0.2 + monthlyRiskData.exceptionTypeAggregation*0.2 + monthlyRiskData.typicalExceptionRepetitionRate*0.3 |
| | | return riskValue |
| | | }, |
| | | |
| | | |
| | | // calRiskValue(allTypeRiskValue,queryMonth){ |
| | | // // 对设备编号进行分组 |
| | | // let groupeObj = rank.groupByMncode(allTypeRiskValue) |
| | | // // |
| | | // for (let mnCode in groupeObj){ |
| | | // // 获得设备编号对应的数据 |
| | | // let dayData = groupeObj[mnCode] |
| | | |
| | | // // 保存某设备编号该段时间的日风险值 |
| | | // let dailyRiskValues = [] |
| | | // // 计算日风险值 |
| | | // for(let item in dayData){ |
| | | // let dailyRiskValue = this.calDailyRisk(item) |
| | | // dailyRiskValues.push(dailyRiskValue) |
| | | // } |
| | | // } |
| | | |
| | | // } |
| | | |
| | | // 计算月度风险值 |
| | | /** |
| | | * 计算月度风险值 |
| | | * @param: |
| | | * @returns: |
| | | */ |
| | | calMonthlyRiskValue(exceptionRiskValue){ |
| | | // 保存月度风险值 |
| | | let monthlyRiskValue = [] |
| | | // 计算每个站点的月度风险值 |
| | | for(let item in exceptionRiskValue){ |
| | | let value = item.onlineRisk*0.1 + item.validRisk*0.2 + item.exceedingRisk*0.2 + item.exceptionTypeAggregation*0.2 + item.typicalExceptionRepetitionRate*0.3 |
| | | monthlyRiskValue.push(value) |
| | | let risk = this.calRiskValue(item) |
| | | monthlyRiskValue.push(risk) |
| | | } |
| | | |
| | | // 降序排列 |
| | | monthlyRiskValue.sort((a, b) => b - a) |
| | | |
| | | return monthlyRiskValue |
| | | } |
| | | }, |
| | | |
| | | /** |
| | | * 组装成表格的行 |
| | | * @param: 站点的月度分险数据,该站点的月度风险值 |
| | | * @returns: |
| | | */ |
| | | organizeTableRow(monthlyRiskData,riskValue) { |
| | | let obj = {} |
| | | obj.siteName = monthlyRiskData.name |
| | | obj.region = '金山区' |
| | | obj.mnCode = monthlyRiskData.mnCode |
| | | obj.monitorType = '扬尘' |
| | | obj.riskValue = riskValue |
| | | obj.beginTime = monthlyRiskData.lst |
| | | obj.endTime = monthlyRiskData.lst |
| | | |
| | | // 根据月度风险值,返回对应的风险等级和风险建议 |
| | | let riskGradeAndAdvice = this.judgeRiskGradeAndAdvice(riskValue) |
| | | obj.riskGrade = riskGradeAndAdvice[0] |
| | | obj.riskAdvice = riskGradeAndAdvice[1] |
| | | |
| | | return obj |
| | | }, |
| | | |
| | | /** |
| | | * 根据月度风险值,返回对应的风险等级和风险建议 |
| | | * @param: 月度风险值 |
| | | */ |
| | | judgeRiskGradeAndAdvice(monthlyRiskValue){ |
| | | let temp = [] |
| | | // 低风险 |
| | | if(monthlyRiskValue < 0.15) { |
| | | temp.push('低风险') |
| | | let advice = '1.建议及时提醒该站点所属单位进行应急维护;\n2.若同时存在超标、临界超标、量级突变等异常时,建议将该站点移交环境执法大队开展现场执法检查;\n3.若持续两月及以上为高风险,建议将该站点纳入年度抽测比对清单;' |
| | | temp.push(advice) |
| | | } |
| | | // 中风险 |
| | | if (monthlyRiskValue <= 0.6 && monthlyRiskValue >= 0.15) { |
| | | temp.push('中风险') |
| | | let advice = '1.建议通过守法服务小程序、监测监管微信群等线上方式提示站点所属单位,聚焦当前存在的问题或隐患,及时开展自查自纠;\n2.若同时存在在线率或有效率月度不达标,建议电话通知该站点所属单位进行应急维护,并进行专项审核;' |
| | | temp.push(advice) |
| | | } |
| | | // 高风险 |
| | | if (monthlyRiskValue > 0.6) { |
| | | temp.push('高风险') |
| | | let advice = '1.若不涉及超标或在线率、有效率异常,常态数据审核即可;\n2.若涉及超标或在线率、有效率等异常,建议通过守法服务小程序、监测监管微信群等线上方式提示站点所属单位,及时开展自查自纠;' |
| | | temp.push(advice) |
| | | } |
| | | return temp |
| | | }, |
| | | |
| | | |
| | | // 遍历对每条月度异常风险值 |
| | | // 计算综合风险值 |
| | | // 拼接新的对象 |
| | | // 返回表格对象 |
| | | |
| | | /** |
| | | * 返回综合风险排名的表格数据 |
| | | * @param: 各站点月度分险数据 |
| | | * @returns:表格数据 |
| | | */ |
| | | backComprehensiveRiskTableData(allExceptionData){ |
| | | let tableData = [] |
| | | // 遍历对每条月度异常风险 |
| | | allExceptionData.forEach(element => { |
| | | |
| | | // 计算得到月度风险值 |
| | | let monthlyRiskValue = this.calRiskValue(element) |
| | | // 组成表格行的字段 |
| | | let tableRow = this.organizeTableRow(element,monthlyRiskValue.toFixed(2)) |
| | | |
| | | tableData.push(tableRow) |
| | | }); |
| | | |
| | | return tableData |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | } |