From af92fd25e83381a67532df63d409a9aeba1a30b3 Mon Sep 17 00:00:00 2001 From: wangran <3189505710@qq.com> Date: Mon, 12 Jan 2026 09:18:06 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=A1=B9=E7=9B=AE1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/NWQualityController.java | 52 +++++++- .../resources/mapper/DataConnectionMapper.xml | 8 +- src/main/resources/mapper/NWQualityMapper.xml | 123 +++++++++--------- 3 files changed, 110 insertions(+), 73 deletions(-) diff --git a/src/main/java/com/bigdata/controller/NWQualityController.java b/src/main/java/com/bigdata/controller/NWQualityController.java index c00f482..8163a65 100644 --- a/src/main/java/com/bigdata/controller/NWQualityController.java +++ b/src/main/java/com/bigdata/controller/NWQualityController.java @@ -41,11 +41,12 @@ public class NWQualityController { } if (request.getStartDate() != null && !request.getStartDate().trim().isEmpty()) { - startDate = request.getStartDate().trim(); + // 转换为 yyyyMMdd 形式,便于与 DAYTIME 的日期部分比较 + startDate = request.getStartDate().trim().replace("-", ""); } if (request.getEndDate() != null && !request.getEndDate().trim().isEmpty()) { - endDate = request.getEndDate().trim(); + endDate = request.getEndDate().trim().replace("-", ""); } // 按条件查询 @@ -62,6 +63,48 @@ public class NWQualityController { return list; } + /** + * 查询网络质量数据(支持 ALL 或指定运营商 + 时间范围),返回所有满足条件的数据 + * operator 传 ALL(不区分大小写)或不传,则不过滤运营商 + */ + @PostMapping("/nwQuality/all") + public List queryAll(@RequestBody(required = false) NWQualityQueryRequest request) { + if (request == null) { + request = new NWQualityQueryRequest(); + } + + String operator = null; + String startDate = null; + String endDate = null; + + if (request.getOperator() != null && !request.getOperator().trim().isEmpty()) { + String op = request.getOperator().trim(); + // 传 ALL 时视为不过滤运营商 + if (!"ALL".equalsIgnoreCase(op)) { + operator = op; + } + } + + if (request.getStartDate() != null && !request.getStartDate().trim().isEmpty()) { + startDate = request.getStartDate().trim().replace("-", ""); + } + + if (request.getEndDate() != null && !request.getEndDate().trim().isEmpty()) { + endDate = request.getEndDate().trim().replace("-", ""); + } + + List list = nwQualityService.getByCondition(operator, startDate, endDate); + + System.out.println("====== nw_quality all query ======"); + System.out.println("Operator: " + (operator != null ? operator : "ALL")); + System.out.println("Start Date: " + (startDate != null ? startDate : "ALL")); + System.out.println("End Date: " + (endDate != null ? endDate : "ALL")); + System.out.println("Total records: " + list.size()); + System.out.println("================================================"); + + return list; + } + /** * 统计各地区数量,支持按运营商和时间范围筛选 * @param request 查询请求参数,包含 operator(运营商)和 startDate、endDate(时间范围)字段,均为可选 @@ -83,11 +126,12 @@ public class NWQualityController { } if (request.getStartDate() != null && !request.getStartDate().trim().isEmpty()) { - startDate = request.getStartDate().trim(); + // 转换为 yyyyMMdd 形式 + startDate = request.getStartDate().trim().replace("-", ""); } if (request.getEndDate() != null && !request.getEndDate().trim().isEmpty()) { - endDate = request.getEndDate().trim(); + endDate = request.getEndDate().trim().replace("-", ""); } // 按条件查询地区统计 diff --git a/src/main/resources/mapper/DataConnectionMapper.xml b/src/main/resources/mapper/DataConnectionMapper.xml index 9e86059..e29c0db 100644 --- a/src/main/resources/mapper/DataConnectionMapper.xml +++ b/src/main/resources/mapper/DataConnectionMapper.xml @@ -67,9 +67,9 @@ SELECT "NETWORK_NAME" AS operator, CAST(COUNT(*) AS BIGINT) AS totalCount, - CAST(SUM(CASE WHEN "PING_VALUE" IS NOT NULL AND "PING_VALUE" != '' THEN 1 ELSE 0 END) AS BIGINT) AS successCount, + CAST(SUM(CASE WHEN "PING_VALUE" = '11111' THEN 1 ELSE 0 END) AS BIGINT) AS successCount, CAST(ROUND( - SUM(CASE WHEN "PING_VALUE" IS NOT NULL AND "PING_VALUE" != '' THEN 1 ELSE 0 END) * 100.0 / COUNT(*), + SUM(CASE WHEN "PING_VALUE" = '11111' THEN 1 ELSE 0 END) * 100.0 / COUNT(*), 2 ) AS DOUBLE) AS connectionRate FROM "DATACONNECTION" @@ -91,9 +91,9 @@ SELECT "NETWORK_NAME" AS operator, CAST(COUNT(*) AS BIGINT) AS totalCount, - CAST(SUM(CASE WHEN "PING_VALUE" IS NOT NULL AND "PING_VALUE" != '' THEN 1 ELSE 0 END) AS BIGINT) AS successCount, + CAST(SUM(CASE WHEN "PING_VALUE" = '11111' THEN 1 ELSE 0 END) AS BIGINT) AS successCount, CAST(ROUND( - SUM(CASE WHEN "PING_VALUE" IS NOT NULL AND "PING_VALUE" != '' THEN 1 ELSE 0 END) * 100.0 / COUNT(*), + SUM(CASE WHEN "PING_VALUE" = '11111' THEN 1 ELSE 0 END) * 100.0 / COUNT(*), 2 ) AS DOUBLE) AS connectionRate FROM "DATACONNECTION" diff --git a/src/main/resources/mapper/NWQualityMapper.xml b/src/main/resources/mapper/NWQualityMapper.xml index 431a09f..b47a6d0 100644 --- a/src/main/resources/mapper/NWQualityMapper.xml +++ b/src/main/resources/mapper/NWQualityMapper.xml @@ -2,36 +2,33 @@ - - - SELECT - CASE - WHEN "PROVINCE" LIKE '%电信%' THEN REPLACE("PROVINCE", '电信', '') - WHEN "PROVINCE" LIKE '%移动%' THEN REPLACE("PROVINCE", '移动', '') - WHEN "PROVINCE" LIKE '%联通%' THEN REPLACE("PROVINCE", '联通', '') - WHEN "PROVINCE" LIKE '%铁通%' THEN REPLACE("PROVINCE", '铁通', '') - ELSE "PROVINCE" - END AS region, - CASE - WHEN "PROVINCE" LIKE '%电信%' THEN '电信' - WHEN "PROVINCE" LIKE '%移动%' THEN '移动' - WHEN "PROVINCE" LIKE '%联通%' THEN '联通' - WHEN "PROVINCE" LIKE '%铁通%' THEN '铁通' - ELSE '未知' - END AS operator, - CAST(COUNT(*) AS BIGINT) AS count - FROM "NWQUALITY" - - - AND "PROVINCE" LIKE CONCAT('%', #{operator}) - - - AND "DAYTIME" >= TO_NUMBER(CONCAT(REPLACE(#{startDate}, '-', ''), '000000')) - - - AND "DAYTIME" <= TO_NUMBER(CONCAT(REPLACE(#{endDate}, '-', ''), '235959')) - - - GROUP BY - CASE - WHEN "PROVINCE" LIKE '%电信%' THEN REPLACE("PROVINCE", '电信', '') - WHEN "PROVINCE" LIKE '%移动%' THEN REPLACE("PROVINCE", '移动', '') - WHEN "PROVINCE" LIKE '%联通%' THEN REPLACE("PROVINCE", '联通', '') - WHEN "PROVINCE" LIKE '%铁通%' THEN REPLACE("PROVINCE", '铁通', '') - ELSE "PROVINCE" - END, - CASE - WHEN "PROVINCE" LIKE '%电信%' THEN '电信' - WHEN "PROVINCE" LIKE '%移动%' THEN '移动' - WHEN "PROVINCE" LIKE '%联通%' THEN '联通' - WHEN "PROVINCE" LIKE '%铁通%' THEN '铁通' - ELSE '未知' - END - ORDER BY count DESC, region + + + SELECT + "PROVINCE" AS region, + "NWOPERATOR" AS operator, + CAST(COUNT(*) AS BIGINT) AS count + FROM "NWQUALITY" + + "NWOPERATOR" = #{operator} + + AND ("DAYTIME" / 1000000) >= TO_NUMBER(#{startDate}) + + + AND ("DAYTIME" / 1000000) <= TO_NUMBER(#{endDate}) + + + GROUP BY "PROVINCE", "NWOPERATOR" + ORDER BY count DESC, region + + + + SELECT + "PROVINCE" AS region, + "NWOPERATOR" AS operator, + CAST(COUNT(*) AS BIGINT) AS count + FROM "NWQUALITY" + + "NWOPERATOR" IN ('CMCC','CUCC','CTCC') + + AND ("DAYTIME" / 1000000) >= TO_NUMBER(#{startDate}) + + + AND ("DAYTIME" / 1000000) <= TO_NUMBER(#{endDate}) + + + GROUP BY "PROVINCE", "NWOPERATOR" + ORDER BY count DESC + LIMIT 10 + + - + \ No newline at end of file