From ae3952a03bb32e261e1a011dc4e6528c69766272 Mon Sep 17 00:00:00 2001
From: cwchen <1048842385@qq.com>
Date: Fri, 29 Aug 2025 13:26:30 +0800
Subject: [PATCH] =?UTF-8?q?SQL=20=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../mapper/subeva/SubProjectMapper.xml | 40 +++++++++++++------
1 file changed, 27 insertions(+), 13 deletions(-)
diff --git a/modules/bmw/src/main/resources/mapper/subeva/SubProjectMapper.xml b/modules/bmw/src/main/resources/mapper/subeva/SubProjectMapper.xml
index 14a7961..fd02316 100644
--- a/modules/bmw/src/main/resources/mapper/subeva/SubProjectMapper.xml
+++ b/modules/bmw/src/main/resources/mapper/subeva/SubProjectMapper.xml
@@ -127,17 +127,13 @@
MAX(fsp."eva_month") as evaMonth,
MAX(fsp."eva_score") AS evaScore,
COUNT(bs."sub_name") as proNum,
+ SUM(fsp."eva_score") / COUNT(bs."sub_name") as evaScore,
case
- WHEN
- COUNT(bm."sub_name") = 0 THEN 0
- ELSE SUM(fsp."eva_score") / COUNT(bs."sub_name")
- END as evaScore
- case
- WHEN COUNT(bm."sub_name") = 0 THEN 0
- WHEN ROUND(SUM(fsp."eva_score") / NULLIF(COUNT(bm."sub_name"), 0), 2) > 90 THEN 1
- when ROUND(SUM(fsp."eva_score") / NULLIF(COUNT(bm."sub_name"), 0), 2) > 80 THEN 2
- when ROUND(SUM(fsp."eva_score") / NULLIF(COUNT(bm."sub_name"), 0), 2) > 60 THEN 3
- when ROUND(SUM(fsp."eva_score") / NULLIF(COUNT(bm."sub_name"), 0), 2) < 61 THEN 4
+ WHEN COUNT(bs."sub_name") = 0 THEN 0
+ WHEN ROUND(SUM(fsp."eva_score") / NULLIF(COUNT(bs."sub_name"), 0), 2) > 90 THEN 1
+ when ROUND(SUM(fsp."eva_score") / NULLIF(COUNT(bs."sub_name"), 0), 2) > 80 THEN 2
+ when ROUND(SUM(fsp."eva_score") / NULLIF(COUNT(bs."sub_name"), 0), 2) > 60 THEN 3
+ when ROUND(SUM(fsp."eva_score") / NULLIF(COUNT(bs."sub_name"), 0), 2) < 61 THEN 4
else 0
End as status
FROM
@@ -147,12 +143,30 @@
AND bs."id" IS NOT NULL
LEFT JOIN "ynrealname"."fbeva_sub_project" fsp ON fsp."contract_id" = bsc."id"
WHERE
- bs."id" IS NOT NULL
- AND fsp."eva_month" IS NOT NULL
+ WHERE
+ bsc."is_active" = '1'
+ AND td."value" = #{params.month} and fcpe."eva_date" is not null
+
+
+ AND bp."id" =#{params.proId}
+
+
+ AND bsc."contract_name" LIKE concat('%', #{params.subName}, '%')
+
+
+
GROUP BY
bs."sub_name"
- having status = #{params.status}
+ HAVING
+ CASE
+ WHEN COUNT(bs."sub_name") = 0 THEN 0
+ WHEN ROUND(SUM(fsp."eva_score") / COUNT(bs."sub_name"), 2) > 90 THEN 1
+ WHEN ROUND(SUM(fsp."eva_score") / COUNT(bs."sub_name"), 2) > 80 THEN 2
+ WHEN ROUND(SUM(fsp."eva_score") / COUNT(bs."sub_name"), 2) > 60 THEN 3
+ WHEN ROUND(SUM(fsp."eva_score") / COUNT(bs."sub_name"), 2) < 61 THEN 4
+ ELSE 0
+ END = #{params.status}
OFFSET #{offset} ROWS FETCH NEXT #{limit} ROWS ONLY