From e844ef2fdab88508e7dff4bb9e7b1632fcce15b2 Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期四, 28 七月 2022 09:11:20 +0800
Subject: [PATCH] 1. 巡查统计清单调试

---
 src/main/kotlin/cn/flightfeather/supervision/business/report/cols/ColStrategy.kt |   45 +++++++++++++++++++++++++++++++++++++--------
 1 files changed, 37 insertions(+), 8 deletions(-)

diff --git a/src/main/kotlin/cn/flightfeather/supervision/business/report/cols/ColStrategy.kt b/src/main/kotlin/cn/flightfeather/supervision/business/report/cols/ColStrategy.kt
index 874a17b..c3733c9 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/business/report/cols/ColStrategy.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/business/report/cols/ColStrategy.kt
@@ -7,6 +7,7 @@
 import java.time.Duration
 import java.time.LocalDateTime
 import java.time.ZoneId
+import java.time.temporal.ChronoUnit
 
 class ColStrategy : BaseCols() {
     override fun onHeads(dataSource: DataSource): MutableList<MutableList<ExcelUtil.MyCell>> {
@@ -16,7 +17,7 @@
     }
 
     override fun onOneRow(rowData: DataSource.RowData): List<Any> {
-        if (rowData.problems.isEmpty()) return listOf("")
+        if (rowData.noRecord()) return listOf("")
 
         val strategyList = listOf(
             "1銆佸瓨鍦ㄩ棶棰樿秴鏈�3澶╀笉婊�7澶╂湭鏁存敼锛岀敱绯荤粺鎺ㄩ�佹暣鏀规彁閱掞紱",
@@ -40,29 +41,32 @@
                 continue
             }
             val pTime = LocalDateTime.ofInstant(p.time?.toInstant(), ZoneId.systemDefault())
-            val duration = Duration.between(pTime.toLocalDate(), now)
-            val day = duration.toDays()
+            val day = pTime.toLocalDate().until(now.toLocalDate(), ChronoUnit.DAYS)
 
             when {
+                //1銆佸瓨鍦ㄩ棶棰樿秴鏈�3澶╀笉婊�7澶╂湭鏁存敼锛岀敱绯荤粺鎺ㄩ�佹暣鏀规彁閱掞紱
                 day in 3..6 -> {
                     result += strategyList[0] + "\n"
                     break
                 }
+                //2銆佸瓨鍦ㄩ棶棰樿秴鏈�7澶╂湭鏁存敼锛岀敱鎶�鏈湇鍔¢儴绾夸笂鐫d績锛�
                 day > 6 -> {
                     result += strategyList[1] + "\n"
                     break
                 }
             }
         }
+        //3銆佸贰鏌ュ悗10澶╂垨鏈堟湯鍓�3澶╋紝闂鏁存敼鐜囦綆浜�50%锛岀敱鏁版嵁搴旂敤閮ㄤ竴瀵逛竴鐫d績锛屽苟浜庝富绠¢儴闂ㄨ仈鍔紱
         //鏁存敼鐜�
         val cPer = cPros.toDouble() / rowData.problems.size
         //宸℃煡鏃堕棿
         val sTime = LocalDateTime.ofInstant(rowData.subTask?.planstarttime?.toInstant(), ZoneId.systemDefault())
-        val day1 = Duration.between(sTime.toLocalDate(), now).toDays()
+        val day1 = sTime.toLocalDate().until(now.toLocalDate(), ChronoUnit.DAYS)
         val lastDayOfMon = now.plusMonths(1).withDayOfMonth(1).minusDays(1)
-        val day2 = Duration.between(lastDayOfMon.toLocalDate(), now.toLocalDate()).toDays()
+        val day2 = lastDayOfMon.toLocalDate().until(now.toLocalDate(), ChronoUnit.DAYS)
         if (cPer < .5 && (day1 >= 10 || day2 <= 3)) result += strategyList[2] + "\n"
 
+        //4銆侀棶棰樺鏍告垨鏁存敼瀹℃牳鏈紑灞曟垨闂瀹℃牳杈冨贰鏌ユ椂闂村欢鍚�24灏忔椂浠ヤ笂鎴栭棶棰樹笌鏁存敼鏃堕棿闂撮殧瓒呰繃涓�鍛紝椤圭洰绠$悊浜哄憳搴斿強鏃跺紑灞曞鏍告垨鍚庣画搴旀彁鍗囧鏍告椂鏁堟�э紱
         //瀹℃牳
         for (p in rowData.problems) {
             //闂瀹℃牳鎴栨暣鏀瑰鏍告湭寮�灞�
@@ -80,7 +84,7 @@
             if (p.changedtime != null) {
                 val ct = LocalDateTime.ofInstant(p.changedtime?.toInstant(), ZoneId.systemDefault())
                 val pt = LocalDateTime.ofInstant(p.time?.toInstant(), ZoneId.systemDefault())
-                if (Duration.between(pt.toLocalDate(), ct.toLocalDate()).toDays() > 7) {
+                if (pt.toLocalDate().until(ct.toLocalDate(), ChronoUnit.DAYS) > 7) {
                     result += strategyList[3] + "\n"
                     break
                 }
@@ -89,21 +93,46 @@
 
         }
 
+        //5銆佸彴璐︽湭鎸夋椂鎻愪氦锛岀敱鎶�鏈湇鍔¢儴涓�瀵逛竴鐫d績锛�
         //鍙拌处
         val rNum = rowData.ledgerRecords.size
         if (rNum == 0) result += strategyList[4] + "\n"
+        //6銆佸彴璐﹀凡閮ㄥ垎鎻愪氦锛屾彁浜ゆ瘮渚嬩笉瓒�100%鐨勶紝鐢辨暟鎹簲鐢ㄩ儴涓�瀵逛竴鐫d績锛�
         if (rNum != 0 && rNum < rowData.ledgerCount) result += strategyList[5] + "\n"
 
         //7銆佸綋鏈堥棶棰樻暟瓒�3涓笖鍏ㄩ儴鏈暣鏀规垨杩炵画涓ゆ湀闂鏁存敼鐜囦綆浜�50%鐨勫満鏅紝鍒椾负閲嶇偣鐩戠锛岀敱鎶�鏈湇鍔¢儴褰撴湀澧炲姞涓嶅皯浜庝竴娆$幇鍦哄鏍革紱
+        val lastMonData = rowData.lastOne()
         if (rowData.problems.size > 3 && cPros == 0) {
             result += strategyList[6] + "\n"
         } else if (cPer < .5) {
-
+            if (!lastMonData.noRecord()) {
+                var lastCPer = 0
+                lastMonData.problems.forEach {
+                    if (it.ischanged == true) {
+                        lastCPer++
+                    }
+                }
+                if (lastMonData.problems.size != 0 && (lastCPer.toDouble() / lastMonData.problems.size > .5)) {
+                    result += strategyList[6] + "\n"
+                }
+            }
         }
 
         //8銆佽繛缁袱鏈堝彴璐︽彁浜ゆ瘮渚嬩綆浜�50%鐨勶紝鐢辨妧鏈湇鍔¢儴褰撴湀澧炲姞涓�娆$幇鍦烘垨绾夸笂鎿嶄綔鎸囧锛�
+        val thisMonLedgerPer = rowData.ledgerRecords.size.toDouble() / rowData.ledgerCount
+        if (thisMonLedgerPer < .5) {
+            val lastMonLedgerPer = lastMonData.ledgerRecords.size.toDouble() / lastMonData.ledgerCount
+            if (lastMonLedgerPer < .5) {
+                result += strategyList[7] + "\n"
+            }
+        }
         //9銆佸彴璐﹀鏍歌緝鎻愪氦鏃堕棿寤跺悗5鏃ヤ互涓婃垨鏈堟湯鍓�3鏃ヤ粛鏈鏍哥殑锛岀敱鏁版嵁搴旂敤閮ㄥ強鏃跺紑灞曪紱
+        // TODO: 2022/7/26
 
-        return strategyList
+        if (result.isNotEmpty()) {
+            result = result.substring(0, result.length - 2)
+        }
+
+        return listOf(result)
     }
 }
\ No newline at end of file

--
Gitblit v1.9.3