From 3ba74e7692143fd6dcf4dd885f80f95dfef8387e Mon Sep 17 00:00:00 2001
From: zmc <zmc_li@foxmail.com>
Date: 星期四, 23 十一月 2023 16:09:41 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/feature-risk_analysis' into feature-risk_analysis

---
 src/main/java/com/flightfeather/monitor/domain/ds1/repository/RiskValueRep.kt |   44 +++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 43 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/flightfeather/monitor/domain/ds1/repository/RiskValueRep.kt b/src/main/java/com/flightfeather/monitor/domain/ds1/repository/RiskValueRep.kt
index dc3e5d6..c63fd50 100644
--- a/src/main/java/com/flightfeather/monitor/domain/ds1/repository/RiskValueRep.kt
+++ b/src/main/java/com/flightfeather/monitor/domain/ds1/repository/RiskValueRep.kt
@@ -26,16 +26,58 @@
         }
     }
 
+    /**
+     * 鎻掑叆鍒楄〃
+     * @param list
+     */
     fun insert(list: List<RiskValue>): Int {
         return riskValueMapper.insertList(list)
     }
 
-    fun select(mnCode: String, date: LocalDate): List<RiskValue?> {
+    /**
+     * 鎵归噺鎻掑叆鎴栨洿鏂�,浠呴檺鍚屼竴鏃ョ殑鎴栧悓涓�鏈堢殑鎵归噺鏁版嵁
+     * @param list
+     */
+    fun insertOrUpdate(list: List<RiskValue>): Int {
+        if (list.isEmpty()) return 0
+        val newDataList = mutableListOf<RiskValue>()
+        val oldDataList = mutableListOf<RiskValue>()
+        val dataList = riskValueMapper.selectByExample(Example(RiskValue::class.java).apply {
+            createCriteria().andEqualTo("lst", list[0].lst)
+                .andEqualTo("type", list[0].type)
+        })
+        list.forEach { l ->
+            val r = dataList.find { d ->
+                d?.mnCode == l.mnCode
+            }
+            if (r != null) {
+                l.id = r.id
+                oldDataList.add(l)
+            } else {
+                newDataList.add(l)
+            }
+        }
+        val r1 = riskValueMapper.insertList(newDataList)
+        var r2 = 0
+        oldDataList.forEach {
+            r2 += riskValueMapper.updateByPrimaryKey(it)
+        }
+        return r1 + r2
+    }
+
+    /**
+     * 鏌ヨ
+     * @param mnCode
+     * @param date
+     * @param type
+     */
+    fun select(mnCode: String, date: LocalDate, type: String): List<RiskValue?> {
         val s = date.withDayOfMonth(1).atStartOfDay()
         val e = s.plusMonths(1).minusSeconds(1)
         return riskValueMapper.selectByExample(Example(RiskValue::class.java).apply {
             createCriteria().andEqualTo("mnCode", mnCode)
                 .andBetween("lst", s, e)
+                .andEqualTo("type", type)
         })
     }
 }
\ No newline at end of file

--
Gitblit v1.9.3