From a7c9f468c21fdbd300028d7e64c1658b2f848593 Mon Sep 17 00:00:00 2001 From: wangran <3189505710@qq.com> Date: Fri, 9 Jan 2026 14:09:09 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=BD=91=E7=BB=9C=E8=B4=A8?= =?UTF-8?q?=E9=87=8F=E6=9F=A5=E8=AF=A2=E5=8A=9F=E8=83=BD=EF=BC=8C=E5=8C=85?= =?UTF-8?q?=E6=8B=AC=20NWQualityController=20=E5=92=8C=20NWQualityService?= =?UTF-8?q?=20=E5=AE=9E=E7=8E=B0=EF=BC=8C=E5=90=8C=E6=97=B6=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=20VCS=20=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6=E5=92=8C?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=95=B0=E6=8D=AE=E5=BA=93=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=9D=A1=E4=BB=B6=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/vcs.xml | 6 + .../controller/NWQualityController.java | 111 ++++++++++++++++++ .../service/impl/NWQualityServiceImpl.java | 27 +++++ src/main/resources/mapper/NWQualityMapper.xml | 8 +- 4 files changed, 148 insertions(+), 4 deletions(-) create mode 100644 .idea/vcs.xml create mode 100644 src/main/java/com/bigdata/controller/NWQualityController.java create mode 100644 src/main/java/com/bigdata/service/impl/NWQualityServiceImpl.java diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/main/java/com/bigdata/controller/NWQualityController.java b/src/main/java/com/bigdata/controller/NWQualityController.java new file mode 100644 index 0000000..c00f482 --- /dev/null +++ b/src/main/java/com/bigdata/controller/NWQualityController.java @@ -0,0 +1,111 @@ +package com.bigdata.controller; + +import com.bigdata.dto.NWQualityQueryRequest; +import com.bigdata.dto.RegionStatisticsDTO; +import com.bigdata.entity.NWQuality; +import com.bigdata.service.NWQualityService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * 访问 Phoenix 中 NWQUALITY 表的接口 + */ +@RestController +public class NWQualityController { + + @Autowired + private NWQualityService nwQualityService; + + /** + * 查询网络质量数据,支持按运营商和时间范围筛选 + * @param request 查询请求参数,包含 operator(运营商)和 startDate、endDate(时间范围)字段,均为可选 + * @return 数据列表 + */ + @PostMapping("/nwQuality") + public List query(@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()) { + operator = request.getOperator().trim(); + } + + if (request.getStartDate() != null && !request.getStartDate().trim().isEmpty()) { + startDate = request.getStartDate().trim(); + } + + if (request.getEndDate() != null && !request.getEndDate().trim().isEmpty()) { + endDate = request.getEndDate().trim(); + } + + // 按条件查询 + List list = nwQualityService.getByCondition(operator, startDate, endDate); + + // 打印到控制台 + System.out.println("====== nw_quality 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(时间范围)字段,均为可选 + * @return 地区统计列表,包含地区名称、运营商和数量 + */ + @PostMapping("/nwQuality/regionStatistics") + public List getRegionStatistics(@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()) { + operator = request.getOperator().trim(); + } + + if (request.getStartDate() != null && !request.getStartDate().trim().isEmpty()) { + startDate = request.getStartDate().trim(); + } + + if (request.getEndDate() != null && !request.getEndDate().trim().isEmpty()) { + endDate = request.getEndDate().trim(); + } + + // 按条件查询地区统计 + List result = nwQualityService.getRegionStatistics(operator, startDate, endDate); + + // 打印到控制台 + System.out.println("====== region statistics ======"); + 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 regions: " + result.size()); + for (RegionStatisticsDTO dto : result) { + System.out.println("Region: " + dto.getRegion() + + ", Operator: " + dto.getOperator() + + ", Count: " + dto.getCount()); + } + System.out.println("================================================"); + + return result; + } +} diff --git a/src/main/java/com/bigdata/service/impl/NWQualityServiceImpl.java b/src/main/java/com/bigdata/service/impl/NWQualityServiceImpl.java new file mode 100644 index 0000000..bc941e0 --- /dev/null +++ b/src/main/java/com/bigdata/service/impl/NWQualityServiceImpl.java @@ -0,0 +1,27 @@ +package com.bigdata.service.impl; + +import com.bigdata.dao.NWQualityMapper; +import com.bigdata.dto.RegionStatisticsDTO; +import com.bigdata.entity.NWQuality; +import com.bigdata.service.NWQualityService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class NWQualityServiceImpl implements NWQualityService { + + @Autowired + private NWQualityMapper nwQualityMapper; + + @Override + public List getByCondition(String operator, String startDate, String endDate) { + return nwQualityMapper.selectByCondition(operator, startDate, endDate); + } + + @Override + public List getRegionStatistics(String operator, String startDate, String endDate) { + return nwQualityMapper.selectRegionStatistics(operator, startDate, endDate); + } +} diff --git a/src/main/resources/mapper/NWQualityMapper.xml b/src/main/resources/mapper/NWQualityMapper.xml index 7b345b9..431a09f 100644 --- a/src/main/resources/mapper/NWQualityMapper.xml +++ b/src/main/resources/mapper/NWQualityMapper.xml @@ -28,10 +28,10 @@ AND "PROVINCE" LIKE CONCAT('%', #{operator}) - AND "DAYTIME" >= TO_TIMESTAMP(CONCAT(#{startDate}, ' 00:00:00'), 'yyyy-MM-dd HH:mm:ss') + AND "DAYTIME" >= TO_NUMBER(CONCAT(REPLACE(#{startDate}, '-', ''), '000000')) - AND "DAYTIME" <= TO_TIMESTAMP(CONCAT(#{endDate}, ' 23:59:59'), 'yyyy-MM-dd HH:mm:ss') + AND "DAYTIME" <= TO_NUMBER(CONCAT(REPLACE(#{endDate}, '-', ''), '235959')) ORDER BY "DAYTIME" DESC @@ -61,10 +61,10 @@ AND "PROVINCE" LIKE CONCAT('%', #{operator}) - AND "DAYTIME" >= TO_TIMESTAMP(CONCAT(#{startDate}, ' 00:00:00'), 'yyyy-MM-dd HH:mm:ss') + AND "DAYTIME" >= TO_NUMBER(CONCAT(REPLACE(#{startDate}, '-', ''), '000000')) - AND "DAYTIME" <= TO_TIMESTAMP(CONCAT(#{endDate}, ' 23:59:59'), 'yyyy-MM-dd HH:mm:ss') + AND "DAYTIME" <= TO_NUMBER(CONCAT(REPLACE(#{endDate}, '-', ''), '235959')) GROUP BY