From 0825e9e96a6f2d4b71a51d32dae1302f2496c4d1 Mon Sep 17 00:00:00 2001
From: zmc <zmc_li@foxmail.com>
Date: 星期四, 23 十一月 2023 16:58:27 +0800
Subject: [PATCH] 1.增加了风险模型的跳转逻辑 2.增加了风险模型的组件

---
 src/utils/risk_estimate_common_function/riskValue.js |  151 +++++++++++++++++++++++++++++++++++---------------
 1 files changed, 105 insertions(+), 46 deletions(-)

diff --git a/src/utils/risk_estimate_common_function/riskValue.js b/src/utils/risk_estimate_common_function/riskValue.js
index 14f2278..97df011 100644
--- a/src/utils/risk_estimate_common_function/riskValue.js
+++ b/src/utils/risk_estimate_common_function/riskValue.js
@@ -1,59 +1,118 @@
-// import rank from '@/utils/risk_estimate_common_function/rank.js';
-// import dayjs from 'dayjs.js';
-
 
 
 export default {
+    /**
+     * 鐢卞崟鏉℃湀搴﹀�艰绠楅闄╁��
+     * @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
+    },
+    
 
-    // // 璁$畻鏃ラ闄╁��
-    // 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
-    // },
-
-    // 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
+   }
+
+
+
+   
+
 
 }
\ No newline at end of file

--
Gitblit v1.9.3